#!/bin/sh # Auto build script by DAPlugin.com # Website: http://www.daplugin.com # Forum: http://forum.daplugin.com # Version: 6.0.3 # Last Update: Dec 29, 2011 # Changelogs: http://forum.daplugin.com/index.php/topic,22.0.html # Development Mode, 0 = OFF, 1 = ON # When turned ON, the script will not start/stop/restart any daemon service DEV_MODE=0 # Feel free to change the version numebrs below if necessary # PhpExpress version PHPEXPRESS_VER=3.0 # JDK version # *** LINUX ONLY *** JDK_VER=6u21 # Diablo Caffe JDK Version to be downloaded from http://www.freebsdfoundation.org/downloads/java.shtml # *** FREEBSD ONLY *** CAFFE_VER=1.6.0_07-b02 # Apache Tomcat version TOMCAT_VER=6.0.32 # Apache Tomcat Admin Application version TOMCAT_ADMIN_VER=5.5.28 # Apache Ant version ANT_VER=1.8.2 # Apache Tomcat Connector (mod_jk) version MOD_JK_VER=1.2.32 # PostgreSQL version PG_VER=9.0.2 # phpPgAdmin version PG_ADMIN_VER=5.0.1 # Ruby version RUBY_VER=1.9.2-p136 # SQLite version SQLITE_VER=3.7.4 # RubyGems version GEMS_VER=1.3.7 # Passenger version PASSENGER_VER=3.0.2 # Rails version RAILS_VER=2.3.9 # FastCGI version FCGI_VER=2.4.0 # mod_fastcgi version # *** APACHE 1.3 ONLY *** MOD_FCGI_VER=2.4.6 # mod_fcgid version # *** APACHE 2.0 and 2.2 ONLY *** MOD_FCGID_VER=2.3.6 ################################################## # DO NOT MODIFY ANYMORE if [ ! -e distrov.php ] && [ "$1" != "update" ]; then echo -e "Script outdated. Please run \e[1;4;37m./daplugin.build update\e[0m" exit 0 fi # Default Mirror sites IONCUBE_MIRROR="http://downloads2.ioncube.com/loader_downloads" APACHE_MIRROR="http://www.apache.org/dist" PG_MIRROR="http://yum.pgsqlrpms.org" RUBY_MIRROR="ftp://ftp.ruby-lang.org/pub/ruby" GEMS_MIRROR="http://rubyforge.org/frs/download.php/57643" FCGI_MIRROR="http://fastcgi.com/dist" SQLITE_MIRROR="http://www.sqlite.org" WEB_PATH="http://files.daplugin.com" # Load custom mirrors from mirrors.sh to override default mirrors if [ -e mirrors.sh ]; then . mirrors.sh fi # Global Variables BASE_PATH="/usr/local/directadmin/daplugin.com" PLUGIN_PATH="/usr/local/directadmin/plugins" APPUSER="webapps" if [ `grep -c -e "^${APPUSER}:" /etc/passwd` = "0" ]; then APPUSER="apache" fi B64=0 FREEBSD=0 DEBIAN=0 FEDORA=0 REDHAT=0 PHP="/usr/local/bin/php" PERL="/usr/bin/perl" if [ -e /usr/lib64 ]; then B64=1 fi if [ "$1" != "update" ]; then if [ `uname` = "FreeBSD" ]; then FREEBSD=1 INIT_PATH=/usr/local/etc/rc.d DISTROV=`$PHP -n distrov.php freebsd` elif [ -e /etc/debian_version ]; then DEBIAN=1 INIT_PATH=/etc/init.d DISTROV=`$PHP -n distrov.php debian` elif [ -e /etc/fedora-release ]; then FEDORA=1 INIT_PATH=/etc/rc.d/init.d DISTROV=`$PHP -n distrov.php fedora` elif [ -e /etc/redhat-release ]; then REDHAT=1 INIT_PATH=/etc/rc.d/init.d DISTROV=`$PHP -n distrov.php redhat` else echo echo "Your OS is not supported." exit 0 fi fi DISTROV=${DISTROV:0:1} JAVA_HOME="/usr/local/java" TOMCAT_HOME="/usr/local/tomcat" ANT_HOME="/usr/local/ant" if [ $FREEBSD -eq 1 ]; then PG_HOME="/usr/usr/pgsql" PG_CONF_PATH="/usr/local/pgsql/data" else PG_HOME="/var/lib/pgsql" PG_CONF_PATH="/var/lib/pgsql/data" fi RUBY_HOME="/usr/local/lib/ruby" mkdir -p /etc/httpd/conf/extra HTTPD_CONF="/etc/httpd/conf/httpd.conf" WORKERS_PRO="/usr/local/tomcat/conf/jk/workers.properties" TOMCAT_USER="/usr/local/tomcat/conf/tomcat-users.xml" MOD_JK="/usr/lib/apache/mod_jk.so" MOD_JK_CONF="/etc/httpd/conf/extra/mod_jk.conf" MOD_FCGI_CONF="/etc/httpd/conf/extra/mod_fastcgi.conf" MOD_FCGID_CONF="/etc/httpd/conf/extra/mod_fcgid.conf" MOD_PASSENGER_CONF="/etc/httpd/conf/extra/mod_passenger.conf" RUBY="/usr/local/bin/ruby" RAILS="/usr/local/bin/rails" GEM="/usr/local/bin/gem" MONGREL="/usr/local/bin/mongrel_rails" PASSENGER="/usr/local/bin/passenger" FCGI_LIB="/usr/local/lib/libfcgi.so" MOD_FCGI="/etc/httpd/modules/mod_fastcgi.so" MOD_FCGID="/etc/httpd/modules/mod_fcgid.so" SQLITE="/usr/bin/sqlite3" DATOMCAT_HOME="/usr/local/directadmin/plugins/tomcat" DAPG_HOME="/usr/local/directadmin/plugins/pgsql" RID_HOME="/usr/local/directadmin/plugins/rails" IDM_HOME="/usr/local/directadmin/plugins/IDM" DEEP_HOME="/usr/local/directadmin/plugins/DeeperAdmin" PEAR_HOME="/usr/local/directadmin/plugins/pear" CUSTOM_PACK="/usr/local/directadmin/data/admin/custom_package_items.conf" ITEM_STR_TOMCAT="jsp=type=checkbox&string=JSP, Servlet Access" ITEM_STR_PG="pgsql=type=text&string=PostgreSQL Databases&desc=either integer or unlimited" ITEM_STR_RAILS="RoR=type=checkbox&string=Ruby on Rails Access" ITEM_STR_IDM="IDM=type=checkbox&string=IP Deny Manager" ITEM_TOMCAT="jsp" ITEM_PG="pgsql" ITEM_RAILS="RoR" ITEM_IDM="IDM" ITEM_STR="" ITEM="" LIC="" PLUGIN_USE_WWW=0 PLUGIN_USE_ENCODER=0 HAS_JAVA=0 HAS_TOMCAT=0 HAS_ANT=0 HAS_JK=0 HAS_PG=0 HAS_RUBY=0 HAS_GEM=0 HAS_MONGREL=0 HAS_PASSENGER=0 HAS_SQLITE=0 HAS_FCGI=0 HAS_MOD_FCGI=0 HAS_MOD_FCGID=0 HAS_PLUGIN=0 DO_ALL=0 USER_INPUT=1 INPUT_VALUE=d HTTPD_VER=`/usr/sbin/httpd -v | grep Apache | cut -d/ -f2 | cut -d" " -f1` PHP_VER=`$PHP -r "echo substr(phpversion(), 0, 3) > 4.4 ? (substr(phpversion(), 0, 3) > 5.2 ? 5.3 : 5.2) : 4.4;"` ################################################## # Functions function showHelp() { echo echo "*************************************" echo -e "* \e[1;37mDAPlugin Installer\e[0m *" echo "*************************************" echo echo -e " To build \e[1;4;37meverything\e[0m run:" echo " $0 all" echo echo -e " Build all \e[1;4;37mTomcat\e[0m, \e[1;4;37mPgSQL\e[0m or \e[1;4;37mRails\e[0m related stuffs:" echo " $0 tomcat_all" echo " $0 pgsql_all" echo " $0 rails_all" echo echo " Tomcat Related options:" echo " $0 java" echo " $0 tomcat" echo " $0 ant" echo " $0 mod_jk" echo " $0 da-tomcat" echo echo " PgSQL Related options:" echo " $0 pgsql (Redhat and Fedora ONLY)" echo " $0 phppgadmin" echo " $0 da-pgsql" echo echo " Rails Related options:" echo " $0 ruby" echo " $0 rubygems" echo " $0 gems (Will install this gems: rails, passenger, mongrel, postgres, mysql, fcgi" echo " $0 sqlite" echo " $0 fcgi" echo " $0 mod_fastcgi (Apache 1.3 ONLY)" echo " $0 mod_fcgid (Apache 2 and 2.2 ONLY)" echo " $0 rails_in_da" echo echo " DeeperAdmin options:" echo " $0 jail" echo " $0 deeperadmin" echo echo " Other plugin options:" echo " $0 idm" echo " $0 da-pear" echo echo " Update PhpExpress Loaders for any installed plugins:" echo " $0 loader {da-tomcat | da-pgsql | rails_in_da | idm | deeperadmin | da-pear}" echo echo " Fix/Update Wrapper:" echo " $0 wrapper {da-tomcat | da-pgsql | rails_in_da | idm | deeperadmin}" echo echo " Write package item to user.conf:" echo " $0 user_conf {jsp | pgsql | RoR | IDM} {username | all}" echo echo " Remove old packages data:" echo " $0 clean" echo echo " Get lastest build script" echo " $0 update" echo echo " You can pass a 2nd argument to automate the input" echo " $0 d : do the default action" echo " $0 y : answer yes to all questions" echo " $0 n : answer no to all questions" } function chkInstalled() { # 3 arguments if [ $# -eq 3 ]; then if [ ! -e $2 ] && [ ! -e $3 ]; then cd $BASE_PATH return 0 fi else if [ ! -e $2 ]; then cd $BASE_PATH return 0 fi fi case "$1" in Java) HAS_JAVA=1 ;; Tomcat) HAS_TOMCAT=1 ;; Ant) HAS_ANT=1 ;; mod_jk) HAS_JK=1 ;; PostgreSQL) HAS_PG=1 ;; Ruby) HAS_RUBY=1 ;; RubyGems) HAS_GEM=1 ;; Mongrel) HAS_MONGREL=1 ;; Passenger) HAS_PASSENGER=1 ;; SQLite) HAS_SQLITE=1 ;; FastCGI) HAS_FCGI=1 ;; mod_fastcgi) HAS_MOD_FCGI=1 ;; mod_fcgid) HAS_MOD_FCGID=1 ;; *) echo echo "*** Unknow option $1" exit 1 ;; esac if [ $USER_INPUT -eq 1 ]; then echo -n "$1 is already installed. Continue? (y/n): " read yesno else if [ "$INPUT_VALUE" = "d" ]; then yesno=y else yesno=$INPUT_VALUE fi fi if [ "$yesno" = "n" ]; then return 1 fi return 0 } function restartApache() { if [ $DEV_MODE -eq 0 ]; then echo $INIT_PATH/httpd restart fi } function doJava() { chkInstalled Java $JAVA_HOME if [ $? -ne 0 ]; then return $? fi if [ $FREEBSD -eq 1 ]; then if [ $B64 -eq 1 ]; then TARBALL=diablo-caffe-freebsd${DISTROV}-amd64-${CAFFE_VER}.tar.bz2 else TARBALL=diablo-caffe-freebsd${DISTROV}-i386-${CAFFE_VER}.tar.bz2 fi if [ ! -e $TARBALL ]; then echo echo "*** Please download the JDK for FreeBSD tarball from http://www.freebsdfoundation.org/downloads/java.shtml" echo "*** And place it in place it in $BASE_PATH/" exit 1 fi bunzip2 -fq $TARBALL if [ $HAS_JAVA -eq 1 ]; then rm -rf ${JAVA_HOME}/* else mkdir -p $JAVA_HOME fi cp -rp diablo-jdk${CAFFE_VER}/* $JAVA_HOME echo echo -e "\e[1;37mJDK $CAFFE_VER\e[0m installed." else if [ $B64 -eq 1 ]; then BIN=jdk-${JDK_VER}-linux-x64.bin else BIN=jdk-${JDK_VER}-linux-i586.bin fi if [ ! -e $BIN ]; then echo echo "*** Please download JDK ($BIN) from http://java.sun.com/javase/downloads/index.jsp" echo "*** And place it in $BASE_PATH/" exit 1 fi if [ $HAS_JAVA -eq 1 ]; then rm -rf ${JAVA_HOME}/* else mkdir -p $JAVA_HOME fi chmod 755 $BIN ./$BIN cp -rp jdk*.*.*_*/* $JAVA_HOME rm -f $BIN cd $BASE_PATH echo echo -e "\e[1;37mJDK $JDK_VER\e[0m installed." fi } function doTomcat() { chkInstalled Tomcat $TOMCAT_HOME if [ $? -ne 0 ]; then return $? fi echo rm -f tomcatd getFile $WEB_PATH/tomcat tomcatd 1 getFile ${APACHE_MIRROR}/tomcat/tomcat-${TOMCAT_VER:0:1}/v${TOMCAT_VER}/bin apache-tomcat-${TOMCAT_VER}.tar.gz 1 # getFile ${APACHE_MIRROR}/tomcat/tomcat-${TOMCAT_ADMIN_VER:0:1}/v$TOMCAT_ADMIN_VER/bin apache-tomcat-$TOMCAT_ADMIN_VER-admin.tar.gz 1 echo echo -n "Installing Tomcat to ${TOMCAT_HOME}..." tar -zxpf apache-tomcat-${TOMCAT_VER}.tar.gz # tar -zxpf apache-tomcat-$TOMCAT_ADMIN_VER-admin.tar.gz mkdir -p $TOMCAT_HOME local ACTION if [ $HAS_TOMCAT -eq 1 ]; then ACTION=restart # backup config files mkdir -p tomcat_conf_bakup cp -rp ${TOMCAT_HOME}/conf/* ./tomcat_conf_bakup/ # install now rm -rf ${TOMCAT_HOME}/* cp -rp apache-tomcat-${TOMCAT_VER}/* $TOMCAT_HOME # cp -rp apache-tomcat-5.5.28/* $TOMCAT_HOME # restore config files rm -rf ${TOMCAT_HOME}/conf/* cp -rp tomcat_conf_bakup/* ${TOMCAT_HOME}/conf else ACTION=start # install now cp -rp apache-tomcat-${TOMCAT_VER}/* $TOMCAT_HOME # cp -rp apache-tomcat-5.5.28/* $TOMCAT_HOME mkdir -p ${TOMCAT_HOME}/conf/jk # Download workers.properties getFile $WEB_PATH/tomcat workers.properties 1 mv -f workers.properties $WORKERS_PRO # Download tomcat-users.xml getFile $WEB_PATH/tomcat tomcat-users.xml 1 chmod 600 tomcat-users.xml mv -f tomcat-users.xml $TOMCAT_USER fi echo "Done." # install startup script echo -n "Installing startup script to ${INIT_PATH}..." chmod 755 tomcatd mv -f tomcatd $INIT_PATH echo "Done." if [ $DEV_MODE -eq 0 ]; then echo ${INIT_PATH}/tomcatd $ACTION fi echo echo -e "\e[1;37mTomcat $TOMCAT_VER\e[0m installed." } function doAnt() { chkInstalled Ant $ANT_HOME if [ $? -ne 0 ]; then return $? fi getFile ${APACHE_MIRROR}/ant/binaries apache-ant-${ANT_VER}-bin.tar.gz 1 if [ -e $ANT_HOME ]; then rm -rf ${ANT_HOME}/* else mkdir -p $ANT_HOME fi tar -zxpf apache-ant-${ANT_VER}-bin.tar.gz cp -rp apache-ant-${ANT_VER}/bin $ANT_HOME cp -rp apache-ant-${ANT_VER}/lib $ANT_HOME echo "Done." echo echo -e "\e[1;37mAnt $ANT_VER\e[0m installed." } function doJK() { chkInstalled mod_jk $MOD_JK if [ $? -ne 0 ]; then return $? fi getFile ${APACHE_MIRROR}/tomcat/tomcat-connectors/jk tomcat-connectors-${MOD_JK_VER}-src.tar.gz 1 yum install libtool automake autoconf -y tar -zxpf tomcat-connectors-${MOD_JK_VER}-src.tar.gz cd tomcat-connectors-${MOD_JK_VER}-src/native ./buildconf.sh doConfig mod_jk "./configure --with-apxs=/usr/sbin/apxs" doMake mod_jk if [ $DO_ALL -eq 0 ]; then doBackup $HTTPD_CONF fi rm -f $MOD_JK if [ -e apache-2.0/mod_jk.so ]; then # Apache 2.0 cp -p apache-2.0/mod_jk.so $MOD_JK if [ "`grep -e '^Include /etc/httpd/conf/extra/mod_jk.conf' $HTTPD_CONF`" = "" ]; then search="Listen 80" replace="${search}\n\nInclude \/etc\/httpd\/conf\/extra\/mod_jk.conf" $PERL -pi -e "s/${search}/${replace}/" $HTTPD_CONF fi else # Apache 1.3 cp -p apache-1.3/mod_jk.so $MOD_JK if [ "`grep -e '^Include /etc/httpd/conf/extra/mod_jk.conf' $HTTPD_CONF`" = "" ]; then search="mod_setenvif.so" replace="${search}\nInclude \/etc\/httpd\/conf\/extra\/mod_jk.conf" $PERL -pi -e "s/${search}/${replace}/" $HTTPD_CONF fi if [ "`grep -e '^AddModule mod_jk.c' $HTTPD_CONF`" = "" ]; then search="AddModule mod_setenvif.c" replace="${search}\nAddModule mod_jk.c" $PERL -pi -e "s/^${search}/${replace}/" $HTTPD_CONF fi fi cd $BASE_PATH if [ ! -e $MOD_JK_CONF ]; then getFile $WEB_PATH/tomcat mod_jk.conf 1 mv -f mod_jk.conf $MOD_JK_CONF fi restartApache echo echo -e "\e[1;37mmod_jk $MOD_JK_VER\e[0m installed." } function doPg() { chkInstalled PostgreSQL $PG_HOME if [ $? -ne 0 ]; then return $? fi mkdir -p $PG_CONF_PATH local pguser if [ $FREEBSD -eq 1 ]; then pguser='pgsql' else pguser='postgres' fi if [ $FREEBSD -eq 1 ]; then PGVER=`$PHP -r "echo substr('${PG_VER}', 0 ,3) * 10;"` if [ ! -e /usr/ports/databases/postgresql${PGVER}-server ]; then echo echo "Cannot find /usr/ports/databases/postgresql${PGVER}-server, aborting..." exit 1 fi cd /usr/ports/databases/postgresql${PGVER}-server make install echo 'postgresql_enable="YES"' >> /etc/rc.conf chown $pguser:$pguser /usr/local/pgsql/data else getPg rpm -Uvh postgresql-*${PG_VER}*.rpm chown $pguser:$pguser /var/lib/pgsql/data fi if [ $HAS_PG -eq 0 ]; then if [ -e ${PG_CONF_PATH}/pg_hba.conf ]; then cp -p ${PG_CONF_PATH}/pg_hba.conf ${PG_CONF_PATH}/pg_hba.conf.dist fi ${INIT_PATH}/postgresql initdb getFile $WEB_PATH/pgsql pg_hba.conf 1 if [ $FREEBSD -eq 1 ]; then chown $pguser:$pguser pg_hba.conf else chown $pguser:$pguser pg_hba.conf fi chmod 600 pg_hba.conf mv -f pg_hba.conf $PG_CONF_PATH fi if [ $HAS_PG -eq 0 ]; then ${INIT_PATH}/postgresql start su -l $pguser -c "initdb -D $PG_CONF_PATH -E utf8" echo echo "Creating superuser da_admin..." su -l $pguser -c "createuser -P -U postgres da_admin" else if [ $DEV_MODE -eq 0 ]; then ${INIT_PATH}/postgresql restart fi fi echo echo -e "\e[1;37mPostgreSQL ${PG_VER}\e[0m has been installed." } function getPg() { local ARCH if [ $B64 -eq 1 ]; then ARCH="x86_64" else ARCH="i386" fi if [ $FEDORA -eq 1 ]; then if [ $DISTROV -lt 7 ]; then pgFail fi elif [ $REDHAT -eq 1 ]; then if [ $DISTROV -lt 4 ]; then pgFail fi else pgFail fi local DIGIT=1 local WHERE local RPM_SUFFIX if [ $FEDORA -eq 1 ]; then WHERE=$PG_MIRROR/${PG_VER:0:3}/fedora/fedora-$DISTROV-$ARCH RPM_SUFFIX=$PG_VER-1PGDG.f$DISTROV.$ARCH.rpm else WHERE=$PG_MIRROR/${PG_VER:0:3}/redhat/rhel-$DISTROV-$ARCH RPM_SUFFIX=$PG_VER-1PGDG.rhel$DISTROV.$ARCH.rpm fi RPMS[0]="postgresql-libs" RPMS[1]="postgresql-docs" RPMS[2]="postgresql" RPMS[3]="postgresql-server" RPMS[4]="postgresql-devel" # RPMS[5]="postgresql-contrib" for RPM in "${RPMS[@]}"; do getFile $WHERE $RPM-$RPM_SUFFIX 1 done } function pgFail() { echo echo "*** PostgreSQL RPM packages are not available for your distro. You need to compile it from source." echo "*** See http://www.postgresql.org/docs/8.1/interactive/installation.html for details." exit 1 } function doPgAdmin() { rm -f phpPgAdmin.sh getFile $WEB_PATH/pgsql phpPgAdmin.sh 1 chmod 755 phpPgAdmin.sh ./phpPgAdmin.sh $PG_ADMIN_VER } function doRuby() { chkInstalled Ruby $RUBY_HOME /usr/lib/ruby if [ $? -ne 0 ]; then return $? fi getFile $WEB_PATH/rails configure.ruby chmod 755 configure.ruby getFile ${RUBY_MIRROR}/${RUBY_VER:0:3} ruby-${RUBY_VER}.tar.gz 1 tar zxpf ruby-${RUBY_VER}.tar.gz cd ruby-${RUBY_VER} doConfig Ruby $BASE_PATH/configure.ruby doMake Ruby doMake Ruby install echo "Linking /usr/bin/ruby to $RUBY" rm -f /usr/bin/ruby ln -s $RUBY /usr/bin/ruby cd $BASE_PATH echo echo -e "\e[1;37mRuby $RUBY_VER\e[0m installed." } function chkRuby() { if [ ! -e $RUBY_HOME ]; then if [ ! -e /usr/lib/ruby ]; then echo echo "*** Ruby is not installed or not found. Install Ruby using ./daplugin.build ruby" exit 1 else RUBY_HOME="/usr/bin/ruby" fi fi if [ ! -e $RUBY ]; then if [ ! -e /usr/bin/ruby ]; then echo echo "*** Ruby is not installed or not found. Install Ruby using ./daplugin.build ruby" exit 1 else RUBY="/usr/bin/ruby" fi fi return 0 } function chkRubyGems() { if [ ! -e $GEM ]; then if [ ! -e /usr/bin/gem ]; then echo echo "*** RubyGems is not installed or not found. Install RubyGems using ./daplugin.build rubygems" exit 1 else GEM="/usr/bin/gen" fi fi return 0 } function doGems() { chkRuby chkRubyGems if [ $DEBIAN -eq 1 ]; then ln -s /usr/bin/gem $GEM if [ -e /usr/bin/rails ]; then ln -s /usr/bin/rails $RAILS fi if [ -e /usr/bin/mongrel ]; then ln -s /usr/bin/mongrel $MONGREL fi if [ -e /usr/bin/passenger ]; then ln -s /usr/bin/passenger $PASSENGER fi fi if [ ! -e $RAILS ]; then echo echo "Installing gem: Rails" $GEM install rails -v $RAILS_VER -y fi local SQ_VER=`sqlite3 -version` local up=`php -n -r 'echo shell_exec("sqlite3 -version") < "3.6.16" ? 1 : 0;'` # Rails 3 requires SQLite 3.6.16+ if [ "$up" -eq 1 ]; then doSqlite fi if [ ! -e $MONGREL ]; then # install mongrel echo echo "Installing gem: Mongrel" $GEM install mongrel -y # if mongrel fails to install, try prerelease if [ $? -ne 0 ]; then $GEM install mongrel -y --prelease fi fi if [ ! -e $PASSENGER ]; then echo echo "Installing gem: Passenger" $GEM install passenger -v $PASSENGER_VER -y # Apache 2 or above only if [ `echo $HTTPD_VER | cut -d. -f1` = "2" ]; then if [ -e /usr/bin/passenger-install-apache2-module ]; then /usr/bin/passenger-install-apache2-module else /usr/local/bin/passenger-install-apache2-module fi if [ ! -e $MOD_PASSENGER_CONF ]; then getFile $WEB_PATH/rails mod_passenger.conf 1 local RUBY19=`ruby -e 'print RUBY_VERSION.to_f >= 1.9'` # Ruby < 1.9 if [ "$RUBY19" = "false" ]; then # replace 1.9.1 to 1.8 $PERL -pi -e "s/1.9.1/1.8/" mod_passenger.conf fi # Passenger != 3.0.2 if [ "$PASSENGER_VER" != "3.0.2" ]; then $PERL -pi -e "s/3.0.2/$PASSENGER_VER/" mod_passenger.conf fi # replace /usr/local to /usr if [ $DEBIAN -eq 1 ]; then $PERL -pi -e "s/\/usr\/local/\/usr/" mod_passenger.conf fi mv -f mod_passenger.conf $MOD_PASSENGER_CONF fi if [ "`grep -e "^Include $MOD_PASSENGER_CONF" $HTTPD_CONF`" = "" ]; then local search="Listen 80" local replace="$search\n\nInclude ${MOD_PASSENGER_CONF//\//\\/}" $PERL -pi -e "s/$search/$replace/" $HTTPD_CONF fi restartApache fi fi local m=`$GEM list | grep mysql` local f=`$GEM list | grep fcgi` local p=`$GEM list | grep postgres-pr` local s=`$GEM list | grep sqlite3-ruby` if [ "$s" = "" ]; then echo echo "Installing gem: sqlite3-ruby" $GEM install sqlite3-ruby -y fi if [ "$m" = "" ]; then echo echo "Installing gem: mysql" if [ $FREEBSD -eq 1 ]; then $GEM install mysql -y -- --with-mysql-include=/usr/local/mysql/include --with-mysql-lib=/usr/local/mysql/lib elif [ $DEBIAN -eq 1 ]; then $GEM install mysql -y -- --with-mysql-include=/usr/local/mysql/include --with-mysql-lib=/usr/local/mysql/lib else $GEM install mysql -y -- --with-mysql-include=/usr/include/mysql --with-mysql-lib=/usr/lib/mysql fi fi if [ "$f" = "" ] && [ -e $FCGI_LIB ]; then echo echo "Installing gem: fcgi" $GEM install fcgi -y -- --with-fcgi-include=/usr/local/include --with-fcgi-lib=/usr/local/lib fi if [ "$p" = "" ] && [ -e $PG_HOME ]; then echo echo "Installing gem: postgres-pr" $GEM install postgres-pr -y fi # run a final update $GEM update -y cd $BASE_PATH echo echo -e "All necessary gems installed/updated." echo -e "You can simply ignore the Apache related configurations required by Passenger, because I have done that for you :)" } function doRubyGems() { chkInstalled RubyGems $GEM /usr/bin/gem if [ $? -ne 0 ]; then return $? fi chkRuby getFile $GEMS_MIRROR rubygems-${GEMS_VER}.tgz 1 tar zxpf rubygems-${GEMS_VER}.tgz if [ ! -e rubygems-${GEMS_VER}/setup.rb ]; then echo echo "*** The downloaded file is either corrupted or incorrect, please go to http://rubyforge.org/projects/rubygems/ and download it manually." rm -f rubygems-${GEMS_VER}.tgz exit 1 fi cd rubygems-${GEMS_VER} $RUBY setup.rb if [ $DEBIAN -eq 1 ] && [ ! -e $GEM ]; then ln -s /usr/bin/gem $GEM fi cd $BASE_PATH echo echo -e "\e[1;37mRubyGems $GEMS_VER\e[0m installed." } function doSqlite() { chkInstalled SQLite $SQLITE if [ $? -ne 0 ]; then return $? fi local fname="sqlite-autoconf-${SQLITE_VER//./0}00" getFile $SQLITE_MIRROR $fname.tar.gz 1 tar zxpf $fname.tar.gz cd $fname doConfig SQLite "./configure --prefix=/usr" doMake SQLite doMake SQLite install cd $BASE_PATH echo echo -e "\e[1;37mSQLite $SQLITE_VER\e[0m installed." } function doFCGI() { chkInstalled FastCGI $FCGI_LIB if [ $? -ne 0 ]; then return $? fi getFile $FCGI_MIRROR fcgi-${FCGI_VER}.tar.gz 1 tar zxpf fcgi-${FCGI_VER}.tar.gz cd fcgi-${FCGI_VER} doConfig FastCGI doMake FastCGI doMake FastCGI install cd $BASE_PATH echo echo -e "\e[1;37mFastCGI $FCGI_VER\e[0m installed." } function doMOD_FCGI() { # Apache 1.3 ONLY if [ `echo $HTTPD_VER | cut -d. -f1` != "1" ]; then echo echo "mod_fcgi is only for Apache 1.3" exit 1 fi chkInstalled mod_fastcgi $MOD_FCGI if [ $? -ne 0 ]; then return $? fi getFile $FCGI_MIRROR mod_fastcgi-${MOD_FCGI_VER}.tar.gz 1 tar -zxpf mod_fastcgi-${MOD_FCGI_VER}.tar.gz cd mod_fastcgi-${MOD_FCGI_VER} /usr/sbin/apxs -o mod_fastcgi.so -c *.c /usr/sbin/apxs -i -a -n fastcgi mod_fastcgi.so # cp -p Makefile.AP2 Makefile # doMake mod_fastcgi # doMake mod_fastcgi install mkdir /tmp/fcgi_ipc chmod 777 /tmp/fcgi_ipc if [ $DO_ALL -eq 0 ]; then doBackup $HTTPD_CONF fi cd $BASE_PATH # Download mod_fastcgi.conf if [ ! -e $MOD_FCGI_CONF ]; then getFile $WEB_PATH/rails mod_fastcgi.conf 1 mv -f mod_fastcgi.conf $MOD_FCGI_CONF fi local search local replace # Add LoadModule line if [ "`grep -e "^LoadModule fastcgi_module" $HTTPD_CONF`" = "" ]; then search="mod_setenvif.so" replace="$search\nLoadModule fastcgi_module modules\/mod_fastcgi.so" $PERL -pi -e "s/$search/$replace/" $HTTPD_CONF fi # Add AddModule line if [ "`grep -e "^AddModule mod_fastcgi.c" $HTTPD_CONF`" = "" ]; then search="AddModule mod_setenvif.c" replace="$search\nAddModule mod_fastcgi.c" $PERL -pi -e "s/^$search/$replace/" $HTTPD_CONF fi # Include /etc/httpd/conf/mod_fastcgi.conf search="Include $MOD_FCGID" if [ "`grep -e "^$search" $HTTPD_CONF`" = "" ]; then echo $search >> $HTTPD_CONF fi restartApache echo echo -e "\e[1;37mmod_fastcgi $MOD_FCGI_VER\e[0m installed." } function doMOD_FCGID() { # Apache 2.0 and 2.2 ONLY if [ `echo $HTTPD_VER | cut -d. -f1` != "2" ]; then echo echo "mod_fcgid is only for either Apache 2.0 or 2.2" exit 1 fi chkInstalled mod_fcgid $MOD_FCGID if [ $? -ne 0 ]; then return $? fi getFile $APACHE_MIRROR/httpd/mod_fcgid mod_fcgid-$MOD_FCGID_VER.tar.gz 1 tar -zxpf mod_fcgid-$MOD_FCGID_VER.tar.gz # Extract httpd archive if [ -e /usr/local/directadmin/customapache/httpd-$HTTPD_VER.tar.gz ]; then cd /usr/local/directadmin/customapache ./build apache_2 elif [ -e /usr/local/directadmin/custombuild/httpd-$HTTPD_VER.tar.gz ]; then cd /usr/local/directadmin/custombuild ./build apache else echo echo "*** 1: Cannot find Apache source." exit 1 fi cd $BASE_PATH/mod_fcgid.$MOD_FCGID_VER if [ -e /usr/local/directadmin/customapache/httpd-$HTTPD_VER/build/special.mk ]; then $PERL -pi -e "s/\/usr\/local\/apache2/\/usr\/local\/directadmin\/customapache\/httpd-$HTTPD_VER/" Makefile elif [ -e /usr/local/directadmin/custombuild/httpd-$HTTPD_VER/build/special.mk ]; then $PERL -pi -e "s/\/usr\/local\/apache2/\/usr\/local\/directadmin\/custombuild\/httpd-$HTTPD_VER/" Makefile else echo echo "*** 2: Cannot find Apache source." exit 1 fi doMake mod_fcgid doMake mod_fcgid install if [ $DO_ALL -eq 0 ]; then doBackup $HTTPD_CONF fi cd $BASE_PATH # Download mod_fcgid.conf if [ ! -e $MOD_FCGID_CONF ]; then getFile $WEB_PATH/rails mod_fcgid.conf 1 mv -f mod_fcgid.conf $MOD_FCGID_CONF fi local replace local search="Listen 80" if [ `echo $HTTPD_VER | cut -d. -f2` = "2" ]; then # Apache 2.2 if [ "`grep -e "^Include $MOD_FCGID_CONF" $HTTPD_CONF`" = "" ]; then replace="$search\n\nInclude ${MOD_FCGID_CONF//\//\\/}" $PERL -pi -e "s/$search/$replace/" $HTTPD_CONF fi if [ "`grep -e "^LoadModule fcgid_module" $HTTPD_CONF`" = "" ]; then replace="$search\n\nLoadModule fcgid_module ${MOD_FCGID//\//\\/}" $PERL -pi -e "s/$search/$replace/" $HTTPD_CONF fi else # Apache 2.0 # Include /etc/httpd/conf/extra/mod_fcgid.conf if [ "`grep -e "^Include $MOD_FCGID_CONF" $HTTPD_CONF`" = "" ]; then replace="$search\n\nInclude ${MOD_FCGID_CONF//\//\\/}" $PERL -pi -e "s/$search/$replace/" $HTTPD_CONF fi # Add LoadModule line if [ "`grep -e "^LoadModule fcgid_module" $HTTPD_CONF`" = "" ]; then replace="$search\n\nLoadModule fcgid_module modules\/mod_fcgid.so" $PERL -pi -e "s/$search/$replace/" $HTTPD_CONF fi fi restartApache echo echo -e "\e[1;37mmod_fcgid $MOD_FCGID_VER\e[0m installed." } function askLicense() { local result local prefix local URL local PID local TEST="$BASE_PATH/TEST" while [ "$result" != "ok" ]; do echo -n "Please enter your license key for $2: " read LIC prefix=${LIC:0:1} if [ "$1" = "pgsql" ]; then if [ "$prefix" = "L" ]; then PID=2 else PID=1 fi elif [ "$1" = "tomcat" ]; then if [ "$prefix" = "L" ]; then PID=3 else PID=4 fi elif [ "$1" = "rails" ]; then if [ "$prefix" = "L" ]; then PID=6 else PID=5 fi elif [ "$1" = "IDM" ]; then PID=7 elif [ "$1" = "DeeperAdmin" ]; then PID=8 fi URL="http://www.daplugin.com/spbas/validate.php?license=$LIC&pid=$PID" if [ $FREEBSD -eq 1 ]; then fetch -o $TEST $URL else wget -O $TEST $URL fi if [ ! -e $BASE_PATH/TEST ]; then echo "Unable to connect to licensing server, proceed with installation? (y/n): " read yesno if [ "$yesno" = "n" ]; then exit 0 fi fi result=`head -n 1 $BASE_PATH/TEST` echo if [ "$result" = "expired" ]; then echo "The license key provided is expired." elif [ "$result" = "error" ]; then echo "The license key provided is invalid." fi done echo "Valid license key!" rm -f $BASE_PATH/TEST } function chkPlugin() { if [ "$1" = "da-pgsql" ]; then PLUGIN_ID="pgsql" PLUGIN_NAME="DA-PgSQL" PLUGIN_HOME=$DAPG_HOME ITEM=$ITEM_PG ITEM_STR=$ITEM_STR_PG PLUGIN_USE_WWW=1 PLUGIN_USE_ENCODER=1 elif [ "$1" = "da-tomcat" ]; then PLUGIN_ID="tomcat" PLUGIN_NAME="DA-Tomcat" PLUGIN_HOME=$DATOMCAT_HOME ITEM=$ITEM_TOMCAT ITEM_STR=$ITEM_STR_TOMCAT PLUGIN_USE_WWW=1 PLUGIN_USE_ENCODER=1 elif [ "$1" = "rails_in_da" ]; then PLUGIN_ID="rails" PLUGIN_NAME="Rails in DA" PLUGIN_HOME=$RID_HOME ITEM=$ITEM_RAILS ITEM_STR=$ITEM_STR_RAILS PLUGIN_USE_WWW=1 PLUGIN_USE_ENCODER=1 elif [ "$1" = "idm" ]; then PLUGIN_ID="IDM" PLUGIN_NAME="IP Deny Manager" PLUGIN_HOME=$IDM_HOME ITEM=$ITEM_IDM ITEM_STR=$ITEM_STR_IDM PLUGIN_USE_WWW=1 PLUGIN_USE_ENCODER=1 elif [ "$1" = "deeperadmin" ]; then PLUGIN_ID="DeeperAdmin" PLUGIN_NAME="DeeperAdmin" PLUGIN_HOME=$DEEP_HOME PLUGIN_USE_ENCODER=1 elif [ "$1" = "da-pear" ]; then PLUGIN_ID="pear" PLUGIN_NAME="DA-PEAR" PLUGIN_HOME=$PEAR_HOME PLUGIN_USE_WWW=0 PLUGIN_USE_ENCODER=0 else return 1 fi if [ $2 -eq 1 ]; then if [ -e $PLUGIN_HOME ]; then HAS_PLUGIN=1 if [ $USER_INPUT -eq 1 ]; then echo -n "$PLUGIN_NAME is already installed. Continue? (y/n): " read yesno echo else if [ "$INPUT_VALUE" = "d" ]; then yesno=y else yesno=$INPUT_VALUE fi fi if [ "$yesno" = "n" ]; then return 1 fi else if [ "$PLUGIN_ID" != "pear" ]; then askLicense "$PLUGIN_ID" "$PLUGIN_NAME" fi fi fi cd $BASE_PATH return 0 } function doLoader() { chkPlugin $1 0 local ARCHIVE local OS if [ $FREEBSD -eq 1 ]; then OS="FreeBSD" else OS="Linux" fi ARCHIVE="phpexpress-$PHPEXPRESS_VER-$OS.tar.gz" rm -rf loader mkdir loader cd loader getFile $WEB_PATH $ARCHIVE 1 tar zxpf $ARCHIVE rm -rf $PLUGIN_HOME/include/loader/$OS cp -rp $OS $PLUGIN_HOME/include/loader/ cd $BASE_PATH echo echo -e "\e[1;37mPhpExpress $PHPEXPRESS_VER\e[0m successfully installed for $PLUGIN_NAME." } function _doSimplePlugin() { local ARCHIVE=$PLUGIN_ID-v$1.tar.gz rm -f $ARCHIVE getFile $WEB_PATH/$PLUGIN_ID/current $ARCHIVE 1 mkdir -p $PLUGIN_ID mkdir -p $PLUGIN_HOME if [ $PLUGIN_USE_WWW -eq 1 ]; then mkdir -p /var/www/html/daplugin fi cd $PLUGIN_ID tar zxpf ../$ARCHIVE if [ $HAS_PLUGIN -eq 1 ]; then rm -rf ${PLUGIN_HOME}/* fi cp -r * $PLUGIN_HOME/ chown -R diradmin:diradmin $PLUGIN_HOME cd $PLUGIN_HOME chmod 644 plugin.conf if [ -d admin ]; then chmod 755 admin/*.html fi if [ -d user ]; then chmod 755 user/*.html fi local VER=`grep version= plugin.conf | cut -d= -f2` cd $BASE_PATH rm -rf $PLUGIN_ID echo echo -e "\e[1;37m$PLUGIN_NAME v${VER}\e[0m installed." if [ $HAS_PLUGIN -eq 0 ]; then echo echo "Please note that you may need to do something manually to complete the installation." echo "Documents are available at http://www.daplugin.com/docs/" fi } function doPlugin() { chkPlugin $1 1 if [ $? -ne 0 ]; then return fi getFile $WEB_PATH/$PLUGIN_ID version.txt 1 # local VER=`php -r "echo @file_get_contents('$WEB_PATH/$PLUGIN_ID/version.txt');"` local VER=`cat version.txt` rm -f version.txt if [ "$VER" = "" ]; then echo echo "Unable to get the current version number." exit 1 fi if [ $PLUGIN_USE_ENCODER -eq 0 ]; then _doSimplePlugin $VER return fi local ARCHIVE if [ "$PHP_VER" = "5.3" ]; then ARCHIVE=$PLUGIN_ID-current-php5.2.tar.gz else ARCHIVE=$PLUGIN_ID-current-php$PHP_VER.tar.gz fi rm -f $ARCHIVE getFile $WEB_PATH/$PLUGIN_ID/current $ARCHIVE 1 mkdir -p $PLUGIN_ID mkdir -p $PLUGIN_HOME if [ $PLUGIN_USE_WWW -eq 1 ]; then mkdir -p /var/www/html/daplugin fi cd $PLUGIN_ID tar zxpf ../$ARCHIVE if [ $HAS_PLUGIN -eq 1 ]; then echo echo "Backing up plugin config and language packs..."; mkdir -p ../backups/$PLUGIN_ID if [ -e ${PLUGIN_HOME}/include/config.php ]; then mv -f ${PLUGIN_HOME}/include/config.php ${PLUGIN_HOME}/include/config.inc.php fi mv -f $PLUGIN_HOME/include/config.inc.php ../backups/$PLUGIN_ID/ cp ../backups/$PLUGIN_ID/config.inc.php include/ #if [ -e ${PLUGIN_HOME}/include/key.php ]; then # mv -f ${PLUGIN_HOME}/include/key.php ../backups/$PLUGIN_ID/ # cp ../backups/$PLUGIN_ID/key.php include/ #fi if [ -e ${PLUGIN_HOME}/include/license.txt ]; then mv -f ${PLUGIN_HOME}/include/license.txt ../backups/$PLUGIN_ID/ cp ../backups/$PLUGIN_ID/key.php include/ fi if [ -e ${PLUGIN_HOME}/include/used_ports ]; then mv -f ${PLUGIN_HOME}/include/used_ports ../backups/$PLUGIN_ID/ cp ../backups/$PLUGIN_ID/used_ports include/ fi rm -f include/key.php rm -f include/license.txt mv -f ${PLUGIN_HOME}/include/lang/* ../backups/$PLUGIN_ID rm -rf ${PLUGIN_HOME}/* fi if [ "$ITEM_STR" != "" ]; then touch $CUSTOM_PACK echo "set ic | /^${ITEM}=type=/d | x!" | ex - $CUSTOM_PACK echo "$ITEM_STR" >> $CUSTOM_PACK fi cp -r * $PLUGIN_HOME/ chown -R diradmin:diradmin $PLUGIN_HOME cd $PLUGIN_HOME chmod 644 plugin.conf echo 'set ic | /^update_url=/d | x!' | ex - plugin.conf echo "update_url=http://files.daplugin.com/$PLUGIN_ID/current/$PLUGIN_ID-current-php$PHP_VER.tar.gz" >> plugin.conf if [ -d admin ]; then chmod 755 admin/*.html fi if [ -d user ]; then chmod 755 user/*.html fi if [ -d include ]; then cd include mkdir -p cache/templates mkdir -p externals/custom chmod 600 config.inc.php if [ $HAS_PLUGIN -eq 0 ]; then $PERL -pi -e "s/'license' => ' '/'license' => '$LIC'/" config.inc.php fi chmod -R 777 cache chown -R diradmin:diradmin cache if [ $FREEBSD -eq 1 ]; then getFile http://www.daplugin.com wrapper_${PLUGIN_ID}.c 1 gcc -o wrapper_$PLUGIN_ID wrapper_${PLUGIN_ID}.c chown root:wheel wrapper_$PLUGIN_ID mv -f wrapper_$PLUGIN_ID externals/ rm -f *.c else chown root:root externals/wrapper_$PLUGIN_ID fi chmod 4711 externals/wrapper_$PLUGIN_ID if [ "$PLUGIN_ID" = "pgsql" ]; then mv -f pg_export.php /var/www/html/daplugin/ chown ${APPUSER}:${APPUSER} /var/www/html/daplugin/pg_export.php elif [ "$PLUGIN_ID" = "tomcat" ]; then chmod 666 ../logs/* mv -f tomcat_upload.php /var/www/html/daplugin/ chown ${APPUSER}:${APPUSER} /var/www/html/daplugin/tomcat_upload.php elif [ "$PLUGIN_ID" = "rails" ]; then chmod 666 ../logs/* touch used_ports chmod 666 used_ports chown diradmin:diradmin used_ports mv -f rails_shell /var/www/html/daplugin/ chown -R ${APPUSER}:${APPUSER} /var/www/html/daplugin/rails_shell elif [ "$PLUGIN_ID" = "IDM" ]; then mv -f idm_watermark.php /var/www/html/daplugin/ mv -f verdana.ttf /var/www/html/daplugin/ chown ${APPUSER}:${APPUSER} /var/www/html/daplugin/idm_watermark.php chown ${APPUSER}:${APPUSER} /var/www/html/daplugin/verdana.ttf elif [ "$PLUGIN_ID" = "DeeperAdmin" ]; then if [ $HAS_PLUGIN -eq 0 ]; then doJail fi cd $PLUGIN_HOME/include fi rm -rf ioncube if [ $FREEBSD -eq 1 ]; then if [ $B64 -eq 1 ]; then LOADER="/usr/local/directadmin/plugins/${PLUGIN_ID}/include/loader/FreeBSD/x86_64/phpexpress-php-${PHP_VER}.so" else LOADER="/usr/local/directadmin/plugins/${PLUGIN_ID}/include/loader/FreeBSD/x86/phpexpress-php-${PHP_VER}.so" fi else if [ $B64 -eq 1 ]; then LOADER="/usr/local/directadmin/plugins/${PLUGIN_ID}/include/loader/Linux/x86_64/phpexpress-php-${PHP_VER}.so" else LOADER="/usr/local/directadmin/plugins/${PLUGIN_ID}/include/loader/Linux/x86/phpexpress-php-${PHP_VER}.so" fi fi # Remove the original line echo '/set ic | phpexpress-php-/d | x\!' | ex - php.ini # Append new line echo >> php.ini echo "zend_extension=${LOADER}" >> php.ini fi # local VER=`grep version= ${PLUGIN_HOME}/plugin.conf | cut -d= -f2` cd $BASE_PATH rm -rf $PLUGIN_ID echo echo -e "\e[1;37m$PLUGIN_NAME v${VER}\e[0m installed." if [ $HAS_PLUGIN -eq 0 ]; then echo echo "Please note that you may need to do something manually to complete the installation." echo "Documents are available at http://www.daplugin.com/docs/" fi } function doJail() { if [ ! -e $DEEP_HOME ]; then echo echo "DeeperAdmin is not installed." return 1 fi cd $DEEP_HOME/include/externals mkdir -p jail cd jail rm -rf * wget http://files.directadmin.com/services/customapache/jail/build chmod 755 build ./build update if [ $HAS_PLUGIN -eq 0 ]; then ./build all cp -f /etc/passwd /etc/passwd.backup cp -f /etc/group /etc/group.backup cp -f /etc/shadow /etc/shadow.backup cp -f /etc/master.passwd /etc/master.passwd.backup fi cd ../.. } function doWrapper() { if [ "$1" = "da-pgsql" ]; then PLUGIN_ID="pgsql" PLUGIN_NAME="DA-PgSQL" PLUGIN_HOME=$DAPG_HOME elif [ "$1" = "da-tomcat" ]; then PLUGIN_ID="tomcat" PLUGIN_NAME="DA-Tomcat" PLUGIN_HOME=$DATOMCAT_HOME elif [ "$1" = "rails_in_da" ]; then PLUGIN_ID="rails" PLUGIN_NAME="Rails in DA" PLUGIN_HOME=$RID_HOME elif [ "$1" = "idm" ]; then PLUGIN_ID="IDM" PLUGIN_NAME="IP Deny Manager" PLUGIN_HOME=$IDM_HOME elif [ "$1" = "deeperadmin" ]; then PLUGIN_ID="DeeperAdmin" PLUGIN_NAME="DeeperAdmin" PLUGIN_HOME=$DEEP_HOME else return 1 fi cd $PLUGIN_HOME/include/externals getFile http://www.daplugin.com wrapper_$PLUGIN_ID.c 1 gcc -o wrapper_$PLUGIN_ID wrapper_$PLUGIN_ID.c rm -f wrapper_$PLUGIN_ID.c if [ $FREEBSD -eq 1 ]; then chown root:wheel wrapper_$PLUGIN_ID else chown root:root wrapper_$PLUGIN_ID fi chmod 4711 wrapper_$PLUGIN_ID echo echo "Done." } function doAll() { DO_ALL=1 doBackup $HTTPD_CONF doTomcatAll doPgAll doRailsAll } function doTomcatAll() { DO_ALL=1 doJava doTomcat doAnt doBackup $HTTPD_CONF doJK doPlugin da-tomcat } function doPgAll() { DO_ALL=1 doPg doPgAdmin doPlugin da-pgsql } function doRailsAll() { DO_ALL=1 doRuby doFCGI doRubyGems doGems doPlugin rails_in_da } function doClean() { rm -rf jdk$JDK_VER2 rm -rf apache-tomcat-$TOMCAT_VER rm -rf diablo-jdk$CAFFE_VER rm -rf apache-ant-$ANT_VER rm -rf tomcat-connectors-$MOD_JK_VER-src rm -rf ruby-$RUBY_VER rm -rf rubygems-$GEMS_VER rm -rf fcgi-$FCGI_VER rm -rf mod_fastcgi-$MOD_FCGI_VER rm -rf mod_fcgid.$MOD_FCGID_VER rm -rf pgsql tomcat rails rm -f phpPgAdmin.sh echo "All cleaned!" } function doUpdate() { if [ `uname` = "FreeBSD" ]; then fetch -o $BASE_PATH/daplugin.build.new $WEB_PATH/daplugin.build fetch -o $BASE_PATH/README.new $WEB_PATH/README fetch -o $BASE_PATH/distrov.php.new $WEB_PATH/distrov.txt fetch -o $BASE_PATH/user_conf.php.new $WEB_PATH/user_conf.txt fetch -o $BASE_PATH/mirrors.sh.example.new $WEB_PATH/mirrors.sh.example else wget -O $BASE_PATH/daplugin.build.new $WEB_PATH/daplugin.build wget -O $BASE_PATH/README.new $WEB_PATH/README wget -O $BASE_PATH/distrov.php.new $WEB_PATH/distrov.txt wget -O $BASE_PATH/user_conf.php.new $WEB_PATH/user_conf.txt wget -O $BASE_PATH/mirrors.sh.example.new $WEB_PATH/mirrors.sh.example fi mv -f daplugin.build.new daplugin.build mv -f README.new README mv -f distrov.php.new distrov.php mv -f user_conf.php.new user_conf.php mv -f mirrors.sh.example.new mirrors.sh.example rm -f distrov rm -f user_conf chmod 755 daplugin.build echo "Update finished." } function doUserConf() { $PHP -n user_conf $1 $2 } function getFile() { if [ ! -e $2 ]; then echo -e "Downloading\t${2}..." if [ $FREEBSD -eq 1 ]; then fetch ${1}/${2} else wget ${1}/${2} fi if [ ! -e $2 ]; then echo -e "*** Download failed:\t${2}" if [ $3 -eq 1 ]; then exit 1 fi return 1 fi else echo -e "File exists:\t${2}\tSkipping..." fi return 0 } function doConfig() { local cmd if [ "$2" = "" ]; then cmd="./configure" else cmd=$2 fi echo echo "Configuring $1..." eval $cmd if [ $? -ne 0 ]; then echo echo "*** There was an error while configuring $1." exit 1 fi } function doMake() { local text local action local cmd if [ "$2" = "install" ]; then text="Installing" action="install" cmd="make install" else text="Making" action="make" cmd="make" fi while echo -e "\n$text $1..."; do eval $cmd if [ $? -ne 0 ]; then if [ $USER_INPUT -eq 1 ]; then echo -n -e "\n*** The $action has failed, do you want to $action again? (y,n): " read yesno echo else if [ "$INPUT_VALUE" = "d" ]; then yesno=n else yesno=$INPUT_VALUE fi fi if [ "$yesno" = "n" ]; then exit 0 fi else break fi done } function doBackup() { echo echo -n "Backuping $1..." if [ ! -e $1 ]; then echo "Unable to locate file." return 1 fi local bak=${1##/*/}.bak rm -f $BASE_PATH/$bak cp -p $1 $BASE_PATH/$bak echo "Done." return 0 } ################################################## cd $BASE_PATH if [ $# -eq 2 ]; then USER_INPUT=0 INPUT_VALUE=$2 fi case "$1" in all) doAll ;; pgsql_all) doPgAll ;; tomcat_all) doTomcatAll ;; rails_all) doRailsAll ;; java) doJava ;; tomcat) doTomcat ;; ant) doAnt ;; mod_jk) doJK ;; da-tomcat) doPlugin da-tomcat ;; pgsql) doPg ;; phppgadmin) doPgAdmin ;; da-pgsql) doPlugin da-pgsql ;; da-pear) doPlugin da-pear ;; ruby) doRuby ;; rubygems) doRubyGems ;; gems) doGems ;; sqlite) doSqlite ;; fcgi) doFCGI ;; mod_fastcgi) doMOD_FCGI ;; mod_fcgid) doMOD_FCGID ;; rails_in_da) doPlugin rails_in_da ;; idm) doPlugin idm ;; deeperadmin) doPlugin deeperadmin ;; jail) doJail ;; user_conf) doUserConf $2 $3 ;; clean) doClean ;; update) doUpdate ;; wrapper) doWrapper $2;; loader) doLoader $2;; * ) showHelp exit 0 ;; esac exit 0