2020-01-16 23:55:54 +01:00
#!/bin/bash
2020-04-26 23:44:58 +05:00
2021-03-09 15:14:48 +01:00
#set -e -o pipefail
#set -x
#set -u
2022-06-25 02:14:01 +08:00
#CyberPanel installer script for CentOS 7, CentOS 8, CloudLinux 7, AlmaLinux 8, RockyLinux 8, Ubuntu 18.04, Ubuntu 20.04, Ubuntu 20.10, openEuler 20.03 and openEuler 22.03
#For whoever may edit this script, please follow:
2021-03-09 15:14:48 +01:00
#Please use Pre_Install_xxx() and Post_Install_xxx() if you want to something respectively before or after the panel installation
#and update below accordingly
#Please use variable/functions name as MySomething or My_Something, and please try not to use too-short abbreviation :)
#Please use On/Off, True/False, Yes/No.
Sudo_Test = $( set )
#for SUDO check
Set_Default_Variables( ) {
2020-01-16 23:55:54 +01:00
2020-01-17 16:01:24 +01:00
export LC_CTYPE = en_US.UTF-8
2021-03-09 15:14:48 +01:00
echo -e "\nFetching latest data from CyberPanel server...\n"
echo -e "This may take few seconds..."
2022-06-23 16:34:05 +10:00
Server_Country = "Unknown"
2021-03-09 15:14:48 +01:00
Server_OS = ""
Server_OS_Version = ""
Server_Provider = 'Undefined'
Temp_Value = $( curl --silent --max-time 30 -4 https://cyberpanel.net/version.txt)
Panel_Version = ${ Temp_Value : 12 : 3 }
Panel_Build = ${ Temp_Value : 25 : 1 }
Branch_Name = " v ${ Panel_Version } . ${ Panel_Build } "
Base_Number = "1.9.3"
Git_User = ""
Git_Content_URL = ""
Git_Clone_URL = ""
MySQL_Version = $( mysql -V | grep -P '\d+.\d+.\d+' -o)
MySQL_Password = $( cat /etc/cyberpanel/mysqlPassword)
2021-03-14 03:58:39 +01:00
LSWS_Latest_URL = "https://cyberpanel.sh/update.litespeedtech.com/ws/latest.php"
2021-08-30 22:44:56 +02:00
LSWS_Tmp = $( curl --silent --max-time 30 -4 " $LSWS_Latest_URL " )
LSWS_Stable_Line = $( echo " $LSWS_Tmp " | grep "LSWS_STABLE" )
2021-03-14 03:58:39 +01:00
LSWS_Stable_Version = $( expr " $LSWS_Stable_Line " : '.*LSWS_STABLE=\(.*\) BUILD .*' )
2021-03-09 15:14:48 +01:00
#grab the LSWS latest stable version.
Debug_Log2 "Starting Upgrade...1"
rm -rf /root/cyberpanel_upgrade_tmp
mkdir -p /root/cyberpanel_upgrade_tmp
cd /root/cyberpanel_upgrade_tmp || exit
}
Debug_Log( ) {
2021-08-30 22:44:56 +02:00
echo -e " \n ${ 1 } = ${ 2 } \n " >> " /var/log/cyberpanel_debug_upgrade_ $( date +"%Y-%m-%d" ) _ ${ Random_Log_Name } .log "
2021-03-09 15:14:48 +01:00
}
Debug_Log2( ) {
echo -e " \n ${ 1 } " >> /var/log/upgradeLogs.txt
}
Check_Root( ) {
echo -e "\nChecking root privileges..."
if echo " $Sudo_Test " | grep SUDO >/dev/null; then
2022-06-23 16:34:05 +10:00
echo -e "\nYou are using SUDO, please run as root user...\n"
2021-03-09 15:14:48 +01:00
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 installation command again."
exit
fi
if [ [ $( id -u) != 0 ] ] >/dev/null; then
2022-06-23 16:34:05 +10:00
echo -e "\nYou must run as root user to install CyberPanel...\n"
echo -e "or run the following command: (do NOT miss the quotes)"
2021-03-09 15:14:48 +01:00
echo -e "\e[31msudo su -c \"sh <(curl https://cyberpanel.sh || wget -O - https://cyberpanel.sh)\"\e[39m"
exit 1
else
2022-06-23 16:34:05 +10:00
echo -e "\nYou are running as root...\n"
2021-03-09 15:14:48 +01:00
fi
}
Check_Server_IP( ) {
echo -e "Checking server location...\n"
Server_Country = $( curl --silent --max-time 10 -4 https://cyberpanel.sh/?country)
if [ [ ${# Server_Country } != "2" ] ] ; then
2022-06-23 16:34:05 +10:00
Server_Country = "Unknown"
2021-03-09 15:14:48 +01:00
fi
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Server_Country" " $Server_Country "
fi
if [ [ " $* " = *"--mirror" * ] ] ; then
Server_Country = "CN"
2022-06-23 16:34:05 +10:00
echo -e "Forced to use mirror server due to --mirror argument...\n"
2021-03-09 15:14:48 +01:00
fi
if [ [ " $Server_Country " = *"CN" * ] ] ; then
Server_Country = "CN"
echo -e "Setting up to use mirror server...\n"
fi
}
Check_OS( ) {
if [ [ ! -f /etc/os-release ] ] ; then
2022-06-23 16:34:05 +10:00
echo -e "Unable to detect the Operating System...\n"
2021-03-09 15:14:48 +01:00
exit
fi
2023-06-06 11:52:00 +05:00
if ! uname -m | grep -qE 'x86_64|aarch64' ; then
echo -e "x86_64 or ARM system is required...\n"
2021-03-09 15:14:48 +01:00
exit
fi
2023-11-22 17:44:02 +01:00
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
2023-11-22 17:45:25 +01:00
Server_OS = "RedHat"
2021-03-09 15:14:48 +01:00
elif grep -q -E "CloudLinux 7|CloudLinux 8" /etc/os-release ; then
Server_OS = "CloudLinux"
2023-01-23 22:11:26 +05:00
elif grep -q -E "Rocky Linux" /etc/os-release ; then
Server_OS = "RockyLinux"
2021-04-21 01:28:26 +02:00
elif grep -q "AlmaLinux-8" /etc/os-release ; then
Server_OS = "AlmaLinux"
2022-09-25 12:10:50 +05:00
elif grep -q -E "Ubuntu 18.04|Ubuntu 20.04|Ubuntu 20.10|Ubuntu 22.04" /etc/os-release ; then
2021-03-09 15:14:48 +01:00
Server_OS = "Ubuntu"
2022-06-25 02:14:01 +08:00
elif grep -q -E "openEuler 20.03|openEuler 22.03" /etc/os-release ; then
Server_OS = "openEuler"
2020-03-07 21:22:53 +01:00
else
2021-03-09 15:14:48 +01:00
echo -e "Unable to detect your system..."
2022-06-25 02:14:01 +08:00
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"
Debug_Log2 "CyberPanel 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... [404]"
2021-03-09 15:14:48 +01:00
exit
fi
2021-04-21 01:28:26 +02:00
Server_OS_Version = $( grep VERSION_ID /etc/os-release | awk -F[ = ,] '{print $2}' | tr -d \" | head -c2 | tr -d . )
2022-06-25 02:14:01 +08:00
#to make 20.04 display as 20, etc.
2021-03-09 15:14:48 +01:00
echo -e " System: $Server_OS $Server_OS_Version detected...\n "
2023-11-22 17:45:25 +01:00
if [ [ $Server_OS = "CloudLinux" ] ] || [ [ " $Server_OS " = "AlmaLinux" ] ] || [ [ " $Server_OS " = "RockyLinux" ] ] || [ [ " $Server_OS " = "RedHat" ] ] ; then
2021-03-09 15:14:48 +01:00
Server_OS = "CentOS"
2022-06-25 02:14:01 +08:00
#CloudLinux gives version id like 7.8, 7.9, so cut it to show first number only
#treat CloudLinux, Rocky and Alma as CentOS
2021-03-09 15:14:48 +01:00
fi
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Server_OS" " $Server_OS $Server_OS_Version "
2020-03-07 21:22:53 +01:00
fi
2021-03-09 15:14:48 +01:00
}
Check_Provider( ) {
if hash dmidecode >/dev/null 2>& 1; then
if [ [ " $( dmidecode -s bios-vendor) " = "Google" ] ] ; then
Server_Provider = "Google Cloud Platform"
elif [ [ " $( dmidecode -s bios-vendor) " = "DigitalOcean" ] ] ; then
Server_Provider = "Digital Ocean"
elif [ [ " $( dmidecode -s system-product-name | cut -c 1-7) " = "Alibaba" ] ] ; then
Server_Provider = "Alibaba Cloud"
elif [ [ " $( dmidecode -s system-manufacturer) " = "Microsoft Corporation" ] ] ; then
Server_Provider = "Microsoft Azure"
elif [ [ -d /usr/local/qcloud ] ] ; then
Server_Provider = "Tencent Cloud"
else
Server_Provider = "Undefined"
fi
else
Server_Provider = 'Undefined'
fi
if [ [ -f /sys/devices/virtual/dmi/id/product_uuid ] ] ; then
if [ [ " $( cut -c 1-3 /sys/devices/virtual/dmi/id/product_uuid) " = 'EC2' ] ] && [ [ -d /home/ubuntu ] ] ; then
Server_Provider = 'Amazon Web Service'
fi
fi
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Server_Provider" " $Server_Provider "
fi
}
Branch_Check( ) {
if [ [ " $1 " = *.*.* ] ] ; then
#check input if it's valid format as X.Y.Z
Output = $( awk -v num1 = " $Base_Number " -v num2 = " ${ 1 //[[ : space : ]]/ } " '
BEGIN {
print "num1" , ( num1 < num2 ? "<" : ">=" ) , "num2"
}
' )
if [ [ $Output = *">=" * ] ] ; then
echo -e "\nYou must use version number higher than 1.9.4"
exit
else
Branch_Name = " v ${ 1 //[[ : space : ]]/ } "
echo -e " \nSet branch name to $Branch_Name ...\n "
fi
else
echo -e "\nPlease input a valid format version number."
exit
fi
}
2020-03-07 22:03:45 +01:00
2021-03-09 15:14:48 +01:00
Check_Return( ) {
#check previous command result , 0 = ok , non-0 = something wrong.
# shellcheck disable=SC2181
if [ [ $? != "0" ] ] ; then
if [ [ -n " $1 " ] ] ; then
echo -e " \n\n\n $1 "
fi
echo -e "above command failed..."
Debug_Log2 "command failed, exiting. For more information read /var/log/installLogs.txt [404]"
if [ [ " $2 " = "no_exit" ] ] ; then
echo -e"\nRetrying..."
else
exit
fi
2020-03-07 21:22:53 +01:00
fi
2021-03-09 15:14:48 +01:00
}
# check command success or not
2020-03-07 21:22:53 +01:00
2021-03-09 15:14:48 +01:00
Regenerate_Cert( ) {
2020-06-10 22:35:52 +05:00
cat <<EOF >/usr/local/CyberCP/cert_conf
2020-03-10 17:23:30 +01:00
[ req]
prompt = no
distinguished_name = cyberpanel
[ cyberpanel]
commonName = www.example.com
countryName = CP
localityName = CyberPanel
organizationName = CyberPanel
organizationalUnitName = CyberPanel
stateOrProvinceName = CP
emailAddress = mail@example.com
name = CyberPanel
surname = CyberPanel
givenName = CyberPanel
initials = CP
dnQualifier = CyberPanel
[ server_exts]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
EOF
2020-06-10 22:35:52 +05:00
if [ [ $1 = = "8090" ] ] ; then
openssl req -x509 -config /usr/local/CyberCP/cert_conf -extensions 'server_exts' -nodes -days 820 -newkey rsa:2048 -keyout /usr/local/lscp/conf/key.pem -out /usr/local/lscp/conf/cert.pem
fi
2020-03-10 17:23:30 +01:00
2020-06-10 22:35:52 +05:00
if [ [ $1 = = "7080" ] ] ; then
if [ [ -f /usr/local/lsws/admin/conf/webadmin.key ] ] ; then
key_path = "/usr/local/lsws/admin/conf/webadmin.key"
cert_path = "/usr/local/lsws/admin/conf/webadmin.crt"
else
key_path = "/usr/local/lsws/admin/conf/cert/admin.key"
cert_path = "/usr/local/lsws/admin/conf/cert/admin.crt"
fi
openssl req -x509 -config /usr/local/CyberCP/cert_conf -extensions 'server_exts' -nodes -days 820 -newkey rsa:2048 -keyout $key_path -out $cert_path
fi
rm -f /usr/local/CyberCP/cert_conf
2020-03-10 17:23:30 +01:00
}
2020-01-16 23:55:54 +01:00
2021-03-09 15:14:48 +01:00
Retry_Command( ) {
# shellcheck disable=SC2034
for i in { 1..50} ;
do
$1 && break || echo -e " \n $1 has failed for $i times\nWait for 3 seconds and try again...\n " ; sleep 3;
done
2020-02-09 13:28:01 +01:00
}
2021-03-09 15:14:48 +01:00
Check_Argument( ) {
if [ [ " $* " = *"--branch " * ] ] || [ [ " $* " = *"-b " * ] ] ; then
Branch_Name = $( echo " $* " | sed -e "s/--branch //" -e "s/--mirror//" -e "s/-b //" )
Branch_Check " $Branch_Name "
fi
2020-01-18 00:11:07 +01:00
}
2021-03-09 15:14:48 +01:00
Pre_Upgrade_Setup_Git_URL( ) {
if [ [ $Server_Country != "CN" ] ] ; then
Git_User = "usmannasir"
Git_Content_URL = " https://raw.githubusercontent.com/ ${ Git_User } /cyberpanel "
Git_Clone_URL = " https://github.com/ ${ Git_User } /cyberpanel.git "
2020-06-10 22:35:52 +05:00
else
2021-03-09 15:14:48 +01:00
Git_User = "qtwrk"
Git_Content_URL = " https://gitee.com/ ${ Git_User } /cyberpanel/raw "
Git_Clone_URL = " https://gitee.com/ ${ Git_User } /cyberpanel.git "
2020-06-10 22:35:52 +05:00
fi
2020-01-17 16:01:24 +01:00
2021-03-09 15:14:48 +01:00
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Git_URL" " $Git_Content_URL "
2020-06-10 22:35:52 +05:00
fi
2020-01-16 23:55:54 +01:00
}
2021-03-09 15:14:48 +01:00
Pre_Upgrade_CentOS7_MySQL( ) {
if [ [ " $MySQL_Version " = "10.1" ] ] ; then
cp /etc/my.cnf /etc/my.cnf.bak
mkdir /etc/cnfbackup
cp -R /etc/my.cnf.d/ /etc/cnfbackup/
2020-02-09 13:28:01 +01:00
2021-03-09 15:14:48 +01:00
yum remove MariaDB-server MariaDB-client galera -y
yum --enablerepo= mariadb -y install MariaDB-server MariaDB-client galera
2020-01-17 16:01:24 +01:00
2021-03-09 15:14:48 +01:00
cp -f /etc/my.cnf.bak /etc/my.cnf
rm -rf /etc/my.cnf.d/
mv /etc/cnfbackup/my.cnf.d /etc/
systemctl enable mysql
systemctl start mysql
mysql_upgrade -uroot -p" $MySQL_Password "
2020-04-29 04:46:01 +05:00
2020-01-16 23:55:54 +01:00
fi
2021-03-09 15:14:48 +01:00
mysql -uroot -p" $MySQL_Password " -e " GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY ' $MySQL_Password ';flush privileges "
}
2020-09-16 13:24:48 +05:00
2021-03-09 15:14:48 +01:00
Pre_Upgrade_Setup_Repository( ) {
if [ [ " $Server_OS " = "CentOS" ] ] ; then
2020-09-16 13:24:48 +05:00
rm -f /etc/yum.repos.d/CyberPanel.repo
2021-03-09 15:14:48 +01:00
rm -f /etc/yum.repos.d/litespeed.repo
if [ [ " $Server_Country " = "CN" ] ] ; then
curl -o /etc/yum.repos.d/litespeed.repo https://cyberpanel.sh/litespeed/litespeed_cn.repo
else
curl -o /etc/yum.repos.d/litespeed.repo https://cyberpanel.sh/litespeed/litespeed.repo
fi
2020-09-16 13:24:48 +05:00
yum clean all
yum update -y
yum autoremove epel-release -y
rm -f /etc/yum.repos.d/epel.repo
rm -f /etc/yum.repos.d/epel.repo.rpmsave
2021-03-09 15:14:48 +01:00
yum autoremove epel-release -y
#all pre-upgrade operation for CentOS both 7/8
2020-09-16 13:24:48 +05:00
2021-03-09 15:14:48 +01:00
if [ [ " $Server_OS_Version " = "7" ] ] ; then
yum install epel-release -y
yum -y install yum-utils
yum -y groupinstall development
rm -f /etc/yum.repos.d/dovecot.repo
rm -f /etc/yum.repos.d/frank.repo
rm -f /etc/yum.repos.d/ius-archive.repo
rm -f /etc/yum.repos.d/ius.repo
rm -f /etc/yum.repos.d/ius-testing.repo
#rm -f /etc/yum.repos.d/lux.repo
rm -f /etc/yum.repos.d/powerdns-auth-*
2020-09-09 13:03:24 +05:00
2021-03-09 15:14:48 +01:00
rm -f /etc/yum.repos.d/MariaDB.repo
rm -f /etc/yum.repos.d/MariaDB.repo.rpmsave
2020-09-09 13:03:24 +05:00
2021-03-09 15:14:48 +01:00
yum erase gf-* -y
2020-09-16 13:24:48 +05:00
2021-03-09 15:14:48 +01:00
rm -f /etc/yum.repos.d/gf.repo
rm -f /etc/yum.repos.d/gf.repo.rpmsave
2020-09-09 13:03:24 +05:00
2021-03-09 15:14:48 +01:00
rm -f /etc/yum.repos.d/copart-restic-epel-7.repo.repo
rm -f /etc/yum.repos.d/copart-restic-epel-7.repo.rpmsave
2020-09-16 13:24:48 +05:00
2021-03-09 15:14:48 +01:00
rm -f /etc/yum.repos.d/ius-archive.repo
rm -f /etc/yum.repos.d/ius.repo
rm -f /etc/yum.repos.d/ius-testing.repo
2020-09-09 13:03:24 +05:00
2021-03-09 15:14:48 +01:00
yum clean all
2020-09-09 13:03:24 +05:00
2021-03-09 15:14:48 +01:00
curl -o /etc/yum.repos.d/powerdns-auth-43.repo https://cyberpanel.sh/repo.powerdns.com/repo-files/centos-auth-43.repo
Check_Return "yum repo" "no_exit"
2020-09-16 13:24:48 +05:00
2021-03-09 15:14:48 +01:00
cat << EOF > /etc/yum.repos.d/MariaDB.repo
2021-08-06 08:31:39 +06:00
# MariaDB 10.4 CentOS repository list - created 2021-08-06 02:01 UTC
2020-09-09 13:03:24 +05:00
# http://downloads.mariadb.org/mariadb/repositories/
[ mariadb]
name = MariaDB
2021-08-06 08:31:39 +06:00
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
2020-09-09 13:03:24 +05:00
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1
EOF
2021-03-09 15:14:48 +01:00
yum install yum-plugin-copr -y
yum copr enable copart/restic -y
rpm -ivh https://cyberpanel.sh/repo.ius.io/ius-release-el7.rpm
if [ [ " $Server_Country " = "CN" ] ] ; then
sed -i 's|http://yum.mariadb.org|https://cyberpanel.sh/yum.mariadb.org|g' /etc/yum.repos.d/MariaDB.repo
sed -i 's|https://yum.mariadb.org/RPM-GPG-KEY-MariaDB|https://cyberpanel.sh/yum.mariadb.org/RPM-GPG-KEY-MariaDB|g' /etc/yum.repos.d/MariaDB.repo
# use MariaDB Mirror
sed -i 's|https://download.copr.fedorainfracloud.org|https://cyberpanel.sh/download.copr.fedorainfracloud.org|g' /etc/yum.repos.d/_copr_copart-restic.repo
sed -i 's|http://repo.iotti.biz|https://cyberpanel.sh/repo.iotti.biz|g' /etc/yum.repos.d/frank.repo
sed -i "s|mirrorlist=http://mirrorlist.ghettoforge.org/el/7/gf/\$basearch/mirrorlist|baseurl=https://cyberpanel.sh/mirror.ghettoforge.org/distributions/gf/el/7/gf/x86_64/|g" /etc/yum.repos.d/gf.repo
sed -i "s|mirrorlist=http://mirrorlist.ghettoforge.org/el/7/plus/\$basearch/mirrorlist|baseurl=https://cyberpanel.sh/mirror.ghettoforge.org/distributions/gf/el/7/plus/x86_64/|g" /etc/yum.repos.d/gf.repo
sed -i 's|https://repo.ius.io|https://cyberpanel.sh/repo.ius.io|g' /etc/yum.repos.d/ius.repo
sed -i 's|http://repo.iotti.biz|https://cyberpanel.sh/repo.iotti.biz|g' /etc/yum.repos.d/lux.repo
sed -i 's|http://repo.powerdns.com|https://cyberpanel.sh/repo.powerdns.com|g' /etc/yum.repos.d/powerdns-auth-43.repo
sed -i 's|https://repo.powerdns.com|https://cyberpanel.sh/repo.powerdns.com|g' /etc/yum.repos.d/powerdns-auth-43.repo
fi
yum install yum-plugin-priorities -y
2020-09-09 13:35:48 +05:00
2021-03-09 15:14:48 +01:00
yum update -y
2020-09-09 13:35:48 +05:00
2021-03-09 15:14:48 +01:00
yum install -y wget strace htop net-tools telnet curl which bc telnet htop libevent-devel gcc libattr-devel xz-devel gpgme-devel curl-devel git socat openssl-devel MariaDB-shared mariadb-devel python36u python36u-pip python36u-devel bind-utils
2020-09-09 13:35:48 +05:00
2021-03-09 15:14:48 +01:00
Pre_Upgrade_CentOS7_MySQL
2020-09-09 13:35:48 +05:00
2021-03-09 15:14:48 +01:00
#all pre-upgrade operation for CentOS 7
elif [ [ " $Server_OS_Version " = "8" ] ] ; then
2022-06-14 13:34:12 +02:00
# cat <<EOF >/etc/yum.repos.d/CentOS-PowerTools-CyberPanel.repo
#[powertools-for-cyberpanel]
#name=CentOS Linux \$releasever - PowerTools
#mirrorlist=http://mirrorlist.centos.org/?release=\$releasever&arch=\$basearch&repo=PowerTools&infra=\$infra
#baseurl=http://mirror.centos.org/\$contentdir/\$releasever/PowerTools/\$basearch/os/
#gpgcheck=1
#enabled=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
#EOF
2022-06-17 20:01:57 +05:00
rm -f /etc/yum.repos.d/CentOS-PowerTools-CyberPanel.repo
2020-09-16 13:24:48 +05:00
2021-03-09 15:14:48 +01:00
if [ [ " $Server_Country " = "CN" ] ] ; then
2021-08-31 14:54:19 +02:00
dnf --nogpg install -y https://cyberpanel.sh/mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el8.noarch.rpm
2021-03-09 15:14:48 +01:00
else
2021-08-31 14:54:19 +02:00
dnf --nogpg install -y https://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el8.noarch.rpm
2020-09-09 13:35:48 +05:00
fi
2021-03-09 15:14:48 +01:00
dnf install epel-release -y
2020-09-09 13:03:24 +05:00
2021-03-09 15:14:48 +01:00
dnf install -y wget strace htop net-tools telnet curl which bc telnet htop libevent-devel gcc libattr-devel xz-devel mariadb-devel curl-devel git platform-python-devel tar socat bind-utils
dnf install gpgme-devel -y
2020-06-10 22:35:52 +05:00
dnf install python3 -y
2021-03-09 15:14:48 +01:00
fi
#all pre-upgrade operation for CentOS 8
2021-03-18 15:26:33 +05:00
elif [ [ " $Server_OS " = "Ubuntu" ] ] ; then
2021-03-09 15:14:48 +01:00
2020-01-16 23:55:54 +01:00
apt update -y
2023-08-18 10:58:30 +05:00
export DEBIAN_FRONTEND = noninteractive ; apt-get -o Dpkg::Options::= "--force-confold" upgrade -y
2022-10-14 13:59:32 +05:00
2022-09-25 12:21:41 +05:00
if [ [ " $Server_OS_Version " = "22" ] ] ; then
DEBIAN_FRONTEND = noninteracitve apt install -y dnsutils net-tools htop telnet libcurl4-gnutls-dev libgnutls28-dev libgcrypt20-dev libattr1 libattr1-dev liblzma-dev libgpgme-dev libcurl4-gnutls-dev libssl-dev nghttp2 libnghttp2-dev idn2 libidn2-dev libidn2-0-dev librtmp-dev libpsl-dev nettle-dev libgnutls28-dev libldap2-dev libgssapi-krb5-2 libk5crypto3 libkrb5-dev libcomerr2 libldap2-dev virtualenv git socat vim unzip zip libmariadb-dev-compat libmariadb-dev
else
DEBIAN_FRONTEND = noninteracitve apt install -y htop telnet libcurl4-gnutls-dev libgnutls28-dev libgcrypt20-dev libattr1 libattr1-dev liblzma-dev libgpgme-dev libmariadbclient-dev libcurl4-gnutls-dev libssl-dev nghttp2 libnghttp2-dev idn2 libidn2-dev libidn2-0-dev librtmp-dev libpsl-dev nettle-dev libgnutls28-dev libldap2-dev libgssapi-krb5-2 libk5crypto3 libkrb5-dev libcomerr2 libldap2-dev virtualenv git dnsutils
fi
2020-01-16 23:55:54 +01:00
DEBIAN_FRONTEND = noninteractive apt install -y python3-pip
2020-06-10 22:35:52 +05:00
DEBIAN_FRONTEND = noninteractive apt install -y build-essential libssl-dev libffi-dev python3-dev
DEBIAN_FRONTEND = noninteractive apt install -y python3-venv
2021-03-09 15:14:48 +01:00
if [ [ " $Server_OS_Version " = "18" ] ] ; then
:
#all pre-upgrade operation for Ubuntu 18
elif [ [ " $Server_OS_Version " = "20" ] ] ; then
2021-03-18 15:20:34 +05:00
# if ! grep -q "focal" /etc/apt/sources.list.d/dovecot.list ; then
# sed -i 's|ce-2.3-latest/ubuntu/bionic bionic main|ce-2.3-latest/ubuntu/focal focal main|g' /etc/apt/sources.list.d/dovecot.list
# rm -rf /etc/dovecot-backup
# cp -r /etc/dovecot /etc/dovecot-backup
# apt update
# DEBIAN_FRONTEND=noninteractive apt -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" remove -y dovecot-mysql dovecot-pop3d dovecot-imapd
# DEBIAN_FRONTEND=noninteractive apt -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install -y dovecot-mysql dovecot-pop3d dovecot-imapd
# systemctl restart dovecot
# fi
#fix ubuntu 20 webmail login issue
rm -f /etc/apt/sources.list.d/dovecot.list
apt update
2021-03-18 15:22:14 +05:00
DEBIAN_FRONTEND = noninteractive DEBIAN_PRIORITY = critical apt -o Dpkg::Options::= "--force-confdef" -o Dpkg::Options::= "--force-confold" upgrade -y
2021-03-09 15:14:48 +01:00
fi
#all pre-upgrade operation for Ubuntu 20
2020-01-16 23:55:54 +01:00
fi
2022-06-25 02:14:01 +08:00
if [ [ " $Server_OS " = "openEuler" ] ] ; then
rm -f /etc/yum.repos.d/CyberPanel.repo
rm -f /etc/yum.repos.d/litespeed.repo
yum clean all
yum update -y
dnf install -y wget strace htop net-tools telnet curl which bc telnet htop libevent-devel gcc libattr-devel xz-devel mariadb-devel curl-devel git python3-devel tar socat bind-utils
dnf install gpgme-devel -y
dnf install python3 -y
fi
#all pre-upgrade operation for openEuler
2021-03-09 15:14:48 +01:00
}
Download_Requirement( ) {
for i in { 1..50} ;
do
wget -O /usr/local/requirments.txt " ${ Git_Content_URL } / ${ Branch_Name } /requirments.txt "
if grep -q "Django==" /usr/local/requirments.txt ; then
break
else
echo -e " \n Requirement list has failed to download for $i times... "
echo -e "Wait for 30 seconds and try again...\n"
sleep 30
fi
done
2022-06-23 16:34:05 +10:00
#special made function for Gitee.com, for whatever reason sometimes it fails to download this file
2021-03-09 15:14:48 +01:00
}
2020-01-16 23:55:54 +01:00
2021-03-09 15:14:48 +01:00
Pre_Upgrade_Required_Components( ) {
if [ " $Server_OS " = "Ubuntu" ] ; then
pip3 install --default-timeout= 3600 virtualenv = = 16.7.9
Check_Return
2020-01-16 23:55:54 +01:00
else
2021-03-09 15:14:48 +01:00
pip3.6 install --default-timeout= 3600 virtualenv = = 16.7.9
Check_Return
2020-01-16 23:55:54 +01:00
fi
2020-06-10 22:35:52 +05:00
if [ [ -f /usr/local/CyberPanel/bin/python2 ] ] ; then
2022-06-23 16:34:05 +10:00
echo -e "\nPython 2 dectected, doing re-setup...\n"
2020-04-11 20:55:39 +05:00
rm -rf /usr/local/CyberPanel/bin
virtualenv -p /usr/bin/python3 --system-site-packages /usr/local/CyberPanel
2021-03-09 15:14:48 +01:00
Check_Return
2020-06-10 22:35:52 +05:00
elif [ [ -d /usr/local/CyberPanel/bin/ ] ] ; then
2022-06-23 16:34:05 +10:00
echo -e "\nNo need to re-setup virtualenv at /usr/local/CyberPanel...\n"
2020-04-11 20:55:39 +05:00
else
2020-04-11 21:06:34 +05:00
echo -e "\nNothing found, need fresh setup...\n"
virtualenv -p /usr/bin/python3 --system-site-packages /usr/local/CyberPanel
2021-03-09 15:14:48 +01:00
Check_Return
fi
# shellcheck disable=SC1091
2020-01-16 23:55:54 +01:00
. /usr/local/CyberPanel/bin/activate
2021-03-09 15:14:48 +01:00
Download_Requirement
if [ [ " $Server_OS " = "CentOS" ] ] ; then
pip3.6 install --default-timeout= 3600 virtualenv = = 16.7.9
Check_Return
pip3.6 install --default-timeout= 3600 --ignore-installed -r /usr/local/requirments.txt
Check_Return
elif [ [ " $Server_OS " = "Ubuntu" ] ] ; then
# shellcheck disable=SC1091
2020-01-16 23:55:54 +01:00
. /usr/local/CyberPanel/bin/activate
2021-03-09 15:14:48 +01:00
Check_Return
pip3 install --default-timeout= 3600 virtualenv = = 16.7.9
Check_Return
pip3 install --default-timeout= 3600 --ignore-installed -r /usr/local/requirments.txt
Check_Return
2022-06-25 02:14:01 +08:00
elif [ [ " $Server_OS " = "openEuler" ] ] ; then
pip3 install --default-timeout= 3600 virtualenv = = 16.7.9
Check_Return
pip3 install --default-timeout= 3600 --ignore-installed -r /usr/local/requirments.txt
Check_Return
2020-01-16 23:55:54 +01:00
fi
2021-03-09 15:14:48 +01:00
#virtualenv -p /usr/bin/python3 --system-site-packages /usr/local/CyberPanel
# Check_Return
wget " ${ Git_Content_URL } / ${ Branch_Name } /plogical/upgrade.py "
2020-04-11 15:53:32 +05:00
2021-03-09 15:14:48 +01:00
if [ [ " $Server_Country " = "CN" ] ] ; then
sed -i 's|git clone https://github.com/usmannasir/cyberpanel|echo git cloned|g' upgrade.py
2020-04-11 15:53:32 +05:00
2021-03-09 15:14:48 +01:00
Retry_Command " git clone ${ Git_Clone_URL } "
Check_Return " git clone ${ Git_Clone_URL } "
2020-04-11 15:51:19 +05:00
2021-03-09 15:14:48 +01:00
# shellcheck disable=SC2086
sed -i 's|https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/install/litespeed/httpd_config.xml|' ${ Git_Content_URL } /${ Branch_Name } '//install/litespeed/httpd_config.xml|g' upgrade.py
sed -i 's|https://cyberpanel.sh/composer.sh|https://gitee.com/qtwrk/cyberpanel/raw/stable/install/composer_cn.sh|g' upgrade.py
fi
}
2020-03-07 21:22:53 +01:00
2021-03-09 15:14:48 +01:00
Pre_Upgrade_Setup_Git_URL( ) {
if [ [ $Server_Country != "CN" ] ] ; then
Git_User = "usmannasir"
Git_Content_URL = " https://raw.githubusercontent.com/ ${ Git_User } /cyberpanel "
Git_Clone_URL = " https://github.com/ ${ Git_User } /cyberpanel.git "
else
Git_User = "qtwrk"
Git_Content_URL = " https://gitee.com/ ${ Git_User } /cyberpanel/raw "
Git_Clone_URL = " https://gitee.com/ ${ Git_User } /cyberpanel.git "
2020-03-07 21:22:53 +01:00
fi
2021-03-09 15:14:48 +01:00
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Git_URL" " $Git_Content_URL "
fi
}
Pre_Upgrade_Branch_Input( ) {
2022-06-23 16:34:05 +10:00
echo -e "\nPress the Enter key to continue with latest version, or enter specific version such as: \e[31m1.9.4\e[39m , \e[31m1.9.5\e[39m ...etc"
echo -e "\nIf nothing is input in 10 seconds, script will proceed with the latest stable version. "
echo -e "\nPlease press the Enter key or specify a version number, or wait for 10 seconds: "
2021-03-09 15:14:48 +01:00
printf "%s" ""
read -r -t 10 Tmp_Input
if [ [ $Tmp_Input = "" ] ] ; then
echo -e " Branch name set to $Branch_Name "
else
Branch_Check " $Tmp_Input "
fi
}
Main_Upgrade( ) {
/usr/local/CyberPanel/bin/python upgrade.py " $Branch_Name "
Check_Return
2020-04-11 15:51:19 +05:00
2020-06-10 22:35:52 +05:00
if [ [ -f /usr/local/CyberCP/bin/python2 ] ] ; then
rm -rf /usr/local/CyberCP/bin
virtualenv -p /usr/bin/python3 /usr/local/CyberCP
2021-03-09 15:14:48 +01:00
Check_Return
2020-06-10 22:35:52 +05:00
elif [ [ -d /usr/local/CyberCP/bin/ ] ] ; then
2022-06-23 16:34:05 +10:00
echo -e "\nNo need to re-setup virtualenv at /usr/local/CyberCP...\n"
2020-04-11 20:55:39 +05:00
else
virtualenv -p /usr/bin/python3 --system-site-packages /usr/local/CyberCP
2021-03-09 15:14:48 +01:00
Check_Return
2020-04-11 15:51:19 +05:00
fi
2021-03-09 15:14:48 +01:00
rm -f /usr/local/requirments.txt
2020-04-26 23:44:58 +05:00
2021-03-09 15:14:48 +01:00
Download_Requirement
2020-11-10 02:20:39 +05:00
2021-03-09 15:14:48 +01:00
if [ " $Server_OS " = "Ubuntu" ] ; then
# shellcheck disable=SC1091
2020-01-16 23:55:54 +01:00
. /usr/local/CyberCP/bin/activate
2021-03-09 15:14:48 +01:00
Check_Return
pip3 install --default-timeout= 3600 --ignore-installed -r /usr/local/requirments.txt
Check_Return
2020-01-16 23:55:54 +01:00
else
2021-03-09 15:14:48 +01:00
# shellcheck disable=SC1091
2020-01-16 23:55:54 +01:00
source /usr/local/CyberCP/bin/activate
2021-03-09 15:14:48 +01:00
Check_Return
pip3.6 install --default-timeout= 3600 --ignore-installed -r /usr/local/requirments.txt
Check_Return
fi
2022-09-25 12:21:41 +05:00
wget https://cyberpanel.sh/www.litespeedtech.com/packages/lsapi/wsgi-lsapi-2.1.tgz
tar xf wsgi-lsapi-2.1.tgz
2022-09-25 12:25:13 +05:00
cd wsgi-lsapi-2.1 || exit
2020-01-16 23:55:54 +01:00
/usr/local/CyberPanel/bin/python ./configure.py
make
2021-03-09 15:14:48 +01:00
rm -f /usr/local/CyberCP/bin/lswsgi
2020-01-16 23:55:54 +01:00
cp lswsgi /usr/local/CyberCP/bin/
2021-03-09 15:14:48 +01:00
}
Post_Upgrade_System_Tweak( ) {
if [ [ " $Server_OS " = "CentOS" ] ] ; then
#for cenots 7/8
if [ [ " $Server_OS_Version " = "7" ] ] ; then
sed -i 's|error_reporting = E_ALL \& ~E_DEPRECATED \& ~E_STRICT|error_reporting = E_ALL \& ~E_DEPRECATED \& ~E_STRICT|g' /usr/local/lsws/{ lsphp72,lsphp73} /etc/php.ini
#fix php.ini & issue
if ! yum list installed lsphp74-devel ; then
yum install -y lsphp74-devel
fi
if [ [ ! -f /usr/local/lsws/lsphp74/lib64/php/modules/zip.so ] ] ; then
if yum list installed libzip-devel >/dev/null 2>& 1 ; then
yum remove -y libzip-devel
fi
yum install -y https://cyberpanel.sh/misc/libzip-0.11.2-6.el7.psychotic.x86_64.rpm
yum install -y https://cyberpanel.sh/misc/libzip-devel-0.11.2-6.el7.psychotic.x86_64.rpm
yum install lsphp74-devel
if [ [ ! -d /usr/local/lsws/lsphp74/tmp ] ] ; then
mkdir /usr/local/lsws/lsphp74/tmp
fi
/usr/local/lsws/lsphp74/bin/pecl channel-update pecl.php.net
/usr/local/lsws/lsphp74/bin/pear config-set temp_dir /usr/local/lsws/lsphp74/tmp
if /usr/local/lsws/lsphp74/bin/pecl install zip ; then
echo "extension=zip.so" >/usr/local/lsws/lsphp74/etc/php.d/20-zip.ini
chmod 755 /usr/local/lsws/lsphp74/lib64/php/modules/zip.so
else
echo -e "\nlsphp74-zip compilation failed..."
fi
#fix old legacy lsphp74-zip issue on centos 7
fi
#for centos 7
elif [ [ " $Server_OS_Version " = "8" ] ] ; then
:
#for centos 8
fi
fi
if [ [ " $Server_OS " = "Ubuntu" ] ] ; then
if ! dpkg -l lsphp74-dev >/dev/null 2>& 1 ; then
apt install -y lsphp74-dev
fi
if [ [ ! -f /usr/sbin/ipset ] ] ; then
ln -s /sbin/ipset /usr/sbin/ipset
fi
#for ubuntu 18/20
if [ [ " $Server_OS_Version " = "18" ] ] ; then
:
#for ubuntu 18
elif [ [ " $Server_OS_Version " = "20" ] ] ; then
:
#for ubuntu 20
fi
fi
2021-03-14 03:58:39 +01:00
sed -i " s|lsws-5.3.8|lsws- $LSWS_Stable_Version |g " /usr/local/CyberCP/serverStatus/serverStatusUtil.py
sed -i " s|lsws-5.4.2|lsws- $LSWS_Stable_Version |g " /usr/local/CyberCP/serverStatus/serverStatusUtil.py
sed -i " s|lsws-5.3.5|lsws- $LSWS_Stable_Version |g " /usr/local/CyberCP/serverStatus/serverStatusUtil.py
if [ [ " $Server_Country " = "CN" ] ] ; then
sed -i 's|https://www.litespeedtech.com/|https://cyberpanel.sh/www.litespeedtech.com/|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py
sed -i 's|http://license.litespeedtech.com/|https://cyberpanel.sh/license.litespeedtech.com/|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py
fi
2020-01-31 11:41:58 +01:00
sed -i 's|python2|python|g' /usr/bin/adminPass
2020-01-16 23:55:54 +01:00
chmod 700 /usr/bin/adminPass
2021-03-17 14:18:02 +01:00
rm -f /usr/bin/php
ln -s /usr/local/lsws/lsphp74/bin/php /usr/bin/php
2020-06-10 22:35:52 +05:00
if [ [ -f /etc/cyberpanel/webadmin_passwd ] ] ; then
chmod 600 /etc/cyberpanel/webadmin_passwd
2020-01-23 22:32:39 +01:00
fi
2021-08-30 22:44:56 +02:00
chown lsadm:lsadm /usr/local/lsws/admin/conf/htpasswd
chmod 600 /usr/local/lsws/admin/conf/htpasswd
2020-06-10 22:35:52 +05:00
if [ [ -f /etc/pure-ftpd/pure-ftpd.conf ] ] ; then
sed -i 's|NoAnonymous no|NoAnonymous yes|g' /etc/pure-ftpd/pure-ftpd.conf
2020-01-20 21:34:25 +01:00
fi
2021-03-09 15:14:48 +01:00
Tmp_Output = $( timeout 3 openssl s_client -connect 127.0.0.1:8090 2>/dev/null)
if echo " $Tmp_Output " | grep -q "mail@example.com" ; then
2020-06-10 22:35:52 +05:00
# it is using default installer generated cert
2021-03-09 15:14:48 +01:00
Regenerate_Cert 8090
2020-03-10 17:23:30 +01:00
fi
2021-03-09 15:14:48 +01:00
Tmp_Output = $( timeout 3 openssl s_client -connect 127.0.0.1:7080 2>/dev/null)
if echo " $Tmp_Output " | grep -q "mail@example.com" ; then
Regenerate_Cert 7080
2020-02-01 17:08:35 +01:00
fi
2021-03-09 15:14:48 +01:00
if [ [ ! -f /usr/bin/cyberpanel_utility ] ] ; then
wget -q -O /usr/bin/cyberpanel_utility https://cyberpanel.sh/misc/cyberpanel_utility.sh
chmod 700 /usr/bin/cyberpanel_utility
2020-02-01 17:08:35 +01:00
fi
2021-03-09 15:14:48 +01:00
if [ [ -f /etc/cyberpanel/watchdog.sh ] ] ; then
watchdog kill
rm -f /etc/cyberpanel/watchdog.sh
rm -f /usr/local/bin/watchdog
wget -O /etc/cyberpanel/watchdog.sh " ${ Git_Content_URL } / ${ Branch_Name } /CPScripts/watchdog.sh "
chmod 700 /etc/cyberpanel/watchdog.sh
ln -s /etc/cyberpanel/watchdog.sh /usr/local/bin/watchdog
watchdog status
fi
2020-06-10 22:35:52 +05:00
2021-03-09 15:14:48 +01:00
rm -f /usr/local/composer.sh
rm -f /usr/local/requirments.txt
2020-01-18 00:11:07 +01:00
2020-11-12 12:23:43 +05:00
chown -R cyberpanel:cyberpanel /usr/local/CyberCP/lib
chown -R cyberpanel:cyberpanel /usr/local/CyberCP/lib64
2020-01-16 23:55:54 +01:00
systemctl restart lscpd
2021-03-09 15:14:48 +01:00
}
2020-02-09 13:28:01 +01:00
2021-03-09 15:14:48 +01:00
Post_Install_Display_Final_Info( ) {
Panel_Port = $( cat /usr/local/lscp/conf/bind.conf)
if [ [ $Panel_Port = "" ] ] ; then
Panel_Port = "8090"
fi
2020-02-09 13:28:01 +01:00
2021-03-09 15:14:48 +01:00
if curl -I -XGET -k " https://127.0.0.1: ${ Panel_Port #* : } " | grep -q "200 OK" ; then
echo "###################################################################"
echo " CyberPanel Upgraded "
echo "###################################################################"
else
2022-06-23 16:34:05 +10:00
echo -e "\nSeems something wrong with upgrade, please check...\n"
2020-09-20 14:13:06 +02:00
fi
2021-03-09 15:14:48 +01:00
rm -rf /root/cyberpanel_upgrade_tmp
}
2020-09-20 14:13:06 +02:00
2021-03-09 15:14:48 +01:00
if [ [ ! -d /etc/cyberpanel ] ] ; then
echo -e "\n\nCan not detect CyberCP..."
exit
fi
2020-04-24 17:31:02 +05:00
2021-03-09 15:14:48 +01:00
if [ [ " $* " = *"--debug" * ] ] ; then
Debug = "On"
2021-08-30 22:44:56 +02:00
Random_Log_Name = $( head /dev/urandom | tr -dc A-Za-z0-9 | head -c 5)
find /var/log -name 'cyberpanel_debug_upgrade_*' -exec rm { } +
echo -e " $( date) " > " /var/log/cyberpanel_debug_upgrade_ $( date +"%Y-%m-%d" ) _ ${ Random_Log_Name } .log "
chmod 600 " /var/log/cyberpanel_debug_upgrade_ $( date +"%Y-%m-%d" ) _ ${ Random_Log_Name } .log "
2021-03-09 15:14:48 +01:00
fi
2020-04-24 17:31:02 +05:00
2021-03-09 15:14:48 +01:00
Set_Default_Variables
2020-04-24 17:31:02 +05:00
2021-03-09 15:14:48 +01:00
Check_Root
Check_Server_IP " $@ "
Check_OS
Check_Provider
Check_Argument " $@ "
if [ [ " $* " != *"--branch " * ] ] && [ [ " $* " != *"-b " * ] ] ; then
Pre_Upgrade_Branch_Input
fi
Pre_Upgrade_Setup_Repository
Pre_Upgrade_Setup_Git_URL
Pre_Upgrade_Required_Components
Main_Upgrade
2020-04-24 17:31:02 +05:00
2021-03-09 15:14:48 +01:00
Post_Upgrade_System_Tweak
2020-04-24 17:31:02 +05:00
2021-03-09 15:14:48 +01:00
Post_Install_Display_Final_Info