#!/bin/sh
# This script is written by DirectAdmin and Martynas Bendorius (smtalk)

BUILDSCRIPT_VER=1.2.10
NAME=custombuild

OS=`uname`
WORKDIR=/usr/local/directadmin/${NAME}
OPTIONS_CONF=${WORKDIR}/options.conf
VERSIONS_FILE=${WORKDIR}/versions.txt

# Main variables
HTTPDDIR=/etc/httpd
HTTPDCONF=/etc/httpd/conf
HTTPD_CONF=${HTTPDCONF}/httpd.conf
WEBPATH=http://files.directadmin.com/services/custombuild
WEBPATH_BACKUP=http://84.16.234.222/services/custombuild
WEBPATH_SERVICES=http://files.directadmin.com/services

DEBIAN_VERSION=/etc/debian_version
WWWDIR=/var/www/html

# Variables for jailed shell
SHELLS=/etc/shells
JAIL_DIR=${WORKDIR}/jail

SERVICES=/usr/local/directadmin/data/admin/services.status

CWD=`pwd`
FORCE=0

# Check if workdir exists
if [ ! -d ${WORKDIR} ]; then
	echo "Directory ${WORKDIR} does not exist."
	exit 1
fi

# Write options.conf
if [ ! -e ${OPTIONS_CONF} ]; then
	echo "Can not find ${OPTIONS_CONF}, writing defaults."
	echo -n "" > ${OPTIONS_CONF}
	echo "#PHP settings. default_php possible values - 5 or 6" >> ${OPTIONS_CONF}
	echo "default_php=5" >> ${OPTIONS_CONF}
	echo "php5_cli=yes" >> ${OPTIONS_CONF}
	echo "php5_cgi=no" >> ${OPTIONS_CONF}
	echo "php6_cli=no" >> ${OPTIONS_CONF}
	echo "php6_cgi=no" >> ${OPTIONS_CONF}
	echo "mail-header-patch=yes" >> ${OPTIONS_CONF}
	echo "php_ini=no" >> ${OPTIONS_CONF}
	echo "#Possible values - recommended or dist" >> ${OPTIONS_CONF}
	echo "php_ini_type=recommended" >> ${OPTIONS_CONF}
	echo "zend=no" >> ${OPTIONS_CONF}
	echo "" >> ${OPTIONS_CONF}
	echo "#Possible values - 5.0, 5.1" >> ${OPTIONS_CONF}
	echo "mysql=5.0" >> ${OPTIONS_CONF}
	echo "mysql_inst=no" >> ${OPTIONS_CONF}
	echo "mysql_backup=yes" >> ${OPTIONS_CONF}
	echo "" >> ${OPTIONS_CONF}
	echo "#Possible values - 1.3, 2.0 or 2.2" >> ${OPTIONS_CONF}
	echo "apache_ver=2.2" >> ${OPTIONS_CONF}
	echo "" >> ${OPTIONS_CONF}
	echo "#Web applications" >> ${OPTIONS_CONF}
	echo "phpmyadmin=yes" >> ${OPTIONS_CONF}
	echo "atmail=no" >> ${OPTIONS_CONF}
	echo "squirrelmail=yes" >> ${OPTIONS_CONF}
	echo "roundcube=yes" >> ${OPTIONS_CONF}
	echo "uebimiau=no" >> ${OPTIONS_CONF}
	echo "" >> ${OPTIONS_CONF}
	echo "#Mail options" >> ${OPTIONS_CONF}
	echo "clamav=no" >> ${OPTIONS_CONF}
	echo "dovecot=yes" >> ${OPTIONS_CONF}
	echo "exim=no" >> ${OPTIONS_CONF}
	echo "eximconf=no" >> ${OPTIONS_CONF}
	echo "spamassassin=no" >> ${OPTIONS_CONF}
	echo "" >> ${OPTIONS_CONF}
	echo "#Statistics" >> ${OPTIONS_CONF}
	echo "awstats=yes" >> ${OPTIONS_CONF}
	echo "webalizer=no" >> ${OPTIONS_CONF}
	echo "" >> ${OPTIONS_CONF}
	echo "#FTP options" >> ${OPTIONS_CONF}
	echo "proftpd=yes" >> ${OPTIONS_CONF}
	echo "" >> ${OPTIONS_CONF}
	echo "#Jailed shell" >> ${OPTIONS_CONF}
	echo "jail=no" >> ${OPTIONS_CONF}
	echo "" >> ${OPTIONS_CONF}
	echo "#Custombuild options" >> ${OPTIONS_CONF}
	echo "autover=no" >> ${OPTIONS_CONF}
	echo "bold=yes" >> ${OPTIONS_CONF}
	echo "clean=yes" >> ${OPTIONS_CONF}
	echo "cleanapache=no" >> ${OPTIONS_CONF}
	echo "clean_old_tarballs=no" >> ${OPTIONS_CONF}
	echo "clean_old_webapps=no" >> ${OPTIONS_CONF}
	echo "fileserver=1" >> ${OPTIONS_CONF}
	echo "custombuild=1.2" >> ${OPTIONS_CONF}
	echo "" >> ${OPTIONS_CONF}
	echo "#Cron settings" >> ${OPTIONS_CONF}
	echo "cron=no" >> ${OPTIONS_CONF}
	echo "email=email@domain.com" >> ${OPTIONS_CONF}
	echo "notifications=yes" >> ${OPTIONS_CONF}
	echo "updates=no" >> ${OPTIONS_CONF}
	echo "" >> ${OPTIONS_CONF}
fi

# Check if options.conf exists
if [ ! -e ${OPTIONS_CONF} ]; then
	echo "Options file options.conf does not exist."
	exit 1
fi

####################################################

getVer()
{
        grep -m1 $1: ${VERSIONS_FILE} | cut -d ':' -f 2
}

getMD5()
{
        grep -m1 $1: ${VERSIONS_FILE} | cut -d ':' -f 3
}

do_exit()
{
	if [ "$2" != "" ]; then
		echo "$2";
	fi
	rm -f ${WORKDIR}/.custombuild
	exit $1
}

getOpt()
{
		#$1 is option name
		#$2 is default value

		COUNT_OPT="`grep -c -e "^$1=" ${OPTIONS_CONF}`"
		if [ "${COUNT_OPT}" -eq 0 ]; then
			echo "$1=$2" >> ${OPTIONS_CONF}
		fi
		
		if [ "${COUNT_OPT}" -ne 1 ]; then
			do_exit 1 "${OPTIONS_CONF} is damaged. Please check or delete it."
		fi
		
        grep -m1 "^$1=" ${OPTIONS_CONF} | cut -d= -f2
}

#sets the value of $1 to $2 in the file $3
setVal()
{
        if [ ! -e $3 ]; then
                return;
        fi

        COUNT=`grep -c $1 $3`
        if [ "$COUNT" -eq 0 ]; then
                #ok, it's not there, add it.
                echo "$1=$2" >> $3
                return;
        else
                #ok, the value is already in the file $3, so use perl to regex it.
                perl -pi -e "s/`grep ${1}= ${3}`/${1}=${2}/" ${3}
        fi
}

####################################################

# Read options.conf
APACHE_OPT=`getOpt apache_ver 2.2`
PROFTPD_OPT=`getOpt proftpd yes`
JAIL_OPT=`getOpt jail no`

#PHP
DEFPHP=`getOpt default_php 6`
PHP5_CLI_OPT=`getOpt php5_cli no`
PHP5_CGI_OPT=`getOpt php5_cgi no`
PHP6_CLI_OPT=`getOpt php6_cli yes`
PHP6_CGI_OPT=`getOpt php6_cgi no`
PHPINI_OPT=`getOpt php_ini no`
PHPINITYPE_OPT=`getOpt php_ini_type recommended`
ZEND_OPT=`getOpt zend no`

#MySQL
MYSQLBACK_OPT=`getOpt mysql_backup yes`
MYSQL_OPT=`getOpt mysql 5.0`
MYSQLINST_OPT=`getOpt mysql_inst no`

#Email
MAIL_HEADER_PATCH=`getOpt mail-header-patch yes`
DOVECOT_OPT=`getOpt dovecot yes`
EXIM_OPT=`getOpt exim no`
EXIMCONF_OPT=`getOpt eximconf no`
SPAMASSASSIN_OPT=`getOpt spamassassin no`
CLAMAV_OPT=`getOpt clamav no`

#Applications
ATMAIL_OPT=`getOpt atmail no`
PHPMYADMIN_OPT=`getOpt phpmyadmin yes`
SQUIRRELMAIL_OPT=`getOpt squirrelmail yes`
ROUNDCUBE_OPT=`getOpt roundcube yes`
UEBIMIAU_OPT=`getOpt uebimiau no`

#Statistics software
AWSTATS_OPT=`getOpt awstats yes`
WEBALIZER_OPT=`getOpt webalizer no`

#CustomBuild
AUTOVER_OPT=`getOpt autover no`
BOLD_OPT=`getOpt bold yes`
CLEAN_OPT=`getOpt clean yes`
CLEAN_OLD_TARBALLS_OPT=`getOpt clean_old_tarballs yes`
CLEAN_OLD_WEBAPPS_OPT=`getOpt clean_old_webapps no`
CLEANAPACHE_OPT=`getOpt cleanapache yes`
FILESERVER_OPT=`getOpt fileserver 1`
CUSTOMBUILD_OPT=`getOpt custombuild 1.2`

#Cron
CRON_OPT=`getOpt cron no`
EMAIL_OPT=`getOpt email email@domain.com`
NOTIFICATIONS_OPT=`getOpt notifications yes`
UPDATES_OPT=`getOpt updates no`

if [ "${PHPINITYPE_OPT}" != "dist" ] && [ "${PHPINITYPE_OPT}" != "recommended" ]; then
	echo "Wrong php_ini_type set in options.conf."
	exit 1
fi

if [ "${FILESERVER_OPT}" != "1" ] && [ "${FILESERVER_OPT}" != "2" ]; then
	echo "Wrong fileserver set in options.conf."
	exit 1
fi

if [ "${PHP6_CLI_OPT}" = "yes" ] && [ "${PHP5_CLI_OPT}" = "yes" ]; then
	echo "Can not install PHP6 and PHP5 as CLI."
	exit 1
elif [ "${PHP6_CLI_OPT}" = "yes" ] && [ "${PHP6_CGI_OPT}" = "yes" ] || [ "${PHP5_CLI_OPT}" = "yes" ] && [ "${PHP5_CGI_OPT}" = "yes" ]; then
	echo "Can not install one PHP version as CLI and CGI."
	exit 1
elif [ "${PHP6_CLI_OPT}" = "no" ] && [ "${PHP6_CGI_OPT}" = "no" ] && [ "${PHP5_CLI_OPT}" = "no" ] && [ "${PHP5_CGI_OPT}" = "no" ]; then
	echo "You do not have any PHP version set in options.conf."
	exit 1
fi

if [ "${DEFPHP}" = "5" ]; then
	ADDITPHP=6
elif [ "${DEFPHP}" = "6" ]; then
	ADDITPHP=5
else
	echo "There is wrong default PHP in ${OPTIONS_CONF} set."
	exit 1
fi

# Variables for bolded text
boldon=""
boldoff=""
if [ "${BOLD_OPT}" = "yes" ]; then
	boldon="`tput bold`"
	boldoff="`tput sgr0`"
fi

# Get apache version from directadmin.conf
DACONF_FILE=/usr/local/directadmin/conf/directadmin.conf
DACONF_TEMPLATE_FILE=/usr/local/directadmin/data/templates/directadmin.conf
DACONF_APACHE_VER=1.3
if [ -e ${DACONF_FILE} ]; then
	DACONF_APACHE_VER=`grep "^apache_ver=" ${DACONF_FILE} | cut -d= -f2`
fi

# Download versions.txt if AUTOVER_OPT is set to "yes"
if [ "${AUTOVER_OPT}" = "yes" ]; then
  wget ${WEBPATH}/versions.txt -O ${VERSIONS_FILE} 2> /dev/null
fi

# Check if ld.so.conf has /usr/local/lib
if [ ! -e /etc/ld.so.conf ] || [ "`grep -c -E '/usr/local/lib$' /etc/ld.so.conf`" = "0" ]; then
        echo "/usr/local/lib" >> /etc/ld.so.conf
        ldconfig
fi
####################################################

checkMD5()
{
	#$1 is the local file
	#$2 is the versions.txt variable
	#return values:
	#1 for error, try agian
	#0 for nothing to report.

	MD5SUM=/usr/bin/md5sum

	if [ ! -e $MD5SUM ]; then
		echo 0;
		return;
	fi

	if [ ! -e "$1" ]; then
		echo 1;
	fi

	VMD5=`getMD5 $2`
	if [ "$VMD5" = "" ]; then
		echo 0;
		return;
	fi

	FMD5=`$MD5SUM $1 | cut -d\  -f1`

	if [ "$FMD5" = "$VMD5" ]; then
		echo 0;
	else
		echo 1;
	fi
}

getFile() {
	cd ${CWD};

        if [ ! -e ${1} ]
        then
                echo -e "Downloading\t\t$1...";
                if [ ${OS} = "FreeBSD" ]; then
                        fetch ${WEBPATH}/${1};
                else
                        wget -O ${CWD}/${1} ${WEBPATH}/${1}
                fi

                if [ ! -e $1 ]
                then
                        echo "Fileserver is down, using the backup file server..";
                        if [ ${OS} = "FreeBSD" ]; then
                                fetch ${WEBPATH_BACKUP}/${1};
                        else
                                wget ${WEBPATH_BACKUP}/${1} -O ${CWD}/${1};
                        fi
                fi

        else
                echo -e "File already exists:\t${1}";
        fi

	if [ "$#" -eq 2 ]; then

		M=`checkMD5 ${1} ${2}`

		if [ "$M" != "0" ]; then
			echo "";
			echo "${boldon}*** MD5 Checksum for $1 Failed.  Redownloading...***${boldoff}";
			echo "";
			#we will call it recursively but will *not* pass $2 for the md5 cus it would get stuck in a loop.

			rm -f $1
			getFile $1

			M=`checkMD5 ${1} ${2}`			

			if [ "$M" != "0" ]; then
				echo "";
				echo "";
				echo "${boldon}*** MD5 Checksum for $1 failed *again*.***${boldoff}";
				echo "The md5 checksum value may be incorrect, or a wrong file is being downloaded.";
				echo "Install continuing with this possibly corrupted file. (it may also be fine)";
				echo "";
				echo "";
			else
				echo "MD5 Checksum on $1 passed."
			fi

		else
			echo "MD5 Checksum on $1 passed."
		fi
	fi
}

####################################################

# Rewrite directadmin-vhosts.conf
doVhosts(){
	if [ ! -d ${HTTPDCONF}/extra ]; then
		mkdir -p ${HTTPDCONF}/extra
	fi
	echo -n '' > ${HTTPDCONF}/extra/directadmin-vhosts.conf
	for i in `ls /usr/local/directadmin/data/users`; do { echo "Include /usr/local/directadmin/data/users/$i/httpd.conf" >> ${HTTPDCONF}/extra/directadmin-vhosts.conf; }; done;
}

####################################################

# init.d scripts
if [ "${OS}" = "FreeBSD" ]; then
	INITDDIR=/usr/local/etc/rc.d
else
	INITDDIR=/etc/init.d
fi

# check if we have versions.txt
if [ ! -e ${VERSIONS_FILE} ]; then
	cd ${WORKDIR}
	getFile versions.txt
fi

if [ ! -e ${VERSIONS_FILE} ]; then
    echo "There is no versions.txt file. Unable to download."
    exit 0;
fi

#####################################################
# User Variables

MODSSL_VER=`getVer mod_ssl`
if [ "${APACHE_OPT}" = "1.3" ]; then
	APACHE_VER=`getVer apache`
elif [ "${APACHE_OPT}" = "2.0" ]; then
	APACHE2_VER=`getVer apache2.0`
elif [ "${APACHE_OPT}" = "2.2" ]; then
	APACHE2_VER=`getVer apache2.2`
else
	echo "Wrong apache_ver value set in ${OPTIONS_CONF}."
	exit 1
fi
PHP5_VER=`getVer php5`
PHP6_VER=`getVer php6`

if [ "${MYSQL_OPT}" = "5.0" ]; then
	MYSQL_VER=`getVer mysql5.0`
elif [ "${MYSQL_OPT}" = "5.1" ]; then
	MYSQL_VER=`getVer mysql5.1`
elif [ "${MYSQL_OPT}" = "4.1" ]; then
	MYSQL_VER=`getVer mysql4.1`
else
	echo "Wrong mysql_ver value set in ${OPTIONS_CONF}."
	exit 1
fi

#http://choon.net/opensource/php/php-${PHP_VER}-mail-header.patch
APPLY_MAIL_HEADER_PATCH=${MAIL_HEADER_PATCH}
MAIL_HEADER_FILE_PHP5=php-${PHP5_VER}-mail-header.patch

PCRE_VER=`getVer pcre`
CURL_VER=`getVer curl`
ZLIB_VER=`getVer zlib`
MCRYPT_VER=`getVer mcrypt`

if [ "${APACHE_OPT}" = "1.3" ]; then
	MODPERL_VER=`getVer mod_perl`
	MODPERL_INDEX=mod_perl
elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
	MODPERL_VER=`getVer mod_perl2`
	MODPERL_INDEX=mod_perl2
fi

MHASH_VER=`getVer mhash`
SUPHP_VER=`getVer suphp`
DOVECOT_VER=`getVer dovecot`
EXIM_VER=`getVer exim`
PROFTPD_VER=`getVer proftpd`
AUTOCONF_VER=`getVer autoconf`
AUTOMAKE_VER=`getVer automake`
LIBTOOL_VER=`getVer libtool`
LIBXML2_VER=`getVer libxml2`
LIBXSLT_VER=`getVer libxslt`
FREETYPE_VER=`getVer freetype`
ICONV_VER=`getVer iconv`
ICU_VER=`getVer icu4c`
IMAP_VER=`getVer imap`
CLAMAV_VER=`getVer clamav`
AWSTATS_VER=`getVer awstats`

ZEND_VER=`getVer ZendOptimizer-linux-glibc23-i386`
FBSD4_ZEND_VER=`getVer ZendOptimizer-freebsd4.3-i386`
FBSD5_ZEND_VER=`getVer ZendOptimizer-freebsd5.4-i386`

if [ -e /lib64 ]; then
	PNG_VER=`getVer libpng64`
else
	PNG_VER=`getVer libpng`
fi

# SpamAssassin versions
SPAMASSASSIN_VER=`getVer spamassassin`
DIGEST_VER=`getVer digest`
DIGEST_SHA1_VER=`getVer digest_sha1`
PARSER_VER=`getVer parser`
NETDNS_VER=`getVer netdns`
NETIP_VER=`getVer netip`
URI_VER=`getVer uri`
NET_CIDR_LITE_VER=`getVer net_cidr_lite`
STORABLE_VER=`getVer storable`
DB_FILE_VER=`getVer db_file`
MAIL_SPF_VER=`getVer mail_spf`
SYS_HOSTNAME_VER=`getVer sys_hostname`
NET_SSLeay_VER=`getVer net_ssleay`
IO_SOCKET_VER=`getVer io_socket`

# SpamAssassin names
NETDNS_NAME=Net-DNS-${NETDNS_VER}
NETIP_NAME=Net-IP-${NETIP_VER}
URI_NAME=URI-${URI_VER}
NET_CIDR_LITE_NAME=Net-CIDR-Lite-${NET_CIDR_LITE_VER}
DIGEST_NAME=Digest-${DIGEST_VER}
DIGEST_SHA1_NAME=Digest-SHA1-${DIGEST_SHA1_VER}
PARSER_NAME=HTML-Parser-${PARSER_VER}
STORABLE_NAME=Storable-${STORABLE_VER}
DB_FILE_NAME=DB_File-${DB_FILE_VER}
MAIL_SPF_NAME=Mail-SPF-${MAIL_SPF_VER}
SYS_HOSTNAME_NAME=Sys-Hostname-Long-${SYS_HOSTNAME_VER}
NET_SSLeay_NAME=Net_SSLeay.pm-${NET_SSLeay_VER}
IO_SOCKET_NAME=IO-Socket-SSL-${IO_SOCKET_VER}

# Applications versions
PHPMYADMIN_VER=`getVer phpmyadmin3`
ATMAIL_VER=`getVer atmail`
ROUNDCUBE_VER=`getVer roundcubemail`
SQUIRRELMAIL_VER=`getVer squirrelmail`
UEBIMIAU_VER=`getVer uebimiau`

# Jailed shell
JAIL_VER=`getVer jail`
COREUTILS_VER=`getVer coreutils`
NB_SMTP_VER=`getVer nbsmtp`

# More variables for jailed shell
SU_FILE=${JAIL_DIR}/ap${APACHE_OPT}/suexec.c

#####################################################

ensureVersion() {

	PERL_VER=`perl -v | head -n2 | tail -n1 | cut -d\  -f4 | cut -dv -f2`
	NUM1=`echo $PERL_VER | cut -d. -f1`
	NUM2=`echo $PERL_VER | cut -d. -f2`
	NUM3=`echo $PERL_VER | cut -d. -f3`
	
	if [ $NUM1 -gt 5 ]; then
		return 1;
	fi
	if [ $NUM2 -gt 6 ]; then
		return 1;
	fi
	if [ $NUM3 -gt 0 ]; then
		return 1;
	fi

	echo "Your perl version is $PERL_VER. You require at least perl 5.6.1 for Mail-SpamAssassin-${SPAMASSASSIN_VER}.";
	exit 1;
}

#####################################################

downloadMake() {
	cd $CWD

	getFile ${1}.tar.gz
	tar xvzf ${1}.tar.gz
	cd ${1}
	perl Makefile.PL
	make
	make install

	cd $CWD
}

#####################################################

# Applications variables
APPUSER=webapps
if [ "${OS}" = "FreeBSD" ]; then
        WGET=/usr/local/bin/wget
        TAR=/usr/bin/tar
        CHOWN=/usr/sbin/chown
	MYSQL_DATA=/home/mysql
	MYSQL_BIN=/usr/local/mysql/bin/mysql
else
        WGET=/usr/bin/wget
        TAR=/bin/tar
        CHOWN=/bin/chown
	if [ -e /etc/debian_version ]; then
		MYSQL_DATA=/home/mysql
		MYSQL_BIN=/usr/local/mysql/bin/mysql
	else
		MYSQL_DATA=/var/lib/mysql
		MYSQL_BIN=/usr/bin/mysql
	fi
fi

# Variable for proftpd
PROFTPD_CONFIGURE=configure/proftpd/configure.proftpd
if [ -e custom/proftpd/configure.proftpd ]; then
	PROFTPD_CONFIGURE=custom/proftpd/configure.proftpd
fi

# Variables for apache
APACHE_SSL_CONFIGURE=configure/ap1/configure.apache_ssl
if [ -e custom/ap1/configure.apache_ssl ]; then
	APACHE_SSL_CONFIGURE=custom/ap1/configure.apache_ssl
fi
APACHE2_CONFIGURE=configure/ap2/configure.apache
if [ -e custom/ap2/configure.apache ]; then
	APACHE2_CONFIGURE=custom/ap2/configure.apache
fi
SUPHP_HTTPD=/etc/httpd/conf/extra/httpd-suphp.conf
PHP_HANDLERS_HTTPD=/etc/httpd/conf/extra/httpd-php-handlers.conf

if [ "${APACHE_OPT}" = "1.3" ]; then
	PHP5_CONFIGURE=configure/ap1/configure.php5
	if [ -e custom/ap1/configure.php5 ]; then
		PHP5_CONFIGURE=custom/ap1/configure.php5
	fi
	PHP6_CONFIGURE=configure/ap1/configure.php6
	if [ -e custom/ap1/configure.php6 ]; then
		PHP6_CONFIGURE=custom/ap1/configure.php6
	fi
elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
	PHP5_CONFIGURE=configure/ap2/configure.php5
	if [ -e custom/ap2/configure.php5 ]; then
		PHP5_CONFIGURE=custom/ap2/configure.php5
	fi
	PHP6_CONFIGURE=configure/ap2/configure.php6
	if [ -e custom/ap2/configure.php6 ]; then
		PHP6_CONFIGURE=custom/ap2/configure.php6
	fi
else
	echo "Can not find configure files."
	exit 1
fi

AP1CONFDIR=${WORKDIR}/configure/ap1/conf
AP2CONFDIR=${WORKDIR}/configure/ap2/conf

# Variables for suPHP
PHP5_CONFIGURE_SUPHP=configure/suphp/configure.php5
if [ -e custom/suphp/configure.php5 ]; then
	PHP5_CONFIGURE_SUPHP=custom/suphp/configure.php5
fi
PHP6_CONFIGURE_SUPHP=configure/suphp/configure.php6
if [ -e custom/suphp/configure.php6 ]; then
	PHP6_CONFIGURE_SUPHP=custom/suphp/configure.php6
fi
SUPHP_CONFIGURE=configure/suphp/configure.suphp
if [ -e custom/suphp/configure.suphp ]; then
	SUPHP_CONFIGURE=custom/suphp/configure.suphp
fi
SUPHP_PATH=/usr/local/suphp
SUPHP_CONF_FILE=${SUPHP_PATH}/etc/suphp.conf
PHP_INI=/usr/local/lib/php.ini
PHP_INI_SUPHP5=/usr/local/etc/php5/cgi/php.ini
PHP_INI_SUPHP6=/usr/local/etc/php6/cgi/php.ini

# Variables for frontpage
ROOT_GRP=root
if [ ${OS} = "FreeBSD" ]; then
	ROOT_GRP=wheel
fi

USER_INPUT=1
INPUT_VALUE=d

if [ ${OS} = "FreeBSD" ]; then
        OS_VER=`uname -r | cut -d- -f1`
elif [ -e /etc/fedora-release ]; then
        OS=fedora
 	if [ "`cat /etc/fedora-release | awk '{ print $1, $2 }'`" = "Fedora Core" ]; then
        	OS_VER=`cat /etc/fedora-release | awk '{ print $4 }'`
	elif [ "`cat /etc/fedora-release | awk '{ print $1, $2 }'`" = "Fedora release" ]; then
        	OS_VER=`cat /etc/fedora-release | awk '{ print $3 }'`
	fi
elif [ -e ${DEBIAN_VERSION} ]; then
	OS_VER=3.1
else
        OS_VER=`cat /etc/redhat-release | cut -d\  -f5`
	if [ "${OS_VER}" = "" ]; then
		OS_VER=`cat /etc/redhat-release | cut -d\  -f1`
	fi
fi

B64=0
if [ -e /usr/lib64 ]; then
	if [ "`ls /usr/lib64/ | grep -v libmudflap | wc -l`" != "0" ]; then
		B64=1

		LD_LIBRARY_PATH=/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib
		export LD_LIBRARY_PATH
	fi
fi

case "${OS_VER}" in
        1|1.90|2|2.0|2.1|3|3.0|3.1|4|4.0|5|6|7|7.2|7.3|8|8.0|8|9|9.0|release|ES|WS|CentOS|Server) ZENDNAME=ZendOptimizer-${ZEND_VER}-linux-glibc23-i386
                ;;
        4.8|4.9|4.10|4.11)	ZEND_VER=$FBSD4_ZEND_VER
				ZENDNAME=ZendOptimizer-${ZEND_VER}-freebsd4.3-i386
                ;;
        5.0|5.1|5.2|5.2.1|5.3|5.4|5.5)	ZEND_VER=$FBSD5_ZEND_VER
					ZENDNAME=ZendOptimizer-${ZEND_VER}-freebsd5.4-i386
                ;;
	6.0|6.1|6.2|6.3|6.4|7.0|7.1) ZENDNAME=ZendOptimizer-${ZEND_VER}-freebsd6.0-i386
		;;
#	7.0|7.1) ZENDNAME=ZendOptimizer-${ZEND_VER}-freebsd7.0-i386
#		;;
esac

if [ ${B64} -eq 1 ]; then
	ZENDNAME=ZendOptimizer-${ZEND_VER}-linux-glibc23-x86_64
fi

if [ -e ${DEBIAN_VERSION} ]; then
	ZENDNAME=ZendOptimizer-${ZEND_VER}-linux-glibc23-i386
fi

ZENDFILE=${ZENDNAME}.tar.gz

JPEGFILE=jpegsrc.v6b.tar.gz
JPEGDIR=jpeg-6b

WEBALIZER_VER=`getVer webalizer`
WEBALIZER=webalizer-${WEBALIZER_VER}
WEBALIZER_FILE=webalizer-${WEBALIZER_VER}-src.tgz

####################################################

doclean_old_webapps() {
	if [ "${CLEAN_OLD_WEBAPPS_OPT}" != "yes" ]; then
		echo "You can not clean webapps, because you do not have it set in options.conf file.";
		exit 1;
	fi
	
	#Clean phpMyAdmin
	if [ "${PHPMYADMIN_OPT}" = "yes" ]; then
		PHPMYADMIN_CUR=`ls -ld /var/www/html/phpMyAdmin | cut -d\> -f2 | cut -d- -f2,3,4`
		for i in `ls /var/www/html/ | grep phpMyAdmin- | grep -v "${PHPMYADMIN_CUR}"`; do { 
			rm -rf /var/www/html/$i; 
			if [ "${CLEAN_OPT}" = "no" ]; then
				echo "Removing /var/www/html/$i..."; 
			fi
		};
		done;
	fi

	#Clean SquirrelMail
	if [ "${SQUIRRELMAIL_OPT}" = "yes" ]; then
		SQUIRRELMAIL_CUR=`ls -ld /var/www/html/squirrelmail | cut -d\> -f2 | cut -d- -f2`
		for i in `ls /var/www/html/ | grep squirrelmail- | grep -v "${SQUIRRELMAIL_CUR}"`; do { 
			rm -rf /var/www/html/$i; 
			if [ "${CLEAN_OPT}" = "no" ]; then
				echo "Removing /var/www/html/$i..."; 
			fi
		};
		done;
	fi

	#Clean Atmail
	if [ "${ATMAIL_OPT}" = "yes" ]; then
		ATMAIL_CUR=`ls -ld /var/www/html/atmail | cut -d\> -f2 | cut -d- -f2`
		for i in `ls /var/www/html/ | grep atmail- | grep -v "${ATMAIL_CUR}"`; do { 
			rm -rf /var/www/html/$i; 
			if [ "${CLEAN_OPT}" = "no" ]; then
				echo "Removing /var/www/html/$i..."; 
			fi
		};
		done;
	fi

	#Clean RoundCube
	if [ "${ROUNDCUBE_OPT}" = "yes" ]; then
		ROUNDCUBE_CUR=`ls -ld /var/www/html/roundcube | cut -d\> -f2 | cut -d- -f2`
		for i in `ls /var/www/html/ | grep roundcubemail- | grep -v "${ROUNDCUBE_CUR}"`; do { 
			rm -rf /var/www/html/$i; 
			if [ "${CLEAN_OPT}" = "no" ]; then
				echo "Removing /var/www/html/$i..."; 
			fi
		};
		done;
	fi

	#Clean AWstats
	if [ "${AWSTATS_OPT}" = "yes" ]; then
		AWSTATS_CUR=`ls -ld /usr/local/awstats | cut -d\> -f2 | cut -d- -f2`
		for i in `ls /usr/local/ | grep awstats- | grep -v "${AWSTATS_CUR}"`; do { 
			rm -rf /usr/local/$i; 
			if [ "${CLEAN_OPT}" = "no" ]; then
				echo "Removing /usr/local/$i..."; 
			fi
		};
		done;
	fi
}

####################################################

doClean() {
	cd ${CWD}
	if [ "${CLEANAPACHE_OPT}" = "yes" ]; then
		rm -rf apache_${APACHE_VER};
	fi
	rm -rf mod_ssl-${MODSSL_VER}-${APACHE_VER};
	rm -rf php-${PHP6_VER};
	rm -rf php-${PHP5_VER};
	rm -rf mod_perl-${MODPERL_VER};
	rm -rf curl-${CURL_VER};
	rm -rf pcre-${PCRE_VER};
	rm -rf zlib-${ZLIB_VER};
	rm -rf ${JPEGDIR}
	rm -rf libpng-${PNG_VER};
	rm -rf libmcrypt-${MCRYPT_VER};
	rm -rf mhash-${MHASH_VER};
	rm -rf freetype-${FREETYPE_VER};
	rm -rf libiconv-${ICONV_VER};
	rm -rf libxslt-${LIBXSLT_VER};
	rm -rf libxml2-${LIBXML2_VER};
	rm -rf icu4c-${ICU_VER}-src;
	rm -rf ${ZENDNAME};
	rm -rf ${WEBALIZER};
	rm -rf proftpd-${PROFTPD_VER};
	rm -rf httpd-${APACHE2_VER}
	rm -rf ${MODPERL2_DIR};
	rm -rf exim-${EXIM_VER};
	rm -rf dovecot-${DOVECOT_VER};
	rm -rf suphp-${SUPHP_VER};
	rm -rf autoconf-${AUTOCONF_VER};
	rm -rf automake-${AUTOMAKE_VER};
	rm -rf libtool-${LIBTOOL_VER};
	rm -rf Mail-SpamAssassin-${SPAMASSASSIN_VER}
	rm -rf clamav-${CLAMAV_VER}
	rm -rf imap-${IMAP_VER}
	
	# Jailed shell
	rm -rf coreutils-${COREUTILS_VER}
	rm -f ${JAIL_DIR}/su
	rm -f ${JAIL_DIR}/jail
	rm -rf nbsmtp-${NB_SMTP_VER}
	rm -f nbsmtp
	
	if [ "${CLEAN_OLD_TARBALLS_OPT}" = "yes" ]; then
		doclean_old_tarballs;
	fi
	
	if [ "${CLEAN_OLD_WEBAPPS_OPT}" = "yes" ]; then
		doclean_old_webapps;
	fi
	
	if [ "${CLEAN_OPT}" = "no" ]; then
		echo "All clean!";
	fi
}

####################################################

if [ "${CLEAN_OPT}" = "yes" ]; then
	doClean;
