#! /bin/sh
-apacheconf=/etc/apache/httpd.conf
usage() {
- echo "$0: [-interact] [-help] [-debug]"
+ 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] [-nossl]"
}
-while [ $# -ne 0 ]
-do
- case "$1" in
- -interact )
- interact=true
- shift
- ;;
- -help )
- usage
- exit 0
- ;;
- -debug )
- set -x
- ;;
- *)
- echo "Bad Parameter"
- usage
- ;;
- esac
- echo "$#"
- shift
-done
-
getval(){
echo -n $1 \[$2\] ?
read $1
}
-# This is used to make a default working gforge.conf
computedefault(){
-DEFAULTsystem_name=Gforge
-DEFAULTdomain_name=`hostname -f`
-DEFAULTserver_admin=webmaster@$DEFAULTdomain_name
-DEFAULTdb_host=`hostname -i`
-DEFAULTdb_name=gforge
-DEFAULTdb_user=gforge
-DEFAULTdb_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
-DEFAULTip_address=`hostname -i`
-DEFAULTcvs_host=cvs.$DEFAULTdomain_name
-DEFAULTshell_host=shell.$DEFAULTdomain_name
-DEFAULTusers_host=users.$DEFAULTdomain_name
-DEFAULTlists_host=lists.$DEFAULTdomain_name
-DEFAULTdocs_host=gfdocs.$DEFAULTdomain_name
-DEFAULTjabber_host=jabber.$DEFAULTdomain_name
-DEFAULTdownload_host=download.$DEFAULTdomain_name
-DEFAULTupload_host=upload.$DEFAULTdomain_name
-DEFAULTstatsadmin_groupid=2
-DEFAULTnewsadmin_groupid=3
-DEFAULTpeerrating_groupid=4
-DEFAULTadmin_login=admin
-DEFAULTadmin_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
-DEFAULTskill_list="Ada;C;C++;HTML;LISP;Perl;PHP;Python;SQL"
-DEFAULTdefault_trove_cat=18
-DEFAULTldap_host=localhost
-DEFAULTldap_base_dn="dc=`echo $DEFAULTdomain_name | sed 's/\./,dc=/g'`"
-DEFAULTldap_web_add_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
-DEFAULTcgidir=`pwd`/utils
-DEFAULTcronolog_path=`type cronolog | cut -d' ' -f3`
-DEFAULTgforge_chroot=""
-DEFAULTgforge_etc=`pwd`/etc
-DEFAULTgroupdir=`pwd`/home/groups
-DEFAULThomedir=`pwd`/home
-DEFAULTuploaddir=`pwd`/var/lib/gforge/download/
-DEFAULTsys_jabber_pass=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
-DEFAULTusr_share_gforge=`pwd`
-DEFAULTvar_lib_gforge=`pwd`/var/lib
-DEFAULTvar_log_gforge=`pwd`/var/log
-DEFAULTsys_show_source=0
-DEFAULTsys_force_login=0
-DEFAULTsys_session_key=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-32)
-DEFAULTsys_theme=gforge
-DEFAULTsys_lang=English
-DEFAULTsys_use_ldap=0
-DEFAULTsys_use_jabber=0
-DEFAULTsys_use_auth_ldap=1
-DEFAULTsys_ldap_auth_host=localhost
-DEFAULTsys_ldap_auth_port=389
-DEFAULTsys_ldap_auth_version=3
-DEFAULTsys_ldap_auth_dn="dc=`echo $DEFAULTdomain_name | sed 's/\./,dc=/g'`"
-DEFAULTsys_use_cvs=true
-DEFAULTsys_use_tracker=true
-DEFAULTsys_use_forum=true
-DEFAULTsys_use_pm=true
-DEFAULTsys_use_docman=true
-DEFAULTsys_use_news=true
-DEFAULTsys_use_mail=true
-DEFAULTsys_use_survey=true
-DEFAULTsys_use_file=true
-DEFAULTsys_use_ftp=true
-DEFAULTsys_use_trove=true
-DEFAULTsys_use_snippet=true
-DEFAULTsys_project_reg_restricted=true
-
-# TODO
-#usr_lib_gforge=`pwd`
-#vhost_name
-#docdir
+ echo "Calculating defaults"
+ # This is used to make a default working gforge.conf
+ DEFAULTsystem_name=MyGForge
+ DEFAULTdomain_name=`hostname -f`
+ DEFAULTserver_admin=webmaster@$DEFAULTdomain_name
+ DEFAULTdb_host=`hostname -i`
+ DEFAULTdb_port=5432
+ DEFAULTdb_name=gforge
+ DEFAULTdb_user=gforge
+ DEFAULTdb_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
+ DEFAULTip_address=`hostname -i`
+ DEFAULTscm_host=scm.$DEFAULTdomain_name
+ DEFAULTshell_host=shell.$DEFAULTdomain_name
+ DEFAULTusers_host=users.$DEFAULTdomain_name
+ DEFAULTlists_host=lists.$DEFAULTdomain_name
+ # The following three have to be synced when domain_name changes
+ # and docs_host is supposed not to be used
+ #DEFAULTdocs_host=gfdocs.$DEFAULTdomain_name
+ DEFAULTjabber_host=jabber.$DEFAULTdomain_name
+ DEFAULTupload_host=upload.$DEFAULTdomain_name
+ #
+ DEFAULTdownload_host=download.$DEFAULTdomain_name
+ # The following is upload host and dir for FRS
+ DEFAULTftpuploadhost=upload.$DEFAULTdomain_name
+ DEFAULTftpuploaddir=$GFGDIR/var/lib/gforge/chroot/ftproot
+ #
+ DEFAULTstatsadmin_groupid=2
+ DEFAULTnewsadmin_groupid=3
+ DEFAULTpeerrating_groupid=4
+ DEFAULTtemplate_project=5
+ DEFAULTadmin_login=admin
+ DEFAULTadmin_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
+ DEFAULTskill_list="Ada;C;C++;HTML;LISP;Perl;PHP;Python;SQL"
+ DEFAULTdefault_trove_cat=18
+ DEFAULTldap_host=localhost
+ DEFAULTldap_base_dn="dc=`echo $DEFAULTdomain_name | sed 's/\./,dc=/g'`"
+ DEFAULTldap_web_add_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
+ 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/share/gforge/bin/
+ DEFAULTgforge_chroot=$CHROOT
+ DEFAULTgforge_etc=$ETCDIR
+ DEFAULTsys_custom_path=$ETCDIR/custom
+ DEFAULTgroupdir=$GROUPPATH
+ DEFAULThomedir=$HOMEPATH
+ DEFAULTcvsdir=$CVSPATH
+ DEFAULTsvndir=$SVNPATH
+ # The place where file uploaded with http are stored for download
+ DEFAULTuploaddir=$GFGDIR/var/lib/gforge/download/
+ DEFAULTsys_urlroot=$SHAREDIR/www/
+ DEFAULTsys_jabber_pass=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
+ DEFAULTusr_share_gforge=$SHAREDIR
+ DEFAULTusr_lib_gforge=$LIBDIR
+ DEFAULTvar_lib_gforge=$GFGDIR/var/lib/gforge
+ DEFAULTvar_log_gforge=$GFGDIR/var/log/gforge
+ DEFAULTsys_show_source=0
+ DEFAULTsys_force_login=0
+ DEFAULTsys_session_key=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-32)
+ DEFAULTsys_session_expire='60 * 60 * 24 * 7'
+ DEFAULTsys_show_contact_info=1
+ DEFAULTsys_themeroot=$SHAREDIR/www/themes/
+ DEFAULTsys_theme=gforge
+ DEFAULTsys_lang=English
+ DEFAULTsys_default_timezone=GMT
+ DEFAULTsys_default_country_code=US
+ DEFAULTsys_account_manager_type=$SYSTEM
+ DEFAULTsys_use_jabber=0
+ DEFAULTsys_use_auth_ldap=1
+ # Couldn't find where this is used, maybe some rest of ext auth
+ #DEFAULTsys_ldap_auth_host=localhost
+ DEFAULTsys_ldap_auth_port=389
+ DEFAULTsys_ldap_auth_version=3
+ DEFAULTsys_ldap_auth_dn="dc=`echo $DEFAULTdomain_name | sed 's/\./,dc=/g'`"
+ DEFAULTsys_scm_tarballs_path=$GFGDIR/var/lib/gforge/scmtarballs
+ DEFAULTsys_scm_snapshots_path=$GFGDIR/var/lib/gforge/scmsnapshots
+ DEFAULTsys_use_scm=true
+ DEFAULTsys_use_tracker=true
+ DEFAULTsys_use_forum=true
+ DEFAULTsys_use_pm=true
+ DEFAULTsys_use_docman=true
+ DEFAULTsys_use_news=true
+ DEFAULTsys_use_mail=true
+ DEFAULTsys_use_survey=true
+ DEFAULTsys_use_frs=true
+ DEFAULTsys_use_fti=false
+ DEFAULTsys_use_ftp=true
+ 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_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=$SHAREDIR/plugins/
+ DEFAULTsys_sslcrt=$(findcrt)
+ DEFAULTsys_sslkey=$(findkey)
+ DEFAULTnoreply_to_bitbucket=true
+ DEFAULTsys_simple_dns=true
+ DEFAULTsys_apache_user=$(findapacheowner)
+ DEFAULTsys_apache_group=$(findapacheowner)
+ DEFAULTsys_forum_return_domain=$DEFAULTdomain_name
+ DEFAULTsys_block_anonymous_downloads=false
+ #
+ # TODO
+ #usr_lib_gforge=$GFGDIR
+ #vhost_name
+ #docdir
+}
+
+findcrt(){
+ 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 [ -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
+ echo /usr/bin/cronolog
+ else
+ if [ -x /usr/sbin/cronolog ]
+ then
+ echo /usr/sbin/cronolog
+ else
+ which cronolog
+ 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
+ elif grep SuSE /etc/issue > /dev/null; then
+ echo apache
+ elif grep Debian /etc/issue > /dev/null; then
+ echo www-data
+ else
+ echo apache
+ fi
}
writedefault(){
-# Here is the fun
-# This create a default conf file in $1
-tmpfile=$1.$$computedefault
-echo "cat >$1<<-EOF" > $tmpfile
-cat $0 | grep ^DEFAULT | sed 's/DEFAULT\(.[^=]*\)=.*/\1=\${DEFAULT\1}/' >> $tmpfile
-echo 'EOF' >> $tmpfile
-. $tmpfile
-rm -f $tmpfile
+ # Here is the fun
+ # This create a default conf file in $1
+ tmpfile=$1.$$computedefault
+ echo "cat >$1<<-EOF" > $tmpfile
+ cat $0 | grep "^ DEFAULT" | sed 's/ DEFAULT\(.[^=]*\)=.*/\1=\${\1:-\$DEFAULT\1}/' >> $tmpfile
+ echo 'EOF' >> $tmpfile
+ . $tmpfile
+ rm -f $tmpfile
}
readdefault() {
- cat $1 | sed 's/\(.[^=]*\)=\(.*\)/DEFAULT\1="\2"/' > $1.$$readdefault
+ cat $1 | sed 's/\(.[^=]*\)=\(.*\)/DEFAULT\1="\2"/' |
+ grep -v '^DEFAULTcronolog_path' > $1.$$readdefault
. $1.$$readdefault
+
+ if [ ! -z "$DEFAULTsys_sslcrt" -a ! -f "$DEFAULTsys_sslcrt" ]
+ then
+ unset DEFAULTsys_sslcrt
+ DEFAULTsys_sslcrt=$(findcrt)
+ else
+ if [ -z "$DEFAULTsys_sslcrt" ]
+ then
+ DEFAULTsys_sslcrt=$(findcrt)
+ fi
+ fi
+ if [ ! -z "$DEFAULTsys_sslkey" -a ! -f "$DEFAULTsys_sslkey" ]
+ then
+ unset DEFAULTsys_sslkey
+ DEFAULTsys_sslkey=$(findkey)
+ else
+ if [ -z "$DEFAULTsys_sslkey" ]
+ then
+ DEFAULTsys_sslkey=$(findkey)
+ fi
+ fi
+ if [ ! -d "$DEFAULTsys_themeroot/$DEFAULTsys_theme" ]
+ then
+ if [ -d "$DEFAULTsys_themeroot/gforge" ]
+ then
+ DEFAULTsys_theme=gforge
+ fi
+ fi
rm -f $1.$$readdefault
}
-echo "Setting defaults"
+setupinout(){
-computedefault
-writedefault etc/gforge.conf.new
-if [ -f etc/gforge.conf ]
-then
- readdefault etc/gforge.conf
-else
- readdefault etc/gforge.conf.new
-fi
+ computedefault
-if [ "$interact" == true ]
-then
- echo "Enter values or type enter for defaults:"
- # Here is the fun II
- # This ask for change of default
- tmpfile=$1.$$getval
- cat $0 | grep ^DEFAULT | sed 's/DEFAULT\(.[^=]*\)=.*/getval \1 "\${DEFAULT\1}"/' > $tmpfile
-else
- cat $0 | grep ^DEFAULT | sed 's/DEFAULT\(.[^=]*\)=.*/\1="\${DEFAULT\1}"/' > $tmpfile
-fi
-. $tmpfile
-rm -f $tmpfile
+ writedefault $CONFFILEIN.new
-writedefault etc/gforge.conf.new
-mv etc/gforge.conf.new etc/gforge.conf
-#cat $0 | grep '^DEFAULT' | sed 's/^DEFAULT\(.[^=]*\)=.*/DEFAULT\1 \1/' | while read defvar var
-#do
-# echo $defvar $var
-#done
+ if [ -f $CONFFILEIN ]
+ then
+ echo "Reading defaults from $CONFFILEIN"
+ readdefault $CONFFILEIN
+ else
+ readdefault $CONFFILEIN.new
+ fi
+
+ if [ "$interact" = true ]
+ then
+ echo "Enter values or type enter for defaults:"
+ # Here is the fun II
+ # This ask for change of default
+ tmpfile=$1.$$getval
+ cat $0 | grep "^ DEFAULT" | sed 's/ DEFAULT\(.[^=]*\)=.*/getval \1 "\${DEFAULT\1}"/' > $tmpfile
+ else
+ cat $0 | grep "^ DEFAULT" | sed 's/ DEFAULT\(.[^=]*\)=.*/\1="\${DEFAULT\1}"/' > $tmpfile
+ fi
+ . $tmpfile
+ rm -f $tmpfile
+
+ echo "Creating $CONFFILEOUT"
+ [ ! -d `dirname $CONFFILEOUT` ] && (mkdir -p `dirname $CONFFILEOUT` || (echo "Could not create `dirname $CONFFILEOUT`" && exit 1))
+ writedefault $CONFFILEOUT.new
+ mv $CONFFILEOUT.new $CONFFILEOUT
+
+
+ # Remove trailing space
+ cat $CONFFILEIN | sed 's/ *$//' > $CONFFILEIN.new
+ mv $CONFFILEIN.new $CONFFILEIN
+
+ # Fill in the blanks
+ EXCLUDEVHOST=' -not -name 55vhost'
+ if [ "$dovhost" = true ]
+ then
+ EXCLUDEVHOST=''
+ fi
+ #
+ rm -f $ETCDIR/httpd.d/10cvs
+ rm -f $ETCDIR/httpd.d/10scmcvs
+ rm -f $ETCDIR/httpd.d/10scmcvsauth
+ rm -f $ETCDIR/httpd.d/07maindirhttps
+ 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 $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 | 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 ]
+ then
+ rm -f $ETCDIR/00listen80.gforge-new
+ fi
-# Remove trailing space
-cat etc/gforge.conf | sed 's/ *$//' > etc/gforge.conf.new
-mv etc/gforge.conf.new etc/gforge.conf
+ 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 "Create etc/httpd.conf and etc/httpd.secrets"
-for i in etc/httpd.d/[0-4][0-9]* etc/httpd.d/httpd.secrets
-do
- utils/fill-in-the-blanks.pl $i etc/`basename $i` etc/gforge.conf
-done
-ls etc/[0-9][0-9]* | sort | xargs cat > etc/httpd.conf
-rm etc/[0-9][0-9]*
+ echo "Creating $HTTPDCONF"
+ ls $ETCDIR/[0-9][0-9]*.gforge-new | sort | xargs cat > $HTTPDCONF
+ rm $ETCDIR/[0-9][0-9]*.gforge-new
+ echo "Creating $HTTPDSECRETS"
+ cat $ETCDIR/httpd.secrets.gforge-new > $HTTPDSECRETS
+ rm $ETCDIR/httpd.secrets.gforge-new
+
+ echo "Creating $LOCALINC"
+ 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 -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 "Create etc/local.inc"
-for i in etc/local.d/01* etc/local.d/10*simple etc/local.d/[2-9]*
-do
- utils/fill-in-the-blanks.pl $i etc/`basename $i` etc/gforge.conf
-done
-ls etc/01* etc/10*simple etc/[2-9]* | sort | xargs cat > etc/local.inc
-rm etc/01* etc/10*simple etc/[2-9]*
+ echo "Creating other includes"
+ #for i in $ETCDIR/templates/[a-z]*
+ 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
+ chmod 640 $CONFFILEOUTDIR/local.pl $CONFFILEOUTDIR/database.inc
+ chown gforge:gforge $CONFFILEOUTDIR/local.pl $CONFFILEOUTDIR/database.inc
+}
+
+doapache() {
+ APACHECONF=/etc/apache/httpd.conf
+ GFORGE_ETC_SEARCH=$HTTPDCONF
+ export GFORGE_ETC_SEARCH
+ if [ -f $APACHECONF -a -f $BINDIR/install-apache.sh ] ; then
+ if [ ! -f /etc/apache/conf.d/gforge.httpd.conf ] ; then
+ if ! grep -q "^Include $GFORGE_ETC_SEARCH" $APACHECONF ; then
+ $BINDIR/install-apache.sh setup
+ else
+ echo "Found Include $GFORGE_ETC_SEARCH in $APACHECONF"
+ fi
+ else
+ LINK=`ls -l /etc/apache/conf.d/gforge.httpd.conf | sed 's/.*-> \(.*\)$/\1/'`
+ if [ "$LINK" != "$GFORGE_ETC_SEARCH" ] ; then
+ echo Need to readjust Symlink
+ $BINDIR/install-apache.sh setup
+ fi
+ if ! grep -q "^Include $GFORGE_ETC_SEARCH" $APACHECONF ; then
+ echo "Found /etc/apache/conf.d/gforge.httpd.conf"
+ else
+ # There is a link and an include
+ $BINDIR/install-apache.sh setup
+ fi
+ fi
+ fi
+}
-export etcgforge=`pwd`/etc
-if [ -f $apacheconf ] ; then
- if ! grep -q "^Include $etcgforge/httpd.conf" $apacheconf ; then
- utils/install-apache.sh setup
- fi
+ETCDIR=`pwd`/etc
+ETCTEMPLATEDIR=`pwd`/etc
+BINDIR=`pwd`/utils
+CGIDIR=`pwd`/cgi-bin
+GFGDIR=`pwd`
+CHROOT=''
+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
+CONFFILEIN=$ETCDIR/gforge.conf
+CONFFILEOUT=$ETCDIR/gforge.conf
+LOCALINC=$ETCDIR/local.inc
+HTTPDCONF=$ETCDIR/httpd.conf
+HTTPDSECRETS=$ETCDIR/httpd.secrets
+SYSTEM=pgsql
+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
+
+while [ $# -ne 0 ]
+do
+ case "$1" in
+ -interact )
+ interact=true
+ ;;
+ -help )
+ usage
+ exit 0
+ ;;
+ -httpdsecrets )
+ shift
+ HTTPDSECRETS=$1
+ ;;
+ -httpdconf )
+ shift
+ HTTPDCONF=$1
+ ;;
+ -localinc )
+ shift
+ LOCALINC=$1
+ ;;
+ -input )
+ shift
+ CONFFILEIN=$1
+ ;;
+ -output )
+ shift
+ CONFFILEOUT=$1
+ ;;
+ -system )
+ shift
+ SYSTEM=$1
+ ;;
+ -confdir )
+ shift
+ CONFFILEOUTDIR=$1
+ CONFFILEIN=$1/gforge.conf
+ CONFFILEOUT=$1/gforge.conf
+ LOCALINC=$1/local.inc
+ HTTPDCONF=$1/httpd.conf
+ HTTPDSECRETS=$1/httpd.secrets
+ echo Using $1 as config directory
+ ;;
+ -fhs )
+ shift
+ ETCDIR=/etc/gforge
+ 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/share/gforge
+ CONFFILEOUTDIR=/etc/gforge
+ CONFFILEIN=/etc/gforge/gforge.conf
+ CONFFILEOUT=/etc/gforge/gforge.conf
+ LOCALINC=/etc/gforge/local.inc
+ HTTPDCONF=/etc/gforge/httpd.conf
+ HTTPDSECRETS=/etc/gforge/httpd.secrets
+ ;;
+ -simple )
+ database=simple
+ ;;
+ -noapache )
+ noapache=true
+ ;;
+ -dovhost )
+ dovhost=true
+ ;;
+ -listen80 )
+ listen80=true
+ ;;
+ -nolisten80 )
+ listen80=false
+ ;;
+ -nossl )
+ usessl=false
+ ;;
+ -example )
+ shift
+ CONFFILEIN=$ETCDIR/gforge.conf.example
+ CONFFILEOUT=$ETCDIR/gforge.conf.example
+ LOCALINC=$ETCDIR/local.inc.example
+ HTTPDCONF=$ETCDIR/httpd.conf.example
+ HTTPDSECRETS=$ETCDIR/httpd.secrets.example
+ database=simple
+ noapache=true
+ ;;
+ -home )
+ shift
+ HOMEPATH=$1
+ ;;
+ -group )
+ shift
+ GROUPPATH=$1
+ ;;
+ -clean )
+ [ -f $CONFFILEIN ] && echo Removing $CONFFILEIN && rm -f $CONFFILEIN
+ [ -f $CONFFILEOUT ] && echo Removing $CONFFILEOUT && rm -f $CONFFILEOUT
+ [ -f $LOCALINC ] && echo Removing $LOCALINC && rm -f $LOCALINC
+ [ -f $HTTPDCONF ] && echo Removing $HTTPDCONF && rm -f $HTTPDCONF
+ [ -f $HTTPDSECRETS ] && echo Removing $HTTPDSECRETS && rm -f $HTTPDSECRETS
+ exit 0
+ ;;
+ -debug )
+ set -x
+ ;;
+ *)
+ echo "Bad Parameter"
+ usage
+ exit 1
+ ;;
+ esac
+ shift
+done
+setupinout
+[ "$noapache" != true ] && doapache