#! /bin/sh
+# This script is used by the debian and RPM packages to set up fusionforge.
usage() {
- echo "$0: [-interact] [-help] [-debug] [-confdir confdir] [-input conffile] [-output conffile] [-httpdconf gforgehttpdconf] [-httpdsecrets gforgehttpdsecrets] [-localinc gforgelocalinc] [-example|-fhs] [-clean] [-noapache] [-dovhost] [-home homepath] [-group grouppath] [-listen80|nolisten80]"
+ echo "$0: [-interact] [-help] [-debug] [-confdir confdir] [-input conffile] [-output conffile] [-httpdconf gforgehttpdconf] [-httpdsecrets gforgehttpdsecrets] [-localinc gforgelocalinc] [-example|-fhs] [-clean] [-noapache] [-dovhost] [-novhost] [-home homepath] [-group grouppath] [-listen80|nolisten80] [-nossl]"
}
getval(){
computedefault(){
echo "Calculating defaults"
# This is used to make a default working gforge.conf
- DEFAULTsystem_name=MyGForge
+ DEFAULTsystem_name=MyForge
DEFAULTdomain_name=`hostname -f`
DEFAULTserver_admin=webmaster@$DEFAULTdomain_name
- DEFAULTdb_host=`hostname -i`
- DEFAULTdb_port=5432
+ DEFAULTdb_host=
+ DEFAULTdb_port=
DEFAULTdb_name=gforge
DEFAULTdb_user=gforge
DEFAULTdb_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
DEFAULTftpuploadhost=upload.$DEFAULTdomain_name
DEFAULTftpuploaddir=$GFGDIR/var/lib/gforge/chroot/ftproot
#
- DEFAULTstatsadmin_groupid=2
- DEFAULTnewsadmin_groupid=3
+ DEFAULTnewsadmin_groupid=2
+ DEFAULTstatsadmin_groupid=3
DEFAULTpeerrating_groupid=4
DEFAULTtemplate_project=5
DEFAULTadmin_login=admin
DEFAULTsys_path_to_mailman=$(if test -d /usr/lib/mailman; then echo /usr/lib/mailman; else echo /var/mailman; fi)
DEFAULTcgidir=$CGIDIR
DEFAULTcronolog_path=$(findcronolog)
+ DEFAULTsys_sendmail_path=$(findsendmail)
DEFAULTsys_path_to_jpgraph=/usr/share/jpgraph/
- DEFAULTsys_path_to_scmweb=/usr/lib/gforge/bin/
+ DEFAULTsys_path_to_scmweb=/usr/share/gforge/bin/
DEFAULTgforge_chroot=$CHROOT
DEFAULTgforge_etc=$ETCDIR
DEFAULTsys_custom_path=$ETCDIR/custom
DEFAULTsys_use_trove=true
DEFAULTsys_use_snippet=true
DEFAULTsys_use_shell=true
+ DEFAULTsys_use_ratings=true
DEFAULTsys_use_ssl=false
DEFAULTsys_use_people=true
DEFAULTsys_use_ftpuploads=false
+ DEFAULTsys_use_diary=true
+ DEFAULTsys_use_bookmarks=true
+ DEFAULTsys_use_project_tags=true
+ DEFAULTsys_use_project_full_list=true
DEFAULTsys_use_gateways=true
DEFAULTsys_use_project_vhost=true
DEFAULTsys_use_project_database=false
DEFAULTsys_use_project_multimedia=false
+ DEFAULTsys_use_private_project=true
DEFAULTsys_project_reg_restricted=false
DEFAULTsys_user_reg_restricted=false
- DEFAULTsys_localization_enable_caching=true
- DEFAULTsys_localization_cache_path=$GFGDIR/var/cache/gforge/
- DEFAULTsys_localization_enable_timestamp_checking=true
+ DEFAULTsys_require_accept_conditions=false
+ DEFAULTsys_require_unique_email=false
DEFAULTsys_localinc=$ETCDIR/local.inc
DEFAULTsys_jabber_pass=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
- DEFAULTsys_plugins_path=/usr/lib/gforge/plugins/
+ DEFAULTsys_plugins_path=$SHAREDIR/plugins/
DEFAULTsys_sslcrt=$(findcrt)
DEFAULTsys_sslkey=$(findkey)
DEFAULTnoreply_to_bitbucket=true
DEFAULTsys_apache_user=$(findapacheowner)
DEFAULTsys_apache_group=$(findapacheowner)
DEFAULTsys_forum_return_domain=$DEFAULTdomain_name
- # added for massmail error 11/2005 fabio bertagnin transiciel
- DEFAULTsys_sendmail_path=/usr/sbin/sendmail
+ DEFAULTsys_block_anonymous_downloads=false
+ DEFAULTsys_urlprefix=/
+ DEFAULTdovhost=$dovhost
#
# TODO
#usr_lib_gforge=$GFGDIR
}
findcrt(){
- if [ -f /etc/apache2/ssl/apache.pem ]
- then
- echo /etc/apache2/ssl/apache.pem
- else
- if [ -f /etc/apache/ssl.crt/server.crt ]
- then
- echo /etc/apache/ssl.crt/server.crt
- fi
+ if [ -e /etc/gforge/ssl-cert.pem ] ; then
+ echo /etc/gforge/ssl-cert.pem
+ elif [ -f /etc/apache2/ssl/apache.pem ] ; then
+ echo /etc/apache2/ssl/apache.pem
+ elif [ -f /etc/apache/ssl.crt/server.crt ] ; then
+ echo /etc/apache/ssl.crt/server.crt
fi
}
findkey(){
- if [ -f /etc/apache2/ssl/apache.pem ]
- then
- echo /etc/apache2/ssl/apache.pem
- else
- if [ -f /etc/apache/ssl.key/server.key ]
- then
- echo /etc/apache/ssl.key/server.key
- fi
+ if [ -e /etc/gforge/ssl-cert.key ] ; then
+ echo /etc/gforge/ssl-cert.key
+ elif [ -f /etc/apache2/ssl/apache.pem ] ; then
+ echo /etc/apache2/ssl/apache.pem
+ elif [ -f /etc/apache/ssl.key/server.key ] ; then
+ echo /etc/apache/ssl.key/server.key
fi
}
-
findcronolog(){
if [ -x /usr/bin/cronolog ]
then
fi
fi
}
+findsendmail(){
+ if [ -x /usr/sbin/sendmail ]
+ then
+ echo /usr/sbin/sendmail
+ else
+ which sendmail
+ fi
+}
findapacheowner(){
if grep 'Red Hat' /etc/issue > /dev/null; then
echo apache
readdefault $CONFFILEIN.new
fi
- if [ "$interact" == true ]
+ if [ "$interact" = true ]
then
echo "Enter values or type enter for defaults:"
# Here is the fun II
mv $CONFFILEIN.new $CONFFILEIN
# Fill in the blanks
- EXCLUDEVHOST=' -not -name 55vhost'
- if [ "$dovhost" == true ]
+ EXCLUDEVHOST=''
+ if [ "$dovhost" = true ]
then
- EXCLUDEVHOST=''
+ EXCLUDEVHOST=".vhost\|"
fi
+ #
rm -f $ETCDIR/httpd.d/10cvs
rm -f $ETCDIR/httpd.d/10scmcvs
rm -f $ETCDIR/httpd.d/10scmcvsauth
rm -f $ETCDIR/httpd.d/11scmcvshttp
rm -f $ETCDIR/httpd.d/11scmsvnhttp
rm -f $ETCDIR/httpd.d/12scmcvshttp.ssl
+ #rm -f $ETCDIR/httpd.d/20list
+ #
- find $ETCDIR/httpd.d -type f -regex "$ETCDIR/httpd.d/\([a-z0-9]+\|_?([a-z0-9_.]+-)+[a-z0-9]+\|[a-z0-9][a-z0-9-]*\)\(\|.ssl\|.secrets\)" $EXCLUDEVHOST | sort | while read i
+ find $ETCTEMPLATEDIR/httpd.d -follow -type f -regex "$ETCTEMPLATEDIR/httpd.d/\([a-z0-9]+\|_?([a-z0-9_.]+-)+[a-z0-9]+\|[a-z0-9][a-z0-9-]*\)\(\|.ssl\|.secrets\|$EXCLUDEVHOST.vhost.ssl\)" | sort | while read i
do
+ if [ "$ETCTEMPLATEDIR" != "$ETCDIR" -a -f $ETCDIR/httpd.d/`basename $i` ]
+ then
+ if diff -q $i $ETCDIR/httpd.d/`basename $i`
+ then
+ rm -f $ETCDIR/httpd.d/`basename $i`
+ else
+ i=$ETCDIR/httpd.d/`basename $i`
+ fi
+ fi
$BINDIR/fill-in-the-blanks.pl $i $ETCDIR/`basename $i`.gforge-new $CONFFILEOUT
done
- if [ $listen80 == false ]
+ if [ $listen80 = false ]
then
rm -f $ETCDIR/00listen80.gforge-new
fi
+ if [ $usessl = false -o -z "$(findkey)" -o -z "$(findcrt)" ]
+ then
+ echo "SSL Disabled"
+ rm -f $ETCDIR/[0-9][0-9]*.ssl.gforge-new
+ else
+ echo "SSL Enabled"
+ fi
+
echo "Creating $HTTPDCONF"
ls $ETCDIR/[0-9][0-9]*.gforge-new | sort | xargs cat > $HTTPDCONF
rm $ETCDIR/[0-9][0-9]*.gforge-new
rm $ETCDIR/httpd.secrets.gforge-new
echo "Creating $LOCALINC"
- find $ETCDIR/local.d -type f -regex "$ETCDIR/local.d/\([a-z0-9]+\|_?([a-z0-9_.]+-)+[a-z0-9]+\|[a-z0-9][a-z0-9-]*\)\(\|.$database\)" | sort | while read i
+ find $ETCTEMPLATEDIR/local.d -follow -type f -regex "$ETCTEMPLATEDIR/local.d/\([a-z0-9]+\|_?([a-z0-9_.]+-)+[a-z0-9]+\|[a-z0-9][a-z0-9-]*\)\(\|.$database\)" | sort | while read i
do
+ if [ "$ETCTEMPLATEDIR" != "$ETCDIR" -a -f $ETCDIR/local.d/`basename $i` ]
+ then
+ if diff -q $i $ETCDIR/local.d/`basename $i`
+ then
+ rm -f $ETCDIR/local.d/`basename $i`
+ else
+ i=$ETCDIR/local.d/`basename $i`
+ fi
+ fi
$BINDIR/fill-in-the-blanks.pl $i $CONFFILEOUTDIR/`basename $i` $CONFFILEOUT
done
- (find $CONFFILEOUTDIR -type f -regex "$CONFFILEOUTDIR/\([a-z0-9]+\|_?([a-z0-9_.]+-)+[a-z0-9]+\|[a-z0-9][a-z0-9-]*\)\(\|.$database\)" | sort | xargs cat ) > $LOCALINC
- find $CONFFILEOUTDIR -type f -regex "$CONFFILEOUTDIR/\([a-z0-9]+\|_?([a-z0-9_.]+-)+[a-z0-9]+\|[a-z0-9][a-z0-9-]*\)\(\|.$database\)" -print0 | xargs -0 rm
+ (find $CONFFILEOUTDIR -follow -type f -regex "$CONFFILEOUTDIR/\([a-z0-9]+\|_?([a-z0-9_.]+-)+[a-z0-9]+\|[a-z0-9][a-z0-9-]*\)\(\|.$database\)" | sort | xargs cat ) > $LOCALINC
+ find $CONFFILEOUTDIR -follow -type f -regex "$CONFFILEOUTDIR/\([a-z0-9]+\|_?([a-z0-9_.]+-)+[a-z0-9]+\|[a-z0-9][a-z0-9-]*\)\(\|.$database\)" -print0 | xargs -0 rm
echo "Creating other includes"
#for i in $ETCDIR/templates/[a-z]*
- find $ETCDIR/templates -name '[a-z]*' -maxdepth 1 -type f | while read i
+ find $ETCTEMPLATEDIR/templates -follow -type f -regex "$ETCTEMPLATEDIR/templates/[a-z].*" | while read i
do
+ if [ "$ETCTEMPLATEDIR" != "$ETCDIR" -a -f $ETCDIR/templates/`basename $i` ]
+ then
+ if diff -q $i $ETCDIR/templates/`basename $i`
+ then
+ rm -f $ETCDIR/templates/`basename $i`
+ else
+ i=$ETCDIR/templates/`basename $i`
+ fi
+ fi
$BINDIR/fill-in-the-blanks.pl $i $CONFFILEOUTDIR/`basename $i` $CONFFILEOUT
done
chmod 600 $HTTPDSECRETS $CONFFILEIN $CONFFILEOUT
}
-cleanplugindirs() {
- for dir in www/plugins cronjobs/plugins db/plugins plugins/bin plugins/cgi-bin plugins etc/plugins
- do
- [ -d $dir ] && rmdir $dir && echo "# $dir removed"
- done
-}
-
-setupplugindirs() {
- for dir in www/plugins cronjobs/plugins db/plugins plugins plugins/bin plugins/cgi-bin etc/plugins
- do
- [ ! -d $dir ] && mkdir $dir && echo "# Creating $dir" || echo "# $dir already exists"
- done
-}
-
-setupplugin() {
- if [ -d "$1" ]
- then
- PLUGINDIR=$1
- CURDIR=`pwd`
- cd $PLUGINDIR
- PLUGINDIR=`pwd`
- cd $CURDIR
-
- PLUGINNAME=`basename $1 | sed 's/gforge-plugin-//' `
- echo "# Setting symlinks for $PLUGINNAME plugin"
- # www stuffs
- echo "# www stuffs"
- if [ -d "$PLUGINDIR/www" -a -d "www/plugins" ]
- then
- echo "ln -s $PLUGINDIR/www www/plugins/$PLUGINNAME"
- ln -s $PLUGINDIR/www www/plugins/$PLUGINNAME
- fi
- # cronjobs stuffs
- echo "# cronjobs stuffs"
- if [ -d "$PLUGINDIR/cronjobs" -a -d "cronjobs/plugins" ]
- then
- echo "ln -s $PLUGINDIR/cronjobs cronjobs/plugins/$PLUGINNAME"
- ln -s $PLUGINDIR/cronjobs cronjobs/plugins/$PLUGINNAME
- fi
- # lib stuffs
- echo "# lib stuffs"
- if [ -d "$PLUGINDIR/lib" -a -d "db/plugins" ]
- then
- echo "ln -s $PLUGINDIR/lib db/plugins/$PLUGINNAME"
- ln -s $PLUGINDIR/lib db/plugins/$PLUGINNAME
- fi
- # include stuffs
- echo "# include stuffs"
- if [ -d "$PLUGINDIR/include" -a -d "plugins" ]
- then
- echo "ln -s $PLUGINDIR/include plugins/$PLUGINNAME"
- ln -s $PLUGINDIR/include plugins/$PLUGINNAME
- fi
- # cgi-bin stuffs
- echo "# cgi-bin stuffs"
- if [ -d "$PLUGINDIR/cgi-bin" -a -d "cgi-bin" ]
- then
- echo "ln -s $PLUGINDIR/cgi-bin cgi-bin/$PLUGINNAME"
- ln -s $PLUGINDIR/cgi-bin cgi-bin/$PLUGINNAME
- fi
- # bin stuffs
- echo "# bin stuffs"
- if [ -d "$PLUGINDIR/bin" -a -d "plugins/bin" ]
- then
- echo "ln -s $PLUGINDIR/bin plugins/bin/$PLUGINNAME"
- ln -s $PLUGINDIR/bin plugins/bin/$PLUGINNAME
- fi
- # etc/plugins stuffs
- echo "# etc/plugins stuffs"
- if [ -d "$PLUGINDIR/etc/plugins/$PLUGINNAME" -a -d "etc/plugins" ]
- then
- echo "ln -s $PLUGINDIR/etc/plugins/$PLUGINNAME etc/plugins/$PLUGINNAME"
- ln -s $PLUGINDIR/etc/plugins/$PLUGINNAME etc/plugins/$PLUGINNAME
- fi
- # etc/httpd.d stuffs
- echo "# etc/httpd.d stuffs"
- if [ -d "$PLUGINDIR/etc/httpd.d" -a -d "etc/httpd.d" ]
- then
- for file in $PLUGINDIR/etc/httpd.d/[0-9][0-9]*
- do
- BASEN=`basename $file`
- echo "ln -s $file etc/httpd.d/$BASEN"
- ln -s $file etc/httpd.d/$BASEN
- done
- fi
- exit 0
- else
- echo "Couldn't find $1 directory"
- exit 1
- fi
-}
-
-delplugin() {
- if [ -d "$1" ]
- then
- PLUGINDIR=$1
- PLUGINNAME=`basename $1 | sed 's/gforge-plugin-//' `
- echo "# Setting symlinks for $PLUGINNAME plugin"
- # www stuffs
- echo "# www stuffs"
- if [ -d "$PLUGINDIR/www" -a -d "www/plugins" ]
- then
- echo "rm www/plugins/$PLUGINNAME"
- rm www/plugins/$PLUGINNAME
- fi
- # cronjobs stuffs
- echo "# cronjobs stuffs"
- if [ -d "$PLUGINDIR/cronjobs" -a -d "cronjobs/plugins" ]
- then
- echo "rm cronjobs/plugins/$PLUGINNAME"
- rm cronjobs/plugins/$PLUGINNAME
- fi
- # lib stuffs
- echo "# lib stuffs"
- if [ -d "$PLUGINDIR/lib" -a -d "db/plugins" ]
- then
- echo "rm db/plugins/$PLUGINNAME"
- rm db/plugins/$PLUGINNAME
- fi
- # include stuffs
- echo "# include stuffs"
- if [ -d "$PLUGINDIR/include" -a -d "plugins" ]
- then
- echo "rm plugins/$PLUGINNAME"
- rm plugins/$PLUGINNAME
- fi
- # cgi-bin stuffs
- echo "# cgi-bin stuffs"
- if [ -d "$PLUGINDIR/cgi-bin" -a -d "cgi-bin" ]
- then
- echo "rm cgi-bin/$PLUGINNAME"
- rm cgi-bin/$PLUGINNAME
- fi
- # bin stuffs
- echo "# bin stuffs"
- if [ -d "$PLUGINDIR/bin" -a -d "plugins/bin" ]
- then
- echo "rm plugins/bin/$PLUGINNAME"
- rm plugins/bin/$PLUGINNAME
- fi
- # etc/plugins stuffs
- echo "# etc/plugins stuffs"
- if [ -d "$PLUGINDIR/etc/plugins/$PLUGINNAME" -a -d "etc/plugins" ]
- then
- echo "rm etc/plugins/$PLUGINNAME"
- rm etc/plugins/$PLUGINNAME
- fi
- # etc/httpd.d stuffs
- echo "# etc/httpd.d stuffs"
- if [ -d "$PLUGINDIR/etc/httpd.d" -a -d "etc/httpd.d" ]
- then
- for file in $PLUGINDIR/etc/httpd.d/[0-9][0-9]*
- do
- BASEN=`basename $file`
- echo "rm etc/httpd.d/$BASEN"
- rm etc/httpd.d/$BASEN
- done
- fi
- exit 0
- else
- echo "Couldn't find $1 directory"
- exit 1
- fi
-}
-
ETCDIR=`pwd`/etc
+ETCTEMPLATEDIR=`pwd`/etc
BINDIR=`pwd`/utils
CGIDIR=`pwd`/cgi-bin
GFGDIR=`pwd`
HOMEPATH=/home
GROUPPATH=/home/groups
CVSPATH=/cvsroot
+if [ ! -e /cvsroot ] && [ -e /var/lib/gforge/chroot/cvsroot ] ; then
+ CVSPATH=/var/lib/gforge/chroot/cvsroot
+fi
SVNPATH=/svnroot
+if [ ! -e /svnroot ] && [ -e /var/lib/gforge/chroot/svnroot ] ; then
+ SVNPATH=/var/lib/gforge/chroot/svnroot
+fi
SHAREDIR=`pwd`
LIBDIR=`pwd`
CONFFILEOUTDIR=$ETCDIR
HTTPDCONF=$ETCDIR/httpd.conf
HTTPDSECRETS=$ETCDIR/httpd.secrets
SYSTEM=pgsql
-export ETCDIR BINDIR GFGDIR CONFFILEOUTDIR CONFFILEIN CONFFILEOUT LOCALINC HTTPDCONF HTTPDSECRETS DOAPACHE SYSTEM
+export ETCDIR ETCTEMPLATEDIR BINDIR GFGDIR CONFFILEOUTDIR CONFFILEIN CONFFILEOUT LOCALINC HTTPDCONF HTTPDSECRETS DOAPACHE SYSTEM
interact=false
noapache=false
database=env
-dovhost=false
listen80=true
+usessl=true
+dovhost=true
+
while [ $# -ne 0 ]
do
-fhs )
shift
ETCDIR=/etc/gforge
- BINDIR=/usr/lib/gforge/bin
- CGIDIR=/usr/lib/gforge/cgi-bin
+ ETCTEMPLATEDIR=/usr/share/gforge/etc
+ BINDIR=/usr/share/gforge/bin
+ CGIDIR=/usr/share/gforge/cgi-bin
GFGDIR=''
HOMEPATH=/home/users
GROUPPATH=/home/groups
CHROOT=/var/lib/gforge/chroot
SHAREDIR=/usr/share/gforge
- LIBDIR=/usr/lib/gforge
+ LIBDIR=/usr/share/gforge
CONFFILEOUTDIR=/etc/gforge
CONFFILEIN=/etc/gforge/gforge.conf
CONFFILEOUT=/etc/gforge/gforge.conf
-noapache )
noapache=true
;;
+ -novhost )
+ dovhost=false
+ ;;
-dovhost )
dovhost=true
;;
-nolisten80 )
listen80=false
;;
+ -nossl )
+ usessl=false
+ ;;
-example )
shift
CONFFILEIN=$ETCDIR/gforge.conf.example
-debug )
set -x
;;
- -cleanplugindir)
- cleanplugindirs
- exit 0
- ;;
- -plugindir)
- setupplugindirs
- exit 0
- ;;
- -plugin)
- shift
- PLUGINPATH=$1
- setupplugin $PLUGINPATH
- ;;
- -delplugin)
- shift
- PLUGINPATH=$1
- delplugin $PLUGINPATH
- ;;
*)
echo "Bad Parameter"
usage