2 # FusionForge Installation Dependency Setup
4 # Copyright 2006 GForge, LLC
5 # Copyright 2011 Christian Bayle <bayle@debian.org>
6 # http://fusionforge.org/
10 # This file is part of GInstaller, it is called by install.sh.
12 # FusionForge is free software; you can redistribute it and/or modify
13 # it under the terms of the GNU General Public License as published by
14 # the Free Software Foundation; either version 2 of the License, or
15 # (at your option) any later version.
17 # FusionForge is distributed in the hope that it will be useful,
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # GNU General Public License for more details.
22 # You should have received a copy of the GNU General Public License along
23 # with FusionForge; if not, write to the Free Software Foundation, Inc.,
24 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
32 echo "$RED $2 $NORMAL"
35 echo "$GREEN $2 $NORMAL"
47 msg red "Validating arguments: FAIL"
48 msg red "Usage: $0 fusionforge.org apacheuser apachegroup"
51 msg green "Validating arguments: OK"
54 CHECK=`echo $hostname | grep -E "[^[:alnum:]\-]"`
55 if [ "$CHECK" != "" ] ; then
56 msg green "Validating hostname: OK";
58 msg red "Validating hostname: FAIL invalid hostname"
61 if getent passwd $apacheuser > /dev/null
63 msg red "Invalid apache user"
67 if getent group $apachegroup > /dev/null
69 msg red "Invalid apache group"
73 insscriptdir=`cd \`dirname $0\`; pwd`
74 . $insscriptdir/config
76 for dir in $fusionforge_dir $fusionforge_data_dir $fusionforge_log_dir
80 if mkdir -p $dir > /dev/null
82 msg green "Creating $dir : OK"
84 msg red "Creating $dir : FAILED"
85 msg red "$dir didn't exist - error - make sure you've got permission"
91 if [ "$fusionforge_dir" != "$fusionforge_src_dir" ]
93 cp -r * $fusionforge_dir
96 mkdir -p $fusionforge_data_dir/uploads
97 mkdir -p $fusionforge_data_dir/scmtarballs
98 mkdir -p $fusionforge_data_dir/scmsnapshots
99 mkdir -p $fusionforge_data_dir/scmrepos/svn
100 mkdir -p $fusionforge_data_dir/scmrepos/cvs
102 mkdir -p $fusionforge_data_dir/etc
103 touch $fusionforge_data_dir/etc/httpd.vhosts
105 mkdir -p $fusionforge_data_dir/homedirs
106 mkdir -p /home/groups
107 if [ ! -d $fusionforge_data_dir/homedirs/groups ]
109 ln -s /home/groups $fusionforge_data_dir/homedirs/groups
112 if [ ! -d $fusionforge_data_dir/scmrepos ]
114 ln -s $fusionforge_data_dir/scmrepos /scmrepos
117 # Create the old symlink /svnroot for compatibility.
120 ln -s $fusionforge_data_dir/scmrepos/svn /svnroot
123 # Create the old symlink /cvsroot for compatibility.
126 ln -s $fusionforge_data_dir/scmrepos/cvs /cvsroot
129 # Create default dumps dir
130 mkdir -p $fusionforge_data_dir/dumps
133 chown -R root:$apachegroup $fusionforge_dir
134 chmod -R 644 $fusionforge_dir
135 cd $fusionforge_dir && find -type d | xargs chmod 755
136 chown -R $apacheuser:$apachegroup $fusionforge_data_dir/uploads
137 chmod -R 755 $fusionforge_dir/cronjobs/
138 chmod 755 $fusionforge_dir/www/scm/viewvc/bin/cgi/viewvc.cgi
139 chmod 755 $fusionforge_dir/utils/forge_get_config
140 chmod 755 $fusionforge_dir/utils/manage-apache-config.sh
141 $fusionforge_dir/utils/manage-apache-config.sh build
142 chmod 755 $fusionforge_dir/utils/manage-translations.sh
143 chmod 755 $fusionforge_dir/utils/migrate-to-ini-files.sh
145 #restricted shell for cvs accounts
146 cp $fusionforge_dir/plugins/scmcvs/bin/cvssh.pl /bin/
147 chmod 755 /bin/cvssh.pl
149 # Create default location for gforge config files
150 mkdir -p $fusionforge_etc_dir
151 if [ -f $fusionforge_etc_dir/httpd.conf ]
153 cp $fusionforge_dir/etc/httpd.conf-opt $fusionforge_etc_dir/httpd.conf
155 mkdir -p $fusionforge_etc_dir/httpd.conf.d
157 ls $fusionforge_dir/etc/httpd.conf.d-opt/[0-9a-zA-Z_-]*.conf $fusionforge_dir/etc/httpd.conf.d-opt/[0-9a-zA-Z_-]*.inc | while read file
159 cp $file $fusionforge_etc_dir/httpd.conf.d/
162 cp $fusionforge_dir/etc/config.ini-opt $fusionforge_etc_dir/config.ini
163 cp -rL $fusionforge_dir/etc/config.ini.d $fusionforge_etc_dir/config.ini.d
165 # Install default configuration files for all plugins.
166 mkdir -p $fusionforge_etc_dir/plugins/
168 cd $fusionforge_dir/plugins
169 find $fusionforge_dir/plugins -type d -maxdepth 1 | while read plugdir
171 plugin=`basename $plugdir`
172 if [ -d $fusionforge_dir/plugins/$plugin/etc/plugins/$plugin ]
174 cp -r $fusionforge_dir/plugins/$plugin/etc/plugins/$plugin $fusionforge_etc_dir/plugins/
178 for file in /etc/httpd/conf/httpd.conf /opt/csw/apache2/etc/httpd.conf /etc/apache2/httpd.conf
182 msg green 'Setting FusionForge Include For Apache...'
183 if ! grep -q "^Include" $fusionforge_etc_dir/httpd.conf $file > /dev/null
185 echo "Include $fusionforge_etc_dir/httpd.conf" >> $file
190 # Create symlink for the wiki plugin.
191 if [ ! -d $fusionforge_src_dir/www/wiki ]
193 ln -s ../plugins/wiki/www/ $fusionforge_src_dir/www/wiki
196 # symlink plugin www's
197 cd $fusionforge_src_dir/www
202 for plugin in cvstracker svntracker message scmcvs fckeditor blocks authbuiltin
205 ln -s ../../plugins/$plugin/www/ $plugin
209 if [ ! -d $fusionforge_etc_dir ]
211 msg red "/etc/gforge didn't exist - error - make sure you've got permission"
215 chown -R root:$apachegroup $fusionforge_etc_dir
216 chmod -R 644 $fusionforge_etc_dir
217 cd $fusionforge_etc_dir && find -type d | xargs chmod 755
218 cd $fusionforge_etc_dir && find -type f -exec perl -pi -e "s/apacheuser/$apacheuser/" {} \;
219 cd $fusionforge_etc_dir && find -type f -exec perl -pi -e "s/apachegroup/$apachegroup/" {} \;
220 cd $fusionforge_etc_dir && find -type f -exec perl -pi -e "s/gforge.company.com/$hostname/" {} \;
221 echo "noreply: /dev/null" >> /etc/aliases