File: //proc/676643/root/usr/local/CyberCP/cyberpanel_utility.sh
#!/bin/bash
#CyberPanel utility script
export LC_CTYPE=en_US.UTF-8
SUDO_TEST=$(set)
BRANCH_NAME="stable"
GIT_URL="github.com/usmannasir/cyberpanel"
GIT_CONTENT_URL="raw.githubusercontent.com/usmannasir/cyberpanel"
check_OS() {
if [[ ! -f /etc/os-release ]] ; then
echo -e "Unable to detect the operating system...\n"
exit
fi
if grep -q -E "CentOS Linux 7|CentOS Linux 8|CentOS Stream" /etc/os-release ; then
Server_OS="CentOS"
elif grep -q "Red Hat Enterprise Linux" /etc/os-release ; then
Server_OS="RedHat"
elif grep -q "AlmaLinux-8" /etc/os-release ; then
Server_OS="AlmaLinux"
elif grep -q -E "CloudLinux 7|CloudLinux 8" /etc/os-release ; then
Server_OS="CloudLinux"
elif grep -q -E "Ubuntu 18.04|Ubuntu 20.04|Ubuntu 20.10|Ubuntu 22.04" /etc/os-release ; then
Server_OS="Ubuntu"
elif grep -q -E "Rocky Linux" /etc/os-release ; then
Server_OS="RockyLinux"
elif grep -q -E "openEuler 20.03|openEuler 22.03" /etc/os-release ; then
Server_OS="openEuler"
else
echo -e "Unable to detect your system..."
echo -e "\nCyberPanel is supported on x86_64 based Ubuntu 18.04, Ubuntu 20.04, Ubuntu 20.10, Ubuntu 22.04, CentOS 7, CentOS 8, AlmaLinux 8, RockyLinux 8, CloudLinux 7, CloudLinux 8, openEuler 20.03, openEuler 22.03...\n"
exit
fi
Server_OS_Version=$(grep VERSION_ID /etc/os-release | awk -F[=,] '{print $2}' | tr -d \" | head -c2 | tr -d . )
#to make 20.04 display as 20
echo -e "System: $Server_OS $Server_OS_Version detected...\n"
if [[ $Server_OS = "CloudLinux" ]] || [[ "$Server_OS" = "AlmaLinux" ]] || [[ "$Server_OS" = "RockyLinux" ]] || [[ "$Server_OS" = "RedHat" ]]; then
Server_OS="CentOS"
#CloudLinux gives version id like 7.8, 7.9, so cut it to show first number only
#treat CloudLinux, Rocky and Alma as CentOS
fi
}
set_watchdog() {
echo -e "\nPlease choose:"
echo -e "\n1. Install/Update WatchDog."
echo -e "\n2. Start or Check WatchDog."
echo -e "\n3. Kill WatchDog."
echo -e "\n4. Back to Main Menu."
echo -e "\n"
printf "%s" "Please enter number [1-4]: "
read TMP_YN
if [[ $TMP_YN == "1" ]] ; then
if [[ -f /etc/cyberpanel/watchdog.sh ]] ; then
bash /etc/cyberpanel/watchdog.sh kill
fi
rm -f /etc/cyberpanel/watchdog.sh
rm -f /usr/local/bin/watchdog
wget -O /etc/cyberpanel/watchdog.sh https://$GIT_CONTENT_URL/$BRANCH_NAME/CPScripts/watchdog.sh
chmod 700 /etc/cyberpanel/watchdog.sh
ln -s /etc/cyberpanel/watchdog.sh /usr/local/bin/watchdog
echo -e "\nWatchDog has been installed/updated..."
watchdog status
set_watchdog
elif [[ $TMP_YN == "2" ]] ; then
if [[ -f /etc/cyberpanel/watchdog.sh ]] ; then
watchdog status
exit
else
echo -e "\nYou don't have WatchDog installed, please install it first..."
set_watchdog
fi
elif [[ $TMP_YN == "3" ]] ; then
if [[ -f /etc/cyberpanel/watchdog.sh ]] ; then
echo -e "\n"
watchdog kill
exit
else
echo -e "\nYou don't have WatchDog installed, please install it first..."
set_watchdog
fi
elif [[ $TMP_YN == "4" ]] ; then
main_page
else
echo -e "\nPlease enter correct number..."
exit
fi
}
check_return() {
#check previous command result , 0 = ok , non-0 = something wrong.
if [[ $? -eq "0" ]] ; then
:
else
echo -e "\ncommand failed, exiting..."
exit
fi
}
self_check() {
echo -e "\nChecking Cyberpanel Utility update..."
SUM=$(md5sum /usr/bin/cyberpanel_utility)
SUM1=${SUM:0:32}
#get md5sum of local file
rm -f /usr/local/CyberPanel/cyberpanel_utility.sh
wget -q -O /usr/local/CyberPanel/cyberpanel_utility.sh https://cyberpanel.sh/misc/cyberpanel_utility.sh
chmod 600 /usr/local/CyberPanel/cyberpanel_utility.sh
SUM=$(md5sum /usr/local/CyberPanel/cyberpanel_utility.sh)
SUM2=${SUM:0:32}
#get md5sum of remote file.
if [[ $SUM1 == $SUM2 ]] ; then
echo -e "\nCyberPanel Utility Script is up to date...\n"
else
local_string=$(head -2 /usr/bin/cyberpanel_utility)
remote_string=$(head -2 /usr/local/CyberPanel/cyberpanel_utility.sh)
#check file content before replacing itself in case failed to download the file.
if [[ $local_string == $remote_string ]] ; then
echo -e "\nUpdating CyberPanel Utility Script..."
rm -f /usr/bin/cyberpanel_utility
mv /usr/local/CyberPanel/cyberpanel_utility.sh /usr/bin/cyberpanel_utility
chmod 700 /usr/bin/cyberpanel_utility
echo -e "\nCyberPanel Utility update compelted..."
echo -e "\nPlease execute it again..."
exit
else
echo -e "\nFailed to fetch server file..."
echo -e "\nKeep using local script..."
fi
fi
rm -f /usr/local/CyberPanel/cyberpanel_utility.sh
}
cyberpanel_upgrade() {
SERVER_COUNTRY="unknow"
SERVER_COUNTRY=$(curl --silent --max-time 5 https://cyberpanel.sh/?country)
if [[ ${#SERVER_COUNTRY} == "2" ]] || [[ ${#SERVER_COUNTRY} == "6" ]] ; then
echo -e "\nChecking server..."
else
echo -e "\nChecking server..."
SERVER_COUNTRY="unknow"
fi
if [[ $SERVER_COUNTRY == "CN" ]] ; then
GIT_URL="gitee.com/qtwrk/cyberpanel"
GIT_CONTENT_URL="gitee.com/qtwrk/cyberpanel/raw"
fi
#echo -e "CyberPanel Upgrade will start in 10 seconds"
#echo -e "If you want to cancel, please press CTRL + C to cancel it"
#sleep 10
echo -e "CyberPanel upgrading..."
rm -f /usr/local/cyberpanel_upgrade.sh
wget -O /usr/local/cyberpanel_upgrade.sh -q https://$GIT_CONTENT_URL/${BRANCH_NAME}/cyberpanel_upgrade.sh
chmod 700 /usr/local/cyberpanel_upgrade.sh
/usr/local/cyberpanel_upgrade.sh
rm -f /usr/local/cyberpanel_upgrade.sh
exit
}
show_help() {
echo -e "\nFetching information...\n"
curl --silent https://cyberpanel.sh/misc/faq.sh | sudo -u nobody bash | less -r
exit
}
addons() {
echo -e "\nPlease choose:"
echo -e "\n1. Install Memcached extension for PHP."
echo -e "\n2. Install Memcached server."
echo -e "\n3. Install Redis extension for PHP."
echo -e "\n4. Install Redis server."
echo -e "\n5. Raise phpMyAdmin upload limits."
echo -e "\n6. Back to Main Menu.\n"
printf "%s" "Please enter number [1-6]: "
read TMP_YN
if [[ $TMP_YN == "1" ]] ; then
install_php_memcached
elif [[ $TMP_YN == "2" ]] ; then
install_memcached
elif [[ $TMP_YN == "3" ]]; then
install_php_redis
elif [[ $TMP_YN == "4" ]] ; then
install_redis
elif [[ $TMP_YN == "5" ]] ; then
phpmyadmin_limits
elif [[ $TMP_YN == "6" ]] ; then
main_page
else
echo -e " Please enter the right number [1-6]\n"
exit
fi
}
phpmyadmin_limits() {
echo -e "This will change following parameters for PHP 7.3:"
echo -e "Post Max Size from default 8M to 500M"
echo -e "Upload Max Filesize from default 2M to 500M"
echo -e "Memory Limit from default 128M to 768M"
echo -e "Max Execution Time from default 30 to 600"
echo -e "\nPlease note this will also apply to all sites use PHP 7.3"
printf "%s" "Please confirm to proceed: [Y/n]: "
read TMP_YN
if [[ $TMP_YN == "Y" ]] || [[ $TMP_YN == "y" ]] ; then
if [[ "$SERVER_OS" == "CentOS" ]] || [[ "$SERVER_OS" == "openEuler" ]] ; then
php_ini_path="/usr/local/lsws/lsphp73/etc/php.ini"
fi
if [[ "$SERVER_OS" == "Ubuntu" ]] ; then
php_ini_path="/usr/local/lsws/lsphp73/etc/php/7.3/litespeed/php.ini"
fi
sed -i 's|post_max_size = 8M|post_max_size = 500M|g' $php_ini_path
sed -i 's|upload_max_filesize = 2M|upload_max_filesize = 500M |g' $php_ini_path
sed -i 's|memory_limit = 128M|memory_limit = 768M|g' $php_ini_path
sed -i 's|max_execution_time = 30|max_execution_time = 600|g' $php_ini_path
systemctl restart lscpd
echo "Change applied..."
else
echo -e "Please enter Y or n."
exit
fi
}
install_php_redis() {
if [[ $SERVER_OS == "CentOS" ]] ; then
yum install -y lsphp74-redis lsphp73-redis lsphp72-redis lsphp71-redis lsphp70-redis lsphp56-redis lsphp55-redis lsphp54-redis
fi
if [[ $SERVER_OS == "Ubuntu" ]] ; then
DEBIAN_FRONTEND=noninteractive apt install -y lsphp74-redis lsphp73-redis lsphp72-redis lsphp71-redis lsphp70-redis
fi
if [[ $SERVER_OS == "openEuler" ]] ; then
dnf install -y lsphp74-redis lsphp73-redis lsphp72-redis lsphp71-redis
fi
echo -e "\nRedis extension for PHP has been installed..."
exit
}
install_redis() {
if [[ -f /usr/bin/redis-cli ]] ; then
echo -e "\nRedis is already installed..."
fi
if [[ ! -f /usr/bin/redis-cli ]] && [[ $SERVER_OS == "CentOS" ]] ; then
yum install -y redis
fi
if [[ ! -f /usr/bin/redis-cli ]] && [[ $SERVER_OS == "Ubuntu" ]] ; then
DEBIAN_FRONTEND=noninteractive apt install -y redis
fi
if [[ ! -f /usr/bin/redis-cli ]] && [[ $SERVER_OS == "openEuler" ]] ; then
yum install -y redis6
fi
if ifconfig -a | grep inet6 ; then
echo -e "\n IPv6 detected..."
else
if [[ $SERVER_OS == "Ubuntu" ]] ; then
sed -i 's|bind 127.0.0.1 ::1|bind 127.0.0.1|g' /etc/redis/redis.conf
#remove ipv6 binding to prevent Redis fail to start.
fi
echo -e "\n no IPv6 detected..."
fi
if systemctl is-active --quiet redis ; then
systemctl status redis
else
systemctl enable redis
systemctl start redis
systemctl status redis
fi
}
install_memcached() {
echo -e "\n Would you like to install Memcached or LiteSpeed Mmecached ?"
echo -e "\n 1. LiteSpeed Memcached"
echo -e "\n 2. Memcached"
echo -e "\n 3. Back to Main Menu\n"
printf "%s" "Please enter number [1-3]: "
read TMP_YN
if [[ $TMP_YN == "1" ]] ; then
if systemctl is-active --quiet memcached ; then
echo -e "\nIt seems Memcached server is already running..."
systemctl status memcached
exit
fi
if [[ -f /usr/local/lsmcd/bin/lsmcd ]] ; then
echo -e "\nLiteSpeed Memcached is already installed..."
else
if [[ $SERVER_OS == "CentOS" ]] || [[ $SERVER_OS == "openEuler" ]] ; then
yum groupinstall "Development Tools" -y
yum install autoconf automake zlib-devel openssl-devel expat-devel pcre-devel libmemcached-devel cyrus-sasl* -y
elif [[ $SERVER_OS == "Ubuntu" ]] ; then
DEBIAN_FRONTEND=noninteractive apt install build-essential zlib1g-dev libexpat1-dev openssl libssl-dev libsasl2-dev libpcre3-dev git -y
fi
wget https://cdn.cyberpanel.sh/litespeed/lsmcd.tar.gz
tar xzvf lsmcd.tar.gz
DIR=$(pwd)
cd $DIR/lsmcd
./fixtimestamp.sh
./configure CFLAGS=" -O3" CXXFLAGS=" -O3"
make
make install
cd $DIR
fi
if systemctl is-active --quiet lsmcd ; then
systemctl status lsmcd
else
systemctl enable lsmcd
systemctl start lsmcd
systemctl status lsmcd
fi
elif [[ $TMP_YN == "2" ]] ; then
if systemctl is-active --quiet lsmcd ; then
echo -e "\nIt seems LiteSpeed Memcached server is already running..."
systemctl status lsmcd
exit
fi
if [[ -f /usr/bin/memcached ]] ; then
echo -e "\nMemcached is already installed..."
fi
if [[ ! -f /usr/bin/memcached ]] && [[ $SERVER_OS == "CentOS" ]] ; then
yum install memcached -y
sed -i 's|OPTIONS=""|OPTIONS="-l 127.0.0.1 -U 0"|g' /etc/sysconfig/memcached
#this will disbale UDP and bind to 127.0.0.1 to prevent UDP amplification attack
fi
if [[ ! -f /usr/bin/memcached ]] && [[ $SERVER_OS == "Ubuntu" ]] ; then
DEBIAN_FRONTEND=noninteractive apt install memcached -y
fi
if [[ ! -f /usr/bin/memcached ]] && [[ $SERVER_OS == "openEuler" ]] ; then
yum install memcached -y
sed -i 's|OPTIONS=""|OPTIONS="-l 127.0.0.1 -U 0"|g' /etc/sysconfig/memcached
#this will disbale UDP and bind to 127.0.0.1 to prevent UDP amplification attack
fi
if systemctl is-active --quiet memcached ; then
systemctl status memcached
else
systemctl enable memcached
systemctl start memcached
systemctl status memcached
fi
elif [[ $TMP_YN == "3" ]] ; then
main_page
else
echo -e " Please enter the right number [1-3]\n"
exit
fi
}
install_php_memcached() {
if [[ $SERVER_OS == "CentOS" ]] ; then
yum install -y lsphp74-memcached lsphp73-memcached lsphp72-memcached lsphp71-memcached lsphp70-memcached lsphp56-pecl-memcached lsphp55-pecl-memcached lsphp54-pecl-memcached
fi
if [[ $SERVER_OS == "Ubuntu" ]] ; then
DEBIAN_FRONTEND=noninteractive apt install -y lsphp74-memcached lsphp73-memcached lsphp72-memcached lsphp71-memcached lsphp70-memcached
fi
if [[ $SERVER_OS == "openEuler" ]] ; then
dnf install -y lsphp74-memcached lsphp73-memcached lsphp72-memcached lsphp71-memcached
fi
echo -e "\nMemcached extension for PHP has been installed..."
exit
}
main_page() {
echo -e " CyberPanel Utility Tools \e[31m(beta)\e[39m
1. Upgrade CyberPanel.
2. Addons.
3. WatchDog \e[31m(beta)\e[39m
4. Frequently Asked Question (FAQ)
5. Exit.
"
read -p " Please enter the number[1-5]: " num
echo ""
case "$num" in
1)
cyberpanel_upgrade
;;
2)
addons
;;
3)
set_watchdog
;;
4)
show_help
;;
5)
exit
;;
*)
echo -e " Please enter the right number [1-5]\n"
exit
;;
esac
}
panel_check(){
if [[ ! -f /etc/cyberpanel/machineIP ]] ; then
echo -e "\nCan not detect CyberPanel..."
echo -e "\nExit..."
exit
fi
}
sudo_check() {
echo -e "\nChecking root privileges..."
if echo $SUDO_TEST | grep SUDO > /dev/null ; then
echo -e "\nYou are using SUDO , please run as root user..."
echo -e "\nIf you don't have direct access to root user, please run \e[31msudo su -\e[39m command (do NOT miss the \e[31m-\e[39m at end or it will fail) and then run utility command again."
exit
fi
if [[ $(id -u) != 0 ]] > /dev/null; then
echo -e "\nYou must use root user to use CyberPanel Utility..."
exit
else
echo -e "\nYou are running as root..."
fi
}
sudo_check
panel_check
self_check
check_OS
if [ $# -eq 0 ] ; then
main_page
else
if [[ $1 == "upgrade" ]] || [[ $1 == "-u" ]] || [[ $1 == "--update" ]] || [[ $1 == "--upgrade" ]] || [[ $1 == "update" ]]; then
cyberpanel_upgrade
fi
if [[ $1 == "help" ]] || [[ $1 == "-h" ]] || [[ $1 == "--help" ]] ; then
show_help
exit
fi
echo -e "\nUnrecognized argument..."
exit
fi