#!/bin/sh ############################################################################### # setup.sh # DirectAdmin setup.sh file is the first file to download when doing a # DirectAdmin Install. It will ask you for relevant information and will # download all required files. If you are unable to run this script with # ./setup.sh then you probably need to set it’s permissions. You can do this # by typing the following: # # chmod 755 setup.sh # # after this has been done, you can type ./setup.sh to run the script. # ############################################################################### ### Added By MTimer www.mtimer.net ### yum -y update echo “multilib_policy=all” >> /etc/yum.conf yum -y install openssl098e glibc.i686 libstdc++.i686 yum -y install dos2unix patch screen unzip lftp tar quota autoconf automake libtool which wget gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl libaio libcom_err-devel libcurl-devel gd zlib-devel zip libcap-devel cronie bzip2 db4-devel cyrus-sasl-devel perl-ExtUtils-Embed libstdc++.so.6 libnspr4.so libssl.so.6 ln -s /usr/lib/libssl.so /usr/lib/libssl.so.6 ln -s /usr/lib/libcrypto.so /usr/lib/libcrypto.so.6 echo “Download DA 1.44.3 scripts …”; mkdir -p /usr/local/directadmin tar xvf da1443-en.tar.gz -C /usr/local/directadmin echo “DA 1.44.3 scripts ready …”; ### Added By MTimer www.mtimer.net ### OS=`uname`; ADMIN_USER=admin DB_USER=da_admin ADMIN_PASS=`perl -le’print map+(A..Z,a..z,0..9)[rand 62],0..7’`; DB_ROOT_PASS=`perl -le’print map+(A..Z,a..z,0..9)[rand 62],0..7’`; FTP_HOST=files.directadmin.com if [ “$OS” = “FreeBSD” ]; then WGET_PATH=/usr/local/bin/wget else WGET_PATH=/usr/bin/wget fi WGET_OPTION=””; COUNT=`$WGET_PATH –help | grep -c no-check-certificate` if [ “$COUNT” -ne 0 ]; then WGET_OPTION=”–no-check-certificate”; fi #WGET_10=`$WGET_PATH -V 2>/dev/null | head -n1 | grep -c 1.10` #WGET_OPTION=””; #if [ $WGET_10 -eq 1 ]; then # WGET_OPTION=”–no-check-certificate”; #fi CID=0; LID=0; HOST=`hostname`; CMD_LINE=0; ETH_DEV=eth0; IP=0 if [ $# -gt 0 ]; then case “$1” in –help|help|?|-?|h) echo “”; echo “Usage: $0”; echo “”; echo “or”; echo “”; echo “Usage: $0 ()”; echo ” : Your Client ID”; echo ” : Your License ID”; echo ” : Your server’s hostname (FQDN)”; echo ” : Your ethernet device with the server IP”; echo ” : Optional. Use to override the IP in “; echo “”; echo “”; echo “Common pre-install commands:”; echo ” http://help.directadmin.com/item.php?id=354″; exit 0; ;; esac CID=$1; LID=$2; HOST=$3; if [ $# -lt 4 ]; then $0 –help exit 56; fi ETH_DEV=$4; CMD_LINE=1; if [ $# -gt 4 ]; then IP=$5; fi fi B64=0 if [ “$OS” = “FreeBSD” ]; then B64=`uname -m | grep -c 64` if [ “$B64” -gt 0 ]; then echo “*** 64-bit OS ***”; echo “*** that being said, this should be a FreeBSD 7, 8 or 9 system. ***”; sleep 2; B64=1 fi else B64=`uname -m | grep -c 64` if [ “$B64” -gt 0 ]; then echo “*** 64-bit OS ***”; echo “”; sleep 2; B64=1 fi fi if [ -e /usr/local/directadmin ]; then echo “”; echo “”; echo “*** DirectAdmin already exists ***”; echo ” Press Ctrl-C within the next 10 seconds to cancel the install”; echo ” Else, wait, and the install will continue, but will destroy existing data”; echo “”; echo “”; sleep 10; fi if [ -e /usr/local/cpanel ]; then echo “”; echo “”; echo “*** CPanel exists on this system ***”; echo ” Press Ctrl-C within the next 10 seconds to cancel the install”; echo ” Else, wait, and the install will continue overtop (as best it can)”; echo “”; echo “”; sleep 10; fi OS_VER=; REDHAT_RELEASE=/etc/redhat-release DEBIAN_VERSION=/etc/debian_version DA_PATH=/usr/local/directadmin CB_OPTIONS=${DA_PATH}/custombuild/options.conf SCRIPTS_PATH=$DA_PATH/scripts PACKAGES=$SCRIPTS_PATH/packages SETUP=$SCRIPTS_PATH/setup.txt SERVER=http://files.directadmin.com/services if [ $OS = “FreeBSD” ]; then OS_VER=`uname -r | cut -d- -f1` elif [ -e /etc/fedora-release ]; then OS=fedora OS_VER=`cat /etc/fedora-release | cut -d -f4` if [ “$OS_VER” = “(Moonshine)” ]; then OS_VER=`cat /etc/fedora-release | cut -d -f3` fi if [ “$OS_VER” = “(Werewolf)” ]; then OS_VER=`cat /etc/fedora-release | cut -d -f3` fi if [ “$OS_VER” = “(Sulphur)” ]; then OS_VER=`cat /etc/fedora-release | cut -d -f3` fi elif [ -e /etc/whitebox-release ]; then if [ ! -e /etc/redhat-release ]; then ln -s /etc/whitebox-release /etc/redhat-release fi OS_VER=`cat /etc/redhat-release | cut -d -f5` elif [ -e $DEBIAN_VERSION ]; then OS=debian OS_VER=`cat $DEBIAN_VERSION | head -n1` if [ “$OS_VER” = “testing/unstable” ]; then OS_VER=3.1 fi if [ “$OS_VER” = “lenny/sid” ]; then OS_VER=5.0 fi if [ “$OS_VER” = “squeeze/sid” ]; then OS_VER=6.0 #should be 6.0, but used to be 5. fi if [ “$OS_VER” = “wheezy/sid” ]; then OS_VER=6.0 echo “”; echo “********************************************************************************************”; echo “”; echo “This is debian wheezy/unstable, which is debian 7 beta, which we do not yet support.”; echo “please install debian 6.x instead”; echo “”; echo “See debian releases:”; echo ” http://www.debian.org/releases/”; echo “”; exit 99; fi else OS_VER=`cat /etc/redhat-release | cut -d -f5` fi if [ “$OS_VER” = “release” ]; then OS=Enterprise OS_VER=`cat /etc/redhat-release | cut -d -f6` elif [ “$OS_VER” = “ES” ]; then OS=Enterprise OS_VER=`cat /etc/redhat-release | cut -d -f7` elif [ “$OS_VER” = “WS” ]; then OS=Enterprise OS_VER=`cat /etc/redhat-release | cut -d -f7` elif [ “$OS_VER” = “AS” ]; then OS=Enterprise OS_VER=`cat /etc/redhat-release | cut -d -f7` elif [ “$OS_VER” = “Server” ]; then OS=Enterprise OS_VER=`cat /etc/redhat-release | cut -d -f7` elif [ “`cat /etc/redhat-release 2>/dev/null| cut -d -f1`” = “CentOS” ]; then OS=Enterprise OS_VER=`cat /etc/redhat-release |cut -d -f3`; if [ “$OS_VER” = “release” ]; then OS_VER=`cat /etc/redhat-release | cut -d -f4` fi elif [ “`cat /etc/redhat-release 2>/dev/null| cut -d -f3`” = “Enterprise” ]; then OS=Enterprise OS_VER=`cat /etc/redhat-release 2>/dev/null| cut -d -f7` elif [ “`cat /etc/redhat-release 2>/dev/null| cut -d -f1`” = “CloudLinux” ]; then OS=Enterprise OS_VER=`cat /etc/redhat-release 2>/dev/null| cut -d -f4` fi # Get the services file name: # services72.tar.gz # services73.tar.gz # services80.tar.gz # services90.tar.gz # services_freebsd48.tar.gz SERVICES=””; if [ “$OS” = “fedora” ]; then case “$OS_VER” in 1|1.90) SERVICES=services_fedora1.tar.gz ;; 2|2.0) SERVICES=services_fedora2.tar.gz ;; 3|3.0) SERVICES=services_fedora3.tar.gz ;; 4|4.0) SERVICES=services_fedora4.tar.gz ;; 5|5.0) SERVICES=services_fedora5.tar.gz ;; 6|6.0) SERVICES=services_fedora6.tar.gz ;; 7|7.0|8|8.0) SERVICES=services_fedora7.tar.gz ;; 9|9.0) SERVICES=services_fedora9.tar.gz ;; esac elif [ “$OS” = “debian” ]; then OS_VER=`echo $OS_VER | cut -d. -f1,2` if [ “$B64” -eq 1 ]; then case “$OS_VER” in #5.0|5.0.1|5.0.2|5.0.3|5.0.4|5.0.5|5.0.6|5.0.7|5.0.8|5.0.9|5.1) SERVICES=services_debian50_64.tar.gz 5.0|5.1|5) SERVICES=services_debian50_64.tar.gz ;; 6.0|6.1|6) SERVICES=services_debian60_64.tar.gz ;; *) SERVICES=services_debian50_64.tar.gz ;; esac else case “$OS_VER” in 3.0|3) SERVICES=services_debian30.tar.gz ;; 3.1) SERVICES=services_debian31.tar.gz ;; #5|5.0|5.0.1|5.0.2|5.0.3|5.0.4|5.0.5|5.0.6|5.0.7|5.0.8|5.0.9|5.1) SERVICES=services_debian50.tar.gz 5|5.0|5.1) SERVICES=services_debian50.tar.gz ;; 6|6.0|6.1) SERVICES=services_debian60.tar.gz ;; *) SERVICES=services_debian31.tar.gz ;; esac fi elif [ “$OS” = “FreeBSD” ] && [ “$B64” -eq 0 ]; then case “$OS_VER” in 4.8|4.9|4.10|4.11) SERVICES=services_freebsd48.tar.gz ;; 5.0|5.1|5.2|5.2.1|5.3|5.4|5.5) SERVICES=services_freebsd51.tar.gz ;; 6.0|6.1|6.2|6.3|6.4) SERVICES=services_freebsd60.tar.gz ;; 7|7.0|7.1|7.2|7.3|7.4|7.5) SERVICES=services_freebsd70.tar.gz ;; esac elif [ “$OS” = “FreeBSD” ] && [ “$B64” -eq 1 ]; then case “$OS_VER” in 7|7.0|7.1|7.2|7.3|7.4|7.5) SERVICES=services_freebsd71_64.tar.gz ;; 8|8.0|8.1|8.2|8.3) SERVICES=services_freebsd80_64.tar.gz ;; 9|9.0|9.1|9.2|9.3) SERVICES=services_freebsd90_64.tar.gz ;; esac elif [ $B64 -eq 1 ]; then case “$OS_VER” in 4.0|4.1|4.2|4.3|4.4|4.5|4.6|4.7|4.8|4.9) SERVICES=services_es41_64.tar.gz ;; 5|5.0|5.1|5.2|5.3|5.4|5.5|5.6|5.7|5.8|5.9|5.10) SERVICES=services_es50_64.tar.gz ;; 6|6.0|6.1|6.2|6.3|6.4|6.5) SERVICES=services_es60_64.tar.gz esac else case “$OS_VER” in 7.2) SERVICES=services72.tar.gz ;; 7.3) SERVICES=services73.tar.gz ;; 8.0) SERVICES=services80.tar.gz ;; 9|9.0) SERVICES=services90.tar.gz ;; 2.1|3|3.0|3.1|3.3|3.4|3.5|3.6|3.7|3.8|3.9) SERVICES=services_es30.tar.gz ;; 4|4.0|4.1|4.2|4.3|4.4|4.5|4.6|4.7|4.8|4.9) SERVICES=services_es40.tar.gz ;; 5|5.0|5.1|5.2|5.3|5.4|5.5|5.6|5.7|5.8|5.9|5.10) SERVICES=services_es50.tar.gz ;; 6|6.0|6.1|6.2|6.3|6.4|6.5) SERVICES=services_es60.tar.gz esac fi if [ “$SERVICES” = “” ]; then yesno=”n”; while [ $yesno = “n” ]; do { echo “”; echo “*** Unable to determine which services pack to use ***”; echo “”; echo “Please type in the file name closest to your system from the following list:”; echo “”; echo “Redhat:”; echo ” services72.tar.gz”; echo ” services73.tar.gz”; echo ” services80.tar.gz”; echo ” services90.tar.gz”; echo “”; echo “Fedora:”; echo ” services_fedora1.tar.gz”; echo ” services_fedora2.tar.gz”; echo ” services_fedora3.tar.gz”; echo ” services_fedora4.tar.gz”; echo ” services_fedora5.tar.gz”; echo ” services_fedora6.tar.gz”; echo ” services_fedora7.tar.gz”; echo ” services_fedora9.tar.gz”; echo “”; echo “Enterprise/Whitebox/CentOS:”; echo ” services_es30.tar.gz”; echo ” services_es40.tar.gz”; echo ” services_es50.tar.gz”; echo ” services_es60.tar.gz”; echo ” services_es41_64.tar.gz”; echo ” services_es50_64.tar.gz”; echo ” services_es60_64.tar.gz”; echo “”; echo “FreeBSD:”; echo ” services_freebsd48.tar.gz”; echo ” services_freebsd49.tar.gz”; echo ” services_freebsd51.tar.gz”; echo ” services_freebsd60.tar.gz”; echo ” services_freebsd70.tar.gz”; echo ” services_freebsd71_64.tar.gz”; echo ” services_freebsd80_64.tar.gz”; echo ” services_freebsd90_64.tar.gz”; echo “”; echo “Debian:”; echo ” services_debian30.tar.gz”; echo ” services_debian31.tar.gz”; echo ” services_debian50.tar.gz”; echo ” services_debian50_64.tar.gz”; echo ” services_debian60.tar.gz”; echo ” services_debian60_64.tar.gz”; echo “”; echo -n “Type the filename: “; read SERVICES echo “”; echo “Value entered: $SERVICES”; echo -n “Is this correct? (y,n) : “; read yesno; } done; fi /bin/mkdir -p $PACKAGES yesno=n; if [ “$CMD_LINE” -eq 1 ]; then yesno=y; else echo “*****************************************************”; echo “*”; echo “* Directadmin v1.44.3 Nulled by Yvonne Lu”; echo “* Improved By MTimer”; echo “*”; echo “*****************************************************”; fi while [ “$yesno” = “n” ]; do { echo -n “Please enter your Client ID : “; read CID; echo -n “Please enter your License ID : “; read LID; echo -e “Please enter your hostname (server.domain.com)”; echo “It must be a Fully Qualified Domain Name”; echo “Do *not* use a domain you plan on using for the hostname:”; echo “eg. don’t use domain.com. Use server.domain.com instead.”; echo “Do not enter http:// or www”; echo “”; echo -n “Enter your hostname (FQDN) : “; read HOST; echo “Client ID: $CID”; echo “License ID: $LID”; echo “Hostname: $HOST”; echo -n “Is this correct? (y,n) : “; read yesno; } done; ############ # Get the other info EMAIL=${ADMIN_USER}@${HOST} TEST=`echo $HOST | cut -d. -f3` if [ “$TEST” = “” ] then NS1=ns1.`echo $HOST | cut -d. -f1,2` NS2=ns2.`echo $HOST | cut -d. -f1,2` else NS1=ns1.`echo $HOST | cut -d. -f2,3,4,5,6` NS2=ns2.`echo $HOST | cut -d. -f2,3,4,5,6` fi ## Get the ethernet_dev if [ $OS = “FreeBSD” ]; then if [ $CMD_LINE -eq 0 ]; then DEVS=`/sbin/ifconfig -a | grep -e “^[a-z]” | cut -d: -f1 |grep -v lp0|grep -v lo0|grep -v tun0|grep -v sl0|grep -v ppp0|grep -v faith0` COUNT=0; for i in $DEVS; do { COUNT=$(($COUNT+1)); }; done; if [ $COUNT -eq 0 ]; then echo “Could not find your ethernet device.”; echo -n “Please enter the name of your ethernet device: “; read ETH_DEV; elif [ $COUNT -eq 1 ]; then echo -n “Is $DEVS your network adaptor with the license IP? (y,n) : “; read yesno; if [ “$yesno” = “n” ]; then echo -n “Enter the name of the ethernet device you wish to use : “; read ETH_DEV; else ETH_DEV=$DEVS fi else # more than one echo “The following ethernet devices were found. Please enter the name of the one you wish to use:”; echo “”; echo $DEVS; echo “”; echo -n “Enter the device name: “; read ETH_DEV; fi fi echo “Using $ETH_DEV”; if [ “$IP” = “0” ]; then IP=`/sbin/ifconfig $ETH_DEV | grep ‘inet ‘ | head -n1 | cut -d -f2` fi echo “Using $IP”; NM_HEX=`/sbin/ifconfig $ETH_DEV | grep ‘inet ‘ | head -n1 | cut -d -f4 | cut -dx -f2 | tr ‘[a-f]’ ‘[A-F]’` NMH1=`echo $NM_HEX | awk ‘{print substr($1,1,2)}’` NMH2=`echo $NM_HEX | awk ‘{print substr($1,3,2)}’` NMH3=`echo $NM_HEX | awk ‘{print substr($1,5,2)}’` NMH4=`echo $NM_HEX | awk ‘{print substr($1,7,2)}’` NM1=`echo “ibase=16; $NMH1” | bc` NM2=`echo “ibase=16; $NMH2” | bc` NM3=`echo “ibase=16; $NMH3” | bc` NM4=`echo “ibase=16; $NMH4” | bc` NM=$NM1.$NM2.$NM3.$NM4; else if [ $CMD_LINE -eq 0 ]; then DEVS=`/sbin/ifconfig -a | grep -e “^[a-z]” | awk ‘{ print $1; }’ | grep -v lo | grep -v sit0 | grep -v ppp0 | grep -v faith0` COUNT=0; for i in $DEVS; do { COUNT=$(($COUNT+1)); }; done; if [ $COUNT -eq 0 ]; then echo “Could not find your ethernet device.”; echo -n “Please enter the name of your ethernet device: “; read ETH_DEV; elif [ $COUNT -eq 1 ]; then DIP=`/sbin/ifconfig $DEVS | grep ‘inet addr:’ | cut -d: -f2 | cut -d -f1`; echo -n “Is $DEVS your network adaptor with the license IP ($DIP)? (y,n) : “; read yesno; if [ “$yesno” = “n” ]; then echo -n “Enter the name of the ethernet device you wish to use : “; read ETH_DEV; else ETH_DEV=$DEVS fi else # more than one echo “The following ethernet devices/IPs were found. Please enter the name of the device you wish to use:”; echo “”; #echo $DEVS; for i in $DEVS; do { DIP=`/sbin/ifconfig $i | grep ‘inet addr:’ | cut -d: -f2 | cut -d -f1`; echo “$i $DIP”; }; done; echo “”; echo -n “Enter the device name: “; read ETH_DEV; fi #echo -n “Is $ETH_DEV your network adaptor with the license IP? (y,n) : “; #read yesno; #if [ “$yesno” = “n” ]; then # echo -n “Enter the name of the ethernet device you wish to use : “; # read ETH_DEV; #fi fi if [ “$IP” = “0” ]; then IP=`/sbin/ifconfig $ETH_DEV | grep ‘inet addr:’ | cut -d: -f2 | cut -d -f1`; fi NM=`/sbin/ifconfig $ETH_DEV | grep ‘Mask:’ | cut -d: -f4`; fi if [ $CMD_LINE -eq 0 ]; then if [ “$IP” = “” ]; then yesno=”n”; else echo -n “Is $IP the IP in your license? (y,n) : “; read yesno; fi if [ “$yesno” = “n” ]; then echo -n “Enter the IP used in your license file : “; read IP; fi if [ “$IP” = “” ]; then echo “The IP entered is blank. Please try again, and enter a valid IP”; fi fi ############ echo “”; echo “DirectAdmin will now be installed on: $OS $OS_VER”; if [ $CMD_LINE -eq 0 ]; then echo -n “Is this correct? (must match license) (y,n) : “; read yesno; if [ “$yesno” = “n” ]; then echo -e “nPlease change the value in your license, or install the correct operating systemn”; exit 1; fi fi ################ if [ $CMD_LINE -eq 0 ]; then echo “”; echo “You now have 4 options for your apache/php setup.”; echo “”; echo “1: customapache: end-of-life software. Apache 1.3, php 4, frontpage. Do not use. No support.”; echo “2: custombuild 1.1: older software. Apache 2.x, php 4, 5, or both in cli and/or suphp. Defaults to php 5.2”; echo “3: custombuild 1.2: * Recommended. simlar to 1.1, newer default versions. Apache 2.x, php 5, 6, or both in cli and/or suphp. Defaults to php 5.3”; echo “4: custombuild 2.0 ALPHA: Not yet recommended, still in testing. Apache 2.4, mod_ruid2, php 5.4. Can be set to use php-FPM. Experts only. Requires pre-release binaries.”; echo “”; echo ” Post any issues with custombuild to the forum: http://www.directadmin.com/forum/forumdisplay.php?f=61″; echo “”; #echo -n “Enter your choice (1 or 2): “; echo -n “Enter your choice (1, 2, 3 or 4): “; read onetwo; if [ “$onetwo” = “2” ] || [ “$onetwo” = “3” ] || [ “$onetwo” = “4” ]; then CB_VER=1.1 PHP_V=5.2 PHP_T=cli AP_VER=2.2 RUID=””; if [ “$onetwo” = “3” ]; then CB_VER=1.2 PHP_V=5.3 fi if [ “$onetwo” = “4” ]; then CB_VER=2.0 PHP_V=5.4 AP_VER=2.4 RUID=” with mod_ruid2″; if [ “${OS}” = “FreeBSD” ]; then RUID=””; PHP_T=suPhp fi fi echo “You have chosen custombuild $CB_VER.”; echo “$CB_VER” > /root/.custombuild #grab the build file. CBPATH=$DA_PATH/custombuild mkdir -p $CBPATH BUILD=$CBPATH/build BFILE=$SERVER/custombuild/${CB_VER}/custombuild/build if [ $OS = “FreeBSD” ]; then fetch -o $BUILD $BFILE else $WGET_PATH -O $BUILD $BFILE fi chmod 755 $BUILD echo “”; echo -n “Would you like the default settings of apache ${AP_VER}${RUID} and php ${PHP_V} ${PHP_T}? (y/n): “; read yesno; if [ “$yesno” = “n” ]; then echo “You have chosen to customize the custombuild options. Please wait while options configurator is downloaded… “; echo “”; if [ -e $BUILD ]; then $BUILD create_options else echo “unable to download the build file. Using defaults instead.”; fi else echo “Using the default settings for custombuild.”; fi echo -n “Would you like to search for the fastest download mirror? (y/n): “; read yesno; if [ “$yesno” = “y” ]; then $BUILD set_fastest; if [ -s “${CB_OPTIONS}” ]; then DL=`grep ^downloadserver= ${CB_OPTIONS} | cut -d= -f2` if [ “${DL}” != “” ]; then SERVER=http://${DL}/services FTP_HOST=${DL} fi fi fi else echo “Using customapache with apache 1.3 and php 4.”; fi sleep 2 fi ########## echo “beginning pre-checks, please wait…”; # Things to check for: # # bison # flex # webalizer # bind (named) # patch # openssl-devel # wget BIN_DIR=/usr/bin LIB_DIR=/usr/lib if [ $OS = “FreeBSD” ]; then BIN_DIR=/usr/local/bin LIB_DIR=/usr/local/lib fi checkFile() { if [ -e $1 ]; then echo 1; else echo 0; fi } if [ $OS = “FreeBSD” ]; then PERL=`pkg_info | grep -ce ‘^perl’`; else PERL=`checkFile /usr/bin/perl`; fi BISON=`checkFile $BIN_DIR/bison`; FLEX=`checkFile /usr/bin/flex`; WEBALIZER=`checkFile $BIN_DIR/webalizer`; BIND=`checkFile /usr/sbin/named`; PATCH=`checkFile /usr/bin/patch`; SSL_DEVEL=`checkFile /usr/include/openssl/ssl.h`; WGET=`checkFile $BIN_DIR/wget`; WGET_PATH=$BIN_DIR/wget; KRB5=`checkFile /usr/kerberos/include/krb5.h`; KILLALL=`checkFile /usr/bin/killall`; if [ $KRB5 -eq 0 ]; then KRB5=`checkFile /usr/include/krb5.h`; fi if [ $OS = “FreeBSD” ]; then GD=`checkFile $LIB_DIR/libgd.so.2`; else GD=`checkFile $LIB_DIR/libgd.so.1`; #1.8.4 fi CURLDEV=`checkFile /usr/include/curl/curl.h` E2FS=1; E2FS_DEVEL=1; if [ -e /etc/fedora-release ]; then E2FS=`checkFile /lib/libcom_err.so.2`; E2FS_DEVEL=`checkFile /usr/include/et/com_err.h`; fi if [ “$OS” = “Enterprise” ]; then if [ $B64 -eq 1 ]; then E2FS=`checkFile /lib64/libcom_err.so.2`; else E2FS=`checkFile /lib/libcom_err.so.2`; fi E2FS_DEVEL=`checkFile /usr/include/et/com_err.h`; fi ############################################################################### ############################################################################### # We now have all information gathered, now we need to start making decisions if [ “$OS” = “debian” ]; then if [ -e /bin/bash ] && [ -e /bin/dash ]; then COUNT=`ls -la /bin/sh | grep -c dash` if [ “$COUNT” -eq 1 ]; then ln -sf bash /bin/sh fi fi apt-get -y install ca-certificates fi if [ “$OS” = “debian” ] && [ “$OS_VER” = “3.0” ]; then COUNT=`cat /etc/apt/sources.list |grep backports |grep -c debconf` if [ “$COUNT” -eq 0 ]; then echo “deb http://www.backports.org/debian/ woody debconf” >> /etc/apt/sources.list fi fi if [ $WGET -eq 0 ]; then if [ “$OS” = “FreeBSD” ]; then echo “wget not found: Attempting to install wget … “; if [ “$B64” -eq 1 ]; then case “$OS_VER” in 7.0|7.1|7.2|7.3|7.4|7.5) pkg_add -r http://$FTP_HOST/services/packages-7.1-release/Latest/wget.tbz ;; 8.0|8.1|8.2|8.3) pkg_add -r http://$FTP_HOST/services/packages-8.0-release/Latest/wget.tbz ;; 9.0|9.1|9.2|9.3) pkg_add -r http://$FTP_HOST/services/packages-9.0-release/Latest/wget.tbz ;; esac else case “$OS_VER” in 7.0|7.1|7.2|7.3|7.4|7.5) pkg_add -r http://$FTP_HOST/services/packages-7-stable/Latest/wget.tbz ;; 6.0|6.1|6.2|6.3|6.4) pkg_add -r http://$FTP_HOST/services/packages-6-stable/Latest/wget.tbz ;; 5.3|5.4|5.5) pkg_add -r http://$FTP_HOST/services/packages-5.3-release/Latest/wget.tbz ;; 5.2.1) pkg_add -r http://$FTP_HOST/services/packages-5.2.1-release/Latest/wget.tbz ;; 4.8|4.9) pkg_add -r http://$FTP_HOST/services/packages-4-stable/Latest/wget.tgz ;; 4.10|4.11) pkg_add -r http://$FTP_HOST/services/packages-4.10-release/Latest/wget.tgz ;; *) pkg_add -r http://$FTP_HOST/services/packages-5-stable/Latest/wget.tbz ;; esac fi elif [ “$OS” = “debian” ]; then echo “wget not found: Attempting to install wget … “; apt-get -y install wget D64POST=”” if [ “$B64″ -eq 1 ]; then D64POST=”_64” fi #the default wget from apt-get doesn’t have https support if [ -e $WGET_PATH ]; then $WGET_PATH -O $WGET_PATH.new $SERVER/debian_${OS_VER}${D64POST}/wget mv -f $WGET_PATH $WGET_PATH.old mv -f $WGET_PATH.new $WGET_PATH chmod 755 $WGET_PATH fi else echo “*** wget not found: you *must* install wget (yum -y install wget)”; exit 2; fi WGET_10=`$WGET_PATH -V 2>/dev/null | head -n1 | grep -c 1.10` WGET_OPTION=””; if [ $WGET_10 -eq 1 ]; then WGET_OPTION=”–no-check-certificate”; fi fi # Download the file that has the paths to all the relevant files. FILES=$SCRIPTS_PATH/files.sh if [ “$OS” != “FreeBSD” ]; then FILES_PATH=$OS_VER if [ “$OS” = “debian” ]; then OS_VER=`echo $OS_VER | cut -d. -f1,2` if [ “$OS_VER” = “5” ]; then OS_VER=5.0 fi if [ “$OS_VER” = “6” ]; then OS_VER=6.0 fi if [ $B64 -eq 1 ]; then FILES_PATH=debian_${OS_VER}_64 else FILES_PATH=debian_${OS_VER} fi elif [ “$OS” = “fedora” ]; then case “$OS_VER” in 1|1.90) FILES_PATH=fedora_1 ;; 2|2.0) FILES_PATH=fedora_2 ;; 3|3.0) FILES_PATH=fedora_3 ;; 4|4.0) FILES_PATH=fedora_4 ;; 5|5.0) FILES_PATH=fedora_5 ;; 6|6.0) FILES_PATH=fedora_6 ;; 7|7.0) FILES_PATH=fedora_7 ;; 8|8.0) FILES_PATH=fedora_8 ;; 9|9.0) FILES_PATH=fedora_9 esac elif [ $B64 -eq 1 ]; then case “$OS_VER” in 4|4.0|4.1|4.2|4.3|4.4|4.5|4.6|4.7|4.8|4.9) FILES_PATH=es_4.1_64 ;; 5|5.0|5.1|5.2) FILES_PATH=es_5.0_64 ;; 5.3|5.4|5.5|5.6|5.7|5.8|5.9|5.10) FILES_PATH=es_5.3_64 ;; 6.0|6.1|6.2|6.3|6.4|6.5) FILES_PATH=es_6.0_64 ;; esac elif [ “$OS” = “Enterprise” ]; then case “$OS_VER” in 5|5.1|5.2) FILES_PATH=es_5.0 ;; 5.3|5.4|5.5|5.6|5.7|5.8|5.9|5.10) FILES_PATH=es_5.3 ;; 6.0|6.1|6.2|6.3|6.4|6.5) FILES_PATH=es_6.0 ;; esac fi wget -O $FILES $SERVER/$FILES_PATH/files.sh if [ ! -e $FILES ]; then echo “*** Unable to download files.sh”; echo “tried: $SERVER/$FILES_PATH/files.sh”; exit 3; fi chmod 755 $FILES; . $FILES fi addPackage() { echo “adding $1 …”; if [ “$OS” = “FreeBSD” ]; then if [ “$B64” -eq 1 ]; then case “$OS_VER” in 7|7.0|7.1|7.2|7.3|7.4|7.5) pkg_add -r http://$FTP_HOST/services/packages-7.1-release/Latest/${1}.tbz ;; 8|8.0|8.1|8.2|8.3) pkg_add -r http://$FTP_HOST/services/packages-8.0-release/Latest/${1}.tbz ;; 9|9.0|9.1|9.2|9.3) pkg_add -r http://$FTP_HOST/services/packages-9.0-release/Latest/${1}.tbz ;; esac else case “$OS_VER” in 7|7.0|7.1|7.2|7.3|7.4|7.5) pkg_add -r http://$FTP_HOST/services/packages-7-stable/Latest/${1}.tbz ;; 6.0|6.1|6.2|6.3|6.4) pkg_add -r http://$FTP_HOST/services/packages-6-stable/Latest/${1}.tbz ;; 5.3|5.4|5.5) pkg_add -r http://$FTP_HOST/services/packages-5.3-release/Latest/${1}.tbz ;; 5.2.1) pkg_add -r http://$FTP_HOST/services/packages-5.2.1-release/Latest/${1}.tbz ;; 4.8|4.9) pkg_add -r http://$FTP_HOST/services/packages-4-stable/Latest/${1}.tgz ;; 4.10|4.11) pkg_add -r http://$FTP_HOST/services/packages-4.10-release/Latest/${1}.tgz ;; *) pkg_add -r http://$FTP_HOST/services/packages-5-stable/Latest/${1}.tbz ;; esac fi elif [ “$OS” = “debian” ]; then if [ “$3” = “0” ]; then return; fi if [ “$3” = “” ]; then apt-get -y install $1 else apt-get -y install $3 fi else if [ “$2” = “” ]; then echo “”; echo “*** the value for $1 is empty. It needs to be added manually ***” echo “”; return; fi wget -O $PACKAGES/$2 $SERVER/$FILES_PATH/$2 if [ ! -e $PACKAGES/$2 ]; then echo “Error downloading $SERVER/$FILES_PATH/$2”; fi rpm -Uvh –nodeps –force $PACKAGES/$2 fi } ####### # Ok, we’re ready to go. if [ $PERL -eq 0 ]; then case “$OS_VER” in 5.3|5.4|5.5|5.6|5.7|5.8|5.9|5.10|6.0|6.1|6.2|6.3|6.4|6.5|7|7.0|7.1|7.2|7.3|7.4|7.5|8|8.0|8.1|8.2|8.3) addPackage perl “$perl”; ;; 5.0|5.1|5.2) addPackage perl5.6 $perl; ;; *) addPackage perl5.8 $perl; ;; esac rehash use.perl port 2> /dev/null > /dev/null ADMIN_PASS=`/usr/bin/perl -le’print map+(A..Z,a..z,0..9)[rand 62],0..7’`; DB_ROOT_PASS=`/usr/bin/perl -le’print map+(A..Z,a..z,0..9)[rand 62],0..7’`; fi if [ ! -e /usr/bin/perl ]; then ln -s /usr/local/bin/perl /usr/bin/perl fi #this bit is for exim and fedora 1. if [ “$OS_VER” = “1” ]; then echo “/usr/lib/perl5/5.8.1/i386-linux-thread-multi/CORE” >> /etc/ld.so.conf ldconfig fi 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 if [ $BISON -eq 0 ]; then addPackage bison $bison fi if [ $FLEX -eq 0 ]; then #flex doesn’t exist for pkg_add on FreeBSD… addPackage flex $flex fi if [ $GD -eq 0 ]; then addPackage gd $gd fi if [ “$CURLDEV” -eq 0 ]; then #only applies to centos 6 if [ “${FILES_PATH}” = “es_6.0” ] || [ “${FILES_PATH}” = “es_6.0_64” ]; then echo “Installing libcurl-devel..”; yum -y install libcurl-devel if [ ! -s /usr/include/curl/curl.h ]; then echo “*************************”; echo “* Cannot find /usr/include/curl/curl.h. Php compile may fail. (yum -y install libcurl-devel)”; echo “* If yum doesn’t work, install rpms from your respective OS path (use only 1):”; echo “* http://files.directadmin.com/services/es_6.0/libcurl-devel-7.19.7-16.el6.i686.rpm”; echo “* http://files.directadmin.com/services/es_6.0_64/libcurl-7.19.7-16.el6.x86_64.rpm”; echo “*”; echo “* If you can install libcurl-devel quick enough in a 2nd ssh window, the php compile may work.”; echo “*************************”; sleep 5; fi fi fi if [ $WEBALIZER -eq 0 ]; then WEBALIZER_FILE=/usr/bin/webalizer if [ “$OS” = “FreeBSD” ]; then WEBALIZER_FILE=/usr/local/bin/webalizer if [ “$B64” -eq 1 ]; then case “$OS_VER” in 7|7.0|7.1|7.2|7.3|7.4|7.5) wget -O $WEBALIZER_FILE $SERVER/freebsd7.1-64bit/webalizer ;; 8|8.0|8.1|8.2|8.3) wget -O $WEBALIZER_FILE $SERVER/freebsd8.0-64bit/webalizer ;; esac else case “$OS_VER” in 4.8|4.9|4.10|4.11) wget -O $WEBALIZER_FILE $SERVER/freebsd4.8/webalizer ;; 5.0|5.1|5.2|5.2.1|5.3|5.4|5.5) wget -O $WEBALIZER_FILE $SERVER/freebsd5.1/webalizer ;; 6.0|6.1|6.2|6.3|6.4) wget -O $WEBALIZER_FILE $SERVER/freebsd6.0/webalizer ;; 7|7.0|7.1|7.2|7.3|7.4|7.5) wget -O $WEBALIZER_FILE $SERVER/freebsd7.0/webalizer ;; esac fi else wget -O $WEBALIZER_FILE $SERVER/${filesh_path}/webalizer fi chmod 755 $WEBALIZER_FILE fi if [ $BIND -eq 0 ]; then addPackage bind-utils “$bind_utils” bind9utils addPackage bind “$bind” bind9 addPackage bind-libs “$bind_libs” 0 fi if [ “$OS” != “FreeBSD” ] && [ “$OS” != “debian” ]; then mv -f /etc/init.d/named /etc/init.d/named.back wget -O /etc/init.d/named http://www.directadmin.com/named chmod 755 /etc/init.d/named /sbin/chkconfig named reset RNDCKEY=/etc/rndc.key if [ ! -s $RNDCKEY ]; then echo “Generating new key: $RNDCKEY …”; if [ -e /dev/urandom ]; then /usr/sbin/rndc-confgen -a -r /dev/urandom else /usr/sbin/rndc-confgen -a fi COUNT=`grep -c ‘key “rndc-key”‘ $RNDCKEY` if [ “$COUNT” -eq 1 ]; then perl -pi -e ‘s/key “rndc-key”/key “rndckey”/’ $RNDCKEY fi echo “Done generating new key”; fi if [ ! -s $RNDCKEY ]; then echo “rndc-confgen failed. Using template instead.”; wget -O $RNDCKEY http://www.directadmin.com/rndc.key if [ `cat $RNDCKEY | grep -c secret` -eq 0 ]; then SECRET=`/usr/sbin/rndc-confgen | grep secret | head -n 1` STR=”perl -pi -e ‘s#hmac-md5;#hmac-md5;nt$SECRET#’ $RNDCKEY;” eval $STR; fi echo “Template installed.”; fi fi if [ “$OS” = “FreeBSD” ]; then if [ ! -e /etc/namedb/rndc.key ]; then rndc-confgen -a -s $IP fi COUNT=`cat /etc/namedb/named.conf | grep -c listen` if [ $COUNT -ne 0 ]; then wget -O /etc/namedb/named.conf http://www.directadmin.com/named.conf.freebsd fi fi if [ “$OS” = “debian” ]; then if [ ! -e /etc/init.d/named ]; then if [ -e /etc/init.d/bind9 ]; then ln -s bind9 /etc/init.d/named else wget -O /etc/init.d/named http://www.directadmin.com/named.debian chmod 755 /etc/init.d/named #ln -s bind /etc/init.d/named fi fi if [ ! -e /bin/nice ]; then ln -s /usr/bin/nice /bin/nice fi if [ “$KILLALL” -eq 0 ]; then addPackage psmisc nothing psmisc fi #for debian 6, need /lib/libaio.so.1 via libaio1 and libaio-dev for mysql 5.5 OV=`echo $OS_VER | cut -d. -f1` if [ “$OV” -ge 6 ]; then addPackage libaio-dev nothing libaio-dev fi fi if [ -e /etc/sysconfig/named ]; then /usr/bin/perl -pi -e ‘s/^ROOTDIR=.*/ROOTDIR=/’ /etc/sysconfig/named fi if [ $PATCH -eq 0 ]; then addPackage patch $patch fi if [ $SSL_DEVEL -eq 0 ]; then addPackage openssl “$openssl” addPackage openssl-devel “$openssl_devel” libssl-dev fi if [ $OS != “FreeBSD” ]; then groupadd apache >/dev/null 2>&1 if [ “$OS” = “debian” ]; then useradd -d /var/www -g apache -s /bin/false apache >/dev/null 2>&1 else useradd -d /var/www -g apache -r -s /bin/false apache >/dev/null 2>&1 fi mkdir -p /etc/httpd/conf >/dev/null 2>&1 if [ $KRB5 -eq 0 ]; then addPackage krb5-libs “$krb5_libs” libkrb53 addPackage krb5-devel “$krb5_devel” libkrb5-dev fi fi #this is for exim. if [ “$OS” = “fedora” ] && [ “$OS_VER” = “8” ]; then if [ -e /lib/libdb-4.6.so ] && [ ! -e /lib/libdb-4.5.so ]; then ln -s libdb-4.6.so /lib/libdb-4.5.so fi if [ ! -e /usr/lib/mysql/libmysqlclient.so ] && [ -e /usr/lib/libmysqlclient.so ]; then ln -s /usr/lib/libmysqlclient.so /usr/lib/mysql/libmysqlclient.so fi fi if [ $OS = “FreeBSD” ]; then if [ ! -e /usr/lib/libc.so.4 ]; then pkg_add -r compat4x >/dev/null 2>&1 fi if [ -e /lib/libm.so.3 ]; then if [ ! -e /lib/libm.so.2 ]; then ln -s libm.so.3 /lib/libm.so.2 fi fi #1.37.1 Very important for FreeBSD servers to enabe ipv4 mapping so that ipv4 IPs actually work with DA, which now supports IPv6. COUNT=`grep -c ipv6_ipv4mapping /etc/rc.conf` if [ “$COUNT” -eq 0 ]; then echo “ipv6_ipv4mapping=”YES”” >> /etc/rc.conf fi COUNT=`grep -c net.inet6.ip6.v6only /etc/sysctl.conf` if [ “$COUNT” -eq 0 ]; then echo “net.inet6.ip6.v6only=0” >> /etc/sysctl.conf /etc/rc.d/sysctl restart fi /sbin/sysctl net.inet6.ip6.v6only=0 fi if [ $E2FS -eq 0 ]; then addPackage e2fsprogs “$e2fsprogs” 0 fi if [ $E2FS_DEVEL -eq 0 ]; then addPackage e2fsprogs-devel “$e2fsprogs_devel” 0 fi if [ $B64 -eq 1 ] && [ -e /etc/redhat-release ]; then COUNT=`rpm -qa | grep -c perl-DBI` if [ $COUNT -eq 0 ]; then addPackage perl-DBI “$perl_dbi” 0 fi fi if [ “$OS” = “debian” ] && [ ! -e /sbin/quotacheck ]; then echo “Couldn’t find quotas. Installing them.”; addPackage quota “$quota” quota fi if [ -e /etc/selinux/config ]; then perl -pi -e ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config perl -pi -e ‘s/SELINUX=permissive/SELINUX=disabled/’ /etc/selinux/config fi if [ -e /selinux/enforce ]; then echo “0” > /selinux/enforce fi if [ -e /usr/sbin/setenforce ]; then /usr/sbin/setenforce 0 fi if [ -s /usr/sbin/ntpdate ]; then /usr/sbin/ntpdate -b -u ntp.directadmin.com else if [ -s /usr/bin/rdate ]; then /usr/bin/rdate -s rdate.directadmin.com fi fi #test and make sure wget works on debian. if [ “$OS” = “debian” ]; then $BIN_DIR/wget -O /dev/null https://www.directadmin.com RET=$? if [ $RET -eq 1 ]; then echo “*******************”; echo “”; echo “wget does not support https. Downloading a new wget for you from http://files.directadmin.com/services/debian_${OS_VER}/wget”; echo “”; echo “*******************”; $BIN_DIR/wget -O $BIN_DIR/wget2 http://files.directadmin.com/services/debian_${OS_VER}/wget RET=$? if [ $RET -eq 0 ]; then mv $BIN_DIR/wget $BIN_DIR/wget.orig mv $BIN_DIR/wget2 $BIN_DIR/wget chmod 755 $BIN_DIR/wget echo “pausing for 2 seconds to let system find the new wget…”; sleep 2 else echo “”; echo “wget does not appear to be functioning with https.”; echo “run the following to get a new wget binary:”; echo ” cd /usr/bin”; echo ” wget -O wget2 http://files.directadmin.com/services/debian_${OS_VER}/wget”; echo ” mv wget wget.orig”; echo ” mv wget2 wget”; echo ” chmod 755 wget”; fi echo “”; echo “if wget is still not working correctly, compile it from source for your system:”; echo “http://help.directadmin.com/item.php?id=119”; echo “”; fi fi #setup a basic my.cnf file. MYCNF=/etc/my.cnf if [ -e $MYCNF ]; then mv -f $MYCNF $MYCNF.old fi echo “[mysqld]” > $MYCNF; echo “local-infile=0” >> $MYCNF; #we don’t want conflicts if [ -e /etc/debian_version ]; then if [ -d /etc/mysql ]; then mv /etc/mysql /etc/mysql.moved fi fi if [ -e /root/.my.cnf ]; then mv /root/.my.cnf /root/.my.cnf.moved fi #ensure /etc/hosts has localhost COUNT=`grep 127.0.0.1 /etc/hosts | grep -c localhost` if [ “$COUNT” -eq 0 ]; then echo -e “127.0.0.1ttlocalhost” >> /etc/hosts fi ############################################################################### ############################################################################### LAN=0 if [ -s /root/.lan ]; then LAN=`cat /root/.lan` fi INSECURE=0 if [ -s /root/.insecure_download ]; then INSECURE=`cat /root/.insecure_download` fi # Assuming everything got installed correctly, we can now begin the install: BIND_ADDRESS=–bind-address=$IP if [ “$LAN” -eq 1 ]; then BIND_ADDRESS=””; fi HTTP=https EXTRA_VALUE=”” if [ “${INSECURE}” -eq 1 ]; then HTTP=http EXTRA_VALUE=’&insecure=yes’ fi #$BIN_DIR/wget $WGET_OPTION -O $DA_PATH/update.tar.gz $BIND_ADDRESS ${HTTP}://www.directadmin.com/cgi-bin/daupdate?uid=$CID&lid=$LID${EXTRA_VALUE} #cp update2.tar.gz $DA_PATH/update.tar.gz #if [ ! -e $DA_PATH/update.tar.gz ]; then # echo “Unable to download $DA_PATH/update.tar.gz”; # exit 3; #fi #COUNT=`head -n 4 $DA_PATH/update.tar.gz | grep -c “* You are not allowed to run this program *”`; #if [ $COUNT -ne 0 ]; then # echo “”; # echo “You are not authorized to download the update package with that client id and license id for this IP address. Please email [email protected]”; # exit 4; #fi cd $DA_PATH; #tar xzf update.tar.gz if [ ! -e $DA_PATH/directadmin ]; then echo “Cannot find the DirectAdmin binary. Extraction failed”; echo “”; echo “If you see an error that says to add –no-check-certificate, recompile wget:”; echo “http://help.directadmin.com/item.php?id=119”; echo “”; exit 5; fi ############################################################################### # write the setup.txt echo “hostname=$HOST” > $SETUP; echo “email=$EMAIL” >> $SETUP; echo “mysql=$DB_ROOT_PASS” >> $SETUP; echo “mysqluser=$DB_USER” >> $SETUP; echo “adminname=$ADMIN_USER” >> $SETUP; echo “adminpass=$ADMIN_PASS” >> $SETUP; echo “ns1=$NS1” >> $SETUP; echo “ns2=$NS2” >> $SETUP; echo “ip=$IP” >> $SETUP; echo “netmask=$NM” >> $SETUP; echo “uid=$CID” >> $SETUP; echo “lid=$LID” >> $SETUP; echo “services=$SERVICES” >> $SETUP; CFG=$DA_PATH/data/templates/directadmin.conf COUNT=`cat $CFG | grep -c ethernet_dev=` if [ $COUNT -lt 1 ]; then echo “ethernet_dev=$ETH_DEV” >> $CFG fi chmod 600 $SETUP ############################################################################### ############################################################################### # Install it cd $SCRIPTS_PATH; ./install.sh $CMD_LINE if [ ! -e /etc/virtual ]; then mkdir /etc/virtual chown mail:mail /etc/virtual chmod 711 /etc/virtual fi #ok, yes, This totally doesn’t belong here, but I’m not in the mood to re-release 13 copies of DA (next release will do it) for i in blacklist_domains whitelist_from use_rbl_domains bad_sender_hosts blacklist_senders whitelist_domains whitelist_hosts whitelist_senders; do touch /etc/virtual/$i; chown mail:mail /etc/virtual/$i; chmod 644 /etc/virtual/$i; done if [ -e /etc/aliases ]; then COUNT=`grep -c diradmin /etc/aliases` if [ “$COUNT” -eq 0 ]; then echo “diradmin: :blackhole:” >> /etc/aliases fi fi rm -f /usr/lib/sendmail ln -s ../sbin/sendmail /usr/lib/sendmail printf \a sleep 1 printf \a sleep 1 printf \a