689 lines
19 KiB
Bash
689 lines
19 KiB
Bash
#!/bin/sh
|
|
|
|
#This is the installer script. Run this and follow the directions
|
|
|
|
DA_PATH="/usr/local/directadmin"
|
|
DA_BIN="${DA_PATH}/directadmin"
|
|
DA_TQ="${DA_PATH}/data/task.queue"
|
|
DA_SCRIPTS="${DA_PATH}/scripts"
|
|
CB_OPTIONS=${DA_PATH}/custombuild/options.conf
|
|
DA_CRON="${DA_SCRIPTS}/directadmin_cron"
|
|
VIRTUAL="/etc/virtual"
|
|
OS=`uname`
|
|
CBVERSION="2.0"
|
|
DL_SERVER=da-mirror.wpcloud.vn
|
|
BACKUP_DL_SERVER=da-mirror.wpcloud.vn
|
|
if [ -s $CB_OPTIONS ]; then
|
|
DLS=`grep -m1 ^downloadserver $CB_OPTIONS | cut -d= -f2`;
|
|
if [ "${DLS}" != "" ]; then
|
|
DL_SERVER=${DLS}
|
|
fi
|
|
fi
|
|
|
|
CMD_LINE=$1
|
|
|
|
cd ${DA_SCRIPTS}
|
|
|
|
SYSTEMD=no
|
|
SYSTEMDDIR=/etc/systemd/system
|
|
if [ -d ${SYSTEMDDIR} ]; then
|
|
if [ -e /bin/systemctl ] || [ -e /usr/bin/systemctl ]; then
|
|
SYSTEMD=yes
|
|
fi
|
|
fi
|
|
|
|
if [ "$OS" = "FreeBSD" ]; then
|
|
WGET_PATH=/usr/local/bin/wget
|
|
else
|
|
WGET_PATH=/usr/bin/wget
|
|
fi
|
|
WGET_OPTION="--no-dns-cache";
|
|
COUNT=`$WGET_PATH --help | grep -c no-check-certificate`
|
|
if [ "$COUNT" -ne 0 ]; then
|
|
WGET_OPTION="--no-check-certificate ${WGET_OPTION}";
|
|
fi
|
|
|
|
#Create the diradmin user
|
|
createDAbase() {
|
|
mkdir -p ${DA_PATH}
|
|
if [ "${OS}" = "FreeBSD" ]; then
|
|
/usr/sbin/pw groupadd diradmin 2> /dev/null
|
|
/usr/sbin/pw useradd -g diradmin -n diradmin -b ${DA_PATH} -s /sbin/nologin 2> /dev/null
|
|
id diradmin
|
|
if [ $? -ne 0 ]; then
|
|
echo "we've just added the diradmin user.. but id can't seem to find it. Trying pwd_mkdb...";
|
|
pwd_mkdb -p /etc/master.passwd
|
|
id diradmin
|
|
if [ $? -ne 0 ]; then
|
|
echo "After trying the command:"
|
|
echo " pwd_mkdb -p /etc/master.passwd"
|
|
echo ""
|
|
echo "we still cannot find the diradmin user. Aborting."
|
|
exit 1
|
|
fi
|
|
fi
|
|
elif [ -e /etc/debian_version ]; then
|
|
/usr/sbin/adduser --system --group --firstuid 100 --home ${DA_PATH} --no-create-home --disabled-login --force-badname diradmin
|
|
else
|
|
/usr/sbin/useradd -d ${DA_PATH} -r -s /bin/false diradmin 2> /dev/null
|
|
fi
|
|
|
|
chmod -f 755 ${DA_PATH}
|
|
chown -f diradmin:diradmin ${DA_PATH}
|
|
|
|
mkdir -p /var/log/directadmin
|
|
mkdir -p ${DA_PATH}/conf
|
|
chown -f diradmin:diradmin ${DA_PATH}/*
|
|
chown -f diradmin:diradmin /var/log/directadmin
|
|
chmod -f 700 ${DA_PATH}/conf
|
|
chmod -f 700 /var/log/directadmin
|
|
if [ -e /etc/logrotate.d ]; then
|
|
cp $DA_SCRIPTS/directadmin.rotate /etc/logrotate.d/directadmin
|
|
chmod 644 /etc/logrotate.d/directadmin
|
|
fi
|
|
|
|
chown -f diradmin:diradmin ${DA_PATH}/conf/* 2> /dev/null
|
|
chmod -f 600 ${DA_PATH}/conf/* 2> /dev/null
|
|
|
|
mkdir -p /var/log/httpd/domains
|
|
chmod 710 /var/log/httpd/domains
|
|
chmod 710 /var/log/httpd
|
|
|
|
mkdir -p /home/tmp
|
|
chmod -f 1777 /home/tmp
|
|
/bin/chmod 711 /home
|
|
|
|
ULTMP_HC=/usr/lib/tmpfiles.d/home.conf
|
|
if [ -s ${ULTMP_HC} ]; then
|
|
#Q /home 0755 - - -
|
|
if grep -m1 -q '^Q /home 0755 ' ${ULTMP_HC}; then
|
|
perl -pi -e 's#^Q /home 0755 #Q /home 0711 #' ${ULTMP_HC};
|
|
fi
|
|
fi
|
|
|
|
mkdir -p /var/www/html
|
|
chmod 755 /var/www/html
|
|
|
|
SSHROOT=`cat /etc/ssh/sshd_config | grep -c '^AllowUsers '`;
|
|
|
|
if [ $SSHROOT -gt 0 ]
|
|
then
|
|
echo "" >> /etc/ssh/sshd_config
|
|
echo "AllowUsers root" >> /etc/ssh/sshd_config
|
|
chmod 710 /etc/ssh
|
|
fi
|
|
}
|
|
|
|
#After everything else copy the directadmin_cron to /etc/cron.d
|
|
copyCronFile() {
|
|
if [ "$OS" = "FreeBSD" ]; then
|
|
if ! grep -m1 -q 'dataskq' /etc/crontab && [ -s ${DA_CRON} ]; then
|
|
cat ${DA_CRON} | grep -v 'quotaoff' >> /etc/crontab;
|
|
else
|
|
echo "Could not find ${DA_CRON} or it is empty";
|
|
fi
|
|
else
|
|
if [ -s ${DA_CRON} ]; then
|
|
mkdir -p /etc/cron.d
|
|
cp ${DA_CRON} /etc/cron.d/;
|
|
chmod 600 /etc/cron.d/directadmin_cron
|
|
chown root /etc/cron.d/directadmin_cron
|
|
else
|
|
echo "Could not find ${DA_CRON} or it is empty";
|
|
fi
|
|
|
|
#CentOS/RHEL bits
|
|
if [ ! -s /etc/debian_version ]; then
|
|
CRON_BOOT=/etc/init.d/crond
|
|
if [ -d /etc/systemd/system ]; then
|
|
CRON_BOOT=/usr/lib/systemd/system/crond.service
|
|
fi
|
|
|
|
if [ ! -s ${CRON_BOOT} ]; then
|
|
echo ""
|
|
echo "****************************************************************************"
|
|
echo "* Cannot find ${CRON_BOOT}. Ensure you have cronie installed"
|
|
echo " yum install cronie"
|
|
echo "****************************************************************************"
|
|
echo ""
|
|
else
|
|
if [ -d /etc/systemd/system ]; then
|
|
systemctl daemon-reload
|
|
systemctl enable crond.service
|
|
systemctl restart crond.service
|
|
else
|
|
${CRON_BOOT} restart
|
|
/sbin/chkconfig crond on
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
#Copies the startup scripts over to the /etc/rc.d/init.d/ folder
|
|
#and chkconfig's them to enable them on bootup
|
|
copyStartupScripts() {
|
|
if [ "${SYSTEMD}" = "yes" ]; then
|
|
cp -f directadmin.service ${SYSTEMDDIR}/
|
|
cp -f startips.service ${SYSTEMDDIR}/
|
|
chmod 644 ${SYSTEMDDIR}/startips.service
|
|
|
|
systemctl daemon-reload
|
|
|
|
systemctl enable directadmin.service
|
|
systemctl enable startips.service
|
|
else
|
|
if [ "${OS}" = "FreeBSD" ]; then
|
|
BOOT_DIR=/usr/local/etc/rc.d/
|
|
#removed boot.sh, sshd and named from the list, as boot.sh is unused and the other 2 come pre-installed with the system
|
|
if [ ! -s ${BOOT_DIR}/startips ]; then
|
|
cp -f startips ${BOOT_DIR}/startips
|
|
chmod 755 ${BOOT_DIR}/startips
|
|
fi
|
|
if [ ! -s ${BOOT_DIR}/da-popb4smtp ]; then
|
|
echo '#!/bin/sh' > ${BOOT_DIR}/da-popb4smtp
|
|
echo '' >> ${BOOT_DIR}/da-popb4smtp
|
|
echo '. /etc/rc.subr' >> ${BOOT_DIR}/da-popb4smtp
|
|
echo '' >> ${BOOT_DIR}/da-popb4smtp
|
|
echo 'name="da_popb4smtp"' >> ${BOOT_DIR}/da-popb4smtp
|
|
echo 'rcvar="da_popb4smtp_enable"' >> ${BOOT_DIR}/da-popb4smtp
|
|
echo 'command="/usr/local/directadmin/da-popb4smtp"' >> ${BOOT_DIR}/da-popb4smtp
|
|
echo '' >> ${BOOT_DIR}/da-popb4smtp
|
|
echo 'load_rc_config $name' >> ${BOOT_DIR}/da-popb4smtp
|
|
echo ': ${da_popb4smtp_enable:=yes}' >> ${BOOT_DIR}/da-popb4smtp
|
|
echo '' >> ${BOOT_DIR}/da-popb4smtp
|
|
echo 'run_rc_command "$1"' >> ${BOOT_DIR}/da-popb4smtp
|
|
chmod 755 ${BOOT_DIR}/da-popb4smtp
|
|
fi
|
|
if [ ! -s ${BOOT_DIR}/directadmin ]; then
|
|
echo '#!/bin/sh' > ${BOOT_DIR}/directadmin
|
|
echo '' >> ${BOOT_DIR}/directadmin
|
|
echo '. /etc/rc.subr' >> ${BOOT_DIR}/directadmin
|
|
echo '' >> ${BOOT_DIR}/directadmin
|
|
echo 'name="directadmin"' >> ${BOOT_DIR}/directadmin
|
|
echo 'rcvar="directadmin_enable"' >> ${BOOT_DIR}/directadmin
|
|
echo 'pidfile="/var/run/${name}.pid"' >> ${BOOT_DIR}/directadmin
|
|
echo 'command="/usr/local/directadmin/directadmin"' >> ${BOOT_DIR}/directadmin
|
|
echo 'command_args="d"' >> ${BOOT_DIR}/directadmin
|
|
echo '' >> ${BOOT_DIR}/directadmin
|
|
echo 'load_rc_config $name' >> ${BOOT_DIR}/directadmin
|
|
echo ': ${directadmin_enable:=yes}' >> ${BOOT_DIR}/directadmin
|
|
echo '' >> ${BOOT_DIR}/directadmin
|
|
echo 'run_rc_command "$1"' >> ${BOOT_DIR}/directadmin
|
|
chmod 755 ${BOOT_DIR}/directadmin
|
|
fi
|
|
|
|
ERC=/etc/rc.conf
|
|
if [ -e ${ERC} ]; then
|
|
if ! /usr/bin/grep -m1 -q "^named_enable=" ${ERC}; then
|
|
echo 'named_enable="YES"' >> ${ERC}
|
|
else
|
|
perl -pi -e 's/^named_enable=.*/named_enable="YES"/' ${ERC}
|
|
fi
|
|
fi
|
|
else
|
|
cp -f directadmin /etc/init.d/directadmin
|
|
cp -f startips /etc/init.d/startips
|
|
# nothing for debian as non-systemd debian versions are EOL
|
|
if [ ! -s /etc/debian_version ]; then
|
|
/sbin/chkconfig directadmin reset
|
|
/sbin/chkconfig startips reset
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
addUserGroup() {
|
|
if [ ${OS} = "FreeBSD" ]; then
|
|
PW=/usr/sbin/pw
|
|
ADD_UID=
|
|
ADD_GID=
|
|
if [ "${3}" != "" ]; then
|
|
ADD_UID="-u ${3}"
|
|
fi
|
|
if [ "${4}" != "" ]; then
|
|
ADD_GID="-g ${4}"
|
|
fi
|
|
|
|
if ! /usr/bin/grep -q "^${2}:" < /etc/group; then
|
|
${PW} groupadd ${2} ${ADD_GID}
|
|
fi
|
|
if ! /usr/bin/id ${1} > /dev/null; then
|
|
${PW} useradd -g ${2} -n ${1} -s /sbin/nologin ${ADD_UID}
|
|
fi
|
|
elif [ -e /etc/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 -r -s /bin/false ${1}
|
|
fi
|
|
fi
|
|
}
|
|
|
|
#touch exim's file inside /etc/virtual
|
|
touchExim() {
|
|
mkdir -p ${VIRTUAL};
|
|
chown -f mail ${VIRTUAL};
|
|
chgrp -f mail ${VIRTUAL};
|
|
chmod 755 ${VIRTUAL};
|
|
|
|
echo "`hostname -f`" >> ${VIRTUAL}/domains;
|
|
|
|
if [ ! -s ${VIRTUAL}/limit ]; then
|
|
echo "1000" > ${VIRTUAL}/limit
|
|
fi
|
|
if [ ! -s ${VIRTUAL}/limit_unknown ]; then
|
|
echo "0" > ${VIRTUAL}/limit_unknown
|
|
fi
|
|
if [ ! -s ${VIRTUAL}/user_limit ]; then
|
|
echo "200" > ${VIRTUAL}/user_limit
|
|
fi
|
|
|
|
chmod 755 ${VIRTUAL}/*
|
|
|
|
mkdir -p ${VIRTUAL}/usage
|
|
chmod 750 ${VIRTUAL}/usage
|
|
|
|
for i in domains domainowners pophosts blacklist_domains whitelist_from use_rbl_domains bad_sender_hosts bad_sender_hosts_ip blacklist_senders whitelist_domains whitelist_hosts whitelist_hosts_ip whitelist_senders skip_av_domains skip_rbl_domains; do
|
|
touch ${VIRTUAL}/$i;
|
|
chmod 600 ${VIRTUAL}/$i;
|
|
done
|
|
|
|
addUserGroup mail mail 12 12
|
|
chown -f mail:mail ${VIRTUAL}/*;
|
|
}
|
|
|
|
|
|
#get setup data
|
|
doGetInfo() {
|
|
if [ ! -e ./setup.txt ]; then
|
|
./getInfo.sh
|
|
fi
|
|
}
|
|
|
|
getLicense() {
|
|
if [ "${OS}" = "FreeBSD" ] && [ ! -e /usr/local/bin/wget ]; then
|
|
echo "wget not installed, installing it...";
|
|
if [ ! -x /usr/sbin/pkg ]; then
|
|
pkg_add -f ${DA_SCRIPTS}/packages/wget.tgz
|
|
|
|
if [ ! -e /usr/local/bin/wget ]; then
|
|
pkg_add -r wget
|
|
fi
|
|
else
|
|
pkg install -y wget
|
|
fi
|
|
fi
|
|
|
|
if [ -e /root/.skip_get_license ]; then
|
|
echo "/root/.skip_get_license exists. Not downloading license"
|
|
return;
|
|
fi
|
|
|
|
userid=`cat ./setup.txt | grep uid= | cut -d= -f2`;
|
|
liceid=`cat ./setup.txt | grep lid= | cut -d= -f2`;
|
|
ip=`cat ./setup.txt | grep ip= | cut -d= -f2`;
|
|
|
|
LAN=0
|
|
if [ -s /root/.lan ]; then
|
|
LAN=`cat /root/.lan`
|
|
fi
|
|
|
|
$DA_SCRIPTS/getLicense.sh auto
|
|
|
|
if [ $? -ne 0 ]; then
|
|
exit 1;
|
|
fi
|
|
}
|
|
|
|
doSetHostname() {
|
|
HN=`cat ./setup.txt | grep hostname= | cut -d= -f2`;
|
|
|
|
${DA_PATH}/scripts/hostname.sh ${HN}
|
|
|
|
#/sbin/service network restart
|
|
}
|
|
|
|
checkMD5()
|
|
{
|
|
if [ ${OS} = "FreeBSD" ]; then
|
|
MD5SUM=/sbin/md5
|
|
else
|
|
MD5SUM=/usr/bin/md5sum
|
|
fi
|
|
MD5_FILE=$1
|
|
MD5_CHECK=${MD5_FILE}.md5
|
|
|
|
if [ ! -s "${MD5SUM}" ]; then
|
|
echo "Cannot find $MD5SUM to check $MD5_FILE";
|
|
return;
|
|
fi
|
|
|
|
if [ ! -s "${MD5_FILE}" ]; then
|
|
echo "Cannot find ${MD5_FILE} or it is empty";
|
|
return;
|
|
fi
|
|
|
|
if [ ! -s "${MD5_CHECK}" ]; then
|
|
echo "Cannot find ${MD5_CHECK} or it is empty";
|
|
return;
|
|
fi
|
|
|
|
echo "";
|
|
echo -n "Checking MD5sum on $MD5_FILE ... ";
|
|
|
|
LOCAL_MD5=`${MD5SUM} ${MD5_FILE} | cut -d\ -f1`
|
|
CHECK_MD5=`cat ${MD5_CHECK} | cut -d\ -f1`
|
|
|
|
if [ "${LOCAL_MD5}" = "${CHECK_MD5}" ]; then
|
|
echo "Pass";
|
|
else
|
|
echo "Failed. Consider deleting $MD5_FILE and $MD5_CHECK then try again";
|
|
|
|
echo "";
|
|
echo "";
|
|
|
|
sleep 5;
|
|
fi
|
|
}
|
|
|
|
getServices() {
|
|
SERVICES_FILE=${DA_SCRIPTS}/packages/services.tar.gz
|
|
|
|
if [ -s "{$SERVICES_FILE}" ]; then
|
|
if [ -s "${SERVICES_FILE}.md5" ]; then
|
|
checkMD5 ${SERVICES_FILE}
|
|
fi
|
|
|
|
echo "Services file already exists. Assuming its been extracted, skipping...";
|
|
|
|
return;
|
|
fi
|
|
|
|
servfile=`cat ./setup.txt | grep services= | cut -d= -f2`;
|
|
|
|
#get the md5sum
|
|
${WGET_PATH} ${WGET_OPTION} http://${DL_SERVER}/services/${servfile}.md5 -O ${SERVICES_FILE}.md5
|
|
if [ ! -s ${SERVICES_FILE}.md5 ]; then
|
|
${WGET_PATH} ${WGET_OPTION} http://${BACKUP_DL_SERVER}/services/${servfile}.md5 -O ${SERVICES_FILE}.md5
|
|
if [ -s ${SERVICES_FILE}.md5 ]; then
|
|
echo "************************"
|
|
echo "Downloading from ${DL_SERVER} failed. Switching to the functional ${BACKUP_DL_SERVER}"
|
|
echo "************************"
|
|
DL_SERVER=${BACKUP_DL_SERVER}
|
|
else
|
|
${WGET_PATH} ${WGET_OPTION} http://da-mirror.wpcloud.vn/services/${servfile}.md5 -O ${SERVICES_FILE}.md5
|
|
if [ -s ${SERVICES_FILE}.md5 ]; then
|
|
echo "************************"
|
|
echo "Downloading from ${DL_SERVER} and ${BACKUP_DL_SERVER} failed. Switching to the functional da-mirror.wpcloud.vn"
|
|
echo "************************"
|
|
DL_SERVER=da-mirror.wpcloud.vn
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if [ ! -s ${SERVICES_FILE}.md5 ];
|
|
then
|
|
echo "";
|
|
echo "failed to get md5 file: ${SERVICES_FILE}.md5";
|
|
echo "";
|
|
sleep 4;
|
|
fi
|
|
|
|
${WGET_PATH} ${WGET_OPTION} http://${DL_SERVER}/services/${servfile} -O $SERVICES_FILE
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "Error downloading the services file";
|
|
exit 1;
|
|
fi
|
|
|
|
#we have md5, lets use it.
|
|
if [ -s ${SERVICES_FILE}.md5 ]; then
|
|
checkMD5 ${SERVICES_FILE}
|
|
fi
|
|
|
|
echo "Extracting services file...";
|
|
|
|
tar xzf $SERVICES_FILE -C ${DA_SCRIPTS}/packages
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "Error extracting services file";
|
|
exit 1;
|
|
fi
|
|
}
|
|
|
|
./doChecks.sh
|
|
if [ $? -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
echo "Chạy doGetInfo"
|
|
doGetInfo
|
|
echo "Chạy doSetHostname"
|
|
doSetHostname
|
|
echo "Chạy createDAbase"
|
|
createDAbase
|
|
echo "Chạy copyStartupScripts"
|
|
copyStartupScripts
|
|
echo "Chạy touchExim"
|
|
#copyCronFile #moved lower, after custombuild, march 7, 2011
|
|
touchExim
|
|
echo "Chạy ./fstab.sh"
|
|
./fstab.sh
|
|
|
|
echo "Chạy ${DA_SCRIPTS}/cron_deny.sh"
|
|
${DA_SCRIPTS}/cron_deny.sh
|
|
|
|
echo "Chạy getLicense"
|
|
getLicense
|
|
#getServices
|
|
|
|
if [ ! -e ${DA_PATH}/custombuild/options.conf ] && [ -e /etc/redhat-release ] && [ ! -e /etc/init.d/xinetd ] && [ -e /usr/bin/yum ]; then
|
|
yum -y install xinetd
|
|
/sbin/chkconfig xinetd on
|
|
/sbin/service xinetd start
|
|
fi
|
|
|
|
cd ${DA_SCRIPTS}
|
|
cp -f ${DA_SCRIPTS}/redirect.php /var/www/html/redirect.php
|
|
|
|
#CB should install pure-ftpd without issues
|
|
#if [ -s ${DA_SCRIPTS}/proftpd.sh ]; then
|
|
# ${DA_SCRIPTS}/proftpd.sh
|
|
#fi
|
|
|
|
#Clean up FTP env
|
|
#Get out of here! We don't want any of this (wu-ftpd)!
|
|
if [ "${OS}" = "FreeBSD" ]; then
|
|
perl -pi -e 's/^ftp/#ftp/' /etc/inetd.conf
|
|
killall -HUP inetd
|
|
elif [ -s /etc/debian_version ]; then
|
|
dpkg -r --force-all gadmin-proftpd gforge-ftp-proftpd gproftpd proftpd-basic proftpd-doc proftpd-mod-ldap proftpd-mod-mysql proftpd-mod-pgsql pure-ftpd pure-ftpd-common 2> /dev/null
|
|
dpkg -P gadmin-proftpd gforge-ftp-proftpd gproftpd proftpd-basic proftpd-doc proftpd-mod-ldap proftpd-mod-mysql proftpd-mod-pgsql pure-ftpd pure-ftpd-common 2> /dev/null
|
|
else
|
|
rpm -e --nodeps wu-ftp 2> /dev/null
|
|
rpm -e --nodeps wu-ftpd 2> /dev/null
|
|
rpm -e --nodeps anonftp 2> /dev/null
|
|
rpm -e --nodeps pure-ftpd 2> /dev/null
|
|
rpm -e --nodeps vsftpd 2> /dev/null
|
|
rpm -e --nodeps psa-proftpd 2> /dev/null
|
|
rpm -e --nodeps psa-proftpd-xinetd 2> /dev/null
|
|
rpm -e --nodeps psa-proftpd-start 2> /dev/null
|
|
rm -f /etc/xinetd.d/proftpd
|
|
rm -f /etc/xinetd.d/wu-ftpd.rpmsave
|
|
rm -f /etc/xinetd.d/wu-ftpd
|
|
rm -f /etc/xinetd.d/ftp_psa
|
|
rm -f /etc/xinetd.d/gssftp
|
|
rm -f /etc/xinetd.d/xproftpd
|
|
fi
|
|
killall -9 pure-ftpd 2> /dev/null > /dev/null
|
|
rm -f /usr/local/sbin/pure-ftpd 2> /dev/null > /dev/null
|
|
|
|
#while we're doing it, lets get rid of pop stuff too
|
|
rm -f /etc/xinetd.d/pop*
|
|
|
|
#in case they it still holds port 21
|
|
if [ -s /etc/init.d/xinetd ] && [ "${SYSTEMD}" = "no" ]; then
|
|
/sbin/service xinetd restart
|
|
fi
|
|
if [ -s /usr/lib/systemd/system/xinetd.service ] && [ "${SYSTEMD}" = "yes" ]; then
|
|
systemctl restart xinetd.service
|
|
fi
|
|
|
|
if [ -s ${DA_SCRIPTS}/majordomo.sh ]; then
|
|
cd packages
|
|
tar xzf majordomo-*.tar.gz
|
|
cd ..
|
|
#${DA_SCRIPTS}/majordomo.sh
|
|
fi
|
|
|
|
echo "Chạy ${DA_SCRIPTS}/sysbk.sh"
|
|
${DA_SCRIPTS}/sysbk.sh
|
|
#ncftp not needed anymore by default: https://www.directadmin.com/features.php?id=2488
|
|
#if [ ! -e "/usr/bin/ncftpput" ]; then
|
|
# ${DA_SCRIPTS}/ncftp.sh
|
|
#fi
|
|
|
|
if [ "${OS}" != "FreeBSD" ]; then
|
|
if grep -m1 -q '^adminname=' ./setup.txt; then
|
|
ADMINNAME=`grep -m1 '^adminname=' ./setup.txt | cut -d= -f2`
|
|
/usr/sbin/userdel -r ${ADMINNAME}
|
|
rm -rf ${DA_PATH}/data/users/${ADMINNAME}
|
|
fi
|
|
fi
|
|
|
|
# Install CustomBuild
|
|
cd ${DA_PATH}
|
|
${WGET_PATH} ${WGET_OPTION} -O custombuild.tar.gz http://${DL_SERVER}/services/custombuild/${CBVERSION}/custombuild.tar.gz
|
|
if [ $? -ne 0 ]; then
|
|
${WGET_PATH} ${WGET_OPTION} -O custombuild.tar.gz http://${BACKUP_DL_SERVER}/services/custombuild/${CBVERSION}/custombuild.tar.gz
|
|
if [ $? -ne 0 ]; then
|
|
echo "*** There was an error downloading the custombuild script. ***";
|
|
exit 1;
|
|
fi
|
|
fi
|
|
tar xzf custombuild.tar.gz
|
|
cd custombuild
|
|
echo "Chạy ./build update_script"
|
|
chmod 755 build
|
|
./build update_script
|
|
./build update
|
|
./build all d
|
|
if [ $? -ne 0 ]; then
|
|
copyCronFile
|
|
exit 1
|
|
fi
|
|
|
|
#moved here march 7, 2011
|
|
copyCronFile
|
|
|
|
if [ -s /var/www/html/redirect.php ]; then
|
|
chown webapps:webapps /var/www/html/redirect.php
|
|
fi
|
|
|
|
if [ ! -e /usr/local/bin/php ]; then
|
|
echo "*******************************************"
|
|
echo "*******************************************"
|
|
echo ""
|
|
echo "Cannot find /usr/local/bin/php"
|
|
echo "Please recompile php with custombuild, eg:"
|
|
echo "cd ${DA_PATH}/custombuild"
|
|
echo "./build all d"
|
|
echo ""
|
|
echo "*******************************************"
|
|
echo "*******************************************"
|
|
|
|
exit 1
|
|
fi
|
|
|
|
|
|
cd ${DA_PATH}
|
|
./directadmin i
|
|
RET=$?
|
|
|
|
cd ${DA_PATH}
|
|
./directadmin p
|
|
|
|
perl -pi -e 's/directadmin=OFF/directadmin=ON/' ${DA_PATH}/data/admin/services.status
|
|
|
|
echo "";
|
|
echo "System Security Tips:";
|
|
echo " http://help.directadmin.com/item.php?id=247";
|
|
echo "";
|
|
|
|
DACONF=${DA_PATH}/conf/directadmin.conf
|
|
if [ ! -s $DACONF ]; then
|
|
echo "";
|
|
echo "*********************************";
|
|
echo "*";
|
|
echo "* Cannot find $DACONF";
|
|
echo "* Please see this guide:";
|
|
echo "* http://help.directadmin.com/item.php?id=267";
|
|
echo "*";
|
|
echo "*********************************";
|
|
exit 1;
|
|
fi
|
|
|
|
if [ "${LAN}" = "1" ]; then
|
|
#link things up for the lan.
|
|
cd ${DA_PATH}
|
|
#get the server IP
|
|
IP=`grep -m1 ^ip= ./scripts/setup.txt | cut -d= -f2`;
|
|
LAN_IP=`./scripts/get_main_ip.sh`
|
|
|
|
if [ "${IP}" != "" ] && [ "${LAN_IP}" != "" ]; then
|
|
if [ "${IP}" = "${LAN_IP}" ]; then
|
|
echo "*** scripts/install.sh: Are you sure this is a LAN? The server IP matches the main system IP:${IP}"
|
|
sleep 2;
|
|
else
|
|
#Let us confirm that the LAN IP actually gives us the correct server IP.
|
|
echo "Confirming that '${WGET_PATH} ${WGET_OPTION} --bind-address=${LAN_IP} http://myip.directadmin.com' returns ${IP} ..."
|
|
EXTERNAL_IP=`${WGET_PATH} ${WGET_OPTION} --tries=3 --connect-timeout=6 --timeout=6 --bind-address=${LAN_IP} -q -O - http://myip.directadmin.com 2>&1`
|
|
BIND_RET=$?
|
|
if [ "${BIND_RET}" = "0" ]; then
|
|
#we got the IP WITH the bind
|
|
if [ "${EXTERNAL_IP}" = "${IP}" ]; then
|
|
echo "LAN IP SETUP: Binding to ${LAN_IP} did return the correct IP address. Completing last steps of Auto-LAN setup ..."
|
|
echo "Adding lan_ip=${LAN_IP} to directadmin.conf ..."
|
|
${DA_BIN} set lan_ip ${LAN_IP}
|
|
echo 'action=directadmin&value=restart' >> ${DA_TQ}
|
|
|
|
echo "Linking ${LAN_IP} to ${IP}"
|
|
NETMASK=`grep -m1 ^netmask= ./scripts/setup.txt | cut -d= -f2`;
|
|
echo "action=linked_ips&ip_action=add&ip=${IP}&ip_to_link=${LAN_IP}&apache=yes&dns=no&apply=yes&add_to_ips_list=yes&netmask=${NETMASK}" >> ${DA_TQ}.cb
|
|
${DA_PATH}/dataskq --custombuild
|
|
|
|
echo "Issuing custombuild rewrite_conf to insert ${LAN_IP} into main server VirtualHosts..."
|
|
${DA_PATH}/custombuild/build rewrite_confs
|
|
|
|
echo "LAN IP SETUP: Done."
|
|
else
|
|
echo "*** scripts/install.sh: LAN: when binding to ${LAN_IP}, wget returned external IP ${EXTERNAL_IP}, which is odd."
|
|
echo "Not automatically setting up the directadmin.conf:lan_ip=${LAN_IP}, and not automatically linking ${LAN_IP} to ${IP}"
|
|
sleep 2
|
|
fi
|
|
else
|
|
echo "*** scripts/install.sh: LAN: failed to double check if LAN IP ${LAN_IP} can be used bind for outbond connections"
|
|
if [ "${BIND_RET}" = "4" ]; then
|
|
echo "wget exited with code 4, implying a 'Network Failure', often meaning the --bind-address=${LAN_IP} does not work."
|
|
else
|
|
echo "wget exited with code ${BIND_RET}: please manually try the above wget call or check 'main wget' for info on this EXIT STATUS"
|
|
fi
|
|
echo "Not automatically setting up the directadmin.conf:lan_ip=${LAN_IP}, and not automatically linking ${LAN_IP} to ${IP}"
|
|
sleep 2
|
|
fi
|
|
fi
|
|
else
|
|
if [ "${IP}" = "" ]; then
|
|
echo "The ip= value in the scripts/setup.txt is blank"
|
|
fi
|
|
if [ "${LAN_IP}" = "" ]; then
|
|
echo "The ip returned from scripts/get_main_ip.sh is blank"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
exit ${RET}
|