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.
30 if [ "$1" = "noreturn" ]
40 echo $extra "$RED $1 $NORMAL"
43 echo $extra "$GREEN $1 $NORMAL"
48 create_db_admin_user(){
51 su - postgres -c "psql $gforge_db -c \"INSERT INTO users (user_name, realname, firstname, lastname, email, user_pw, unix_pw, status, theme_id) VALUES ('$admin_user', 'Forge Admin', 'Forge', 'Admin', 'root@localhost.localdomain', 'INVALID', 'INVALID', 'A', 1); INSERT INTO user_group (user_id, group_id, admin_flags, role_id) VALUES (currval('users_pk_seq'), 1, 'A',17); INSERT INTO pfo_user_role (user_id, role_id) VALUES (currval('users_pk_seq'), 3)\""
56 for initpsql in /etc/init.d/postgresql /etc/init.d/postgresql-8.2 /etc/init.d/postgresql-8.3 /etc/init.d/postgresql-8.4 /etc/init.d/cswpostgres
63 if [ -z "$pgservice" ]
70 # Fedora9 (an maybe newer) requires running initdb
71 if [ "$pgservice" = '/etc/init.d/postgresql' ]
73 if [ -d /var/lib/pgsql/data/base ]
75 service postgresql initdb &>/dev/null
79 # Might fail if it's already running, so we'll ingnore the result
84 if [ ! -d "$fusionforge_src_dir" ]
86 msg red "Error: $fusionforge_src_dir folder doesn't exist. Run install2 first."
91 # Where the pghba config file is
94 for pghbafile in /var/lib/pgsql/data/pg_hba.conf /etc/postgresql/8.2/main/pg_hba.conf /etc/postgresql/8.3/main/pg_hba.conf /etc/postgresql/8.4/main/pg_hba.conf /opt/csw/var/pgdata/pg_hba.conf
103 msg red "ERROR: Could not find pg_hba.conf file"
108 # Where the tsearch sql config file is
111 for tsearchfile in /usr/share/pgsql/contrib/tsearch2.sql /usr/share/postgresql/8.2/contrib/tsearch2.sql /usr/share/postgresql/8.3/contrib/tsearch2.sql /usr/share/postgresql/8.4/contrib/tsearch2.sql /opt/csw/postgresql/share/contrib/tsearch2.sql
113 if [ -f $tsearchfile ]
115 tsearch="$tsearchfile"
120 msg red "ERROR: Could not find tsearch2.sql file"
125 forge_save_db_config(){
126 if [ -z "$FFORGE_DB" ]
128 while test -z "$FFORGE_DB"
130 msg noreturn green "* Enter the Database Name (fusionforge): "
134 gforge_db="$FFORGE_DB"
135 msg green " ...using $gforge_db"
137 if [ -z "$FFORGE_USER" ]
139 while test -z "$FFORGE_USER"
141 msg noreturn green "* Enter the Database Username (gforge): "
145 gforge_user="$FFORGE_USER"
146 msg green " ...using $gforge_user"
148 if [ ! -d "$fusionforge_etc_dir" ]
150 mkdir $fusionforge_etc_dir
152 if [ ! -d "$fusionforge_etc_dir/config.ini.d" ]
154 mkdir $fusionforge_etc_dir/config.ini.d
157 msg green " * Saving database configuration in FForge config file"
158 if [ ! -f "$fusionforge_etc_dir/config.ini.d/rpm-install.ini" ]
160 cat > $fusionforge_etc_dir/config.ini.d/rpm-install.ini <<-EOF
161 ; You can edit the values here or move them to other files.
163 forge_name=FusionForge
164 web_host=`hostname -f`
166 ; This file was generated by the RPM installation system.
170 if [ ! -f "$fusionforge_etc_dir/config.ini.d/rpm-install-secrets.ini" ]
172 cat > $fusionforge_etc_dir/config.ini.d/rpm-install-secrets.ini <<-EOF
173 ; You can edit the values here or move them to other files.
174 ; These values should not go into world-readable files!
178 database_name=$gforge_db
179 database_user=$gforge_user
181 ; database_password=""
183 ; This file was generated by the RPM installation system.
186 msg green " * Saving installation log in /tmp/gforge-import.log"
193 export PATH=$PATH:/usr/share/gforge/bin/:/usr/share/gforge/utils:/opt/gforge/utils
194 database=`FUSIONFORGE_NO_PLUGINS=true forge_get_config database_name`
198 if [ -z "$database" ]
200 echo "Forge database name not found"
210 echo "Droping database $database"
211 su - postgres -c "dropdb -e $database"
217 # USING $gforge_user, $gforge_db, $pghba, $fusionforge_src_dir, $fusionforge_etc_dir, $tsearch, $pgservice, $STDIN, $STDOUT;
218 msg green " * Modifying DB Access Permissions..."
220 if [ ! -f $pghba.fforge.backup ]
222 cp $pghba $pghba.fforge.backup
228 msg green " * Restarting PostgreSQL..."
232 msg green " * Creating $gforge_user Group..."
233 /usr/sbin/groupadd $gforge_user;
235 msg green " * Creating '$gforge_user' User..."
236 /usr/sbin/useradd -g $gforge_user $gforge_user
238 # Let's give some time for PostgreSQL to start
241 msg green " * Creating Database User $gforge_user..."
242 su - postgres -c "createuser -A -R -d -E $gforge_user"
244 msg green " * Creating Language..."
245 su - postgres -c "createlang plpgsql template1"
247 if [ -d /home/$gforge_user ]
254 msg green " * Creating $gforge_db Database..."
255 su $susufix $gforge_user -c "createdb --encoding UNICODE $gforge_db"
257 # Detect postgresql version, load tsearch2 for pg < 8.3
258 pgv=`postgres --version | cut -d" " -f3`
261 msg green " * Loading tsearch2 Database Into $gforge_db DB"
262 su - postgres -c "psql $gforge_db < $tsearch" >> /tmp/gforge-import.log
263 for table in pg_ts_cfg pg_ts_cfgmap pg_ts_dict pg_ts_parser
265 su - postgres -c "psql $gforge_db -c \"GRANT ALL on $table TO $gforge_user\";"
267 su - postgres -c "psql $gforge_db -c \"UPDATE pg_ts_cfg SET locale='en_US.UTF-8' WHERE ts_name='default'\""
271 msg green " * Loading FusionForge DB"
272 su $susufix $gforge_user -c "psql $gforge_db < $fusionforge_src_dir/db/gforge.sql" >> /tmp/gforge-import.log
274 msg green " * Running php db/upgrade-db.php"
275 php $fusionforge_src_dir/db/upgrade-db.php >> /tmp/gforge-upgrade.log
278 if [ -z "$FFORGE_ADMIN_USER" ]
280 while test -z "$FFORGE_ADMIN_USER"
282 msg noreturn green " * Enter the Admin Username (fforgeadmin): "
283 read FFORGE_ADMIN_USER
286 admin_user=$FFORGE_ADMIN_USER
287 msg green " ...using $admin_user"
289 if [ -z "$FFORGE_ADMIN_PASSWORD" ]
292 while test -z "$FFORGE_ADMIN_PASSWORD" -a $retry -gt 0
294 msg noreturn green " * Enter the Site Admin Password:"
295 read -s FFORGE_ADMIN_PASSWORD1
296 if validatePassword "$FFORGE_ADMIN_PASSWORD1"
298 msg noreturn green " * Please enter it again:"
299 read -s FFORGE_ADMIN_PASSWORD2
300 if [ "$FFORGE_ADMIN_PASSWORD1" = "$FFORGE_ADMIN_PASSWORD2" ]
302 FFORGE_ADMIN_PASSWORD="$FFORGE_ADMIN_PASSWORD1"
304 msg green "Passwords don't match. Please try again."
307 retry=`expr $retry - 1`
309 if [ -z "$FFORGE_ADMIN_PASSWORD" ]
311 msg green "Passwords didn't match! Aborting."
314 create_db_admin_user "$gforge_db" "$admin_user"
315 $fusionforge_src_dir/utils/forge_set_password "$admin_user" "$FFORGE_ADMIN_PASSWORD"
318 create_db_admin_user "$gforge_db" "$admin_user"
319 $fusionforge_src_dir/utils/forge_set_password "$admin_user" "$FFORGE_ADMIN_PASSWORD"
325 strlen=`echo "$1" | wc -m`
328 msg red "Password is too short. Please try again"
331 CHECK=`echo $password | grep -E "[[:alnum:]]*"`
334 msg red "Password contains invalid characters. Please try again."
342 msg green "-=# Welcome to FusionForge DB-Installer #=-"
365 echo "Install 3 db not implemented for debian"
370 echo "Install 3 db not implemented for ubuntu"
373 install3_db_unknown()
375 echo "Install 3 db not implemented"