fi

####################################################

showHelp() {
	echo "*************************************************";
	echo "*                                               *";
	echo "*        DirectAdmin WebServices Installer      *";
	echo "* Written by Martynas Bendorius and DirectAdmin *";
	echo "*              Version: ${BUILDSCRIPT_VER}                   *";
	echo "*                                               *";
	echo "*************************************************";
	echo "";
	echo "  To build everything run:";
	echo "     $0 all";
	echo "";
	echo " ${boldon}NOTE${boldoff}: Command all will compile everything as set in the options.conf, please take a look at \"${boldon}$0 options${boldoff}\"!";
	echo "";
	echo "";
	echo "  Other options:";
	echo "     $0 apache";
	echo "     $0 autoconf";
	echo "     $0 automake";
	echo "     $0 awstats";
	echo "     $0 clamav";
	echo "     $0 curl";
	echo "     $0 cron";
	echo "     $0 dovecot";
	echo "     $0 exim";
	echo "     $0 exim_conf";
	echo "     $0 freetype";
	echo "     $0 iconv";
	echo "     $0 icu";
	echo "     $0 imap";
	echo "     $0 libjpeg";
	echo "     $0 libpng";
	echo "     $0 libtool";
	echo "     $0 libxml2";
	echo "     $0 libxslt";
	echo "     $0 mcrypt";
	echo "     $0 mhash";
	echo "     $0 mod_perl";
	echo "     $0 mysql";
	echo "     $0 pcre";
	echo "     $0 php";
	echo "     $0 php-ini";
	echo "     $0 proftpd";
	echo "     $0 rewrite_confs";
	echo "     $0 spamassassin";
	echo "     $0 update_versions";
	echo "     $0 used_configs";
	echo "     $0 versions";
	echo "     $0 webalizer";
	echo "     $0 zend";
	echo "     $0 zlib";
	echo "";
	echo "  Applications:";
	echo "     $0 phpmyadmin";
	echo "     $0 atmail";
	echo "     $0 roundcube";
	echo "     $0 squirrelmail";
	echo "     $0 uebimiau";
	echo "";
	echo "  Jailed shell (beta):";
	echo "     $0 all_jail";
	echo "     $0 coreutils";
	echo "     $0 shell";
	echo "     $0 smtp_mail";
	echo "     ./jail/jail_user.sh ${boldon}user${boldoff}";
	echo "";
	echo "  Remove old build data:";
	echo "     $0 clean";
	echo "     $0 clean_old_webapps";
	echo "";
	echo "  Get latest build script or (and) data:";
	echo "     $0 update";
	echo "     $0 update_script";
	echo "";
	echo "  Get data for current build script:";
	echo "     $0 update_data";
	echo "";
	echo "  These functions are only recommended ${boldon}for experienced users${boldoff}:";
	echo "     $0 php5-cli";
	echo "     $0 php6-cli";
	echo "     $0 php5-cgi";
	echo "     $0 php6-cgi";
	echo "     $0 todovecot";
	echo "";
	echo "  You can pass a 2nd argument to automate the input:";
	echo "     $0 <option> d : do the default action";
	echo "     $0 <option> y : answer yes to all questions";
	echo "     $0 <option> n : answer no to all questions";
	echo "";
}

checkFile() {
	if [ ! -e $1 ]
	then
		echo "*** Cannot find $1. Aborting ***";
		do_exit 0;
	else
		echo "Found $1";
	fi
}

quitIfLocked(){
	if [ -e ${WORKDIR}/.custombuild ]; then
		echo "Another instance of custombild is running, please delete the .custombuild file if you want to use custombuild."
		if [ "$1" != "" ]; then
			echo "Quit at position: $1";
		fi
		exit 1	
	fi
}

####################################################

options(){
	if [ "${APACHE_OPT}" = "1.3" ]; then
		O_APACHE=${APACHE_VER}
	elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
		O_APACHE=${APACHE2_VER}
	fi
	echo "Apache: ${boldon}${O_APACHE}${boldoff}"

	if [ "${DOVECOT_OPT}" = "yes" ]; then
		echo "Dovecot: ${boldon}${DOVECOT_VER}${boldoff}"
	else
		echo "Dovecot: ${boldon}no${boldoff}"
	fi

	if [ "${AWSTATS_OPT}" = "yes" ]; then
		echo "AWstats: ${boldon}${AWSTATS_VER}${boldoff}"
	else
		echo "AWstats: ${boldon}no${boldoff}"
	fi
	
	if [ "${EXIM_OPT}" = "yes" ]; then
		echo "Exim: ${boldon}${EXIM_VER}${boldoff}"
	else
		echo "Exim: ${boldon}no${boldoff}"
	fi

	if [ "${EXIMCONF_OPT}" = "yes" ]; then
		echo "exim.conf update: ${boldon}yes${boldoff}"
	else
		echo "exim.conf update: ${boldon}no${boldoff}"
	fi

	if [ "${SPAMASSASSIN_OPT}" = "yes" ]; then
		echo "SpamAssassin: ${boldon}${SPAMASSASSIN_VER}${boldoff}"
	else
		echo "SpamAssassin: ${boldon}no${boldoff}"
	fi
	
	if [ "${CLAMAV_OPT}" = "yes" ]; then
		echo "ClamAV: ${boldon}${CLAMAV_VER}${boldoff}"
	else
		echo "ClamAV: ${boldon}no${boldoff}"
	fi
	
	if [ "${MYSQLINST_OPT}" = "yes" ]; then
		echo "MySQL: ${boldon}${MYSQL_VER}${boldoff}"
	else
		echo "MySQL: ${boldon}no${boldoff}"
	fi

	echo "MySQL backup: ${boldon}${MYSQLBACK_OPT}${boldoff}"

	if [ "${DEFPHP}" = "6" ]; then
		DEFPHPVER="${PHP6_VER}"
	else
		DEFPHPVER="${PHP5_VER}"
	fi

	if [ "${MAIL_HEADER_PATCH}" = "yes" ]; then
		MHP_OPT="with ${boldon}mail() header patch${boldoff}"
	else
		MHP_OPT="without ${boldon}mail() header patch${boldoff}"
	fi

	if [ "${PHP6_CLI_OPT}" = "yes" ] && [ "${PHP5_CGI_OPT}" = "no" ]; then
		echo "PHP: ${boldon}${PHP6_VER}${boldoff} as ${boldon}CLI${boldoff} ${MHP_OPT}"
	fi
	if [ "${PHP6_CGI_OPT}" = "no" ] && [ "${PHP5_CLI_OPT}" = "yes" ]; then
		echo "PHP: ${boldon}${PHP5_VER}${boldoff} as ${boldon}CLI${boldoff} ${MHP_OPT}"
	fi
	if [ "${PHP6_CLI_OPT}" = "no" ] && [ "${PHP5_CGI_OPT}" = "yes" ]; then
		echo "PHP: ${boldon}${PHP5_VER}${boldoff} as ${boldon}CGI${boldoff} ${MHP_OPT}"
	fi
	if [ "${PHP6_CGI_OPT}" = "yes" ] && [ "${PHP5_CLI_OPT}" = "no" ]; then
		echo "PHP: ${boldon}${PHP6_VER}${boldoff} as ${boldon}CGI${boldoff} ${MHP_OPT}"
	fi
	if [ "${PHP6_CLI_OPT}" = "yes" ] && [ "${PHP5_CGI_OPT}" = "yes" ]; then
		echo "PHP: ${boldon}${PHP6_VER}${boldoff} as ${boldon}CLI${boldoff} and ${boldon}${PHP5_VER}${boldoff} as ${boldon}CGI${boldoff} (default: PHP ${DEFPHPVER}) ${MHP_OPT}"
	fi
	if [ "${PHP6_CGI_OPT}" = "yes" ] && [ "${PHP5_CLI_OPT}" = "yes" ]; then
		echo "PHP: ${boldon}${PHP5_VER}${boldoff} as ${boldon}CLI${boldoff} and ${boldon}${PHP6_VER}${boldoff} as ${boldon}CGI${boldoff} (default: PHP ${DEFPHPVER}) ${MHP_OPT}"
	fi
	if [ "${PHP6_CGI_OPT}" = "yes" ] && [ "${PHP5_CGI_OPT}" = "yes" ]; then
		echo "PHP: ${boldon}${PHP6_VER}${boldoff} as ${boldon}CGI${boldoff} and ${boldon}${PHP5_VER}${boldoff} as ${boldon}CGI${boldoff} (default: PHP ${DEFPHPVER}) ${MHP_OPT}"
	fi

	if [ "${PHPMYADMIN_OPT}" = "yes" ]; then
		echo "phpMyAdmin: ${boldon}${PHPMYADMIN_VER}${boldoff}"
	else
		echo "phpMyAdmin: ${boldon}no${boldoff}"
	fi

	if [ "${PROFTPD_OPT}" = "yes" ]; then
		echo "ProFTPD: ${boldon}${PROFTPD_VER}${boldoff}"
	else
		echo "ProFTPD: ${boldon}no${boldoff}"
	fi

	if [ "${ATMAIL_OPT}" = "yes" ]; then
		echo "Atmail webmail: ${boldon}${ATMAIL_VER}${boldoff}"
	else
		echo "Atmail webmail: ${boldon}no${boldoff}"
	fi
	
	if [ "${ROUNDCUBE_OPT}" = "yes" ]; then
		echo "RoundCube webmail: ${boldon}${ROUNDCUBE_VER}${boldoff}"
	else
		echo "RoundCube webmail: ${boldon}no${boldoff}"
	fi

	echo "Replace \"php.ini\" with '$0 all' and '$0 php-ini': ${boldon}${PHPINI_OPT}${boldoff}"

	if [ "${PHPINI_OPT}" = "yes" ]; then
		echo "Replace \"php.ini\" using type: ${boldon}${PHPINITYPE_OPT}${boldoff}"
	fi

	echo "Run \"clean\" every time: ${boldon}${CLEAN_OPT}${boldoff}"
	echo "Run \"clean_old_webapps\" every time: ${boldon}${CLEAN_OLD_WEBAPPS_OPT}${boldoff}"
	echo "Run \"clean_old_tarballs\" every time: ${boldon}${CLEAN_OLD_TARBALLS_OPT}${boldoff}"
	
	echo "Show texts in bold: ${boldon}${BOLD_OPT}${boldoff}"
	
	if [ "${SQUIRRELMAIL_OPT}" = "yes" ]; then
		echo "SquirrelMail: ${boldon}${SQUIRRELMAIL_VER}${boldoff}"
	else
		echo "SquirrelMail: ${boldon}no${boldoff}"
	fi

	if [ "${UEBIMIAU_OPT}" = "yes" ]; then
		echo "UebiMiau: ${boldon}${UEBIMIAU_VER}${boldoff}"
	else
		echo "UebiMiau: ${boldon}no${boldoff}"
	fi

	if [ "${ZEND_OPT}" = "yes" ]; then
		echo "Zend Optimizer: ${boldon}${ZEND_VER}${boldoff}"
	else
		echo "Zend Optimizer: ${boldon}no${boldoff}"
	fi
}

####################################################

used_configs(){
  if [ "${APACHE_OPT}" = "1.3" ]; then
	echo "Apache configuration file: ${WORKDIR}/${APACHE_SSL_CONFIGURE}"
  elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
	echo "Apache configuration file: ${WORKDIR}/${APACHE2_CONFIGURE}"
  fi

  if [ "${PHP5_CLI_OPT}" = "yes" ]; then
	echo "PHP5 configuration file: ${WORKDIR}/${PHP5_CONFIGURE}"
  fi

  if [ "${PHP5_CGI_OPT}" = "yes" ]; then
	echo "suPHP configuration file: ${WORKDIR}/${SUPHP_CONFIGURE}"
	echo "PHP5 configuration file: ${WORKDIR}/${PHP5_CONFIGURE_SUPHP}"
  fi

  if [ "${PHP6_CLI_OPT}" = "yes" ]; then
	echo "PHP6 configuration file: ${WORKDIR}/${PHP6_CONFIGURE}"
  fi

  if [ "${PHP6_CGI_OPT}" = "yes" ]; then
	echo "suPHP configuration file: ${WORKDIR}/${SUPHP_CONFIGURE}"
	echo "PHP6 configuration file: ${WORKDIR}/${PHP6_CONFIGURE_SUPHP}"
  fi

  if [ "${PROFTPD_OPT}" = "yes" ]; then
	echo "ProFTPD configuration file: ${WORKDIR}/${PROFTPD_CONFIGURE}"
  fi
}

####################################################

preCheck() {
	checkFile /usr/bin/patch
	checkFile /usr/bin/gcc
}

####################################################

# Check for webapps user
if [ `grep -c -e "^${APPUSER}:" /etc/passwd` = "0" ]; then
        if [ "${OS}" = "FreeBSD" ]; then
                /usr/sbin/pw groupadd ${APPUSER} 2> /dev/null
                /usr/sbin/pw useradd -g ${APPUSER} -n ${APPUSER} -b ${WWWDIR} 2> /dev/null
        elif [ -e /etc/debian_version ]; then
                /usr/sbin/adduser --system --group --firstuid 100 --home ${WWWDIR} --no-create-home --disabled-login --force-badname ${APPUSER}
        else
                /usr/sbin/useradd -d ${WWWDIR} ${APPUSER} 2> /dev/null
        fi
fi

####################################################

# Do we have httpd-phpmodules.conf line?
NEWCONFIGS=1
if [ -e ${HTTPD_CONF} ]; then
    if [ "`grep -c -e '/etc/httpd/conf/extra/httpd-phpmodules.conf' ${HTTPD_CONF}`" = "0" ]; then
        NEWCONFIGS=0
    fi
fi

####################################################

checkCURL() {
	cd ${CWD};
	NUM=1
	if [ -e /usr/local/bin/php ]; then
		NUM=`/usr/local/bin/php -i | grep configure | cut -d\> -f2 | grep -c '\-\-with\-curl'`
	fi
	if [ ${NUM} = "0" ]
	then
		return;
	fi

	if [ -e /usr/local/lib/libcurl.so ]
	then
		if [ ${USER_INPUT} -eq 1 ]; then
			echo -n "cURL is already installed. Do you want to build it again? (y/n) :";
			read yesno;
			echo "";
		else
			if [ "${INPUT_VALUE}" = "d" ]; then
				yesno=y
			else
				yesno=${INPUT_VALUE}
			fi
		fi
		if [ "${yesno}" = "n" ]
		then
			return;
		fi	
	fi
	
	doCURL;	
}

checkLibJpeg() {
	cd ${CWD};
	NUM=1
	if [ -e /usr/local/bin/php ]; then
		NUM=`/usr/local/bin/php -i | grep configure | cut -d\> -f2 | grep -c '\-\-with\-jpeg\-dir'`
	fi
        if [ ${NUM} = "0" ]
        then
                return;
        fi

	if [ -e /usr/local/lib/libjpeg.a ]
	then
		if [ ${FORCE} = 1 ]
		then
			return;
		fi

		if [ ${USER_INPUT} -eq 1 ]; then
			echo -n "LibJPEG is already installed. Do you want to build it again? (y/n) :";
			read yesno;
			echo "";
                else
                        if [ "${INPUT_VALUE}" = "d" ]; then
                                yesno=y
                        else
                                yesno=${INPUT_VALUE}
                        fi
                fi


		if [ "${yesno}" = "n" ]
		then
			return;
		fi
	fi

	doLibJpeg;
}

checkLibz() {
	if [ -e /usr/local/lib/libz.so ]
	then
		if [ ${FORCE} = 1 ]
		then
			return;
		fi

		if [ ${USER_INPUT} -eq 1 ]; then	
	                echo -n "LibZ is already installed. Do you want to build it again? (y/n) :";
        	        read yesno;
                	echo "";
                else
                        if [ "${INPUT_VALUE}" = "d" ]; then
                                yesno=y
                        else
                                yesno=${INPUT_VALUE}
                        fi
                fi

                if [ "${yesno}" = "n" ]
                then
                        return;
                fi
        fi

	doZlib;
}

checkLibPng() {
        cd ${CWD};
	NUM=1
	if [ -e /usr/local/bin/php ]; then
		NUM=`/usr/local/bin/php -i | grep configure | cut -d\> -f2 | grep -c '\-\-with\-png\-dir'`
	fi
        if [ ${NUM} = "0" ]
        then
                return;
        fi

	checkLibz;

        if [ -e /usr/local/lib/libpng.a ]
        then
		if [ ${FORCE} = 1 ]
		then
			return;
		fi
		
		if [ ${USER_INPUT} -eq 1 ]; then
	                echo -n "LibPng is already installed. Do you want to build it again? (y/n) :";
        	        read yesno;
                	echo "";
                else
                        if [ "${INPUT_VALUE}" = "d" ]; then
                                yesno=y
                        else
                                yesno=${INPUT_VALUE}
                        fi
                fi

                if [ "${yesno}" = "n" ]
                then
                        return;
                fi
        fi

        doLibPng;
}

checkMCrypt() {
        cd ${CWD};
	NUM=1
	if [ -e /usr/local/bin/php ]; then
		NUM=`/usr/local/bin/php -i | grep configure | cut -d\> -f2 | grep -c '\-\-with\-mcrypt'`
	fi
        if [ ${NUM} = "0" ]
        then
        	return;
        fi

	if [ -e /usr/local/lib/libmcrypt.so ]
	then

		if [ ${USER_INPUT} -eq 1 ]; then
			echo -n "mCrypt is already installed. Do you want to build it again? (y/n) :";
			read yesno;
			echo "";
                else
                        if [ "${INPUT_VALUE}" = "d" ]; then
                                yesno=y
                        else
                                yesno=${INPUT_VALUE}
                        fi
                fi
		
		if [ "${yesno}" = "n" ]
		then
			return;
		fi	
	fi

        doMCrypt;
}

checkMHash() {
        cd ${CWD};
	NUM=1
	if [ -e /usr/local/bin/php ]; then
		NUM=`/usr/local/bin/php -i | grep configure | cut -d\> -f2 | grep -c '\-\-with\-mhash'`
	fi
        if [ ${NUM} = "0" ]
        then
                return;
        fi

        if [ -e /usr/local/lib/libmhash.so ]
        then
		if [ ${USER_INPUT} -eq 1 ]; then
	                echo -n "mHash is already installed. Do you want to build it again? (y/n) :";
        	        read yesno;
                	echo "";
                else
                        if [ "${INPUT_VALUE}" = "d" ]; then
                                yesno=y
                        else
                                yesno=${INPUT_VALUE}
                        fi
                fi

                if [ "${yesno}" = "n" ]
                then
                        return;
                fi
        fi

        doMHash;
}

####################################################

checkFreeType() {
        cd ${CWD};
	NUM=1
	if [ -e /usr/local/bin/php ]; then
		NUM=`/usr/local/bin/php -i | grep configure | cut -d\> -f2 | grep -c '\-\-with\-freetype'`
	fi
        if [ ${NUM} = "0" ]
        then
                return;
        fi

        if [ -e /usr/local/lib/libfreetype.so ]
        then
		if [ ${USER_INPUT} -eq 1 ]; then
	                echo -n "FreeType is already installed. Do you want to build it again? (y/n) :";
        	        read yesno;
                	echo "";
                else
                        if [ "${INPUT_VALUE}" = "d" ]; then
                                yesno=y
                        else
                                yesno=${INPUT_VALUE}
                        fi
                fi

                if [ "${yesno}" = "n" ]
                then
                        return;
                fi
        fi

        doFreeType;
}

####################################################

checkIconv() {
        cd ${CWD};
	NUM=1
	if [ -e /usr/local/bin/php ]; then
		NUM=`/usr/local/bin/php -i | grep configure | cut -d\> -f2 | grep -c '\-\-with\-iconv'`
	fi
        if [ ${NUM} = "0" ]
        then
                return;
        fi

        if [ -e /usr/local/lib/libiconv.so ]
        then
		if [ ${USER_INPUT} -eq 1 ]; then
	                echo -n "iconv is already installed. Do you want to build it again? (y/n) :";
        	        read yesno;
                	echo "";
                else
                        if [ "${INPUT_VALUE}" = "d" ]; then
                                yesno=y
                        else
                                yesno=${INPUT_VALUE}
                        fi
                fi

                if [ "${yesno}" = "n" ]
                then
                        return;
                fi
        fi

        doIconv;
}

####################################################

dophpMyAdmin(){
	if [ "${PHPMYADMIN_OPT}" != "yes" ]; then
		echo "You can not install phpMyAdmin, because you do not have it set in options.conf file.";
		exit 1;
	fi

    cd ${CWD};
	if [ ! -d ${WWWDIR} ]; then
		echo "${WWWDIR} does not exist."
		do_exit 0
	fi

	TARFILE=${WORKDIR}/phpMyAdmin-${PHPMYADMIN_VER}.tar.gz
	REALPATH=${WWWDIR}/phpMyAdmin-${PHPMYADMIN_VER}
	ALIASPATH=${WWWDIR}/phpMyAdmin
	CONFIG=${REALPATH}/config.inc.php
	WEBFILE=${WEBPATH_SERVICES}/all/phpMyAdmin/phpMyAdmin-${PHPMYADMIN_VER}.tar.gz

	if [ ! -e ${TARFILE} ]; then
	        ${WGET} -O ${TARFILE} ${WEBFILE}
	fi

	if [ ! -e ${TARFILE} ]; then
		echo "The phpMyAdmin package cannot be found. Please ensure that the paths are correct";
		do_exit 0;
	fi

	M=`checkMD5 $TARFILE phpmyadmin3`
	if [ "$M" != "0" ]; then
		echo "";
		echo "${boldon}*** MD5 Checksum for $TARFILE Failed.  Redownloading...***${boldoff}";
		echo "";
		${WGET} -O ${TARFILE} ${WEBFILE}
	
	        M=`checkMD5 $TARFILE phpmyadmin`
		if [ "$M" != "0" ]; then
                                echo "";
                                echo "";
                                echo "${boldon}*** MD5 Checksum for $TARFILE failed *again*.***${boldoff}";
                                echo "The md5 checksum value may be incorrect, or a wrong file is being downloaded.";
                                echo "Install continuing with this possibly corrupted file. (it may also be fine)";
                                echo "";
                                echo "";
		fi
	fi

	${TAR} xzf ${TARFILE} -C ${WWWDIR};

	cp -f ${REALPATH}/config.sample.inc.php ${REALPATH}/config.inc.php
	perl -pi -e "s#\['auth_type'\] = 'cookie'#\['auth_type'\] = 'http'#" ${REALPATH}/config.inc.php
	perl -pi -e "s#\['extension'\] = 'mysql'#\['extension'\] = 'mysqli'#" ${REALPATH}/config.inc.php

	rm -f ${ALIASPATH} >/dev/null 2>&1
	ln -s ${REALPATH} ${ALIASPATH}

	chown -f -R ${APPUSER}:${APPUSER} ${REALPATH};
	chmod -f 755 ${REALPATH};

	chmod 000 ${REALPATH}/scripts
	
	echo "phpMyAdmin ${PHPMYADMIN_VER} installation is done."
}

####################################################

doSquirrelmail(){
	if [ "${SQUIRRELMAIL_OPT}" != "yes" ]; then
		echo "You can not install Squirrelmail, because you do not have it set in options.conf file.";
		exit 1;
	fi

        cd ${CWD};
	if [ ! -d ${WWWDIR} ]; then
		echo "${WWWDIR} does not exist."
		do_exit 0
	fi

	TARFILE=${WORKDIR}/squirrelmail-${SQUIRRELMAIL_VER}.tar.gz
	REALPATH=${WWWDIR}/squirrelmail-${SQUIRRELMAIL_VER}
	ALIASPATH=${WWWDIR}/squirrelmail
	CONFIG=${REALPATH}/config/config.php

	if [ ! -e ${TARFILE} ]; then
	        ${WGET} -O ${TARFILE} ${WEBPATH_SERVICES}/all/squirrelmail-${SQUIRRELMAIL_VER}.tar.gz
	fi

	if [ ! -e ${TARFILE} ]; then
                echo "The squirrelmail package cannot be found. Please ensure that the paths are correct";
                do_exit 0;
	fi

        M=`checkMD5 $TARFILE squirrelmail`
        if [ "$M" != "0" ]; then
                echo "";
                echo "${boldon}*** MD5 Checksum for $TARFILE Failed.  Redownloading...***${boldoff}";
                echo "";
		${WGET} -O ${TARFILE} ${WEBPATH_SERVICES}/all/squirrelmail-${SQUIRRELMAIL_VER}.tar.gz

                M=`checkMD5 $TARFILE squirrelmail`
                if [ "$M" != "0" ]; then
                                echo "";
                                echo "";
                                echo "${boldon}*** MD5 Checksum for $TARFILE failed *again*.***${boldoff}";
                                echo "The md5 checksum value may be incorrect, or a wrong file is being downloaded.";
                                echo "Install continuing with this possibly corrupted file. (it may also be fine)";
                                echo "";
                                echo "";
                fi
        fi

	#Extract the file
	${TAR} xzf ${TARFILE} -C ${WWWDIR}

	#this bit is to copy all of the preious setup to the new setup
	if [ -e ${ALIASPATH} ]; then
 		       cp -fR ${ALIASPATH}/data ${REALPATH}
	fi

	#link it from a fake path:
	/bin/rm -f ${ALIASPATH}
	/bin/ln -sf squirrelmail-${SQUIRRELMAIL_VER} ${ALIASPATH}

	#install the proper config:
	if [ ! -e ${CONFIG} ]; then
		/bin/cp -f ${REALPATH}/config/config_default.php ${CONFIG}

		/usr/bin/perl -pi -e 's/\$force_username_lowercase = false/\$force_username_lowercase = true/' ${CONFIG}
		/usr/bin/perl -pi -e "s/\'example.com\';/\\$\_SERVER\[\'HTTP_HOST\'\];\nwhile \(sizeof\(explode\(\'\.\', \\$\domain\)\) \> 2) {\n\t\\$\domain = substr(\\$\domain, strpos\(\\$\domain, \'\.\'\) \+ 1\);\n\}/" ${CONFIG}
	/usr/bin/perl -pi -e 's/\$show_contain_subfolders_option = false/\$show_contain_subfolders_option = true/' ${CONFIG}

		/usr/bin/perl -pi -e 's#/var/local/squirrelmail/data/#/var/www/html/squirrelmail/data/#' ${CONFIG}
		/usr/bin/perl -pi -e 's#/var/local/squirrelmail/attach/#/var/www/html/squirrelmail/data/#' ${CONFIG}

		#we want it to use port 587 and use smtp auth.
		/usr/bin/perl -pi -e 's/\$smtpPort = 25/\$smtpPort = 587/' ${CONFIG}
		/usr/bin/perl -pi -e "s#\$smtp_auth_mech = \'none\'#\$smtp_auth_mech = \'login\'#" ${CONFIG}

		      #enable the pluguins
		      /usr/bin/perl -pi -e "s/Add list of enabled plugins here/Add list of enabled plugins here\n\\$\plugins\[0\] = \'spamcop\';\n\\$\plugins\[1\] = \'filters\';\n\\$\plugins\[2\] = \'squirrelspell\';/" ${CONFIG}
		fi

	/usr/bin/perl -pi -e 's/\$allow_charset_search = true;/\$allow_charset_search = false;/' ${CONFIG}

	#set the permissions:
	/bin/chmod -R 755 ${REALPATH}
	${CHOWN} -R ${APPUSER}:${APPUSER} ${REALPATH}

	/bin/chmod -R 770 ${REALPATH}/data
	${CHOWN} -R apache:${APPUSER} ${REALPATH}/data
	
	echo "SquirrelMail ${SQUIRRELMAIL_VER} installation is done."
}

####################################################

doUebimiau(){
  if [ "${UEBIMIAU_OPT}" != "yes" ]; then
	echo "You can not install UebiMiau, because you do not have it set in options.conf file.";
	exit 1;
  fi

  cd ${CWD};

  if [ ! -d ${WWWDIR} ]; then
	echo "${WWWDIR} does not exist."
	do_exit 0
  fi

  REMOTE_FILE=${WEBPATH_SERVICES}/all/webmail-${UEBIMIAU_VER}.tar.gz
  FILE=${WORKDIR}/webmail-${UEBIMIAU_VER}.tar.gz;
  DEST=${WWWDIR};
  TMPDIR=${DEST}/webmail/tmp

  OS=`uname`
  TAR=/bin/tar
  MKDIR=/bin/mkdir
  CHMOD=/bin/chmod
  CHOWN=/bin/chown

  if [ "$OS" = "FreeBSD" ]; then
        TAR=/usr/bin/tar
        CHOWN=/usr/sbin/chown
  fi

  if [ ! -e ${FILE} ]; then
        wget -O $FILE $REMOTE_FILE
  fi

  if [ ! -e ${FILE} ]; then
        echo "Unable to find ${FILE}, make sure it exists.";
        exit -1;
  fi

  M=`checkMD5 $FILE uebimiau`
  if [ "$M" != "0" ]; then
    echo "";
    echo "${boldon}*** MD5 Checksum for $FILE Failed.  Redownloading...***${boldoff}";
    echo "";
    wget -O $FILE $REMOTE_FILE

    M=`checkMD5 $FILE uebimiau`
      if [ "$M" != "0" ]; then
	echo "";
	echo "";
	echo "${boldon}*** MD5 Checksum for $FILE failed *again*.***${boldoff}";
	echo "The md5 checksum value may be incorrect, or a wrong file is being downloaded.";
	echo "Install continuing with this possibly corrupted file. (it may also be fine)";
	echo "";
	echo "";
      fi
    fi

  $TAR xzf ${FILE} -C ${DEST}
  $MKDIR -p $TMPDIR
  $CHMOD -f -R 770 $TMPDIR;
  $CHOWN -f -R $APPUSER:$APPUSER $DEST/webmail
  $CHOWN -f -R apache:${APPUSER} $TMPDIR;

  if [ ! -e $TMPDIR/.htaccess ]; then
	  echo "Deny from All" >> $TMPDIR/.htaccess
  fi

  #increase the timeout from 10 minutes to 24
  perl -pi -e 's/idle_timeout = 10/idle_timeout = 24/' ${DEST}/webmail/inc/config.security.php
  perl -pi -e 's#\$temporary_directory = "./database/";#\$temporary_directory = "./tmp/";#' ${DEST}/webmail/inc/config.php
  perl -pi -e 's/= "ONE-FOR-EACH";/= "ONE-FOR-ALL";/' ${DEST}/webmail/inc/config.php
  perl -pi -e 's#\$smtp_server = "SMTP.DOMAIN.COM";#\$smtp_server = "localhost";#' ${DEST}/webmail/inc/config.php
  perl -pi -e 's/POP3.DOMAIN.COM/localhost/' ${DEST}/webmail/inc/config.php

  rm -rf ${DEST}/webmail/install
}

####################################################

