From 8bd9a6057ee2e2e4ed240a0833da4b76e818d7ff Mon Sep 17 00:00:00 2001 From: jose <627622230@qq.com> Date: Wed, 26 Jun 2019 18:06:40 +0800 Subject: [PATCH] Fixed an issue where bt default could not be used correctly to get the panel protocol after opening the panel SSL. --- init.sh | 815 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 613 insertions(+), 202 deletions(-) diff --git a/init.sh b/init.sh index acc09525..8564df54 100644 --- a/init.sh +++ b/init.sh @@ -1,226 +1,637 @@ #!/bin/bash -# chkconfig: 2345 55 25 -# description: bt Cloud Service +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH +LANG=en_US.UTF-8 +is64bit=`getconf LONG_BIT` + +if [ -f "/usr/bin/apt-get" ];then + isDebian=`cat /etc/issue|grep Debian` + if [ "$isDebian" != "" ];then + wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh + exit; + else + wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && sudo bash install.sh + exit; + fi +fi + +if [ "$is64bit" != '64' ];then + echo "=====================================" + echo "Sorry, 6.0 Does not support 32-bit systems, Use 64-bit system Please!"; + exit 0; +fi -### BEGIN INIT INFO -# Provides: bt -# Required-Start: $all -# Required-Stop: $all -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: starts bt -# Description: starts the bt -### END INIT INFO -panel_path=/www/server/panel -pidfile=$panel_path/logs/panel.pid -cd $panel_path py26=$(python -V 2>&1|grep '2.6.') if [ "$py26" != "" ];then - pythonV=python3 + echo "=====================================" + echo "Sorry, 6.0 Does not support Centos6.x, Please install Centos7"; + exit 0; fi -panel_start() -{ - isStart=`ps aux|grep 'runserver:app'|grep -v grep|awk '{print $2}'` - if [ "$isStart" == '' ];then - echo -e "Starting Bt-Panel.\c" - rm -f $pidfile - gunicorn -c runconfig.py runserver:app - port=$(cat /www/server/panel/data/port.pl) - isStart="" - n=0 - while [[ "$isStart" == "" ]]; - do - echo -e ".\c" - sleep 0.5 - isStart=$(lsof -n -P -i:$port|grep LISTEN|grep -v grep|awk '{print $2}'|xargs) - let n+=1 - if [ $n -gt 8 ];then - break; - fi - done - if [ "$isStart" == '' ];then - echo -e "\033[31mfailed\033[0m" - echo '------------------------------------------------------' - tail -n 20 $panel_path/logs/error.log - echo '------------------------------------------------------' - echo -e "\033[31mError: aaPanel service startup failed.\033[0m" - fi - echo -e " \033[32mdone\033[0m" - else - echo "Starting aaPanel... aaPanel (pid $(echo $isStart)) already running" - fi - - isStart=$(ps aux |grep 'task.py'|grep -v grep|awk '{print $2}') - if [ "$isStart" == '' ];then - echo -e "Starting Bt-Tasks... \c" - nohup python task.py >> /www/server/panel/logs/task.log 2>&1 & - sleep 0.2 - isStart=$(ps aux |grep 'task.py'|grep -v grep|awk '{print $2}') - if [ "$isStart" == '' ];then - echo -e "\033[31mfailed\033[0m" - echo '------------------------------------------------------' - tail -n 20 /www/server/panel/logs/task.log - echo '------------------------------------------------------' - echo -e "\033[31mError: aaTask service startup failed.\033[0m" - return; - fi - echo -e " \033[32mdone\033[0m" - else - echo "Starting aaTasks... aaTasks (pid $isStart) already running" - fi + +CN='http://125.88.182.172:5880' + +Install_Check(){ + while [ "$yes" != 'yes' ] && [ "$yes" != 'n' ] + do + echo -e "----------------------------------------------------" + echo -e "Web service is alreday installed,installing aaPanel may affect existing sites." + echo -e "----------------------------------------------------" + read -p "Enter yes to force installation (yes/n): " yes; + done + if [ "$yes" == 'n' ];then + exit; + fi } -panel_stop() -{ - echo -e "Stopping aaTasks...\c"; - pids=$(ps aux | grep 'task.py'|grep -v grep|awk '{print $2}') - arr=($pids) - - for p in ${arr[@]} - do - kill -9 $p - done - echo -e " \033[32mdone\033[0m" - - echo -e "Stopping aaPanel...\c"; - arr=`ps aux|grep 'runserver:app'|grep -v grep|awk '{print $2}'` - for p in ${arr[@]} - do - kill -9 $p &>/dev/null - done - - if [ -f $pidfile ];then - rm -f $pidfile +Web_Service_Check(){ + if [ -f "/etc/init.d/nginx" ]; then + nginxV=$(cat /etc/init.d/nginx|grep /www/server/nginx) + if [ "${nginxV}" = "" ];then + Install_Check + fi fi - echo -e " \033[32mdone\033[0m" -} -panel_status() -{ - port=$(cat /www/server/panel/data/port.pl) - isStart=$(lsof -i:$port|grep LISTEN|grep -v grep|awk '{print $2}'|xargs) - if [ "$isStart" != '' ];then - echo -e "\033[32maaPanel (pid $(echo $isStart)) already running\033[0m" - else - echo -e "\033[31maaPanel not running\033[0m" + if [ -f "/etc/init.d/httpd" ]; then + httpdV=$(cat /etc/init.d/httpd|grep /www/server/apache) + if [ "${httpdV}" = "" ];then + Install_Check fi - - isStart=$(ps aux |grep 'task.py'|grep -v grep|awk '{print $2}') - if [ "$isStart" != '' ];then - echo -e "\033[32maaTask (pid $isStart) already running\033[0m" - else - echo -e "\033[31maaTask not running\033[0m" - fi -} + fi -panel_reload() -{ - isStart=$(ps aux|grep 'runserver:app'|grep -v grep|awk '{print $2}') - - if [ "$isStart" != '' ];then - echo -e "Reload aaPanel.\c"; - arr=`ps aux|grep 'runserver:app'|grep -v grep|awk '{print $2}'` - for p in ${arr[@]} - do - kill -9 $p - done - rm -f $pidfile - gunicorn -c runconfig.py runserver:app - port=$(cat /www/server/panel/data/port.pl) - isStart="" - n=0 - while [[ "$isStart" == "" ]]; - do - echo -e ".\c" - sleep 0.5 - isStart=$(lsof -n -P -i:$port|grep LISTEN|grep -v grep|awk '{print $2}'|xargs) - let n+=1 - if [ $n -gt 8 ];then - break; - fi - done - if [ "$isStart" == '' ];then - echo -e "\033[31mfailed\033[0m" - echo '------------------------------------------------------' - tail -n 20 $panel_path/logs/error.log - echo '------------------------------------------------------' - echo -e "\033[31mError: aaPanel service startup failed.\033[0m" - return; + if [ -f "/etc/init.d/mysqld" ]; then + mysqlV=$(cat /etc/init.d/mysqld|grep /www/server/mysql) + if [ "${mysqlV}" = "" ];then + Install_Check fi - echo -e " \033[32mdone\033[0m" - else - echo -e "\033[31maaPanel not running\033[0m" - panel_start fi } -install_used() +Web_Service_Check + +echo " ++---------------------------------------------------------------------- +| aaPanel 6.0 FOR CentOS ++---------------------------------------------------------------------- +| Copyright © 2015-2099 aaPanel(http://www.aapanel.com) All rights reserved. ++---------------------------------------------------------------------- +| The WebPanel URL will be http://SERVER_IP:8888 when installed. ++---------------------------------------------------------------------- +" +get_node_url(){ + nodes=(http://125.88.182.172:5880 http://183.235.223.101:3389 http://103.224.251.67 http://128.1.164.196); + i=1; + if [ ! -f /bin/curl ];then + if [ -f /usr/local/curl/bin/curl ];then + ln -sf /usr/local/curl/bin/curl /bin/curl + else + yum install curl -y + fi + fi + for node in ${nodes[@]}; + do + start=`date +%s.%N` + result=`curl -sS --connect-timeout 3 -m 60 $node/check.txt` + if [ $result = 'True' ];then + end=`date +%s.%N` + start_s=`echo $start | cut -d '.' -f 1` + start_ns=`echo $start | cut -d '.' -f 2` + end_s=`echo $end | cut -d '.' -f 1` + end_ns=`echo $end | cut -d '.' -f 2` + time_micro=$(( (10#$end_s-10#$start_s)*1000000 + (10#$end_ns/1000 - 10#$start_ns/1000) )) + time_ms=$(($time_micro/1000)) + values[$i]=$time_ms; + urls[$time_ms]=$node + i=$(($i+1)) + fi + done + j=5000 + for n in ${values[@]}; + do + if [ $j -gt $n ];then + j=$n + fi + done + if [ $j = 5000 ];then + NODE_URL='http://download.bt.cn'; + else + NODE_URL=${urls[$j]} + fi + +} +echo '---------------------------------------------'; +echo "Selected download node..."; +get_node_url +download_Url=$NODE_URL +echo "Download node: $download_Url"; +echo '---------------------------------------------'; +setup_path=/www +port='8888' +if [ -f $setup_path/server/panel/data/port.pl ];then + port=`cat $setup_path/server/panel/data/port.pl` +fi + +while [ "$go" != 'y' ] && [ "$go" != 'n' ] +do + read -p "Do you want to install aaPanel to the $setup_path directory now?(y/n): " go; +done + +if [ "$go" == 'n' ];then + exit; +fi + +path=/etc/yum.conf +isExc=`cat $path|grep httpd` +if [ "$isExc" = "" ];then + echo "exclude=httpd nginx php mysql mairadb python-psutil python2-psutil" >> $path +fi + +#自动挂载Swap +autoSwap() { - if [ ! -f $panel_path/aliyun.pl ];then - return; - fi - password=$(cat /dev/urandom | head -n 16 | md5sum | head -c 12) - username=$($pythonV $panel_path/tools.py panel $password) - echo "$password" > $panel_path/default.pl - rm -f $panel_path/aliyun.pl + swap=`free |grep Swap|awk '{print $2}'` + if [ $swap -gt 1 ];then + echo "Swap total sizse: $swap"; + return; + fi + if [ ! -d /www ];then + mkdir /www + fi + swapFile='/www/swap' + dd if=/dev/zero of=$swapFile bs=1M count=1025 + mkswap -f $swapFile + swapon $swapFile + echo "$swapFile swap swap defaults 0 0" >> /etc/fstab + swap=`free |grep Swap|awk '{print $2}'` + if [ $swap -gt 1 ];then + echo "Swap total sizse: $swap"; + return; + fi + + sed -i "/\/www\/swap/d" /etc/fstab + rm -f $swapFile +} +autoSwap + +#判断kernel-headers组件是否安装 +rpm -qa | grep kernel-headers > kernel-headers.pl +kernelStatus=`cat kernel-headers.pl` +#判断华为云 +huaweiLogin=`cat /etc/motd |grep 4000-955-988` +huaweiSys=`cat /etc/redhat-release | grep ' 7.'` +if [ "$kernelStatus" = "" ]; then + if [ "$huaweiLogin" != "" ] && [ "$huaweiSys" != "" ]; then + wget $download_Url/src/kernel-headers-3.10.0-514.el7.x86_64.rpm + rpm -ivh kernel-headers-3.10.0-514.el7.x86_64.rpm + rm -f kernel-headers-3.10.0-514.el7.x86_64.rpm + else + yum install kernel-headers -y + fi +fi +rm -f kernel-headers.pl + +#try sync time from bt.cn +echo 'Synchronizing system time...' +v1=$(curl http://www.bt.cn/api/index/get_time) +date -s "$(date -d @$v1 +"%Y-%m-%d %H:%M:%S")" + +yum install ntp chrony -y +systemctl restart chrony +timedatectl set-ntp 1 +#rm -rf /etc/localtime +#ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime + +#echo 'Synchronizing system time...' +#ntpdate 0.asia.pool.ntp.org +startTime=`date +%s` +setenforce 0 +sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config +for pace in python-devel python-imaging zip unzip openssl openssl-devel gcc libxml2 libxml2-devel libxslt* zlib zlib-devel libjpeg-devel libpng-devel libwebp libwebp-devel freetype freetype-devel lsof pcre pcre-devel vixie-cron crontabs icu libicu-devel c-ares; +do + yum -y install ${pace}; +done + +if [ -f "/usr/bin/dnf" ]; then + dnf install -y redhat-rpm-config +fi +yum install python-devel -y + +py26=$(python -V 2>&1|grep '2.6.') +if [ "$py26" != "" ];then + if [ ! -f /etc/yum.repos.d/epel.repo ];then + wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo + fi + if [ ! -f /usr/bin/python3 ];then + yum install python34 python34-devel -y + if [ ! -f /usr/bin/python3 ];then + echo "python3.4 install error!" + exit 0; + fi + isSed=$(cat /usr/bin/yum|grep /usr/bin/python2.6) + if [ "$isSed" == "" ];then + sed -i "s#/usr/bin/python#/usr/bin/python2.6#" /usr/bin/yum + fi + #rm -f /usr/bin/python2 + mv -f /usr/bin/python /usr/bin/python2_backup + ln -sf /usr/bin/python3 /usr/bin/python + fi + if [ ! -f /usr/bin/pip3 ];then + wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py + python3 get-pip.py + mv -f /usr/bin/pip /usr/bin/pip_backup + ln -sf /usr/bin/pip3.4 /usr/bin/pip + fi +fi + +tmp=`python -V 2>&1|awk '{print $2}'` +pVersion=${tmp:0:3} + +Install_setuptools() +{ + if [ ! -f "/usr/bin/easy_install" ];then + wget -O setuptools-33.1.1.zip $download_Url/install/src/setuptools-33.1.1.zip -T 10 + unzip setuptools-33.1.1.zip + rm -f setuptools-33.1.1.zip + cd setuptools-33.1.1 + python setup.py install + cd .. + rm -rf setuptools-33.1.1 + fi + + if [ ! -f "/usr/bin/easy_install" ];then + echo '================================================='; + echo -e "\033[31msetuptools installation failed. \033[0m"; + exit; + fi } -error_logs() +Install_pip() { - tail -n 100 $panel_path/logs/error.log + ispip=`pip -V |grep from` + if [ "$ispip" == "" ];then + if [ ! -f "/usr/bin/easy_install" ];then + Install_setuptools + fi + wget -O pip-9.0.1.tar.gz $download_Url/install/src/pip-9.0.1.tar.gz -T 10 + tar xvf pip-9.0.1.tar.gz + rm -f pip-9.0.1.tar.gz + cd pip-9.0.1 + python setup.py install + cd .. + rm -rf pip-9.0.1 + fi + ispip=`pip -V |grep from` + if [ "$ispip" = "" ];then + echo '================================================='; + echo -e "\033[31m Python-pip installation failed. \033[0m"; + exit; + fi + + pip install -U pip +} + +Install_Pillow() +{ + isSetup=`python -m PIL 2>&1|grep package` + if [ "$isSetup" = "" ];then + isFedora = `cat /etc/redhat-release |grep Fedora` + if [ "$isFedora" != "" ];then + pip install Pillow + return; + fi + wget -O Pillow-3.2.0.zip $download_Url/install/src/Pillow-3.2.0.zip -T 10 + unzip Pillow-3.2.0.zip + rm -f Pillow-3.2.0.zip + cd Pillow-3.2.0 + python setup.py install + cd .. + rm -rf Pillow-3.2.0 + fi + + isSetup=`python -m PIL 2>&1|grep package` + if [ "$isSetup" = "" ];then + echo '================================================='; + echo -e "\033[31mPillow installation failed. \033[0m"; + exit; + fi +} + +Install_psutil() +{ + isSetup=`python -m psutil 2>&1|grep package` + if [ "$isSetup" = "" ];then + wget -O psutil-5.2.2.tar.gz $download_Url/install/src/psutil-5.2.2.tar.gz -T 10 + tar xvf psutil-5.2.2.tar.gz + rm -f psutil-5.2.2.tar.gz + cd psutil-5.2.2 + python setup.py install + cd .. + rm -rf psutil-5.2.2 + fi + isSetup=`python -m psutil 2>&1|grep package` + if [ "$isSetup" = "" ];then + echo '================================================='; + echo -e "\033[31mpsutil installation failed. \033[0m"; + exit; + fi +} + +Install_mysqldb() +{ + isSetup=`python -m MySQLdb 2>&1|grep package` + if [ "$isSetup" = "" ];then + wget -O MySQL-python-1.2.5.zip $download_Url/install/src/MySQL-python-1.2.5.zip -T 10 + unzip MySQL-python-1.2.5.zip + rm -f MySQL-python-1.2.5.zip + cd MySQL-python-1.2.5 + python setup.py install + cd .. + rm -rf MySQL-python-1.2.5 + fi +} + +Install_chardet() +{ + isSetup=`python -m chardet 2>&1|grep package` + if [ "$isSetup" = "" ];then + wget -O chardet-2.3.0.tar.gz $download_Url/install/src/chardet-2.3.0.tar.gz -T 10 + tar xvf chardet-2.3.0.tar.gz + rm -f chardet-2.3.0.tar.gz + cd chardet-2.3.0 + python setup.py install + cd .. + rm -rf chardet-2.3.0 + fi + + isSetup=`python -m chardet 2>&1|grep package` + if [ "$isSetup" = "" ];then + echo '================================================='; + echo -e "\033[31mchardet installation failed. \033[0m"; + exit; + fi } -case "$1" in - 'start') - install_used - panel_start - ;; - 'stop') - panel_stop - ;; - 'restart') - panel_stop - panel_start - ;; - 'reload') - panel_reload - ;; - 'status') - panel_status - ;; - 'logs') - error_logs - ;; - 'panel') - python $panel_path/tools.py cli $2 - ;; - 'default') - port=$(cat $panel_path/data/port.pl) - password=$(cat $panel_path/default.pl) - if [ -f $panel_path/data/domain.conf ];then - address=$(cat $panel_path/data/domain.conf) - fi - if [ -f $panel_path/data/admin_path.pl ];then - auth_path=$(cat $panel_path/data/admin_path.pl) - fi - if [ "$address" = "" ];then - address=$(curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress) - fi - echo -e "==================================================================" - echo -e "\033[32maaPanel default info!\033[0m" - echo -e "==================================================================" - echo "aaPanel-URL: http://$address:$port$auth_path" - echo -e `python $panel_path/tools.py username` - echo -e "password: $password" - echo -e "\033[33mWarning:\033[0m" - echo -e "\033[33mIf you cannot access the panel, \033[0m" - echo -e "\033[33mrelease the following port (8888|888|80|443|20|21) in the security group\033[0m" - echo -e "==================================================================" - ;; - *) - python $panel_path/tools.py cli $2 - ;; -esac +Install_setuptools +Install_pip + +if [ "${download_Url}" = "$CN" ]; then + if [ ! -d "/root/.pip" ];then + mkdir ~/.pip + fi + cat > ~/.pip/pip.conf <&1|grep package` +if [ "$isPsutil" != "" ];then + psutil_version=`python -c 'import psutil;print psutil.__version__;' |grep '5.'` + if [ "$psutil_version" = '' ];then + pip uninstall psutil -y + fi +fi +yum install libffi-devel -y +pip install --upgrade setuptools +pip install -U pip +pip install six --upgrade --ignore-installed six +pip install itsdangerous==0.24 +pip install paramiko==2.0.2 +pip install flask-socketio==3.0.2 +pip install python-socketio==2.1.2 +pip install Werkzeug==0.15.1 +for p_name in psutil chardet virtualenv Flask Flask-Session Flask-SocketIO flask-sqlalchemy Pillow gunicorn gevent-websocket requests; +do + pip install ${p_name} +done + +is_gevent=$(pip list|grep gevent) + +if [ "$is_gevent" = "" ];then + if [ -f /usr/bin/yum ];then + yum install python-gevent -y + else + apt install python-gevent -y + fi +fi + +pip install psutil chardet virtualenv Flask Flask-Session Flask-SocketIO flask-sqlalchemy Pillow gunicorn gevent-websocket paramiko +Install_Pillow +Install_psutil + +pip install gunicorn + +if [ -f /www/server/mysql/bin/mysql ]; then + pip install mysql-python + Install_mysqldb +fi +Install_chardet + +mkdir -p $setup_path/server/panel/logs +mkdir -p $setup_path/server/panel/vhost/apache +mkdir -p $setup_path/server/panel/vhost/nginx +mkdir -p $setup_path/server/panel/vhost/rewrite +if [ -f '/etc/init.d/bt' ];then + /etc/init.d/bt stop +fi + +mkdir -p /www/server +mkdir -p /www/wwwroot +mkdir -p /www/wwwlogs +mkdir -p /www/backup/database +mkdir -p /www/backup/site + +if [ ! -f "/usr/bin/unzip" ];then + #rm -f /etc/yum.repos.d/epel.repo + yum install unzip -y +fi +wget -O panel.zip $download_Url/install/src/panel6_en.zip -T 10 +wget -O /etc/init.d/bt $download_Url/install/src/bt6_en.init -T 10 +if [ -f "$setup_path/server/panel/data/default.db" ];then + if [ -d "/$setup_path/server/panel/old_data" ];then + rm -rf $setup_path/server/panel/old_data + fi + mkdir -p $setup_path/server/panel/old_data + mv -f $setup_path/server/panel/data/default.db $setup_path/server/panel/old_data/default.db + mv -f $setup_path/server/panel/data/system.db $setup_path/server/panel/old_data/system.db + mv -f $setup_path/server/panel/data/port.pl $setup_path/server/panel/old_data/port.pl + mv -f $setup_path/server/panel/data/admin_path.pl $setup_path/server/panel/old_data/admin_path.pl +fi + +unzip -o panel.zip -d $setup_path/server/ > /dev/null + +if [ -d "$setup_path/server/panel/old_data" ];then + mv -f $setup_path/server/panel/old_data/default.db $setup_path/server/panel/data/default.db + mv -f $setup_path/server/panel/old_data/system.db $setup_path/server/panel/data/system.db + mv -f $setup_path/server/panel/old_data/port.pl $setup_path/server/panel/data/port.pl + mv -f $setup_path/server/panel/old_data/admin_path.pl $setup_path/server/panel/data/admin_path.pl + if [ -d "/$setup_path/server/panel/old_data" ];then + rm -rf $setup_path/server/panel/old_data + fi +fi + +rm -f panel.zip + +if [ ! -f $setup_path/server/panel/tools.py ];then + echo -e "\033[31mERROR: Failed to download, please try again!\033[0m"; + echo '============================================' + exit; +fi + +rm -f $setup_path/server/panel/class/*.pyc +rm -f $setup_path/server/panel/*.pyc + + + +chmod +x /etc/init.d/bt +chkconfig --add bt +chkconfig --level 2345 bt on +chmod -R 600 $setup_path/server/panel +chmod -R +x $setup_path/server/panel/script +ln -sf /etc/init.d/bt /usr/bin/bt +echo "$port" > $setup_path/server/panel/data/port.pl +/etc/init.d/bt start + +password=`cat /dev/urandom | head -n 16 | md5sum | head -c 8` +sleep 1 +admin_auth='/www/server/panel/data/admin_path.pl' +if [ ! -f $admin_auth ];then + auth_path=`cat /dev/urandom | head -n 16 | md5sum | head -c 8` + echo "/$auth_path" > $admin_auth +fi +auth_path=`cat $admin_auth` +cd $setup_path/server/panel/ +python -m py_compile tools.py +python tools.py username +username=`python tools.py panel $password` +cd ~ +echo "$password" > $setup_path/server/panel/default.pl +chmod 600 $setup_path/server/panel/default.pl +/etc/init.d/bt restart +sleep 3 +isStart=`ps aux |grep 'gunicorn'|grep -v grep|awk '{print $2}'` +if [ "$isStart" == '' ];then + echo -e "\033[31mERROR: The aaPanel service startup failed.\033[0m"; + echo '============================================' + exit; +fi + +if [ -f "/etc/init.d/iptables" ];then + sshPort=`cat /etc/ssh/sshd_config | grep 'Port ' | grep -oE [0-9] | tr -d '\n'` + if [ "${sshPort}" != "22" ]; then + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport $sshPort -j ACCEPT + fi + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport $port -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 39000:40000 -j ACCEPT + #iptables -I INPUT -p tcp -m state --state NEW -m udp --dport 39000:40000 -j ACCEPT + iptables -A INPUT -p icmp --icmp-type any -j ACCEPT + iptables -A INPUT -s localhost -d localhost -j ACCEPT + iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT + iptables -P INPUT DROP + service iptables save + sed -i "s#IPTABLES_MODULES=\"\"#IPTABLES_MODULES=\"ip_conntrack_netbios_ns ip_conntrack_ftp ip_nat_ftp\"#" /etc/sysconfig/iptables-config + + iptables_status=`service iptables status | grep 'not running'` + if [ "${iptables_status}" == '' ];then + service iptables restart + fi +fi + +if [ "${isVersion}" == '' ];then + if [ ! -f "/etc/init.d/iptables" ];then + sshPort=`cat /etc/ssh/sshd_config | grep 'Port ' | grep -oE [0-9] | tr -d '\n'` + yum install firewalld -y + systemctl enable firewalld + systemctl start firewalld + firewall-cmd --set-default-zone=public > /dev/null 2>&1 + if [ "${sshPort}" != "22" ]; then + firewall-cmd --permanent --zone=public --add-port=$sshPort/tcp > /dev/null 2>&1 + fi + firewall-cmd --permanent --zone=public --add-port=20/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=21/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=22/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=80/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=$port/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=39000-40000/tcp > /dev/null 2>&1 + #firewall-cmd --permanent --zone=public --add-port=39000-40000/udp > /dev/null 2>&1 + firewall-cmd --reload + fi +fi + +pip install psutil chardet psutil virtualenv cryptography==2.1 > /dev/null 2>&1 + +if [ ! -d '/etc/letsencrypt' ];then + yum install epel-release -y + + if [ "${country}" = "CN" ]; then + isC7=`cat /etc/redhat-release |grep ' 7.'` + if [ "${isC7}" == "" ];then + wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo + else + wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo + fi + fi + mkdir -p /var/spool/cron + if [ ! -f '/var/spool/cron/root' ];then + echo '' > /var/spool/cron/root + chmod 600 /var/spool/cron/root + fi +fi + +wget -O acme_install.sh $download_Url/install/acme_install.sh +nohup bash acme_install.sh &> /dev/null & +sleep 1 +rm -f acme_install.sh + +address="" +address=`curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress` +if [ "$address" == '0.0.0.0' ] || [ "$address" == '' ];then + isHosts=`cat /etc/hosts|grep 'www.bt.cn'` + if [ "$isHosts" == '' ];then + echo "" >> /etc/hosts + echo "125.88.182.170 www.bt.cn" >> /etc/hosts + address=`curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress` + if [ "$address" == '' ];then + sed -i "/bt.cn/d" /etc/hosts + fi + fi +fi + +ipCheck=`python -c "import re; print(re.match('^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$','$address'))"` +if [ "$ipCheck" == "None" ];then + address="SERVER_IP" +fi + +if [ "$address" != "SERVER_IP" ];then + echo "$address" > $setup_path/server/panel/data/iplist.txt +fi + +curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/SetupCount?type=Linux\&o=EN > /dev/null 2>&1 +curl -sS --connect-timeout 10 -m 60 https://www.aapanel.com/Api/SetupCount?type=Linux > /dev/null 2>&1 +echo /www > /var/bt_setupPath.conf +/etc/init.d/bt start + +echo -e "==================================================================" +echo -e "\033[32mCongratulations! Installed successfully!\033[0m" +echo -e "==================================================================" +echo "aaPanel: http://$address:$port$auth_path" +echo -e "username: $username" +echo -e "password: $password" +echo -e "\033[33mWarning:\033[0m" +echo -e "\033[33mIf you cannot access the panel, \033[0m" +echo -e "\033[33mrelease the following port (8888|888|80|443|20|21) in the security group\033[0m" +echo -e "==================================================================" + +endTime=`date +%s` +((outTime=($endTime-$startTime)/60)) +echo -e "Time consumed:\033[32m $outTime \033[0mMinute!" +rm -f install.sh \ No newline at end of file