4 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]"
13 echo "Calculating defaults"
14 # This is used to make a default working gforge.conf
15 DEFAULTsystem_name=MyGForge
16 DEFAULTdomain_name=`hostname -f`
17 DEFAULTserver_admin=webmaster@$DEFAULTdomain_name
18 DEFAULTdb_host=`hostname -i`
22 DEFAULTdb_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
23 DEFAULTip_address=`hostname -i`
24 DEFAULTscm_host=scm.$DEFAULTdomain_name
25 DEFAULTshell_host=shell.$DEFAULTdomain_name
26 DEFAULTusers_host=users.$DEFAULTdomain_name
27 DEFAULTlists_host=lists.$DEFAULTdomain_name
28 # The following three have to be synced when domain_name changes
29 DEFAULTdocs_host=gfdocs.$DEFAULTdomain_name
30 DEFAULTjabber_host=jabber.$DEFAULTdomain_name
31 DEFAULTupload_host=upload.$DEFAULTdomain_name
33 DEFAULTdownload_host=download.$DEFAULTdomain_name
34 # The following is upload host and dir for FRS
35 DEFAULTftpuploadhost=upload.$DEFAULTdomain_name
36 DEFAULTftpuploaddir=$GFGDIR/var/lib/gforge/chroot/ftproot
38 DEFAULTstatsadmin_groupid=2
39 DEFAULTnewsadmin_groupid=3
40 DEFAULTpeerrating_groupid=4
41 DEFAULTadmin_login=admin
42 DEFAULTadmin_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
43 DEFAULTskill_list="Ada;C;C++;HTML;LISP;Perl;PHP;Python;SQL"
44 DEFAULTdefault_trove_cat=18
45 DEFAULTldap_host=localhost
46 DEFAULTldap_base_dn="dc=`echo $DEFAULTdomain_name | sed 's/\./,dc=/g'`"
47 DEFAULTldap_web_add_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
48 DEFAULTsys_path_to_mailman=$(if test -d /usr/lib/mailman; then echo /usr/lib/mailman; else echo /var/mailman; fi)
50 DEFAULTcronolog_path=$(findcronolog)
51 DEFAULTsys_path_to_jpgraph=/usr/share/jpgraph/
52 DEFAULTsys_path_to_scmweb=/usr/lib/gforge/bin/
53 DEFAULTgforge_chroot=$CHROOT
54 DEFAULTgforge_etc=$ETCDIR
55 DEFAULTsys_custom_path=$ETCDIR/custom
56 DEFAULTgroupdir=$GROUPPATH
57 DEFAULThomedir=$HOMEPATH
58 DEFAULTcvsdir=$CVSPATH
59 DEFAULTsvndir=$SVNPATH
60 # The place where file uploaded with http are stored for download
61 DEFAULTuploaddir=$GFGDIR/var/lib/gforge/download/
62 DEFAULTsys_urlroot=$SHAREDIR/www/
63 DEFAULTsys_jabber_pass=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
64 DEFAULTusr_share_gforge=$SHAREDIR
65 DEFAULTusr_lib_gforge=$LIBDIR
66 DEFAULTvar_lib_gforge=$GFGDIR/var/lib/gforge
67 DEFAULTvar_log_gforge=$GFGDIR/var/log/gforge
68 DEFAULTsys_show_source=0
69 DEFAULTsys_force_login=0
70 DEFAULTsys_session_key=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-32)
71 DEFAULTsys_session_expire='60 * 60 * 24 * 7'
72 DEFAULTsys_show_contact_info=1
73 DEFAULTsys_themeroot=$SHAREDIR/www/themes/
74 DEFAULTsys_theme=gforge
75 DEFAULTsys_lang=English
76 DEFAULTsys_default_timezone=GMT
77 DEFAULTsys_default_country_code=US
78 DEFAULTsys_account_manager_type=$SYSTEM
79 DEFAULTsys_use_jabber=0
80 DEFAULTsys_use_auth_ldap=1
81 DEFAULTsys_ldap_auth_host=localhost
82 DEFAULTsys_ldap_auth_port=389
83 DEFAULTsys_ldap_auth_version=3
84 DEFAULTsys_ldap_auth_dn="dc=`echo $DEFAULTdomain_name | sed 's/\./,dc=/g'`"
85 DEFAULTsys_scm_tarballs_path=$GFGDIR/var/lib/gforge/scmtarballs
86 DEFAULTsys_scm_snapshots_path=$GFGDIR/var/lib/gforge/scmsnapshots
87 DEFAULTsys_use_scm=true
88 DEFAULTsys_use_tracker=true
89 DEFAULTsys_use_forum=true
90 DEFAULTsys_use_pm=true
91 DEFAULTsys_use_docman=true
92 DEFAULTsys_use_news=true
93 DEFAULTsys_use_mail=true
94 DEFAULTsys_use_survey=true
95 DEFAULTsys_use_frs=true
96 DEFAULTsys_use_fti=false
97 DEFAULTsys_use_ftp=true
98 DEFAULTsys_use_trove=true
99 DEFAULTsys_use_snippet=true
100 DEFAULTsys_use_ssl=false
101 DEFAULTsys_use_people=true
102 DEFAULTsys_use_ftpuploads=false
103 DEFAULTsys_use_gateways=true
104 DEFAULTsys_use_project_vhost=true
105 DEFAULTsys_use_project_database=false
106 DEFAULTsys_use_project_multimedia=false
107 DEFAULTsys_project_reg_restricted=false
108 DEFAULTsys_user_reg_restricted=false
109 DEFAULTsys_localization_enable_caching=true
110 DEFAULTsys_localization_cache_path=$GFGDIR/var/cache/gforge/
111 DEFAULTsys_localization_enable_timestamp_checking=true
112 DEFAULTsys_localinc=$ETCDIR/local.inc
113 DEFAULTsys_jabber_pass=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
114 DEFAULTsys_plugins_path=/usr/lib/gforge/plugins/
115 DEFAULTsys_sslcrt=$(findcrt)
116 DEFAULTsys_sslkey=$(findkey)
117 DEFAULTnoreply_to_bitbucket=true
118 DEFAULTsys_simple_dns=true
119 DEFAULTsys_apache_user=$(findapacheowner)
120 DEFAULTsys_apache_group=$(findapacheowner)
121 DEFAULTsys_forum_return_domain=$DEFAULTdomain_name
124 #usr_lib_gforge=$GFGDIR
130 if [ -f /etc/apache2/ssl/apache.pem ]
132 echo /etc/apache2/ssl/apache.pem
134 if [ -f /etc/apache/ssl.crt/server.crt ]
136 echo /etc/apache/ssl.crt/server.crt
141 if [ -f /etc/apache2/ssl/apache.pem ]
143 echo /etc/apache2/ssl/apache.pem
145 if [ -f /etc/apache/ssl.key/server.key ]
147 echo /etc/apache/ssl.key/server.key
153 if [ -x /usr/bin/cronolog ]
155 echo /usr/bin/cronolog
157 if [ -x /usr/sbin/cronolog ]
159 echo /usr/sbin/cronolog
166 if grep 'Red Hat' /etc/issue > /dev/null; then
168 elif grep SuSE /etc/issue > /dev/null; then
170 elif grep Debian /etc/issue > /dev/null; then
179 # This create a default conf file in $1
180 tmpfile=$1.$$computedefault
181 echo "cat >$1<<-EOF" > $tmpfile
182 cat $0 | grep "^ DEFAULT" | sed 's/ DEFAULT\(.[^=]*\)=.*/\1=\${\1:-\$DEFAULT\1}/' >> $tmpfile
183 echo 'EOF' >> $tmpfile
189 cat $1 | sed 's/\(.[^=]*\)=\(.*\)/DEFAULT\1="\2"/' |
190 grep -v '^DEFAULTcronolog_path' > $1.$$readdefault
193 if [ ! -z "$DEFAULTsys_sslcrt" -a ! -f "$DEFAULTsys_sslcrt" ]
195 unset DEFAULTsys_sslcrt
196 DEFAULTsys_sslcrt=$(findcrt)
198 if [ -z "$DEFAULTsys_sslcrt" ]
200 DEFAULTsys_sslcrt=$(findcrt)
203 if [ ! -z "$DEFAULTsys_sslkey" -a ! -f "$DEFAULTsys_sslkey" ]
205 unset DEFAULTsys_sslkey
206 DEFAULTsys_sslkey=$(findkey)
208 if [ -z "$DEFAULTsys_sslkey" ]
210 DEFAULTsys_sslkey=$(findkey)
213 if [ ! -d "$DEFAULTsys_themeroot/$DEFAULTsys_theme" ]
215 if [ -d "$DEFAULTsys_themeroot/gforge" ]
217 DEFAULTsys_theme=gforge
220 rm -f $1.$$readdefault
227 writedefault $CONFFILEIN.new
229 if [ -f $CONFFILEIN ]
231 echo "Reading defaults from $CONFFILEIN"
232 readdefault $CONFFILEIN
234 readdefault $CONFFILEIN.new
237 if [ "$interact" == true ]
239 echo "Enter values or type enter for defaults:"
241 # This ask for change of default
243 cat $0 | grep "^ DEFAULT" | sed 's/ DEFAULT\(.[^=]*\)=.*/getval \1 "\${DEFAULT\1}"/' > $tmpfile
245 cat $0 | grep "^ DEFAULT" | sed 's/ DEFAULT\(.[^=]*\)=.*/\1="\${DEFAULT\1}"/' > $tmpfile
250 echo "Creating $CONFFILEOUT"
251 [ ! -d `dirname $CONFFILEOUT` ] && (mkdir -p `dirname $CONFFILEOUT` || (echo "Could not create `dirname $CONFFILEOUT`" && exit 1))
252 writedefault $CONFFILEOUT.new
253 mv $CONFFILEOUT.new $CONFFILEOUT
256 # Remove trailing space
257 cat $CONFFILEIN | sed 's/ *$//' > $CONFFILEIN.new
258 mv $CONFFILEIN.new $CONFFILEIN
261 EXCLUDEVHOST=' -not -name 55vhost'
262 if [ "$dovhost" == true ]
266 rm -f $ETCDIR/httpd.d/10cvs
267 rm -f $ETCDIR/httpd.d/10scmcvs
268 rm -f $ETCDIR/httpd.d/10scmcvsauth
269 rm -f $ETCDIR/httpd.d/07maindirhttps
270 rm -f $ETCDIR/httpd.d/11scmcvshttp
271 rm -f $ETCDIR/httpd.d/11scmsvnhttp
272 rm -f $ETCDIR/httpd.d/12scmcvshttp.ssl
274 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
276 $BINDIR/fill-in-the-blanks.pl $i $ETCDIR/`basename $i`.gforge-new $CONFFILEOUT
279 if [ $listen80 == false ]
281 rm -f $ETCDIR/00listen80.gforge-new
284 echo "Creating $HTTPDCONF"
285 ls $ETCDIR/[0-9][0-9]*.gforge-new | sort | xargs cat > $HTTPDCONF
286 rm $ETCDIR/[0-9][0-9]*.gforge-new
287 echo "Creating $HTTPDSECRETS"
288 cat $ETCDIR/httpd.secrets.gforge-new > $HTTPDSECRETS
289 rm $ETCDIR/httpd.secrets.gforge-new
291 echo "Creating $LOCALINC"
292 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
294 $BINDIR/fill-in-the-blanks.pl $i $CONFFILEOUTDIR/`basename $i` $CONFFILEOUT
296 (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
297 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
299 echo "Creating other includes"
300 #for i in $ETCDIR/templates/[a-z]*
301 find $ETCDIR/templates -name '[a-z]*' -maxdepth 1 -type f | while read i
303 $BINDIR/fill-in-the-blanks.pl $i $CONFFILEOUTDIR/`basename $i` $CONFFILEOUT
305 chmod 600 $HTTPDSECRETS $CONFFILEIN $CONFFILEOUT
306 chmod 640 $CONFFILEOUTDIR/local.pl $CONFFILEOUTDIR/database.inc
307 chown gforge:gforge $CONFFILEOUTDIR/local.pl $CONFFILEOUTDIR/database.inc
311 APACHECONF=/etc/apache/httpd.conf
312 GFORGE_ETC_SEARCH=$HTTPDCONF
313 export GFORGE_ETC_SEARCH
314 if [ -f $APACHECONF -a -f $BINDIR/install-apache.sh ] ; then
315 if [ ! -f /etc/apache/conf.d/gforge.httpd.conf ] ; then
316 if ! grep -q "^Include $GFORGE_ETC_SEARCH" $APACHECONF ; then
317 $BINDIR/install-apache.sh setup
319 echo "Found Include $GFORGE_ETC_SEARCH in $APACHECONF"
322 LINK=`ls -l /etc/apache/conf.d/gforge.httpd.conf | sed 's/.*-> \(.*\)$/\1/'`
323 if [ "$LINK" != "$GFORGE_ETC_SEARCH" ] ; then
324 echo Need to readjust Symlink
325 $BINDIR/install-apache.sh setup
327 if ! grep -q "^Include $GFORGE_ETC_SEARCH" $APACHECONF ; then
328 echo "Found /etc/apache/conf.d/gforge.httpd.conf"
330 # There is a link and an include
331 $BINDIR/install-apache.sh setup
344 GROUPPATH=/home/groups
349 CONFFILEOUTDIR=$ETCDIR
350 CONFFILEIN=$ETCDIR/gforge.conf
351 CONFFILEOUT=$ETCDIR/gforge.conf
352 LOCALINC=$ETCDIR/local.inc
353 HTTPDCONF=$ETCDIR/httpd.conf
354 HTTPDSECRETS=$ETCDIR/httpd.secrets
356 export ETCDIR BINDIR GFGDIR CONFFILEOUTDIR CONFFILEIN CONFFILEOUT LOCALINC HTTPDCONF HTTPDSECRETS DOAPACHE SYSTEM
400 CONFFILEIN=$1/gforge.conf
401 CONFFILEOUT=$1/gforge.conf
402 LOCALINC=$1/local.inc
403 HTTPDCONF=$1/httpd.conf
404 HTTPDSECRETS=$1/httpd.secrets
405 echo Using $1 as config directory
410 BINDIR=/usr/lib/gforge/bin
411 CGIDIR=/usr/lib/gforge/cgi-bin
414 GROUPPATH=/home/groups
415 CHROOT=/var/lib/gforge/chroot
416 SHAREDIR=/usr/share/gforge
417 LIBDIR=/usr/lib/gforge
418 CONFFILEOUTDIR=/etc/gforge
419 CONFFILEIN=/etc/gforge/gforge.conf
420 CONFFILEOUT=/etc/gforge/gforge.conf
421 LOCALINC=/etc/gforge/local.inc
422 HTTPDCONF=/etc/gforge/httpd.conf
423 HTTPDSECRETS=/etc/gforge/httpd.secrets
442 CONFFILEIN=$ETCDIR/gforge.conf.example
443 CONFFILEOUT=$ETCDIR/gforge.conf.example
444 LOCALINC=$ETCDIR/local.inc.example
445 HTTPDCONF=$ETCDIR/httpd.conf.example
446 HTTPDSECRETS=$ETCDIR/httpd.secrets.example
459 [ -f $CONFFILEIN ] && echo Removing $CONFFILEIN && rm -f $CONFFILEIN
460 [ -f $CONFFILEOUT ] && echo Removing $CONFFILEOUT && rm -f $CONFFILEOUT
461 [ -f $LOCALINC ] && echo Removing $LOCALINC && rm -f $LOCALINC
462 [ -f $HTTPDCONF ] && echo Removing $HTTPDCONF && rm -f $HTTPDCONF
463 [ -f $HTTPDSECRETS ] && echo Removing $HTTPDSECRETS && rm -f $HTTPDSECRETS
478 [ "$noapache" != true ] && doapache