diff --git a/configure b/configure index d4b94d0..e6203a1 100755 --- a/configure +++ b/configure @@ -621,6 +621,7 @@ ac_subst_vars='LTLIBOBJS LIBOBJS +LIBEXECDIR DATADIR CFGDIR PSQL_CONFIG @@ -4564,6 +4565,30 @@ + +libexec_dir=`echo $libexecdir | grep prefix` + +if test -n "$libexec_dir"; then + if test "$prefix" = "NONE" + then + libexec_dir="$ac_default_prefix/libexec" + else + libexec_dir="$prefix/libexec" + fi +else + libexec_dir="$libexecdir" +fi + +LIBEXECDIR=$libexec_dir + + +cat >>confdefs.h <<_ACEOF +#define LIBEXECDIR "$libexec_dir" +_ACEOF + + + + cat >>confdefs.h <<_ACEOF #define VIRUS_TEMPLATE "$my_prefix/share/clapf/template.virus" _ACEOF diff --git a/configure.in b/configure.in index baba848..81c5363 100644 --- a/configure.in +++ b/configure.in @@ -310,6 +310,27 @@ AC_SUBST(DATADIR) AC_DEFINE_UNQUOTED(DATADIR,"$data_dir",[where to look for the data files]) + +dnl configure libexec directory + +libexec_dir=`echo $libexecdir | grep prefix` + +if test -n "$libexec_dir"; then + if test "$prefix" = "NONE" + then + libexec_dir="$ac_default_prefix/libexec" + else + libexec_dir="$prefix/libexec" + fi +else + libexec_dir="$libexecdir" +fi + +LIBEXECDIR=$libexec_dir +AC_SUBST(LIBEXECDIR) +AC_DEFINE_UNQUOTED(LIBEXECDIR,"$libexec_dir",[where to look for the piler helpers]) + + AC_DEFINE_UNQUOTED(VIRUS_TEMPLATE, "$my_prefix/share/clapf/template.virus", [where the virus template is]) AC_DEFINE_UNQUOTED(ZOMBIE_NET_REGEX, "$my_prefix/share/clapf/zombienets.regex", [where the virus template is]) diff --git a/init.d/Makefile.in b/init.d/Makefile.in index 6083465..560f5eb 100644 --- a/init.d/Makefile.in +++ b/init.d/Makefile.in @@ -29,6 +29,8 @@ install: + $(INSTALL) -m 0755 $(srcdir)/rc.piler $(DESTDIR)/etc/init.d/rc.piler + $(INSTALL) -m 0755 $(srcdir)/rc.searchd $(DESTDIR)/etc/init.d/rc.searchd clean: rm -f rc.piler rc.pilergetd rc.searchd diff --git a/util/Makefile.in b/util/Makefile.in index 48fa53a..0f54b72 100644 --- a/util/Makefile.in +++ b/util/Makefile.in @@ -25,6 +25,8 @@ INSTALL = @INSTALL@ all: + sed -e "s%BINDIR%$(bindir)%" -e "s%__SYSCONFDIR%$(sysconfdir)%" -e "s%__LOCALSTATEDIR%$($localstatedir)%" -e "s%__LIBEXECDIR%$($libexecdir)%" $(srcdir)/postinstall.sh.in > $(srcdir)/postinstall.sh + install: $(INSTALL) -m 0755 $(srcdir)/daily-report.php $(DESTDIR)$(libexecdir)/piler @@ -33,6 +35,7 @@ $(INSTALL) -m 0755 $(srcdir)/indexer.delta.sh $(DESTDIR)$(libexecdir)/piler $(INSTALL) -m 0755 $(srcdir)/indexer.main.sh $(DESTDIR)$(libexecdir)/piler $(INSTALL) -m 0755 $(srcdir)/import.sh $(DESTDIR)$(libexecdir)/piler + $(INSTALL) -m 0755 $(srcdir)/postinstall.sh $(DESTDIR)$(libexecdir)/piler clean: diff --git a/util/postinstall.sh b/util/postinstall.sh deleted file mode 100755 index fb66550..0000000 --- a/util/postinstall.sh +++ /dev/null @@ -1,293 +0,0 @@ -#!/bin/sh - - -INDEXER=`which indexer 2>/dev/null` -SEARCHD=`which searchd 2>/dev/null` -CRON_ORIG="/tmp/crontab.piler.orig" -CRON_TMP="/tmp/crontab.piler" -PILERCONF_TMP="/tmp/config.piler.88" - -. ./util/utilfunc.sh - - -preinstall_check() { - check_user root - - if [ "x$INDEXER" = "x" ]; then "ERROR: cannot find sphinx indexer"; echo ""; exit ; fi - - if [ "x$SEARCHD" = "x" ]; then "ERROR: cannot find sphinx searchd"; echo ""; exit 0; fi - - if [ -f $KEYFILE ]; then echo "ERROR: found existing keyfile ($KEYFILE), aborting install"; echo ""; exit 0; fi -} - - -gather_webserver_data() { - askNonBlank "Please enter the path of your documentroot" "$DOCROOT" - DOCROOT=$response - - if [ -d $DOCROOT ]; then echo "ERROR: vhost docroot should NOT exist, abroting install"; echo ""; exit 0; fi - - askNonBlank "Please enter the webserver groupname" "$WWWGROUP" - WWWGROUP=$response -} - - -gather_mysql_account() { - - askNonBlank "Please enter mysql hostname" "$MYSQL_HOSTNAME" - MYSQL_HOSTNAME=$response - - askNonBlank "Please enter mysql database" "$MYSQL_DATABASE" - MYSQL_DATABASE=$response - - askNonBlank "Please enter mysql user name" "$MYSQL_USERNAME" - MYSQL_USERNAME=$response - - askNonBlankNoEcho "Please enter mysql password for $MYSQL_USERNAME" "" - MYSQL_PASSWORD=$response - - askNonBlankNoEcho "Please enter mysql root password" "" - MYSQL_ROOT_PASSWORD=$response - - s=`echo "use information_schema; select TABLE_NAME from TABLES where TABLE_SCHEMA='$MYSQL_DATABASE'" | mysql -h $MYSQL_HOSTNAME -u root --password=$MYSQL_ROOT_PASSWORD` - if [ $? -eq 0 ]; - then - echo "mysql connection successful"; echo; - if [ `echo $s | grep -c metadata` -eq 1 ]; then echo "ERROR: Detected metadata table in $MYSQL_DATABASE. Aborting"; exit 0; fi - else - echo "ERROR: failed to connect to mysql"; - gather_mysql_account - fi - -} - - -gather_sphinx_data() { - - if [ $INDEXER = "/usr/bin/indexer" ]; then SPHINXCFG="/etc/sphinx.conf"; fi - - askNonBlank "Please enter the path of sphinx.conf" "$SPHINXCFG" - SPHINXCFG=$response -} - - -gather_smtp_relay_data() { - ask "Please enter smtp relay" "$SMARTHOST" - SMARTHOST=$response - - ask "Please enter smtp relay port" "$SMARTHOST_PORT" - SMARTHOST_PORT=$response -} - - -make_cron_entries() { - - crontab -u $PILERUSER -l > $CRON_ORIG - - grep PILERSTART $CRON_ORIG > /dev/null 2>&1 - if [ $? != 0 ]; then - cat /dev/null > $CRON_ORIG - fi - - grep PILEREND $CRON_ORIG > /dev/null 2>&1 - if [ $? != 0 ]; then - cat /dev/null > $CRON_ORIG - fi - - - rm -f $CRON_TMP - - echo "" - echo "### PILERSTART" >> $CRON_TMP - echo "*/5 * * * * LC_ALL=C mpstat | tail -1 | awk '{print \$11}' > $LOCALSTATEDIR/piler/stat/cpu.stat" >> $CRON_TMP - - echo "5,35 * * * * $LIBEXECDIR/piler/indexer.delta.sh" >> $CRON_TMP - echo "30 2 * * * $LIBEXECDIR/piler/indexer.main.sh" >> $CRON_TMP - echo "*/15 * * * * $INDEXER --quiet tag1 --rotate" >> $CRON_TMP - echo "*/15 * * * * $INDEXER --quiet note1 --rotate" >> $CRON_TMP - echo "30 6 * * * /usr/bin/php $LIBEXECDIR/piler/generate_stats.php $DOCROOT" >> $CRON_TMP - - echo "### PILEREND" >> $CRON_TMP -} - - -make_new_key() { - dd if=/dev/urandom bs=56 count=1 of=$KEYTMPFILE 2>/dev/null - - if [ `stat -c '%s' $KEYTMPFILE` -ne 56 ]; then echo "could not read 56 bytes from /dev/urandom to $KEYTMPFILE"; exit 1; fi -} - - -show_summary() { - echo - echo - echo "INSTALLATION SUMMARY:" - echo - - echo "piler user: $PILERUSER" - echo "keyfile: $KEYFILE" - echo - - echo "mysql host: $MYSQL_HOSTNAME" - echo "mysql database: $MYSQL_DATABASE" - echo "mysql username: $MYSQL_USERNAME" - echo "mysql password: *******" - echo - - echo "sphinx indexer: $INDEXER" - echo "sphinx config file: $SPHINXCFG" - echo - - echo "vhost docroot: $DOCROOT" - echo "www group: $WWWGROUP" - echo - - echo "smtp relay host: $SMARTHOST" - echo "smtp relay port: $SMARTHOST_PORT" - echo - - echo "piler crontab:" - cat $CRON_TMP - echo; echo; - - askYN "Correct? [Y/N]" "N" - if [ $response != "yes" ]; then - echo "Aborted." - exit - fi - -} - - -execute_post_install_tasks() { - - askYN "Continue and modify system? [Y/N]" "N" - if [ $response != "yes" ]; then - echo "Aborted." - exit - fi - - echo; - echo -n "Creating mysql database... "; - sed -e "s%MYSQL_HOSTNAME%$MYSQL_HOSTNAMEg%" -e "s%MYSQL_DATABASE%$MYSQL_DATABASE%g" -e "s%MYSQL_USERNAME%$MYSQL_USERNAME%g" -e "s%MYSQL_PASSWORD%$MYSQL_PASSWORD%g" util/db-mysql-root.sql.in | mysql -h $MYSQL_HOSTNAME -u root --password=$MYSQL_ROOT_PASSWORD - mysql -h $MYSQL_HOSTNAME -u $MYSQL_USERNAME --password=$MYSQL_PASSWORD $MYSQL_DATABASE < util/db-mysql.sql - echo "Done." - - echo -n "Overwriting sphinx configuration... "; - sed -e "s%MYSQL_HOSTNAME%$MYSQL_HOSTNAME%" -e "s%MYSQL_DATABASE%$MYSQL_DATABASE%" -e "s%MYSQL_USERNAME%$MYSQL_USERNAME%" -e "s%MYSQL_PASSWORD%$MYSQL_PASSWORD%" etc/sphinx.conf.in > etc/sphinx.conf - cp etc/sphinx.conf $SPHINXCFG - echo "Done." - - echo -n "Initializing sphinx indices... "; - su $PILERUSER -c "indexer --all" - echo "Done." - - - echo -n "installing cron entries for $PILERUSER... " - crontab -u $PILERUSER $CRON_TMP - echo "Done." - - - echo -n "installing keyfile ($KEYTMPFILE) to $KEYFILE... " - cp $KEYTMPFILE $KEYFILE - chgrp $PILERUSER $KEYFILE - chmod 640 $KEYFILE - rm -f $KEYTMPFILE - echo "Done." - - sed "s/mysqlpwd=verystrongpassword/mysqlpwd=$MYSQL_PASSWORD/" $SYSCONFDIR/piler.conf > $PILERCONF_TMP - cat $PILERCONF_TMP > $SYSCONFDIR/piler.conf - rm -f $PILERCONF_TMP - - chmod 755 $LOCALSTATEDIR/piler/stat - - echo -n "Copying www files to $DOCROOT... " - mkdir -p $DOCROOT || exit 1 - - cp -R webui/* $DOCROOT - cp -R webui/.htaccess $DOCROOT - chmod 770 $DOCROOT/tmp $DOCROOT/images - chgrp $WWWGROUP $DOCROOT/tmp - - echo " $DOCROOT/config-site.php - echo >> $DOCROOT/config-site.php - - echo "\$config['SITE_NAME'] = '$HOSTNAME';" >> $DOCROOT/config-site.php - echo "\$config['SITE_URL'] = 'http://$HOSTNAME/';" >> $DOCROOT/config-site.php - echo "\$config['DIR_BASE'] = '$DOCROOT/';" >> $DOCROOT/config-site.php - - echo >> $DOCROOT/config-site.php - - echo "\$config['ENABLE_SYSLOG'] = 1;" >> $DOCROOT/config-site.php - - echo >> $DOCROOT/config-site.php - - echo "\$config['SMTP_DOMAIN'] = '$HOSTNAME';" >> $DOCROOT/config-site.php - echo "\$config['SMTP_FROMADDR'] = 'no-reply@$HOSTNAME';" >> $DOCROOT/config-site.php - echo "\$config['ADMIN_EMAIL'] = 'admin@$HOSTNAME';" >> $DOCROOT/config-site.php - - echo >> $DOCROOT/config-site.php - - echo "\$config['DB_DRIVER'] = 'mysql';" >> $DOCROOT/config-site.php - echo "\$config['DB_PREFIX'] = '';" >> $DOCROOT/config-site.php - echo "\$config['DB_HOSTNAME'] = '$MYSQL_HOSTNAME';" >> $DOCROOT/config-site.php - echo "\$config['DB_USERNAME'] = '$MYSQL_USERNAME';" >> $DOCROOT/config-site.php - echo "\$config['DB_PASSWORD'] = '$MYSQL_PASSWORD';" >> $DOCROOT/config-site.php - echo "\$config['DB_DATABASE'] = '$MYSQL_DATABASE';" >> $DOCROOT/config-site.php - - echo >> $DOCROOT/config-site.php - - echo "\$config['SMARTHOST'] = '$SMARTHOST';" >> $DOCROOT/config-site.php - echo "\$config['SMARTHOST_PORT'] = $SMARTHOST_PORT;" >> $DOCROOT/config-site.php - - echo >> $DOCROOT/config-site.php - - echo "?>" >> $DOCROOT/config-site.php - - echo "Done." - -} - - -clean_up_temp_stuff() { - rm -f $CRON_TMP - - echo; echo "Done post installation tasks."; echo -} - - -load_default_values - - -if [ $# -ne 5 ]; then usage; fi - -PILERUSER=$1 -PILERGROUP=$2 -SYSCONFDIR=$3 -LOCALSTATEDIR=$4 -LIBEXECDIR=$5 - -#LOGFILE="/tmp/piler-install.log.$$" -#touch $LOGFILE -#chmod 600 $LOGFILE - -preinstall_check - -display_install_intro - -gather_webserver_data -gather_mysql_account -gather_sphinx_data -gather_smtp_relay_data - - -make_cron_entries -make_new_key - -show_summary - -execute_post_install_tasks - -clean_up_temp_stuff - - diff --git a/util/postinstall.sh.in b/util/postinstall.sh.in new file mode 100755 index 0000000..0056dc7 --- /dev/null +++ b/util/postinstall.sh.in @@ -0,0 +1,447 @@ +#!/bin/sh + + +INDEXER=`which indexer 2>/dev/null` +SEARCHD=`which searchd 2>/dev/null` +CRON_ORIG="/tmp/crontab.piler.orig" +CRON_TMP="/tmp/crontab.piler" +PILERCONF_TMP="/tmp/config.piler.88" + + +load_default_values() { + PILERUSER="piler" + PILERGROUP="piler" + SYSCONFDIR=__SYSCONFDIR + LOCALSTATEDIR=__LOCALSTATEDIR + LIBEXECDIR=__LIBEXECDIR + + KEYTMPFILE="piler.key" + KEYFILE="$SYSCONFDIR/piler.key" + + HOSTNAME=`hostname --fqdn` + + MYSQL_HOSTNAME="localhost" + MYSQL_DATABASE="piler" + MYSQL_USERNAME="piler" + MYSQL_PASSWORD="" + MYSQL_ROOT_PASSWORD="" + + SPHINXCFG="/usr/local/etc/sphinx.conf" + + WWWGROUP="apache" + DOCROOT="/var/www/$HOSTNAME" + + SMARTHOST="" + SMARTHOST_PORT=25 + + SSL_CERT_DATA="/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" +} + + +make_certificate() { + if [ ! -f $SYSCONFDIR/piler.pem ]; then + echo -n "Making an ssl certificate ... " + openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj "$SSL_CERT_DATA" -keyout $SYSCONFDIR/piler.pem -out 1.cert + cat 1.cert >> $SYSCONFDIR/piler.pem + chmod 600 $SYSCONFDIR/piler.pem + rm 1.cert + fi +} + + +display_install_intro() { + echo "" + echo "" + echo "This is the postinstall utility for piler" + echo "It should be run only at the first install. DO NOT run on an existing piler installation!" + echo "" + + askYN "Continue? [Y/N]" "N" + if [ $response != "yes" ]; then + echo "Aborted." + exit + fi + + echo "" +} + + +check_user() { + user=$1 + + if [ x`whoami` != x$user ]; then echo "ERROR: postinstaller must be run as $user user"; exit 1; fi +} + + +isFQDN() { + # we need min. 2 dots + if [ x"$1" = "xdogfood" ]; then + echo 1 + return + fi + + if [ x"$1" = "x" ]; then + echo 0 + return + fi + + NF=`echo $1 | awk -F. '{print NF}'` + if [ $NF -ge 2 ]; then + echo 1 + else + echo 0 + fi +} + + +ask() { + PROMPT=$1 + DEFAULT=$2 + + echo "" + echo -n "$PROMPT [$DEFAULT] " + read response + + if [ -z $response ]; then + response=$DEFAULT + fi +} + + +askNonBlankNoEcho() { + PROMPT=$1 + DEFAULT=$2 + + while [ 1 ]; do + stty -echo + ask "$PROMPT" "$DEFAULT" + stty echo + echo "" + if [ ! -z $response ]; then + break + fi + echo "A non-blank answer is required" + done +} + + +askNonBlank() { + PROMPT=$1 + DEFAULT=$2 + + while [ 1 ]; do + ask "$PROMPT" "$DEFAULT" + if [ ! -z $response ]; then + break + fi + echo "A non-blank answer is required" + done +} + + +askYN() { + PROMPT=$1 + DEFAULT=$2 + + if [ "x$DEFAULT" = "xyes" -o "x$DEFAULT" = "xYes" -o "x$DEFAULT" = "xy" -o "x$DEFAULT" = "xY" ]; then + DEFAULT="Y" + else + DEFAULT="N" + fi + + while [ 1 ]; do + ask "$PROMPT" "$DEFAULT" + response=$(perl -e "print lc(\"$response\");") + if [ -z $response ]; then + : + else + if [ $response = "yes" -o $response = "y" ]; then + response="yes" + break + else + if [ $response = "no" -o $response = "n" ]; then + response="no" + break + fi + fi + fi + echo "A Yes/No answer is required" + done +} + + +preinstall_check() { + check_user root + + if [ "x$INDEXER" = "x" ]; then "ERROR: cannot find sphinx indexer"; echo ""; exit ; fi + + if [ "x$SEARCHD" = "x" ]; then "ERROR: cannot find sphinx searchd"; echo ""; exit 0; fi + + if [ -f $KEYFILE ]; then echo "ERROR: found existing keyfile ($KEYFILE), aborting install"; echo ""; exit 0; fi +} + + +gather_webserver_data() { + askNonBlank "Please enter the path of your documentroot" "$DOCROOT" + DOCROOT=$response + + if [ -d $DOCROOT ]; then echo "ERROR: vhost docroot should NOT exist, abroting install"; echo ""; exit 0; fi + + askNonBlank "Please enter the webserver groupname" "$WWWGROUP" + WWWGROUP=$response +} + + +gather_mysql_account() { + + askNonBlank "Please enter mysql hostname" "$MYSQL_HOSTNAME" + MYSQL_HOSTNAME=$response + + askNonBlank "Please enter mysql database" "$MYSQL_DATABASE" + MYSQL_DATABASE=$response + + askNonBlank "Please enter mysql user name" "$MYSQL_USERNAME" + MYSQL_USERNAME=$response + + askNonBlankNoEcho "Please enter mysql password for $MYSQL_USERNAME" "" + MYSQL_PASSWORD=$response + + askNonBlankNoEcho "Please enter mysql root password" "" + MYSQL_ROOT_PASSWORD=$response + + s=`echo "use information_schema; select TABLE_NAME from TABLES where TABLE_SCHEMA='$MYSQL_DATABASE'" | mysql -h $MYSQL_HOSTNAME -u root --password=$MYSQL_ROOT_PASSWORD` + if [ $? -eq 0 ]; + then + echo "mysql connection successful"; echo; + if [ `echo $s | grep -c metadata` -eq 1 ]; then echo "ERROR: Detected metadata table in $MYSQL_DATABASE. Aborting"; exit 0; fi + else + echo "ERROR: failed to connect to mysql"; + gather_mysql_account + fi + +} + + +gather_sphinx_data() { + + if [ $INDEXER = "/usr/bin/indexer" ]; then SPHINXCFG="/etc/sphinx.conf"; fi + + askNonBlank "Please enter the path of sphinx.conf" "$SPHINXCFG" + SPHINXCFG=$response +} + + +gather_smtp_relay_data() { + ask "Please enter smtp relay" "$SMARTHOST" + SMARTHOST=$response + + ask "Please enter smtp relay port" "$SMARTHOST_PORT" + SMARTHOST_PORT=$response +} + + +make_cron_entries() { + + crontab -u $PILERUSER -l > $CRON_ORIG + + grep PILERSTART $CRON_ORIG > /dev/null 2>&1 + if [ $? != 0 ]; then + cat /dev/null > $CRON_ORIG + fi + + grep PILEREND $CRON_ORIG > /dev/null 2>&1 + if [ $? != 0 ]; then + cat /dev/null > $CRON_ORIG + fi + + + rm -f $CRON_TMP + + echo "" + echo "### PILERSTART" >> $CRON_TMP + echo "*/5 * * * * LC_ALL=C mpstat | tail -1 | awk '{print \$11}' > $LOCALSTATEDIR/piler/stat/cpu.stat" >> $CRON_TMP + + echo "5,35 * * * * $LIBEXECDIR/piler/indexer.delta.sh" >> $CRON_TMP + echo "30 2 * * * $LIBEXECDIR/piler/indexer.main.sh" >> $CRON_TMP + echo "*/15 * * * * $INDEXER --quiet tag1 --rotate" >> $CRON_TMP + echo "*/15 * * * * $INDEXER --quiet note1 --rotate" >> $CRON_TMP + echo "30 6 * * * /usr/bin/php $LIBEXECDIR/piler/generate_stats.php $DOCROOT" >> $CRON_TMP + + echo "### PILEREND" >> $CRON_TMP +} + + +make_new_key() { + dd if=/dev/urandom bs=56 count=1 of=$KEYTMPFILE 2>/dev/null + + if [ `stat -c '%s' $KEYTMPFILE` -ne 56 ]; then echo "could not read 56 bytes from /dev/urandom to $KEYTMPFILE"; exit 1; fi +} + + +show_summary() { + echo + echo + echo "INSTALLATION SUMMARY:" + echo + + echo "piler user: $PILERUSER" + echo "keyfile: $KEYFILE" + echo + + echo "mysql host: $MYSQL_HOSTNAME" + echo "mysql database: $MYSQL_DATABASE" + echo "mysql username: $MYSQL_USERNAME" + echo "mysql password: *******" + echo + + echo "sphinx indexer: $INDEXER" + echo "sphinx config file: $SPHINXCFG" + echo + + echo "vhost docroot: $DOCROOT" + echo "www group: $WWWGROUP" + echo + + echo "smtp relay host: $SMARTHOST" + echo "smtp relay port: $SMARTHOST_PORT" + echo + + echo "piler crontab:" + cat $CRON_TMP + echo; echo; + + askYN "Correct? [Y/N]" "N" + if [ $response != "yes" ]; then + echo "Aborted." + exit + fi + +} + + +execute_post_install_tasks() { + + askYN "Continue and modify system? [Y/N]" "N" + if [ $response != "yes" ]; then + echo "Aborted." + exit + fi + + echo; + echo -n "Creating mysql database... "; + sed -e "s%MYSQL_HOSTNAME%$MYSQL_HOSTNAMEg%" -e "s%MYSQL_DATABASE%$MYSQL_DATABASE%g" -e "s%MYSQL_USERNAME%$MYSQL_USERNAME%g" -e "s%MYSQL_PASSWORD%$MYSQL_PASSWORD%g" util/db-mysql-root.sql.in | mysql -h $MYSQL_HOSTNAME -u root --password=$MYSQL_ROOT_PASSWORD + mysql -h $MYSQL_HOSTNAME -u $MYSQL_USERNAME --password=$MYSQL_PASSWORD $MYSQL_DATABASE < util/db-mysql.sql + echo "Done." + + echo -n "Overwriting sphinx configuration... "; + sed -e "s%MYSQL_HOSTNAME%$MYSQL_HOSTNAME%" -e "s%MYSQL_DATABASE%$MYSQL_DATABASE%" -e "s%MYSQL_USERNAME%$MYSQL_USERNAME%" -e "s%MYSQL_PASSWORD%$MYSQL_PASSWORD%" etc/sphinx.conf.in > etc/sphinx.conf + cp etc/sphinx.conf $SPHINXCFG + echo "Done." + + echo -n "Initializing sphinx indices... "; + su $PILERUSER -c "indexer --all" + echo "Done." + + + echo -n "installing cron entries for $PILERUSER... " + crontab -u $PILERUSER $CRON_TMP + echo "Done." + + + echo -n "installing keyfile ($KEYTMPFILE) to $KEYFILE... " + cp $KEYTMPFILE $KEYFILE + chgrp $PILERUSER $KEYFILE + chmod 640 $KEYFILE + rm -f $KEYTMPFILE + echo "Done." + + make_certificate + + sed "s/mysqlpwd=verystrongpassword/mysqlpwd=$MYSQL_PASSWORD/" $SYSCONFDIR/piler.conf > $PILERCONF_TMP + cat $PILERCONF_TMP > $SYSCONFDIR/piler.conf + rm -f $PILERCONF_TMP + + chmod 755 $LOCALSTATEDIR/piler/stat + + echo -n "Copying www files to $DOCROOT... " + mkdir -p $DOCROOT || exit 1 + + cp -R webui/* $DOCROOT + cp -R webui/.htaccess $DOCROOT + chmod 770 $DOCROOT/tmp $DOCROOT/images + chgrp $WWWGROUP $DOCROOT/tmp + + echo " $DOCROOT/config-site.php + echo >> $DOCROOT/config-site.php + + echo "\$config['SITE_NAME'] = '$HOSTNAME';" >> $DOCROOT/config-site.php + echo "\$config['SITE_URL'] = 'http://$HOSTNAME/';" >> $DOCROOT/config-site.php + echo "\$config['DIR_BASE'] = '$DOCROOT/';" >> $DOCROOT/config-site.php + + echo >> $DOCROOT/config-site.php + + echo "\$config['ENABLE_SYSLOG'] = 1;" >> $DOCROOT/config-site.php + + echo >> $DOCROOT/config-site.php + + echo "\$config['SMTP_DOMAIN'] = '$HOSTNAME';" >> $DOCROOT/config-site.php + echo "\$config['SMTP_FROMADDR'] = 'no-reply@$HOSTNAME';" >> $DOCROOT/config-site.php + echo "\$config['ADMIN_EMAIL'] = 'admin@$HOSTNAME';" >> $DOCROOT/config-site.php + + echo >> $DOCROOT/config-site.php + + echo "\$config['DB_DRIVER'] = 'mysql';" >> $DOCROOT/config-site.php + echo "\$config['DB_PREFIX'] = '';" >> $DOCROOT/config-site.php + echo "\$config['DB_HOSTNAME'] = '$MYSQL_HOSTNAME';" >> $DOCROOT/config-site.php + echo "\$config['DB_USERNAME'] = '$MYSQL_USERNAME';" >> $DOCROOT/config-site.php + echo "\$config['DB_PASSWORD'] = '$MYSQL_PASSWORD';" >> $DOCROOT/config-site.php + echo "\$config['DB_DATABASE'] = '$MYSQL_DATABASE';" >> $DOCROOT/config-site.php + + echo >> $DOCROOT/config-site.php + + echo "\$config['SMARTHOST'] = '$SMARTHOST';" >> $DOCROOT/config-site.php + echo "\$config['SMARTHOST_PORT'] = $SMARTHOST_PORT;" >> $DOCROOT/config-site.php + + echo >> $DOCROOT/config-site.php + + echo "?>" >> $DOCROOT/config-site.php + + echo "Done." + +} + + +clean_up_temp_stuff() { + rm -f $CRON_TMP + + echo; echo "Done post installation tasks."; echo +} + + +load_default_values + + +#LOGFILE="/tmp/piler-install.log.$$" +#touch $LOGFILE +#chmod 600 $LOGFILE + +preinstall_check + +display_install_intro + +gather_webserver_data +gather_mysql_account +gather_sphinx_data +gather_smtp_relay_data + + +make_cron_entries +make_new_key + +show_summary + +execute_post_install_tasks + +clean_up_temp_stuff + + diff --git a/util/utilfunc.sh b/util/utilfunc.sh deleted file mode 100644 index 1bfe7a8..0000000 --- a/util/utilfunc.sh +++ /dev/null @@ -1,155 +0,0 @@ -#!/bin/sh - - -usage() { - echo "usage: $0 "; - exit 1; -} - - -load_default_values() { - PILERUSER="piler" - SYSCONFDIR="/usr/local/etc" - LOCALSTATEDIR="/var" - LIBEXECDIR="/usr/local/libexec" - - KEYTMPFILE="piler.key" - KEYFILE="$SYSCONFDIR/piler.key" - - HOSTNAME=`hostname --fqdn` - - MYSQL_HOSTNAME="localhost" - MYSQL_DATABASE="piler" - MYSQL_USERNAME="piler" - MYSQL_PASSWORD="" - MYSQL_ROOT_PASSWORD="" - - SPHINXCFG="/usr/local/etc/sphinx.conf" - - WWWGROUP="apache" - DOCROOT="/var/www/$HOSTNAME" - - SMARTHOST="" - SMARTHOST_PORT=25 -} - - -display_install_intro() { - echo "" - echo "" - echo "This is the postinstall utility for piler" - echo "It should be run only at the first install. DO NOT run on an existing piler installation!" - echo "" - - askYN "Continue? [Y/N]" "N" - if [ $response != "yes" ]; then - echo "Aborted." - exit - fi - - echo "" -} - - -check_user() { - user=$1 - - if [ x`whoami` != x$user ]; then echo "ERROR: postinstaller must be run as $user user"; exit 1; fi -} - - -isFQDN() { - # we need min. 2 dots - if [ x"$1" = "xdogfood" ]; then - echo 1 - return - fi - - if [ x"$1" = "x" ]; then - echo 0 - return - fi - - NF=`echo $1 | awk -F. '{print NF}'` - if [ $NF -ge 2 ]; then - echo 1 - else - echo 0 - fi -} - - -ask() { - PROMPT=$1 - DEFAULT=$2 - - echo "" - echo -n "$PROMPT [$DEFAULT] " - read response - - if [ -z $response ]; then - response=$DEFAULT - fi -} - - -askNonBlankNoEcho() { - PROMPT=$1 - DEFAULT=$2 - - while [ 1 ]; do - stty -echo - ask "$PROMPT" "$DEFAULT" - stty echo - echo "" - if [ ! -z $response ]; then - break - fi - echo "A non-blank answer is required" - done -} - -askNonBlank() { - PROMPT=$1 - DEFAULT=$2 - - while [ 1 ]; do - ask "$PROMPT" "$DEFAULT" - if [ ! -z $response ]; then - break - fi - echo "A non-blank answer is required" - done -} - -askYN() { - PROMPT=$1 - DEFAULT=$2 - - if [ "x$DEFAULT" = "xyes" -o "x$DEFAULT" = "xYes" -o "x$DEFAULT" = "xy" -o "x$DEFAULT" = "xY" ]; then - DEFAULT="Y" - else - DEFAULT="N" - fi - - while [ 1 ]; do - ask "$PROMPT" "$DEFAULT" - response=$(perl -e "print lc(\"$response\");") - if [ -z $response ]; then - : - else - if [ $response = "yes" -o $response = "y" ]; then - response="yes" - break - else - if [ $response = "no" -o $response = "n" ]; then - response="no" - break - fi - fi - fi - echo "A Yes/No answer is required" - done -} - -