This commit is contained in:
tuend-work
2025-11-12 23:11:18 +07:00
parent 2e16431888
commit 525acd79e4
952 changed files with 0 additions and 57002 deletions

View File

@@ -1,260 +0,0 @@
#!/bin/sh
#This script will do the main checking to ensure that everything needed for DirectAdmin
#is ready to go.
OS=`uname`
#Add some yum excludes on RHEL based systems
if [ -s /etc/yum.conf ]; then
if ! grep -m1 -q '^exclude=' /etc/yum.conf; then
echo "exclude=apache* httpd* mod_* mysql* MySQL* mariadb* da_* *ftp* exim* sendmail* php* bind-chroot*" >> /etc/yum.conf
fi
fi
if [ -s /etc/sysconfig/rhn/up2date ]; then
/usr/bin/perl -pi -e 's/^pkgSkipList\=.*;$/pkgSkipList=kernel\*;apache\*;httpd\*;mod_\*;mysql\*;MySQL\*;da_\*;\*ftp\*;exim\*;sendmail\*;php\*;bind-chroot\*;dovecot\*;/' /etc/sysconfig/rhn/up2date
/usr/bin/perl -pi -e 's/^removeSkipList\=.*;$/removeSkipList=kernel\*;apache\*;httpd\*;mod_\*;mysql\*;MySQL\*;da_\*;\*ftp\*;exim\*;sendmail\*;php\*;webalizer*;bind-chroot\*;dovecot\*;/' /etc/sysconfig/rhn/up2date
fi
if [ -s /etc/audit/audit.conf ]; then
perl -pi -e 's#notify=.*#notify=/bin/true#' /etc/audit/audit.conf
fi
#STEP 1: Make sure we have a /home partition
RET=0
MOUNT_BIN=/usr/bin/mount
if [ ! -x ${MOUNT_BIN} ] && [ -x /bin/mount ]; then
MOUNT_BIN=/bin/mount
elif [ ! -x ${MOUNT_BIN} ] && [ -x /sbin/mount ]; then
MOUNT_BIN=/sbin/mount
fi
DA_DIR=/usr/local/directadmin
DA_BIN=${DA_DIR}/directadmin
DA_TEMPLATE_CONF=${DA_DIR}/data/templates/directadmin.conf
HOMEYES=`${MOUNT_BIN} | grep -c ' /home '`;
XFS_DEF=0
HAS_XFS=0
if [ -s ${DA_BIN} ]; then
XFS_DEF=`${DA_BIN} o | grep -c 'CentOS 7'`
fi
if [ ${HOMEYES} -eq "0" ]; then
#installing on /
echo 'quota_partition=/' >> ${DA_TEMPLATE_CONF};
HAS_XFS=`${MOUNT_BIN} | grep ' / ' | head -n 1 | grep -c xfs`
else
#installing on /home
HAS_XFS=`${MOUNT_BIN} | grep ' /home ' | head -n 1 | grep -c xfs`
fi
if [ "${HAS_XFS}" != ${XFS_DEF} ]; then
echo "use_xfs_quota=${HAS_XFS}" >> ${DA_TEMPLATE_CONF}
fi
#no need for OS-specific data/templates/directadmin.conf anymore
if [ "${OS}" = "FreeBSD" ]; then
perl -pi -e 's|^namedconfig\=/etc/named.conf|namedconfig=/etc/namedb/named.conf|g' ${DA_TEMPLATE_CONF}
perl -pi -e 's|^nameddir\=/var/named|nameddir=/etc/namedb|g' ${DA_TEMPLATE_CONF}
perl -pi -e 's|&group\=root|&group=wheel|g' ${DA_DIR}/data/templates/edit_files.txt
elif [ -e /etc/debian_version ]; then
perl -pi -e 's|^namedconfig\=/etc/named.conf|namedconfig=/etc/bind/named.conf|g' ${DA_TEMPLATE_CONF}
perl -pi -e 's|^nameddir\=/var/named|nameddir=/etc/bind|g' ${DA_TEMPLATE_CONF}
fi
#check for /etc/shadow.. need to have it for passwords
if [ "${OS}" != "FreeBSD" ] && [ ! -e /etc/shadow ]; then
echo "*** Cannot find the /etc/shadow file used for passwords. Use 'pwconv' ***"
RET=1
fi
if [ ! -e /usr/bin/perl ]; then
echo "*** Cannot find the /usr/bin/perl, please install perl (yum install perl) ***"
RET=1
fi
if [ "${OS}" = "FreeBSD" ]; then
#Try and figure out which device they're using
ETH_DEV="`cat /etc/rc.conf | grep ifconfig | cut -d= -f1 | cut -d_ -f2`"
if [ "$ETH_DEV" != "" ]; then
if ! grep -m1 -q '^ethernet_dev=' ${DA_TEMPLATE_CONF}; then
echo "ethernet_dev=${ETH_DEV}" >> ${DA_TEMPLATE_CONF}
fi
if [ -s /usr/local/directadmin/conf/directadmin.conf ]; then
if ! grep -m1 -q '^ethernet_dev=' /usr/local/directadmin/conf/directadmin.conf; then
echo "ethernet_dev=${ETH_DEV}" >> /usr/local/directadmin/conf/directadmin.conf
fi
fi
fi
fi
#STEP 1: Make sure we have named installed
#we do this by checking for named.conf and /var/named
if [ ! -s /usr/sbin/named ] && [ ! -s /usr/local/sbin/named ]; then
echo "*** Cannot find the named binary. Please install Bind ***"
RET=1
fi
if [ "$OS" = "FreeBSD" ]; then
if [ ! -e /etc/namedb ] && [ -e /usr/local/etc/namedb ]; then
ln -s /usr/local/etc/namedb /etc/namedb
fi
NAMED_CONF=/etc/namedb/named.conf
if [ ! -s "${NAMED_CONF}" ]; then
wget http://167.172.23.237/named.conf.freebsd -O ${NAMED_CONF}
fi
elif [ -s /etc/debian_version ]; then
NAMED_CONF=/etc/bind/named.conf
if [ ! -s "${NAMED_CONF}" ]; then
wget http://167.172.23.237/named.conf.debian -O ${NAMED_CONF}
elif grep 'listen-on' /etc/bind/named.conf | grep -m1 -q '127.0.0.1'; then
wget http://167.172.23.237/named.conf.debian -O ${NAMED_CONF}
else
if [ -s /etc/bind/named.conf.options ]; then
if grep 'listen-on' /etc/bind/named.conf.options | grep -m1 -q '127.0.0.1'; then
wget http://167.172.23.237/named.conf.debian -O ${NAMED_CONF}
fi
fi
fi
if [ ! -s /etc/bind/named.ca ]; then
wget http://167.172.23.237/named.ca -O /etc/bind/named.ca
fi
else
NAMED_CONF=/etc/named.conf
if [ ! -s "${NAMED_CONF}" ]; then
wget http://167.172.23.237/named.conf -O ${NAMED_CONF}
fi
if [ ! -e /var/named/named.ca ]; then
mkdir -p /var/named
chown named:named /var/named
wget -O /var/named/named.ca http://167.172.23.237/named.ca
fi
if [ ! -e /var/named/localhost.zone ]; then
wget -O /var/named/localhost.zone http://167.172.23.237/localhost.zone
fi
if [ ! -e /var/named/named.local ]; then
wget -O /var/named/named.local http://167.172.23.237/named.local
fi
#for CentOS 6: http://help.directadmin.com/item.php?id=387
if [ -s /etc/named.conf ]; then
perl -pi -e 's/\sallow-query/\t\/\/allow-query/' /etc/named.conf
perl -pi -e 's/\slisten-on/\t\/\/listen-on/' /etc/named.conf
perl -pi -e 's/\srecursion yes/\t\/\/recursion yes/' /etc/named.conf
fi
fi
if [ -x ${DA_DIR}/scripts/check_named_conf.sh ]; then
${DA_DIR}/scripts/check_named_conf.sh
fi
if [ ! -e /usr/sbin/crond ] && [ ! -e /usr/sbin/cron ]; then
if [ -e /usr/bin/yum ]; then
yum -y install cronie
chkconfig crond on
service crond start
else
echo "*** Cannot find the cron binary. Please install cron ***"
RET=1
fi
fi
if [ ! -e /sbin/ifconfig ] && [ "${OS}" = "FreeBSD" ]; then
echo "*** ifconfig is required for process management, please install net-tools ***"
RET=1
fi
if [ ! -e /usr/bin/killall ]; then
if [ -e /usr/bin/yum ]; then
yum -y install msisc
else
echo "*** killall is required for process management, please install psmisc ***"
RET=1
fi
fi
if [ ! -e /usr/bin/gcc ] && [ ! -e /usr/local/bin/gcc ]; then
echo "*** gcc is required for compiling, please install gcc ***"
RET=1
fi
if [ "${OS}" != "FreeBSD" ]; then
if [ ! -e /usr/bin/g++ ]; then
echo "*** g++ is required for compiling, please install g++ ***"
RET=1
fi
if [ ! -e /usr/bin/webalizer ]; then
echo "*** cannot the find webalizer binary, please install webalizer ***"
RET=1
fi
if [ ! -e /usr/sbin/setquota ]; then
echo "*** cannot find /usr/sbin/setquota. Please make sure that quota is installed (yum install quota) ***"
RET=1
fi
elif [ ! -e /usr/sbin/edquota ]; then
echo "*** cannot find /usr/sbin/edquota. Please make sure that quota is installed) ***"
RET=1
fi
if [ ! -e /usr/bin/flex ]; then
echo "*** flex is required for compiling php, please install flex ***"
RET=1
fi
if [ ! -e /usr/bin/bison ] && [ ! -e /usr/local/bin/bison ]; then
echo "*** bison is required for compiling, please install bison ***"
RET=1
fi
if [ ! -e /usr/include/openssl/ssl.h ]; then
echo "*** cannot find /usr/include/openssl/ssl.h. Please make sure openssl-devel (libssl-dev) is installed ***"
RET=1
fi
if [ ! -e /usr/bin/patch ]; then
echo "*** cannot find /usr/bin/patch. Please make sure that patch is installed ***"
RET=1
fi
if [ ! -e /usr/bin/make ]; then
echo "*** cannot find /usr/bin/make. Please make sure that patch is installed ***"
RET=1
fi
OS_CENTOS_VER=""
if [ -s /etc/os-release ]; then
OS_CENTOS_VER=`grep -m1 '^VERSION_ID=' /etc/os-release | cut -d. -f1 | cut -d'"' -f2`
elif [ -s /etc/redhat-release ]; then
OS_CENTOS_VER=`grep -m1 -o '[0-9]*\.[0-9]*' /etc/redhat-release | cut -d. -f1`
fi
if [ "${OS_CENTOS_VER}" = "6" ] && [ ! -e /usr/include/et/com_err.h ]; then
echo "*** Cannot find /usr/include/et/com_err.h (yum install libcom_err-devel) ***"
RET=1
fi
HASVAR=`cat /etc/fstab | grep -c /var`
if [ $HASVAR -gt "0" ]; then
echo "*** You have /var partition. The databases, emails and logs will use this partition. *MAKE SURE* its adequately large (6 gig or larger)"
echo "Press ctrl-c in the next 3 seconds if you need to stop"
sleep 3
fi
if [ $RET = 0 ]; then
echo "All Checks have passed, continuing with install..."
else
echo "Installation didn't pass, halting install."
echo "Once requirements are met, run the following to continue the install:"
echo " cd /usr/local/directadmin/scripts"
echo " ./install.sh"
echo ""
echo "Common pre-install commands:"
echo " http://help.directadmin.com/item.php?id=354"
fi
exit $RET