From 3504e9a6442ad0c6b95012b46623ed3524750182 Mon Sep 17 00:00:00 2001 From: chris Date: Sun, 11 Oct 2020 12:38:14 -0400 Subject: [PATCH 1/2] fix redirection --- cyberpanel.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cyberpanel.sh b/cyberpanel.sh index 73632af08..a5a265e02 100644 --- a/cyberpanel.sh +++ b/cyberpanel.sh @@ -1378,7 +1378,7 @@ if [[ $VERSION = "ENT" ]] ; then fi fi -systemctl status lsws 2>&1>/dev/null +systemctl status lsws > /dev/null 2>&1 if [[ $? == "0" ]] ; then echo "LSWS service is running..." else From dd3cb8458d9731a0ddf76cae5c9697f78c1b226d Mon Sep 17 00:00:00 2001 From: chris Date: Sun, 11 Oct 2020 12:38:40 -0400 Subject: [PATCH 2/2] ran shfmt --- cyberpanel.sh | 2577 ++++++++++++++++++++++++------------------------- 1 file changed, 1285 insertions(+), 1292 deletions(-) diff --git a/cyberpanel.sh b/cyberpanel.sh index a5a265e02..4cd46ae60 100644 --- a/cyberpanel.sh +++ b/cyberpanel.sh @@ -43,246 +43,248 @@ GIT_CONTENT_URL="raw.githubusercontent.com/usmannasir/cyberpanel" disable_repos() { -if [[ $SERVER_OS == "CentOS" ]] ; then - sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-Base.repo - sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-Debuginfo.repo - sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-Media.repo - sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-Vault.repo - sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-CR.repo - sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-fasttrack.repo - sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-Sources.repo -fi + if [[ $SERVER_OS == "CentOS" ]]; then + sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-Base.repo + sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-Debuginfo.repo + sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-Media.repo + sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-Vault.repo + sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-CR.repo + sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-fasttrack.repo + sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/CentOS-Sources.repo + 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 + #check previous command result , 0 = ok , non-0 = something wrong. + if [[ $? -eq "0" ]]; then + : + else + echo -e "\ncommand failed, exiting..." + exit + fi } install_utility() { -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 -fi + 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 + fi } watchdog_setup() { -if [[ $WATCHDOG == "ON" ]] ; then -wget -O /etc/cyberpanel/watchdog.sh https://$GIT_CONTENT_URL/stable/CPScripts/watchdog.sh -chmod 700 /etc/cyberpanel/watchdog.sh -ln -s /etc/cyberpanel/watchdog.sh /usr/local/bin/watchdog -pid=$(ps aux | grep "watchdog lsws" | grep -v grep | awk '{print $2}') - if [[ "$pid" == "" ]] ; then - nohup watchdog lsws > /dev/null 2>&1 & - fi -echo -e "Checking MariaDB ..." -pid=$(ps aux | grep "watchdog mariadb" | grep -v grep | awk '{print $2}') - if [[ "$pid" == "" ]] ; then - nohup watchdog mariadb > /dev/null 2>&1 & - fi + if [[ $WATCHDOG == "ON" ]]; then + wget -O /etc/cyberpanel/watchdog.sh https://$GIT_CONTENT_URL/stable/CPScripts/watchdog.sh + chmod 700 /etc/cyberpanel/watchdog.sh + ln -s /etc/cyberpanel/watchdog.sh /usr/local/bin/watchdog + pid=$(ps aux | grep "watchdog lsws" | grep -v grep | awk '{print $2}') + if [[ $pid == "" ]]; then + nohup watchdog lsws >/dev/null 2>&1 & + fi + echo -e "Checking MariaDB ..." + pid=$(ps aux | grep "watchdog mariadb" | grep -v grep | awk '{print $2}') + if [[ $pid == "" ]]; then + nohup watchdog mariadb >/dev/null 2>&1 & + fi - if [[ $SERVER_OS == "CentOS" ]] ; then - echo "nohup watchdog lsws > /dev/null 2>&1 & - nohup watchdog mariadb > /dev/null 2>&1 &" >> /etc/rc.d/rc.local - else - echo "nohup watchdog lsws > /dev/null 2>&1 & - nohup watchdog mariadb > /dev/null 2>&1 &" >> /etc/rc.local - fi -echo -e "\n Setting up WatchDog..." -fi + if [[ $SERVER_OS == "CentOS" ]]; then + echo "nohup watchdog lsws > /dev/null 2>&1 & + nohup watchdog mariadb > /dev/null 2>&1 &" >>/etc/rc.d/rc.local + else + echo "nohup watchdog lsws > /dev/null 2>&1 & + nohup watchdog mariadb > /dev/null 2>&1 &" >>/etc/rc.local + fi + echo -e "\n Setting up WatchDog..." + fi } webadmin_passwd() { -if [[ $VERSION == "OLS" ]] ; then - php_command="admin_php" -else - php_command="admin_php5" -fi + if [[ $VERSION == "OLS" ]]; then + php_command="admin_php" + else + php_command="admin_php5" + fi -WEBADMIN_PASS=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 ; echo '') -TEMP=`/usr/local/lsws/admin/fcgi-bin/${php_command} /usr/local/lsws/admin/misc/htpasswd.php ${WEBADMIN_PASS}` -echo "" > /usr/local/lsws/admin/conf/htpasswd -echo "admin:$TEMP" > /usr/local/lsws/admin/conf/htpasswd -echo ${WEBADMIN_PASS} > /etc/cyberpanel/webadmin_passwd -chmod 600 /etc/cyberpanel/webadmin_passwd + WEBADMIN_PASS=$( + head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 + echo '' + ) + TEMP=$(/usr/local/lsws/admin/fcgi-bin/${php_command} /usr/local/lsws/admin/misc/htpasswd.php ${WEBADMIN_PASS}) + echo "" >/usr/local/lsws/admin/conf/htpasswd + echo "admin:$TEMP" >/usr/local/lsws/admin/conf/htpasswd + echo ${WEBADMIN_PASS} >/etc/cyberpanel/webadmin_passwd + chmod 600 /etc/cyberpanel/webadmin_passwd } openvz_change() { -if [[ $VIRT_TYPE == "OpenVZ" ]] ; then - if [[ ! -d /etc/systemd/system/pure-ftpd.service.d ]] ; then - mkdir /etc/systemd/system/pure-ftpd.service.d - echo "[Service] -PIDFile=/run/pure-ftpd.pid" > /etc/systemd/system/pure-ftpd.service.d/override.conf - echo -e "PureFTPd service file modified for OpenVZ..." - fi + if [[ $VIRT_TYPE == "OpenVZ" ]]; then + if [[ ! -d /etc/systemd/system/pure-ftpd.service.d ]]; then + mkdir /etc/systemd/system/pure-ftpd.service.d + echo "[Service] +PIDFile=/run/pure-ftpd.pid" >/etc/systemd/system/pure-ftpd.service.d/override.conf + echo -e "PureFTPd service file modified for OpenVZ..." + fi - if [[ ! -d /etc/systemd/system/lshttpd.service.d ]] ; then - mkdir /etc/systemd/system/lshttpd.service.d - echo "[Service] -PIDFile=/tmp/lshttpd/lshttpd.pid" > /etc/systemd/system/lshttpd.service.d/override.conf - echo -e "LiteSPeed service file modified for OpenVZ..." - fi + if [[ ! -d /etc/systemd/system/lshttpd.service.d ]]; then + mkdir /etc/systemd/system/lshttpd.service.d + echo "[Service] +PIDFile=/tmp/lshttpd/lshttpd.pid" >/etc/systemd/system/lshttpd.service.d/override.conf + echo -e "LiteSPeed service file modified for OpenVZ..." + fi - if [[ ! -d /etc/systemd/system/spamassassin.service.d ]] ; then - mkdir /etc/systemd/system/spamassassin.service.d - echo "[Service] -PIDFile=/run/spamassassin.pid" > /etc/systemd/system/spamassassin.service.d/override.conf - echo -e "SpamAssassin service file modified for OpenVZ..." - fi -fi + if [[ ! -d /etc/systemd/system/spamassassin.service.d ]]; then + mkdir /etc/systemd/system/spamassassin.service.d + echo "[Service] +PIDFile=/run/spamassassin.pid" >/etc/systemd/system/spamassassin.service.d/override.conf + echo -e "SpamAssassin service file modified for OpenVZ..." + fi + fi } check_virtualization() { -echo -e "Checking virtualization type..." -if hostnamectl | grep -q "Virtualization: lxc" ; then - echo -e "\nLXC detected..." - echo -e "CyberPanel does not support LXC" - echo -e "Exiting..." - exit -fi + echo -e "Checking virtualization type..." + if hostnamectl | grep -q "Virtualization: lxc"; then + echo -e "\nLXC detected..." + echo -e "CyberPanel does not support LXC" + echo -e "Exiting..." + exit + fi -if hostnamectl | grep -q "Virtualization: openvz" ; then - echo -e "\nOpenVZ detected..." - VIRT_TYPE="OpenVZ" - openvz_change -fi + if hostnamectl | grep -q "Virtualization: openvz"; then + echo -e "\nOpenVZ detected..." + VIRT_TYPE="OpenVZ" + openvz_change + fi } license_validation() { -CURRENT_DIR=$(pwd) + CURRENT_DIR=$(pwd) -if [ -f /root/cyberpanel-tmp ] ; then - rm -rf /root/cyberpanel-tmp -fi + if [ -f /root/cyberpanel-tmp ]; then + rm -rf /root/cyberpanel-tmp + fi -mkdir /root/cyberpanel-tmp -cd /root/cyberpanel-tmp -wget -q https://$DOWNLOAD_SERVER/litespeed/lsws-$LSWS_STABLE_VER-ent-x86_64-linux.tar.gz -tar xzvf lsws-$LSWS_STABLE_VER-ent-x86_64-linux.tar.gz > /dev/null -cd /root/cyberpanel-tmp/lsws-$LSWS_STABLE_VER/conf -if [[ $LICENSE_KEY == "TRIAL" ]] ; then - wget -q http://license.litespeedtech.com/reseller/trial.key - sed -i "s|writeSerial = open('lsws-5.4.2/serial.no', 'w')|command = 'wget -q --output-document=./lsws-$LSWS_STABLE_VER/trial.key http://license.litespeedtech.com/reseller/trial.key'|g" $CURRENT_DIR/installCyberPanel.py - sed -i 's|writeSerial.writelines(self.serial)|subprocess.call(command, shell=True)|g' $CURRENT_DIR/installCyberPanel.py - sed -i 's|writeSerial.close()||g' $CURRENT_DIR/installCyberPanel.py -else - echo $LICENSE_KEY > serial.no -fi + mkdir /root/cyberpanel-tmp + cd /root/cyberpanel-tmp + wget -q https://$DOWNLOAD_SERVER/litespeed/lsws-$LSWS_STABLE_VER-ent-x86_64-linux.tar.gz + tar xzvf lsws-$LSWS_STABLE_VER-ent-x86_64-linux.tar.gz >/dev/null + cd /root/cyberpanel-tmp/lsws-$LSWS_STABLE_VER/conf + if [[ $LICENSE_KEY == "TRIAL" ]]; then + wget -q http://license.litespeedtech.com/reseller/trial.key + sed -i "s|writeSerial = open('lsws-5.4.2/serial.no', 'w')|command = 'wget -q --output-document=./lsws-$LSWS_STABLE_VER/trial.key http://license.litespeedtech.com/reseller/trial.key'|g" $CURRENT_DIR/installCyberPanel.py + sed -i 's|writeSerial.writelines(self.serial)|subprocess.call(command, shell=True)|g' $CURRENT_DIR/installCyberPanel.py + sed -i 's|writeSerial.close()||g' $CURRENT_DIR/installCyberPanel.py + else + echo $LICENSE_KEY >serial.no + fi -cd /root/cyberpanel-tmp/lsws-$LSWS_STABLE_VER/bin + cd /root/cyberpanel-tmp/lsws-$LSWS_STABLE_VER/bin -if [[ $LICENSE_KEY == "TRIAL" ]] ; then - if ./lshttpd -V |& grep "ERROR" ; then - echo -e "\n\nIt apeears to have some issue with license , please check above result..." - exit - fi - LICENSE_KEY="1111-2222-3333-4444" -else - if ./lshttpd -r |& grep "ERROR" ; then - ./lshttpd -r - echo -e "\n\nIt apeears to have some issue with license , please check above result..." - exit - fi -fi -echo -e "License seems valid..." -cd /root/cyberpanel-tmp -rm -rf lsws-$LSWS_STABLE_VER* -cd $CURRENT_DIR -rm -rf /root/cyberpanel-tmp + if [[ $LICENSE_KEY == "TRIAL" ]]; then + if ./lshttpd -V |& grep "ERROR"; then + echo -e "\n\nIt apeears to have some issue with license , please check above result..." + exit + fi + LICENSE_KEY="1111-2222-3333-4444" + else + if ./lshttpd -r |& grep "ERROR"; then + ./lshttpd -r + echo -e "\n\nIt apeears to have some issue with license , please check above result..." + exit + fi + fi + echo -e "License seems valid..." + cd /root/cyberpanel-tmp + rm -rf lsws-$LSWS_STABLE_VER* + cd $CURRENT_DIR + rm -rf /root/cyberpanel-tmp } -special_change(){ -sed -i 's|cyberpanel.sh|'$DOWNLOAD_SERVER'|g' install.py -sed -i 's|mirror.cyberpanel.net|'$DOWNLOAD_SERVER'|g' install.py -sed -i 's|git clone https://github.com/usmannasir/cyberpanel|echo downloaded|g' install.py +special_change() { + sed -i 's|cyberpanel.sh|'$DOWNLOAD_SERVER'|g' install.py + sed -i 's|mirror.cyberpanel.net|'$DOWNLOAD_SERVER'|g' install.py + sed -i 's|git clone https://github.com/usmannasir/cyberpanel|echo downloaded|g' install.py -#change to CDN first, regardless country -#sed -i 's|http://|https://|g' install.py + #change to CDN first, regardless country + #sed -i 's|http://|https://|g' install.py -if [[ $PROVIDER == "Alibaba Cloud" ]] ; then - if ! grep -q "100.100.2.136" /etc/resolv.conf ; then - echo -e "\nnameserver 100.100.2.136" >> /etc/resolv.conf - fi - if ! grep -q "100.100.2.138" /etc/resolv.conf ; then - echo -e "\nnameserver 100.100.2.138" >> /etc/resolv.conf - fi -else - if ! grep -q "1.1.1.1" /etc/resolv.conf ; then - echo -e "\nnameserver 1.1.1.1" >> /etc/resolv.conf - fi - if ! grep -q "8.8.8.8" /etc/resolv.conf ; then - echo -e "\nnameserver 8.8.8.8" >> /etc/resolv.conf - fi -fi -cp /etc/resolv.conf /etc/resolv.conf-tmp + if [[ $PROVIDER == "Alibaba Cloud" ]]; then + if ! grep -q "100.100.2.136" /etc/resolv.conf; then + echo -e "\nnameserver 100.100.2.136" >>/etc/resolv.conf + fi + if ! grep -q "100.100.2.138" /etc/resolv.conf; then + echo -e "\nnameserver 100.100.2.138" >>/etc/resolv.conf + fi + else + if ! grep -q "1.1.1.1" /etc/resolv.conf; then + echo -e "\nnameserver 1.1.1.1" >>/etc/resolv.conf + fi + if ! grep -q "8.8.8.8" /etc/resolv.conf; then + echo -e "\nnameserver 8.8.8.8" >>/etc/resolv.conf + fi + fi + cp /etc/resolv.conf /etc/resolv.conf-tmp -line1="$(grep -n "f.write('nameserver 8.8.8.8')" installCyberPanel.py | head -n 1 | cut -d: -f1)" -sed -i "${line1}i\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ subprocess.call(command, shell=True)" installCyberPanel.py -sed -i "${line1}i\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ command = 'cat /etc/resolv.conf-tmp > /etc/resolv.conf'" installCyberPanel.py + line1="$(grep -n "f.write('nameserver 8.8.8.8')" installCyberPanel.py | head -n 1 | cut -d: -f1)" + sed -i "${line1}i\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ subprocess.call(command, shell=True)" installCyberPanel.py + sed -i "${line1}i\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ command = 'cat /etc/resolv.conf-tmp > /etc/resolv.conf'" installCyberPanel.py -LATEST_URL="https://update.litespeedtech.com/ws/latest.php" -#LATEST_URL="https://cyberpanel.sh/latest.php" -curl --silent -o /tmp/lsws_latest $LATEST_URL 2>/dev/null -LSWS_STABLE_LINE=`cat /tmp/lsws_latest | grep LSWS_STABLE` -LSWS_STABLE_VER=`expr "$LSWS_STABLE_LINE" : '.*LSWS_STABLE=\(.*\) BUILD .*'` + LATEST_URL="https://update.litespeedtech.com/ws/latest.php" + #LATEST_URL="https://cyberpanel.sh/latest.php" + curl --silent -o /tmp/lsws_latest $LATEST_URL 2>/dev/null + LSWS_STABLE_LINE=$(cat /tmp/lsws_latest | grep LSWS_STABLE) + LSWS_STABLE_VER=$(expr "$LSWS_STABLE_LINE" : '.*LSWS_STABLE=\(.*\) BUILD .*') -if [[ $PROVIDER == "Alibaba Cloud" ]] && [[ $SERVER_OS == "Ubuntu" ]] ; then - mkdir /root/.config - mkdir /root/.config/pip - cat << EOF > /root/.config/pip/pip.conf + if [[ $PROVIDER == "Alibaba Cloud" ]] && [[ $SERVER_OS == "Ubuntu" ]]; then + mkdir /root/.config + mkdir /root/.config/pip + cat </root/.config/pip/pip.conf [global] index-url = https://pypi.python.org/simple/ [install] trusted-host=pypi.python.org EOF - echo -e "\nSet pip repo..." -fi -#seems Alibaba cloud , other than CN , also requires change on ubuntu. + echo -e "\nSet pip repo..." + fi + #seems Alibaba cloud , other than CN , also requires change on ubuntu. -if [[ $SERVER_COUNTRY == "CN" ]] ; then -#line1="$(grep -n "github.com/usmannasir/cyberpanel" install.py | head -n 1 | cut -d: -f1)" -#line2=$((line1 - 1)) -#sed -i "${line2}i\ \ \ \ \ \ \ \ subprocess.call(command, shell=True)" install.py -#sed -i "${line2}i\ \ \ \ \ \ \ \ command = 'tar xzvf cyberpanel-git.tar.gz'" install.py -#sed -i "${line2}i\ \ \ \ \ \ \ \ subprocess.call(command, shell=True)" install.py -#sed -i "${line2}i\ \ \ \ \ \ \ \ command = 'wget cyberpanel.sh/cyberpanel-git.tar.gz'" install.py - sed -i 's|wget http://rpms.litespeedtech.com/debian/|wget --no-check-certificate https://rpms.litespeedtech.com/debian/|g' install.py - sed -i 's|https://repo.powerdns.com/repo-files/centos-auth-42.repo|https://'$DOWNLOAD_SERVER'/powerdns/powerdns.repo|g' installCyberPanel.py - sed -i 's|https://www.rainloop.net/repository/webmail/rainloop-community-latest.zip|https://'$DOWNLOAD_SERVER'/misc/rainloop-community-latest.zip|g' install.py - sed -i 's|rpm -ivh http://rpms.litespeedtech.com/centos/litespeed-repo-1.2-1.el7.noarch.rpm|curl -o /etc/yum.repos.d/litespeed.repo https://'$DOWNLOAD_SERVER'/litespeed/litespeed.repo|g' install.py - sed -i 's|https://copr.fedorainfracloud.org/coprs/copart/restic/repo/epel-7/copart-restic-epel-7.repo|https://'$DOWNLOAD_SERVER'/restic/restic.repo|g' install.py - sed -i 's|yum -y install http://cyberpanel.sh/gf-release-latest.gf.el7.noarch.rpm|wget -O /etc/yum.repos.d/gf.repo https://'$DOWNLOAD_SERVER'/gf-plus/gf.repo|g' install.py - sed -i 's|dovecot-2.3-latest|dovecot-2.3-latest-mirror|g' install.py - sed -i 's|git clone https://github.com/usmannasir/cyberpanel|wget https://cyberpanel.sh/cyberpanel-git.tar.gz \&\& tar xzvf cyberpanel-git.tar.gz|g' install.py - sed -i 's|http://repo.dovecot.org/ce-2.3-latest/centos/$releasever/RPMS/$basearch|https://'$DOWNLOAD_SERVER'/dovecot/|g' install.py - sed -i 's|'$DOWNLOAD_SERVER'|cyberpanel.sh|g' install.py - sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.4.2-ent-x86_64-linux.tar.gz|https://'$DOWNLOAD_SERVER'/litespeed/lsws-'$LSWS_STABLE_VER'-ent-x86_64-linux.tar.gz|g' installCyberPanel.py - sed -i 's|wget -O - https://get.acme.sh \| sh|git clone https://gitee.com/qtwrk/acme.sh.git ; cd acme.sh ; ./acme.sh --install ; cd - ; rm -rf acme.sh|g' install.py - sed -i 's|composer.sh|composer_cn.sh|g' install.py - sed -i 's|yum -y install http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm|wget -O /etc/yum.repos.d/lux.repo https://'$DOWNLOAD_SERVER'/lux/lux.repo|g' install.py + if [[ $SERVER_COUNTRY == "CN" ]]; then + #line1="$(grep -n "github.com/usmannasir/cyberpanel" install.py | head -n 1 | cut -d: -f1)" + #line2=$((line1 - 1)) + #sed -i "${line2}i\ \ \ \ \ \ \ \ subprocess.call(command, shell=True)" install.py + #sed -i "${line2}i\ \ \ \ \ \ \ \ command = 'tar xzvf cyberpanel-git.tar.gz'" install.py + #sed -i "${line2}i\ \ \ \ \ \ \ \ subprocess.call(command, shell=True)" install.py + #sed -i "${line2}i\ \ \ \ \ \ \ \ command = 'wget cyberpanel.sh/cyberpanel-git.tar.gz'" install.py + sed -i 's|wget http://rpms.litespeedtech.com/debian/|wget --no-check-certificate https://rpms.litespeedtech.com/debian/|g' install.py + sed -i 's|https://repo.powerdns.com/repo-files/centos-auth-42.repo|https://'$DOWNLOAD_SERVER'/powerdns/powerdns.repo|g' installCyberPanel.py + sed -i 's|https://www.rainloop.net/repository/webmail/rainloop-community-latest.zip|https://'$DOWNLOAD_SERVER'/misc/rainloop-community-latest.zip|g' install.py + sed -i 's|rpm -ivh http://rpms.litespeedtech.com/centos/litespeed-repo-1.2-1.el7.noarch.rpm|curl -o /etc/yum.repos.d/litespeed.repo https://'$DOWNLOAD_SERVER'/litespeed/litespeed.repo|g' install.py + sed -i 's|https://copr.fedorainfracloud.org/coprs/copart/restic/repo/epel-7/copart-restic-epel-7.repo|https://'$DOWNLOAD_SERVER'/restic/restic.repo|g' install.py + sed -i 's|yum -y install http://cyberpanel.sh/gf-release-latest.gf.el7.noarch.rpm|wget -O /etc/yum.repos.d/gf.repo https://'$DOWNLOAD_SERVER'/gf-plus/gf.repo|g' install.py + sed -i 's|dovecot-2.3-latest|dovecot-2.3-latest-mirror|g' install.py + sed -i 's|git clone https://github.com/usmannasir/cyberpanel|wget https://cyberpanel.sh/cyberpanel-git.tar.gz \&\& tar xzvf cyberpanel-git.tar.gz|g' install.py + sed -i 's|http://repo.dovecot.org/ce-2.3-latest/centos/$releasever/RPMS/$basearch|https://'$DOWNLOAD_SERVER'/dovecot/|g' install.py + sed -i 's|'$DOWNLOAD_SERVER'|cyberpanel.sh|g' install.py + sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.4.2-ent-x86_64-linux.tar.gz|https://'$DOWNLOAD_SERVER'/litespeed/lsws-'$LSWS_STABLE_VER'-ent-x86_64-linux.tar.gz|g' installCyberPanel.py + sed -i 's|wget -O - https://get.acme.sh \| sh|git clone https://gitee.com/qtwrk/acme.sh.git ; cd acme.sh ; ./acme.sh --install ; cd - ; rm -rf acme.sh|g' install.py + sed -i 's|composer.sh|composer_cn.sh|g' install.py + sed -i 's|yum -y install http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm|wget -O /etc/yum.repos.d/lux.repo https://'$DOWNLOAD_SERVER'/lux/lux.repo|g' install.py -# global change for CN , regardless provider and system + # global change for CN , regardless provider and system - if [[ $SERVER_OS == "CentOS" ]] ; then - sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.3.5-ent-x86_64-linux.tar.gz|https://cyberpanel.sh/packages/5.0/lsws-5.3.5-ent-x86_64-linux.tar.gz|g' installCyberPanel.py - fi + if [[ $SERVER_OS == "CentOS" ]]; then + sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.3.5-ent-x86_64-linux.tar.gz|https://cyberpanel.sh/packages/5.0/lsws-5.3.5-ent-x86_64-linux.tar.gz|g' installCyberPanel.py + fi - - if [[ $SERVER_OS == "Ubuntu" ]] ; then - echo $'\n89.208.248.38 rpms.litespeedtech.com\n' >> /etc/hosts - echo -e "Mirror server set..." - if [[ $PROVIDER == "Tencent Cloud" ]] ; then - #tencent cloud and ubuntu system - echo -e "\n Tencent Cloud detected ... bypass default repository" - cp /etc/apt/sources.list /etc/apt/sources.list-backup - #backup original sources list - cat << 'EOF' > /etc/apt/sources.list + if [[ $SERVER_OS == "Ubuntu" ]]; then + echo $'\n89.208.248.38 rpms.litespeedtech.com\n' >>/etc/hosts + echo -e "Mirror server set..." + if [[ $PROVIDER == "Tencent Cloud" ]]; then + #tencent cloud and ubuntu system + echo -e "\n Tencent Cloud detected ... bypass default repository" + cp /etc/apt/sources.list /etc/apt/sources.list-backup + #backup original sources list + cat <<'EOF' >/etc/apt/sources.list deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse @@ -294,114 +296,110 @@ deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted univers deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse EOF - DEBIAN_FRONTEND=noninteractive apt update -y - fi - fi -fi + DEBIAN_FRONTEND=noninteractive apt update -y + fi + fi + fi } - system_tweak() { -number=$(grep -n "127.0.0.1" /etc/hosts | cut -d: -f 1) -my_hostname=$(hostname) + number=$(grep -n "127.0.0.1" /etc/hosts | cut -d: -f 1) + my_hostname=$(hostname) - if [[ ! -z $number ]] ; then - for number2 in $number; - do - string=$(sed "${number2}q;d" /etc/hosts) - if [[ "$string" == *"$my_hostname"* ]] ; then - : - else - new_string="$string $my_hostname" - sed -i "${number2}s/.*/${new_string}/" /etc/hosts - fi - done - else - echo "127.0.0.1 $my_hostname " >> /etc/hosts - fi + if [[ -n $number ]]; then + for number2 in $number; do + string=$(sed "${number2}q;d" /etc/hosts) + if [[ $string == *"$my_hostname"* ]]; then + : + else + new_string="$string $my_hostname" + sed -i "${number2}s/.*/${new_string}/" /etc/hosts + fi + done + else + echo "127.0.0.1 $my_hostname " >>/etc/hosts + fi -#this should address on "sudo: unable to resolve host ..." on Ubuntu , it's not issue but annoying. + #this should address on "sudo: unable to resolve host ..." on Ubuntu , it's not issue but annoying. -if [[ $SERVER_OS == "CentOS" ]] ; then - setenforce 0 - sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config -fi + if [[ $SERVER_OS == "CentOS" ]]; then + setenforce 0 + sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config + fi -if ! grep -q "pid_max" /etc/rc.local; then - if [[ $SERVER_OS == "CentOS" ]] ; then - echo "echo 1000000 > /proc/sys/kernel/pid_max -echo 1 > /sys/kernel/mm/ksm/run" >> /etc/rc.d/rc.local - chmod +x /etc/rc.d/rc.local - else - echo "echo 1000000 > /proc/sys/kernel/pid_max -echo 1 > /sys/kernel/mm/ksm/run" >> /etc/rc.local - chmod +x /etc/rc.local - fi - echo "fs.file-max = 65535" >> /etc/sysctl.conf - sysctl -p > /dev/null - echo "* soft nofile 65535 + if ! grep -q "pid_max" /etc/rc.local; then + if [[ $SERVER_OS == "CentOS" ]]; then + echo "echo 1000000 > /proc/sys/kernel/pid_max +echo 1 > /sys/kernel/mm/ksm/run" >>/etc/rc.d/rc.local + chmod +x /etc/rc.d/rc.local + else + echo "echo 1000000 > /proc/sys/kernel/pid_max +echo 1 > /sys/kernel/mm/ksm/run" >>/etc/rc.local + chmod +x /etc/rc.local + fi + echo "fs.file-max = 65535" >>/etc/sysctl.conf + sysctl -p >/dev/null + echo "* soft nofile 65535 * hard nofile 65535 root soft nofile 65535 root hard nofile 65535 * soft nproc 65535 * hard nproc 65535 root soft nproc 65535 -root hard nproc 65535" >> /etc/security/limits.conf - fi +root hard nproc 65535" >>/etc/security/limits.conf + fi -#sed -i 's|#DefaultLimitNOFILE=|DefaultLimitNOFILE=65535|g' /etc/systemd/system.conf + #sed -i 's|#DefaultLimitNOFILE=|DefaultLimitNOFILE=65535|g' /etc/systemd/system.conf + TOTAL_SWAP=$(free -m | awk '/^Swap:/ { print $2 }') + SET_SWAP=$((TOTAL_RAM - TOTAL_SWAP)) + SWAP_FILE=/cyberpanel.swap -TOTAL_SWAP=$(free -m | awk '/^Swap:/ { print $2 }') -SET_SWAP=$((TOTAL_RAM - TOTAL_SWAP)) -SWAP_FILE=/cyberpanel.swap - -if [ ! -f $SWAP_FILE ] ; then - if [[ $TOTAL_SWAP -gt $TOTAL_RAM ]] || [[ $TOTAL_SWAP -eq $TOTAL_RAM ]] ; then - echo "SWAP check..." - else - if [[ $SET_SWAP -gt "2049" ]] ; then - SET_SWAP="2048" - else - echo "Checking SWAP..." - fi - fallocate --length ${SET_SWAP}MiB $SWAP_FILE - chmod 600 $SWAP_FILE - mkswap $SWAP_FILE - swapon $SWAP_FILE - echo "${SWAP_FILE} swap swap sw 0 0" | sudo tee -a /etc/fstab - sysctl vm.swappiness=10 - echo "vm.swappiness = 10" >> /etc/sysctl.conf - echo "SWAP set..." - fi -fi + if [ ! -f $SWAP_FILE ]; then + if [[ $TOTAL_SWAP -gt $TOTAL_RAM ]] || [[ $TOTAL_SWAP -eq $TOTAL_RAM ]]; then + echo "SWAP check..." + else + if [[ $SET_SWAP -gt "2049" ]]; then + SET_SWAP="2048" + else + echo "Checking SWAP..." + fi + fallocate --length ${SET_SWAP}MiB $SWAP_FILE + chmod 600 $SWAP_FILE + mkswap $SWAP_FILE + swapon $SWAP_FILE + echo "${SWAP_FILE} swap swap sw 0 0" | sudo tee -a /etc/fstab + sysctl vm.swappiness=10 + echo "vm.swappiness = 10" >>/etc/sysctl.conf + echo "SWAP set..." + fi + fi } - install_required() { -if [[ -d /etc/yum.repos.d ]] ; then + if [[ -d /etc/yum.repos.d ]]; then - 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 - yum install epel-release -y + 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 + yum install epel-release -y - if [[ $CENTOS_8 == "True" ]] ; then - dnf install zip -y - elif [[ $CENTOS_8 == "False" ]] ; then - ###### Setup Required Repos + if [[ $CENTOS_8 == "True" ]]; then + dnf install zip -y + elif [[ $CENTOS_8 == "False" ]]; then + ###### Setup Required Repos - ## Start with PDNS + ## Start with PDNS - yum install yum-plugin-priorities -y - curl -o /etc/yum.repos.d/powerdns-auth-43.repo https://repo.powerdns.com/repo-files/centos-auth-43.repo + yum install yum-plugin-priorities -y + curl -o /etc/yum.repos.d/powerdns-auth-43.repo https://repo.powerdns.com/repo-files/centos-auth-43.repo - ## MariaDB + ## MariaDB - cat << EOF > /etc/yum.repos.d/MariaDB.repo + cat </etc/yum.repos.d/MariaDB.repo # MariaDB 10.5 CentOS repository list - created 2020-09-08 14:54 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] @@ -411,366 +409,362 @@ gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 EOF - ## Ghetoo Repo for Postfix/Dovecot + ## Ghetoo Repo for Postfix/Dovecot - yum --nogpg install https://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm -y + yum --nogpg install https://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm -y + ## Copr for restic - ## Copr for restic + yum install yum-plugin-copr -y + yum copr enable copart/restic -y - yum install yum-plugin-copr -y - yum copr enable copart/restic -y + ## Lux for git 2.17 or more - ## Lux for git 2.17 or more + yum install http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm -y - yum install http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm -y + ## IUS Repo for python 3 - ## IUS Repo for python 3 + yum install https://repo.ius.io/ius-release-el7.rpm -y - yum install https://repo.ius.io/ius-release-el7.rpm -y + fi - - fi -fi - -echo -e "\nInstalling necessary components..." -if [[ $SERVER_OS == "CentOS" ]] ; then - - yum clean all - yum update -y - - if [[ $CENTOS_8 == "False" ]] ; then - yum install -y wget strace net-tools curl which bc telnet htop libevent-devel gcc libattr-devel xz-devel gpgme-devel curl-devel git socat openssl-devel MariaDB-shared mariadb-devel yum-utils python36u python36u-pip python36u-devel - check_return - yum -y groupinstall development - check_return - fi - if [[ $CENTOS_8 == "True" ]] ; then - dnf install -y wget strace net-tools curl which bc telnet htop libevent-devel gcc libattr-devel xz-devel mariadb-devel curl-devel git platform-python-devel tar socat python3 - check_return - dnf --enablerepo=PowerTools install gpgme-devel -y - check_return - fi - - - if [[ $SERVER_OS == "CentOS" ]] ; then - pip3.6 install virtualenv==16.7.9 - else - pip3.6 install virtualenv fi - check_return -fi + echo -e "\nInstalling necessary components..." + if [[ $SERVER_OS == "CentOS" ]]; then -if [[ $SERVER_OS == "Ubuntu" ]] ; then + yum clean all + yum update -y - apt update -y - DEBIAN_FRONTEND=noninteractive apt upgrade -y - 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 socat vim unzip zip - check_return + if [[ $CENTOS_8 == "False" ]]; then + yum install -y wget strace net-tools curl which bc telnet htop libevent-devel gcc libattr-devel xz-devel gpgme-devel curl-devel git socat openssl-devel MariaDB-shared mariadb-devel yum-utils python36u python36u-pip python36u-devel + check_return + yum -y groupinstall development + check_return + fi + if [[ $CENTOS_8 == "True" ]]; then + dnf install -y wget strace net-tools curl which bc telnet htop libevent-devel gcc libattr-devel xz-devel mariadb-devel curl-devel git platform-python-devel tar socat python3 + check_return + dnf --enablerepo=PowerTools install gpgme-devel -y + check_return + fi - DEBIAN_FRONTEND=noninteractive apt install -y python3-pip - check_return - ln -s /usr/bin/pip3 /usr/bin/pip3.6 - DEBIAN_FRONTEND=noninteractive apt install -y build-essential libssl-dev libffi-dev python3-dev - check_return - DEBIAN_FRONTEND=noninteractive apt install -y python3-venv - check_return + if [[ $SERVER_OS == "CentOS" ]]; then + pip3.6 install virtualenv==16.7.9 + else + pip3.6 install virtualenv + fi + check_return - if [[ $UBUNTU_20 == "True" ]] ; then - pip3 install virtualenv==16.7.9 fi - check_return -fi + if [[ $SERVER_OS == "Ubuntu" ]]; then + + apt update -y + DEBIAN_FRONTEND=noninteractive apt upgrade -y + 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 socat vim unzip zip + check_return + + DEBIAN_FRONTEND=noninteractive apt install -y python3-pip + check_return + ln -s /usr/bin/pip3 /usr/bin/pip3.6 + DEBIAN_FRONTEND=noninteractive apt install -y build-essential libssl-dev libffi-dev python3-dev + check_return + DEBIAN_FRONTEND=noninteractive apt install -y python3-venv + check_return + + if [[ $UBUNTU_20 == "True" ]]; then + pip3 install virtualenv==16.7.9 + fi + check_return + + fi } memcached_installation() { -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 - if [[ $TOTAL_RAM -eq "2048" ]] || [[ $TOTAL_RAM -gt "2048" ]] ; then - yum groupinstall "Development Tools" -y - yum install autoconf automake zlib-devel openssl-devel expat-devel pcre-devel libmemcached-devel cyrus-sasl* -y - wget https://$DOWNLOAD_SERVER/litespeed/lsmcd.tar.gz - tar xzvf lsmcd.tar.gz - DIR=$(pwd) - cd $DIR/lsmcd - ./fixtimestamp.sh - ./configure CFLAGS=" -O3" CXXFLAGS=" -O3" - make - make install - systemctl enable lsmcd - systemctl start lsmcd - cd $DIR - else - yum install -y memcached - sed -i 's|OPTIONS=""|OPTIONS="-l 127.0.0.1 -U 0"|g' /etc/sysconfig/memcached - systemctl enable memcached - systemctl start memcached - fi -fi -if [[ $SERVER_OS == "Ubuntu" ]] ; then - DEBIAN_FRONTEND=noninteractive apt install -y lsphp74-memcached - DEBIAN_FRONTEND=noninteractive apt install -y lsphp73-memcached - DEBIAN_FRONTEND=noninteractive apt install -y lsphp72-memcached - DEBIAN_FRONTEND=noninteractive apt install -y lsphp71-memcached - DEBIAN_FRONTEND=noninteractive apt install -y lsphp70-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 + if [[ $TOTAL_RAM -eq "2048" ]] || [[ $TOTAL_RAM -gt "2048" ]]; then + yum groupinstall "Development Tools" -y + yum install autoconf automake zlib-devel openssl-devel expat-devel pcre-devel libmemcached-devel cyrus-sasl* -y + wget https://$DOWNLOAD_SERVER/litespeed/lsmcd.tar.gz + tar xzvf lsmcd.tar.gz + DIR=$(pwd) + cd $DIR/lsmcd + ./fixtimestamp.sh + ./configure CFLAGS=" -O3" CXXFLAGS=" -O3" + make + make install + systemctl enable lsmcd + systemctl start lsmcd + cd $DIR + else + yum install -y memcached + sed -i 's|OPTIONS=""|OPTIONS="-l 127.0.0.1 -U 0"|g' /etc/sysconfig/memcached + systemctl enable memcached + systemctl start memcached + fi + fi + if [[ $SERVER_OS == "Ubuntu" ]]; then + DEBIAN_FRONTEND=noninteractive apt install -y lsphp74-memcached + DEBIAN_FRONTEND=noninteractive apt install -y lsphp73-memcached + DEBIAN_FRONTEND=noninteractive apt install -y lsphp72-memcached + DEBIAN_FRONTEND=noninteractive apt install -y lsphp71-memcached + DEBIAN_FRONTEND=noninteractive apt install -y lsphp70-memcached - if [[ $TOTAL_RAM -eq "2048" ]] || [[ $TOTAL_RAM -gt "2048" ]] ; then - DEBIAN_FRONTEND=noninteractive apt install build-essential zlib1g-dev libexpat1-dev openssl libssl-dev libsasl2-dev libpcre3-dev git -y - wget https://$DOWNLOAD/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 - systemctl enable lsmcd - systemctl start lsmcd - else - DEBIAN_FRONTEND=noninteractive apt install -y memcached - systemctl enable memcached - systemctl start memcached - fi -fi + if [[ $TOTAL_RAM -eq "2048" ]] || [[ $TOTAL_RAM -gt "2048" ]]; then + DEBIAN_FRONTEND=noninteractive apt install build-essential zlib1g-dev libexpat1-dev openssl libssl-dev libsasl2-dev libpcre3-dev git -y + wget https://$DOWNLOAD/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 + systemctl enable lsmcd + systemctl start lsmcd + else + DEBIAN_FRONTEND=noninteractive apt install -y memcached + systemctl enable memcached + systemctl start memcached + fi + fi -if ps -aux | grep "lsmcd" | grep -v grep ; then - echo -e "\n\nLiteSpeed Memcached installed and running..." -fi + if ps -aux | grep "lsmcd" | grep -v grep; then + echo -e "\n\nLiteSpeed Memcached installed and running..." + fi -if ps -aux | grep "memcached" | grep -v grep ; then - echo -e "\n\nMemcached installed and running..." -fi + if ps -aux | grep "memcached" | grep -v grep; then + echo -e "\n\nMemcached installed and running..." + fi } redis_installation() { -if [[ $SERVER_OS == "CentOS" ]] ; then - yum install -y lsphp74-redis lsphp73-redis lsphp72-redis lsphp71-redis lsphp70-redis lsphp56-redis lsphp55-redis lsphp54-redis redis -fi -if [[ $SERVER_OS == "Ubuntu" ]] ; then - DEBIAN_FRONTEND=noninteractive apt install -y lsphp74-redis - DEBIAN_FRONTEND=noninteractive apt install -y lsphp73-redis - DEBIAN_FRONTEND=noninteractive apt install -y lsphp72-redis - DEBIAN_FRONTEND=noninteractive apt install -y lsphp71-redis - DEBIAN_FRONTEND=noninteractive apt install -y lsphp70-redis - DEBIAN_FRONTEND=noninteractive apt install -y redis -fi + if [[ $SERVER_OS == "CentOS" ]]; then + yum install -y lsphp74-redis lsphp73-redis lsphp72-redis lsphp71-redis lsphp70-redis lsphp56-redis lsphp55-redis lsphp54-redis redis + fi + if [[ $SERVER_OS == "Ubuntu" ]]; then + DEBIAN_FRONTEND=noninteractive apt install -y lsphp74-redis + DEBIAN_FRONTEND=noninteractive apt install -y lsphp73-redis + DEBIAN_FRONTEND=noninteractive apt install -y lsphp72-redis + DEBIAN_FRONTEND=noninteractive apt install -y lsphp71-redis + DEBIAN_FRONTEND=noninteractive apt install -y lsphp70-redis + DEBIAN_FRONTEND=noninteractive apt install -y redis + fi -if ifconfig -a | grep inet6 ; then - echo -e "\n IPv6 detected..." -else - sed -i 's|bind 127.0.0.1 ::1|bind 127.0.0.1|g' /etc/redis/redis.conf - echo -e "\n no IPv6 detected..." -fi + if ifconfig -a | grep inet6; then + echo -e "\n IPv6 detected..." + else + sed -i 's|bind 127.0.0.1 ::1|bind 127.0.0.1|g' /etc/redis/redis.conf + echo -e "\n no IPv6 detected..." + fi -if [[ $SERVER_OS == "CentOS" ]] ; then - systemctl enable redis - systemctl start redis -fi + if [[ $SERVER_OS == "CentOS" ]]; then + systemctl enable redis + systemctl start redis + fi -if [[ $SERVER_OS == "Ubuntu" ]] ; then - systemctl stop redis-server - rm -f /var/run/redis/redis-server.pid - systemctl enable redis-server - systemctl start redis-server -fi + if [[ $SERVER_OS == "Ubuntu" ]]; then + systemctl stop redis-server + rm -f /var/run/redis/redis-server.pid + systemctl enable redis-server + systemctl start redis-server + fi -if ps -aux | grep "redis" | grep -v grep ; then - echo -e "\n\nRedis installed and running..." -fi + if ps -aux | grep "redis" | grep -v grep; then + echo -e "\n\nRedis installed and running..." + fi } check_provider() { -if hash dmidecode > /dev/null 2>&1 ; then - if [ "$(dmidecode -s bios-vendor)" = 'Google' ] ; then - PROVIDER='Google Cloud Platform' - elif [ "$(dmidecode -s bios-vendor)" = 'DigitalOcean' ] ; then - PROVIDER='Digital Ocean' - elif [ "$(dmidecode -s system-product-name | cut -c 1-7)" = 'Alibaba' ] ; then - PROVIDER='Alibaba Cloud' - elif [ "$(dmidecode -s system-manufacturer)" = 'Microsoft Corporation' ] ; then - PROVIDER='Microsoft Azure' - elif [ -d /usr/local/qcloud ] ; then - PROVIDER='Tencent Cloud' - else - PROVIDER='undefined' - fi -else - PROVIDER='undefined' -fi + if hash dmidecode >/dev/null 2>&1; then + if [ "$(dmidecode -s bios-vendor)" = 'Google' ]; then + PROVIDER='Google Cloud Platform' + elif [ "$(dmidecode -s bios-vendor)" = 'DigitalOcean' ]; then + PROVIDER='Digital Ocean' + elif [ "$(dmidecode -s system-product-name | cut -c 1-7)" = 'Alibaba' ]; then + PROVIDER='Alibaba Cloud' + elif [ "$(dmidecode -s system-manufacturer)" = 'Microsoft Corporation' ]; then + PROVIDER='Microsoft Azure' + elif [ -d /usr/local/qcloud ]; then + PROVIDER='Tencent Cloud' + else + PROVIDER='undefined' + fi + else + PROVIDER='undefined' + fi -if [[ -f /sys/devices/virtual/dmi/id/product_uuid ]] ; then -if [ "$(cat /sys/devices/virtual/dmi/id/product_uuid | cut -c 1-3)" = 'EC2' ] && [ -d /home/ubuntu ]; then - PROVIDER='Amazon Web Service' -fi -fi + if [[ -f /sys/devices/virtual/dmi/id/product_uuid ]]; then + if [ "$(cat /sys/devices/virtual/dmi/id/product_uuid | cut -c 1-3)" = 'EC2' ] && [ -d /home/ubuntu ]; then + PROVIDER='Amazon Web Service' + fi + fi } - check_OS() { -echo -e "\nChecking OS..." -OUTPUT=$(cat /etc/*release) - -if echo $OUTPUT | grep -q "CentOS Linux 7" ; then - echo -e "\nDetecting CentOS 7.X...\n" - SERVER_OS="CentOS" -elif echo $OUTPUT | grep -q "CloudLinux 7" ; then - echo -e "\nDetecting CloudLinux 7.X...\n" - SERVER_OS="CentOS" -elif echo $OUTPUT | grep -q "CentOS Linux 8" ; then - echo -e "\nDetecting CentOS 8.X...\n" - SERVER_OS="CentOS" - CENTOS_8="True" -elif echo $OUTPUT | grep -q "Ubuntu 18.04" ; then - if uname -m | grep -q 64 ; then - echo -e "\nDetecting Ubuntu 18.04...\n" - SERVER_OS="Ubuntu" - else - echo -e "\nUbuntu 18.04 x32 detected...ths only works on x64 system." - exit - fi -elif echo $OUTPUT | grep -q "Ubuntu 20.04" ; then - if uname -m | grep -q 64 ; then - echo -e "\nDetecting Ubuntu 20.04 ...\n" - SERVER_OS="Ubuntu" - UBUNTU_20="True" - else - echo -e "\nUbuntu 20 x32 detected...ths only works on x64 system." - exit - fi -else - cat /etc/*release - echo -e "\nUnable to detect your OS...\n" - echo -e "\nCyberPanel is supported on Ubuntu 18.04 x86_64, Ubuntu 20.04 x86_64, CentOS 7.x, CentOS 8.x and CloudLinux 7.x...\n" - exit 1 -fi + echo -e "\nChecking OS..." + OUTPUT=$(cat /etc/*release) + if echo $OUTPUT | grep -q "CentOS Linux 7"; then + echo -e "\nDetecting CentOS 7.X...\n" + SERVER_OS="CentOS" + elif echo $OUTPUT | grep -q "CloudLinux 7"; then + echo -e "\nDetecting CloudLinux 7.X...\n" + SERVER_OS="CentOS" + elif echo $OUTPUT | grep -q "CentOS Linux 8"; then + echo -e "\nDetecting CentOS 8.X...\n" + SERVER_OS="CentOS" + CENTOS_8="True" + elif echo $OUTPUT | grep -q "Ubuntu 18.04"; then + if uname -m | grep -q 64; then + echo -e "\nDetecting Ubuntu 18.04...\n" + SERVER_OS="Ubuntu" + else + echo -e "\nUbuntu 18.04 x32 detected...ths only works on x64 system." + exit + fi + elif echo $OUTPUT | grep -q "Ubuntu 20.04"; then + if uname -m | grep -q 64; then + echo -e "\nDetecting Ubuntu 20.04 ...\n" + SERVER_OS="Ubuntu" + UBUNTU_20="True" + else + echo -e "\nUbuntu 20 x32 detected...ths only works on x64 system." + exit + fi + else + cat /etc/*release + echo -e "\nUnable to detect your OS...\n" + echo -e "\nCyberPanel is supported on Ubuntu 18.04 x86_64, Ubuntu 20.04 x86_64, CentOS 7.x, CentOS 8.x and CloudLinux 7.x...\n" + exit 1 + fi } check_root() { -echo -e "\nChecking root privileges...\n" -if echo $SUDO_TEST | grep SUDO > /dev/null ; then - echo -e "\nYou are using SUDO , please run as root user...\n" - 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 + echo -e "\nChecking root privileges...\n" + if echo $SUDO_TEST | grep SUDO >/dev/null; then + echo -e "\nYou are using SUDO , please run as root user...\n" + 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 - echo -e "\nYou must use root user to install CyberPanel...\n" -# echo -e "or run following command: (do NOT miss the quotes)" -# echo -e "\e[31msudo su -c \"sh <(curl https://cyberpanel.sh || wget -O - https://cyberpanel.sh)\"\e[39m" - exit 1 -else - echo -e "\nYou are runing as root...\n" -fi + if [[ $(id -u) != 0 ]] >/dev/null; then + echo -e "\nYou must use root user to install CyberPanel...\n" + # echo -e "or run following command: (do NOT miss the quotes)" + # echo -e "\e[31msudo su -c \"sh <(curl https://cyberpanel.sh || wget -O - https://cyberpanel.sh)\"\e[39m" + exit 1 + else + echo -e "\nYou are runing as root...\n" + fi } check_panel() { -if [ -d /usr/local/cpanel ]; then - echo -e "\ncPanel detected...exit...\n" - exit 1 -fi -if [ -d /opt/plesk ]; then - echo -e "\nPlesk detected...exit...\n" - exit 1 -fi + if [ -d /usr/local/cpanel ]; then + echo -e "\ncPanel detected...exit...\n" + exit 1 + fi + if [ -d /opt/plesk ]; then + echo -e "\nPlesk detected...exit...\n" + exit 1 + fi } check_process() { -if systemctl is-active --quiet httpd; then - systemctl disable httpd - systemctl stop httpd - systemctl mask httpd - echo -e "\nhttpd process detected, disabling...\n" -fi -if systemctl is-active --quiet apache2; then - systemctl disable apache2 - systemctl stop apache2 - systemctl mask apache2 - echo -e "\napache2 process detected, disabling...\n" -fi -if systemctl is-active --quiet named; then - systemctl stop named - systemctl disable named - systemctl mask named - echo -e "\nnamed process detected, disabling...\n" -fi -if systemctl is-active --quiet exim; then - systemctl stop exim - systemctl disable exim - systemctl mask exim - echo -e "\nexim process detected, disabling...\n" -fi + if systemctl is-active --quiet httpd; then + systemctl disable httpd + systemctl stop httpd + systemctl mask httpd + echo -e "\nhttpd process detected, disabling...\n" + fi + if systemctl is-active --quiet apache2; then + systemctl disable apache2 + systemctl stop apache2 + systemctl mask apache2 + echo -e "\napache2 process detected, disabling...\n" + fi + if systemctl is-active --quiet named; then + systemctl stop named + systemctl disable named + systemctl mask named + echo -e "\nnamed process detected, disabling...\n" + fi + if systemctl is-active --quiet exim; then + systemctl stop exim + systemctl disable exim + systemctl mask exim + echo -e "\nexim process detected, disabling...\n" + fi } show_help() { -echo -e "\nCyberPanel Installer Script Help\n" -echo -e "\nUsage: sh <(curl cyberpanel.sh) --argument" -echo -e "\n -v or --version: choose to install CyberPanel OpenLiteSpeed or CyberPanel Enterprise, available options are \e[31mols\e[39m and \e[31mSERIAL_NUMBER\e[39m, default ols" -echo -e "\n Please be aware, this serial number must be obtained from LiteSpeed Store." -echo -e "\n And if this serial number has been used before, it must be released/migrated in Store first, otherwise it will fail to start." -echo -e "\n -a or --addons: install addons: memcached, redis, PHP extension for memcached and redis" -echo -e "\n -p or --password: set password of new installation, empty for default 1234567, [r] or [random] for randomly generated 16 digital password, any other value besides [d] and [r(andom)] will be accept as password, default use 1234567." -echo -e "\n -m: set to minimal mode which will not install PowerDNS, Pure-FTPd and Postfix" -echo -e "\n Example:" -echo -e "\n sh <(curl cyberpanel.sh) -v ols -p r or ./cyberpanel.sh --version ols --password random" -echo -e "\n This will install CyberPanel OpenLiteSpeed and randomly generate the password." -echo -e "\n sh <(curl cyberpanel.sh) -v LICENSE_KEY -a -p my_pass_word" -echo -e "\n This will install LiteSpeed Enterise , replace LICENSE_KEY to actual license key and set password to my_pass_word\n" + echo -e "\nCyberPanel Installer Script Help\n" + echo -e "\nUsage: sh <(curl cyberpanel.sh) --argument" + echo -e "\n -v or --version: choose to install CyberPanel OpenLiteSpeed or CyberPanel Enterprise, available options are \e[31mols\e[39m and \e[31mSERIAL_NUMBER\e[39m, default ols" + echo -e "\n Please be aware, this serial number must be obtained from LiteSpeed Store." + echo -e "\n And if this serial number has been used before, it must be released/migrated in Store first, otherwise it will fail to start." + echo -e "\n -a or --addons: install addons: memcached, redis, PHP extension for memcached and redis" + echo -e "\n -p or --password: set password of new installation, empty for default 1234567, [r] or [random] for randomly generated 16 digital password, any other value besides [d] and [r(andom)] will be accept as password, default use 1234567." + echo -e "\n -m: set to minimal mode which will not install PowerDNS, Pure-FTPd and Postfix" + echo -e "\n Example:" + echo -e "\n sh <(curl cyberpanel.sh) -v ols -p r or ./cyberpanel.sh --version ols --password random" + echo -e "\n This will install CyberPanel OpenLiteSpeed and randomly generate the password." + echo -e "\n sh <(curl cyberpanel.sh) -v LICENSE_KEY -a -p my_pass_word" + echo -e "\n This will install LiteSpeed Enterise , replace LICENSE_KEY to actual license key and set password to my_pass_word\n" } license_input() { -VERSION="ENT" -echo -e "\nPlease note that your server has \e[31m$TOTAL_RAM MB\e[39m RAM" -echo -e "If you are using \e[31mFree Start\e[39m license, It will not start due to \e[31m2GB RAM limit\e[39m.\n" -echo -e "If you do not have any license, you can also use trial license (if server has not used trial license before), type \e[31mTRIAL\e[39m\n" + VERSION="ENT" + echo -e "\nPlease note that your server has \e[31m$TOTAL_RAM MB\e[39m RAM" + echo -e "If you are using \e[31mFree Start\e[39m license, It will not start due to \e[31m2GB RAM limit\e[39m.\n" + echo -e "If you do not have any license, you can also use trial license (if server has not used trial license before), type \e[31mTRIAL\e[39m\n" -printf "%s" "Please input your serial number for LiteSpeed WebServer Enterprise:" -read LICENSE_KEY -if [ -z "$LICENSE_KEY" ] ; then - echo -e "\nPlease provide license key\n" - exit -fi + printf "%s" "Please input your serial number for LiteSpeed WebServer Enterprise:" + read LICENSE_KEY + if [ -z "$LICENSE_KEY" ]; then + echo -e "\nPlease provide license key\n" + exit + fi -echo -e "The serial number you input is: \e[31m$LICENSE_KEY\e[39m" -printf "%s" "Please verify it is correct. [y/N]" -read TMP_YN -if [ -z "$TMP_YN" ] ; then - echo -e "\nPlease type \e[31my\e[39m\n" - exit -fi + echo -e "The serial number you input is: \e[31m$LICENSE_KEY\e[39m" + printf "%s" "Please verify it is correct. [y/N]" + read TMP_YN + if [ -z "$TMP_YN" ]; then + echo -e "\nPlease type \e[31my\e[39m\n" + exit + fi -KEY_SIZE=${#LICENSE_KEY} -TMP=$(echo $LICENSE_KEY | cut -c5) -TMP2=$(echo $LICENSE_KEY | cut -c10) -TMP3=$(echo $LICENSE_KEY | cut -c15) + KEY_SIZE=${#LICENSE_KEY} + TMP=$(echo $LICENSE_KEY | cut -c5) + TMP2=$(echo $LICENSE_KEY | cut -c10) + TMP3=$(echo $LICENSE_KEY | cut -c15) -if [[ $TMP == "-" ]] && [[ $TMP2 == "-" ]] && [[ $TMP3 == "-" ]] && [[ $KEY_SIZE == "19" ]] ; then - echo -e "\nLicense key set..." -elif [[ $LICENSE_KEY == "trial" ]] || [[ $LICENSE_KEY == "TRIAL" ]] || [[ $LICENSE_KEY == "Trial" ]] ; then - echo -e "\nTrial license set..." - LICENSE_KEY="TRIAL" -else - echo -e "\nLicense key seems incorrect, please verify\n" - echo -e "\nIf you are copying/pasting, please make sure you didn't paste blank space...\n" - exit -fi + if [[ $TMP == "-" ]] && [[ $TMP2 == "-" ]] && [[ $TMP3 == "-" ]] && [[ $KEY_SIZE == "19" ]]; then + echo -e "\nLicense key set..." + elif [[ $LICENSE_KEY == "trial" ]] || [[ $LICENSE_KEY == "TRIAL" ]] || [[ $LICENSE_KEY == "Trial" ]]; then + echo -e "\nTrial license set..." + LICENSE_KEY="TRIAL" + else + echo -e "\nLicense key seems incorrect, please verify\n" + echo -e "\nIf you are copying/pasting, please make sure you didn't paste blank space...\n" + exit + fi -echo -e "\nWould you like use Redis Mass Hosting?" -echo -e "Please type Yes or No (with capital \e[31mY\e[39m, default No):" -printf "%s" -read REDIS_HOSTING + echo -e "\nWould you like use Redis Mass Hosting?" + echo -e "Please type Yes or No (with capital \e[31mY\e[39m, default No):" + printf "%s" + read REDIS_HOSTING } interactive_mode() { -echo -e " CyberPanel Installer v$CP_VER1$CP_VER2 + echo -e " CyberPanel Installer v$CP_VER1$CP_VER2 1. Install CyberPanel. @@ -779,32 +773,32 @@ echo -e " CyberPanel Installer v$CP_VER1$CP_VER2 3. Exit. " -read -p " Please enter the number[1-3]: " num -echo "" -case "$num" in - 1) - interactive_install - ;; - 2) - interactive_others - ;; - 3) - exit - ;; - *) - echo -e " Please enter the right number [1-3]\n" - exit - ;; -esac + read -p " Please enter the number[1-3]: " num + echo "" + case "$num" in + 1) + interactive_install + ;; + 2) + interactive_others + ;; + 3) + exit + ;; + *) + echo -e " Please enter the right number [1-3]\n" + exit + ;; + esac } interactive_others() { -if [ ! -e "/etc/cyberpanel/machineIP" ]; then -echo -e "\nYou don't have CyberPanel installed...\n" -exit -fi + if [ ! -e "/etc/cyberpanel/machineIP" ]; then + echo -e "\nYou don't have CyberPanel installed...\n" + exit + fi -echo -e " CyberPanel Addons v$CP_VER1$CP_VER2 + echo -e " CyberPanel Addons v$CP_VER1$CP_VER2 1. Install Memcached extension and backend @@ -815,33 +809,33 @@ echo -e " CyberPanel Addons v$CP_VER1$CP_VER2 4. Exit " -echo && read -p "Please enter the number[1-4]: " num -case "$num" in - 1) - memcached_installation - exit - ;; - 2) - redis_installation - exit - ;; - 3) - interactive_mode - ;; - 4) - exit - ;; - *) - echo -e "${Error} please enter the right number [1-4]" - ;; -esac + echo && read -p "Please enter the number[1-4]: " num + case "$num" in + 1) + memcached_installation + exit + ;; + 2) + redis_installation + exit + ;; + 3) + interactive_mode + ;; + 4) + exit + ;; + *) + echo -e "${Error} please enter the right number [1-4]" + ;; + esac } interactive_install() { -RAM=$(free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }') -DISK=$(df -h | awk '$NF=="/"{printf "%d/%dGB (%s)\n", $3,$2,$5}') -#clear -echo -e " CyberPanel Installer v$CP_VER1$CP_VER2 + RAM=$(free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }') + DISK=$(df -h | awk '$NF=="/"{printf "%d/%dGB (%s)\n", $3,$2,$5}') + #clear + echo -e " CyberPanel Installer v$CP_VER1$CP_VER2 RAM check : $RAM @@ -854,360 +848,358 @@ echo -e " CyberPanel Installer v$CP_VER1$CP_VER2 3. Exit. " -read -p " Please enter the number[1-3]: " num -echo "" -case "$num" in - 1) - VERSION="OLS" - ;; - 2) - license_input - ;; - 3) - exit - ;; - *) - echo -e " Please enter the right number [1-3]\n" - exit - ;; -esac - - -echo -e "\nInstall Full service for CyberPanel? This will include PowerDNS, Postfix and Pure-FTPd." -echo -e "" -printf "%s" "Full installation [Y/n]: " -read TMP_YN -if [[ `expr "x$TMP_YN" : 'x[Yy]'` -gt 1 ]] || [[ $TMP_YN == "" ]] ; then - echo -e "\nFull installation selected..." - POSTFIX_VARIABLE="ON" - POWERDNS_VARIABLE="ON" - PUREFTPD_VARIABLE="ON" -else - echo -e "" - printf "%s" "Install Postfix? [Y/n]: " - read TMP_YN - if [[ $TMP_YN =~ ^(no|n|N) ]] ; then - POSTFIX_VARIABLE="OFF" - else - POSTFIX_VARIABLE="ON" - fi - echo -e "" - printf "%s" "Install PowerDNS? [Y/n]: " - read TMP_YN - if [[ $TMP_YN =~ ^(no|n|N) ]] ; then - POWERDNS_VARIABLE="OFF" - else - POWERDNS_VARIABLE="ON" - fi - echo -e "" - printf "%s" "Install PureFTPd? [Y/n]: " - read TMP_YN - if [[ $TMP_YN =~ ^(no|n|N) ]] ; then - PUREFTPD_VARIABLE="OFF" - else - PUREFTPD_VARIABLE="ON" - fi -fi - -### Ask if you want to set up this CyberPanel with remote MySQL - -echo -e "\nDo you want to setup Remote MySQL? (This will skip installation of local MySQL)" -echo -e "" -printf "%s" "(Default = No) Remote MySQL [y/N]: " -read TMP_YN -if [[ `expr "x$TMP_YN" : 'x[Yy]'` -gt 1 ]] ; then - echo -e "\nRemote MySQL selected..." - REMOTE_MYSQL='ON' - - echo -e "" - printf "%s" "Remote MySQL Hostname: " - read MYSQL_HOST - - echo -e "" - printf "%s" "Remote MySQL Database that contains meta information regarding MYSQL. (usually mysql): " - read MYSQL_DB - - echo -e "" - printf "%s" "Remote MySQL Username: " - read MYSQL_USER - - echo -e "" - printf "%s" "Remote MySQL Password: " - read -r -s -p "Password: " MYSQL_PASSWORD - - echo -e "" - printf "%s" "Remote MySQL Port: " - read MYSQL_PORT - -else + read -p " Please enter the number[1-3]: " num + echo "" + case "$num" in + 1) + VERSION="OLS" + ;; + 2) + license_input + ;; + 3) + exit + ;; + *) + echo -e " Please enter the right number [1-3]\n" + exit + ;; + esac + echo -e "\nInstall Full service for CyberPanel? This will include PowerDNS, Postfix and Pure-FTPd." echo -e "" - printf "%s" "Local MySQL selected.." - echo -e "" + printf "%s" "Full installation [Y/n]: " + read TMP_YN + if [[ $(expr "x$TMP_YN" : 'x[Yy]') -gt 1 ]] || [[ $TMP_YN == "" ]]; then + echo -e "\nFull installation selected..." + POSTFIX_VARIABLE="ON" + POWERDNS_VARIABLE="ON" + PUREFTPD_VARIABLE="ON" + else + echo -e "" + printf "%s" "Install Postfix? [Y/n]: " + read TMP_YN + if [[ $TMP_YN =~ ^(no|n|N) ]]; then + POSTFIX_VARIABLE="OFF" + else + POSTFIX_VARIABLE="ON" + fi + echo -e "" + printf "%s" "Install PowerDNS? [Y/n]: " + read TMP_YN + if [[ $TMP_YN =~ ^(no|n|N) ]]; then + POWERDNS_VARIABLE="OFF" + else + POWERDNS_VARIABLE="ON" + fi + echo -e "" + printf "%s" "Install PureFTPd? [Y/n]: " + read TMP_YN + if [[ $TMP_YN =~ ^(no|n|N) ]]; then + PUREFTPD_VARIABLE="OFF" + else + PUREFTPD_VARIABLE="ON" + fi + fi -fi + ### Ask if you want to set up this CyberPanel with remote MySQL -### + echo -e "\nDo you want to setup Remote MySQL? (This will skip installation of local MySQL)" + echo -e "" + printf "%s" "(Default = No) Remote MySQL [y/N]: " + read TMP_YN + if [[ $(expr "x$TMP_YN" : 'x[Yy]') -gt 1 ]]; then + echo -e "\nRemote MySQL selected..." + REMOTE_MYSQL='ON' -#above comment for future use + echo -e "" + printf "%s" "Remote MySQL Hostname: " + read MYSQL_HOST -#if [[ $DEV_ARG == "ON" ]] ; then -#echo -e "Press \e[31mEnter\e[39m to continue with stable version of CyberPanel, or" -#echo -e "\nPlease enter \e[31mbeta\e[39m and then press \e[31mEnter\e[39m to install CyberPanel with Python 3." -#echo -e "\nCentOS 8 will autoamtically proceed with Python 3 branch." -#printf "%s" "" -#read TMP_YN + echo -e "" + printf "%s" "Remote MySQL Database that contains meta information regarding MYSQL. (usually mysql): " + read MYSQL_DB -echo -e "\nPress \e[31mEnter\e[39m key to continue with latest version or Enter specific version such as: \e[31m1.9.4\e[39m , \e[31m2.0.1\e[39m , \e[31m2.0.2\e[39m ...etc" -printf "%s" "" -read TMP_YN + echo -e "" + printf "%s" "Remote MySQL Username: " + read MYSQL_USER -DEV="ON" -if [[ $TMP_YN == "" ]] ; then - BRANCH_NAME="v${TEMP:12:3}.${TEMP:25:1}" - echo -e "\nBranch name set to $BRANCH_NAME" -else - base_number="1.9.3" - if [[ $TMP_YN == *.*.* ]] ; then - #check input if it's valid format as X.Y.Z - output=$(awk -v num1="$base_number" -v num2="$TMP_YN" ' + echo -e "" + printf "%s" "Remote MySQL Password: " + read -r -s -p "Password: " MYSQL_PASSWORD + + echo -e "" + printf "%s" "Remote MySQL Port: " + read MYSQL_PORT + + else + + echo -e "" + printf "%s" "Local MySQL selected.." + echo -e "" + + fi + + ### + + #above comment for future use + + #if [[ $DEV_ARG == "ON" ]] ; then + #echo -e "Press \e[31mEnter\e[39m to continue with stable version of CyberPanel, or" + #echo -e "\nPlease enter \e[31mbeta\e[39m and then press \e[31mEnter\e[39m to install CyberPanel with Python 3." + #echo -e "\nCentOS 8 will autoamtically proceed with Python 3 branch." + #printf "%s" "" + #read TMP_YN + + echo -e "\nPress \e[31mEnter\e[39m key to continue with latest version or Enter specific version such as: \e[31m1.9.4\e[39m , \e[31m2.0.1\e[39m , \e[31m2.0.2\e[39m ...etc" + printf "%s" "" + read TMP_YN + + DEV="ON" + if [[ $TMP_YN == "" ]]; then + BRANCH_NAME="v${TEMP:12:3}.${TEMP:25:1}" + echo -e "\nBranch name set to $BRANCH_NAME" + else + base_number="1.9.3" + if [[ $TMP_YN == *.*.* ]]; then + #check input if it's valid format as X.Y.Z + output=$(awk -v num1="$base_number" -v num2="$TMP_YN" ' 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$TMP_YN" - echo "set branch name to $BRANCH_NAME" - fi - else - echo -e "\nPlease input a valid format version number." - exit - fi -fi + if [[ $output == *">="* ]]; then + echo -e "\nYou must use version number higher than 1.9.4" + exit + else + BRANCH_NAME="v$TMP_YN" + echo "set branch name to $BRANCH_NAME" + fi + else + echo -e "\nPlease input a valid format version number." + exit + fi + fi -#if [[ $TMP_YN == "beta" ]] ; then -# DEV="ON" -## echo -e "\nPlease specify branch name" -## printf "%s" "" -## read TMP_YN -# BRANCH_NAME="p3" -# echo -e "Branch name set to $BRANCH_NAME" -#else -# DEV="OFF" -# -# if [[ $CENTOS_8 == "True" ]] ; then -# DEV="ON" -# BRANCH_NAME="p3" -# fi -#fi + #if [[ $TMP_YN == "beta" ]] ; then + # DEV="ON" + ## echo -e "\nPlease specify branch name" + ## printf "%s" "" + ## read TMP_YN + # BRANCH_NAME="p3" + # echo -e "Branch name set to $BRANCH_NAME" + #else + # DEV="OFF" + # + # if [[ $CENTOS_8 == "True" ]] ; then + # DEV="ON" + # BRANCH_NAME="p3" + # fi + #fi + #fi + echo -e "\nPlease choose to use default admin password \e[31m1234567\e[39m, randomly generate one \e[31m(recommended)\e[39m or specify the admin password?" + printf "%s" "Choose [d]fault, [r]andom or [s]et password: [d/r/s] " + read TMP_YN -#fi + if [[ $TMP_YN =~ ^(d|D| ) ]] || [[ -z $TMP_YN ]]; then + ADMIN_PASS="1234567" + echo -e "\nAdmin password will be set to $ADMIN_PASS\n" + elif [[ $TMP_YN =~ ^(r|R) ]]; then + ADMIN_PASS=$( + head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 + echo '' + ) + echo -e "\nAdmin password will be provided once installation is completed...\n" + elif [[ $TMP_YN =~ ^(s|S) ]]; then + CUSTOM_PASS="True" + echo -e "\nPlease enter your password:" + printf "%s" "" + read -r -s -p "Password: " TMP_YN + if [ -z "$TMP_YN" ]; then + echo -e "\nPlease do not use empty string...\n" + exit + fi + if [ ${#TMP_YN} -lt 8 ]; then + echo -e "\nPassword lenth less than 8 digital, please choose a more complicated password.\n" + exit + fi + TMP_YN1=$TMP_YN + printf "%s\n" "" + read -r -s -p "Confirm Password:" TMP_YN + if [ -z "$TMP_YN" ]; then + echo -e "\nPlease do not use empty string...\n" + exit + fi + TMP_YN2=$TMP_YN + if [ $TMP_YN1 = $TMP_YN2 ]; then + ADMIN_PASS=$TMP_YN1 + else + echo -e "\nRepeated password didn't match , please check...\n" + exit + fi + else + ADMIN_PASS="1234567" + echo -e "\nAdmin password will be set to $ADMIN_PASS\n" + fi -echo -e "\nPlease choose to use default admin password \e[31m1234567\e[39m, randomly generate one \e[31m(recommended)\e[39m or specify the admin password?" -printf "%s" "Choose [d]fault, [r]andom or [s]et password: [d/r/s] " -read TMP_YN + echo -e "\nDo you wish to install Memcached extension and backend?" + printf "%s" "Please select [Y/n]: " + read TMP_YN + if [[ $TMP_YN =~ ^(no|n|N) ]]; then + MEMCACHED="OFF" + else + MEMCACHED="ON" + fi -if [[ $TMP_YN =~ ^(d|D| ) ]] || [[ -z $TMP_YN ]]; then - ADMIN_PASS="1234567" - echo -e "\nAdmin password will be set to $ADMIN_PASS\n" -elif [[ $TMP_YN =~ ^(r|R) ]] ; then - ADMIN_PASS=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 ; echo '') - echo -e "\nAdmin password will be provided once installation is completed...\n" -elif [[ $TMP_YN =~ ^(s|S) ]] ; then - CUSTOM_PASS="True" - echo -e "\nPlease enter your password:" - printf "%s" "" - read -r -s -p "Password: " TMP_YN - if [ -z "$TMP_YN" ] ; then - echo -e "\nPlease do not use empty string...\n" - exit - fi - if [ ${#TMP_YN} -lt 8 ] ; then - echo -e "\nPassword lenth less than 8 digital, please choose a more complicated password.\n" - exit - fi - TMP_YN1=$TMP_YN - printf "%s\n" "" - read -r -s -p "Confirm Password:" TMP_YN - if [ -z "$TMP_YN" ] ; then - echo -e "\nPlease do not use empty string...\n" - exit - fi - TMP_YN2=$TMP_YN - if [ $TMP_YN1 = $TMP_YN2 ] ; then - ADMIN_PASS=$TMP_YN1 - else - echo -e "\nRepeated password didn't match , please check...\n" - exit - fi -else - ADMIN_PASS="1234567" - echo -e "\nAdmin password will be set to $ADMIN_PASS\n" -fi + echo -e "\nDo you wish to install Redis extension and backend?" + printf "%s" "Please select [Y/n]: " + read TMP_YN + if [[ $TMP_YN =~ ^(no|n|N) ]]; then + REDIS="OFF" + else + REDIS="ON" + fi -echo -e "\nDo you wish to install Memcached extension and backend?" -printf "%s" "Please select [Y/n]: " -read TMP_YN -if [[ $TMP_YN =~ ^(no|n|N) ]] ; then - MEMCACHED="OFF" -else - MEMCACHED="ON" -fi - -echo -e "\nDo you wish to install Redis extension and backend?" -printf "%s" "Please select [Y/n]: " -read TMP_YN -if [[ $TMP_YN =~ ^(no|n|N) ]] ; then - REDIS="OFF" -else - REDIS="ON" -fi - -echo -e "\nWould you like to set up a WatchDog \e[31m(beta)\e[39m for Web service and Database service ?" -echo -e "The watchdog script will be automatically started up after installation and server reboot" -echo -e "If you want to kill the watchdog , run \e[31mwatchdog kill\e[39m" -echo -e "Please type Yes or no (with capital \e[31mY\e[39m, default Yes):" -printf "%s" -read TMP_YN -if [[ $TMP_YN == "Yes" ]] || [[ $TMP_YN == "" ]] ; then - WATCHDOG="ON" -else - WATCHDOG="OFF" -fi + echo -e "\nWould you like to set up a WatchDog \e[31m(beta)\e[39m for Web service and Database service ?" + echo -e "The watchdog script will be automatically started up after installation and server reboot" + echo -e "If you want to kill the watchdog , run \e[31mwatchdog kill\e[39m" + echo -e "Please type Yes or no (with capital \e[31mY\e[39m, default Yes):" + printf "%s" + read TMP_YN + if [[ $TMP_YN == "Yes" ]] || [[ $TMP_YN == "" ]]; then + WATCHDOG="ON" + else + WATCHDOG="OFF" + fi } main_install() { -if [[ -e /usr/local/CyberCP ]] ; then - echo -e "\n CyberPanel already installed, exiting..." -exit -fi - -special_change - -if [[ $VERSION == "ENT" ]] ; then - echo -e "\nValidating the license..." - echo -e "\nThis may take a minute..." - echo -e "\nplease be patient...\n\n" - license_validation - - SERIAL_NO="--ent ent --serial " -fi - -sed -i 's|lsws-5.4.2|lsws-'$LSWS_STABLE_VER'|g' installCyberPanel.py -sed -i 's|lsws-5.3.5|lsws-'$LSWS_STABLE_VER'|g' installCyberPanel.py -#this sed must be done after license validation - -echo -e "Preparing..." -echo -e "Installation will start in 10 seconds, if you wish to stop please press CTRL + C" -sleep 10 -debug="1" -if [[ $debug == "0" ]] ; then - echo "/usr/local/CyberPanel/bin/python install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY --postfix $POSTFIX_VARIABLE --powerdns $POWERDNS_VARIABLE --ftp $PUREFTPD_VARIABLE" - exit -fi - - -if [[ $debug == "1" ]] ; then - - if [[ $UBUNTU_20 == "False" ]] ; then - pip3.6 install --ignore-installed /usr/local/pip-packs/* - else - pip3.6 install --ignore-installed /usr/local/packages/* + if [[ -e /usr/local/CyberCP ]]; then + echo -e "\n CyberPanel already installed, exiting..." + exit fi - if [[ $REDIS_HOSTING == "Yes" ]] ; then - if [[ $REMOTE_MYSQL == "ON" ]] ; then - /usr/local/CyberPanel/bin/python install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY --postfix $POSTFIX_VARIABLE --powerdns $POWERDNS_VARIABLE --ftp $PUREFTPD_VARIABLE --redis enable --remotemysql $REMOTE_MYSQL --mysqlhost $MYSQL_HOST --mysqldb $MYSQL_DB --mysqluser $MYSQL_USER --mysqlpassword $MYSQL_PASSWORD --mysqlport $MYSQL_PORT + special_change + + if [[ $VERSION == "ENT" ]]; then + echo -e "\nValidating the license..." + echo -e "\nThis may take a minute..." + echo -e "\nplease be patient...\n\n" + license_validation + + SERIAL_NO="--ent ent --serial " + fi + + sed -i 's|lsws-5.4.2|lsws-'$LSWS_STABLE_VER'|g' installCyberPanel.py + sed -i 's|lsws-5.3.5|lsws-'$LSWS_STABLE_VER'|g' installCyberPanel.py + #this sed must be done after license validation + + echo -e "Preparing..." + echo -e "Installation will start in 10 seconds, if you wish to stop please press CTRL + C" + sleep 10 + debug="1" + if [[ $debug == "0" ]]; then + echo "/usr/local/CyberPanel/bin/python install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY --postfix $POSTFIX_VARIABLE --powerdns $POWERDNS_VARIABLE --ftp $PUREFTPD_VARIABLE" + exit + fi + + if [[ $debug == "1" ]]; then + + if [[ $UBUNTU_20 == "False" ]]; then + pip3.6 install --ignore-installed /usr/local/pip-packs/* + else + pip3.6 install --ignore-installed /usr/local/packages/* + fi + + if [[ $REDIS_HOSTING == "Yes" ]]; then + if [[ $REMOTE_MYSQL == "ON" ]]; then + /usr/local/CyberPanel/bin/python install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY --postfix $POSTFIX_VARIABLE --powerdns $POWERDNS_VARIABLE --ftp $PUREFTPD_VARIABLE --redis enable --remotemysql $REMOTE_MYSQL --mysqlhost $MYSQL_HOST --mysqldb $MYSQL_DB --mysqluser $MYSQL_USER --mysqlpassword $MYSQL_PASSWORD --mysqlport $MYSQL_PORT else /usr/local/CyberPanel/bin/python install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY --postfix $POSTFIX_VARIABLE --powerdns $POWERDNS_VARIABLE --ftp $PUREFTPD_VARIABLE --redis enable --remotemysql $REMOTE_MYSQL fi - else - if [[ $REMOTE_MYSQL == "ON" ]] ; then - echo "/usr/local/CyberPanel/bin/python install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY --postfix $POSTFIX_VARIABLE --powerdns $POWERDNS_VARIABLE --ftp $PUREFTPD_VARIABLE --remotemysql $REMOTE_MYSQL --mysqlhost $MYSQL_HOST --mysqluser $MYSQL_USER --mysqlpassword $MYSQL_PASSWORD --mysqlport $MYSQL_PORT" - /usr/local/CyberPanel/bin/python install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY --postfix $POSTFIX_VARIABLE --powerdns $POWERDNS_VARIABLE --ftp $PUREFTPD_VARIABLE --remotemysql $REMOTE_MYSQL --mysqlhost $MYSQL_HOST --mysqldb $MYSQL_DB --mysqluser $MYSQL_USER --mysqlpassword $MYSQL_PASSWORD --mysqlport $MYSQL_PORT else + if [[ $REMOTE_MYSQL == "ON" ]]; then + echo "/usr/local/CyberPanel/bin/python install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY --postfix $POSTFIX_VARIABLE --powerdns $POWERDNS_VARIABLE --ftp $PUREFTPD_VARIABLE --remotemysql $REMOTE_MYSQL --mysqlhost $MYSQL_HOST --mysqluser $MYSQL_USER --mysqlpassword $MYSQL_PASSWORD --mysqlport $MYSQL_PORT" + /usr/local/CyberPanel/bin/python install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY --postfix $POSTFIX_VARIABLE --powerdns $POWERDNS_VARIABLE --ftp $PUREFTPD_VARIABLE --remotemysql $REMOTE_MYSQL --mysqlhost $MYSQL_HOST --mysqldb $MYSQL_DB --mysqluser $MYSQL_USER --mysqlpassword $MYSQL_PASSWORD --mysqlport $MYSQL_PORT + else /usr/local/CyberPanel/bin/python install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY --postfix $POSTFIX_VARIABLE --powerdns $POWERDNS_VARIABLE --ftp $PUREFTPD_VARIABLE --remotemysql $REMOTE_MYSQL + fi fi + + if grep "CyberPanel installation successfully completed" /var/log/installLogs.txt >/dev/null; then + echo -e "\nCyberPanel installation sucessfully completed..." + else + echo -e "Oops, something went wrong..." + exit + fi + + if [[ $MEMCACHED == "ON" ]]; then + memcached_installation + fi + if [[ $REDIS == "ON" ]]; then + redis_installation + fi + after_install fi - if grep "CyberPanel installation successfully completed" /var/log/installLogs.txt > /dev/null; then - echo -e "\nCyberPanel installation sucessfully completed..." -else - echo -e "Oops, something went wrong..." - exit -fi - -if [[ $MEMCACHED == "ON" ]] ; then - memcached_installation -fi -if [[ $REDIS == "ON" ]] ; then - redis_installation -fi - after_install -fi - } pip_virtualenv() { -if [[ $SERVER_OS == "Ubuntu" ]] ; then -DEBIAN_FRONTEND=noninteractive apt install -y locales -locale-gen "en_US.UTF-8" -update-locale LC_ALL="en_US.UTF-8" -fi - -export LC_CTYPE=en_US.UTF-8 -export LC_ALL=en_US.UTF-8 -#need to set lang to address some pip module installation issue. - -if [[ $DEV == "ON" ]] ; then - #install dev branch - #wget https://raw.githubusercontent.com/usmannasir/cyberpanel/$BRANCH_NAME/requirments.txt - virtualenv -p /usr/bin/python3 /usr/local/CyberPanel - - if [[ $UBUNTU_20 == "False" ]] ; then - source /usr/local/CyberPanel/bin/activate - wget -O /usr/local/cyberpanel-pip.zip https://rep.cyberpanel.net/cyberpanel-pip-3.zip - check_return - unzip /usr/local/cyberpanel-pip.zip -d /usr/local - check_return - pip3.6 install --ignore-installed /usr/local/pip-packs/* - check_return - else - . /usr/local/CyberPanel/bin/activate - wget -O /usr/local/cyberpanel-pip.zip https://rep.cyberpanel.net/ubuntu-pip-3.zip - check_return - unzip /usr/local/cyberpanel-pip.zip -d /usr/local - check_return - pip3 install --ignore-installed /usr/local/packages/* - check_return + if [[ $SERVER_OS == "Ubuntu" ]]; then + DEBIAN_FRONTEND=noninteractive apt install -y locales + locale-gen "en_US.UTF-8" + update-locale LC_ALL="en_US.UTF-8" fi -fi -if [ -f requirements.txt ] && [ -d cyberpanel ] ; then - rm -rf cyberpanel - rm -f requirements.txt -fi + export LC_CTYPE=en_US.UTF-8 + export LC_ALL=en_US.UTF-8 + #need to set lang to address some pip module installation issue. -git clone https://${GIT_URL} -cd cyberpanel -git checkout $BRANCH_NAME -check_return -cd - -cp -r cyberpanel /usr/local/cyberpanel -cd cyberpanel/install + if [[ $DEV == "ON" ]]; then + #install dev branch + #wget https://raw.githubusercontent.com/usmannasir/cyberpanel/$BRANCH_NAME/requirments.txt + virtualenv -p /usr/bin/python3 /usr/local/CyberPanel + if [[ $UBUNTU_20 == "False" ]]; then + source /usr/local/CyberPanel/bin/activate + wget -O /usr/local/cyberpanel-pip.zip https://rep.cyberpanel.net/cyberpanel-pip-3.zip + check_return + unzip /usr/local/cyberpanel-pip.zip -d /usr/local + check_return + pip3.6 install --ignore-installed /usr/local/pip-packs/* + check_return + else + . /usr/local/CyberPanel/bin/activate + wget -O /usr/local/cyberpanel-pip.zip https://rep.cyberpanel.net/ubuntu-pip-3.zip + check_return + unzip /usr/local/cyberpanel-pip.zip -d /usr/local + check_return + pip3 install --ignore-installed /usr/local/packages/* + check_return + fi + fi -curl https://cyberpanel.sh/?version + if [ -f requirements.txt ] && [ -d cyberpanel ]; then + rm -rf cyberpanel + rm -f requirements.txt + fi + + git clone https://${GIT_URL} + cd cyberpanel + git checkout $BRANCH_NAME + check_return + cd - + cp -r cyberpanel /usr/local/cyberpanel + cd cyberpanel/install + + curl https://cyberpanel.sh/?version } regenerate_cert() { -cat << EOF > /root/cyberpanel/cert_conf + cat </root/cyberpanel/cert_conf [req] prompt=no distinguished_name=cyberpanel @@ -1227,435 +1219,438 @@ dnQualifier = CyberPanel [server_exts] extendedKeyUsage = 1.3.6.1.5.5.7.3.1 EOF -openssl req -x509 -config /root/cyberpanel/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 + openssl req -x509 -config /root/cyberpanel/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 -if [[ $VERSION == "OLS" ]] ; 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 + if [[ $VERSION == "OLS" ]]; 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 /root/cyberpanel/cert_conf -extensions 'server_exts' -nodes -days 820 -newkey rsa:2048 -keyout $key_path -out $cert_path -rm -f /root/cyberpanel/cert_conf + openssl req -x509 -config /root/cyberpanel/cert_conf -extensions 'server_exts' -nodes -days 820 -newkey rsa:2048 -keyout $key_path -out $cert_path + rm -f /root/cyberpanel/cert_conf } after_install() { -if [ ! -d "/var/lib/php" ]; then - mkdir /var/lib/php -fi + if [ ! -d "/var/lib/php" ]; then + mkdir /var/lib/php + fi -if [ ! -d "/var/lib/php/session" ]; then - mkdir /var/lib/php/session -fi + if [ ! -d "/var/lib/php/session" ]; then + mkdir /var/lib/php/session + fi -chmod 1733 /var/lib/php/session + chmod 1733 /var/lib/php/session -if grep "\[ERROR\] We are not able to run ./install.sh return code: 1. Fatal error, see /var/log/installLogs.txt for full details" /var/log/installLogs.txt > /dev/null; then - cd ${DIR}/cyberpanel/install/lsws-* - ./install.sh - echo -e "\n\n\nIt seems LiteSpeed Enterprise has failed to install, please check your license key is valid" - echo -e "\nIf this license key has been used before, you may need to go to store to release it first." - exit -fi + if grep "\[ERROR\] We are not able to run ./install.sh return code: 1. Fatal error, see /var/log/installLogs.txt for full details" /var/log/installLogs.txt >/dev/null; then + cd ${DIR}/cyberpanel/install/lsws-* + ./install.sh + echo -e "\n\n\nIt seems LiteSpeed Enterprise has failed to install, please check your license key is valid" + echo -e "\nIf this license key has been used before, you may need to go to store to release it first." + exit + fi + if grep "CyberPanel installation successfully completed" /var/log/installLogs.txt >/dev/null; then -if grep "CyberPanel installation successfully completed" /var/log/installLogs.txt > /dev/null; then + if [[ $DEV == "ON" ]]; then -if [[ $DEV == "ON" ]] ; then - - if [[ $PROVIDER == "Alibaba Cloud" ]] && [[ $SERVER_OS == "Ubuntu" ]] ; then - cat << EOF > /root/.config/pip/pip.conf + if [[ $PROVIDER == "Alibaba Cloud" ]] && [[ $SERVER_OS == "Ubuntu" ]]; then + cat </root/.config/pip/pip.conf [global] index-url = https://pypi.python.org/simple/ [install] trusted-host=pypi.python.org EOF - fi + fi -fi + fi -virtualenv -p /usr/bin/python3 /usr/local/CyberCP + virtualenv -p /usr/bin/python3 /usr/local/CyberCP -if [[ $UBUNTU_20 == "False" ]] ; then - source /usr/local/CyberCP/bin/activate - check_return - pip3 install --ignore-installed /usr/local/pip-packs/* - check_return -else - . /usr/local/CyberCP/bin/activate - check_return - pip3 install --ignore-installed /usr/local/packages/* - check_return -fi + if [[ $UBUNTU_20 == "False" ]]; then + source /usr/local/CyberCP/bin/activate + check_return + pip3 install --ignore-installed /usr/local/pip-packs/* + check_return + else + . /usr/local/CyberCP/bin/activate + check_return + pip3 install --ignore-installed /usr/local/packages/* + check_return + fi -systemctl restart lscpd + systemctl restart lscpd -for version in $(ls /usr/local/lsws | grep lsphp); - do - php_ini=$(find /usr/local/lsws/$version/ -name php.ini) - version2=${version:5:2} - version2=$(awk "BEGIN { print "${version2}/10" }") - if [[ $version2 = "7" ]] ; then - version2="7.0" - fi - if [[ $SERVER_OS == "CentOS" ]] ; then - yum remove -y $version-mysql - yum install -y $version-mysqlnd - yum install -y $version-devel make gcc glibc-devel libmemcached-devel zlib-devel - if [[ ! -d /usr/local/lsws/$version/tmp ]] ; then - mkdir /usr/local/lsws/$version/tmp - fi - /usr/local/lsws/${version}/bin/pecl channel-update pecl.php.net - /usr/local/lsws/${version}/bin/pear config-set temp_dir /usr/local/lsws/${version}/tmp - /usr/local/lsws/${version}/bin/pecl install timezonedb - echo "extension=timezonedb.so" > /usr/local/lsws/${version}/etc/php.d/20-timezone.ini - chmod 755 /usr/local/lsws/${version}/lib64/php/modules/timezonedb.so - sed -i 's|expose_php = On|expose_php = Off|g' $php_ini - sed -i 's|mail.add_x_header = On|mail.add_x_header = Off|g' $php_ini - sed -i 's|;session.save_path = "/tmp"|session.save_path = "/var/lib/php/session"|g' $php_ini - fi + for version in $(ls /usr/local/lsws | grep lsphp); do + php_ini=$(find /usr/local/lsws/$version/ -name php.ini) + version2=${version:5:2} + version2=$(awk "BEGIN { print "${version2}/10" }") + if [[ $version2 == "7" ]]; then + version2="7.0" + fi + if [[ $SERVER_OS == "CentOS" ]]; then + yum remove -y $version-mysql + yum install -y $version-mysqlnd + yum install -y $version-devel make gcc glibc-devel libmemcached-devel zlib-devel + if [[ ! -d /usr/local/lsws/$version/tmp ]]; then + mkdir /usr/local/lsws/$version/tmp + fi + /usr/local/lsws/${version}/bin/pecl channel-update pecl.php.net + /usr/local/lsws/${version}/bin/pear config-set temp_dir /usr/local/lsws/${version}/tmp + /usr/local/lsws/${version}/bin/pecl install timezonedb + echo "extension=timezonedb.so" >/usr/local/lsws/${version}/etc/php.d/20-timezone.ini + chmod 755 /usr/local/lsws/${version}/lib64/php/modules/timezonedb.so + sed -i 's|expose_php = On|expose_php = Off|g' $php_ini + sed -i 's|mail.add_x_header = On|mail.add_x_header = Off|g' $php_ini + sed -i 's|;session.save_path = "/tmp"|session.save_path = "/var/lib/php/session"|g' $php_ini + fi - if [[ $SERVER_OS == "Ubuntu" ]] ; then - if [[ ! -d /usr/local/lsws/cyberpanel-tmp ]] ; then - if [[ -d /etc/pure-ftpd/conf ]] ; then - echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone - systemctl restart pure-ftpd-mysql - fi - DEBIAN_FRONTEND=noninteractive apt install libmagickwand-dev pkg-config build-essential -y - mkdir /usr/local/lsws/cyberpanel-tmp - cd /usr/local/lsws/cyberpanel-tmp - wget -O timezonedb.tgz https://pecl.php.net/get/timezonedb - tar xzvf timezonedb.tgz - cd timezonedb-* - fi - /usr/local/lsws/${version}/bin/phpize - ./configure --with-php-config=/usr/local/lsws/${version}/bin/php-config${version2} - make - make install - echo "extension=timezonedb.so" > /usr/local/lsws/${version}/etc/php/${version2}/mods-available/20-timezone.ini - make clean - fi -done + if [[ $SERVER_OS == "Ubuntu" ]]; then + if [[ ! -d /usr/local/lsws/cyberpanel-tmp ]]; then + if [[ -d /etc/pure-ftpd/conf ]]; then + echo "yes" >/etc/pure-ftpd/conf/ChrootEveryone + systemctl restart pure-ftpd-mysql + fi + DEBIAN_FRONTEND=noninteractive apt install libmagickwand-dev pkg-config build-essential -y + mkdir /usr/local/lsws/cyberpanel-tmp + cd /usr/local/lsws/cyberpanel-tmp + wget -O timezonedb.tgz https://pecl.php.net/get/timezonedb + tar xzvf timezonedb.tgz + cd timezonedb-* + fi + /usr/local/lsws/${version}/bin/phpize + ./configure --with-php-config=/usr/local/lsws/${version}/bin/php-config${version2} + make + make install + echo "extension=timezonedb.so" >/usr/local/lsws/${version}/etc/php/${version2}/mods-available/20-timezone.ini + make clean + fi + done -rm -rf /etc/profile.d/cyberpanel* -curl --silent -o /etc/profile.d/cyberpanel.sh https://cyberpanel.sh/?banner 2>/dev/null -chmod +x /etc/profile.d/cyberpanel.sh -RAM2=$(free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }') -DISK2=$(df -h | awk '$NF=="/"{printf "%d/%dGB (%s)\n", $3,$2,$5}') -ELAPSED="$(($SECONDS / 3600)) hrs $((($SECONDS / 60) % 60)) min $(($SECONDS % 60)) sec" -MYSQLPASSWD=$(cat /etc/cyberpanel/mysqlPassword) -echo "$ADMIN_PASS" > /etc/cyberpanel/adminPass -/usr/local/CyberPanel/bin/python /usr/local/CyberCP/plogical/adminPass.py --password $ADMIN_PASS -mkdir -p /etc/opendkim + rm -rf /etc/profile.d/cyberpanel* + curl --silent -o /etc/profile.d/cyberpanel.sh https://cyberpanel.sh/?banner 2>/dev/null + chmod +x /etc/profile.d/cyberpanel.sh + RAM2=$(free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }') + DISK2=$(df -h | awk '$NF=="/"{printf "%d/%dGB (%s)\n", $3,$2,$5}') + ELAPSED="$((SECONDS / 3600)) hrs $(((SECONDS / 60) % 60)) min $((SECONDS % 60)) sec" + MYSQLPASSWD=$(cat /etc/cyberpanel/mysqlPassword) + echo "$ADMIN_PASS" >/etc/cyberpanel/adminPass + /usr/local/CyberPanel/bin/python /usr/local/CyberCP/plogical/adminPass.py --password $ADMIN_PASS + mkdir -p /etc/opendkim -regenerate_cert + regenerate_cert -systemctl restart lscpd -systemctl restart lsws -echo "/usr/local/CyberPanel/bin/python /usr/local/CyberCP/plogical/adminPass.py --password \$@" > /usr/bin/adminPass -echo "systemctl restart lscpd" >> /usr/bin/adminPass -chmod 700 /usr/bin/adminPass -if [[ $VERSION = "OLS" ]] ; then - WORD="OpenLiteSpeed" -# sed -i 's|maxConnections 10000|maxConnections 100000|g' /usr/local/lsws/conf/httpd_config.conf -# OLS_LATEST=$(curl https://openlitespeed.org/packages/release) -# wget https://openlitespeed.org/packages/openlitespeed-$OLS_LATEST.tgz -# tar xzvf openlitespeed-$OLS_LATEST.tgz -# cd openlitespeed -# ./install.sh - systemctl stop lsws - systemctl start lsws -# rm -f openlitespeed-$OLS_LATEST.tgz -# rm -rf openlitespeed -# cd .. -fi -if [[ $VERSION = "ENT" ]] ; then - WORD="LiteSpeed Enterprise" - if [[ $SERVER_COUNTRY != "CN" ]] ; then - /usr/local/lsws/admin/misc/lsup.sh -f -v $LSWS_STABLE_VER - fi -fi + systemctl restart lscpd + systemctl restart lsws + echo '/usr/local/CyberPanel/bin/python /usr/local/CyberCP/plogical/adminPass.py --password $@' >/usr/bin/adminPass + echo "systemctl restart lscpd" >>/usr/bin/adminPass + chmod 700 /usr/bin/adminPass + if [[ $VERSION == "OLS" ]]; then + WORD="OpenLiteSpeed" + # sed -i 's|maxConnections 10000|maxConnections 100000|g' /usr/local/lsws/conf/httpd_config.conf + # OLS_LATEST=$(curl https://openlitespeed.org/packages/release) + # wget https://openlitespeed.org/packages/openlitespeed-$OLS_LATEST.tgz + # tar xzvf openlitespeed-$OLS_LATEST.tgz + # cd openlitespeed + # ./install.sh + systemctl stop lsws + systemctl start lsws + # rm -f openlitespeed-$OLS_LATEST.tgz + # rm -rf openlitespeed + # cd .. + fi + if [[ $VERSION == "ENT" ]]; then + WORD="LiteSpeed Enterprise" + if [[ $SERVER_COUNTRY != "CN" ]]; then + /usr/local/lsws/admin/misc/lsup.sh -f -v $LSWS_STABLE_VER + fi + fi -systemctl status lsws > /dev/null 2>&1 -if [[ $? == "0" ]] ; then - echo "LSWS service is running..." -else - systemctl stop lsws - systemctl start lsws -fi + systemctl status lsws >/dev/null 2>&1 + if [[ $? == "0" ]]; then + echo "LSWS service is running..." + else + systemctl stop lsws + systemctl start lsws + fi -webadmin_passwd + webadmin_passwd -watchdog_setup + watchdog_setup -install_utility + install_utility -if [[ ! -f /usr/sbin/ipset ]] && [[ $SERVER_OS == "Ubuntu" ]] ; then -ln -s /sbin/ipset /usr/sbin/ipset -fi + if [[ ! -f /usr/sbin/ipset ]] && [[ $SERVER_OS == "Ubuntu" ]]; then + ln -s /sbin/ipset /usr/sbin/ipset + fi -if [[ ! -f /usr/local/lsws/lsphp74/lib64/php/modules/zip.so ]] && [[ $SERVER_OS == "CentOS" ]] && [[ $CENTOS_8 == "False" ]]; then - yum list installed libzip-devel - if [[ $? == "0" ]] ; then - yum remove -y libzip-devel - fi - yum install -y https://$DOWNLOAD_SERVER/misc/libzip-0.11.2-6.el7.psychotic.x86_64.rpm - yum install -y https://$DOWNLOAD_SERVER/misc/libzip-devel-0.11.2-6.el7.psychotic.x86_64.rpm - /usr/local/lsws/lsphp74/bin/pecl install zip - 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 -fi -#fix the lsphp74-zip missing issue. + if [[ ! -f /usr/local/lsws/lsphp74/lib64/php/modules/zip.so ]] && [[ $SERVER_OS == "CentOS" ]] && [[ $CENTOS_8 == "False" ]]; then + yum list installed libzip-devel + if [[ $? == "0" ]]; then + yum remove -y libzip-devel + fi + yum install -y https://$DOWNLOAD_SERVER/misc/libzip-0.11.2-6.el7.psychotic.x86_64.rpm + yum install -y https://$DOWNLOAD_SERVER/misc/libzip-devel-0.11.2-6.el7.psychotic.x86_64.rpm + /usr/local/lsws/lsphp74/bin/pecl install zip + 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 + fi + #fix the lsphp74-zip missing issue. - if [[ $SERVER_OS == "CentOS" ]] ; 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 - fi -#fix php.ini & issue + if [[ $SERVER_OS == "CentOS" ]]; 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 + fi + #fix php.ini & issue -if [[ $UBUNTU_20 == "True" ]] ; then - cp /usr/local/lsws/lsphp73/bin/php /usr/bin -fi + if [[ $UBUNTU_20 == "True" ]]; then + cp /usr/local/lsws/lsphp73/bin/php /usr/bin + fi -#clear -echo "###################################################################" -echo " CyberPanel Successfully Installed " -echo " " -echo " Current Disk usage : $DISK2 " -echo " " -echo " Current RAM usage : $RAM2 " -echo " " -echo " Installation time : $ELAPSED " -echo " " -echo " Visit: https://$SERVER_IP:8090 " -echo " Panel username: admin " -if [[ $CUSTOM_PASS == "True" ]] ; then - echo " Panel password: ***** " -elif [[ $CUSTOM_PASS == "False" ]] ; then - echo " Panel password: $ADMIN_PASS " -fi -echo " WebAdmin console username: admin " -echo " WebAdmin console password: $WEBADMIN_PASS " -echo " " -echo -e " Run \e[31mcyberpanel help\e[39m to get FAQ info" -echo -e " Run \e[31mcyberpanel upgrade\e[39m to upgrade it to latest version." -echo -e " Run \e[31mcyberpanel utility\e[39m to access some handy tools ." -echo " " -echo " Website : https://www.cyberpanel.net " -echo " Forums : https://forums.cyberpanel.net " -echo " Wikipage: https://docs.cyberpanel.net " -echo " " -echo -e " Enjoy your accelerated Internet by " -echo -e " CyberPanel & $WORD " -echo "###################################################################" -if [[ $PROVIDER != "undefined" ]] ; then - echo -e "\033[0;32m$PROVIDER\033[39m detected..." - echo -e "This provider has a \e[31mnetwork-level firewall\033[39m" -else - echo -e "If your provider has a \e[31mnetwork-level firewall\033[39m" -fi - echo -e "Please make sure you have opened following port for both in/out:" - echo -e "\033[0;32mTCP: 8090\033[39m for CyberPanel" - echo -e "\033[0;32mTCP: 80\033[39m, \033[0;32mTCP: 443\033[39m and \033[0;32mUDP: 443\033[39m for webserver" - echo -e "\033[0;32mTCP: 21\033[39m and \033[0;32mTCP: 40110-40210\033[39m for FTP" - echo -e "\033[0;32mTCP: 25\033[39m, \033[0;32mTCP: 587\033[39m, \033[0;32mTCP: 465\033[39m, \033[0;32mTCP: 110\033[39m, \033[0;32mTCP: 143\033[39m and \033[0;32mTCP: 993\033[39m for mail service" - echo -e "\033[0;32mTCP: 53\033[39m and \033[0;32mUDP: 53\033[39m for DNS service" + #clear + echo "###################################################################" + echo " CyberPanel Successfully Installed " + echo " " + echo " Current Disk usage : $DISK2 " + echo " " + echo " Current RAM usage : $RAM2 " + echo " " + echo " Installation time : $ELAPSED " + echo " " + echo " Visit: https://$SERVER_IP:8090 " + echo " Panel username: admin " + if [[ $CUSTOM_PASS == "True" ]]; then + echo " Panel password: ***** " + elif [[ $CUSTOM_PASS == "False" ]]; then + echo " Panel password: $ADMIN_PASS " + fi + echo " WebAdmin console username: admin " + echo " WebAdmin console password: $WEBADMIN_PASS " + echo " " + echo -e " Run \e[31mcyberpanel help\e[39m to get FAQ info" + echo -e " Run \e[31mcyberpanel upgrade\e[39m to upgrade it to latest version." + echo -e " Run \e[31mcyberpanel utility\e[39m to access some handy tools ." + echo " " + echo " Website : https://www.cyberpanel.net " + echo " Forums : https://forums.cyberpanel.net " + echo " Wikipage: https://docs.cyberpanel.net " + echo " " + echo -e " Enjoy your accelerated Internet by " + echo -e " CyberPanel & $WORD " + echo "###################################################################" + if [[ $PROVIDER != "undefined" ]]; then + echo -e "\033[0;32m$PROVIDER\033[39m detected..." + echo -e "This provider has a \e[31mnetwork-level firewall\033[39m" + else + echo -e "If your provider has a \e[31mnetwork-level firewall\033[39m" + fi + echo -e "Please make sure you have opened following port for both in/out:" + echo -e "\033[0;32mTCP: 8090\033[39m for CyberPanel" + echo -e "\033[0;32mTCP: 80\033[39m, \033[0;32mTCP: 443\033[39m and \033[0;32mUDP: 443\033[39m for webserver" + echo -e "\033[0;32mTCP: 21\033[39m and \033[0;32mTCP: 40110-40210\033[39m for FTP" + echo -e "\033[0;32mTCP: 25\033[39m, \033[0;32mTCP: 587\033[39m, \033[0;32mTCP: 465\033[39m, \033[0;32mTCP: 110\033[39m, \033[0;32mTCP: 143\033[39m and \033[0;32mTCP: 993\033[39m for mail service" + echo -e "\033[0;32mTCP: 53\033[39m and \033[0;32mUDP: 53\033[39m for DNS service" - if ! timeout 3 telnet mx.zoho.com 25 | grep "Escape" > /dev/null 2>&1 ; then - echo -e "Your provider seems \e[31mblocked\033[39m port 25 , E-mail sending may \e[31mnot\033[39m work properly." - fi + if ! timeout 3 telnet mx.zoho.com 25 | grep "Escape" >/dev/null 2>&1; then + echo -e "Your provider seems \e[31mblocked\033[39m port 25 , E-mail sending may \e[31mnot\033[39m work properly." + fi -if [[ $SERVER_COUNTRY = CN ]] ; then - if [[ $PROVIDER == "Tencent Cloud" ]] ; then - if [[ $SERVER_OS == "Ubuntu" ]] ; then - rm -f /etc/apt/sources.list - mv /etc/apt/sources.list-backup /etc/apt/sources.list -echo > "nameserver 127.0.0.53 + if [[ $SERVER_COUNTRY == CN ]]; then + if [[ $PROVIDER == "Tencent Cloud" ]]; then + if [[ $SERVER_OS == "Ubuntu" ]]; then + rm -f /etc/apt/sources.list + mv /etc/apt/sources.list-backup /etc/apt/sources.list + echo >"nameserver 127.0.0.53 options edns0" /run/systemd/resolve/stub-resolv.conf -echo > "nameserver 127.0.0.53 + echo >"nameserver 127.0.0.53 options edns0" /etc/resolv.conf - apt update -#revert the previous change on tencent cloud repo. - fi - fi - if [[ $VERSION = "ENT" ]] ; then - sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.3.5-ent-x86_64-linux.tar.gz|https://cyberpanel.sh/packages/5.0/lsws-5.3.5-ent-x86_64-linux.tar.gz|g' /usr/local/CyberCP/install/installCyberPanel.py - sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.3.8-ent-x86_64-linux.tar.gz|https://cyberpanel.sh/packages/5.0/lsws-5.3.8-ent-x86_64-linux.tar.gz|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py - sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.3.8-ent-x86_64-linux.tar.gz|https://'$DOWNLOAD_SERVER'/litespeed/lsws-'$LSWS_STABLE_VER'-ent-x86_64-linux.tar.gz|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py - echo -e "If you have install LiteSpeed Enterprise, please run \e[31m/usr/local/lsws/admin/misc/lsup.sh\033[39m to update it to latest." - fi -fi + apt update + #revert the previous change on tencent cloud repo. + fi + fi + if [[ $VERSION == "ENT" ]]; then + sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.3.5-ent-x86_64-linux.tar.gz|https://cyberpanel.sh/packages/5.0/lsws-5.3.5-ent-x86_64-linux.tar.gz|g' /usr/local/CyberCP/install/installCyberPanel.py + sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.3.8-ent-x86_64-linux.tar.gz|https://cyberpanel.sh/packages/5.0/lsws-5.3.8-ent-x86_64-linux.tar.gz|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py + sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.3.8-ent-x86_64-linux.tar.gz|https://'$DOWNLOAD_SERVER'/litespeed/lsws-'$LSWS_STABLE_VER'-ent-x86_64-linux.tar.gz|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py + echo -e "If you have install LiteSpeed Enterprise, please run \e[31m/usr/local/lsws/admin/misc/lsup.sh\033[39m to update it to latest." + fi + fi -sed -i 's|lsws-5.3.8|lsws-'$LSWS_STABLE_VER'|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py -sed -i 's|lsws-5.4.2|lsws-'$LSWS_STABLE_VER'|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py -sed -i 's|lsws-5.3.5|lsws-'$LSWS_STABLE_VER'|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py + sed -i 's|lsws-5.3.8|lsws-'$LSWS_STABLE_VER'|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py + sed -i 's|lsws-5.4.2|lsws-'$LSWS_STABLE_VER'|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py + sed -i 's|lsws-5.3.5|lsws-'$LSWS_STABLE_VER'|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py -if [[ -f /etc/pure-ftpd/pure-ftpd.conf ]] ; then -sed -i 's|NoAnonymous no|NoAnonymous yes|g' /etc/pure-ftpd/pure-ftpd.conf -fi + if [[ -f /etc/pure-ftpd/pure-ftpd.conf ]]; then + sed -i 's|NoAnonymous no|NoAnonymous yes|g' /etc/pure-ftpd/pure-ftpd.conf + fi -if [[ $SILENT != "ON" ]] ; then -printf "%s" "Would you like to restart your server now? [y/N]: " -read TMP_YN + if [[ $SILENT != "ON" ]]; then + printf "%s" "Would you like to restart your server now? [y/N]: " + read TMP_YN -if [[ "$TMP_YN" = "N" ]] || [[ "$TMP_YN" = "n" ]] || [[ -z "$TMP_YN" ]]; then -: -else -reboot -exit -fi + if [[ $TMP_YN == "N" ]] || [[ $TMP_YN == "n" ]] || [[ -z $TMP_YN ]]; then + : + else + reboot + exit + fi -exit -fi -#replace URL for CN + exit + fi + #replace URL for CN + else - -else -echo "something went wrong..." -exit -fi + echo "something went wrong..." + exit + fi } argument_mode() { -DEV="ON" -BRANCH_NAME="stable" -#default to python3 branch. -KEY_SIZE=${#VERSION} -TMP=$(echo $VERSION | cut -c5) -TMP2=$(echo $VERSION | cut -c10) -TMP3=$(echo $VERSION | cut -c15) -if [[ $VERSION == "OLS" || $VERSION == "ols" ]] ; then - VERSION="OLS" - echo -e "\nSet to OpenLiteSpeed..." -elif [[ $VERSION == "Trial" ]] || [[ $VERSION == "TRIAL" ]] || [[ $VERSION == "trial" ]] ; then - VERSION="ENT" - LICENSE_KEY="TRIAL" - echo -e "\nLiteSpeed Enterprise trial license set..." -elif [[ $TMP == "-" ]] && [[ $TMP2 == "-" ]] && [[ $TMP3 == "-" ]] && [[ $KEY_SIZE == "19" ]] ; then - LICENSE_KEY=$VERSION - VERSION="ENT" - echo -e "\nLiteSpeed Enterprise license key set..." -else - echo -e "\nCan not recognize the input value \e[31m$VERSION\e[39m " - echo -e "\nPlease verify the input value..." - echo -e "\nPlease run with \e[31m-h\e[39m or \e[31m--help\e[39m for more detail." - exit -fi + DEV="ON" + BRANCH_NAME="stable" + #default to python3 branch. + KEY_SIZE=${#VERSION} + TMP=$(echo $VERSION | cut -c5) + TMP2=$(echo $VERSION | cut -c10) + TMP3=$(echo $VERSION | cut -c15) + if [[ $VERSION == "OLS" || $VERSION == "ols" ]]; then + VERSION="OLS" + echo -e "\nSet to OpenLiteSpeed..." + elif [[ $VERSION == "Trial" ]] || [[ $VERSION == "TRIAL" ]] || [[ $VERSION == "trial" ]]; then + VERSION="ENT" + LICENSE_KEY="TRIAL" + echo -e "\nLiteSpeed Enterprise trial license set..." + elif [[ $TMP == "-" ]] && [[ $TMP2 == "-" ]] && [[ $TMP3 == "-" ]] && [[ $KEY_SIZE == "19" ]]; then + LICENSE_KEY=$VERSION + VERSION="ENT" + echo -e "\nLiteSpeed Enterprise license key set..." + else + echo -e "\nCan not recognize the input value \e[31m$VERSION\e[39m " + echo -e "\nPlease verify the input value..." + echo -e "\nPlease run with \e[31m-h\e[39m or \e[31m--help\e[39m for more detail." + exit + fi -if [[ $ADMIN_PASS == "d" ]] ; then - ADMIN_PASS="1234567" - echo -e "\nSet to default password..." - echo -e "\nAdmin password will be set to \e[31m$ADMIN_PASS\e[39m" -elif [[ $ADMIN_PASS == "r" ]] ; then - ADMIN_PASS=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 ; echo '') - echo -e "\nSet to random-generated password..." - echo -e "\nAdmin password will be set to \e[31m$ADMIN_PASS\e[39m" - echo $ADMIN_PASS -else - echo -e "\nAdmin password will be set to \e[31m$ADMIN_PASS\e[39m" -fi + if [[ $ADMIN_PASS == "d" ]]; then + ADMIN_PASS="1234567" + echo -e "\nSet to default password..." + echo -e "\nAdmin password will be set to \e[31m$ADMIN_PASS\e[39m" + elif [[ $ADMIN_PASS == "r" ]]; then + ADMIN_PASS=$( + head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 + echo '' + ) + echo -e "\nSet to random-generated password..." + echo -e "\nAdmin password will be set to \e[31m$ADMIN_PASS\e[39m" + echo $ADMIN_PASS + else + echo -e "\nAdmin password will be set to \e[31m$ADMIN_PASS\e[39m" + fi } ##START -if [ $# -eq 0 ] ; then - echo -e "\nInitializing...\n" +if [ $# -eq 0 ]; then + echo -e "\nInitializing...\n" else - if [[ $1 == "help" ]] ; then - show_help - exit - elif [[ $1 == "dev" ]] ; then - DEV="ON" - DEV_ARG="ON" - SILENT="OFF" - elif [[ $1 == "default" ]] ; then - echo -e "\nThis will start default installation...\n" - SILENT="ON" - POSTFIX_VARIABLE="ON" - POWERDNS_VARIABLE="ON" - PUREFTPD_VARIABLE="ON" - VERSION="OLS" - ADMIN_PASS="1234567" - MEMCACHED="ON" - REDIS="ON" - else - while [ ! -z "${1}" ]; do - case $1 in - -v | --version) shift - if [ "${1}" = '' ]; then - show_help - exit - else - VERSION="${1}" - SILENT="ON" - fi - ;; - -p | --password) shift - if [[ "${1}" == '' ]]; then - ADMIN_PASS="1234567" - elif [[ "${1}" == 'r' ]] || [[ $1 == 'random' ]] ; then - ADMIN_PASS=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 ; echo '') - elif [[ ${1} == "d" ]] ; then - ADMIN_PASS="1234567" - else - if [ ${#1} -lt 8 ] ; then - echo -e "\nPassword lenth less than 8 digital, please choose a more complicated password.\n" - exit - fi - ADMIN_PASS="${1}" - fi - ;; - -a | --addons) - MEMCACHED="ON" - REDIS="ON" - ;; - -m | --minimal) - POSTFIX_VARIABLE="OFF" - POWERDNS_VARIABLE="OFF" - PUREFTPD_VARIABLE="OFF" - ;; - -h | --help) - show_help - exit - ;; - *) - echo "unknown argument..." - show_help - exit - ;; - esac - shift - done - fi + if [[ $1 == "help" ]]; then + show_help + exit + elif [[ $1 == "dev" ]]; then + DEV="ON" + DEV_ARG="ON" + SILENT="OFF" + elif [[ $1 == "default" ]]; then + echo -e "\nThis will start default installation...\n" + SILENT="ON" + POSTFIX_VARIABLE="ON" + POWERDNS_VARIABLE="ON" + PUREFTPD_VARIABLE="ON" + VERSION="OLS" + ADMIN_PASS="1234567" + MEMCACHED="ON" + REDIS="ON" + else + while [ ! -z "${1}" ]; do + case $1 in + -v | --version) + shift + if [ "${1}" = '' ]; then + show_help + exit + else + VERSION="${1}" + SILENT="ON" + fi + ;; + -p | --password) + shift + if [[ ${1} == '' ]]; then + ADMIN_PASS="1234567" + elif [[ ${1} == 'r' ]] || [[ $1 == 'random' ]]; then + ADMIN_PASS=$( + head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 + echo '' + ) + elif [[ ${1} == "d" ]]; then + ADMIN_PASS="1234567" + else + if [ ${#1} -lt 8 ]; then + echo -e "\nPassword lenth less than 8 digital, please choose a more complicated password.\n" + exit + fi + ADMIN_PASS="${1}" + fi + ;; + -a | --addons) + MEMCACHED="ON" + REDIS="ON" + ;; + -m | --minimal) + POSTFIX_VARIABLE="OFF" + POWERDNS_VARIABLE="OFF" + PUREFTPD_VARIABLE="OFF" + ;; + -h | --help) + show_help + exit + ;; + *) + echo "unknown argument..." + show_help + exit + ;; + esac + shift + done + fi fi - - SERVER_IP=$(curl --silent --max-time 10 -4 https://cyberpanel.sh/?ip) if [[ $SERVER_IP =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo -e "Valid IP detected..." + echo -e "Valid IP detected..." else - echo -e "Can not detect IP, exit..." - exit + echo -e "Can not detect IP, exit..." + exit fi 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" +if [[ ${#SERVER_COUNTRY} == "2" ]] || [[ ${#SERVER_COUNTRY} == "6" ]]; then + echo -e "\nChecking server..." +else + echo -e "\nChecking server..." + SERVER_COUNTRY="unknow" fi #SERVER_COUNTRY="CN" #test string -if [[ $SERVER_COUNTRY == "CN" ]] ; then -DOWNLOAD_SERVER="cyberpanel.sh" -GIT_URL="gitee.com/qtwrk/cyberpanel" -GIT_CONTENT_URL="gitee.com/qtwrk/cyberpanel/raw" +if [[ $SERVER_COUNTRY == "CN" ]]; then + DOWNLOAD_SERVER="cyberpanel.sh" + GIT_URL="gitee.com/qtwrk/cyberpanel" + GIT_CONTENT_URL="gitee.com/qtwrk/cyberpanel/raw" else -DOWNLOAD_SERVER="cdn.cyberpanel.sh" + DOWNLOAD_SERVER="cdn.cyberpanel.sh" fi ##END @@ -1667,11 +1662,10 @@ check_panel check_process check_provider - -if [[ $SILENT = "ON" ]] ; then -argument_mode +if [[ $SILENT == "ON" ]]; then + argument_mode else -interactive_mode + interactive_mode fi SECONDS=0 @@ -1685,7 +1679,6 @@ system_tweak main_install - ### Disable Centos Default Repos disable_repos