HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux simsoft.ro 5.15.0-163-generic #173-Ubuntu SMP Tue Oct 14 17:51:00 UTC 2025 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/local/src/cyberpanel/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 -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