File: //usr/local/src/cPMalScan/install.sh
#!/usr/bin/env bash
#
# cPMalScan Installer by Tijeers.com
#
GREEN='\e[1;32m'
RED='\e[0;31m'
NOCOLOR='\e[0m'
echo -e "${GREEN}Installing cPMalScan${NOCOLOR}"
echo "Check we're running as root"
if [ ! `id -u` = 0 ]; then
echo
echo -e "${RED}ERROR: You must be looged in as root to install cPMalScan ${NOCOLOR}"
exit 1
fi
if [ ! -f /usr/local/cpanel/version ]; then
echo -e "${RED}ERROR: This is not a cPanel Server${NOCOLOR}"
exit 1
fi
/usr/bin/mysqladmin ping| grep 'mysqld is alive' > /dev/null 2>&1
if [ $? != 0 ]
then
echo -e "${RED}ERROR: MySQL Service is not running. cPMalScan requires MySQL ${NOCOLOR}"
exit 1
fi
#Installing required rpm packages
yum --skip-broken -y install inotify-tools dos2unix findutils coreutils
#Core Files
mkdir -v /etc/cPMalScan
rsync -av --exclude-from 'etc/userdatafiles.txt' etc/ /etc/cPMalScan/
chown -R root:root /etc/cPMalScan/
ln -s /etc/cPMalScan/cpmalscan /usr/bin/cpmalscan
chmod -v 755 /etc/cPMalScan/cpmalscan
chmod -v 755 /etc/cPMalScan/update.php
chmod -v 755 /etc/cPMalScan/cpmalscan_daemon.php
chmod -v 755 /etc/cPMalScan/ftp_scanner.php
chmod -v 755 /etc/cPMalScan/cron.php
chmod -v 755 /etc/cPMalScan/modsec_files.php
chmod -v 755 /etc/cPMalScan/upload_parser.php
chmod -v 755 /etc/cPMalScan/scan_all_accounts.php
chmod -v 755 /etc/cPMalScan/fixftpscanner.php
chmod -v 755 /etc/cPMalScan/modsec_scan.php
chmod 755 /etc/cPMalScan/servercheck
mkdir -p /etc/cPMalScan/tmp
mkdir -p /etc/cPMalScan/.tmp
/etc/cPMalScan/servercheck &
if [ ! -f /etc/cPMalScan/ignore_path ]; then
touch /etc/cPMalScan/ignore_path
chmod 644 /etc/cPMalScan
fi
if [ ! -f /etc/cPMalScan/blacklist.md5 ]; then
touch /etc/cPMalScan/blacklist.md5
chmod 644 /etc/cPMalScan/blacklist.md5
fi
if [ ! -f /etc/cPMalScan/whitelist.md5 ]; then
touch /etc/cPMalScan/whitelist.md5
chmod 644 /etc/cPMalScan/whitelist.md5
fi
#WHM
mkdir -v /usr/local/cpanel/whostmgr/cgi/cpmalscan
rsync -av WHM/ /usr/local/cpanel/whostmgr/cgi/cpmalscan/
chown -R root:root /usr/local/cpanel/whostmgr/cgi/cpmalscan
#cPanel
mkdir -v /usr/local/cpanel/base/3rdparty/cpmalscan/
rsync -av cpanel/ /usr/local/cpanel/base/3rdparty/cpmalscan/
chown -R root:root /usr/local/cpanel/base/3rdparty/cpmalscan
#Registration
cp WHM/cpmalscan.png /usr/local/cpanel/whostmgr/docroot/addon_plugins/
/usr/local/cpanel/bin/register_appconfig /usr/local/cpanel/whostmgr/cgi/cpmalscan/cpmalscan.conf
/scripts/install_plugin /usr/local/cpanel/base/3rdparty/cpmalscan/cpmalscan.tar.bz2
mkdir /cpms_quar
mkdir /cpms_quar/apache
chown root:nobody /cpms_quar/apache
chmod 777 /cpms_quar/apache
#Database Setup
DB_PASS=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
mysql -e "create database cpmalscan"
sed -i "s@db_pass.*@db_pass = "$DB_PASS"@g" /etc/cPMalScan/config.ini
if grep -q host /root/.my.cnf ; then
mysql -e "GRANT SELECT, INSERT, DELETE, UPDATE ON cpmalscan.* TO 'cpmalscan'@'%' IDENTIFIED BY '"$DB_PASS"'"
DB_HOST = $(grep host /root/.my.cnf | cut -f2 -d'=')
sed -i "s@db_host.*@db_host = "$DB_HOST"@g" /etc/cPMalScan/config.ini
else
mysql -e "GRANT SELECT, INSERT, DELETE, UPDATE ON cpmalscan.* TO 'cpmalscan'@'localhost' IDENTIFIED BY '"$DB_PASS"'"
fi
mysql cpmalscan < WHM/setup.sql
whmapi1 set_tweaksetting key=phploader value=ioncube
# FTP setup
chmod 755 /etc/cPMalScan/fixftpscanner.php
/etc/cPMalScan/fixftpscanner.php
if [ -e /usr/local/apache/conf/modsec2.user.conf ]; then
cp -a /usr/local/apache/conf/modsec2.user.conf /usr/local/apache/conf/modsec2.user.conf.cpmalscan.`date +%F__%H-%M-%S`
grep -v "modsec2.cpmalscan.conf" /usr/local/apache/conf/modsec2.user.conf > /tmp/cpms.modsec.tmp
cat /tmp/cpms.modsec.tmp > /usr/local/apache/conf/modsec2.user.conf
echo "Include /etc/cPMalScan/modsec2.cpmalscan.conf" >> /usr/local/apache/conf/modsec2.user.conf
rm -f /tmp/cpms.modsec.tmp
fi
if [ -e /etc/apache2/conf.d/modsec/modsec2.user.conf ]; then
cp -a /etc/apache2/conf.d/modsec/modsec2.user.conf /etc/apache2/conf.d/modsec/modsec2.user.conf.cpmalscan.`date +%F__%H-%M-%S`
grep -v "modsec2.cpmalscan.conf" /etc/apache2/conf.d/modsec/modsec2.user.conf > /tmp/cpms.modsec.tmp
cat /tmp/cpms.modsec.tmp > /etc/apache2/conf.d/modsec/modsec2.user.conf
echo "Include /etc/cPMalScan/modsec2.cpmalscan.conf" >> /etc/apache2/conf.d/modsec/modsec2.user.conf
rm -f /tmp/cpms.modsec.tmp
fi
/scripts/restartsrv_httpd
cp /etc/cPMalScan/cron /etc/cron.d/cpmalscan
#Daemon setup
#cat /etc/cPMalScan/init_script.sh > /etc/init.d/cpmalscan
#chmod 755 /etc/init.d/cpmalscan
#chkconfig cpmalscan on
#/etc/init.d/cpmalscan restart
if test `cat /proc/1/comm` = "systemd"
then
if [ -e /etc/init.d/cpmalscan ]; then
chkconfig cpmalscan off
chkconfig cpmalscan --del
rm -fv /etc/init.d/cpmalscan
fi
mkdir -p /etc/systemd/system/
mkdir -p /usr/lib/systemd/system/
cp -avf /etc/cPMalScan/cpmalscan.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable cpmalscan.service > /dev/null 2>&1 &
systemctl restart cpmalscan.service > /dev/null 2>&1 &
else
cp -avf /etc/cPMalScan/init_script.sh /etc/init.d/cpmalscan
chmod -v 755 /etc/init.d/cpmalscan
/sbin/chkconfig cpmalscan on
/etc/init.d/cpmalscan restart > /dev/null 2>&1 &
fi
if [ -f /etc/cagefs/cagefs.mp ]; then
echo "CloudLinux CageFS detected ..."
cp -a /etc/cagefs/cagefs.mp /etc/cagefs/cagefs.mp.cpmalscan.`date +%F__%H-%M-%S`
grep -v "cPMalScan" /etc/cagefs/cagefs.mp > /tmp/cpms.cagefs.tmp
cat /tmp/cpms.cagefs.tmp > /etc/cagefs/cagefs.mp
echo "/etc/cPMalScan" >> /etc/cagefs/cagefs.mp
cagefsctl --remount-all
fi
rm -f /etc/cPMalScan/servercheck
MACHINE_TYPE=`uname -m`
if [ ${MACHINE_TYPE} == 'x86_64' ]; then
#64 bit
cp -avf /etc/cPMalScan/cpmalscan.x86_64 /etc/cPMalScan/cpmalscan
else
# 32-bit stuff here
cp -avf /etc/cPMalScan/cpmalscan.x86 /etc/cPMalScan/cpmalscan
fi
chmod -v 777 /etc/cPMalScan
chmod -v 777 /etc/cPMalScan/db
chmod -v 755 /etc/cPMalScan/cpmalscan
chmod -v 755 /etc/cPMalScan/*.php
/etc/cPMalScan/fixconfig.php
echo -e "${GREEN}Installation Complete.${NOCOLOR}"