doatmail(){
	if [ "${ATMAIL_OPT}" != "yes" ]; then
		echo "You can not install Atmail webmail, because you do not have it set in options.conf file.";
		exit 1;
	fi

    cd ${CWD};
	DA_MYSQL=/usr/local/directadmin/conf/mysql.conf
	TARFILE=${WORKDIR}/atmailopen-${ATMAIL_VER}.tgz
	WWWPATH=/var/www/html
	REALPATH=${WWWPATH}/atmail-${ATMAIL_VER}
	ALIASPATH=${WWWPATH}/atmail
	if [ -e /etc/httpd/conf/extra/httpd-alias.conf ]; then
		HTTPDCONF=/etc/httpd/conf/extra/httpd-alias.conf
	else
		HTTPDCONF=/etc/httpd/conf/httpd.conf
	fi
	DA_HOSTNAME="`hostname`"
	HTTPPATH=http://files.directadmin.com/services/all/atmail
	ADMIN_EMAIL1="`cat /usr/local/directadmin/data/users/admin/ticket.conf | grep email  | cut -d= -f2 | cut -d@ -f1`"
	ADMIN_EMAIL2="`cat /usr/local/directadmin/data/users/admin/ticket.conf | grep email  | cut -d@ -f2`"

	# variables for the database:
	ATMAIL_DB=da_atmail
	ATMAIL_DB_USER=da_atmail
	ATMAIL_DB_PASS="`perl -le'print map+(A..Z,a..z,0..9)[rand 62],0..7'`";
	MYSQLUSER="`grep "^user=" ${DA_MYSQL} | cut -d= -f2`"
	MYSQLPASSWORD="`grep "^passwd=" ${DA_MYSQL} | cut -d= -f2`"

	if [ ! -e ${TARFILE} ]; then
		${WGET} -O ${TARFILE} ${HTTPPATH}/atmailopen-${ATMAIL_VER}.tgz
	fi

	if [ ! -e ${TARFILE} ]; then
		echo "Can not download ${TARFILE}"
		exit 1
	fi

        M=`checkMD5 $TARFILE atmail`
        if [ "$M" != "0" ]; then
                echo "";
                echo "${boldon}*** MD5 Checksum for $TARFILE Failed.  Redownloading...***${boldoff}";
                echo "";
		${WGET} -O ${TARFILE} ${HTTPPATH}/atmailopen-${ATMAIL_VER}.tgz

                M=`checkMD5 $TARFILE atmail`
                if [ "$M" != "0" ]; then
                                echo "";
                                echo "";
                                echo "${boldon}*** MD5 Checksum for $TARFILE failed *again*.***${boldoff}";
                                echo "The md5 checksum value may be incorrect, or a wrong file is being downloaded.";
                                echo "Install continuing with this possibly corrupted file. (it may also be fine)";
                                echo "";
                                echo "";
                fi
        fi

	#Extract the file
	${TAR} xzf ${TARFILE} -C ${WWWPATH}
	if [ -d ${WWWPATH}/atmail-${ATMAIL_VER} ]; then
		rm -rf ${WWWPATH}/atmail-${ATMAIL_VER}
	fi
	mv ${WWWPATH}/atmailopen ${WWWPATH}/atmail-${ATMAIL_VER}

	if [ ! -e ${REALPATH} ]; then
		echo "Directory ${REALPATH} does not exist"
		exit 1
	fi

	mkdir -p ${REALPATH}/logs

	if [ -e ${ALIASPATH} ]; then
		if [ -d ${ALIASPATH}/logs ]; then
			cp -fR ${ALIASPATH}/logs/* ${REALPATH}/logs
		fi
			if [ -d ${ALIASPATH}/tmp ]; then
			cp -fR ${ALIASPATH}/tmp/* ${REALPATH}/tmp
		fi
	fi

	#link it from a fake path:
	/bin/rm -f ${ALIASPATH}
	/bin/ln -sf atmail-${ATMAIL_VER} ${ALIASPATH}
	cd ${REALPATH}

	#insert data to mysql and create database/user for atmail:
	if [ ! -d $MYSQL_DATA/${ATMAIL_DB} ]; then
		if [ -d install ]; then
			echo "Inserting data to mysql and creating database/user for atmail..."
			mysql -e "CREATE DATABASE ${ATMAIL_DB};" --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
			mysql -e "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX ON ${ATMAIL_DB}.* TO '${ATMAIL_DB_USER}'@'localhost' IDENTIFIED BY '${ATMAIL_DB_PASS}';" --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
			mysql -e "use ${ATMAIL_DB}; source install/atmail.mysql;" --user=${ATMAIL_DB_USER} --password=${ATMAIL_DB_PASS}
			echo "Database created, ${ATMAIL_DB_USER} password is ${ATMAIL_DB_PASS}"
		else
			echo "Can not find install directory in atmail-${VERSION}"
			exit 1
		fi
	else
		mysql -e "SET PASSWORD FOR '${ATMAIL_DB_USER}'@'localhost' = PASSWORD('${ATMAIL_DB_PASS}');" --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
	fi

	#install the proper config:
	if [ -d ../atmail ]; then
		#edit configuration file
		echo "Editing atmail configuration..."
		cd ${REALPATH}/libs/Atmail
	    cp -f Config.php.default Config.php
		
		/usr/bin/perl -pi -e "s|'installed' => 0|'installed' => 1|" Config.php > /dev/null
		/usr/bin/perl -pi -e "s| 'decode_tnef' => 1| 'decode_tnef' => 0|" Config.php > /dev/null
		/usr/bin/perl -pi -e "s|'sql_user' => 'root'|'sql_user' => '${ATMAIL_DB_USER}'|" Config.php > /dev/null
		/usr/bin/perl -pi -e "s|'allow_Signup' => '1'|'allow_Signup' => '0'|" Config.php > /dev/null
		/usr/bin/perl -pi -e "s|'smtphost' => 'mail.iinet.net.au'|'smtphost' => 'localhost'|" Config.php > /dev/null
		/usr/bin/perl -pi -e "s|'install_dir' => ''|'install_dir' => '${REALPATH}'|" Config.php > /dev/null
		/usr/bin/perl -pi -e "s|'user_dir' => '/var/www/html/atmailopen'|'user_dir' => '${REALPATH}'|" Config.php > /dev/null
		/usr/bin/perl -pi -e "s|'sql_table' => 'atmail'|'sql_table' => '${ATMAIL_DB}'|" Config.php > /dev/null
		/usr/bin/perl -pi -e "s|'sql_pass' => ''|'sql_pass' => '${ATMAIL_DB_PASS}'|" Config.php > /dev/null
		/usr/bin/perl -pi -e "s|'install_type' => 'server'|'install_type' => 'standalone'|" Config.php > /dev/null
		/usr/bin/perl -pi -e "s|'gpg_path' => ''|'gpg_path' => '/usr/bin/gpg'|" Config.php > /dev/null
		/usr/bin/perl -pi -e "s|'admin_email' => ''|'admin_email' => '${ADMIN_EMAIL1}\@${ADMIN_EMAIL2}'|" Config.php > /dev/null
		/usr/bin/perl -pi -e "s|'error_log' => '/usr/local/atmail/logs/error_log'|'error_log' => '${REALPATH}/logs/error_log'|" Config.php > /dev/null
		
		#edit skin
		cd ${REALPATH}/html
		perl -pi -e 's|<td align="left"><input name="MailServer" type="text" class="logininput" id="MailServer"></td>|<td align="left"><select name="MailServer" class="loginselect"><option value="localhost" selected>localhost</option></select></td>|' login-light.html
		
		echo "Atmail ${ATMAIL_VER} has been installed successfully."
	fi

	#set the permissions:
	${CHOWN} -R webapps:webapps ${REALPATH}
	${CHOWN} -R apache ${REALPATH}/logs ${REALPATH}/tmp
	/bin/chmod -R 770 ${REALPATH}/logs
	/bin/chmod -R 770 ${REALPATH}/tmp

	#cleanup:
	rm -rf ${ALIASPATH}/install

	#writing alias to httpd.conf
	COUNTALIAS=`grep -c -e "Alias /atmail" ${HTTPDCONF}`
	if [ "${COUNTALIAS}" = "0" ]; then
	   echo "Adding atmail alias to ${HTTPDCONF}"
	   echo "" >> ${HTTPDCONF}
	   echo "# Alias for Atmail webmail" >> ${HTTPDCONF}
	   echo "Alias /atmail ${ALIASPATH}/" >> ${HTTPDCONF}
	   echo "" >> ${HTTPDCONF}
	   echo "You need to restart the httpd service if you want alias to work."
	fi
}

####################################################

doroundcube(){
	if [ "${ROUNDCUBE_OPT}" != "yes" ]; then
		echo "You can not install RoundCube webmail, because you do not have it set in options.conf file.";
		exit 1;
	fi

        cd ${CWD};
	DA_MYSQL=/usr/local/directadmin/conf/mysql.conf
	TARFILE=${WORKDIR}/roundcubemail-${ROUNDCUBE_VER}.tar.gz
	REALPATH=${WWWDIR}/roundcubemail-${ROUNDCUBE_VER}
	ALIASPATH=${WWWDIR}/roundcube
	if [ -e /etc/httpd/conf/extra/httpd-alias.conf ]; then
		HTTPDCONF=/etc/httpd/conf/extra/httpd-alias.conf
	else
		HTTPDCONF=/etc/httpd/conf/httpd.conf
	fi
	CONFIG=${REALPATH}/config/main.inc.php
	DA_HOSTNAME=`hostname`
	HTTPPATH=${WEBPATH_SERVICES}/all/roundcube

	# variables for the database:
	ROUNDCUBE_DB=da_roundcube
	ROUNDCUBE_DB_USER=da_roundcube
	ROUNDCUBE_DB_PASS=`perl -le'print map+(A..Z,a..z,0..9)[rand 62],0..7'`;
	DB_CONFIG=${REALPATH}/config/db.inc.php
	MYSQLUSER=`grep "^user=" ${DA_MYSQL} | cut -d= -f2`
	MYSQLPASSWORD=`grep "^passwd=" ${DA_MYSQL} | cut -d= -f2`

	if [ ! -e ${TARFILE} ]; then
		${WGET} -O ${TARFILE} ${HTTPPATH}/roundcubemail-${ROUNDCUBE_VER}.tar.gz
	fi

	if [ ! -e ${TARFILE} ]; then
		echo "Can not download roundcubemail-${ROUNDCUBE_VER}"
		do_exit 0
	fi

        M=`checkMD5 $TARFILE roundcube`
        if [ "$M" != "0" ]; then
                echo "";
                echo "${boldon}*** MD5 Checksum for $TARFILE Failed.  Redownloading...***${boldoff}";
                echo "";
		${WGET} -O ${TARFILE} ${HTTPPATH}/roundcubemail-${ROUNDCUBE_VER}.tar.gz

                M=`checkMD5 $TARFILE roundcube`
                if [ "$M" != "0" ]; then
                                echo "";
                                echo "";
                                echo "${boldon}*** MD5 Checksum for $TARFILE failed *again*.***${boldoff}";
                                echo "The md5 checksum value may be incorrect, or a wrong file is being downloaded.";
                                echo "Install continuing with this possibly corrupted file. (it may also be fine)";
                                echo "";
                                echo "";
                fi
        fi

	MYSQLUP=0
	if [ -d $MYSQL_DATA/${ROUNDCUBE_DB} ]; then
		if [ "`cat $ALIASPATH/index.php | grep RCMAIL_VERSION | awk '{ print $2}' | cut -d\' -f2`" != "${ROUNDCUBE_VER}" ]; then
			MYSQLUP=1
		fi
	fi

	#Extract the file
	${TAR} xzf ${TARFILE} -C ${WWWDIR}

	if [ ! -e ${REALPATH} ]; then
		echo "Directory ${REALPATH} does not exist"
		exit 1
	fi

	if [ -e ${ALIASPATH} ]; then
		if [ -d ${ALIASPATH}/logs ]; then
			cp -fR ${ALIASPATH}/logs/* ${REALPATH}/logs
		fi
		if [ -d ${ALIASPATH}/temp ]; then
			cp -fR ${ALIASPATH}/temp/* ${REALPATH}/temp
		fi
	fi

	#link it from a fake path:
	/bin/rm -f ${ALIASPATH}
	/bin/ln -sf roundcubemail-${ROUNDCUBE_VER} ${ALIASPATH}
	cd ${REALPATH}

	#insert data to mysql and create database/user for roundcube:
	if [ ! -d $MYSQL_DATA/${ROUNDCUBE_DB} ]; then
		if [ -d SQL ]; then
			echo "Inserting data to mysql and creating database/user for roundcube..."
			mysql -e "CREATE DATABASE ${ROUNDCUBE_DB};" --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
			mysql -e "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX ON ${ROUNDCUBE_DB}.* TO '${ROUNDCUBE_DB_USER}'@'localhost' IDENTIFIED BY '${ROUNDCUBE_DB_PASS}';" --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
			mysql -e "use ${ROUNDCUBE_DB}; source SQL/mysql.initial.sql;" --user=${ROUNDCUBE_DB_USER} --password=${ROUNDCUBE_DB_PASS}
			echo "Database created, ${ROUNDCUBE_DB_USER} password is ${ROUNDCUBE_DB_PASS}"
		else
			echo "Can not find SQL directory in roundcubemail-${ROUNDCUBE_VER}"
			do_exit 0
		fi
	else
		mysql -e "SET PASSWORD FOR '${ROUNDCUBE_DB_USER}'@'localhost' = PASSWORD('${ROUNDCUBE_DB_PASS}');" --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
		mysql -e "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX ON ${ROUNDCUBE_DB}.* TO '${ROUNDCUBE_DB_USER}'@'localhost' IDENTIFIED BY '${ROUNDCUBE_DB_PASS}';" --user=${MYSQLUSER} --password=${MYSQLPASSWORD}

		perl -pi -e 's#/usr/bin/php#/usr/local/bin/php#' ./bin/update.sh
		./bin/update.sh

		if [ "${MYSQLUP}" = "1" ]; then
			mysql -e "use ${ROUNDCUBE_DB}; source SQL/mysql.update.sql;" --user=${ROUNDCUBE_DB_USER} --password=${ROUNDCUBE_DB_PASS}
		fi
	fi

	#install the proper config:
	if [ -d ../roundcube ]; then
		echo "Editing roundcube configuration..."
		cd ${REALPATH}/config
		/bin/mv -f db.inc.php.dist db.inc.php
		/bin/mv -f main.inc.php.dist main.inc.php
		/usr/bin/perl -pi -e "s|mysql://roundcube:pass\@localhost/roundcubemail|mysql://${ROUNDCUBE_DB_USER}:${ROUNDCUBE_DB_PASS}\@localhost/${ROUNDCUBE_DB}|" db.inc.php > /dev/null
		/usr/bin/perl -pi -e "s|\['enable_caching'] = TRUE|\['enable_caching'] = FALSE|" main.inc.php > /dev/null
		/usr/bin/perl -pi -e "s|\['imap_root'] = null|\['imap_root'] = 'INBOX.'|" main.inc.php > /dev/null
		/usr/bin/perl -pi -e "s|\['default_host'] = ''|\['default_host'] = 'localhost'|" main.inc.php > /dev/null
		/usr/bin/perl -pi -e "s|\['junk_mbox'] = 'Junk'|\['junk_mbox'] = 'spam'|" main.inc.php > /dev/null
		/usr/bin/perl -pi -e "s|\['default_imap_folders'] = array\('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash'\)|\['default_imap_folders'] = array\('Drafts', 'Sent', 'spam', 'Trash'\)|" main.inc.php > /dev/null
		/usr/bin/perl -pi -e "s|\['imap_delimiter'] = null|\['imap_delimiter'] = '.'|" main.inc.php > /dev/null

                #smtp stuff
                /usr/bin/perl -pi -e "s|\['smtp_port'] = 25|\['smtp_port'] = 587|" main.inc.php > /dev/null
                /usr/bin/perl -pi -e "s|\['smtp_server'] = ''|\['smtp_server'] = 'localhost'|" main.inc.php > /dev/null
                /usr/bin/perl -pi -e "s|\['smtp_user'] = ''|\['smtp_user'] = '%u'|" main.inc.php > /dev/null
                /usr/bin/perl -pi -e "s|\['smtp_pass'] = ''|\['smtp_pass'] = '%p'|" main.inc.php > /dev/null
                /usr/bin/perl -pi -e "s|\['smtp_auth_type'] = ''|\['smtp_auth_type'] = 'LOGIN'|" main.inc.php > /dev/null

		/usr/bin/perl -pi -e "s|\['create_default_folders'] = FALSE;|\['create_default_folders'] = TRUE;|" main.inc.php > /dev/null

		/usr/bin/perl -pi -e "s/\'mdb2\'/\'db\'/" db.inc.php > /dev/null

		echo "Roundcube ${ROUNDCUBE_VER} has been installed successfully."
	fi

	#set the permissions:
	${CHOWN} -R webapps:webapps ${REALPATH}
	${CHOWN} -R apache ${REALPATH}/temp ${REALPATH}/logs
	/bin/chmod -R 770 ${REALPATH}/temp
	/bin/chmod -R 770 ${REALPATH}/logs

        #cleanup
        rm -rf ${ALIASPATH}/installer

	#writing alias to httpd.conf
	COUNTALIAS=`grep -c -e "Alias /roundcube" ${HTTPDCONF}`
	if [ "${COUNTALIAS}" = "0" ]; then
		echo "Adding roundcube alias to ${HTTPDCONF}"
		echo "" >> ${HTTPDCONF}
		echo "# Alias for RoundCube webmail" >> ${HTTPDCONF}
		echo "Alias /roundcube ${ALIASPATH}/" >> ${HTTPDCONF}
		echo "" >> ${HTTPDCONF}
		echo "You need to restart the httpd service if you want alias to work."
	fi
}

####################################################

doExim(){
	if [ "${EXIM_OPT}" != "yes" ]; then
		echo "You can not update Exim configuration files, because you do not have it set in options.conf file.";
		exit 1;
	fi

	getFile exim-${EXIM_VER}.tar.gz
	getFile exim
	getFile exim_freebsd
	getFile exim_debian

	quitIfLocked doExim
	touch ${WORKDIR}/.custombuild
	cd ${CWD};
	FILE=${CWD}/exim-${EXIM_VER}.tar.gz
	checkFile ${FILE}
	echo "Extracting ...";
	tar xzf ${FILE}
	echo "Done.";

	cd exim-${EXIM_VER}

	wget -O Local/Makefile ${WEBPATH}/Makefile

	while
	echo "Trying to make exim..."
	do
	{
		C_INCLUDE_PATH=/usr/kerberos/include make

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -n -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
	                else
        	                if [ "${INPUT_VALUE}" = "d" ]; then
                	                yesno=n
                        	else
                                	yesno=${INPUT_VALUE}
	                        fi
        	        fi

			if [ "${yesno}" = "n" ]
			then
				do_exit 0;
			fi
		else
			break;
		fi
	}
	done
	echo "Make Complete";

	while
	echo "Installing exim...";
	do
	{
		make install

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The install has failed, do you want to try to install it again? (y,n): ";
        	                read yesno;
                	        echo "";
			else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
			fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
	}
	done;

	echo "Moving exim binary."
	mv -f /usr/sbin/exim-${EXIM_VER} /usr/sbin/exim
	chmod 4755 /usr/sbin/exim

	if [ ! -e /etc/exim.conf ]; then
		wget -O /etc/exim.conf $WEBPATH/exim.conf
		wget -O /etc/exim.pl $WEBPATH/exim.pl
	fi

	if [ ! -e ${INITDDIR}/exim ]; then
		if [ "${OS}" = "FreeBSD" ]; then
			cp ${CWD}/exim_freebsd ${INITDDIR}/exim
			chmod 755 ${INITDDIR}/exim
		elif [ -e /etc/debian_version ]; then
			cp ${CWD}/exim_debian ${INITDDIR}/exim
			chmod 755 ${INITDDIR}/exim
			update-rc.d exim defaults
		else
			cp ${CWD}/exim_boot ${INITDDIR}/exim
			chmod 755 ${INITDDIR}/exim
			/sbin/chkconfig exim on
		fi
	fi

	echo "Exim ${EXIM_VER} Installed.";
	rm -f ${WORKDIR}/.custombuild
	cd ${CWD};

	echo "Restarting exim."
	${INITDDIR}/exim restart
}

####################################################

doEximConf(){
	if [ "${EXIMCONF_OPT}" != "yes" ]; then
		echo "You can not update Exim configuration files, because you do not have it set in options.conf file.";
		exit 1;
	fi
	wget -O /etc/exim.conf http://files.directadmin.com/services/exim.conf
	wget -O /etc/exim.pl http://files.directadmin.com/services/exim.pl
	chmod 755 /etc/exim.pl
	cd /etc/virtual
	touch blacklist_domains whitelist_from use_rbl_domains bad_sender_hosts blacklist_senders whitelist_domains whitelist_hosts whitelist_senders
	echo 0 > limit
	mkdir -p usage
	chown mail:mail blacklist_domains whitelist_from use_rbl_domains bad_sender_hosts blacklist_senders whitelist_domains whitelist_hosts whitelist_senders limit usage

	if [ "${DOVECOT_OPT}" = "yes" ]; then
		cd ${WORKDIR}
		patch -p0 < exim.conf.dovecot.patch
	fi

	echo "Restarting exim."
	${INITDDIR}/exim restart
}

####################################################

compile_mysql_binary()
{
                MYSQLURL=${WEBPATH_SERVICES}/all/mysql
                MYSQLPACK=mysql-${MYSQL_VER}		

		if [ ! -e ${MYSQLPACK} ]; then
	                fetch ${MYSQLURL}/${MYSQLPACK}.tar.gz
	                if [ ! -e ${MYSQLPACK} ]; then
        	                wget ${MYSQLURL}/${MYSQLPACK}.tar.gz
	                fi
		fi

		M=`checkMD5 ${MYSQLPACK}.tar.gz mysql${MYSQL_OPT}`
		if [ "$M" != "0" ]; then
                	echo "";
	                echo "${boldon}*** MD5 Checksum for ${MYSQLPACK}.tar.gz  Failed.  Redownloading...***${boldoff}";
        	        echo "";
			wget -O ${MYSQLPACK}.tar.gz ${MYSQLURL}/${MYSQLPACK}.tar.gz

			M=`checkMD5 ${MYSQLPACK}.tar.gz mysql${MYSQL_OPT}`
        	        if [ "$M" != "0" ]; then
                	                echo "";
                        	        echo "";
                                	echo "${boldon}*** MD5 Checksum for ${MYSQLPACK}.tar.gz failed *again*.***${boldoff}";
	                                echo "The md5 checksum value may be incorrect, or a wrong file is being downloaded.";
        	                        echo "Install continuing with this possibly corrupted file. (it may also be fine)";
                	                echo "";
                        	        echo "";
	                fi
		fi

		echo "Extracting ${MYSQLPACK}.tar.gz ... ";

                tar xzf ${MYSQLPACK}.tar.gz
                cd ${MYSQLPACK}

                CFLAGS=-DHAVE_BROKEN_REALPATH
                ./configure --prefix=/usr/local/mysql --with-extra-charsets=all --enable-thread-safe-client \
                         --enable-local-infile --enable-assembler --with-named-z-libs=not-used --disable-shared \
                         --enable-static
                echo "Done. Making ${MYSQLPACK}...";
                while
                echo "Trying to make ${MYSQLPACK}..."
                do
                {
                        make

                        if [ $? -ne 0 ]
                        then
                                if [ ${USER_INPUT} -eq 1 ]; then
                                        echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
                                        read yesno;
                                        echo "";
                                else
                                        if [ "${INPUT_VALUE}" = "d" ]; then
                                                yesno=n
                                        else
                                                yesno=${INPUT_VALUE}
                                        fi
                                fi

                                if [ "${yesno}" = "n" ]
                                then
                                        do_exit 0;
                                fi
                        else
                                break;
                        fi
                }
                done
                echo "Make complete";
                echo "Installing ${MYSQLPACK}...";
                ./scripts/make_binary_distribution


		echo "Moving ${MYSQLPACK}-*.tar.gz to main direcotry...";
		mv -f ${MYSQLPACK}-*.tar.gz ..
		cd ..
		echo "done.";
}

doMySQLback(){
    if [ "${MYSQLBACK_OPT}" = "yes" ]; then
	# Get variables from mysql.conf
	DA_MYSQL=/usr/local/directadmin/conf/mysql.conf
	MYSQLUSER=`grep "^user=" ${DA_MYSQL} | cut -d= -f2`
	MYSQLPASSWORD=`grep "^passwd=" ${DA_MYSQL} | cut -d= -f2`

        MYSQLDUMP=/usr/local/mysql/bin/mysqldump
        if [ ! -e $MYSQLDUMP ]; then
                MYSQLDUMP=/usr/bin/mysqldump
        fi
        if [ ! -e $MYSQLDUMP ]; then
                echo "Cannot find $MYSQLDUMP";
                return;
        fi

	MYSQLBACK_DIR=${WORKDIR}/mysql_backups
	if [ ! -d ${MYSQLBACK_DIR} ]; then
	  mkdir -p ${MYSQLBACK_DIR}
	fi

	# sysbk code
	cd ${MYSQL_DATA}
	for i in `ls -d */ | cut -d/ -f1`; do
	  echo -ne "       Dumping database $i \n"
	  echo -ne "       Dumping database $i \n" >> ${WORKDIR}/mysql_backups.log
	  $MYSQLDUMP -l -u${MYSQLUSER} -p${MYSQLPASSWORD} $i > ${MYSQLBACK_DIR}/$i.sql
	done
    fi
}

doMySQL() {
	if [ "${MYSQLINST_OPT}" != "yes" ]; then
		echo "You can not install MySQL, because you do not have it set in options.conf file.";
		exit 1;
	fi

	doMySQLback;

	cd ${CWD};
	DACONF_FILE_MYSQL=/usr/local/directadmin/conf/mysql.conf
	MYSQLUSER=`grep "^user=" ${DACONF_FILE_MYSQL} | cut -d= -f2`
	MYSQLPASSWORD=`grep "^passwd=" ${DACONF_FILE_MYSQL} | cut -d= -f2`

	perl -pi -e 's/mysqld=ON/mysqld=OFF/' /usr/local/directadmin/data/admin/services.status

	if [ ${OS} = "FreeBSD" ]; then

		MYSQLURL=${WEBPATH_SERVICES}/all/mysql
		MYSQLPACK=mysql-${MYSQL_VER}

		BINPACK=`ls $MYSQLPACK-*i386.tar.gz $MYSQLPACK-*i686.tar.gz $MYSQLPACK-*i486.tar.gz $MYSQLPACK-*x86_64.tar.gz 2>/dev/null | head -n 1`
		
		if [ "$BINPACK" = "" ]; then
			compile_mysql_binary
		fi

		#make sure were back
		cd ${CWD};

		BINPACK=`ls $MYSQLPACK-*i386.tar.gz $MYSQLPACK-*i686.tar.gz $MYSQLPACK-*i486.tar.gz 2>/dev/null | head -n 1`

		if [ "$BINPACK" = "" ]; then
			echo "Cannot find $MYSQLPACK package for installation"
			exit 0;
		fi

		echo "Stopping mysqld ...";
		/usr/local/etc/rc.d/mysqld stop

		echo "Installing ${BINPACK}...";

		#we need the non tar.gz form .. but its not basic it has freebsd and i386 and stuff we need
		#since we know the name of the file, we can get its contents which will tell us.
		MYSQLPACK=`tar tzf ${BINPACK} | head -n 1 | cut -d/ -f1`

		mv -f ${BINPACK} /usr/local
		cd /usr/local

		tar xzf ${MYSQLPACK}.tar.gz
		rm -f mysql
		ln -s ${MYSQLPACK} mysql
		cd mysql

		chown -R mysql:mysql /usr/local/mysql
		chown -R mysql:mysql /usr/local/$MYSQLPACK

		rm -rf data
		ln -s /home/mysql ./data
		
		rm -f /usr/local/bin/mysql_config
		ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/mysql_config
		
		MYSQLPATH="`echo ${PATH} | grep /usr/local/mysql/bin | wc -l`"
		if [ "${MYSQLPATH}" -eq 0 ]; then
			export PATH=${PATH}:/usr/local/mysql/bin
		fi
		
		/usr/local/etc/rc.d/mysqld start

		echo "Giving mysqld a few seconds to start up...";
		sleep 5;

		if [ -e /usr/local/mysql/bin/mysql_upgrade ]; then
			/usr/local/mysql/bin/mysql_upgrade --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
		elif [ -e /usr/local/mysql/bin/mysql_fix_privilege_tables ]; then
                       	/usr/local/mysql/bin/mysql_fix_privilege_tables --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
                fi

		echo "Done ${MYSQLPACK}.";

	elif [ -e /etc/debian_version ]; then
		MYSQLURL=${WEBPATH_SERVICES}/all/mysql/debian
		MYSQLPACK=mysql-${MYSQL_VER}-linux-i686

		cd /usr/local
		if [ ! -e ${MYSQLPACK}.tar.gz ]; then
			wget -O ${MYSQLPACK}.tar.gz ${MYSQLURL}/${MYSQLPACK}.tar.gz
		fi
		
		echo "Stopping mysqld ...";
		/etc/init.d/mysqld stop

		tar xzf ${MYSQLPACK}.tar.gz
		rm -f mysql
		ln -s ${MYSQLPACK} mysql
		cd mysql

                #i dont want to use * here because if the mysql folder doesn't exist, we'll end up chowning all of /usr/local
                chown -R mysql:mysql /usr/local/mysql
		chown -R mysql:mysql /usr/local/$MYSQLPACK

		rm -rf data
		ln -s /home/mysql ./data

		chown -R mysql:mysql /home/mysql

		MYSQLPATH="`echo ${PATH} | grep /usr/local/mysql/bin | wc -l`"
		if [ "${MYSQLPATH}" -eq 0 ]; then
			export PATH=${PATH}:/usr/local/mysql/bin
		fi
		
		/etc/init.d/mysqld start

                echo "Giving mysqld a few seconds to start up...";
                sleep 5;

		if [ -e /usr/local/mysql/bin/mysql_upgrade ]; then
			/usr/local/mysql/bin/mysql_upgrade --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
		elif [ -e /usr/local/mysql/bin/mysql_fix_privilege_tables ]; then
			/usr/local/mysql/bin/mysql_fix_privilege_tables --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
		fi
	else
		if [ "${B64}" = "0" ]; then
			MYSQLURL=${WEBPATH_SERVICES}/all/mysql
			if [ "${MYSQL_OPT}" = "5.1" ]; then
				MYSQL_EXT=glibc23.i386
			else
				MYSQL_EXT=i386
			fi
		else
			MYSQLURL=${WEBPATH_SERVICES}/all/mysql/64-bit
			MYSQL_EXT=glibc23.x86_64
		fi

		MYSQLCLIENT=MySQL-client-${MYSQL_VER}-0.$MYSQL_EXT.rpm
		MYSQLDEVEL=MySQL-devel-${MYSQL_VER}-0.$MYSQL_EXT.rpm
		MYSQLSERVER=MySQL-server-${MYSQL_VER}-0.$MYSQL_EXT.rpm
		MYSQLSHARED=MySQL-shared-${MYSQL_VER}-0.$MYSQL_EXT.rpm

		mkdir -p mysql
		cd mysql
		if [ ! -e ${MYSQLCLIENT} ]; then
			wget -O ${MYSQLCLIENT} ${MYSQLURL}/${MYSQLCLIENT}
		fi
		if [ ! -e ${MYSQLDEVEL} ]; then
			wget -O ${MYSQLDEVEL} ${MYSQLURL}/${MYSQLDEVEL}
		fi
		if [ ! -e ${MYSQLSERVER} ]; then
			wget -O ${MYSQLSERVER} ${MYSQLURL}/${MYSQLSERVER}
		fi
		if [ ! -e ${MYSQLSHARED} ]; then
			wget -O ${MYSQLSHARED} ${MYSQLURL}/${MYSQLSHARED}
		fi

		FILE1=${CWD}/mysql/${MYSQLCLIENT}
		FILE2=${CWD}/mysql/${MYSQLDEVEL}
		FILE3=${CWD}/mysql/${MYSQLSERVER}
		FILE4=${CWD}/mysql/${MYSQLSHARED}
		checkFile ${FILE1}
		checkFile ${FILE2}
		checkFile ${FILE3}
		checkFile ${FILE4}

		echo "Stopping mysqld ...";
		/sbin/service mysqld stop

		if [ -e /usr/bin/mysql ]; then
			MYSQL_MAIN="`/usr/bin/mysql --version | awk '{ print $5 }' | cut -d , -f1 | cut -d. -f1,2`"
			MYSQL_V="`/usr/bin/mysql --version | awk '{ print $5 }' | cut -d , -f1`"
			if [ "${MYSQL_MAIN}" != "${MYSQL_OPT}" ]; then
				echo "Upgrading MySQL ${MYSQL_MAIN} to ${MYSQL_OPT}"
				for i in `rpm -qa | grep -i "^mysql"`; do { rpm -ev $i --nodeps; }; done;
				rpm -Uhv --nodeps ${MYSQLCLIENT} ${MYSQLDEVEL} ${MYSQLSERVER} ${MYSQLSHARED} --force
			else
				echo "Updating MySQL ${MYSQL_V} to ${MYSQL_VER}"
				rpm -Uhv --nodeps ${MYSQLCLIENT} ${MYSQLDEVEL} ${MYSQLSERVER} ${MYSQLSHARED} --force
			fi
		else
			echo "Can not find /usr/bin/mysql, installing MySQL"
			rpm -ihv --nodeps ${MYSQLCLIENT} ${MYSQLDEVEL} ${MYSQLSERVER} ${MYSQLSHARED} --force
		fi
		
		/sbin/service mysqld start

                echo "Giving mysqld a few seconds to start up...";
                sleep 5;

		if [ -e /usr/bin/mysql_upgrade ]; then
			/usr/bin/mysql_upgrade --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
		elif [ -e /usr/bin/mysql_fix_privilege_tables ]; then
			/usr/bin/mysql_fix_privilege_tables --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
		fi

		# Fixing "gcc: /usr/lib/mysql/libmysqlclient.so: No such file or directory"
		#if [ ! -e /usr/lib/mysql/libmysqlclient.so ]; then
		if [ -d /usr/lib/mysql ]; then
			cp -f /usr/lib/libmysqlclient.* /usr/lib/mysql/
		fi
	fi

	perl -pi -e 's/mysqld=OFF/mysqld=ON/' /usr/local/directadmin/data/admin/services.status

	cd ${CWD};

	echo "Restarting MySQL."
	${INITDDIR}/mysqld restart
	echo "It is recommended to do \"$0 php n\" after MySQL update."
}

####################################################

doPhpIni() {
	if [ "${PHPINI_OPT}" = "no" ]; then
		do_exit 1 "Can not install php.ini because it is not set in options.conf."
	fi

	if [ "${PHP5_CLI_OPT}" = "yes" ] || [ "${PHP5_CGI_OPT}" = "yes" ] ; then
		getFile php-${PHP5_VER}.tar.gz php5
		FILE=${CWD}/php-${PHP5_VER}.tar.gz
		checkFile ${FILE}
		echo "Extracting ...";
		tar xzf ${FILE}
		cd php-${PHP5_VER}

		/usr/bin/perl -pi -e 's/memory_limit = 8M/memory_limit = 20M/' php.ini-${PHPINITYPE_OPT}
		/usr/bin/perl -pi -e 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' php.ini-${PHPINITYPE_OPT}

		if [ "${PHP5_CLI_OPT}" = "yes" ]; then
			cp -f php.ini-${PHPINITYPE_OPT} ${PHP_INI}
		fi
		if [ "${PHP5_CGI_OPT}" = "yes" ]; then
			cp -f php.ini-${PHPINITYPE_OPT} ${PHP_INI_SUPHP5}
		fi
		echo "Done.";
	fi
	
	if [ "${PHP6_CLI_OPT}" = "yes" ] || [ "${PHP6_CGI_OPT}" = "yes" ]; then
		getFile php-${PHP6_VER}.tar.gz php6
		FILE=${CWD}/php-${PHP6_VER}.tar.gz
		checkFile ${FILE}
		echo "Extracting ...";
		tar xzf ${FILE}
		cd php-${PHP6_VER}

		/usr/bin/perl -pi -e 's/memory_limit = 8M/memory_limit = 20M/' php.ini-${PHPINITYPE_OPT}
		/usr/bin/perl -pi -e 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' php.ini-${PHPINITYPE_OPT}

		if [ "${PHP5_CLI_OPT}" = "yes" ]; then
			cp -f php.ini-${PHPINITYPE_OPT} ${PHP_INI}
		fi
		if [ "${PHP5_CGI_OPT}" = "yes" ]; then
			cp -f php.ini-${PHPINITYPE_OPT} ${PHP_INI_SUPHP6}
		fi
		echo "Done.";
	fi
}

####################################################

doPhp5() {
	getFile php-${PHP5_VER}.tar.gz php5
	getFile ${MAIL_HEADER_FILE_PHP5} php5-mail
	if [ "${PHP5_CLI_OPT}" != "yes" ]; then
		do_exit 1 "Can not build PHP5 as CLI because it is not set in options.conf."
	fi
	checkCURL
	checkFreeType
	checkIconv
	checkMCrypt
	checkMHash
	quitIfLocked doPhp5
	touch ${WORKDIR}/.custombuild
	cd ${CWD};
	FILE=${CWD}/php-${PHP5_VER}.tar.gz
	checkFile ${FILE}
	echo "Extracting ...";
	tar xzf ${FILE}
	echo "Done.";

	if [ "${APPLY_MAIL_HEADER_PATCH}" = "yes" ]; then
		getFile ${MAIL_HEADER_FILE_PHP5}
		patch -p0 < ${MAIL_HEADER_FILE_PHP5}
	fi

	cd php-${PHP5_VER}

	#make sure we have the sendmail link
	ln -sf exim /usr/sbin/sendmail

	#some reports of missing -lltdl, problem found to be simple missing link
	if [ ! -e /usr/lib/libltdl.so ]; then
		ln -sf libltdl.so.3 /usr/lib/libltdl.so
	fi
	
	if [ "${OS}" = "FreeBSD" ] && [ "${OS_VER}" = "6.1" ]; then
		if [ ! -e /lib/libm.so.3 ]; then
			ln -sf libm.so.4 /lib/libm.so.3
		fi
		if [ ! -e /lib/libz.so.2 ]; then
			ln -sf libz.so.3 /lib/libz.so.2
		fi
	fi
	
	echo "Configuring php-${PHP5_VER}...";

	CONF_FILE=${CWD}/${PHP5_CONFIGURE};

	#we need to make sure that the mysql path is set.
	MYSQL_H="";

        if [ -d /usr/local/mysql/include ]; then
                MYSQL_H=/usr/local/mysql
        fi

        if [ "${MYSQL_H}" = "" ]; then
                if [ -e /usr/include/mysql/mysql.h ]; then
                        MYSQL_H=/usr
                fi
        fi

	if [ "${MYSQL_H}" != "" ]; then
		STR="perl -pi -e 's#with-mysql\s#with-mysql=${MYSQL_H} #' ${CONF_FILE}";
		eval ${STR};
                STR="perl -pi -e 's#with-mysql\"#with-mysql=${MYSQL_H}\"#' ${CONF_FILE}";
                eval ${STR};
                STR="perl -pi -e 's#with-pdo-mysql\"#with-pdo-mysql=${MYSQL_H}\"#' ${CONF_FILE}";
                eval ${STR};
		STR="perl -pi -e 's#with-pdo-mysql\s#with-pdo-mysql=${MYSQL_H} #' ${CONF_FILE}";
		eval ${STR};
	fi

	#we need to make sure that the mysqli path is set.
	MYSQLI_BIN="";
	if [ -e /usr/local/bin/mysql_config ]; then
		MYSQLI_BIN=/usr/local/bin/mysql_config
	fi
	if [ "${MYSQLI_BIN}" = "" ]; then
		if [ -e /usr/mysql/bin/mysql_config ]; then
			MYSQLI_BIN=/usr/mysql/bin/mysql_config
		fi
	fi
	if [ "${MYSQLI_BIN}" = "" ]; then
		if [ -e /usr/local/mysql/bin/mysql_config ]; then
			MYSQLI_BIN=/usr/local/mysql/bin/mysql_config
		fi
	fi
	if [ "${MYSQLI_BIN}" = "" ]; then
		if [ -e /usr/bin/mysql_config ]; then
			MYSQLI_BIN=/usr/bin/mysql_config
		fi
	fi

	if [ "${MYSQLI_BIN}" != "" ]; then
		STR="perl -pi -e 's#with-mysqli\s#with-mysqli=${MYSQLI_BIN} #' ${CONF_FILE}";
		eval ${STR};
                STR="perl -pi -e 's#with-mysqli\"#with-mysqli=${MYSQLI_BIN}\"#' ${CONF_FILE}";
                eval ${STR};
	fi

        #if this is a 64bit system,make sure libmysqlclient is correct.
        if [ -e /usr/lib64/libmysqlclient.so ] && [ ! -e /usr/lib/libmysqlclient.so ]; then
                ln -s /usr/lib64/libmysqlclient.so /usr/lib/libmysqlclient.so
        fi

	${CONF_FILE}
	if [ $? -ne 0 ]
	then
		echo -e "\n*** There was an error while trying to configure php. Check the ${PHP5_CONFIGURE} file\n";
		do_exit 1;
	fi

	echo "Done Configuration.";

	while
	echo "Trying to make php..."
	do
	{
		C_INCLUDE_PATH=/usr/kerberos/include make

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -n -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
	                else
        	                if [ "${INPUT_VALUE}" = "d" ]; then
                	                yesno=n
                        	else
                                	yesno=${INPUT_VALUE}
	                        fi
        	        fi

			if [ "${yesno}" = "n" ]
			then
				do_exit 0;
			fi
		else
			break;
		fi
	}
	done
	echo "Make Complete";

	#change the pear settings to remove the -n option.
	#the default memory limit was messing this up.
	/usr/bin/perl -pi -e 's/PEAR_INSTALL_FLAGS = .*/PEAR_INSTALL_FLAGS = -dshort_open_tag=0 -dsafe_mode=0/' Makefile

	#this was moved here, again for pear
        echo "Copying php.ini..";
        if [ ! -e ${PHP_INI} ]
        then
                cp ./php.ini-dist ${PHP_INI};
        else
                echo "${PHP_INI} already exists, skipping.";
        fi

	echo "Increasing memory limit to 20M...";
	/usr/bin/perl -pi -e 's/memory_limit = 8M/memory_limit = 20M/' ${PHP_INI}
	/usr/bin/perl -pi -e 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' ${PHP_INI}

	while
	echo "Installing php...";
	do
	{
		make install

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The install has failed, do you want to try to install it again? (y,n): ";
        	                read yesno;
                	        echo "";
			else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
			fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
	}
	done;
	
	echo "PHP ${PHP5_VER} Installed.";
	rm -f ${WORKDIR}/.custombuild
	cd ${CWD};
}

doPhp5_suphp() {
	getFile php-${PHP5_VER}.tar.gz php5
	getFile ${MAIL_HEADER_FILE_PHP5} php5-mail
	if [ "${PHP5_CGI_OPT}" != "yes" ]; then
		do_exit 1 "Can not build PHP5 as CGI because it is not set in options.conf."
	fi
	checkCURL
	checkFreeType
	checkIconv
	checkMCrypt
	checkMHash
	quitIfLocked doPhp5_suphp
	touch ${WORKDIR}/.custombuild
	mkdir -p /usr/local/etc/php5/cgi
	cd ${CWD};
	FILE=${CWD}/php-${PHP5_VER}.tar.gz
	checkFile ${FILE}
	echo "Extracting ...";
	tar xzf ${FILE}
	echo "Done.";

	if [ "${APPLY_MAIL_HEADER_PATCH}" = "yes" ]; then
		getFile ${MAIL_HEADER_FILE_PHP5}
		patch -p0 < ${MAIL_HEADER_FILE_PHP5}
	fi

	cd php-${PHP5_VER}

	#make sure we have the sendmail link
	ln -sf exim /usr/sbin/sendmail

	#some reports of missing -lltdl, problem found to be simple missing link
	if [ ! -e /usr/lib/libltdl.so ]; then
		ln -sf libltdl.so.3 /usr/lib/libltdl.so
	fi
	
	if [ "${OS}" = "FreeBSD" ] && [ "${OS_VER}" = "6.1" ]; then
		if [ ! -e /lib/libm.so.3 ]; then
			ln -sf libm.so.4 /lib/libm.so.3
		fi
		if [ ! -e /lib/libz.so.2 ]; then
			ln -sf libz.so.3 /lib/libz.so.2
		fi
	fi
	
	echo "Configuring php-${PHP5_VER}...";

	CONF_FILE=${CWD}/${PHP5_CONFIGURE_SUPHP};

	#we need to make sure that the mysql path is set.
	MYSQL_H="";

        if [ -d /usr/local/mysql/include ]; then
                MYSQL_H=/usr/local/mysql
        fi

        if [ "${MYSQL_H}" = "" ]; then
                if [ -e /usr/include/mysql/mysql.h ]; then
                        MYSQL_H=/usr
                fi
        fi

	if [ "${MYSQL_H}" != "" ]; then
		STR="perl -pi -e 's#with-mysql\s#with-mysql=${MYSQL_H} #' ${CONF_FILE}";
		eval ${STR};
                STR="perl -pi -e 's#with-mysql\"#with-mysql=${MYSQL_H}\"#' ${CONF_FILE}";
                eval ${STR};
                STR="perl -pi -e 's#with-pdo-mysql\"#with-pdo-mysql=${MYSQL_H}\"#' ${CONF_FILE}";
                eval ${STR};
		STR="perl -pi -e 's#with-pdo-mysql\s#with-pdo-mysql=${MYSQL_H} #' ${CONF_FILE}";
		eval ${STR};
	fi

	#we need to make sure that the mysqli path is set.
	MYSQLI_BIN="";
	if [ -e /usr/local/bin/mysql_config ]; then
		MYSQLI_BIN=/usr/local/bin/mysql_config
	fi
	if [ "${MYSQLI_BIN}" = "" ]; then
		if [ -e /usr/mysql/bin/mysql_config ]; then
			MYSQLI_BIN=/usr/mysql/bin/mysql_config
		fi
	fi
	if [ "${MYSQLI_BIN}" = "" ]; then
		if [ -e /usr/local/mysql/bin/mysql_config ]; then
			MYSQLI_BIN=/usr/local/mysql/bin/mysql_config
		fi
	fi
	if [ "${MYSQLI_BIN}" = "" ]; then
		if [ -e /usr/bin/mysql_config ]; then
			MYSQLI_BIN=/usr/bin/mysql_config
		fi
	fi

	if [ "${MYSQLI_BIN}" != "" ]; then
		STR="perl -pi -e 's#with-mysqli\s#with-mysqli=${MYSQLI_BIN} #' ${CONF_FILE}";
		eval ${STR};
                STR="perl -pi -e 's#with-mysqli\"#with-mysqli=${MYSQLI_BIN}\"#' ${CONF_FILE}";
                eval ${STR};
	fi

        #if this is a 64bit system,make sure libmysqlclient is correct.
        if [ -e /usr/lib64/libmysqlclient.so ] && [ ! -e /usr/lib/libmysqlclient.so ]; then
                ln -s /usr/lib64/libmysqlclient.so /usr/lib/libmysqlclient.so
        fi

	${CONF_FILE}
	if [ $? -ne 0 ]
	then
		echo -e "\n*** There was an error while trying to configure php. Check the ${PHP5_CONFIGURE_SUPHP} file\n";
		do_exit 1;
	fi

	echo "Done Configuration.";

	while
	echo "Trying to make php..."
	do
	{
		C_INCLUDE_PATH=/usr/kerberos/include make

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -n -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
	                else
        	                if [ "${INPUT_VALUE}" = "d" ]; then
                	                yesno=n
                        	else
                                	yesno=${INPUT_VALUE}
	                        fi
        	        fi

			if [ "${yesno}" = "n" ]
			then
				do_exit 0;
			fi
		else
			break;
		fi
	}
	done
	echo "Make Complete";

	#change the pear settings to remove the -n option.
	#the default memory limit was messing this up.
	/usr/bin/perl -pi -e 's/PEAR_INSTALL_FLAGS = .*/PEAR_INSTALL_FLAGS = -dshort_open_tag=0 -dsafe_mode=0/' Makefile

	#this was moved here, again for pear
        echo "Copying php.ini..";
        if [ ! -e ${PHP_INI_SUPHP5} ]
        then
                cp ./php.ini-dist ${PHP_INI_SUPHP5};
        else
                echo "${PHP_INI_SUPHP5} already exists, skipping.";
        fi

	echo "Increasing memory limit to 20M...";
	/usr/bin/perl -pi -e 's/memory_limit = 8M/memory_limit = 20M/' ${PHP_INI_SUPHP5}
	/usr/bin/perl -pi -e 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' ${PHP_INI_SUPHP5}

	while
	echo "Installing php...";
	do
	{
		make install

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The install has failed, do you want to try to install it again? (y,n): ";
        	                read yesno;
                	        echo "";
			else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
			fi

                        if [ "${yesno}" = "n" ]
                        then
				do_exit 0;
                        fi
                else
                        break;
                fi
	}
	done;
	
	rm -f ${WORKDIR}/.custombuild

	echo "PHP ${PHP5_VER} with suPHP Installed.";

	cd ${CWD};
}

doPhp6() {
	getFile php-${PHP6_VER}.tar.gz php6
	#getFile ${MAIL_HEADER_FILE_PHP6}
	if [ "${PHP6_CLI_OPT}" != "yes" ]; then
		do_exit 1 "Can not build PHP6 as CLI because it is not set in options.conf."
	fi
	checkCURL
	checkFreeType
	checkIconv
	checkMCrypt
	checkMHash
	if [ ! -d /usr/local/icu ]; then
		doICU;
	fi
	quitIfLocked doPhp6
	touch ${WORKDIR}/.custombuild
	cd ${CWD};
	FILE=${CWD}/php-${PHP6_VER}.tar.gz
	checkFile ${FILE}
	echo "Extracting ...";
	tar xzf ${FILE}
	echo "Done.";

	cd php-${PHP6_VER}

	#make sure we have the sendmail link
	ln -sf exim /usr/sbin/sendmail

	#some reports of missing -lltdl, problem found to be simple missing link
	if [ ! -e /usr/lib/libltdl.so ]; then
		ln -sf libltdl.so.3 /usr/lib/libltdl.so
	fi
	
	if [ "${OS}" = "FreeBSD" ] && [ "${OS_VER}" = "6.1" ]; then
		if [ ! -e /lib/libm.so.3 ]; then
			ln -sf libm.so.4 /lib/libm.so.3
		fi
		if [ ! -e /lib/libz.so.2 ]; then
			ln -sf libz.so.3 /lib/libz.so.2
		fi
	fi
	
	echo "Configuring php-${PHP6_VER}...";

	CONF_FILE=${CWD}/${PHP6_CONFIGURE};

	#we need to make sure that the mysql path is set.
	MYSQL_H="";

        if [ -d /usr/local/mysql/include ]; then
                MYSQL_H=/usr/local/mysql
        fi

        if [ "${MYSQL_H}" = "" ]; then
                if [ -e /usr/include/mysql/mysql.h ]; then
                        MYSQL_H=/usr
                fi
        fi

	if [ "${MYSQL_H}" != "" ]; then
		STR="perl -pi -e 's#with-mysql\s#with-mysql=${MYSQL_H} #' ${CONF_FILE}";
		eval ${STR};
                STR="perl -pi -e 's#with-mysql\"#with-mysql=${MYSQL_H}\"#' ${CONF_FILE}";
                eval ${STR};
                STR="perl -pi -e 's#with-pdo-mysql\"#with-pdo-mysql=${MYSQL_H}\"#' ${CONF_FILE}";
                eval ${STR};
		STR="perl -pi -e 's#with-pdo-mysql\s#with-pdo-mysql=${MYSQL_H} #' ${CONF_FILE}";
		eval ${STR};
	fi

	#we need to make sure that the mysqli path is set.
	MYSQLI_BIN="";
	if [ -e /usr/local/bin/mysql_config ]; then
		MYSQLI_BIN=/usr/local/bin/mysql_config
	fi
	if [ "${MYSQLI_BIN}" = "" ]; then
		if [ -e /usr/mysql/bin/mysql_config ]; then
			MYSQLI_BIN=/usr/mysql/bin/mysql_config
		fi
	fi
	if [ "${MYSQLI_BIN}" = "" ]; then
		if [ -e /usr/local/mysql/bin/mysql_config ]; then
			MYSQLI_BIN=/usr/local/mysql/bin/mysql_config
		fi
	fi
	if [ "${MYSQLI_BIN}" = "" ]; then
		if [ -e /usr/bin/mysql_config ]; then
			MYSQLI_BIN=/usr/bin/mysql_config
		fi
	fi

	if [ "${MYSQLI_BIN}" != "" ]; then
		STR="perl -pi -e 's#with-mysqli\s#with-mysqli=${MYSQLI_BIN} #' ${CONF_FILE}";
		eval ${STR};
                STR="perl -pi -e 's#with-mysqli\"#with-mysqli=${MYSQLI_BIN}\"#' ${CONF_FILE}";
                eval ${STR};
	fi

        #if this is a 64bit system,make sure libmysqlclient is correct.
        if [ -e /usr/lib64/libmysqlclient.so ] && [ ! -e /usr/lib/libmysqlclient.so ]; then
                ln -s /usr/lib64/libmysqlclient.so /usr/lib/libmysqlclient.so
        fi

	${CONF_FILE}
	if [ $? -ne 0 ]
	then
		echo -e "\n*** There was an error while trying to configure php. Check the ${PHP6_CONFIGURE} file\n";
		do_exit 1;
	fi

	echo "Done Configuration.";

	while
	echo "Trying to make php..."
	do
	{
		C_INCLUDE_PATH=/usr/kerberos/include make

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -n -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
	                else
        	                if [ "${INPUT_VALUE}" = "d" ]; then
                	                yesno=n
                        	else
                                	yesno=${INPUT_VALUE}
	                        fi
        	        fi

			if [ "${yesno}" = "n" ]
			then
				do_exit 0;
			fi
		else
			break;
		fi
	}
	done
	echo "Make Complete";

	#change the pear settings to remove the -n option.
	#the default memory limit was messing this up.
	/usr/bin/perl -pi -e 's/PEAR_INSTALL_FLAGS = .*/PEAR_INSTALL_FLAGS = -dshort_open_tag=0 -dsafe_mode=0/' Makefile

	#this was moved here, again for pear
        echo "Copying php.ini..";
        if [ ! -e ${PHP_INI} ]
        then
                cp ./php.ini-dist ${PHP_INI};
        else
                echo "${PHP_INI} already exists, skipping.";
        fi

	echo "Increasing memory limit to 20M...";
	/usr/bin/perl -pi -e 's/memory_limit = 8M/memory_limit = 20M/' ${PHP_INI}
	/usr/bin/perl -pi -e 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' ${PHP_INI}

	echo "Disabling magic_quotes_gpc...";
	perl -pi -e 's/^magic_quotes_gpc/;magic_quotes_gpc/' ${PHP_INI}

	while
	echo "Installing php...";
	do
	{
		make install

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The install has failed, do you want to try to install it again? (y,n): ";
        	                read yesno;
                	        echo "";
			else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
			fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
	}
	done;
	
	echo "PHP ${PHP6_VER} Installed.";
	rm -f ${WORKDIR}/.custombuild
	cd ${CWD};
}

doPhp6_suphp() {
	getFile php-${PHP6_VER}.tar.gz php6
	#getFile ${MAIL_HEADER_FILE_PHP6}
	if [ "${PHP6_CGI_OPT}" != "yes" ]; then
		do_exit 1 "Can not build PHP6 as CGI because it is not set in options.conf."
	fi
	checkCURL
	checkFreeType
	checkIconv
	checkMCrypt
	checkMHash
	if [ ! -d /usr/local/icu ]; then
		doICU;
	fi
	quitIfLocked doPhp6_suphp
	touch ${WORKDIR}/.custombuild
	mkdir -p /usr/local/etc/php6/cgi
	cd ${CWD};
	FILE=${CWD}/php-${PHP6_VER}.tar.gz
	checkFile ${FILE}
	echo "Extracting ...";
	tar xzf ${FILE}
	echo "Done.";

	cd php-${PHP6_VER}

	#make sure we have the sendmail link
	ln -sf exim /usr/sbin/sendmail

	#some reports of missing -lltdl, problem found to be simple missing link
	if [ ! -e /usr/lib/libltdl.so ]; then
		ln -sf libltdl.so.3 /usr/lib/libltdl.so
	fi
	
	if [ "${OS}" = "FreeBSD" ] && [ "${OS_VER}" = "6.1" ]; then
		if [ ! -e /lib/libm.so.3 ]; then
			ln -sf libm.so.4 /lib/libm.so.3
		fi
		if [ ! -e /lib/libz.so.2 ]; then
			ln -sf libz.so.3 /lib/libz.so.2
		fi
	fi
	
	echo "Configuring php-${PHP6_VER}...";

	CONF_FILE=${CWD}/${PHP6_CONFIGURE_SUPHP};

	#we need to make sure that the mysql path is set.
	MYSQL_H="";

        if [ -d /usr/local/mysql/include ]; then
                MYSQL_H=/usr/local/mysql
        fi

        if [ "${MYSQL_H}" = "" ]; then
                if [ -e /usr/include/mysql/mysql.h ]; then
                        MYSQL_H=/usr
                fi
        fi

	if [ "${MYSQL_H}" != "" ]; then
		STR="perl -pi -e 's#with-mysql\s#with-mysql=${MYSQL_H} #' ${CONF_FILE}";
		eval ${STR};
                STR="perl -pi -e 's#with-mysql\"#with-mysql=${MYSQL_H}\"#' ${CONF_FILE}";
                eval ${STR};
                STR="perl -pi -e 's#with-pdo-mysql\"#with-pdo-mysql=${MYSQL_H}\"#' ${CONF_FILE}";
                eval ${STR};
		STR="perl -pi -e 's#with-pdo-mysql\s#with-pdo-mysql=${MYSQL_H} #' ${CONF_FILE}";
		eval ${STR};
	fi

	#we need to make sure that the mysqli path is set.
	MYSQLI_BIN="";
	if [ -e /usr/local/bin/mysql_config ]; then
		MYSQLI_BIN=/usr/local/bin/mysql_config
	fi
	if [ "${MYSQLI_BIN}" = "" ]; then
		if [ -e /usr/mysql/bin/mysql_config ]; then
			MYSQLI_BIN=/usr/mysql/bin/mysql_config
		fi
	fi
	if [ "${MYSQLI_BIN}" = "" ]; then
		if [ -e /usr/local/mysql/bin/mysql_config ]; then
			MYSQLI_BIN=/usr/local/mysql/bin/mysql_config
		fi
	fi
	if [ "${MYSQLI_BIN}" = "" ]; then
		if [ -e /usr/bin/mysql_config ]; then
			MYSQLI_BIN=/usr/bin/mysql_config
		fi
	fi

	if [ "${MYSQLI_BIN}" != "" ]; then
		STR="perl -pi -e 's#with-mysqli\s#with-mysqli=${MYSQLI_BIN} #' ${CONF_FILE}";
		eval ${STR};
                STR="perl -pi -e 's#with-mysqli\"#with-mysqli=${MYSQLI_BIN}\"#' ${CONF_FILE}";
                eval ${STR};
	fi

        #if this is a 64bit system,make sure libmysqlclient is correct.
        if [ -e /usr/lib64/libmysqlclient.so ] && [ ! -e /usr/lib/libmysqlclient.so ]; then
                ln -s /usr/lib64/libmysqlclient.so /usr/lib/libmysqlclient.so
        fi

	${CONF_FILE}
	if [ $? -ne 0 ]
	then
		echo -e "\n*** There was an error while trying to configure php. Check the ${PHP6_CONFIGURE_SUPHP} file\n";
		do_exit 1;
	fi

	echo "Done Configuration.";

	while
	echo "Trying to make php..."
	do
	{
		C_INCLUDE_PATH=/usr/kerberos/include make

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -n -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
	                else
        	                if [ "${INPUT_VALUE}" = "d" ]; then
                	                yesno=n
                        	else
                                	yesno=${INPUT_VALUE}
	                        fi
        	        fi

			if [ "${yesno}" = "n" ]
			then
				do_exit 0;
			fi
		else
			break;
		fi
	}
	done
	echo "Make Complete";

	#change the pear settings to remove the -n option.
	#the default memory limit was messing this up.
	/usr/bin/perl -pi -e 's/PEAR_INSTALL_FLAGS = .*/PEAR_INSTALL_FLAGS = -dshort_open_tag=0 -dsafe_mode=0/' Makefile

	#this was moved here, again for pear
        echo "Copying php.ini..";
        if [ ! -e ${PHP_INI_SUPHP6} ]
        then
                cp ./php.ini-dist ${PHP_INI_SUPHP6};
        else
                echo "${PHP_INI_SUPHP6} already exists, skipping.";
        fi

	echo "Increasing memory limit to 20M...";
	/usr/bin/perl -pi -e 's/memory_limit = 8M/memory_limit = 20M/' ${PHP_INI_SUPHP6}
	/usr/bin/perl -pi -e 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' ${PHP_INI_SUPHP6}

	echo "Disabling magic_quotes_gpc...";
	perl -pi -e 's/^magic_quotes_gpc/;magic_quotes_gpc/' ${PHP_INI_SUPHP6}

	while
	echo "Installing php...";
	do
	{
		make install

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The install has failed, do you want to try to install it again? (y,n): ";
        	                read yesno;
                	        echo "";
			else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
			fi

                        if [ "${yesno}" = "n" ]
                        then
				do_exit 0;
                        fi
                else
                        break;
                fi
	}
	done;
	
	rm -f ${WORKDIR}/.custombuild

	echo "PHP ${PHP6_VER} with suPHP Installed.";

	cd ${CWD};
}

doSuPhp() {
	getFile suphp-${SUPHP_VER}.tar.gz suphp
	quitIfLocked doSuPhp
	touch ${WORKDIR}/.custombuild
	cd ${CWD};
	FILE=${CWD}/suphp-${SUPHP_VER}.tar.gz
	checkFile ${FILE}
	echo "Extracting ...";
	tar xzf ${FILE}
	echo "Done.";

	mkdir -p /usr/local/suphp/etc
	cd suphp-${SUPHP_VER}
	echo "Configuring suphp-${SUPHP_VER}...";
	CONF_FILE=${CWD}/${SUPHP_CONFIGURE};

	${CONF_FILE}
	if [ $? -ne 0 ]
	then
		echo -e "\n*** There was an error while trying to configure suPHP. Check the ${SUPHP_CONFIGURE} file\n";
		do_exit 1;
	fi

	echo "Done Configuration.";

	while
	echo "Trying to make suPHP..."
	do
	{
		make

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -n -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
	                else
        	                if [ "${INPUT_VALUE}" = "d" ]; then
                	                yesno=n
                        	else
                                	yesno=${INPUT_VALUE}
	                        fi
        	        fi

			if [ "${yesno}" = "n" ]
			then
				do_exit 0;
			fi
		else
			break;
		fi
	}
	done
	echo "Make Complete";

	if [ -e /usr/lib/apache/mod_suphp.so ]; then
		rm -f /usr/lib/apache/mod_suphp.so
	fi

	while
	echo "Installing suPHP...";
	do
	{
                #only freebsd 7 seemed affected with this, thus added.
                chmod 755 config/install-sh

		make install

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The install has failed, do you want to try to install it again? (y,n): ";
        	                read yesno;
                	        echo "";
			else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
			fi

                        if [ "${yesno}" = "n" ]
                        then
				do_exit 0;
                        fi
                else
                        break;
                fi
	}
	done;
	
	touch /var/log/suphp.log

	echo "suPHP ${SUPHP_VER} Installed.";
	rm -f ${WORKDIR}/.custombuild
	cd ${CWD};
}

####################################################

doModSSL() {
	cd ${CWD};
	getFile mod_ssl-${MODSSL_VER}-${APACHE_VER}.tar.gz mod_ssl

	FILE=${CWD}/mod_ssl-${MODSSL_VER}-${APACHE_VER}.tar.gz
	checkFile ${FILE};
	echo "Extracting ${FILE}...";
	
	tar xzf ${FILE}
	cd mod_ssl-${MODSSL_VER}-${APACHE_VER}
	
	echo "Configuring mod_ssl-${MODSSL_VER}-${APACHE_VER}...";

        if [ ${OS} = "FreeBSD" ]; then
                OPTIM="-DHARD_SERVER_LIMIT=32768 -DFD_SETSIZE=32768 " \
                EAPI_MM="SYSTEM" \
                SSL_BASE="/usr" \
                PORTOBJFORMAT=elf \
                ${CWD}/${APACHE_SSL_CONFIGURE};
        else
                ${CWD}/${APACHE_SSL_CONFIGURE};
        fi

	if [ $? -ne 0 ]
	then
		echo -e "\n*** There was an error while trying to configure apache+mod_ssl. Check the ${APACHE_SSL_CONFIGURE} file\n";
		do_exit 1;
	fi

	echo "Done Configuration.";

	cd ${CWD};
}

####################################################

backupHttp() {
	echo "Backing up certificate and key, and turning off httpd for DirectAdmins's check.";

	if [ -e ${HTTPDCONF}/ssl.crt/server.crt ]
	then
		cp -f ${HTTPDCONF}/ssl.crt/server.crt ${HTTPDCONF}/ssl.crt/server.crt.backup
	fi
	if [ -e ${HTTPDCONF}/ssl.key/server.key ]
	then
		cp -f ${HTTPDCONF}/ssl.key/server.key ${HTTPDCONF}/ssl.key/server.key.backup
	fi
	if [ -e ${HTTPD_CONF} ]
	then
		cp -f ${HTTPD_CONF} ${HTTPD_CONF}.backup
	fi
	
	#turn off httpd service checking
	if [ -e ${SERVICES} ]
	then
		/usr/bin/perl -pi -e 's/httpd=ON/httpd=OFF/' ${SERVICES};
	fi
	
}

restoreHttp() {
	echo "Restoring certificate and key, and turning on httpd for DirectAdmins's check.";

	if [ -e ${HTTPDCONF}/ssl.crt/server.crt.backup ]
	then
		cp -f ${HTTPDCONF}/ssl.crt/server.crt.backup ${HTTPDCONF}/ssl.crt/server.crt
	fi
	if [ -e ${HTTPDCONF}/ssl.key/server.key.backup ]
	then
		cp -f ${HTTPDCONF}/ssl.key/server.key.backup ${HTTPDCONF}/ssl.key/server.key
	fi
	if [ -e ${HTTPDCONF}/httpd.conf.backup ]
	then
		cp -f ${HTTPDCONF}/httpd.conf.backup ${HTTPDCONF}/httpd.conf
	fi

	#turn on httpd service checking
	if [ -e ${SERVICES} ]
	then
		/usr/bin/perl -pi -e 's/httpd=OFF/httpd=ON/' ${SERVICES};
	fi
}

####################################################

checkRPMS() {
	if [ ${OS} = "FreeBSD" ]; then
		return;
	fi

	if [ -e ${DEBIAN_VERSION} ]; then
		return;
	fi

	echo "Removing all apache related rpms...";
	rpm -e --nodeps mod_auth_pgsql 2> /dev/null
	rpm -e --nodeps mod_python 2> /dev/null
	rpm -e --nodeps mod_auth_mysql 2> /dev/null
	rpm -e --nodeps mod_auth_any 2> /dev/null
	rpm -e --nodeps mod_dav 2> /dev/null
	rpm -e --nodeps mod_ssl 2> /dev/null
	rpm -e --nodeps mod_perl 2> /dev/null
	rpm -e --nodeps mod_fpse 2> /dev/null
	rpm -e --nodeps apache-fp 2> /dev/null
	rpm -e --nodeps apache-fp-devel 2> /dev/null
	rpm -e --nodeps apache-manual 2> /dev/null
	rpm -e --nodeps apacheconf 2> /dev/null
	rpm -e --nodeps apache-devel 2> /dev/null
	rpm -e --nodeps apache 2> /dev/null
	rpm -e --nodeps httpd 2> /dev/null
	rpm -e --nodeps httpd-devel 2> /dev/null
	rpm -e --nodeps php 2> /dev/null
	echo "All apache related rpms have been removed.";
}

####################################################

addUserGroup() {
	if [ ${OS} = "FreeBSD" ]; then
		PW=/usr/sbin/pw
		if ! /usr/bin/grep -q "^${2}:" < /etc/group; then
			${PW} groupadd ${2}
		fi
		if ! /usr/bin/id ${1} > /dev/null; then
			${PW} useradd -g ${2} -n ${1}
		fi
	elif [ -e ${DEBIAN_VERSION} ]; then
		if ! /usr/bin/id ${1} > /dev/null; then
			adduser --system --group --no-create-home \
		            --disabled-login --force-badname ${1} > /dev/null
		fi
	else
		if ! /usr/bin/id ${1} > /dev/null; then				
			/usr/sbin/useradd ${1} -r
		fi
	fi
}

####################################################

set64() {
	if [ ! -d /usr/lib64 ]; then
		return;
	fi

	if [ ! -e /usr/lib/libssl.so ]; then
		ln -sf /usr/lib64/libssl.so /usr/lib/libssl.so
	fi
	if [ ! -e /usr/lib/libidn.so ]; then
		ln -sf /usr/lib64/libidn.so /usr/lib/libidn.so
	fi
}

####################################################

doApacheCheck() {
	if [ ! -e ${HTTPDCONF}/extra/httpd-includes.conf ]; then
		echo -n "" > ${HTTPDCONF}/extra/httpd-includes.conf
	fi

	if [ ! -e ${SUPHP_HTTPD} ]; then
		echo -n "" > ${SUPHP_HTTPD}
	fi

	if [ ! -e ${HTTPDCONF}/extra/httpd-php-handlers.conf ]; then
		echo -n "" > ${HTTPDCONF}/extra/httpd-php-handlers.conf
	fi
	
	if [ ! -e ${HTTPDCONF}/extra/httpd-phpmodules.conf ]; then
		echo -n "" > ${HTTPDCONF}/extra/httpd-phpmodules.conf
	fi
}

####################################################

doRestartDA(){
	echo "action=directadmin&value=restart" >> /usr/local/directadmin/data/task.queue
	/usr/local/directadmin/dataskq
}

####################################################

doUpdateData1() {
	cd ${CWD}
	getFile apache_${APACHE_VER}.tar.gz apache
	getFile ${APACHE_SSL_CONFIGURE}
	chmod 755 ${APACHE_SSL_CONFIGURE}
	getFile mod_ssl-${MODSSL_VER}-${APACHE_VER}.tar.gz mod_ssl
        getFile httpd
        getFile httpd_freebsd
        getFile httpd_debian
}

####################################################

hideFrontpage() {

        if [ -e ${DACONF_TEMPLATE_FILE} ] && [ "`grep -c frontpage_on ${DACONF_TEMPLATE_FILE}`" = "0" ]; then
                echo "frontpage_on=0" >> ${DACONF_TEMPLATE_FILE}
        fi

        if [ -e ${DACONF_FILE} ] && [ "`grep -c frontpage_on ${DACONF_FILE}`" = "0" ]; then
                echo "frontpage_on=0" >> ${DACONF_FILE}
                if [ -e /usr/local/directadmin/data ]; then
                        echo "action=directadmin&value=restart" >> /usr/local/directadmin/data/task.queue
                fi
        fi
}

####################################################

doApache() {
	doUpdateData1;
	quitIfLocked doApache
	touch ${WORKDIR}/.custombuild
	if [ ! -e /usr/local/directadmin/data/users/admin/httpd.conf ]; then
		echo -n "" > /usr/local/directadmin/data/users/admin/httpd.conf
		chown diradmin:diradmin /usr/local/directadmin/data/users/admin/httpd.conf
	fi

	set64;

	addUserGroup apache apache
	
	#this bit is to increase the socket limit
	if [ -e /usr/include/bits/typesizes.h ]; then
		perl -pi -e 's/__FD_SETSIZE.*1024/__FD_SETSIZE 32768/' /usr/include/bits/typesizes.h
	fi

	#same thing, for freebsd
	if [ -e /usr/include/sys/select.h ]; then
		perl -pi -e 's/FD_SETSIZE.*1024U/FD_SETSIZE 32768U/' /usr/include/sys/select.h
	fi

	perl -pi -e 's#^LoadModule frontpage_module#\#LoadModule frontpage_module#' /etc/httpd/conf/httpd.conf > /dev/null 2>&1
	backupHttp;
	
	cd ${CWD};
	FILE=${CWD}/apache_${APACHE_VER}.tar.gz
	checkFile ${FILE};
	
	#removing old apache dir, because the patch may get applied twice (might confuse the user)
	rm -rf ${CWD}/apache_${APACHE_VER};
	
	echo "Extracting ${FILE}...";
	
	tar xzf ${FILE}
	cd apache_${APACHE_VER}
	
	echo "Done. Applying patches...";
	
	echo "Increasing hard limit to 32768...";
	/usr/bin/perl -pi -e 's/^#define HARD_SERVER_LIMIT 256/#define HARD_SERVER_LIMIT 32768/' ./src/include/httpd.h;
	/usr/bin/perl -pi -e 's/\/\* Majority of os/#undef FD_SETSIZE\n#define FD_SETSIZE 32768\n\n\/\* Majority of os/' ./src/include/ap_config.h
	/usr/bin/perl -pi -e 's/r->connection->keepalive > 0/r->connection->keepalive != -1/' ./src/main/http_request.c

	if [ ${OS} = "FreeBSD" ]; then
		# do nothing
		echo "";
	else
		/usr/bin/perl -pi -e 's/__FD_SETSIZE\s1024/__FD_SETSIZE\t32768/' /usr/include/bits/types.h
		echo "131072" > /proc/sys/fs/file-max
		
	fi

	if [ "$1" = "fake" ]; then
                ./configure \
                        --prefix=/etc/httpd \
                        --exec-prefix=/etc/httpd \
                        --bindir=/usr/bin \
                        --sbindir=/usr/sbin \
                        --sysconfdir=/etc/httpd/conf \
			--enable-module=all \
			--enable-shared=max \
			--htdocsdir=${WWWDIR} \
			--manualdir=${WWWDIR}/manual \
                        --includedir=/usr/include/apache \
			--libexecdir=/usr/lib/apache \
                        --datadir=/var/www \
                        --localstatedir=/var \
                        --runtimedir=/var/run \
                        --logfiledir=/var/log/httpd \
                        --proxycachedir=/var/cache/httpd \
			--disable-module=auth_db --disable-module=auth_dbm
	else

		echo "Setting up mod_ssl...";
	
		#configure apache through mod_ssl
		doModSSL;
	
	fi

	#Jailed shell
	if [ "${JAIL_OPT}" = "yes" ]; then
		cd ${CWD}
		
		if [ ! -e ${JAIL_DIR}/${SU_FILE} ]; then
			echo "Can not find ${JAIL_DIR}/$SU_FILE. Run './build update_data'";
			do_exit 0;
		fi
		
		SUEXEC_FILE=${CWD}/apache_${APACHE_VER}/src/support/suexec.c
		cp -f ${JAIL_DIR}/${SU_FILE} ${SUEXEC_FILE}
		chmod 1755 ${SUEXEC_FILE}
		
		#add just a touch of nothing to increase the datestamp so that 'make' finds it.
		echo -n "" >> ${SUEXEC_FILE};
	fi
	
	cd ${CWD}/apache_${APACHE_VER};
	
	while
	echo "Trying to make apache..."
	do
	{
		C_INCLUDE_PATH=/usr/kerberos/include make

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

			if [ "${yesno}" = "n" ]
			then
				do_exit 0;
			fi
		else
			break;
		fi
	}
	done
	echo "Make complete";
	
	checkRPMS;
	
	echo "Installing Apache...";
	make install
	
	echo "Done installing Apache+Mod_SSL.";
	rm -f ${WORKDIR}/.custombuild
	cd ${CWD}

	restoreHttp;

	#check directadmin.conf file
	if [ "`grep -c 'apacheconf=/etc/httpd/conf/httpd.conf' ${DACONF_TEMPLATE_FILE}`" = "1" ]; then
		perl -pi -e 's#apacheconf=/etc/httpd/conf/httpd.conf#apacheconf=/etc/httpd/conf/extra/directadmin-vhosts.conf#' ${DACONF_TEMPLATE_FILE}
	fi

	if [ ! -e ${DACONF_FILE} ] || [ "`grep -c 'apacheconf=/etc/httpd/conf/httpd.conf' ${DACONF_FILE}`" = "1" ]; then
		if [ -e ${DACONF_FILE} ] && [ "`grep -c 'apacheconf=/etc/httpd/conf/httpd.conf' ${DACONF_FILE}`" = "1" ]; then
			perl -pi -e 's#apacheconf=/etc/httpd/conf/httpd.conf#apacheconf=/etc/httpd/conf/extra/directadmin-vhosts.conf#' ${DACONF_FILE}
		fi

		cd ${CWD}
		mv -f ${HTTPDCONF} ${HTTPDCONF}.${APACHE_OPT}.backup

		#add all the Include lines
		doVhosts;

		cd ${CWD}

		cp -rf ${AP1CONFDIR} ${HTTPDDIR}
		cp -rf ${HTTPDCONF}.${APACHE_OPT}.backup/ssl.key ${HTTPDCONF}
		cp -rf ${HTTPDCONF}.${APACHE_OPT}.backup/ssl.crt ${HTTPDCONF}

		cd ${CWD}/apache_${APACHE_VER};
		doRestartDA;
	fi

	#copy the new configs if needed
	if [ "`grep -c 'Include' ${HTTPDCONF}/extra/directadmin-vhosts.conf`" = "0" ] || [ ! -e ${HTTPDCONF}/extra/directadmin-vhosts.conf ]; then
		cp -rf ${AP1CONFDIR} ${HTTPDDIR}
	fi

	#rewrite ips.conf if needed
	echo "action=rewrite&value=ips" >> /usr/local/directadmin/data/task.queue
	/usr/local/directadmin/dataskq

	#tokenize the IP if needed
	if [ "`grep -c '|IP|' ${HTTPDCONF}/extra/httpd-vhosts.conf`" != "0" ]; then
                HOSTNAME=`hostname`;
                IP=`grep $HOSTNAME /etc/hosts | awk '{print $1}'`
                echo "Using $IP for your server IP";
                STR="perl -pi -e 's/\|IP\|/$IP/' ${HTTPDCONF}/extra/httpd-vhosts.conf";
                eval ${STR};
	fi

	#add all the Include lines if they do not exist
	if [ "`grep -c 'Include' ${HTTPDCONF}/extra/directadmin-vhosts.conf`" = "0" ] || [ ! -e ${HTTPDCONF}/extra/directadmin-vhosts.conf ]; then
		doVhosts;
		cd ${CWD}/apache_${APACHE_VER}
	fi

	#add SSL cerificates
	if [ "`grep -c -s -e 'BEGIN CERTIFICATE' ${HTTPDCONF}/ssl.crt/server.crt`" -ne 1 ] || [ "`grep -c -s -e 'BEGIN RSA PRIVATE KEY' ${HTTPDCONF}/ssl.key/server.key`" -ne 1 ]; then
		make certificate TYPE=dummy;
		cp -f ./conf/ssl.crt/server.crt ${HTTPDCONF}/ssl.crt/server.crt
		cp -f ./conf/ssl.key/server.key ${HTTPDCONF}/ssl.key/server.key
	fi

	doApacheCheck;
	
	#change apache_ver in directadmin.conf
	if [ "`grep -c apache_ver=2.0 ${DACONF_TEMPLATE_FILE}`" = "1" ]; then
		perl -pi -e 's/apache_ver=2.0/apache_ver=1.3/' ${DACONF_TEMPLATE_FILE}
	fi
	if [ "`grep -c apache_ver=2.0 ${DACONF_FILE}`" = "1" ]; then
		perl -pi -e 's/apache_ver=2.0/apache_ver=1.3/' ${DACONF_FILE}
		doRestartDA;
		./build rewrite_confs;
	fi

	#remove the auth modules from the httpd.conf
	/usr/bin/perl -pi -e 's/^LoadModule db_auth_module/#LoadModule db_auth_module/' ${HTTPD_CONF};
	/usr/bin/perl -pi -e 's/^AddModule mod_auth_db.c/#AddModule mod_auth_db.c/' ${HTTPD_CONF};
	
	ln -sf ../../var/log/httpd /etc/httpd/logs
	ln -sf ../../usr/lib/apache /etc/httpd/modules 

	#changed nov 24, 2006 for hardened log security (was just 755)
	chmod 711 /var/log/httpd
	mkdir -p /var/log/httpd/domains
	chmod 710 /var/log/httpd/domains
	chown root:nobody /var/log/httpd/domains

	if [ ${OS} = "FreeBSD" ]
	then
		cp -f ${CWD}/httpd_freebsd /usr/local/etc/rc.d/httpd
		chmod 755 /usr/local/etc/rc.d/httpd
	elif [ -e /etc/debian_version ]; then
		cp -f ${CWD}/httpd_debian /etc/init.d/httpd
                chmod 755 /etc/init.d/httpd
		update-rc.d httpd defaults
	else
		cp -f ${CWD}/httpd /etc/rc.d/init.d/httpd
		chmod 755 /etc/rc.d/init.d/httpd
		/sbin/chkconfig httpd on
	fi

	if [ ! -e /etc/mime.types ]
	then
		cp ${CWD}/mime.types /etc/mime.types
	fi
	
	mkdir -p ${WWWDIR}

	if [ ! -e ${WWWDIR}/index.html ]
	then
        	if [ -e ${WWWDIR}/index.html.en ]
	        then
        	        cp -f ${WWWDIR}/index.html.en ${WWWDIR}/index.html
	        else
        	        echo "<html>Apache is functioning normally</html>" > ${WWWDIR}/index.html
	        fi
	fi

	if [ ! -e ${WWWDIR}/404.shtml ]
	then
		wget -O ${WWWDIR}/404.shtml $WEBPATH/404.shtml.txt
		touch ${WWWDIR}/favicon.ico
	fi

        #log rotate
        if [ ! -e /etc/logrotate.d/apache ] && [ ${OS} != "FreeBSD" ]
        then
		wget ${WEBPATH}/apache.logrotate -O /etc/logrotate.d/apache
        fi

	COUNT=0;
	if [ -e /etc/logrotate.d/apache ];
	then
		COUNT=`grep -c suexec_log /etc/logrotate.d/apache`
	fi
	if [ -e /etc/logrotate.d/apache ] && [ "${OS}" != "FreeBSD" ] && [ "${COUNT}" -eq 0 ]
	then
		wget ${WEBPATH}/apache.logrotate -O /etc/logrotate.d/apache
	fi


	#this is an addition for jailing
	#if the jailing patch was previously installed, repatch.
	if [ -e ${CWD}/jail/build ]; then

		echo "*****";
		echo "  Repatching apache with jailed suexec";
		echo "*****";

		${CWD}/jail/build suexec
	fi

	echo "Restarting apache."
	${INITDDIR}/httpd restart
}	

####################################################

doCURL() {
	getFile curl-${CURL_VER}.tar.gz curl
	quitIfLocked doCURL
	touch ${WORKDIR}/.custombuild
	cd ${CWD};
	FILE=${CWD}/curl-${CURL_VER}.tar.gz
	checkFile ${FILE}
	echo "Extracting ...";
	tar xzf ${FILE}
	echo "Done.";
	chmod -R 755 curl-${CURL_VER}
	cd curl-${CURL_VER}
	echo "Configuring curl-${CURL_VER}...";
	./configure --disable-file
	/usr/bin/perl -pi -e 's/\#define HAVE_OPENSSL_ENGINE_H 1/\/\/\#define HAVE_OPENSSL_ENGINE_H 0/' ./lib/config.h;
	echo "Done. Making curl-${CURL_VER}...";
	while
	echo "Trying to make cURL..."
	do
	{
		make CPPFLAGS=-I/usr/kerberos/include

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

			if [ "${yesno}" = "n" ]
			then
				do_exit 0;
			fi
		else
			break;
		fi
	}
	done
	echo "Make complete";
	echo "Installing curl-${CURL_VER}...";
	make install
	echo "Done curl.";
	rm -f ${WORKDIR}/.custombuild
	cd ${CWD}
}

####################################################

doPCRE() {
	getFile pcre-${PCRE_VER}.tar.gz pcre
	quitIfLocked doPCRE
	touch ${WORKDIR}/.custombuild
	cd ${CWD};
	FILE=${CWD}/pcre-${PCRE_VER}.tar.gz
	checkFile ${FILE}
	echo "Extracting ...";
	tar xzf ${FILE}
	echo "Done.";
	chmod -R 755 pcre-${PCRE_VER}
	cd pcre-${PCRE_VER}
	echo "Configuring pcre-${PCRE_VER}...";
	./configure
	echo "Done. Making pcre-${PCRE_VER}...";
	while
	echo "Trying to make PCRE..."
	do
	{
		make CPPFLAGS=-I/usr/kerberos/include

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

			if [ "${yesno}" = "n" ]
			then
				do_exit 0;
			fi
		else
			break;
		fi
	}
	done
	echo "Make complete";
	echo "Installing pcre-${PCRE_VER}...";
	make install
	echo "Done pcre.";

	ldconfig

	rm -f ${WORKDIR}/.custombuild
	cd ${CWD}
}

####################################################

doMCrypt() {
	getFile libmcrypt-${MCRYPT_VER}.tar.gz mcrypt
	quitIfLocked doMCrypt
	touch ${WORKDIR}/.custombuild
	cd ${CWD};
	FILE=${CWD}/libmcrypt-${MCRYPT_VER}.tar.gz
	checkFile ${FILE}
	echo "Extracting ...";
	tar xzf ${FILE}
	echo "Done.";
	chmod -R 755 libmcrypt-${MCRYPT_VER}
	cd libmcrypt-${MCRYPT_VER}
	echo "Configuring libmcrypt-${MCRYPT_VER}...";
	./configure --enable-ltdl-install
	echo "Done. Making libmcrypt-${MCRYPT_VER}...";
	while
	echo "Trying to make mCrypt..."
	do
	{
		make

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

			if [ "${yesno}" = "n" ]
			then
				do_exit 0;
			fi
		else
			break;
		fi
	}
	done
	echo "Make complete";
	echo "Installing mcrypt-${MCRYPT_VER}...";
	make install
	echo "Done mcrypt.";
	if [ -d ${WORKDIR}/libmcrypt-${MCRYPT_VER}/libltdl ]; then
		echo "Doing extra /libltdl for mcrypt..";
		cd libltdl
		./configure --enable-ltdl-install
		make
		make install
		echo "Done extra /libltdl for mcrypt.";
	fi
	rm -f ${WORKDIR}/.custombuild
	cd ${CWD}
}

####################################################

doMHash() {
	getFile mhash-${MHASH_VER}.tar.gz mhash
	quitIfLocked doMHash
	touch ${WORKDIR}/.custombuild
        cd ${CWD};
        FILE=${CWD}/mhash-${MHASH_VER}.tar.gz
        checkFile ${FILE}
        echo "Extracting ...";
        tar xzf ${FILE}
        echo "Done.";
	chmod -R 755 mhash-${MHASH_VER}
        cd mhash-${MHASH_VER}
        echo "Configuring mhash-${MHASH_VER}...";
        ./configure
        echo "Done. Making mhash-${MHASH_VER}...";
        while
        echo "Trying to make mHash..."
        do
        {
                make

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done
        echo "Make complete";
        echo "Installing mhash-${MHASH_VER}...";
        make install
        echo "Done mhash.";
	rm -f ${WORKDIR}/.custombuild
        cd ${CWD}
}

####################################################

doFreeType() {
	getFile freetype-${FREETYPE_VER}.tar.gz freetype
	quitIfLocked doFreeType
	touch ${WORKDIR}/.custombuild
	if [ "${OS}" = "FreeBSD" ] && [ ! -e /usr/local/bin/gmake ]; then
		cd /usr/ports/devel/gmake
		make
		make install
		make clean
                if [ ! -e /usr/local/bin/gmake ]; then
                        pkg_add -r gmake
                fi
                rehash
	fi
        cd ${CWD};
        FILE=${CWD}/freetype-${FREETYPE_VER}.tar.gz
        checkFile ${FILE}
        echo "Extracting ...";
        tar xzf ${FILE}
        echo "Done.";
        cd freetype-${FREETYPE_VER}
        echo "Configuring freetype-${FREETYPE_VER}...";
        ./configure
        echo "Done. Making freetype-${FREETYPE_VER}...";
        while
        echo "Trying to make FreeType..."
        do
        {
		if [ "${OS}" = "FreeBSD" ]; then
			/usr/local/bin/gmake
		else
			make
		fi

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done
        echo "Make complete";
        echo "Installing freetype-${FREETYPE_VER}...";
	if [ "${OS}" = "FreeBSD" ]; then
		/usr/local/bin/gmake install
	else
		make install
	fi
        echo "Done FreeType.";
		rm -f ${WORKDIR}/.custombuild
        cd ${CWD}
}

####################################################

doICU() {
	getFile icu4c-${ICU_VER}-src.tgz icu4c
	quitIfLocked doICU
	touch ${WORKDIR}/.custombuild
        cd ${CWD};
        FILE=${CWD}/icu4c-${ICU_VER}-src.tgz
        checkFile ${FILE}
        echo "Extracting ...";
        tar xzf ${FILE}
        echo "Done.";
        cd icu/source
	mkdir -p /usr/local/icu
        echo "Configuring icu-${ICU_VER}...";
        ./configure --prefix=/usr/local/icu
        echo "Done. Making icu-${ICU_VER}...";
        while
        echo "Trying to make icu..."
        do
        {
                make

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done
        echo "Make complete";
        echo "Installing icu4c-${ICU_VER}...";
        make install
        echo "Done ICU.";
		rm -f ${WORKDIR}/.custombuild
        cd ${CWD}
}

####################################################

doIconv() {
	getFile libiconv-${ICONV_VER}.tar.gz iconv
	quitIfLocked doIconv
	touch ${WORKDIR}/.custombuild
        cd ${CWD};
        FILE=${CWD}/libiconv-${ICONV_VER}.tar.gz
        checkFile ${FILE}
        echo "Extracting ...";
        tar xzf ${FILE}
        echo "Done.";
        cd libiconv-${ICONV_VER}
        echo "Configuring iconv-${ICONV_VER}...";
        ./configure --prefix=/usr/local
        echo "Done. Making iconv-${ICONV_VER}...";
        while
        echo "Trying to make iconv..."
        do
        {
                make

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done
        echo "Make complete";
        echo "Installing iconv-${ICONV_VER}...";
        make install
        echo "Done iconv.";
	rm -f ${WORKDIR}/.custombuild
        cd ${CWD}

	if [ ! -e /usr/lib/libiconv.so.2 ]; then
		ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2
	fi

	ldconfig
}

####################################################

doLibxslt() {
	getFile libxslt-${LIBXSLT_VER}.tar.gz libxslt
	quitIfLocked doLibxslt
	touch ${WORKDIR}/.custombuild
        cd ${CWD};
        FILE=${CWD}/libxslt-${LIBXSLT_VER}.tar.gz
        checkFile ${FILE}
        echo "Extracting ...";
        tar xzf ${FILE}
        echo "Done.";
        cd libxslt-${LIBXSLT_VER}
        echo "Configuring libxslt-${LIBXSLT_VER}...";
	./configure --prefix=/usr/local --with-libxml-prefix=/usr/local --with-libxml-include-prefix=/usr/local/include --with-libxml-libs-prefix=/usr/local/lib
        echo "Done. Making libxslt-${LIBXSLT_VER}...";
        while
        echo "Trying to make libxslt..."
        do
        {
                make

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done
        echo "Make complete";
        echo "Installing libxslt-${LIBXSLT_VER}...";
        make install
        echo "Done libxslt.";
	rm -f ${WORKDIR}/.custombuild
        cd ${CWD}

	ldconfig
}

####################################################

doLibxml2() {
	getFile libxml2-${LIBXML2_VER}.tar.gz libxml2
	quitIfLocked doLibxml2
	touch ${WORKDIR}/.custombuild
        cd ${CWD};
        FILE=${CWD}/libxml2-${LIBXML2_VER}.tar.gz
        checkFile ${FILE}
        echo "Extracting ...";
        tar xzf ${FILE}
        echo "Done.";
        cd libxml2-${LIBXML2_VER}
        echo "Configuring libxml2-${LIBXML2_VER}...";
        ./configure --prefix=/usr/local
        echo "Done. Making libxml2-${LIBXML2_VER}...";
        while
        echo "Trying to make libxml2..."
        do
        {
                make

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done
        echo "Make complete";
        echo "Installing libxml2-${LIBXML2_VER}...";
        make install
        echo "Done libxml2.";
	rm -f ${WORKDIR}/.custombuild
        cd ${CWD}

	ldconfig
}

####################################################

doAutoconf() {
	getFile autoconf-${AUTOCONF_VER}.tar.gz autoconf
	quitIfLocked doAutoconf
	touch ${WORKDIR}/.custombuild
        cd ${CWD};
        FILE=${CWD}/autoconf-${AUTOCONF_VER}.tar.gz
        checkFile ${FILE}
        echo "Extracting ...";
        tar xzf ${FILE}
        echo "Done.";
        cd autoconf-${AUTOCONF_VER}

        echo "Configuring autoconf-${AUTOCONF_VER}...";
        ./configure --prefix=/usr/local
        echo "Done. Making autoconf-${AUTOCONF_VER}...";
        while
        echo "Trying to make autoconf..."
        do
        {
                LANG=c make;

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done
        echo "Make complete";
        echo "Installing autoconf-${AUTOCONF_VER}...";
        LANG=c make install;
        echo "Done Autoconf";
	rm -f ${WORKDIR}/.custombuild
        cd ${CWD}
}

####################################################

doAutomake() {
	getFile automake-${AUTOMAKE_VER}.tar.gz automake
	quitIfLocked doAutomake
	touch ${WORKDIR}/.custombuild
        cd ${CWD};
        FILE=${CWD}/automake-${AUTOMAKE_VER}.tar.gz
        checkFile ${FILE}
        echo "Extracting ...";
        tar xzf ${FILE}
        echo "Done.";
        cd automake-${AUTOMAKE_VER}

        echo "Configuring automake-${AUTOMAKE_VER}...";
        ./configure --prefix=/usr/local
        echo "Done. Making automake-${AUTOMAKE_VER}...";
        while
        echo "Trying to make automake..."
        do
        {
                LANG=c make;

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done
        echo "Make complete";
        echo "Installing automake-${AUTOMAKE_VER}...";
        LANG=c make install;
        echo "Done Automake";
	rm -f ${WORKDIR}/.custombuild
        cd ${CWD}
}

####################################################

doLibtool() {
	getFile libtool-${LIBTOOL_VER}.tar.gz libtool
	quitIfLocked doLibtool
	touch ${WORKDIR}/.custombuild
        cd ${CWD};
        FILE=${CWD}/libtool-${LIBTOOL_VER}.tar.gz
        checkFile ${FILE}
        echo "Extracting ...";
        tar xzf ${FILE}
        echo "Done.";
        cd libtool-${LIBTOOL_VER}

        echo "Configuring libtool-${LIBTOOL_VER}...";
        ./configure --prefix=/usr/local
        echo "Done. Making libtool-${LIBTOOL_VER}...";
        while
        echo "Trying to make libtool..."
        do
        {
                LANG=c make;

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done
        echo "Make complete";
        echo "Installing libtool-${LIBTOOL_VER}...";
        LANG=c make install;
        echo "Done Libtool";
	rm -f ${WORKDIR}/.custombuild
        cd ${CWD}
}

####################################################

doModPerl() {
	getFile mod_perl-${MODPERL_VER}.tar.gz ${MODPERL_INDEX}
	quitIfLocked doModPerl
	touch ${WORKDIR}/.custombuild
	cd ${CWD};
	FILE=${CWD}/mod_perl-${MODPERL_VER}.tar.gz
	checkFile ${FILE}
	echo "Extracting ...";
	tar xzf ${FILE}
	echo "Done.";
	cd mod_perl-${MODPERL_VER}
	echo "Configuring mod_perl-${MODPERL_VER}...";

	if [ "${APACHE_OPT}" = "1.3" ]; then
		perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/sbin/apxs EVERYTHING=1
	elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
		perl Makefile.PL MP_APXS=/usr/sbin/apxs;
	fi

	echo "Done. Making mod_perl-${MODPERL_VER}...";
	while
	echo "Trying to make mod_perl..."
	do
	{
		make

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

			if [ "${yesno}" = "n" ]
			then
				rm -f ${WORKDIR}/.custombuild
				return;
			fi
		else
			break;
		fi
	}
	done
	echo "Make complete";
	echo "Installing mod_perl-${MODPERL_VER}...";
	make install
	echo "Done mod_perl.";
	rm -f ${WORKDIR}/.custombuild
	#This code is to remove mod_perl from freebsd
	if [ "${OS}" = "FreeBSD" ]; then
		perl -pi -e 's/^AddModule mod_perl.c/\#AddModule mod_perl.c/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_perl.c/\#AddModule mod_perl.c/' /usr/local/directadmin/data/templates/httpd.conf
	fi

	cd ${CWD}
}

####################################################

doWebalizer() {
	quitIfLocked doWebalizer
	
	if [ "${WEBALIZER_OPT}" != "yes" ]; then
		echo "You can not install webalizer, because you do not have it set in options.conf file.";
		setVal webalizer 0 ${DACONF_TEMPLATE_FILE}
		setVal webalizer 0 ${DACONF_FILE}
		exit 1;
	fi
	
	touch ${WORKDIR}/.custombuild
	PREFIX=/usr
	if [ ${OS} = "FreeBSD" ]; then
		PREFIX=/usr/local
	fi

	if [ -e ${PREFIX}/bin/webalizer ]; then
		rm -f ${WORKDIR}/.custombuild
		return;
	fi

        cd ${CWD};
        getFile ${WEBALIZER_FILE} webalizer
        tar xzf ${WEBALIZER_FILE}
        cd ${WEBALIZER}

        ./configure --prefix=${PREFIX} --with-png=/usr/local/lib --with-gdlib=/usr/local/lib --with-gd=/usr/local/include --enable-dns --with-dblib --with-db --with-z-inc --with-zlib 

        while
        echo "Trying to make webalizer..."
        do
        {
                make

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -n -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
				rm -f ${WORKDIR}/.custombuild
                                return;
                        fi
                else
                        break;
                fi
        }
        done

        make install
	rm -f ${WORKDIR}/.custombuild

	if [ "${AWSTATS_OPT}" = "no" ]; then
		setVal awstats 0 ${DACONF_TEMPLATE_FILE}
		setVal awstats 0 ${DACONF_FILE}
	else
		setVal awstats 1 ${DACONF_TEMPLATE_FILE}
		setVal awstats 1 ${DACONF_FILE}
	fi
	
	doRestartDA;
	
	if [ -e /etc/webalizer.conf ]; then
		mv -f /etc/webalizer.conf /etc/webalizer.conf.moved 2> /dev/null > /dev/null
	fi
}

####################################################

doawstats() {
	if [ "${AWSTATS_OPT}" != "yes" ]; then
		echo "You can not install awstats, because you do not have it set in options.conf file.";
		setVal awstats 0 ${DACONF_TEMPLATE_FILE}
		setVal awstats 0 ${DACONF_FILE}
		exit 1;
	fi
	
	HTTPPATH=http://files.directadmin.com/services/all/awstats
	TARFILE=${WORKDIR}/awstats-${AWSTATS_VER}.tar.gz
	USR=/usr/local
	REALPATH=${USR}/awstats-${AWSTATS_VER}
	ALIASPATH=${USR}/awstats

	if [ ! -e ${TARFILE} ]; then
		${WGET} -O ${TARFILE} ${HTTPPATH}/awstats-${AWSTATS_VER}.tar.gz
	fi

	if [ ! -e ${TARFILE} ]; then
        echo "Can not download awstats-${AWSTATS_VER}"
        exit 1
	fi

	M=`checkMD5 $TARFILE awstats`
        if [ "$M" != "0" ]; then
                echo "";
                echo "${boldon}*** MD5 Checksum for $TARFILE Failed.  Redownloading...***${boldoff}";
                echo "";
		${WGET} -O ${TARFILE} ${WEBPATH_SERVICES}/all/awstats-${AWSTATS_VER}.tar.gz

                M=`checkMD5 $TARFILE awstats`
                if [ "$M" != "0" ]; then
                                echo "";
                                echo "";
                                echo "${boldon}*** MD5 Checksum for $TARFILE failed *again*.***${boldoff}";
                                echo "The md5 checksum value may be incorrect, or a wrong file is being downloaded.";
                                echo "Install continuing with this possibly corrupted file. (it may also be fine)";
                                echo "";
                                echo "";
                fi
    fi
	
	#Extract the file
	${TAR} xzf ${TARFILE} -C ${USR}

	if [ ! -e ${REALPATH} ]; then
		echo "Directory ${REALPATH} does not exist"
        exit 1
	fi

	#link it from a fake path:
	/bin/rm -f ${ALIASPATH}
	/bin/ln -sf awstats-${AWSTATS_VER} ${ALIASPATH}
	cd ${REALPATH}
	chown -R root:${ROOT_GRP} ${REALPATH}

	#setup the directadmin.conf
	setVal awstats 1 ${DACONF_TEMPLATE_FILE}
	setVal awstats 1 ${DACONF_FILE}
	if [ "${WEBALIZER_OPT}" = "no" ]; then
		setVal webalizer 0 ${DACONF_TEMPLATE_FILE}
		setVal webalizer 0 ${DACONF_FILE}
	else
		setVal webalizer 1 ${DACONF_TEMPLATE_FILE}
		setVal webalizer 1 ${DACONF_FILE}
	fi
	
	doRestartDA;

	echo "AWstats ${AWSTATS_VER} installation is done."
}

####################################################

doUpdate() {
	cd ${CWD}
	cp -f options.conf ..
	cd ..
	if [ ${OS} = "FreeBSD" ]
	then
		fetch -o ./${NAME}.tar.gz ${WEBPATH}/${CUSTOMBUILD_OPT}/${NAME}.tar.gz
	else
		wget ${WEBPATH}/${CUSTOMBUILD_OPT}/${NAME}.tar.gz -O ./${NAME}.tar.gz
	fi
	
	tar xvzf ${NAME}.tar.gz
	cd ${CWD}

	if [ ${OS} = "FreeBSD" ]
	then
		fetch -o ./versions.txt ${WEBPATH}/versions.txt
	else
		wget ${WEBPATH}/versions.txt -O ./versions.txt
	fi

	chmod 755 build
	
 	./build update_data;
}

####################################################

doUpdateScript() {
	cd ${CWD}
	if [ ${OS} = "FreeBSD" ]
	then
		fetch -o ${CWD}/build.new ${WEBPATH}/1.2/custombuild/build
	else
		wget ${WEBPATH}/1.2/custombuild/build -O ${CWD}/build.new
	fi
	
	mv -f build.new build
	chmod 755 build
}

####################################################

doRewriteConfs() {
	quitIfLocked doRewriteConfs
	touch ${WORKDIR}/.custombuild
	cd ${CWD}
	if [ "${APACHE_OPT}" = "1.3" ]; then
		if [ ! -e apache_${APACHE_VER}.tar.gz ]; then
			echo "File apache_${APACHE_VER}.tar.gz does not exist. Can not rewrite configs"
			do_exit 1
		fi

		if [ ! -e ${HTTPDCONF}/ssl.crt/server.crt ] || [ ! -e ${HTTPDCONF}/ssl.key/server.key ]; then
			if [ ! -d apache_${APACHE_VER} ]; then
				tar xzf apache_${APACHE_VER}.tar.gz
				if [ ! -d apache_${APACHE_VER} ]; then
					echo "Directory apache_${APACHE_VER} does not exist. Can not rewrite configs"
					do_exit 1
				fi
				rm -f ${WORKDIR}/.custombuild
				doApache;
			fi
		fi

		#copy the new configs
		cp -rf ${AP1CONFDIR} ${HTTPDDIR}

		#rewrite ips.conf and httpd.conf
		echo "action=rewrite&value=ips" >> /usr/local/directadmin/data/task.queue
		echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue
		/usr/local/directadmin/dataskq

		#tokenize the IP
		if [ "`grep -c '|IP|' ${HTTPDCONF}/extra/httpd-vhosts.conf`" != "0" ]; then
     	           HOSTNAME=`hostname`;
     	           IP=`grep $HOSTNAME /etc/hosts | awk '{print $1}'`
     	           echo "Using $IP for your server IP";
     	           STR="perl -pi -e 's/\|IP\|/$IP/'
     	           ${HTTPDCONF}/extra/httpd-vhosts.conf";
      	          eval ${STR};
		fi

		#add all the Include lines if they do not exist
		if [ "`grep -c 'Include' ${HTTPDCONF}/extra/directadmin-vhosts.conf`" = "0" ] || [ ! -e ${HTTPDCONF}/extra/directadmin-vhosts.conf ]; then
			doVhosts;
			cd ${CWD}/apache_${APACHE_VER}
		fi

		#add SSL cerificates
		if [ "`grep -c -s -e 'BEGIN CERTIFICATE' ${HTTPDCONF}/ssl.crt/server.crt`" -ne 1 ] || [ "`grep -c -s -e 'BEGIN RSA PRIVATE KEY' ${HTTPDCONF}/ssl.key/server.key`" -ne 1 ]; then
			make certificate TYPE=dummy;
			cp -f ./conf/ssl.crt/server.crt ${HTTPDCONF}/ssl.crt/server.crt
			cp -f ./conf/ssl.key/server.key ${HTTPDCONF}/ssl.key/server.key
		fi

		doApacheCheck;

		rm -rf ${CWD}/apache_${APACHE_VER}
	elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
		if [ ! -e httpd-${APACHE2_VER}.tar.gz ]; then
			echo "File httpd-${APACHE2_VER}.tar.gz does not exist. Can not rewrite configs"
		else
			tar xzf httpd-${APACHE2_VER}.tar.gz
		fi

		if [ ! -d httpd-${APACHE2_VER} ]; then
			echo "Directory httpd-${APACHE2_VER} does not exist. Can not rewrite configs"
		fi

		#copy the new configs
		cp -rf ${AP2CONFDIR} ${HTTPDDIR}

		if [ "${APACHE_OPT}" = "2.0" ]; then
			cp -f ${AP2CONFDIR}/httpd.conf_2.0 ${HTTPD_CONF}
			cp -f ${AP2CONFDIR}/extra/httpd-mpm.conf_2.0 ${HTTPDCONF}/extra/httpd-mpm.conf
		elif [ "${APACHE_OPT}" = "2.2" ]; then
			cp -f ${AP2CONFDIR}/httpd.conf ${HTTPD_CONF}
			cp -f ${AP2CONFDIR}/extra/httpd-mpm.conf ${HTTPDCONF}/extra/httpd-mpm.conf
		fi

		#ensure we have the correct apache_ver
		if [ "`grep -c apache_ver=2.0 ${DACONF_TEMPLATE_FILE}`" -eq "0" ]; then
			echo "apache_ver=2.0" >> ${DACONF_TEMPLATE_FILE}
		elif [ "`grep -c apache_ver= ${DACONF_TEMPLATE_FILE}`" -ne "0" ]; then
			perl -pi -e 's/`grep apache_ver= ${DACONF_TEMPLATE_FILE}`/apache_ver=2.0/' ${DACONF_TEMPLATE_FILE}
		fi
		if [ "`grep -c apache_ver=2.0 ${DACONF_FILE}`" -eq "0" ]; then
			echo "apache_ver=2.0" >> ${DACONF_FILE}
			doRestartDA
			echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue
		elif [ "`grep -c apache_ver= ${DACONF_FILE}`" -ne "0" ]; then
			perl -pi -e 's/`grep apache_ver= ${DACONF_FILE}`/apache_ver=2.0/' ${DACONF_FILE}
			doRestartDA
			echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue
		fi

		#rewrite ips.conf
		echo "action=rewrite&value=ips" >> /usr/local/directadmin/data/task.queue

		/usr/local/directadmin/dataskq

		#tokenize the IP
		if [ "`grep -c '|IP|' ${HTTPDCONF}/extra/httpd-vhosts.conf`" != "0" ]; then
     	           HOSTNAME=`hostname`;
     	           IP=`grep $HOSTNAME /etc/hosts | awk '{print $1}'`
     	           echo "Using $IP for your server IP";
     	           STR="perl -pi -e 's/\|IP\|/$IP/'
     	           ${HTTPDCONF}/extra/httpd-vhosts.conf";
      	          eval ${STR};
		fi

		#add all the Include lines if they do not exist
		if [ "`grep -c 'Include' ${HTTPDCONF}/extra/directadmin-vhosts.conf`" = "0" ] || [ ! -e ${HTTPDCONF}/extra/directadmin-vhosts.conf ]; then
			doVhosts;
			cd ${CWD}/httpd-${APACHE2_VER}
		fi

		if [ ! -d /etc/httpd/conf/ssl.key ] || [ ! -d /etc/httpd/conf/ssl.crt ]; then
			cd ${WORKDIR}
			mkdir -p /etc/httpd/conf/ssl.key
			mkdir -p /etc/httpd/conf/ssl.crt
			#install the cert/key
			/usr/bin/openssl req -x509 -newkey rsa:1024 -keyout /etc/httpd/conf/ssl.key/server.key -out /etc/httpd/conf/ssl.crt/server.crt -days 9999 -nodes -config ./configure/ap2/cert_config
			cd ${CWD}
		fi

		doApacheCheck

		rm -rf ${CWD}/httpd-${APACHE2_VER}
	fi

	cd ${CWD}

	PHPMODULES=${HTTPDCONF}/extra/httpd-phpmodules.conf
	PHPADDMODULES=${HTTPDCONF}/extra/httpd-phpaddmodules.conf
	
	echo -n "" > ${PHPMODULES}
	echo -n "" > ${PHPADDMODULES}
	
	if [ "${PHP6_CLI_OPT}" = "yes" ] && [ "${PHP5_CGI_OPT}" = "yes" ]; then
		PHPOPT=1
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_php5/\#AddModule mod_php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php5/\#LoadModule php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_php4/#AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule php4/#LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_php6/AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule php6/LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule suphp/LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_suphp.c/AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	php6_module		/usr/lib/apache/libphp6.so" >> ${PHPMODULES}
		echo "LoadModule	suphp_module		/usr/lib/apache/mod_suphp.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_php6.c"	>> ${PHPADDMODULES}
		echo "AddModule	mod_suphp.c" >> ${PHPADDMODULES}
	elif [ "${PHP6_CGI_OPT}" = "yes" ] && [ "${PHP5_CLI_OPT}" = "yes" ]; then
		PHPOPT=2
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_php4/\#AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php4/\#LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_php6/\#AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php6/\#LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_php5/AddModule mod_php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule php5/LoadModule php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule suphp/LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_suphp.c/AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	php5_module		/usr/lib/apache/libphp5.so" >> ${PHPMODULES}
		echo "LoadModule	suphp_module		/usr/lib/apache/mod_suphp.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_php5.c"	>> ${PHPADDMODULES}
		echo "AddModule	mod_suphp.c" >> ${PHPADDMODULES}
	elif [ "${PHP6_CGI_OPT}" = "yes" ] && [ "${PHP5_CGI_OPT}" = "yes" ]; then
		PHPOPT=3
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_php/\#AddModule mod_php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php/\#LoadModule php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule suphp/LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_suphp.c/AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	suphp_module		/usr/lib/apache/mod_suphp.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_suphp.c" >> ${PHPADDMODULES}
	elif [ "${PHP6_CLI_OPT}" = "yes" ] && [ "${PHP5_CGI_OPT}" = "no" ]; then
		PHPOPT=4
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_suphp/\#AddModule mod_suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_php5/\#AddModule mod_php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule suphp/\#LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_suphp.c/\#AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php5/\#LoadModule php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_php4/#AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_php6/AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule php4/#LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule php6/LoadModule php6/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	php6_module		/usr/lib/apache/libphp6.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_php6.c"	>> ${PHPADDMODULES}
	elif [ "${PHP6_CGI_OPT}" = "yes" ] && [ "${PHP5_CLI_OPT}" = "no" ]; then
		PHPOPT=5
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_php/\#AddModule mod_php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php/\#LoadModule php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule suphp/LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_suphp.c/AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	suphp_module		/usr/lib/apache/mod_suphp.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_suphp.c" >> ${PHPADDMODULES}
	elif [ "${PHP6_CGI_OPT}" = "no" ] && [ "${PHP5_CLI_OPT}" = "yes" ]; then
		PHPOPT=6
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_suphp/\#AddModule mod_suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_php6/\#AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_php4/\#AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_suphp.c/\#AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule suphp/\#LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php4/\#LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php6/\#LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_php5/AddModule mod_php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule php5/LoadModule php5/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	php5_module		/usr/lib/apache/libphp5.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_php5.c"	>> ${PHPADDMODULES}
	elif [ "${PHP6_CLI_OPT}" = "no" ] && [ "${PHP5_CGI_OPT}" = "yes" ]; then
		PHPOPT=7
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_php/\#AddModule mod_php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php/\#LoadModule php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php/\#LoadModule php/' /usr/local/directadmin/data/templates/httpd.conf
		perl -pi -e 's/^\#LoadModule suphp/LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_suphp.c/AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	suphp_module		/usr/lib/apache/mod_suphp.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_suphp.c" >> ${PHPADDMODULES}
	else
		do_exit 1 "Something is wrong with your ${OPTIONS_CONF}"
	fi

	if [ "${NEWCONFIGS}" = "1" ]; then
		perl -pi -e 's/^LoadModule php/\#LoadModule php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule suphp/\#LoadModule suphp/' /etc/httpd/conf/httpd.conf
	fi
	
	doPhpConf;
	rm -f ${WORKDIR}/.custombuild

	echo "Restarting apache."
	${INITDDIR}/httpd restart
}

####################################################

doCron() {
	cd ${CWD}

	CRONFILE=/etc/cron.daily/custombuild

	if [ "${CRON_OPT}" != "yes" ]; then
		echo "You can not run cronjob, because you do not have it set in options.conf file.";
		rm -f ${CRONFILE}
		exit 1;
	fi
	if [ ! -d /etc/cron.daily ]; then
		echo "You can not run cronjob, because you do not have /etc/cron.daily directory.";
		exit 1;
	fi
	
	echo -n '' > ${CRONFILE}
	echo '#!/bin/sh'	>> ${CRONFILE}
	echo 'cd /usr/local/directadmin/custombuild' >> ${CRONFILE}
	echo './build update >/dev/null 2>&1' >> ${CRONFILE}
	echo "AVAIL_UPDATES=\"\`./build versions | grep -c -e 'update is available.'\`\"" >> ${CRONFILE}
	echo 'if [ "${AVAIL_UPDATES}" -gt 0 ]; then' >> ${CRONFILE}
	if [ "${NOTIFICATIONS_OPT}" = "yes" ] && [ "${UPDATES_OPT}" = "no" ]; then
		echo "./build versions | grep 'update is available.' | mail -s \"\${AVAIL_UPDATES} updates available for \`hostname\`\" ${EMAIL_OPT}" >> ${CRONFILE}
	fi
	if [ "${NOTIFICATIONS_OPT}" = "yes" ] && [ "${UPDATES_OPT}" = "yes" ]; then
		echo "./build versions | grep 'update is available.' | mail -s \"\${AVAIL_UPDATES} updates running for \`hostname\`\" ${EMAIL_OPT}" >> ${CRONFILE}
	fi
	if [ "${NOTIFICATIONS_OPT}" = "no" ] && [ "${UPDATES_OPT}" = "yes" ]; then
		echo './build update_versions' >> ${CRONFILE}
	fi
	echo 'fi' >> ${CRONFILE}
	echo 'exit 0;' >> ${CRONFILE}
	chmod 755 ${CRONFILE}
	
	echo "Cronjob is set for ${EMAIL_OPT}:"
	echo "Automatic notifications: ${NOTIFICATIONS_OPT}"
	echo "Automatic updates: ${UPDATES_OPT}"
}

####################################################

doVersions() {
	cd ${CWD}

	if [ "${PHP5_CLI_OPT}" = "yes" ] || [ "${PHP6_CLI_OPT}" = "yes" ]; then
		if [ -e /usr/local/bin/php ]; then
			PHPVCLI=`/usr/local/bin/php -v | grep built | awk '{ print $2 }'`
			if [ "`/usr/local/bin/php -v | grep built | awk '{ print $2 }' | cut -d. -f1`" = "4" ]; then
				echo "Latest version of PHP (CLI): ${PHP6_VER}"
			elif [ "`/usr/local/bin/php -v | grep built | awk '{ print $2 }' | cut -d. -f1`" = "5" ]; then
				echo "Latest version of PHP (CLI): ${PHP5_VER}"
			fi
			echo "Installed version of PHP (CLI): ${PHPVCLI}"
			echo ""
			if [ "`/usr/local/bin/php -v | grep built | awk '{ print $2 }' | cut -d. -f1`" = "4" ]; then
				if [ "${PHP6_VER}" != "${PHPVCLI}" ]; then
					echo "${boldon}PHP6 (CLI) update is available.${boldoff}"
					echo ""
				fi
			elif [ "`/usr/local/bin/php -v | grep built | awk '{ print $2 }' | cut -d. -f1`" = "5" ]; then
				if [ "${PHP5_VER}" != "${PHPVCLI}" ]; then
					echo "${boldon}PHP5 (CLI) update is available.${boldoff}"
					echo ""
				fi
			fi
		fi
	fi

	if [ "${PHP6_CGI_OPT}" = "yes" ]; then
		echo "Latest version of PHP6 (CGI): ${PHP6_VER}"
		PHP6VCGI=0
		if [ -e /usr/local/php6/bin/php-cgi ]; then
			PHP5VCGI=`/usr/local/php6/bin/php-cgi -v | grep built | awk '{ print $2 }'`
			echo "Installed version of PHP6 (CGI): ${PHP6VCGI}"
		fi
		echo ""
		if [ "${PHP6_VER}" != "${PHP6VCGI}" ]; then
			echo "${boldon}PHP6 (CGI) update is available.${boldoff}"
			echo ""
		fi
	fi

	if [ "${PHP5_CGI_OPT}" = "yes" ]; then
		echo "Latest version of PHP5 (CGI): ${PHP5_VER}"
		PHP5VCGI=0
		if [ -e /usr/local/php5/bin/php-cgi ]; then
			PHP5VCGI=`/usr/local/php5/bin/php-cgi -v | grep built | awk '{ print $2 }'`
			echo "Installed version of PHP5 (CGI): ${PHP5VCGI}"
		fi
		echo ""
		if [ "${PHP5_VER}" != "${PHP5VCGI}" ]; then
			echo "${boldon}PHP5 (CGI) update is available.${boldoff}"
			echo ""
		fi
	fi
		
	if [ -e /usr/sbin/httpd ]; then
		APACHEV=`/usr/sbin/httpd -V | grep 'Server version:' | awk '{ print $3 }' | cut -d/ -f2`
		if [ "${APACHE_OPT}" = "1.3" ]; then
			echo "Latest version of Apache: ${APACHE_VER}"
		elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
			echo "Latest version of Apache: ${APACHE2_VER}"
		fi
		echo "Installed version of Apache: ${APACHEV}"
		echo ""
		if [ "${APACHE_OPT}" = "1.3" ]; then
			if [ "${APACHE_VER}" != "${APACHEV}" ]; then
				echo "${boldon}Apache update is available.${boldoff}"
				echo ""
			fi
		elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
			if [ "${APACHE2_VER}" != "${APACHEV}" ]; then
				echo "${boldon}Apache update is available.${boldoff}"
				echo ""
			fi
		fi
	fi

	if [ "${PHP5_CGI_OPT}" = "yes" ] || [ "${PHP6_CGI_OPT}" = "yes" ]; then
		echo "Latest version of suPHP: ${SUPHP_VER}"
		SUPHPV=0
		if [ -e /usr/local/suphp/sbin/suphp ]; then
			SUPHPV=`/usr/local/suphp/sbin/suphp 2>&1 | grep 'suPHP version' | awk '{print $3}'`
			echo "Installed version of suPHP: ${SUPHPV}"
		fi
		echo ""
		if [ "${SUPHP_VER}" != "${SUPHPV}" ]; then
			echo "${boldon}suPHP update is available.${boldoff}"
			echo ""
		fi
	fi

	if [ "${PROFTPD_OPT}" = "yes" ]; then
		echo "Latest version of ProFTPD: ${PROFTPD_VER}"
		PROFTPDV=0
		if [ -e /usr/sbin/proftpd ]; then
			PROFTPDV=`/usr/sbin/proftpd -V | grep 'Version:' | awk '{ print $2 }'`
			echo "Installed version of ProFTPD: ${PROFTPDV}"
		fi
		echo ""
		if [ "${PROFTPD_VER}" != "${PROFTPDV}" ]; then
			echo "${boldon}ProFTPD update is available.${boldoff}"
			echo ""
		fi
	fi

	if [ -e /usr/local/bin/autoconf ]; then
		AUTOCONFV=`/usr/local/bin/autoconf --version | grep '(GNU Autoconf)' | awk '{ print $4 }'`
		echo "Latest version of autoconf: ${AUTOCONF_VER}"
		echo "Installed version of autoconf: ${AUTOCONFV}"
		echo ""
		if [ "${AUTOCONF_VER}" != "${AUTOCONFV}" ]; then
			echo "${boldon}Autoconf update is available.${boldoff}"
			echo ""
		fi
	fi

	if [ -e /usr/local/bin/automake ]; then
		AUTOMAKEV=`/usr/local/bin/automake --version | grep '(GNU automake)' | awk '{ print $4 }'`
		echo "Latest version of automake: ${AUTOMAKE_VER}"
		echo "Installed version of automake: ${AUTOMAKEV}"
		echo ""
		if [ "${AUTOMAKE_VER}" != "${AUTOMAKEV}" ]; then
			echo "${boldon}Automake update is available.${boldoff}"
			echo ""
		fi
	fi

	if [ -e /usr/local/bin/libtool ]; then
		LIBTOOLV=`/usr/local/bin/libtool --version | grep '(GNU libtool)' | awk '{ print $4 }'`
		echo "Latest version of libtool: ${LIBTOOL_VER}"
		echo "Installed version of libtool: ${LIBTOOLV}"
		echo ""
		if [ "${LIBTOOL_VER}" != "${LIBTOOLV}" ]; then
			echo "${boldon}Libtool update is available.${boldoff}"
			echo ""
		fi
	fi

	if [ -e /usr/local/bin/pcre-config ]; then
		PCREV=`/usr/local/bin/pcre-config --version`
		echo "Latest version of PCRE: ${PCRE_VER}"
		echo "Installed version of PCRE: ${PCREV}"
		echo ""
		if [ "${PCRE_VER}" != "${PCREV}" ]; then
			echo "${boldon}PCRE update is available.${boldoff}"
			echo ""
		fi
	fi

	if [ -e /usr/local/bin/curl ]; then
		CURLV=`/usr/local/bin/curl --version | grep libcurl | awk '{ print $2}'`
		echo "Latest version of curl: ${CURL_VER}"
		echo "Installed version of curl: ${CURLV}"
		echo ""
		if [ "${CURL_VER}" != "${CURLV}" ]; then
			echo "${boldon}cURL update is available.${boldoff}"
			echo ""
		fi
	fi

	if [ -e /usr/local/bin/freetype-config ]; then
		FREETYPEV=`/usr/local/bin/freetype-config --ftversion`
		echo "Latest version of FreeType: ${FREETYPE_VER}"
		echo "Installed version of FreeType: ${FREETYPEV}"
		echo ""
		if [ "${FREETYPE_VER}" != "${FREETYPEV}" ]; then
			echo "${boldon}FreeType update is available.${boldoff}"
			echo ""
		fi
	fi

	if [ "${AWSTATS_OPT}" = "yes" ]; then
		echo "Latest version of AWstats: ${AWSTATS_VER}"
		AWSTATSV=0
		if [ -e /usr/local/awstats ]; then
			AWSTATSV=`ls -ld /usr/local/awstats | cut -d\> -f2 | cut -d- -f2`
			echo "Installed version of AWstats: ${AWSTATSV}"
		fi
		echo ""
		if [ "${AWSTATS_VER}" != "${AWSTATSV}" ]; then
			echo "${boldon}AWstats update is available.${boldoff}"
			echo ""
		fi
	fi
	
	if [ "${DOVECOT_OPT}" = "yes" ]; then
		echo "Latest version of dovecot: ${DOVECOT_VER}"
		DOVECOTV=0
		if [ -e /usr/sbin/dovecot ]; then
			DOVECOTV=`/usr/sbin/dovecot --version`
			echo "Installed version of dovecot: ${DOVECOTV}"
		fi
		echo ""
		if [ "${DOVECOT_VER}" != "${DOVECOTV}" ]; then
			echo "${boldon}Dovecot update is available.${boldoff}"
			echo ""
		fi
	fi

	if [ "${SPAMASSASSIN_OPT}" = "yes" ]; then
		echo "Latest version of SpamAssassin: ${SPAMASSASSIN_VER}"
		SPAMASSASSINV=0
		if [ -e /usr/bin/spamd ]; then
			SPAMASSASSINV=`/usr/bin/spamd --version | grep 'version' | awk '{print $4}'`
			echo "Installed version of SpamAssassin: ${SPAMASSASSINV}"
		fi
		echo ""
		if [ "${SPAMASSASSIN_VER}" != "${SPAMASSASSINV}" ]; then
			echo "${boldon}SpamAssassin update is available.${boldoff}"
			echo ""
		fi
	fi
	
	if [ "${CLAMAV_OPT}" = "yes" ]; then
		CLAMAVV=0
		echo "Latest version of ClamAV: ${CLAMAV_VER}"
		if [ -e /usr/local/sbin/clamd ]; then
			CLAMAVV=`/usr/local/sbin/clamd --version | cut -d/ -f1 | awk '{print $2}'`
			echo "Installed version of ClamAV: ${CLAMAVV}"
		fi
		echo ""
		if [ "${CLAMAV_VER}" != "${CLAMAVV}" ]; then
			echo "${boldon}ClamAV update is available.${boldoff}"
			echo ""
		fi
	fi
	
	if [ "${MYSQLINST_OPT}" = "yes" ]; then
		if [ -e $MYSQL_BIN ]; then
			MYSQLV=`$MYSQL_BIN --version | awk '{ print $5 }' | cut -d , -f1`
			echo "Latest version of MySQL: ${MYSQL_VER}"
			echo "Installed version of MySQL: ${MYSQLV}"
			echo ""
			if [ "${MYSQL_VER}" != "${MYSQLV}" ]; then
				echo "${boldon}MySQL update is available.${boldoff}"
				echo ""
			fi
		fi
	fi

	if [ "${ZEND_OPT}" = "yes" ]; then
		if [ "`cat /usr/local/lib/php.ini | grep '^zend_optimizer.version'`" != "" ]; then
			ZENDV=`cat /usr/local/lib/php.ini | grep zend_optimizer.version | cut -d= -f2`
			echo "Latest version of Zend Optimizer: ${ZEND_VER}"
			echo "Installed version of Zend Optimizer: ${ZENDV}"
			echo ""
			if [ "${ZEND_VER}" != "${ZENDV}" ]; then
				echo "${boldon}Zend update is available.${boldoff}"
				echo ""
			fi
		fi
	fi
	
	if [ "${ATMAIL_OPT}" = "yes" ]; then
		echo "Latest version of Atmail: ${ATMAIL_VER}"
		ATMAILV=0
		if [ -e ${WWWDIR}/atmail ]; then
			ATMAILV=`ls -ld ${WWWDIR}/atmail | cut -d\> -f2 | cut -d- -f2`
			echo "Installed version of Atmail: ${ATMAILV}"
		fi
		echo ""
		if [ "${ATMAIL_VER}" != "${ATMAILV}" ]; then
			echo "${boldon}Atmail webmail update is available.${boldoff}"
			echo ""
		fi
	fi
	
	if [ "${ROUNDCUBE_OPT}" = "yes" ]; then
		echo "Latest version of RoundCube webmail: ${ROUNDCUBE_VER}"
		ROUNDCUBEV=0
		if [ -e ${WWWDIR}/roundcube ]; then
			ROUNDCUBEV=`ls -ld ${WWWDIR}/roundcube | cut -d\> -f2 | cut -d- -f2`
			echo "Installed version of RoundCube webmail: ${ROUNDCUBEV}"
		fi
		echo ""
		if [ "${ROUNDCUBE_VER}" != "${ROUNDCUBEV}" ]; then
			echo "${boldon}RoundCube webmail update is available.${boldoff}"
			echo ""
		fi
	fi

	if [ "${PHPMYADMIN_OPT}" = "yes" ]; then
		echo "Latest version of phpMyAdmin: ${PHPMYADMIN_VER}"
		PHPMYADMINV=0
		if [ -e ${WWWDIR}/phpMyAdmin ]; then
			PHPMYADMINV=`ls -ld ${WWWDIR}/phpMyAdmin | cut -d\> -f2 | cut -d- -f2,3,4`
			echo "Installed version of phpMyAdmin: ${PHPMYADMINV}"
		fi
		echo ""
		if [ "${PHPMYADMIN_VER}" != "${PHPMYADMINV}" ]; then
			echo "${boldon}phpMyAdmin update is available.${boldoff}"
			echo ""
		fi
	fi

	if [ "${SQUIRRELMAIL_OPT}" = "yes" ]; then
		echo "Latest version of SquirrelMail: ${SQUIRRELMAIL_VER}"
		SQUIRRELMAILV=0
		if [ -e ${WWWDIR}/squirrelmail ]; then
			SQUIRRELMAILV=`ls -ld ${WWWDIR}/squirrelmail | cut -d\> -f2 | cut -d- -f2`
			echo "Installed version of SquirrelMail: ${SQUIRRELMAILV}"
		fi
		echo ""
		if [ "${SQUIRRELMAIL_VER}" != "${SQUIRRELMAILV}" ]; then
			echo "${boldon}SquirrelMail webmail update is available.${boldoff}"
			echo ""
		fi
	fi
	
	echo "If you want to update all the available versions run: ${boldon}$0 update_versions${boldoff}"
}

####################################################

updateDovecot() {
	cd ${CWD}
	getFile dovecot-${DOVECOT_VER}.tar.gz dovecot
	getFile dovecot.boot
	getFile dovecot.boot.freebsd
	getFile dovecot.boot.debian
	getFile dovecot.conf
	getFile exim.conf.dovecot.patch eximdovecotpatch
}

####################################################

doUpdateData() {
	cd ${CWD}

	if [ "${APACHE_OPT}" = "1.3" ]; then
		doUpdateData1
	elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
		getFile httpd-${APACHE2_VER}.tar.gz apache${APACHE_OPT}
		getFile httpd_2
		getFile httpd_2_freebsd
		getFile httpd_2_debian
	fi	

	getFile mime.types
	getFile mod_perl-${MODPERL_VER}.tar.gz ${MODPERL_INDEX}
	getFile curl-${CURL_VER}.tar.gz curl

	if [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
		getFile pcre-${PCRE_VER}.tar.gz pcre
	fi

	getFile libmcrypt-${MCRYPT_VER}.tar.gz mcrypt
	getFile mhash-${MHASH_VER}.tar.gz mhash
	getFile freetype-${FREETYPE_VER}.tar.gz freetype
	getFile libiconv-${ICONV_VER}.tar.gz iconv
	getFile libxml2-${LIBXML2_VER}.tar.gz libxml2
	getFile libxslt-${LIBXSLT_VER}.tar.gz libxslt
	getFile icu4c-${ICU_VER}-src.tgz icu4c

	if [ "${PHP6_CGI_OPT}" = "yes" ] || [ "${PHP6_CLI_OPT}" = "yes" ]; then
		getFile php-${PHP6_VER}.tar.gz php6
	fi
	if [ "${PHP5_CGI_OPT}" = "yes" ] || [ "${PHP5_CLI_OPT}" = "yes" ]; then
		getFile php-${PHP5_VER}.tar.gz php5
		getFile ${MAIL_HEADER_FILE_PHP5} php5-mail
	fi

	if [ "${SPAMASSASSIN_OPT}" = "yes" ]; then
		getFile Mail-SpamAssassin-${SPAMASSASSIN_VERSION} spamassassin
	fi
	
	if [ "${CLAMAV_OPT}" = "yes" ]; then
		getFile clamav-${CLAMAV_VER}.tar.gz clamav
		getFile clamd.boot
		getFile freshclam.conf
		getFile clamd.conf
	fi
	
	getFile ${WEBALIZER_FILE} webalizer
	if [ "${PROFTPD_OPT}" = "yes" ]; then
		getFile proftpd-${PROFTPD_VER}.tar.gz proftpd
		getFile proftpd
		getFile proftpd_freebsd
		getFile proftpd_debian
	fi
	getFile suphp-${SUPHP_VER}.tar.gz suphp
	if [ "${EXIM_OPT}" = "yes" ]; then
		getFile exim-${EXIM_VER}.tar.gz exim
		getFile exim
		getFile exim_freebsd
		getFile exim_debian
	fi
	if [ "${DOVECOT_OPT}" = "yes" ]; then
		updateDovecot;
	fi
	getFile autoconf-${AUTOCONF_VER}.tar.gz autoconf
	getFile automake-${AUTOMAKE_VER}.tar.gz automake
	getFile libtool-${LIBTOOL_VER}.tar.gz libtool
	if [ "${ZEND_OPT}" = "yes" ]; then
		getFile ${ZENDFILE}
	fi
	
	if [ "${JAIL_OPT}" = "yes" ]; then
		getFile jail-${JAIL_VER}.tar.gz jail
		tar xzf jail-${JAIL_VER}.tar.gz
		
		getFile nbsmtp-${NB_SMTP_VER}.tar.gz
		getFile coreutils-${COREUTILS_VER}.tar.gz
	fi
}

####################################################

doZend() {
	cd ${CWD};

	getFile ${ZENDFILE}
	if [ "${ZEND_OPT}" != "yes" ]; then
		echo "You can not install Zend Optimizer, because you do not have it set in options.conf file.";
		exit 1;
	fi

        if [ "$OS" = "FreeBSD" ] && [ "$OS_VER" = "7.0" ]; then
                COUNT=`pkg_info | grep -c compat6x`
                if [ "$COUNT" -eq 0 ]; then
                        echo "";
                        echo "Zend requires compat6x-i386 for freebsd 7.. trying to install it...";
                        echo "";
                        sleep 2;
                        pkg_add -r compat6x-i386
                fi
        fi

	cd ${CWD};
	tar xzf ${ZENDFILE}
	cd ${ZENDNAME};
	echo "";
	echo -e "Location of php.ini:\n  /usr/local/lib";
	echo "Press return to continue...";
	read bogusdata;
	
	./install.sh
	
	cd ${CWD};
}

####################################################

doLibJpeg() {

        cd ${CWD};
        getFile ${JPEGFILE}
        tar xzf ${JPEGFILE}
        cd ${JPEGDIR}

	./configure

        while
        echo "Trying to make libjpeg..."
        do
        {
                make CFLAGS=-fpic libjpeg.a

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -n -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done

	make install-lib
}

####################################################

doZlib() {
	quitIfLocked doZlib
	touch ${WORKDIR}/.custombuild
        cd ${CWD};
        getFile zlib-${ZLIB_VER}.tar.gz zlib
        tar xzf zlib-${ZLIB_VER}.tar.gz
        cd zlib-${ZLIB_VER}

        ./configure --shared

        while
        echo "Trying to make libz..."
        do
        {
                make

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done

        make install
	rm -f ${WORKDIR}/.custombuild
}

####################################################

doLibPng() {
	quitIfLocked doLibPng
	touch ${WORKDIR}/.custombuild
        cd ${CWD};
        getFile libpng-${PNG_VER}.tar.gz libpng
        tar xzf libpng-${PNG_VER}.tar.gz
        cd libpng-${PNG_VER}

	if [ "${OS}" = "FreeBSD" ]; then
		cp scripts/makefile.freebsd makefile
	else
		cp scripts/makefile.linux makefile
	fi

        while
        echo "Trying to make libpng"
        do
        {
                make

                if [ $? -ne 0 ]
                then
			if [ ${USER_INPUT} -eq 1 ]; then
	                        echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
        	                read yesno;
                	        echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done

	mkdir -p /usr/local/include/libpng >/dev/null 2>&1

        make install
	rm -f ${WORKDIR}/.custombuild
}

####################################################

convert() {
	#delete old modules
	#backup httpd.conf
	#copy httpd.conf ssl.conf
	#insert all Include lines
	#tokenize the |IP|
	
	cd ${CWD}
	
	rm -rf /usr/lib/apache/*
	if [ "`grep -c 'Port 80' /etc/httpd/conf/httpd.conf`" = "1" ]; then
		mv -f ${HTTPDCONF} ${HTTPDCONF}.1.3.backup
		if [ ! -e ${AP2CONFDIR}/httpd.conf ]; then
			do_exit 1 "cannot find httpd.conf in ${AP2CONFDIR} directory";
		fi
		if [ ! -e ${AP2CONFDIR}/extra/httpd-ssl.conf ]; then
			do_exit 1 "cannot find ssl.conf in the ${AP2CONFDIR}/extra directory";
		fi

		cp -rf ${AP2CONFDIR} ${HTTPDDIR}
		cp -rf ${HTTPDCONF}.1.3.backup/ssl.key ${HTTPDCONF}
		cp -rf ${HTTPDCONF}.1.3.backup/ssl.crt ${HTTPDCONF}

		if [ "${APACHE_OPT}" = "2.0" ]; then
			cp -f ${AP2CONFDIR}/httpd.conf_2.0 ${HTTPD_CONF}
			cp -f ${AP2CONFDIR}/extra/httpd-mpm.conf_2.0 ${HTTPDCONF}/extra/httpd-mpm.conf
		elif [ "${APACHE_OPT}" = "2.2" ]; then
			cp -f ${AP2CONFDIR}/httpd.conf ${HTTPD_CONF}
			cp -f ${AP2CONFDIR}/extra/httpd-mpm.conf ${HTTPDCONF}/extra/httpd-mpm.conf
		fi

		#tokenize the IP
		HOSTNAME=`hostname`;
		IP=`grep $HOSTNAME /etc/hosts | awk '{print $1}'`
		echo "Using $IP for your server IP";

		STR="perl -pi -e 's/\|IP\|/$IP/' ${HTTPDCONF}/extra/httpd-vhosts.conf";
		eval ${STR};

		#add all the Include lines
		doVhosts;

		cd ${CWD}

		#check directadmin.conf file
		if [ "`grep -c 'apacheconf=/etc/httpd/conf/httpd.conf' ${DACONF_FILE}`" = "1" ]; then
			perl -pi -e 's#apacheconf=/etc/httpd/conf/httpd.conf#apacheconf=/etc/httpd/conf/extra/directadmin-vhosts.conf#' ${DACONF_FILE}
			doRestartDA;
		fi
		if [ "`grep -c 'apacheconf=/etc/httpd/conf/httpd.conf' ${DACONF_TEMPLATE_FILE}`" = "1" ]; then
			perl -pi -e 's#apacheconf=/etc/httpd/conf/httpd.conf#apacheconf=/etc/httpd/conf/extra/directadmin-vhosts.conf#' ${DACONF_TEMPLATE_FILE}
		fi

		if [ "${OS}" = "FreeBSD" ]; then
			cp -f httpd_2_freebsd /usr/local/etc/rc.d/httpd
			chmod 755 /usr/local/etc/rc.d/httpd
		else
			if [ -e /etc/debian_version ]; then
				cp -f httpd_2_debian /etc/init.d/httpd
			else
				cp -f httpd_2 /etc/init.d/httpd
			fi

			chmod 755 /etc/init.d/httpd
			/sbin/chkconfig httpd on
		fi

		perl -pi -e 's/`grep apache_ver= ${DACONF_FILE}`/apache_ver=2.0/' ${DACONF_FILE}
		perl -pi -e 's/`grep apache_ver= ${DACONF_TEMPLATE_FILE}`/apache_ver=2.0/' ${DACONF_TEMPLATE_FILE}
		doRestartDA;
		echo "action=rewrite&value=ips" >> /usr/local/directadmin/data/task.queue
		echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue
		echo "action=directadmin&value=restart" >> /usr/local/directadmin/data/task.queue
		/usr/local/directadmin/dataskq
	else
		echo "$HTTPD_CONF seems to already be converted";
	fi
}

####################################################

doApache2() {
	getFile httpd-${APACHE2_VER}.tar.gz apache${APACHE_OPT}
	getFile httpd_2
	getFile httpd_2_freebsd
	getFile httpd_2_debian
	quitIfLocked doApache2
	touch ${WORKDIR}/.custombuild
	if [ "`grep -c 'ServerType standalone' /etc/httpd/conf/httpd.conf`" -ne 0 ]; then
		convert;
	fi

	ADMNHTTP=/usr/local/directadmin/data/users/admin/httpd.conf
	if [ ! -e ${ADMNHTTP} ]; then
		echo -n "" > ${ADMNHTTP}
		chown diradmin:admin ${ADMNHTTP}
		chmod 640 ${ADMNHTTP}
	fi

	set64;

	if [ ! -e /usr/local/bin/pcre-config ]; then
		rm -f ${WORKDIR}/.custombuild
		doPCRE;
		touch ${WORKDIR}/.custombuild
	fi

	addUserGroup apache apache
	backupHttp;
	cd ${CWD};
	FILE=${CWD}/httpd-${APACHE2_VER}.tar.gz

	checkFile ${FILE};

	echo "Extracting ${FILE}...";
	tar xzf ${FILE}
	cd httpd-${APACHE2_VER}

	#configure
	echo "Configuring httpd-${APACHE2_VER}";
	${CWD}/${APACHE2_CONFIGURE};
        if [ $? -ne 0 ]
        then
                echo -e "\n*** There was an error while trying to configure Apache 2. Check the ${APACHE2_CONFIGURE} file\n";
                do_exit 1;
        fi
	echo "Done Configuration.";

        if [ ${OS} = "FreeBSD" ]; then
                # do nothing
                echo "";
        else
                /usr/bin/perl -pi -e 's/__FD_SETSIZE\s1024/__FD_SETSIZE\t32768/' /usr/include/bits/types.h
                echo "131072" > /proc/sys/fs/file-max

        fi

        echo "increasing FD_SETSIZE in os/tpf/os.h ..";
        if [ -e ./os/tpf/os.h ]; then
                #perl -pi -e 's/FD_SETSIZE.*2048/FD_SETSIZE 32768/' ./os/tpf/os.h
                perl -pi -e 's/\#define FD_SETSIZE.*2048/\#ifdef FD_SETSIZE\n\#undef FD_SETSIZE\n\#endif\n\#define FD_SETSIZE 32768/' ./os/tpf/os.h
        fi

        if [ -e ./srclib/apr/include/apr.hnw ]; then
                perl -pi -e 's/FD_SETSIZE.*1024/FD_SETSIZE 32768/' ./srclib/apr/include/apr.hnw
        fi

        if [ -e ./srclib/apr/poll/unix/select.c ]; then
                perl -pi -e 's/FD_SETSIZE.*1024/FD_SETSIZE 32768/' ./srclib/apr/poll/unix/select.c
        fi

	#Jailed shell
	if [ "${JAIL_OPT}" = "yes" ]; then
		cd ${CWD}
		
		if [ ! -e ${JAIL_DIR}/${SU_FILE} ]; then
			echo "Can not find ${JAIL_DIR}/${SU_FILE}. Run './build update_data'";
			do_exit 0;
		fi
		
		SUEXEC_FILE=${CWD}/httpd-${APACHE2_VER}/support/suexec.c
		cp -f ${JAIL_DIR}/${SU_FILE} ${SUEXEC_FILE}
		chmod 1755 ${SUEXEC_FILE}
		
		#add just a touch of nothing to increase the datestamp so that 'make' finds it.
		echo -n "" >> ${SUEXEC_FILE};
	fi

	cd httpd-${APACHE2_VER};
	
	while
	echo "Trying to make Apache 2..."
	do
	{
		C_INCLUDE_PATH=/usr/kerberos/include make

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

			if [ "${yesno}" = "n" ]
			then
				do_exit 0;
			fi
		else
			break
		fi
	}
	done
	echo "Make complete";

	checkRPMS;

	echo "Installing Apache...";
	make install

	ln -sf /var/www/build /etc/httpd/build

	rm -f ${WORKDIR}/.custombuild
	cd ${CWD}

	restoreHttp;

	if [ ${OS} = "FreeBSD" ]
	then
		cp -f ${CWD}/httpd_2_freebsd /usr/local/etc/rc.d/httpd
		chmod 755 /usr/local/etc/rc.d/httpd
	elif [ -e /etc/debian_version ]; then
		cp -f ${CWD}/httpd_2_debian /etc/init.d/httpd
                chmod 755 /etc/init.d/httpd
		update-rc.d httpd defaults
	else
		cp -f ${CWD}/httpd_2 /etc/rc.d/init.d/httpd
		chmod 755 /etc/rc.d/init.d/httpd
		/sbin/chkconfig httpd on
	fi

	if [ ! -e /etc/mime.types ]
	then
		cp ${CWD}/mime.types /etc/mime.types
	fi

	#check directadmin.conf file
	if [ "`grep -c 'apacheconf=/etc/httpd/conf/httpd.conf' ${DACONF_TEMPLATE_FILE}`" = "1" ]; then
		perl -pi -e 's#apacheconf=/etc/httpd/conf/httpd.conf#apacheconf=/etc/httpd/conf/extra/directadmin-vhosts.conf#' ${DACONF_TEMPLATE_FILE}
	fi

	if [ "`grep -c 'apacheconf=/etc/httpd/conf/httpd.conf' ${DACONF_FILE}`" = "1" ]; then
		if [ "`grep -c 'apacheconf=/etc/httpd/conf/httpd.conf' ${DACONF_FILE}`" = "1" ]; then
			perl -pi -e 's#apacheconf=/etc/httpd/conf/httpd.conf#apacheconf=/etc/httpd/conf/extra/directadmin-vhosts.conf#' ${DACONF_FILE}
			doRestartDA
		fi

		mv -f ${HTTPDCONF} ${HTTPDCONF}.${APACHE_OPT}.backup

		cp -rf ${AP2CONFDIR} ${HTTPDDIR}
		cp -rf ${HTTPDCONF}.${APACHE_OPT}.backup/ssl.key ${HTTPDCONF}
		cp -rf ${HTTPDCONF}.${APACHE_OPT}.backup/ssl.crt ${HTTPDCONF}
		doRestartDA;
	fi

	#copy the new configs if needed
	if [ "`grep -c 'Include' ${HTTPDCONF}/extra/directadmin-vhosts.conf`" = "0" ] || [ ! -e ${HTTPDCONF}/extra/directadmin-vhosts.conf ]; then
		cp -rf ${AP2CONFDIR} ${HTTPDDIR}
	fi

	#hide frontpage from the interface to avoid confusion
	hideFrontpage

	#ensure we have the correct apache_ver
	if [ "`grep -c apache_ver=2.0 ${DACONF_TEMPLATE_FILE}`" -eq "0" ]; then
		echo "apache_ver=2.0" >> ${DACONF_TEMPLATE_FILE}
		echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue
		doRestartDA;
	elif [ "`grep -c apache_ver=2.0 ${DACONF_TEMPLATE_FILE}`" -ne "0" ]; then
		perl -pi -e 's/`grep apache_ver= ${DACONF_TEMPLATE_FILE}`/apache_ver=2.0/' ${DACONF_TEMPLATE_FILE}
	fi
	if [ "`grep -c apache_ver=2.0 ${DACONF_FILE}`" -eq "0" ]; then
		echo "apache_ver=2.0" >> ${DACONF_FILE}
		doRestartDA;
		echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue
	elif [ "`grep -c apache_ver=2.0 ${DACONF_FILE}`" -ne "0" ]; then
		perl -pi -e 's/`grep apache_ver= ${DACONF_FILE}`/apache_ver=2.0/' ${DACONF_FILE}
		doRestartDA;
		echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue
	fi

	#rewrite ips.conf if needed
	echo "action=rewrite&value=ips" >> /usr/local/directadmin/data/task.queue

	/usr/local/directadmin/dataskq

	#tokenize the IP if needed
	if [ "`grep -c '|IP|' ${HTTPDCONF}/extra/httpd-vhosts.conf`" != "0" ]; then
                HOSTNAME=`hostname`;
                IP=`grep $HOSTNAME /etc/hosts | awk '{print $1}'`
                echo "Using $IP for your server IP";
                STR="perl -pi -e 's/\|IP\|/$IP/'
                ${HTTPDCONF}/extra/httpd-vhosts.conf";
                eval ${STR};
	fi

	#add all the Include lines if they do not exist
	if [ "`grep -c 'Include' ${HTTPDCONF}/extra/directadmin-vhosts.conf`" = "0" ] || [ ! -e ${HTTPDCONF}/extra/directadmin-vhosts.conf ]; then
		doVhosts;
		cd ${CWD}/httpd-${APACHE2_VER}
	fi

	if [ ! -d /etc/httpd/conf/ssl.key ] || [ ! -d /etc/httpd/conf/ssl.crt ]; then
		cd ${WORKDIR}
		mkdir -p /etc/httpd/conf/ssl.key
		mkdir -p /etc/httpd/conf/ssl.crt
		#install the cert/key
		/usr/bin/openssl req -x509 -newkey rsa:1024 -keyout /etc/httpd/conf/ssl.key/server.key -out /etc/httpd/conf/ssl.crt/server.crt -days 9999 -nodes -config ./configure/ap2/cert_config
		cd ${CWD}
	fi

	doApacheCheck;

	mkdir -p ${WWWDIR}

	if [ ! -e ${WWWDIR}/index.html ]
	then
		if [ -e ${WWWDIR}/index.html.en ]
		then
			cp -f ${WWWDIR}/index.html.en ${WWWDIR}/index.html
		else
			echo "<html>Apache is functioning normally</html>" > ${WWWDIR}/index.html
		fi
	fi
	if [ ! -e /etc/logrotate.d/apache ] && [ ${OS} != "FreeBSD" ]
	then
		wget ${WEBPATH}/apache.logrotate -O /etc/logrotate.d/apache
	fi

	# Make sure apr is linked correctly
	if [ "${APACHE_OPT}" = "2.2" ]; then
		ln -sf /usr/bin/apr-1-config /usr/bin/apr-config
	fi

	echo "Restarting apache."
	${INITDDIR}/httpd restart

	rm -f ${WORKDIR}/.custombuild
}

####################################################

convertToDovecot() {
	updateDovecot;

	if [ "${DOVECOT_OPT}" != "yes" ]; then
		echo "You can not convert to Dovecot, because you do not have it set in options.conf file.";
		exit 1;
	fi

        #patch exim.conf
	if [ -e /etc/exim.conf ] && [ "`grep -c maildir_format /etc/exim.conf`" -eq 0 ]; then
		echo "Patching /etc/exim.conf to maildir";
		patch -p0 < ${CWD}/exim.conf.dovecot.patch
	fi

        COUNT="`grep -c -e '^dovecot=1' ${DACONF_FILE}`"
        if [ "${COUNT}" = "0" ] && [ -e ${DACONF_FILE} ]; then
		echo "Adding dovecot=1 to the ${DACONF_FILE} file...";
                echo "dovecot=1" >> ${DACONF_FILE}
                echo "dovecot=ON" >> /usr/local/directadmin/data/admin/services.status
		doRestartDA
        fi

	COUNT_TEMPLATE="`grep -c -e '^dovecot=1' ${DACONF_TEMPLATE_FILE}`"
	if [ "${COUNT_TEMPLATE}" = "0" ] && [ -e ${DACONF_TEMPLATE_FILE} ]; then
		echo "Adding dovecot=1 to the ${DACONF_TEMPLATE_FILE} (template) file ...";
                echo "dovecot=1" >> ${DACONF_TEMPLATE_FILE}
		if [ -e /usr/local/directadmin/data/admin/services.status ]; then
			echo "dovecot=ON" >> /usr/local/directadmin/data/admin/services.status
		fi
	fi

        #uninstall old services and restart exim
        if [ "${OS}" = "FreeBSD" ]; then
                /usr/local/etc/rc.d/directadmin restart
                /usr/local/etc/rc.d/exim restart
                perl -pi -e 's/^imap/#imap/' /etc/inetd.conf
                killall -HUP inetd
                /usr/local/etc/rc.d/vm-pop3d stop
                cat /usr/local/etc/rc.d/boot.sh | grep -v vm-pop3d > /usr/local/etc/rc.d/boot.sh.new
		mv -f /usr/local/etc/rc.d/boot.sh /usr/local/etc/rc.d/boot.sh.old
		mv -f /usr/local/etc/rc.d/boot.sh.new /usr/local/etc/rc.d/boot.sh
		chmod 755 /usr/local/etc/rc.d/boot.sh
	elif [ -e /etc/debian_version ]; then
		/etc/init.d/exim restart
		/etc/init.d/directadmin restart
		perl -pi -e 's/^imap/#imap/' /etc/inetd.conf
		killall -HUP inetd
		/etc/init.d/vm-pop3d stop
		chmod 0 /etc/init.d/vm-pop3d
        else
                /sbin/service exim restart
                /sbin/service directadmin restart
                rm -f /etc/xinetd.d/imap
                killall -HUP xinetd
                /sbin/service vm-pop3d stop
                /sbin/chkconfig vm-pop3d off
        fi

	killall -9 vm-pop3d 2> /dev/null

	FILE=/usr/local/directadmin/data/admin/services.status
        cat ${FILE} | grep -v vm-pop3d > ${FILE}.new
	mv -f ${FILE} ${FILE}.old
	mv -f ${FILE}.new ${FILE}
	chown diradmin:diradmin ${FILE}
	chmod 600 ${FILE}


	echo "Adding conversion command to the task.queue ...";
	echo "action=convert&value=todovecot" >> /usr/local/directadmin/data/task.queue
	echo "Executing the task.queue cotents now, please be patient ...";
	/usr/local/directadmin/dataskq d

	echo "Restarting dovecot."
	${INITDDIR}/dovecot restart
	echo "Restarting exim."
	${INITDDIR}/exim restart

	echo "Done.";
}

doDovecot() {
	if [ "${DOVECOT_OPT}" != "yes" ]; then
		echo "You can not install Dovecot, because you do not have it set in options.conf file.";
		exit 1;
	fi

	updateDovecot;

	quitIfLocked doDovecot
	touch ${WORKDIR}/.custombuild
	if [ "${DOVECOT_OPT}" = "no" ]; then
		do_exit 1 "Dovecot is not set in options.conf."
	fi

	if [ ! -e ${WORKDIR}/dovecot-${DOVECOT_VER}.tar.gz ]; then
		do_exit 1 "File dovecot-${DOVECOT_VER}.tar.gz does not exist. Try running ${boldon}./build update.${boldoff}"
	fi

        COUNT=`grep -c -e '^dovecot=1' ${DACONF_FILE}`
        if [ ${COUNT} -eq 0 ] || [ ! -e ${DACONF_FILE} ]; then
		echo "Converting to dovecot (${DOVECOT_VER}) ...";
                convertToDovecot;
        fi

	echo "Installing dovecot ${DOVECOT_VER} ...";

	addUserGroup dovecot dovecot

        cd ${CWD};
        FILE=${CWD}/dovecot-${DOVECOT_VER}.tar.gz
        checkFile ${FILE}
        echo "Extracting ...";
        tar xzf ${FILE}
        echo "Done.";
        cd dovecot-${DOVECOT_VER}

	echo "Patching syslog with LOG_PID ...";

	perl -pi -e 's/LOG_NDELAY/LOG_NDELAY|LOG_PID/' src/auth/main.c
	perl -pi -e 's/LOG_NDELAY/LOG_NDELAY|LOG_PID/' src/imap/main.c
	perl -pi -e 's/LOG_NDELAY/LOG_NDELAY|LOG_PID/' src/master/main.c
	perl -pi -e 's/LOG_NDELAY/LOG_NDELAY|LOG_PID/' src/pop3/main.c

	echo "Configuring dovecot ${DOVECOT_VER} ...";

	./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --without-gssapi
	if [ $? -ne 0 ]
	then
		echo -e "\n*** There was an error while trying to configure dovecot.\n";
		do_exit 1;
	fi
	echo "Done Configuration.";

        while
        echo "Trying to make dovecot..."
        do
        {
		make CPPFLAGS=-I/usr/kerberos/include

		#make

                if [ $? -ne 0 ]
                then
                        if [ ${USER_INPUT} -eq 1 ]; then
                                echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
                                read yesno;
                                echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done
        echo "Make complete";

	echo "Installing ...";

	make install
	rm -f ${WORKDIR}/.custombuild
	cd ${CWD}

	#install the boot scripts.

	if [ "${OS}" = "FreeBSD" ]; then
		if [ ! -e /usr/local/etc/rc.d/dovecot ]; then
			cp ${CWD}/dovecot.boot.freebsd /usr/local/etc/rc.d/dovecot
			chmod 755 /usr/local/etc/rc.d/dovecot
			echo "./dovecot \$1" >> /usr/local/etc/rc.d/boot.sh
		fi
	elif [ -e /etc/debian_version ]; then
	        if [ ! -e /etc/init.d/dovecot ]; then
                        cp ${CWD}/dovecot.boot.debian /etc/init.d/dovecot
                        chmod 755 /etc/init.d/dovecot
			update-rc.d dovecot defaults
                fi
		if [ ! -e /etc/exim.cert ] && [ ! -e /etc/exim.key ]; then
			ln -sf /etc/httpd/conf/ssl.crt/server.crt /etc/exim.cert
			ln -sf /etc/httpd/conf/ssl.key/server.key /etc/exim.key
		fi
	else
		if [ ! -e /etc/init.d/dovecot ]; then
			cp ${CWD}/dovecot.boot /etc/init.d/dovecot
			chmod 755 /etc/init.d/dovecot
			/sbin/chkconfig dovecot on
		fi
	fi

	#install the dovecot.conf
	if [ ! -e /etc/dovecot.conf ]; then
		cp -f ${CWD}/configure/dovecot/dovecot.conf /etc/dovecot.conf
	fi
	if [ "${OS}" = "FreeBSD" ]; then
		perl -pi -e 's/passdb shadow/passdb passwd/' /etc/dovecot.conf
	fi

	perl -pi -e 's/mail_extra_groups/mail_access_groups/' /etc/dovecot.conf

	#dovecot 1.1+
	perl -pi -e 's|default_mail_env|mail_location|' /etc/dovecot.conf
	perl -pi -e 's|args = /etc/virtual/%d/passwd|args = username_format=%n /etc/virtual/%d/passwd|' /etc/dovecot.conf

	echo "Restarting dovecot."
	${INITDDIR}/dovecot restart
}

####################################################

dospamassassin() {
	if [ "${SPAMASSASSIN_OPT}" = "no" ]; then
		do_exit 1 "SpamAssassin is not set in options.conf."
	fi

	getFile Mail-SpamAssassin-${SPAMASSASSIN_VER}.tar.gz spamassassin
	
	quitIfLocked dospamassassin
	touch ${WORKDIR}/.custombuild

	if [ ! -e ${WORKDIR}/Mail-SpamAssassin-${SPAMASSASSIN_VER}.tar.gz ]; then
		do_exit 1 "File Mail-SpamAssassin-${SPAMASSASSIN_VER}.tar.gz does not exist. Try running ${boldon}./build update.${boldoff}"
	fi

	echo "Installing spamassassin ${SPAMASSASSIN_VER}...";

    cd ${CWD};
	
	downloadMake ${DIGEST_NAME}
	downloadMake ${DIGEST_SHA1_NAME}
	downloadMake ${PARSER_NAME}
	downloadMake ${STORABLE_NAME}
	downloadMake ${NETDNS_NAME}
	downloadMake ${NETIP_NAME}
	downloadMake ${NET_CIDR_LITE_NAME}
	downloadMake ${DB_FILE_NAME}
	downloadMake ${MAIL_SPF_NAME}
	downloadMake ${SYS_HOSTNAME_NAME}
	downloadMake ${NET_SSLeay_NAME}
	downloadMake ${IO_SOCKET_NAME}
	downloadMake ${URI_NAME}

    FILE=${CWD}/Mail-SpamAssassin-${SPAMASSASSIN_VER}.tar.gz
    checkFile ${FILE}
    echo "Extracting ...";
    tar xzf ${FILE}
    echo "Done.";
    cd Mail-SpamAssassin-${SPAMASSASSIN_VER}

	echo "Configuring SpamAssassin ${SPAMASSASSIN_VER}...";

	export LANG=C
	$PERL Makefile.PL PREFIX=/usr CONTACT_ADDRESS="the administrator of that system" RUN_NET_TESTS="no"
	
	if [ $? -ne 0 ]
	then
		echo -e "\n*** There was an error while trying to configure SpamAssassin.\n";
		do_exit 1;
	fi
	
	echo "Done Configuration.";

        while
        echo "Trying to make SpamAssassin..."
        do
        {
		make

                if [ $? -ne 0 ]
                then
                        if [ ${USER_INPUT} -eq 1 ]; then
                                echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
                                read yesno;
                                echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done
        echo "Make complete";

	echo "Installing ...";

	make install
	rm -f ${WORKDIR}/.custombuild
	cd ${CWD}

	## we need to change how it's started.
	if [ -e /etc/init.d/exim ]; then
		perl -pi -e 's#/usr/bin/spamd -d -a -c -m 5#/usr/bin/spamd -d -c -m 5#' /etc/init.d/exim
	fi
	if [ -e /usr/local/etc/rc.d/exim ]; then
		perl -pi -e 's#/usr/bin/spamd -d -a -c -m 5#/usr/bin/spamd -d -c -m 5#' /usr/local/etc/rc.d/exim
	fi
	
	echo "Starting SpamAssassin."
	/usr/bin/spamd -d -c -m 5
	
	echo "Restarting exim."
	${INITDDIR}/exim restart
	
	ldconfig
}

####################################################

doclamav() {
	if [ "${CLAMAV_OPT}" = "no" ]; then
		do_exit 1 "ClamAV is not set in options.conf."
	fi

	getFile clamav-${CLAMAV_VER}.tar.gz clamav
	getFile clamd.boot
	getFile freshclam.conf
	getFile clamd.conf
	
	quitIfLocked doclamav
	touch ${WORKDIR}/.custombuild

	if [ ! -e ${WORKDIR}/clamav-${CLAMAV_VER}.tar.gz ]; then
		do_exit 1 "File clamav-${CLAMAV_VER}.tar.gz does not exist. Try running ${boldon}./build update.${boldoff}"
	fi

	echo "Installing clamav ${CLAMAV_VER} ...";

	addUserGroup clamav clamav

    cd ${CWD};
    FILE=${CWD}/clamav-${CLAMAV_VER}.tar.gz
    checkFile ${FILE}
    echo "Extracting ...";
    tar xzf ${FILE}
    echo "Done.";
    cd clamav-${CLAMAV_VER}

	echo "Configuring clamav ${CLAMAV_VER} ...";

	./configure --sysconfdir=/etc
	if [ $? -ne 0 ]
	then
		echo -e "\n*** There was an error while trying to configure dovecot.\n";
		do_exit 1;
	fi
	echo "Done Configuration.";

        while
        echo "Trying to make clamav..."
        do
        {
		make CPPFLAGS=-I/usr/kerberos/include

		#make

                if [ $? -ne 0 ]
                then
                        if [ ${USER_INPUT} -eq 1 ]; then
                                echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
                                read yesno;
                                echo "";
                        else
                                if [ "${INPUT_VALUE}" = "d" ]; then
                                        yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                        fi

                        if [ "${yesno}" = "n" ]
                        then
                                do_exit 0;
                        fi
                else
                        break;
                fi
        }
        done
        echo "Make complete";

	echo "Installing ...";

	make install
	rm -f ${WORKDIR}/.custombuild
	cd ${CWD}

	#install the boot scripts.

	if [ "${OS}" = "FreeBSD" ]; then
		if [ ! -e /usr/local/etc/rc.d/clamd ]; then
			cp ${CWD}/clamd.boot /usr/local/etc/rc.d/clamd
			chmod 755 /usr/local/etc/rc.d/clamd
			echo "./clamd \$1" >> /usr/local/etc/rc.d/boot.sh
		fi
	elif [ -e /etc/debian_version ]; then
	        if [ ! -e /etc/init.d/clamd ]; then
                    cp ${CWD}/clamd.boot /etc/init.d/clamd
                    chmod 755 /etc/init.d/clamd
					update-rc.d clamd defaults
            fi
	else
		if [ ! -e /etc/init.d/clamd ]; then
			cp ${CWD}/clamd.boot /etc/init.d/clamd
			chmod 755 /etc/init.d/clamd
			/sbin/chkconfig clamd on
		fi
	fi

	#install the clamd.conf
	if [ ! -e /etc/clamd.conf ]; then
		cp -f ${CWD}/configure/clamav/clamd.conf /etc/clamd.conf
	fi
	
	#install the freshclam.conf
	if [ ! -e /etc/dovecot.conf ]; then
		cp -f ${CWD}/configure/clamav/freshclam.conf /etc/freshclam.conf
	fi
	
	echo "Restarting clamd."
	${INITDDIR}/clamd restart
	
	echo "Restarting exim."
	${INITDDIR}/exim restart
	
	ldconfig
}

####################################################

doPhpConf() {
	# Writing data to phpopt
	echo "${PHPOPT}" > ${WORKDIR}/phpopt

	# Writing data to httpd-php-handlers.conf
	echo -n "" > ${PHP_HANDLERS_HTTPD}
	echo '<FilesMatch "\.(inc|php|php3|php4|php5|php6|phtml|phps)$">' >> ${PHP_HANDLERS_HTTPD}

	if [ "${PHPOPT}" = "1" ] || [ "${PHPOPT}" = "4" ]; then
		if [ "${PHPOPT}" = "1" ] && [ "${DEFPHP}" = "6" ]; then
			echo "AddHandler application/x-httpd-php .inc .php .php6 .phtml" >> ${PHP_HANDLERS_HTTPD}
		elif [ "${PHPOPT}" = "1" ] && [ "${DEFPHP}" != "6" ]; then
			echo "AddHandler application/x-httpd-php .inc .php6 .phtml" >> ${PHP_HANDLERS_HTTPD}
		elif [ "${PHPOPT}" = "4" ]; then
			echo "AddHandler application/x-httpd-php .inc .php .php6 .phtml" >> ${PHP_HANDLERS_HTTPD}
		fi
		echo "AddHandler application/x-httpd-php-source .phps" >> ${PHP_HANDLERS_HTTPD}
	fi

	if [ "${PHPOPT}" = "2" ] || [ "${PHPOPT}" = "6" ]; then
		if [ "${PHPOPT}" = "2" ] && [ "${DEFPHP}" = "5" ]; then
			echo "AddHandler application/x-httpd-php .inc .php .php5 .phtml" >> ${PHP_HANDLERS_HTTPD}
		elif [ "${PHPOPT}" = "2" ] && [ "${DEFPHP}" != "5" ]; then
			echo "AddHandler application/x-httpd-php .inc .php5 .phtml" >> ${PHP_HANDLERS_HTTPD}
		elif [ "${PHPOPT}" = "6" ]; then
			echo "AddHandler application/x-httpd-php .inc .php .php3 .php4 .php5 .php6 .phtml" >> ${PHP_HANDLERS_HTTPD}
		fi
		echo "AddHandler application/x-httpd-php-source .phps" >> ${PHP_HANDLERS_HTTPD}
	fi

	echo '</FilesMatch>' >> ${PHP_HANDLERS_HTTPD}

	echo "AddType text/html .php" >> ${PHP_HANDLERS_HTTPD}

	if [ "${PHPOPT}" = "1" ] || [ "${PHPOPT}" = "2" ] || [ "${PHPOPT}" = "3" ] || [ "${PHPOPT}" = "5" ] || [ "${PHPOPT}" = "7" ]; then
		# Writing data to suphp.conf
		echo -n "" > ${SUPHP_CONF_FILE}
		echo "[global]" >> ${SUPHP_CONF_FILE}
		echo ";Path to logfile" >> ${SUPHP_CONF_FILE}
		echo "logfile=/var/log/suphp.log" >> ${SUPHP_CONF_FILE}
		echo "" >> ${SUPHP_CONF_FILE}
		echo ";Loglevel" >> ${SUPHP_CONF_FILE}
		echo "loglevel=warn" >> ${SUPHP_CONF_FILE}
		echo "" >> ${SUPHP_CONF_FILE}
		echo ";User Apache is running as" >> ${SUPHP_CONF_FILE}
		echo "webserver_user=apache" >> ${SUPHP_CONF_FILE}
		echo "" >> ${SUPHP_CONF_FILE}
		echo ";Path all scripts have to be in" >> ${SUPHP_CONF_FILE}
		echo "docroot=/" >> ${SUPHP_CONF_FILE}
		echo "" >> ${SUPHP_CONF_FILE}
		echo "; Security options" >> ${SUPHP_CONF_FILE}
		echo "allow_file_group_writeable=false" >> ${SUPHP_CONF_FILE}
		echo "allow_file_others_writeable=false" >> ${SUPHP_CONF_FILE}
		echo "allow_directory_group_writeable=false" >> ${SUPHP_CONF_FILE}
		echo "allow_directory_others_writeable=false" >> ${SUPHP_CONF_FILE}
		echo "" >> ${SUPHP_CONF_FILE}
		echo ";Check wheter script is within DOCUMENT_ROOT" >> ${SUPHP_CONF_FILE}
		echo "check_vhost_docroot=false" >> ${SUPHP_CONF_FILE}
		echo "" >> ${SUPHP_CONF_FILE}
		echo ";Send minor error messages to browser" >> ${SUPHP_CONF_FILE}
		echo "errors_to_browser=false" >> ${SUPHP_CONF_FILE}
		echo "" >> ${SUPHP_CONF_FILE}
		echo ";PATH environment variable" >> ${SUPHP_CONF_FILE}
		echo "env_path=/bin:/usr/bin" >> ${SUPHP_CONF_FILE}
		echo "" >> ${SUPHP_CONF_FILE}
		echo ";Umask to set, specify in octal notation" >> ${SUPHP_CONF_FILE}
		echo "umask=0022" >> ${SUPHP_CONF_FILE}
		echo "" >> ${SUPHP_CONF_FILE}
		echo ";Minimum UID" >> ${SUPHP_CONF_FILE}
		echo "min_uid=100" >> ${SUPHP_CONF_FILE}
		echo "" >> ${SUPHP_CONF_FILE}
		echo ";Minimum GID" >> ${SUPHP_CONF_FILE}
		echo "min_gid=100" >> ${SUPHP_CONF_FILE}
		echo "" >> ${SUPHP_CONF_FILE}
		echo "[handlers]" >> ${SUPHP_CONF_FILE}
		echo ";Handler for php-scripts" >> ${SUPHP_CONF_FILE}
		if [ "${PHPOPT}" = "1" ] && [ "${DEFPHP}" = "5" ]; then
			echo "x-httpd-php5=php:/usr/local/php5/bin/php-cgi" >> ${SUPHP_CONF_FILE}
		elif [ "${PHPOPT}" = "1" ] && [ "${DEFPHP}" != "5" ]; then
			echo "x-httpd-php5=php:/usr/local/php5/bin/php-cgi" >> ${SUPHP_CONF_FILE}
		elif [ "${PHPOPT}" = "2" ] && [ "${DEFPHP}" = "6" ]; then
			echo "x-httpd-php6=php:/usr/local/php6/bin/php-cgi" >> ${SUPHP_CONF_FILE}
		elif [ "${PHPOPT}" = "2" ] && [ "${DEFPHP}" != "6" ]; then
			echo "x-httpd-php6=php:/usr/local/php6/bin/php-cgi" >> ${SUPHP_CONF_FILE}
		elif [ "${PHPOPT}" = "3" ]; then
			echo "x-httpd-php${ADDITPHP}=php:/usr/local/php${ADDITPHP}/bin/php-cgi" >> ${SUPHP_CONF_FILE}
			echo "x-httpd-php${DEFPHP}=php:/usr/local/php${DEFPHP}/bin/php-cgi" >> ${SUPHP_CONF_FILE}
		elif [ "${PHPOPT}" = "5" ]; then
			echo "x-httpd-php6=php:/usr/local/php6/bin/php-cgi" >> ${SUPHP_CONF_FILE}
		elif [ "${PHPOPT}" = "7" ]; then
			echo "x-httpd-php5=php:/usr/local/php5/bin/php-cgi" >> ${SUPHP_CONF_FILE}
		fi
		echo "" >> ${SUPHP_CONF_FILE}
		echo ";Handler for CGI-scripts" >> ${SUPHP_CONF_FILE}
		echo "x-suphp-cgi=execute:!self" >> ${SUPHP_CONF_FILE}

		# Writing data to /etc/httpd/conf/extra/httpd-suphp.conf
		echo "Writing data to ${SUPHP_HTTPD}"
		echo -n "" > ${SUPHP_HTTPD}

		echo "<IfModule mod_suphp.c>" >> ${SUPHP_HTTPD}
		echo '<FilesMatch "\.(inc|php|php3|php4|php5|php6|phtml|phps)$">' >> ${SUPHP_HTTPD}
		if [ "${PHPOPT}" = "1" ] && [ "${DEFPHP}" = "5" ]; then
			echo "AddHandler x-httpd-php5 .inc .php .php3 .php5 .phtml" >> ${SUPHP_HTTPD}
		elif [ "${PHPOPT}" = "1" ] && [ "${DEFPHP}" != "5" ]; then
			echo "AddHandler x-httpd-php5 .php5" >> ${SUPHP_HTTPD}
		elif [ "${PHPOPT}" = "2" ] && [ "${DEFPHP}" = "6" ]; then
			echo "AddHandler x-httpd-php6 .inc .php .php3 .php6 .phtml" >> ${SUPHP_HTTPD}
		elif [ "${PHPOPT}" = "2" ] && [ "${DEFPHP}" != "6" ]; then
			echo "AddHandler x-httpd-php6 .php6" >> ${SUPHP_HTTPD}
		elif [ "${PHPOPT}" = "3" ]; then
			echo "AddHandler x-httpd-php${ADDITPHP} .php${ADDITPHP}" >> ${SUPHP_HTTPD}
			echo "AddHandler x-httpd-php${DEFPHP} .inc .php .php3 .php${DEFPHP} .phtml" >> ${SUPHP_HTTPD}
		elif [ "${PHPOPT}" = "5" ]; then
			echo "AddHandler x-httpd-php6 .inc .php .php3 .php4 .php5 .php6 .phtml" >> ${SUPHP_HTTPD}
		elif [ "${PHPOPT}" = "7" ]; then
			echo "AddHandler x-httpd-php5 .inc .php .php3 .php4 .php5 .php6 .phtml" >> ${SUPHP_HTTPD}
		fi
		echo '</FilesMatch>' >> ${SUPHP_HTTPD}

		echo "<Location />" >> ${SUPHP_HTTPD}
		echo "suPHP_Engine on" >> ${SUPHP_HTTPD}

		if [ -d /usr/local/etc/php5/cgi ]; then
			echo "suPHP_ConfigPath /usr/local/etc/php5/cgi/" >> ${SUPHP_HTTPD}
		elif [ -d /usr/local/etc/php6/cgi ]; then
			echo "suPHP_ConfigPath /usr/local/etc/php6/cgi/" >> ${SUPHP_HTTPD}
		fi
		if [ "${PHPOPT}" = "1" ] && [ "${DEFPHP}" = "5" ]; then
			echo "suPHP_AddHandler x-httpd-php5" >> ${SUPHP_HTTPD}
		elif [ "${PHPOPT}" = "1" ] && [ "${DEFPHP}" != "5" ]; then
			echo "suPHP_AddHandler x-httpd-php5" >> ${SUPHP_HTTPD}
		elif [ "${PHPOPT}" = "2" ] && [ "${DEFPHP}" = "6" ]; then
			echo "suPHP_AddHandler x-httpd-php6" >> ${SUPHP_HTTPD}
		elif [ "${PHPOPT}" = "2" ] && [ "${DEFPHP}" != "6" ]; then
			echo "suPHP_AddHandler x-httpd-php6" >> ${SUPHP_HTTPD}
		elif [ "${PHPOPT}" = "3" ]; then
			echo "suPHP_AddHandler x-httpd-php${ADDITPHP}" >> ${SUPHP_HTTPD}
			echo "suPHP_AddHandler x-httpd-php${DEFPHP}" >> ${SUPHP_HTTPD}
		elif [ "${PHPOPT}" = "5" ]; then
			echo "suPHP_AddHandler x-httpd-php6" >> ${SUPHP_HTTPD}
		elif [ "${PHPOPT}" = "7" ]; then
			echo "suPHP_AddHandler x-httpd-php5" >> ${SUPHP_HTTPD}
		fi
		echo "</Location>" >> ${SUPHP_HTTPD}
		echo "</IfModule>" >> ${SUPHP_HTTPD}
		echo "Done."
	else
		echo -n "" > ${SUPHP_HTTPD}
	fi
}

####################################################

doPhp(){
	if [ ! -e /usr/local/lib/libxml2.so ]; then
		if [ ! -e /usr/lib/libxslt.so ]; then
			doLibxml2;
		fi
	fi

	if [ ! -e /usr/local/lib/libxslt.so ]; then
		if [ ! -e /usr/lib/libxslt.so ]; then
			doLibxslt;
		fi
	fi

	if [ ! -d /etc/httpd/conf/extra ]; then
        if [ "${APACHE_OPT}" = "1.3" ]; then
                doApache;
        elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
		checkLibz;
                doApache2;
        fi
	fi

	#just double check the location of libmysqlclient.so
	if [ -e /usr/lib64 ]; then
		if [ ! -e /usr/lib64/mysql/libmysqlclient.so ] && [ -e /usr/lib64/libmysqlclient.so ]; then
			ln -s ../libmysqlclient.so /usr/lib64/mysql/libmysqlclient.so
		fi
	fi	

        #if [ -e /etc/fedora-release ]; then
        if [ -e /usr/lib/libmysqlclient.so ] && [ ! -e /usr/lib/mysql/libmysqlclient.so ]; then
                ln -s /usr/lib/libmysqlclient.so /usr/lib/mysql/libmysqlclient.so
        fi
        #fi
	
	doApacheCheck;
	PHPMODULES=${HTTPDCONF}/extra/httpd-phpmodules.conf
	PHPADDMODULES=${HTTPDCONF}/extra/httpd-phpaddmodules.conf
	
	echo -n "" > ${PHPMODULES}
	echo -n "" > ${PHPADDMODULES}
	
	if [ "${PHP6_CLI_OPT}" = "yes" ] && [ "${PHP5_CGI_OPT}" = "yes" ]; then
		PHPOPT=1
		if [ ! -d ${SUPHP_PATH} ]; then
			doSuPhp
		fi
		doPhp6;
		doPhp5_suphp;
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_php5/\#AddModule mod_php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php5/\#LoadModule php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_php4/#AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule php4/#LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_php6/AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule php6/LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule suphp/LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_suphp.c/AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	php6_module		/usr/lib/apache/libphp6.so" >> ${PHPMODULES}
		echo "LoadModule	suphp_module		/usr/lib/apache/mod_suphp.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_php6.c"	>> ${PHPADDMODULES}
		echo "AddModule	mod_suphp.c" >> ${PHPADDMODULES}
	elif [ "${PHP6_CGI_OPT}" = "yes" ] && [ "${PHP5_CLI_OPT}" = "yes" ]; then
		PHPOPT=2
		if [ ! -d ${SUPHP_PATH} ]; then
			doSuPhp
		fi
		doPhp6_suphp;
		doPhp5;
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_php4/\#AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php4/\#LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_php6/\#AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php6/\#LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_php5/AddModule mod_php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule php5/LoadModule php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule suphp/LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_suphp.c/AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	php5_module		/usr/lib/apache/libphp5.so" >> ${PHPMODULES}
		echo "LoadModule	suphp_module		/usr/lib/apache/mod_suphp.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_php5.c"	>> ${PHPADDMODULES}
		echo "AddModule	mod_suphp.c" >> ${PHPADDMODULES}
	elif [ "${PHP6_CGI_OPT}" = "yes" ] && [ "${PHP5_CGI_OPT}" = "yes" ]; then
		PHPOPT=3
		if [ ! -d ${SUPHP_PATH} ]; then
			doSuPhp
		fi
		doPhp6_suphp;
		doPhp5_suphp;
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_php/\#AddModule mod_php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php/\#LoadModule php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule suphp/LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_suphp.c/AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	suphp_module		/usr/lib/apache/mod_suphp.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_suphp.c" >> ${PHPADDMODULES}
	elif [ "${PHP6_CLI_OPT}" = "yes" ] && [ "${PHP5_CGI_OPT}" = "no" ]; then
		PHPOPT=4
		doPhp6;
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_suphp/\#AddModule mod_suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_php5/\#AddModule mod_php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule suphp/\#LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_suphp.c/\#AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php5/\#LoadModule php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_php4/#AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_php6/AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule php4/#LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule php6/LoadModule php6/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	php6_module		/usr/lib/apache/libphp6.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_php6.c"	>> ${PHPADDMODULES}
	elif [ "${PHP6_CGI_OPT}" = "yes" ] && [ "${PHP5_CLI_OPT}" = "no" ]; then
		PHPOPT=5
		if [ ! -d ${SUPHP_PATH} ]; then
			doSuPhp
		fi
		doPhp6_suphp;
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_php/\#AddModule mod_php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php/\#LoadModule php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule suphp/LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_suphp.c/AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	suphp_module		/usr/lib/apache/mod_suphp.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_suphp.c" >> ${PHPADDMODULES}
	elif [ "${PHP6_CGI_OPT}" = "no" ] && [ "${PHP5_CLI_OPT}" = "yes" ]; then
		PHPOPT=6
		doPhp5;
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_suphp/\#AddModule mod_suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_php6/\#AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_php4/\#AddModule mod_php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^AddModule mod_suphp.c/\#AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule suphp/\#LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php4/\#LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php6/\#LoadModule php6/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_php5/AddModule mod_php5/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#LoadModule php5/LoadModule php5/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	php5_module		/usr/lib/apache/libphp5.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_php5.c"	>> ${PHPADDMODULES}
	elif [ "${PHP6_CLI_OPT}" = "no" ] && [ "${PHP5_CGI_OPT}" = "yes" ]; then
		PHPOPT=7
		if [ ! -d ${SUPHP_PATH} ]; then
			doSuPhp
		fi
		doPhp5_suphp;
		# Change httpd.conf info
		perl -pi -e 's/^AddModule mod_php/\#AddModule mod_php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php/\#LoadModule php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule php/\#LoadModule php/' /usr/local/directadmin/data/templates/httpd.conf
		perl -pi -e 's/^\#LoadModule suphp/LoadModule suphp/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^\#AddModule mod_suphp.c/AddModule mod_suphp.c/' /etc/httpd/conf/httpd.conf
		# Add to httpd-phpmodules.conf
		echo "LoadModule	suphp_module		/usr/lib/apache/mod_suphp.so" >> ${PHPMODULES}
		# Add to httpd-phpaddmodules.conf
		echo "AddModule	mod_suphp.c" >> ${PHPADDMODULES}
	else
		do_exit 1 "Something is wrong with your ${OPTIONS_CONF}"
	fi

	if [ "${NEWCONFIGS}" = "1" ]; then
		perl -pi -e 's/^LoadModule php/\#LoadModule php/' /etc/httpd/conf/httpd.conf
		perl -pi -e 's/^LoadModule suphp/\#LoadModule suphp/' /etc/httpd/conf/httpd.conf
	fi
	
	doPhpConf;

	echo "Rewriting all users httpd.conf files, please wait...";
	echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue
	/usr/local/directadmin/dataskq d

	if [ "${PHP5_CGI_OPT}" = "yes" ] && [ "${PHP6_CLI_OPT}" = "no" ]; then
		ln -sf /usr/local/php5/bin/php /usr/local/bin/php
	elif [ "${PHP6_CGI_OPT}" = "yes" ] && [ "${PHP5_CLI_OPT}" = "no" ]; then
		ln -sf /usr/local/php6/bin/php /usr/local/bin/php
	fi

	echo "Restarting apache."
	${INITDDIR}/httpd restart
}

####################################################

compile_coreutils() {
	if [ "${JAIL_OPT}" != "yes" ]; then
		echo "You can not install jail environment, because you do not have it set in options.conf file.";
		exit 1;
	fi
	
	cd ${CWD};
	getFile coreutils-${COREUTILS_VER}.tar.gz
	if [ $OS = "FreeBSD" ]; then
		cp -f /usr/bin/su ./jail/su
		cd ${CWD}
		return;
	fi

	NAME=coreutils-${COREUTILS_VER}
	FILE=${NAME}.tar.gz
	
	if [ ! -e $FILE ]; then
		echo "Can not find $FILE.  Run './build update_data'";
		cd ${CWD}
		return; 
	fi

	tar xzf $FILE;

	cd $NAME;
	./configure
	
	if [ $? -ne 0 ]; then
		echo -e "\n*** The configure has failed ***";
		cd ${CWD}
		return;
	fi

	make
	cd src
	make su
	
	if [ $? -ne 0 ]; then
		echo -e "\n*** The make has failed ***";
		cd ${CWD}
		return;
	fi

	cd ..

	cp -f ./src/su ../jail/su
}

####################################################

compile_shell() {
	if [ "${JAIL_OPT}" != "yes" ]; then
		echo "You can not install jail environment, because you do not have it set in options.conf file.";
		exit 1;
	fi

	getFile jail-${JAIL_VER}.tar.gz jail
	tar xzf jail-${JAIL_VER}.tar.gz
		
    if [ ! -d ${JAIL_DIR} ]; then
        mkdir -p ${JAIL_DIR}
    fi
	cd ${JAIL_DIR};

	gcc -o jail chrootshell.c
	
	if [ $? -ne 0 ]; then
		echo -e "\n*** The make has failed ***";
		cd ${CWD};
		return;
	fi

	cp -f jail /bin/jail
	chmod 6755 /bin/jail

	COUNT=`grep -c '/bin/jail' $SHELLS`;
	if [ $COUNT -eq 0 ]; then
		echo "/bin/jail" >> $SHELLS;
	fi
}

####################################################

compile_nbsmtp() {
	if [ "${JAIL_OPT}" != "yes" ]; then
		echo "You can not install jail environment, because you do not have it set in options.conf file.";
		exit 1;
	fi
	
	cd ${CWD};
	getFile nbsmtp-${NB_SMTP_VER}.tar.gz
	FILE=nbsmtp-${NB_SMTP_VER}.tar.gz

	tar xvzf $FILE
	cd nbsmtp-${NB_SMTP_VER}
	./configure
	make
        if [ $? -ne 0 ]; then
        	echo -e "\n*** The make has failed ***";
			cd ${JAIL_DIR};
        	return;
        fi

	cp nbsmtp ../jail/nbsmtp
}

####################################################

doProftpd(){
	if [ "${PROFTPD_OPT}" != "yes" ]; then
		echo "You can not install ProFTPD, because you do not have it set in options.conf file.";
		exit 1;
	fi

	getFile proftpd-${PROFTPD_VER}.tar.gz proftpd
	getFile proftpd
	getFile proftpd_freebsd
	getFile proftpd_debian

	quitIfLocked doProftpd
	touch ${WORKDIR}/.custombuild
	# Setting a new temp dir (in case /tmp is noexec,nosuid)
	if [ "${OS}" = "FreeBSD" ]; then
		TDIR=/root/.pkg.tmp
		mkdir -p $TDIR
		setenv PKG_TMPDIR $TDIR
	fi
	cd ${CWD};
	FILE=${CWD}/proftpd-${PROFTPD_VER}.tar.gz
	checkFile ${FILE};
	echo "Extracting ${FILE}...";

	tar xzf ${FILE}
	chown -R root:${ROOT_GRP} proftpd-${PROFTPD_VER}
	cd proftpd-${PROFTPD_VER}

	# Backup ProFTPD config
	rm -f /etc/proftpd.conf.old
	cp /etc/proftpd.conf /etc/proftpd.conf.old

	echo "Configuring proftpd-${PROFTPD_VER}...";
	${CWD}/${PROFTPD_CONFIGURE}

	echo "Done. Making proftpd-${PROFTPD_VER}...";
	while
	echo "Trying to make ProFTPD..."
	do
	{
		make

		if [ $? -ne 0 ]
		then
			if [ ${USER_INPUT} -eq 1 ]; then
				echo -e "\n*** The make has failed, do you want to try to make again? (y,n): ";
				read yesno;
				echo "";
			 else
                                if [ "${INPUT_VALUE}" = "d" ]; then
					yesno=n
                                else
                                        yesno=${INPUT_VALUE}
                                fi
                         fi

			 if [ "${yesno}" = "n" ]
			 then
				do_exit 0;
			 fi
		else
			break;
		fi
	}
	done
	echo "Make complete";

	echo "Installing proftpd-${PROFTPD_VER}...";
	make install

        if [ ! -e ${INITDDIR}/proftpd ]; then
                if [ "${OS}" = "FreeBSD" ]; then
                        cp ${CWD}/proftpd_freebsd ${INITDDIR}/proftpd
                        chmod 755 ${INITDDIR}/proftpd
                elif [ -e /etc/debian_version ]; then
                        cp ${CWD}/proftpd_debian ${INITDDIR}/proftpd
                        chmod 755 ${INITDDIR}/proftpd
                        update-rc.d proftpd defaults
                else
                        cp ${CWD}/proftpd_boot ${INITDDIR}/proftpd
                        chmod 755 ${INITDDIR}/proftpd
                        /sbin/chkconfig proftpd on
                fi
        fi

	echo "Done proftpd.";
	rm -f ${WORKDIR}/.custombuild

	# Removing the temp dir
	if [ "${OS}" = "FreeBSD" ]; then
		rm -rf $TDIR
		unsetenv PKG_TMPDIR
	fi

	# Linking configs
	rm -f /usr/local/etc/proftpd.conf
	ln -sf /etc/proftpd.conf /usr/local/etc/proftpd.conf

	cd ${CWD}

	echo "Restarting ProFTPd."
	${INITDDIR}/proftpd restart
}

####################################################

doVersionsUpdate() {
	cd ${CWD}

	if [ "${MYSQLINST_OPT}" = "yes" ]; then
		if [ -e $MYSQL_BIN ]; then
			MYSQLV=`$MYSQL_BIN --version | awk '{ print $5 }' | cut -d , -f1`
			if [ "${MYSQL_VER}" != "${MYSQLV}" ]; then
				echo "${boldon} Updating MySQL.${boldoff}"
				doMySQL;
			fi
		fi
	fi
	
	if [ -e /usr/local/bin/autoconf ]; then
		AUTOCONFV=`/usr/local/bin/autoconf --version | grep '(GNU Autoconf)' | awk '{ print $4 }'`
		if [ "${AUTOCONF_VER}" != "${AUTOCONFV}" ]; then
			echo "${boldon}Updating autoconf${boldoff}"
			doAutoconf;
		fi
	fi

	if [ -e /usr/local/bin/automake ]; then
		AUTOMAKEV=`/usr/local/bin/automake --version | grep '(GNU automake)' | awk '{ print $4 }'`
		if [ "${AUTOMAKE_VER}" != "${AUTOMAKEV}" ]; then
			echo "${boldon}Updating automake${boldoff}"
			doAutomake;
		fi
	fi

	if [ -e /usr/local/bin/autoconf ]; then
		LIBTOOLV=`/usr/local/bin/libtool --version | grep '(GNU libtool)' | awk '{ print $4 }'`
		if [ "${LIBTOOL_VER}" != "${LIBTOOLV}" ]; then
			echo "${boldon}Updating libtool${boldoff}"
			doLibtool;
		fi
	fi

	if [ -e /usr/local/bin/curl ]; then
		CURLV=`/usr/local/bin/curl --version | grep libcurl | awk '{ print $2}'`
		if [ "${CURL_VER}" != "${CURLV}" ]; then
			echo "${boldon}Updating cURL${boldoff}"
			doCURL;
		fi
	fi

	if [ -e /usr/local/bin/freetype-config ]; then
		FREETYPEV=`/usr/local/bin/freetype-config --ftversion`
		if [ "${FREETYPE_VER}" != "${FREETYPEV}" ]; then
			echo "${boldon}Updating FreeType${boldoff}"
			doFreeType;

			echo "It is recommended to run \"$0 php n\" after FreeType update."
		fi
	fi

	if [ -e /usr/local/bin/pcre-config ]; then
		PCREV=`/usr/local/bin/pcre-config --version`
		if [ "${PCRE_VER}" != "${PCREV}" ]; then
			echo "${boldon}Updating PCRE${boldoff}"
			doPCRE;
		fi
	fi
	
	if [ -e /usr/sbin/httpd ]; then
		APACHEV=`/usr/sbin/httpd -V | grep 'Server version:' | awk '{ print $3 }' | cut -d/ -f2`
		if [ "${APACHE_OPT}" = "1.3" ]; then
			if [ "${APACHE_VER}" != "${APACHEV}" ]; then
				echo "${boldon}Updating Apache${boldoff}"
				doApache;
			fi
		elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
			if [ "${APACHE2_VER}" != "${APACHEV}" ]; then
				echo "${boldon}Updating Apache${boldoff}"
				doApache2;
			fi
		fi
	fi

	 if [ "${PHP5_CGI_OPT}" = "yes" ] || [ "${PHP6_CGI_OPT}" = "yes" ]; then
		if [ -e /usr/local/suphp/sbin/suphp ]; then
			SUPHPV=`/usr/local/suphp/sbin/suphp 2>&1 | grep 'suPHP version' | awk '{print $3}'`
			if [ "${SUPHP_VER}" != "${SUPHPV}" ]; then
				echo "${boldon}Updating suPHP.${boldoff}"
				doSuPhp;
			fi
		fi
	fi
	
	if [ "${PHP5_CLI_OPT}" = "yes" ] || [ "${PHP6_CLI_OPT}" = "yes" ]; then
		if [ -e /usr/local/bin/php ]; then
			PHPVCLI=`/usr/local/bin/php -v | grep built | awk '{ print $2 }'`
			if [ "`/usr/local/bin/php -v | grep built | awk '{ print $2 }' | cut -d. -f1`" = "4" ]; then
				if [ "${PHP6_VER}" != "${PHPVCLI}" ]; then
					echo "${boldon}Updating PHP6 (CLI)${boldoff}"
					doPhp6;
				fi
			elif [ "`/usr/local/bin/php -v | grep built | awk '{ print $2 }' | cut -d. -f1`" = "5" ]; then
				if [ "${PHP5_VER}" != "${PHPVCLI}" ]; then
					echo "${boldon}Updating PHP5 (CLI)${boldoff}"
					doPhp5;
				fi
			fi
		fi
	fi

	if [ "${PHP6_CGI_OPT}" = "yes" ]; then
		if [ -e /usr/local/php6/bin/php ]; then
			PHP6VCGI=`/usr/local/php6/bin/php -v | grep built | awk '{ print $2 }'`
			if [ "${PHP6_VER}" != "${PHP6VCGI}" ]; then
				echo "${boldon}Updating PHP6 (CGI)${boldoff}"
				doPhp6_suphp;
			fi
		fi
	fi

	if [ "${PHP5_CGI_OPT}" = "yes" ]; then
		if [ -e /usr/local/php5/bin/php-cgi ]; then
			PHP5VCGI=`/usr/local/php5/bin/php-cgi -v | grep built | awk '{ print $2 }'`
			if [ "${PHP5_VER}" != "${PHP5VCGI}" ]; then
				echo "${boldon}Updating PHP5 (CGI)${boldoff}"
				doPhp5_suphp;
			fi
		fi
	fi

	if [ "${PROFTPD_OPT}" = "yes" ]; then
		if [ -e /usr/sbin/proftpd ]; then
			PROFTPDV=`/usr/sbin/proftpd -V | grep 'Version:' | awk '{ print $2 }'`
			if [ "${PROFTPD_VER}" != "${PROFTPDV}" ]; then
				echo "${boldon}Updating ProFTPD${boldoff}"
				doProftpd;
			fi
		fi
	fi

	if [ "${DOVECOT_OPT}" = "yes" ]; then
		if [ -e /usr/sbin/dovecot ]; then
			DOVECOTV=`/usr/sbin/dovecot --version`
			if [ "${DOVECOT_VER}" != "${DOVECOTV}" ]; then
				echo "${boldon}Updating Dovecot${boldoff}"
				doDovecot;
			fi
		fi
	fi

	if [ "${ZEND_OPT}" = "yes" ]; then
		if [ "`cat /usr/local/lib/php.ini | grep zend_optimizer.version`" != "" ]; then
			ZENDV=`cat /usr/local/lib/php.ini | grep zend_optimizer.version | cut -d= -f2`
			if [ "${ZEND_VER}" != "${ZENDV}" ]; then
				echo "${boldon}Updating Zend Optimizer${boldoff}"
				doZend;
			fi
		fi
	fi

	if [ "${AWSTATS_OPT}" = "yes" ]; then
		if [ ! -d /usr/local/awstats-${AWSTATS_VER} ]; then
			AWSTATSV=0
			if [ -e /usr/local/awstats ]; then
				AWSTATSV=`ls -ld /usr/local/awstats | cut -d\> -f2 | cut -d- -f2`
			fi
			echo ""
			if [ "${AWSTATS_VER}" != "${AWSTATSV}" ]; then
				echo "${boldon}Updating AWstats.${boldoff}"
				doawstats;
			fi
		fi
	fi
	
	if [ "${ATMAIL_OPT}" = "yes" ]; then
		if [ ! -d ${WWWDIR}/atmail-${ATMAIL_VER} ]; then
			ATMAILV=0
			if [ -e ${WWWDIR}/atmail ]; then
				ATMAILV=`ls -ld ${WWWDIR}/atmail | cut -d\> -f2 | cut -d- -f2`
			fi
			echo ""
			if [ "${ATMAIL_VER}" != "${ATMAILV}" ]; then
				echo "${boldon}Updating Atmail webmail.${boldoff}"
				doatmail;
			fi
		fi
	fi
	
	if [ "${ROUNDCUBE_OPT}" = "yes" ]; then
		if [ ! -d ${WWWDIR}/roundcubemail-${ROUNDCUBE_VER} ]; then
			ROUNDCUBEV=0
			if [ -e ${WWWDIR}/roundcube ]; then
				ROUNDCUBEV=`ls -ld ${WWWDIR}/roundcube | cut -d\> -f2 | cut -d- -f2`
			fi
			echo ""
			if [ "${ROUNDCUBE_VER}" != "${ROUNDCUBEV}" ]; then
				echo "${boldon}Updating RoundCube webmail.${boldoff}"
				doroundcube;
			fi
		fi
	fi

	if [ "${PHPMYADMIN_OPT}" = "yes" ]; then
		if [ ! -d ${WWWDIR}/phpMyAdmin-${PHPMYADMIN_VER} ]; then
			PHPMYADMINV=0
			if [ -e ${WWWDIR}/phpMyAdmin ]; then
				PHPMYADMINV=`ls -ld ${WWWDIR}/phpMyAdmin | cut -d\> -f2 | cut -d- -f2,3,4`
			fi
			echo ""
			if [ "${PHPMYADMIN_VER}" != "${PHPMYADMINV}" ]; then
				echo "${boldon}Updating phpMyAdmin.${boldoff}"
				dophpMyAdmin;
			fi
		fi
	fi

	if [ "${SQUIRRELMAIL_OPT}" = "yes" ]; then
		if [ ! -d ${WWWDIR}/squirrelmail-${SQUIRRELMAIL_VER} ]; then
			SQUIRRELMAILV=0
			if [ -e ${WWWDIR}/squirrelmail ]; then
				SQUIRRELMAILV=`ls -ld ${WWWDIR}/squirrelmail | cut -d\> -f2 | cut -d- -f2`
			fi
			echo ""
			if [ "${SQUIRRELMAIL_VER}" != "${SQUIRRELMAILV}" ]; then
				echo "${boldon}Updating SquirrelMail webmail.${boldoff}"
				doSquirrelmail;
			fi
		fi
	fi
}

####################################################

doAll_jail() {
	compile_coreutils;
	compile_shell;
	compile_nbsmtp;
}

####################################################

doAll() {
        FORCE=1;

	doPCRE;

        if [ "${APACHE_OPT}" = "1.3" ]; then
                doApache;
        elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
		checkLibz;
                doApache2;
        fi

#        doAutoconf;

#        doAutomake;

#        doLibtool;

        doLibJpeg;

        doLibPng;

        doCURL;

        doMCrypt;

        doMHash;

        doFreeType;

        doIconv;

        if [ "${MYSQLINST_OPT}" = "yes" ]; then
                doMySQL;
        fi

		if [ "${JAIL_OPT}" = "yes" ]; then
			doAll_jail;
		fi
	
		doICU;

		doLibxml2;

		doLibxslt;

        doPhp n;

        doModPerl;

		if [ "${WEBALIZER_OPT}" = "yes" ]; then
			doWebalizer;
		fi
		
		if [ "${AWSTATS_OPT}" = "yes" ]; then
			doawstats;
		fi

        if [ "${EXIM_OPT}" = "yes" ]; then
                doExim;
        fi

        if [ "${DOVECOT_OPT}" = "yes" ]; then
                doDovecot;
        fi

        if [ "${PROFTPD_OPT}" = "yes" ]; then
                doProftpd;
        fi

		if [ "${SPAMASSASSIN_OPT}" = "yes" ]; then
			dospamassassin;
		fi
	
		if [ "${CLAMAV_OPT}" = "yes" ]; then
			doclamav;
		fi
		
        chown -R root:${ROOT_GRP} ${WORKDIR}

		if [ "${ATMAIL_OPT}" = "yes" ]; then
				doatmail;
        fi
		
        if [ "${ROUNDCUBE_OPT}" = "yes" ]; then
                doroundcube;
        fi

        if [ "${PHPMYADMIN_OPT}" = "yes" ]; then
                dophpMyAdmin;
        fi

        if [ "${SQUIRRELMAIL_OPT}" = "yes" ]; then
                doSquirrelmail;
        fi

        if [ "${UEBIMIAU_OPT}" = "yes" ]; then
                doUebimiau;
        fi

        if [ "${ZEND_OPT}" = "yes" ]; then
                doZend;
        fi

        if [ "${EXIMCONF_OPT}" = "yes" ]; then
                doEximConf;
        fi

        if [ "${PHPINI_OPT}" = "yes" ]; then
                doPhpIni;
        fi

        echo -e "\n\n\n";
        echo "*************************************";
        echo "*                                   *";
        echo "*   All parts have been installed   *";
        echo "*                                   *";
        echo "*************************************";
        echo "";
        if [ ${OS} = "FreeBSD" ]; then
                echo "Type: /usr/local/etc/rc.d/httpd restart";
        elif [ -e ${DEBIAN_VERSION} ]; then
                echo "Type: /etc/init.d/httpd restart";
        else
                echo "Type: /sbin/service httpd restart";
        fi
}

####################################################


if [ $# -eq 2 ]; then
	USER_INPUT=0
	INPUT_VALUE=$2
fi

case "$1" in
    all) doAll;
        ;;
	all_jail) doAll_jail;
        ;;
    options) options;
	;;
    used_configs) used_configs;
	;;
    apache)
	if [ "${APACHE_OPT}" = "1.3" ]; then
		doApache;
	elif [ "${APACHE_OPT}" = "2.0" ] || [ "${APACHE_OPT}" = "2.2" ]; then
		doApache2;
	fi
        ;;
    libjpeg) doLibJpeg;
	;;
    libpng) doLibPng;
	;;
	coreutils) compile_coreutils;
	;;
	shell) compile_shell;
	;;
	smtp_mail) compile_nbsmtp;
	;;
    zlib) doZlib;
	;;
	cron) doCron;
    ;;
    curl) doCURL;
    ;;
    mcrypt) doMCrypt;
    ;;
    mhash) doMHash;
	;;
    freetype) doFreeType;
	;;
    iconv) doIconv;
	;;
    icu) doICU;
	;;
    autoconf) doAutoconf;
	;;
    automake) doAutomake;
	;;
    libtool) doLibtool;
	;;
    libxml2) doLibxml2;
	;;
    libxslt) doLibxslt;
	;;
    mod_perl) doModPerl;
    	;;
    clean) doClean;
    	;;
	clean_old_webapps) doclean_old_webapps;
    	;;
	clean_old_tarballs) doclean_old_tarballs;
    	;;
    update) doUpdate;
    	;;
    pcre) doPCRE;
    	;;
    phpmyadmin) dophpMyAdmin;
    	;;
	atmail) doatmail;
    	;;
    roundcube) doroundcube;
    	;;
    squirrelmail) doSquirrelmail;
    	;;
    uebimiau) doUebimiau;
    	;;
    update_script) doUpdateScript;
    	;;
    update_data) doUpdateData;
        ;;
    rewrite_confs) doRewriteConfs;
        ;;
    versions) doVersions;
        ;;
    update_versions) doVersionsUpdate;
        ;;
	awstats) doawstats;
	;;
    webalizer) doWebalizer;
	;;
    proftpd) doProftpd;
	;;
    zend) doZend;
    	;;
    mysql) doMySQL;
	;;
    exim) doExim;
	;;
    exim_conf) doEximConf;
	;;
    php) doPhp;
	;;
    php-ini) doPhpIni;
	;;
    php5-cli) doPhp5;
	;;
    php6-cli) doPhp6;
	;;
    php5-cgi) doPhp5_suphp;
	;;
    php6-cgi) doPhp6_suphp;
	;;
    suphp) doSuPhp;
	;;
    todovecot) convertToDovecot;
	;;
    dovecot) doDovecot;
	;;
	spamassassin) dospamassassin;
	;;
	clamav) doclamav;
	;;
    * )	showHelp;
	do_exit 0;
        ;;
esac

do_exit 0;
