mirror of
https://github.com/aaPanel/aaPanel.git
synced 2026-08-17 21:25:47 +02:00
2.The page is displayed when the adjustment panel is wrong 3.App store add common plug-in display 4.Adjust the sessionid name to a non-fixed name 5.Panel CSRF defense mechanism covers panel websocket communication 6.Adjust the font size of the panel list 7.Adjust the panel pop-up window (add a close button to cancel the automatic closing time) 8.Optimize the front/back end of the file manager 9.Add the entrance of the MailServer Rspamd 10.Refactor the debug module 11.Other known bug fixes
791 lines
26 KiB
Bash
791 lines
26 KiB
Bash
#!/bin/bash
|
||
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
||
export PATH
|
||
LANG=en_US.UTF-8
|
||
cd ~
|
||
|
||
setup_path="/www"
|
||
SET_SSL=false
|
||
python_bin=$setup_path/server/panel/pyenv/bin/python
|
||
cpu_cpunt=$(cat /proc/cpuinfo|grep processor|wc -l)
|
||
if [ "$1" ];then
|
||
IDC_CODE=$1
|
||
fi
|
||
|
||
GetSysInfo(){
|
||
if [ -s "/etc/redhat-release" ];then
|
||
SYS_VERSION=$(cat /etc/redhat-release)
|
||
elif [ -s "/etc/issue" ]; then
|
||
SYS_VERSION=$(cat /etc/issue)
|
||
fi
|
||
SYS_INFO=$(uname -r)
|
||
SYS_BIT=$(getconf LONG_BIT)
|
||
MEM_TOTAL=$(free -m|grep Mem|awk '{print $2}')
|
||
CPU_INFO=$(getconf _NPROCESSORS_ONLN)
|
||
|
||
echo -e ${SYS_VERSION}
|
||
echo -e Bit:${SYS_BIT} Mem:${MEM_TOTAL}M Core:${CPU_INFO}
|
||
echo -e ${SYS_INFO}
|
||
echo -e "Please screenshot the above error message and post to the forum forum.aapanel.com for help"
|
||
}
|
||
Red_Error(){
|
||
echo '=================================================';
|
||
printf '\033[1;31;40m%b\033[0m\n' "$1";
|
||
GetSysInfo
|
||
exit 1;
|
||
}
|
||
|
||
is64bit=$(getconf LONG_BIT)
|
||
if [ "${is64bit}" != '64' ];then
|
||
Red_Error "Sorry, aaPanel Does not support 32-bit systems, Use 64-bit system Please!";
|
||
|
||
fi
|
||
Lock_Clear(){
|
||
if [ -f "/etc/bt_crack.pl" ];then
|
||
chattr -R -ia /www
|
||
chattr -ia /etc/init.d/bt
|
||
\cp -rpa /www/backup/panel/vhost/* /www/server/panel/vhost/
|
||
mv /www/server/panel/BTPanel/__init__.bak /www/server/panel/BTPanel/__init__.py
|
||
rm -f /etc/bt_crack.pl
|
||
fi
|
||
}
|
||
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
|
||
}
|
||
System_Check(){
|
||
for serviceS in nginx httpd mysqld
|
||
do
|
||
if [ -f "/etc/init.d/${serviceS}" ]; then
|
||
if [ "${serviceS}" = "httpd" ]; then
|
||
serviceCheck=$(cat /etc/init.d/${serviceS}|grep /www/server/apache)
|
||
elif [ "${serviceS}" = "mysqld" ]; then
|
||
serviceCheck=$(cat /etc/init.d/${serviceS}|grep /www/server/mysql)
|
||
else
|
||
serviceCheck=$(cat /etc/init.d/${serviceS}|grep /www/server/${serviceS})
|
||
fi
|
||
[ -z "${serviceCheck}" ] && Install_Check
|
||
fi
|
||
done
|
||
}
|
||
Set_Ssl(){
|
||
echo -e ""
|
||
echo -e "----------------------------------------------------------------------"
|
||
echo -e "If you choose to enable SSL (self-signed certificate), you will use https access panel after installation."
|
||
echo -e "After logging in, you can go to the panel settings and change to Let's Encrypt certificate."
|
||
echo -e "----------------------------------------------------------------------"
|
||
echo -e ""
|
||
read -p "Do you need to enable the panel SSl ? (yes/n): " yes;
|
||
if [ "$yes" == "yes" ];then
|
||
SET_SSL=true
|
||
fi
|
||
if [ "$yes" != "yes" ] && [ $yes != "n" ];then
|
||
Set_Ssl
|
||
fi
|
||
}
|
||
Get_Pack_Manager(){
|
||
if [ -f "/usr/bin/yum" ] && [ -d "/etc/yum.repos.d" ]; then
|
||
PM="yum"
|
||
elif [ -f "/usr/bin/apt-get" ] && [ -f "/usr/bin/dpkg" ]; then
|
||
PM="apt-get"
|
||
fi
|
||
}
|
||
|
||
Auto_Swap()
|
||
{
|
||
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
|
||
}
|
||
Service_Add(){
|
||
if [ "${PM}" == "yum" ] || [ "${PM}" == "dnf" ]; then
|
||
chkconfig --add bt
|
||
chkconfig --level 2345 bt on
|
||
elif [ "${PM}" == "apt-get" ]; then
|
||
update-rc.d bt defaults
|
||
fi
|
||
}
|
||
|
||
get_node_url(){
|
||
if [ ! -f /bin/curl ];then
|
||
if [ "${PM}" = "yum" ]; then
|
||
yum install curl -y
|
||
elif [ "${PM}" = "apt-get" ]; then
|
||
apt-get install curl -y
|
||
fi
|
||
fi
|
||
|
||
echo '---------------------------------------------';
|
||
echo "Selected download node...";
|
||
nodes=(http://node.aapanel.com http://128.1.164.196 http://45.76.53.20 http://103.224.251.67 http://dg2.bt.cn http://dg1.bt.cn http://123.129.198.197 http://125.88.182.172:5880 http://119.188.210.21:5880 http://120.206.184.160 http://113.107.111.78);
|
||
tmp_file1=/dev/shm/net_test1.pl
|
||
tmp_file2=/dev/shm/net_test2.pl
|
||
|
||
[ -f "${tmp_file1}" ] && rm -f ${tmp_file1}
|
||
|
||
|
||
[ -f "${tmp_file2}" ] && rm -f ${tmp_file2}
|
||
|
||
touch $tmp_file1
|
||
touch $tmp_file2
|
||
for node in ${nodes[@]};
|
||
do
|
||
NODE_CHECK=$(curl --connect-timeout 3 -m 3 2>/dev/null -w "%{http_code} %{time_total}" ${node}/net_test|xargs)
|
||
RES=$(echo ${NODE_CHECK}|awk '{print $1}')
|
||
NODE_STATUS=$(echo ${NODE_CHECK}|awk '{print $2}')
|
||
TIME_TOTAL=$(echo ${NODE_CHECK}|awk '{print $3 * 1000 - 500 }'|cut -d '.' -f 1)
|
||
if [ "${NODE_STATUS}" == "200" ];then
|
||
if [ $TIME_TOTAL -lt 100 ];then
|
||
if [ $RES -ge 1500 ];then
|
||
echo "$RES $node" >> $tmp_file1
|
||
fi
|
||
else
|
||
if [ $RES -ge 1500 ];then
|
||
echo "$TIME_TOTAL $node" >> $tmp_file2
|
||
fi
|
||
fi
|
||
|
||
i=$(($i+1))
|
||
if [ $TIME_TOTAL -lt 100 ];then
|
||
if [ $RES -ge 3000 ];then
|
||
break;
|
||
fi
|
||
fi
|
||
|
||
fi
|
||
done
|
||
|
||
NODE_URL=$(cat $tmp_file1|sort -r -g -t " " -k 1|head -n 1|awk '{print $2}')
|
||
if [ -z "$NODE_URL" ];then
|
||
NODE_URL=$(cat $tmp_file2|sort -g -t " " -k 1|head -n 1|awk '{print $2}')
|
||
if [ -z "$NODE_URL" ];then
|
||
NODE_URL='http://download.bt.cn';
|
||
fi
|
||
fi
|
||
|
||
rm -f $tmp_file1
|
||
rm -f $tmp_file2
|
||
download_Url=$NODE_URL
|
||
echo "Download node: $download_Url";
|
||
echo '---------------------------------------------';
|
||
}
|
||
Remove_Package(){
|
||
local PackageNmae=$1
|
||
if [ "${PM}" == "yum" ];then
|
||
isPackage=$(rpm -q ${PackageNmae}|grep "not installed")
|
||
if [ -z "${isPackage}" ];then
|
||
yum remove ${PackageNmae} -y
|
||
fi
|
||
elif [ "${PM}" == "apt-get" ];then
|
||
isPackage=$(dpkg -l|grep ${PackageNmae})
|
||
if [ "${PackageNmae}" ];then
|
||
apt-get remove ${PackageNmae} -y
|
||
fi
|
||
fi
|
||
}
|
||
Install_RPM_Pack(){
|
||
yumPath=/etc/yum.conf
|
||
Centos8Check=$(cat /etc/redhat-release | grep ' 8.' | grep -iE 'centos|Red Hat')
|
||
isExc=$(cat $yumPath|grep httpd)
|
||
if [ "$isExc" = "" ];then
|
||
echo "exclude=httpd nginx php mysql mairadb python-psutil python2-psutil" >> $yumPath
|
||
fi
|
||
|
||
yumBaseUrl=$(cat /etc/yum.repos.d/CentOS-Base.repo|grep baseurl=http|cut -d '=' -f 2|cut -d '$' -f 1|head -n 1)
|
||
[ "${yumBaseUrl}" ] && checkYumRepo=$(curl --connect-timeout 5 --head -s -o /dev/null -w %{http_code} ${yumBaseUrl})
|
||
if [ "${checkYumRepo}" != "200" ];then
|
||
curl -Ss --connect-timeout 3 -m 60 http://download.bt.cn/install/yumRepo_select.sh|bash
|
||
fi
|
||
|
||
# 尝试同步时间(从bt.cn)
|
||
echo 'Synchronizing system time...'
|
||
getBtTime=$(curl -sS --connect-timeout 3 -m 60 http://www.bt.cn/api/index/get_time)
|
||
if [ "${getBtTime}" ];then
|
||
date -s "$(date -d @$getBtTime +"%Y-%m-%d %H:%M:%S")"
|
||
fi
|
||
|
||
#if [ -z "${Centos8Check}" ]; then
|
||
# yum install ntp -y
|
||
# rm -rf /etc/localtime
|
||
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||
|
||
#尝试同步国际时间(从ntp服务器)
|
||
# ntpdate 0.asia.pool.ntp.org
|
||
# setenforce 0
|
||
#fi
|
||
|
||
startTime=`date +%s`
|
||
|
||
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
|
||
#yum remove -y python-requests python3-requests python-greenlet python3-greenlet
|
||
yumPacks="libcurl-devel wget tar gcc make 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 libffi-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel"
|
||
yum install -y ${yumPacks}
|
||
|
||
for yumPack in ${yumPacks}
|
||
do
|
||
rpmPack=$(rpm -q ${yumPack})
|
||
packCheck=$(echo ${rpmPack}|grep not)
|
||
if [ "${packCheck}" ]; then
|
||
yum install ${yumPack} -y
|
||
fi
|
||
done
|
||
if [ -f "/usr/bin/dnf" ]; then
|
||
dnf install -y redhat-rpm-config
|
||
fi
|
||
|
||
yum install epel-release -y
|
||
}
|
||
Install_Deb_Pack(){
|
||
ln -sf bash /bin/sh
|
||
apt-get update -y
|
||
apt-get install ruby -y
|
||
apt-get install lsb-release -y
|
||
#apt-get install ntp ntpdate -y
|
||
#/etc/init.d/ntp stop
|
||
#update-rc.d ntp remove
|
||
#cat >>~/.profile<<EOF
|
||
#TZ='Asia/Shanghai'; export TZ
|
||
#EOF
|
||
#rm -rf /etc/localtime
|
||
#cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||
#echo 'Synchronizing system time...'
|
||
#ntpdate 0.asia.pool.ntp.org
|
||
#apt-get upgrade -y
|
||
for pace in wget curl libcurl4-openssl-dev gcc make zip unzip openssl libssl-dev gcc libxml2 libxml2-dev libxslt zlib1g zlib1g-dev libjpeg-dev libpng-dev lsof libpcre3 libpcre3-dev cron net-tools swig build-essential libffi-dev libbz2-dev libncurses-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libdb++-dev libpcap-dev xz-utils git;
|
||
do apt-get -y install $pace --force-yes; done
|
||
if [ ! -d '/etc/letsencrypt' ];then
|
||
mkdir -p /etc/letsencryp
|
||
mkdir -p /var/spool/cron
|
||
if [ ! -f '/var/spool/cron/crontabs/root' ];then
|
||
echo '' > /var/spool/cron/crontabs/root
|
||
chmod 600 /var/spool/cron/crontabs/root
|
||
fi
|
||
fi
|
||
}
|
||
Install_Bt(){
|
||
panelPort="8888"
|
||
if [ -f ${setup_path}/server/panel/data/port.pl ];then
|
||
panelPort=$(cat ${setup_path}/server/panel/data/port.pl)
|
||
fi
|
||
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
|
||
mkdir -p ${setup_path}/server/panel/install
|
||
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
|
||
if [ "${PM}" = "yum" ]; then
|
||
yum install unzip -y
|
||
elif [ "${PM}" = "apt-get" ]; then
|
||
apt-get install unzip -y
|
||
fi
|
||
fi
|
||
|
||
if [ -f "/etc/init.d/bt" ]; then
|
||
/etc/init.d/bt stop
|
||
sleep 1
|
||
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
|
||
wget -O /www/server/panel/install/public.sh ${download_Url}/install/public.sh -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
|
||
Red_Error "ERROR: Failed to download, please try install again!"
|
||
fi
|
||
|
||
rm -f ${setup_path}/server/panel/class/*.pyc
|
||
rm -f ${setup_path}/server/panel/*.pyc
|
||
|
||
chmod +x /etc/init.d/bt
|
||
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 "${panelPort}" > ${setup_path}/server/panel/data/port.pl
|
||
wget -O /etc/init.d/bt ${download_Url}/install/src/bt6_en.init -T 10
|
||
wget -O /www/server/panel/init.sh ${download_Url}/install/src/bt6_en.init -T 10
|
||
}
|
||
Install_Python_Lib(){
|
||
#curl -Ss --connect-timeout 3 -m 60 $download_Url/install/pip_select.sh|bash
|
||
pyenv_path="/www/server/panel"
|
||
if [ -f $pyenv_path/pyenv/bin/python ];then
|
||
chmod -R 700 $pyenv_path/pyenv/bin
|
||
$pyenv_path/pyenv/bin/pip install cachelib
|
||
is_package=$($python_bin -m psutil 2>&1|grep package)
|
||
if [ "$is_package" = "" ];then
|
||
wget -O $pyenv_path/pyenv/pip.txt $download_Url/install/pyenv/pip.txt -T 5
|
||
$pyenv_path/pyenv/bin/pip install -U pip
|
||
$pyenv_path/pyenv/bin/pip install -U setuptools
|
||
$pyenv_path/pyenv/bin/pip install -r $pyenv_path/pyenv/pip.txt
|
||
$pyenv_path/pyenv/bin/pip install cachelib
|
||
fi
|
||
source $pyenv_path/pyenv/bin/activate
|
||
return
|
||
fi
|
||
py_version="3.7.8"
|
||
mkdir -p $pyenv_path
|
||
os_type='el'
|
||
os_version='7'
|
||
is_export_openssl=0
|
||
Get_Versions
|
||
Centos6_Openssl
|
||
Other_Openssl
|
||
echo "OS: $os_type - $os_version"
|
||
is_aarch64=$(uname -a|grep aarch64)
|
||
if [ "$is_aarch64" != "" ];then
|
||
os_version="aarch64"
|
||
fi
|
||
if [ "${os_version}" != "" ];then
|
||
pyenv_file="/www/pyenv.tar.gz"
|
||
wget -O $pyenv_file $download_Url/install/pyenv/pyenv-${os_type}${os_version}-x${is64bit}.tar.gz -T 10
|
||
tmp_size=$(du -b $pyenv_file|awk '{print $1}')
|
||
if [ $tmp_size -lt 703460 ];then
|
||
rm -f $pyenv_file
|
||
echo "ERROR: Download python env fielded."
|
||
else
|
||
echo "Install python env..."
|
||
tar zxvf $pyenv_file -C $pyenv_path/ &> /dev/null
|
||
chmod -R 700 $pyenv_path/pyenv/bin
|
||
if [ ! -f $pyenv_path/pyenv/bin/python ];then
|
||
rm -f $pyenv_file
|
||
Red_Error "ERROR: Install python env fielded."
|
||
fi
|
||
rm -f $pyenv_file
|
||
ln -sf $pyenv_path/pyenv/bin/pip3.7 /usr/bin/btpip
|
||
ln -sf $pyenv_path/pyenv/bin/python3.7 /usr/bin/btpython
|
||
source $pyenv_path/pyenv/bin/activate
|
||
return
|
||
fi
|
||
fi
|
||
if [ -f /usr/local/openssl/lib/libssl.so ];then
|
||
export LDFLAGS="-L/usr/local/openssl/lib"
|
||
export CPPFLAGS="-I/usr/local/openssl/include"
|
||
export PKG_CONFIG_PATH="/usr/local/openssl/lib/pkgconfig"
|
||
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl/lib" >> /etc/profile
|
||
source /etc/profile
|
||
fi
|
||
cd /www
|
||
python_src='/www/python_src.tar.xz'
|
||
python_src_path="/www/Python-${py_version}"
|
||
wget -O $python_src $download_Url/src/Python-${py_version}.tar.xz -T 5
|
||
tmp_size=$(du -b $python_src|awk '{print $1}')
|
||
if [ $tmp_size -lt 10703460 ];then
|
||
rm -f $python_src
|
||
Red_Error "ERROR: Download python source code fielded."
|
||
fi
|
||
tar xvf $python_src
|
||
rm -f $python_src
|
||
cd $python_src_path
|
||
./configure --prefix=$pyenv_path/pyenv
|
||
make -j$cpu_cpunt
|
||
make install
|
||
if [ ! -f $pyenv_path/pyenv/bin/python3.7 ];then
|
||
rm -rf $python_src_path
|
||
Red_Error "ERROR: Make python env fielded."
|
||
fi
|
||
cd ~
|
||
rm -rf $python_src_path
|
||
wget -O $pyenv_path/pyenv/bin/activate $download_Url/install/pyenv/activate.panel -T 5
|
||
wget -O $pyenv_path/pyenv/pip.txt $download_Url/install/pyenv/pip-3.7.8.txt -T 5
|
||
ln -sf $pyenv_path/pyenv/bin/pip3.7 $pyenv_path/pyenv/bin/pip
|
||
ln -sf $pyenv_path/pyenv/bin/python3.7 $pyenv_path/pyenv/bin/python
|
||
ln -sf $pyenv_path/pyenv/bin/pip3.7 /usr/bin/btpip
|
||
ln -sf $pyenv_path/pyenv/bin/python3.7 /usr/bin/btpython
|
||
chmod -R 700 $pyenv_path/pyenv/bin
|
||
$pyenv_path/pyenv/bin/pip install -U pip
|
||
$pyenv_path/pyenv/bin/pip install -U setuptools
|
||
$pyenv_path/pyenv/bin/pip install -U wheel==0.34.2
|
||
$pyenv_path/pyenv/bin/pip install -r $pyenv_path/pyenv/pip.txt
|
||
$pyenv_path/pyenv/bin/pip install -U cachelib
|
||
source $pyenv_path/pyenv/bin/activate
|
||
}
|
||
|
||
Other_Openssl(){
|
||
openssl_version=$(openssl version|grep -Eo '[0-9]\.[0-9]\.[0-9]')
|
||
if [ "$openssl_version" = '1.0.1' ] || [ "$openssl_version" = '1.0.0' ];then
|
||
opensslVersion="1.0.2r"
|
||
if [ ! -f "/usr/local/openssl/lib/libssl.so" ];then
|
||
cd /www
|
||
openssl_src_file=/www/openssl.tar.gz
|
||
wget -O $openssl_src_file ${download_Url}/src/openssl-${opensslVersion}.tar.gz
|
||
tmp_size=$(du -b $openssl_src_file|awk '{print $1}')
|
||
if [ $tmp_size -lt 703460 ];then
|
||
rm -f $openssl_src_file
|
||
Red_Error "ERROR: Download openssl-1.0.2 source code fielded."
|
||
fi
|
||
tar -zxf $openssl_src_file
|
||
rm -f $openssl_src_file
|
||
cd openssl-${opensslVersion}
|
||
#zlib-dynamic shared
|
||
./config --openssldir=/usr/local/openssl zlib-dynamic shared
|
||
make -j${cpuCore}
|
||
make install
|
||
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/zopenssl.conf
|
||
ldconfig
|
||
cd ..
|
||
rm -rf openssl-${opensslVersion}
|
||
is_export_openssl=1
|
||
cd ~
|
||
fi
|
||
fi
|
||
}
|
||
|
||
Insatll_Libressl(){
|
||
openssl_version=$(openssl version|grep -Eo '[0-9]\.[0-9]\.[0-9]')
|
||
if [ "$openssl_version" = '1.0.1' ] || [ "$openssl_version" = '1.0.0' ];then
|
||
opensslVersion="3.0.2"
|
||
cd /www
|
||
openssl_src_file=/www/openssl.tar.gz
|
||
wget -O $openssl_src_file ${download_Url}/install/pyenv/libressl-${opensslVersion}.tar.gz
|
||
tmp_size=$(du -b $openssl_src_file|awk '{print $1}')
|
||
if [ $tmp_size -lt 703460 ];then
|
||
rm -f $openssl_src_file
|
||
Red_Error "ERROR: Download libressl-$opensslVersion source code fielded."
|
||
fi
|
||
tar -zxf $openssl_src_file
|
||
rm -f $openssl_src_file
|
||
cd libressl-${opensslVersion}
|
||
./config –prefix=/usr/local/lib
|
||
make -j${cpuCore}
|
||
make install
|
||
ldconfig
|
||
ldconfig -v
|
||
cd ..
|
||
rm -rf libressl-${opensslVersion}
|
||
is_export_openssl=1
|
||
cd ~
|
||
fi
|
||
}
|
||
|
||
Centos6_Openssl(){
|
||
if [ "$os_type" != 'el' ];then
|
||
return
|
||
fi
|
||
if [ "$os_version" != '6' ];then
|
||
return
|
||
fi
|
||
echo 'Centos6 install openssl-1.0.2...'
|
||
openssl_rpm_file="/www/openssl.rpm"
|
||
wget -O $openssl_rpm_file $download_Url/rpm/centos6/${is64bit}/bt-openssl102.rpm -T 10
|
||
tmp_size=$(du -b $openssl_rpm_file|awk '{print $1}')
|
||
if [ $tmp_size -lt 102400 ];then
|
||
rm -f $openssl_rpm_file
|
||
Red_Error "ERROR: Download python env fielded."
|
||
fi
|
||
rpm -ivh $openssl_rpm_file
|
||
rm -f $openssl_rpm_file
|
||
is_export_openssl=1
|
||
}
|
||
|
||
Get_Versions(){
|
||
redhat_version_file="/etc/redhat-release"
|
||
deb_version_file="/etc/issue"
|
||
if [ -f $redhat_version_file ];then
|
||
os_type='el'
|
||
is_aliyunos=$(cat $redhat_version_file|grep Aliyun)
|
||
if [ "$is_aliyunos" != "" ];then
|
||
return
|
||
fi
|
||
os_version=$(cat $redhat_version_file|grep CentOS|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '^[0-9]')
|
||
if [ "${os_version}" = "5" ];then
|
||
os_version=""
|
||
fi
|
||
else
|
||
os_type='ubuntu'
|
||
os_version=$(cat $deb_version_file|grep Ubuntu|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '^[0-9]+')
|
||
if [ "${os_version}" = "" ];then
|
||
os_type='debian'
|
||
os_version=$(cat $deb_version_file|grep Debian|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '[0-9]+')
|
||
if [ "${os_version}" = "" ];then
|
||
os_version=$(cat $deb_version_file|grep Debian|grep -Eo '[0-9]+')
|
||
fi
|
||
if [ "${os_version}" = "8" ];then
|
||
os_version=""
|
||
fi
|
||
if [ "${is64bit}" = '32' ];then
|
||
os_version=""
|
||
fi
|
||
else
|
||
if [ "$os_version" = "14" ];then
|
||
os_version=""
|
||
fi
|
||
if [ "$os_version" = "12" ];then
|
||
os_version=""
|
||
fi
|
||
if [ "$os_version" = "19" ];then
|
||
os_version=""
|
||
fi
|
||
fi
|
||
fi
|
||
}
|
||
|
||
Set_Bt_Panel(){
|
||
chmod -R 700 /www/server/panel/pyenv/bin
|
||
/www/server/panel/pyenv/bin/pip install cachelib
|
||
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/
|
||
if [ "$SET_SSL" == true ];then
|
||
pip install -I pyOpenSSl
|
||
python /www/server/panel/tools.py ssl
|
||
fi
|
||
/etc/init.d/bt start
|
||
$python_bin -m py_compile tools.py
|
||
$python_bin tools.py username
|
||
username=$($python_bin tools.py panel ${password})
|
||
cd ~
|
||
echo "${password}" > ${setup_path}/server/panel/default.pl
|
||
chmod 600 ${setup_path}/server/panel/default.pl
|
||
sleep 3
|
||
/etc/init.d/bt restart
|
||
sleep 3
|
||
isStart=$(ps aux |grep 'BT-Panel'|grep -v grep|awk '{print $2}')
|
||
LOCAL_CURL=$(curl 127.0.0.1:8888/login 2>&1 |grep -i html)
|
||
if [ -z "${isStart}" ] && [ -z "${LOCAL_CURL}" ];then
|
||
/etc/init.d/bt 22
|
||
Red_Error "ERROR: The BT-Panel service startup failed."
|
||
fi
|
||
}
|
||
Set_Firewall(){
|
||
sshPort=$(cat /etc/ssh/sshd_config | grep 'Port '|awk '{print $2}')
|
||
if [ "${PM}" = "apt-get" ]; then
|
||
apt-get install -y ufw
|
||
if [ -f "/usr/sbin/ufw" ];then
|
||
ufw allow 888/tcp
|
||
ufw allow 20/tcp
|
||
ufw allow 21/tcp
|
||
ufw allow 22/tcp
|
||
ufw allow 80/tcp
|
||
ufw allow ${panelPort}/tcp
|
||
ufw allow ${sshPort}/tcp ufw allow 39000:40000/tcp
|
||
|
||
ufw_status=`ufw status`
|
||
echo y|ufw enable
|
||
ufw default deny
|
||
ufw reload
|
||
fi
|
||
else
|
||
if [ -f "/etc/init.d/iptables" ];then
|
||
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 ${panelPort} -j ACCEPT
|
||
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport ${sshPort} -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
|
||
else
|
||
AliyunCheck=$(cat /etc/redhat-release|grep "Aliyun Linux")
|
||
[ "${AliyunCheck}" ] && return
|
||
yum install firewalld -y
|
||
[ "${Centos8Check}" ] && yum reinstall python3-six -y
|
||
systemctl enable firewalld
|
||
systemctl start firewalld
|
||
firewall-cmd --set-default-zone=public > /dev/null 2>&1
|
||
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=${panelPort}/tcp > /dev/null 2>&1
|
||
firewall-cmd --permanent --zone=public --add-port=${sshPort}/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
|
||
}
|
||
Get_Ip_Address(){
|
||
getIpAddress=""
|
||
# getIpAddress=$(curl -sS --connect-timeout 10 -m 60 https://brandnew.aapanel.com/api/common/getClientIP)
|
||
getIpAddress=$(curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress)
|
||
if [ -z "${getIpAddress}" ] || [ "${getIpAddress}" = "0.0.0.0" ]; then
|
||
isHosts=$(cat /etc/hosts|grep 'www.bt.cn')
|
||
if [ -z "${isHosts}" ];then
|
||
echo "" >> /etc/hosts
|
||
echo "103.224.251.67 www.bt.cn" >> /etc/hosts
|
||
#getIpAddress=$(curl -sS --connect-timeout 10 -m 60 https://brandnew.aapanel.com/api/common/getClientIP)
|
||
getIpAddress=$(curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress)
|
||
if [ -z "${getIpAddress}" ];then
|
||
sed -i "/bt.cn/d" /etc/hosts
|
||
fi
|
||
fi
|
||
fi
|
||
|
||
ipv4Check=$($python_bin -c "import re; print(re.match('^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$','${getIpAddress}'))")
|
||
if [ "${ipv4Check}" == "None" ];then
|
||
ipv6Address=$(echo ${getIpAddress}|tr -d "[]")
|
||
ipv6Check=$($python_bin -c "import re; print(re.match('^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$','${ipv6Address}'))")
|
||
if [ "${ipv6Check}" == "None" ]; then
|
||
getIpAddress="SERVER_IP"
|
||
else
|
||
echo "True" > ${setup_path}/server/panel/data/ipv6.pl
|
||
sleep 1
|
||
/etc/init.d/bt restart
|
||
fi
|
||
fi
|
||
|
||
if [ "${getIpAddress}" != "SERVER_IP" ];then
|
||
echo "${getIpAddress}" > ${setup_path}/server/panel/data/iplist.txt
|
||
fi
|
||
}
|
||
Setup_Count(){
|
||
curl -sS --connect-timeout 10 -m 60 https://brandnew.aapanel.com/api/setupCount/setupPanel?type=Linux > /dev/null 2>&1
|
||
#curl -sS --connect-timeout 10 -m 60 https://www.aapanel.com/Api/SetupCount?type=Linux > /dev/null 2>&1
|
||
curl -sS --connect-timeout 10 -m 60 https://console.aapanel.com/Api/SetupCount?type=Linux > /dev/null 2>&1
|
||
#if [ "$1" != "" ];then
|
||
echo "66959f96" > /www/server/panel/data/o.pl
|
||
cd /www/server/panel
|
||
$python_bin tools.py o
|
||
#fi
|
||
echo /www > /var/bt_setupPath.conf
|
||
}
|
||
|
||
Install_Main(){
|
||
setenforce 0
|
||
startTime=`date +%s`
|
||
Lock_Clear
|
||
System_Check
|
||
#Set_Ssl
|
||
Get_Pack_Manager
|
||
get_node_url
|
||
|
||
MEM_TOTAL=$(free -g|grep Mem|awk '{print $2}')
|
||
if [ "${MEM_TOTAL}" -le "1" ];then
|
||
Auto_Swap
|
||
fi
|
||
|
||
|
||
if [ "${PM}" = "yum" ]; then
|
||
Install_RPM_Pack
|
||
elif [ "${PM}" = "apt-get" ]; then
|
||
Install_Deb_Pack
|
||
fi
|
||
|
||
Install_Python_Lib
|
||
Install_Bt
|
||
|
||
Set_Bt_Panel
|
||
Service_Add
|
||
Set_Firewall
|
||
|
||
Get_Ip_Address
|
||
Setup_Count ${IDC_CODE}
|
||
}
|
||
|
||
echo "
|
||
+----------------------------------------------------------------------
|
||
| aaPanel 6.0 FOR CentOS/Ubuntu/Debian
|
||
+----------------------------------------------------------------------
|
||
| Copyright © 2015-2099 BT-SOFT(http://www.aapanel.com) All rights reserved.
|
||
+----------------------------------------------------------------------
|
||
| The WebPanel URL will be http://SERVER_IP:8888 when installed.
|
||
+----------------------------------------------------------------------
|
||
"
|
||
|
||
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
|
||
|
||
Install_Main
|
||
intenal_ip=$(ip addr | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -E -v "^127\.|^255\.|^0\." | head -n 1)
|
||
echo -e "=================================================================="
|
||
echo -e "\033[32mCongratulations! Installed successfully!\033[0m"
|
||
echo -e "=================================================================="
|
||
if [ "$SET_SSL" == true ];then
|
||
echo "aaPanel Internet Address: https://${getIpAddress}:${panelPort}$auth_path"
|
||
echo "aaPanel Internal Address: https://${intenal_ip}:${panelPort}$auth_path"
|
||
else
|
||
echo "aaPanel Internet Address: http://${getIpAddress}:${panelPort}$auth_path"
|
||
echo "aaPanel Internal Address: http://${intenal_ip}:${panelPort}$auth_path"
|
||
fi
|
||
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 new_install_en.sh
|
||
|
||
|