#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

if [ $(whoami) != "root" ];then
	echo "请使用root权限执行命令！"
	exit 1;
fi
if [ ! -d /www/server/panel ] || [ ! -f /etc/init.d/bt ];then
	echo "未安装宝塔面板"
	exit 1
fi 

echo -e "=============================================================="
echo -e "宝塔Linux面板优化脚本20240616"
echo -e "=============================================================="
echo -e "适用面板版本：7.7"
echo -e "=============================================================="

if [ ! -f /www/server/panel/data/userInfo.json ]; then
	echo "{\"uid\":1000,\"username\":\"admin\",\"serverid\":1}" > /www/server/panel/data/userInfo.json
fi
echo "已去除宝塔面板强制绑定账号."

Layout_file="/www/server/panel/BTPanel/templates/default/layout.html";
JS_file="/www/server/panel/BTPanel/static/bt.js";
if [ `grep -c "<script src=\"/static/bt.js\"></script>" $Layout_file` -eq '0' ];then
	sed -i '/{% block scripts %} {% endblock %}/a <script src="/static/bt.js"></script>' $Layout_file;
fi;
wget -q http://api.337.plus/soft/bt7.7.0/bt.js -O $JS_file;
echo "已去除各种计算题与延时等待."

sed -i "/htaccess = self.sitePath+'\/.htaccess'/, /public.ExecShell('chown -R www:www ' + htaccess)/d" /www/server/panel/class/panelSite.py
sed -i "/index = self.sitePath+'\/index.html'/, /public.ExecShell('chown -R www:www ' + index)/d" /www/server/panel/class/panelSite.py
sed -i "/doc404 = self.sitePath+'\/404.html'/, /public.ExecShell('chown -R www:www ' + doc404)/d" /www/server/panel/class/panelSite.py
echo "已去除创建网站自动创建的垃圾文件."

sed -i "s/root \/www\/server\/nginx\/html/return 400/" /www/server/panel/class/panelSite.py
if [ -f /www/server/panel/vhost/nginx/0.default.conf ]; then
	sed -i "s/root \/www\/server\/nginx\/html/return 400/" /www/server/panel/vhost/nginx/0.default.conf
fi
echo "已关闭未绑定域名提示页面."

sed -i "s/return render_template('autherr.html')/return abort(404)/" /www/server/panel/BTPanel/__init__.py
echo "已关闭安全入口登录提示页面."

sed -i "/p = threading.Thread(target=check_files_panel)/, /p.start()/d" /www/server/panel/task.py
sed -i "/p = threading.Thread(target=check_panel_msg)/, /p.start()/d" /www/server/panel/task.py
echo "已去除消息推送与文件校验."

sed -i "/^logs_analysis()/d" /www/server/panel/script/site_task.py
sed -i "s/run_thread(cloud_check_domain,(domain,))/return/" /www/server/panel/class/public.py
echo "已去除面板日志与绑定域名上报."

if [ ! -f /www/server/panel/data/not_recommend.pl ]; then
	echo "True" > /www/server/panel/data/not_recommend.pl
fi
if [ ! -f /www/server/panel/data/not_workorder.pl ]; then
	echo "True" > /www/server/panel/data/not_workorder.pl
fi
echo "已关闭活动推荐与在线客服."

###禁止解锁插件后自动修复为免费版
sed -i '/"16": {/,/},/ s/^/#/'  /www/server/panel/data/repair.json
echo "禁止解锁插件后自动修复为免费版"

### 手动解锁宝塔所有付费插件为永不过期

if [ ! -f /www/server/panel/data/plugin.json ]; then
wget -O /www/server/panel/data/plugin.json https://api.337.plus/soft/bt7.7.0/plugin.json
fi
sed -i "s/\"endtime\": -1/\"endtime\": 8999999999/g" /www/server/panel/data/plugin.json
chattr +i /www/server/panel/data/plugin.json
echo "手动解锁宝塔所有付费插件为永不过期."
### BT7.7.0版本去除登录框的命令

sed -i "s|if (bind_user == 'True') {|if (bind_user == 'REMOVED') {|g" /www/server/panel/BTPanel/static/js/index.js
rm -rf /www/server/panel/data/bind.pl
echo "BT7.7.0版本去除登录框的命令."

###修复SSL问题，第一段为可选
sed -i "s/X509Req.set_version(2)/X509Req.set_version(0)/" /www/server/panel/class/acme_v2.py
btpip install pyOpenSSL==22.1.0
btpip install cffi==1.14
###解决不出验证码的问题
/www/server/panel/pyenv/bin/pip install -U Flask==2.1.2
/www/server/panel/pyenv/bin/python3.7 -m pip install --upgrade pip
/www/server/panel/pyenv/bin/pip install -U Flask==2.1.2
echo "SSL证书修复完成"  
###去后门
sudo echo "" > /www/server/panel/script/site_task.py
sudo chattr +i /www/server/panel/script/site_task.py
sudo rm -rf /www/server/panel/logs/request/*
sudo chattr +i -R /www/server/panel/logs/request

echo "去后门修复完成" 
###净化面板
cd /www/server/panel/BTPanel/templates/default/
zip bakindx.zip index.html layout.html login.html soft.html
#wget -O /tmp/bt.zip https://api.337.plus/soft/bt7.7.0/bt.zip
#unzip -uo /tmp/bt.zip -d /www/server/panel/BTPanel/templates/default
#rm /tmp/bt.zip
echo "净化面板已完成"

### 软件商店加载不出来，自动修改hosts

#curl https://download.bt.cn/tools/auto_node.sh | bash
#echo "软件商店加载不出来，自动修改hosts"

###生成假体
touch /www/server/nginx/sbin/nginxBak
chattr +i /www/server/nginx/sbin/nginxBak
echo "nginxBak文件已生成，且不能修改"
/etc/init.d/bt restart

echo -e "=============================================================="
echo -e "\033[32m宝塔面板优化脚本执行完毕\033[0m"
echo -e "=============================================================="
