#!/bin/bash MY_FILE=${VHOST_ROOT}/Kernel/Config.pm function choice { select opt in $@; do if [ ${opt} ]; then echo ${opt} break else echo "Please choose one of the options" fi done } function input { read A echo ${A} } function check_ver { if ( ls ${MY_SERVERCONFIGDIR} | grep -q apache2 ); then echo apache2; else echo apache1; fi } if [ $1 = "start" -o $1 = "install" ]; then MY_VHOST_ROOT=`echo ${VHOST_ROOT} | sed "s.\/.\\\\\/.g"` MY_INST=`echo ${MY_INSTALLDIR} | sed "s.\/.\\\\\/.g"` APACHE_VER=`check_ver` if [ ${APACHE_VER} = "apache2" ]; then APACHE_DIR="apache2" APACHE_MOD="\/modules.d" else APACHE_DIR="apache" fi # ask the user and copy changes into Config.pm echo "Would you like to manually configure your installation? (y/n)" if [ `input` != 'y' ]; then echo "Make sure to edit ${MY_FILE} when you are ready" else echo echo "Choose the database driver. Be sure to have that database set up and its daemon started before using OTRS" DB_TYPE=`choice mysql postgresql` echo "The domain name (DatabaseHost) of your database server" DOMAIN=`input` sed -e "s/\$Self->{DatabaseHost} = 'localhost';/\$Self->{DatabaseHost} = '$DOMAIN';/" -i ${MY_FILE} echo "The name of the OTRS's database on your database server" DB_NAME=`input` sed -e "s/\$Self->{Database} = 'otrs';/\$Self->{Database} = '$DB_NAME';/" -i ${MY_FILE} echo "The name of the database user (inside the database)" DB_USER=`input` sed -e "s/\$Self->{DatabaseUser} = 'otrs';/\$Self->{DatabaseUser} = '$DB_USER';/" -i ${MY_FILE} echo "Password ${DB_USER} should use to access the database" DB_PASS=`input` sed -e "s/\$Self->{DatabasePw} = 'some-pass';/\$Self->{DatabasePw} = '$DB_PASS';/" -i ${MY_FILE} # configure database-specific stuff if [ "${DB_TYPE}" = "mysql" ]; then sed -e "s/#Apache::DBI->connect_on_init('DBI:mysql:otrs', 'otrs', 'some-pass');/Apache::DBI->connect_on_init('DBI:mysql:${DB_NAME}', '${DB_USER}', '${DB_PASS}');/g s/#use Apache/use Apache/g " -i ${MY_SERVERCONFIGDIR}/${APACHE_VER}-${APACHE_DIR}-perl-startup.pl echo "Creating and populating database. You will now be prompted for your database password" mysql -u root -e "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost' IDENTIFIED BY '$DB_PASS' WITH GRANT OPTION;" mysql -u ${DB_USER} -p -e "CREATE DATABASE ${DB_NAME}" mysql -u ${DB_USER} -p ${DB_NAME} < ${VHOST_ROOT}/otrs-schema.mysql.sql mysql -u ${DB_USER} -p ${DB_NAME} < ${VHOST_ROOT}/initial_insert.sql /etc/init.d/mysql restart else # PostgreSQL sed -e "s/#Apache::DBI->connect_on_init('DBI:mysql:otrs', 'otrs', 'some-pass');/Apache::DBI->connect_on_init('DBI:Pg:${DB_NAME}', '${DB_USER}', '${DB_PASS}');/g s/#use Apache/use Apache/g s/use DBD::mysql/use DBD::Pg/ " -i ${MY_SERVERCONFIGDIR}/${APACHE_VER}-${APACHE_DIR}-perl-startup.pl sed -e "s/# \$Self->{DatabaseDSN} = \"DBI:Pg:dbname=\$Self->{Database};\";/\$Self->{DatabaseDSN} = \"DBI:Pg:dbname=\$Self->{Database};\";/" -i ${MY_FILE} sed -e "s/\$Self->{DatabaseDSN} = \"DBI:mysql:database=\$Self->{Database};host=\$Self->{DatabaseHost};\";/#\$Self->{DatabaseDSN} = \"DBI:mysql:database=\$Self->{Database};host=\$Self->{DatabaseHost};\";/" -i ${MY_FILE} echo "Creating and populating database. You will now be prompted to reenter the password" createuser ${DB_USER} -d -A -U postgres -P createdb -U ${DB_USER} -O ${DB_USER} ${DB_NAME} psql -U ${DB_USER} ${DB_NAME} < ${VHOST_ROOT}/otrs-schema.postgresql.sql psql -U ${DB_USER} ${DB_NAME} < ${VHOST_ROOT}/initial_insert.sql /etc/init.d/postgresql restart fi fi # reconfigure the installation MY_VHOST=`basename ${VHOST_ROOT}` sed -e "s/VIRTUAL/${MY_VHOST_ROOT}/g s/Alias \/otrs-web\//Alias \/otrs-web\/ \"${MY_INST}\/\"/g s/VHOST/${MY_VHOST}/ s/SERVER/${MY_VHOST}/ s/Perlrequire/Perlrequire \/etc\/${APACHE_DIR}\/conf${APACHE_MOD}\/${APACHE_VER}-${APACHE_DIR}-perl-startup.pl/" -i ${MY_SERVERCONFIGDIR}/${APACHE_VER}-${APACHE_DIR}-httpd.include.conf for A in ${MY_FILE} ${MY_SERVERCONFIGDIR}/${APACHE_VER}-${APACHE_DIR}-perl-startup.pl ; do sed -e "s/\/opt\/otrs/${MY_VHOST_ROOT}/g" -i ${A} done for A in ${VHOST_ROOT}/var/cron/*; do sed -e "s/\$HOME/${MY_VHOST_ROOT}\/cgi-bin/g" -i ${A} done # since bin is installed in cgi-bin, we need to fix the location of libs for A in ${VHOST_ROOT}/cgi-bin/bin/*; do sed -e "s/use lib dirname(\$RealBin);$/use lib dirname(\$RealBin).\"\/..\/\";/ s/Kernel\/cpan-lib/..\/Kernel\/cpan-lib/ " -i ${A} done else echo $1 fi