mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-10-26 00:36:34 +02:00
460 lines
13 KiB
Bash
460 lines
13 KiB
Bash
#!/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 -E "AlmaLinux-8|AlmaLinux-9|AlmaLinux-10" /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, AlmaLinux 9, AlmaLinux 10, 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
|