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`
21 DEFAULTdb_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
22 DEFAULTip_address=`hostname -i`
23 DEFAULTscm_host=scm.$DEFAULTdomain_name
24 DEFAULTshell_host=shell.$DEFAULTdomain_name
25 DEFAULTusers_host=users.$DEFAULTdomain_name
26 DEFAULTlists_host=lists.$DEFAULTdomain_name
27 DEFAULTdocs_host=gfdocs.$DEFAULTdomain_name
28 DEFAULTjabber_host=jabber.$DEFAULTdomain_name
29 DEFAULTdownload_host=download.$DEFAULTdomain_name
30 DEFAULTupload_host=upload.$DEFAULTdomain_name
31 DEFAULTstatsadmin_groupid=2
32 DEFAULTnewsadmin_groupid=3
33 DEFAULTpeerrating_groupid=4
34 DEFAULTadmin_login=admin
35 DEFAULTadmin_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
36 DEFAULTskill_list="Ada;C;C++;HTML;LISP;Perl;PHP;Python;SQL"
37 DEFAULTdefault_trove_cat=18
38 DEFAULTldap_host=localhost
39 DEFAULTldap_base_dn="dc=`echo $DEFAULTdomain_name | sed 's/\./,dc=/g'`"
40 DEFAULTldap_web_add_password=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
42 DEFAULTcronolog_path=$(findcronolog)
43 DEFAULTsys_path_to_jpgraph=/usr/share/jpgraph/
44 DEFAULTsys_path_to_scmweb=/usr/lib/gforge/bin/
45 DEFAULTgforge_chroot=$CHROOT
46 DEFAULTgforge_etc=$ETCDIR
47 DEFAULTsys_custom_path=$ETCDIR/custom
48 DEFAULTgroupdir=$GROUPPATH
49 DEFAULThomedir=$HOMEPATH
50 DEFAULTcvsdir=$CVSPATH
51 DEFAULTsvndir=$SVNPATH
52 DEFAULTuploaddir=$GFGDIR/var/lib/gforge/download/
53 DEFAULTsys_urlroot=$SHAREDIR/www/
54 DEFAULTsys_jabber_pass=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
55 DEFAULTusr_share_gforge=$SHAREDIR
56 DEFAULTusr_lib_gforge=$LIBDIR
57 DEFAULTvar_lib_gforge=$GFGDIR/var/lib/gforge
58 DEFAULTvar_log_gforge=$GFGDIR/var/log/gforge
59 DEFAULTsys_show_source=0
60 DEFAULTsys_force_login=0
61 DEFAULTsys_session_key=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-32)
62 DEFAULTsys_session_expire='60 * 60 * 24 * 7'
63 DEFAULTsys_show_contact_info=1
64 DEFAULTsys_themeroot=$SHAREDIR/www/themes/
65 DEFAULTsys_theme=gforge
66 DEFAULTsys_lang=English
67 DEFAULTsys_default_timezone=GMT
68 DEFAULTsys_default_country_code=US
69 DEFAULTsys_account_manager_type=$SYSTEM
70 DEFAULTsys_use_jabber=0
71 DEFAULTsys_use_auth_ldap=1
72 DEFAULTsys_ldap_auth_host=localhost
73 DEFAULTsys_ldap_auth_port=389
74 DEFAULTsys_ldap_auth_version=3
75 DEFAULTsys_ldap_auth_dn="dc=`echo $DEFAULTdomain_name | sed 's/\./,dc=/g'`"
76 DEFAULTsys_scm_tarballs_path=$GFGDIR/var/lib/gforge/scmtarballs
77 DEFAULTsys_scm_snapshots_path=$GFGDIR/var/lib/gforge/scmsnapshots
78 DEFAULTsys_use_scm=true
79 DEFAULTsys_use_tracker=true
80 DEFAULTsys_use_forum=true
81 DEFAULTsys_use_pm=true
82 DEFAULTsys_use_docman=true
83 DEFAULTsys_use_news=true
84 DEFAULTsys_use_mail=true
85 DEFAULTsys_use_survey=true
86 DEFAULTsys_use_frs=true
87 DEFAULTsys_use_fti=false
88 DEFAULTsys_use_ftp=true
89 DEFAULTsys_use_trove=true
90 DEFAULTsys_use_snippet=true
91 DEFAULTsys_use_ssl=false
92 DEFAULTsys_use_people=true
93 DEFAULTsys_use_ftpuploads=false
94 DEFAULTsys_use_gateways=true
95 DEFAULTsys_use_project_vhost=true
96 DEFAULTsys_use_project_database=false
97 DEFAULTsys_use_project_multimedia=false
98 DEFAULTsys_project_reg_restricted=false
99 DEFAULTsys_user_reg_restricted=false
100 DEFAULTsys_localization_enable_caching=true
101 DEFAULTsys_localization_cache_path=$GFGDIR/var/cache/gforge/
102 DEFAULTsys_localization_enable_timestamp_checking=true
103 DEFAULTsys_localinc=$ETCDIR/local.inc
104 DEFAULTsys_jabber_pass=$(dd if=/dev/urandom count=256 bs=1 2> /dev/null | md5sum | cut -b1-8)
105 DEFAULTsys_plugins_path=/usr/lib/gforge/plugins/
106 DEFAULTsys_sslcrt=$(findcrt)
107 DEFAULTsys_sslkey=$(findkey)
108 DEFAULTnoreply_to_bitbucket=true
109 DEFAULTsys_simple_dns=true
110 DEFAULTsys_apache_user=$(findapacheowner)
111 DEFAULTsys_apache_group=$(findapacheowner)
114 #usr_lib_gforge=$GFGDIR
120 if [ -f /etc/apache2/ssl/apache.pem ]
122 echo /etc/apache2/ssl/apache.pem
124 if [ -f /etc/apache/ssl.crt/server.crt ]
126 echo /etc/apache/ssl.crt/server.crt
131 if [ -f /etc/apache2/ssl/apache.pem ]
133 echo /etc/apache2/ssl/apache.pem
135 if [ -f /etc/apache/ssl.key/server.key ]
137 echo /etc/apache/ssl.key/server.key
143 if [ -x /usr/bin/cronolog ]
145 echo /usr/bin/cronolog
147 if [ -x /usr/sbin/cronolog ]
149 echo /usr/sbin/cronolog
156 if grep 'Red Hat' /etc/issue > /dev/null; then
158 elif grep SuSE /etc/issue > /dev/null; then
160 elif grep Debian /etc/issue > /dev/null; then
169 # This create a default conf file in $1
170 tmpfile=$1.$$computedefault
171 echo "cat >$1<<-EOF" > $tmpfile
172 cat $0 | grep "^ DEFAULT" | sed 's/ DEFAULT\(.[^=]*\)=.*/\1=\${\1:-\$DEFAULT\1}/' >> $tmpfile
173 echo 'EOF' >> $tmpfile
179 cat $1 | sed 's/\(.[^=]*\)=\(.*\)/DEFAULT\1="\2"/' |
180 grep -v '^DEFAULTcronolog_path' > $1.$$readdefault
183 if [ ! -z "$DEFAULTsys_sslcrt" -a ! -f "$DEFAULTsys_sslcrt" ]
185 unset DEFAULTsys_sslcrt
186 DEFAULTsys_sslcrt=$(findcrt)
188 if [ -z "$DEFAULTsys_sslcrt" ]
190 DEFAULTsys_sslcrt=$(findcrt)
193 if [ ! -z "$DEFAULTsys_sslkey" -a ! -f "$DEFAULTsys_sslkey" ]
195 unset DEFAULTsys_sslkey
196 DEFAULTsys_sslkey=$(findkey)
198 if [ -z "$DEFAULTsys_sslkey" ]
200 DEFAULTsys_sslkey=$(findkey)
203 if [ ! -d "$DEFAULTsys_themeroot/$DEFAULTsys_theme" ]
205 if [ -d "$DEFAULTsys_themeroot/gforge" ]
207 DEFAULTsys_theme=gforge
210 rm -f $1.$$readdefault
217 writedefault $CONFFILEIN.new
219 if [ -f $CONFFILEIN ]
221 echo "Reading defaults from $CONFFILEIN"
222 readdefault $CONFFILEIN
224 readdefault $CONFFILEIN.new
227 if [ "$interact" == true ]
229 echo "Enter values or type enter for defaults:"
231 # This ask for change of default
233 cat $0 | grep "^ DEFAULT" | sed 's/ DEFAULT\(.[^=]*\)=.*/getval \1 "\${DEFAULT\1}"/' > $tmpfile
235 cat $0 | grep "^ DEFAULT" | sed 's/ DEFAULT\(.[^=]*\)=.*/\1="\${DEFAULT\1}"/' > $tmpfile
240 echo "Creating $CONFFILEOUT"
241 [ ! -d `dirname $CONFFILEOUT` ] && (mkdir -p `dirname $CONFFILEOUT` || (echo "Could not create `dirname $CONFFILEOUT`" && exit 1))
242 writedefault $CONFFILEOUT.new
243 mv $CONFFILEOUT.new $CONFFILEOUT
246 # Remove trailing space
247 cat $CONFFILEIN | sed 's/ *$//' > $CONFFILEIN.new
248 mv $CONFFILEIN.new $CONFFILEIN
251 EXCLUDEVHOST=' -not -name 55vhost'
252 if [ "$dovhost" == true ]
256 rm -f $ETCDIR/httpd.d/10cvs
257 rm -f $ETCDIR/httpd.d/10scmcvs
258 rm -f $ETCDIR/httpd.d/10scmcvsauth
259 rm -f $ETCDIR/httpd.d/07maindirhttps
260 rm -f $ETCDIR/httpd.d/11scmcvshttp
261 rm -f $ETCDIR/httpd.d/11scmsvnhttp
262 rm -f $ETCDIR/httpd.d/12scmcvshttp.ssl
264 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
266 $BINDIR/fill-in-the-blanks.pl $i $ETCDIR/`basename $i`.gforge-new $CONFFILEOUT
269 if [ $listen80 == false ]
271 rm -f $ETCDIR/00listen80.gforge-new
274 echo "Creating $HTTPDCONF"
275 ls $ETCDIR/[0-9][0-9]*.gforge-new | sort | xargs cat > $HTTPDCONF
276 rm $ETCDIR/[0-9][0-9]*.gforge-new
277 echo "Creating $HTTPDSECRETS"
278 cat $ETCDIR/httpd.secrets.gforge-new > $HTTPDSECRETS
279 rm $ETCDIR/httpd.secrets.gforge-new
281 echo "Creating $LOCALINC"
282 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
284 $BINDIR/fill-in-the-blanks.pl $i $CONFFILEOUTDIR/`basename $i` $CONFFILEOUT
286 (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
287 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
289 echo "Creating other includes"
290 #for i in $ETCDIR/templates/[a-z]*
291 find $ETCDIR/templates -name '[a-z]*' -maxdepth 1 -type f | while read i
293 $BINDIR/fill-in-the-blanks.pl $i $CONFFILEOUTDIR/`basename $i` $CONFFILEOUT
295 chmod 600 $HTTPDSECRETS $CONFFILEIN $CONFFILEOUT
296 chmod 640 $CONFFILEOUTDIR/local.pl $CONFFILEOUTDIR/database.inc
297 chown gforge:gforge $CONFFILEOUTDIR/local.pl $CONFFILEOUTDIR/database.inc
301 APACHECONF=/etc/apache/httpd.conf
302 GFORGE_ETC_SEARCH=$HTTPDCONF
303 export GFORGE_ETC_SEARCH
304 if [ -f $APACHECONF -a -f $BINDIR/install-apache.sh ] ; then
305 if [ ! -f /etc/apache/conf.d/gforge.httpd.conf ] ; then
306 if ! grep -q "^Include $GFORGE_ETC_SEARCH" $APACHECONF ; then
307 $BINDIR/install-apache.sh setup
309 echo "Found Include $GFORGE_ETC_SEARCH in $APACHECONF"
312 LINK=`ls -l /etc/apache/conf.d/gforge.httpd.conf | sed 's/.*-> \(.*\)$/\1/'`
313 if [ "$LINK" != "$GFORGE_ETC_SEARCH" ] ; then
314 echo Need to readjust Symlink
315 $BINDIR/install-apache.sh setup
317 if ! grep -q "^Include $GFORGE_ETC_SEARCH" $APACHECONF ; then
318 echo "Found /etc/apache/conf.d/gforge.httpd.conf"
320 # There is a link and an include
321 $BINDIR/install-apache.sh setup
334 GROUPPATH=/home/groups
339 CONFFILEOUTDIR=$ETCDIR
340 CONFFILEIN=$ETCDIR/gforge.conf
341 CONFFILEOUT=$ETCDIR/gforge.conf
342 LOCALINC=$ETCDIR/local.inc
343 HTTPDCONF=$ETCDIR/httpd.conf
344 HTTPDSECRETS=$ETCDIR/httpd.secrets
346 export ETCDIR BINDIR GFGDIR CONFFILEOUTDIR CONFFILEIN CONFFILEOUT LOCALINC HTTPDCONF HTTPDSECRETS DOAPACHE SYSTEM
390 CONFFILEIN=$1/gforge.conf
391 CONFFILEOUT=$1/gforge.conf
392 LOCALINC=$1/local.inc
393 HTTPDCONF=$1/httpd.conf
394 HTTPDSECRETS=$1/httpd.secrets
395 echo Using $1 as config directory
400 BINDIR=/usr/lib/gforge/bin
401 CGIDIR=/usr/lib/gforge/cgi-bin
404 GROUPPATH=/home/groups
405 CHROOT=/var/lib/gforge/chroot
406 SHAREDIR=/usr/share/gforge
407 LIBDIR=/usr/lib/gforge
408 CONFFILEOUTDIR=/etc/gforge
409 CONFFILEIN=/etc/gforge/gforge.conf
410 CONFFILEOUT=/etc/gforge/gforge.conf
411 LOCALINC=/etc/gforge/local.inc
412 HTTPDCONF=/etc/gforge/httpd.conf
413 HTTPDSECRETS=/etc/gforge/httpd.secrets
432 CONFFILEIN=$ETCDIR/gforge.conf.example
433 CONFFILEOUT=$ETCDIR/gforge.conf.example
434 LOCALINC=$ETCDIR/local.inc.example
435 HTTPDCONF=$ETCDIR/httpd.conf.example
436 HTTPDSECRETS=$ETCDIR/httpd.secrets.example
449 [ -f $CONFFILEIN ] && echo Removing $CONFFILEIN && rm -f $CONFFILEIN
450 [ -f $CONFFILEOUT ] && echo Removing $CONFFILEOUT && rm -f $CONFFILEOUT
451 [ -f $LOCALINC ] && echo Removing $LOCALINC && rm -f $LOCALINC
452 [ -f $HTTPDCONF ] && echo Removing $HTTPDCONF && rm -f $HTTPDCONF
453 [ -f $HTTPDSECRETS ] && echo Removing $HTTPDSECRETS && rm -f $HTTPDSECRETS
468 [ "$noapache" != true ] && doapache