mirror of
https://github.com/flucont/btcloud.git
synced 2025-10-15 07:15:17 +00:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
911a567fde | ||
![]() |
b27349a416 | ||
![]() |
def82c88cb | ||
![]() |
04028103c1 | ||
![]() |
d18cd84e29 | ||
![]() |
268f76f9ba | ||
![]() |
7d32833431 |
211
app/command/CleanViteJs.php
Normal file
211
app/command/CleanViteJs.php
Normal file
@@ -0,0 +1,211 @@
|
||||
<?php
|
||||
declare (strict_types = 1);
|
||||
|
||||
namespace app\command;
|
||||
|
||||
use think\console\Command;
|
||||
use think\console\Input;
|
||||
use think\console\input\Argument;
|
||||
use think\console\input\Option;
|
||||
use think\console\Output;
|
||||
use think\facade\Db;
|
||||
use think\facade\Config;
|
||||
use app\lib\Plugins;
|
||||
|
||||
class CleanViteJs extends Command
|
||||
{
|
||||
protected function configure()
|
||||
{
|
||||
$this->setName('cleanvitejs')
|
||||
->addArgument('dir', Argument::REQUIRED, '/BTPanel/static/vite/js/路径')
|
||||
->setDescription('处理宝塔面板vite/js文件');
|
||||
}
|
||||
|
||||
protected function execute(Input $input, Output $output)
|
||||
{
|
||||
$dir = trim($input->getArgument('dir'));
|
||||
if(!file_exists($dir)){
|
||||
$output->writeln('目录不存在');
|
||||
return;
|
||||
}
|
||||
//$this->handlefile($dir.'/DockerImages.js');
|
||||
$this->checkdir($dir);
|
||||
}
|
||||
|
||||
private function getExtendCode($content, $part, $n = 1, $startChar = '{', $endChar = '}'){
|
||||
if(!$part) return false;
|
||||
$length = strlen($content);
|
||||
$start = strpos($content, $part);
|
||||
if($start===false)return false;
|
||||
$end = $start+strlen($part);
|
||||
$start--;
|
||||
$c = 0;
|
||||
for($i=$start;$i>=0;$i--){
|
||||
if(substr($content,$i,1) == $startChar) $c++;
|
||||
if(substr($content,$i,1) == $endChar) $c--;
|
||||
if($c == $n){
|
||||
$start = $i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$c = 0;
|
||||
for($i=$end;$i<=$length;$i++){
|
||||
if(substr($content,$i,1) == $endChar) $c++;
|
||||
if(substr($content,$i,1) == $startChar) $c--;
|
||||
if($c == $n){
|
||||
$end = $i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return substr($content, $start, $end - $start + 1);
|
||||
}
|
||||
|
||||
private function getExtendFunction($content, $part, $startChar = '(', $endChar = ')'){
|
||||
$code = $this->getExtendCode($content, $part, 1, $startChar, $endChar);
|
||||
if(!$code) return false;
|
||||
$start = strpos($content, $code) - 1;
|
||||
$end = $start + strlen($code);
|
||||
for($i=$start;$i>=0;$i--){
|
||||
$char = substr($content,$i,1);
|
||||
if(!ctype_alpha($char)){
|
||||
$start = $i+1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(substr($content,$start-1,1) == ',') $start--;
|
||||
return substr($content, $start, $end - $start + 1);
|
||||
}
|
||||
|
||||
private function checkdir($basedir){
|
||||
if($dh=opendir($basedir)){
|
||||
while (($file=readdir($dh)) !== false){
|
||||
if($file != '.' && $file != '..'){
|
||||
if(!is_dir($basedir.'/'.$file) && substr($file,-3)=='.js'){
|
||||
$this->handlefile($basedir.'/'.$file);
|
||||
}else if(!is_dir($basedir.'/'.$file) && substr($file,-4)=='.map'){
|
||||
unlink($basedir.'/'.$file);
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($dh);
|
||||
}
|
||||
}
|
||||
|
||||
private function handlefile($filepath){
|
||||
$file = file_get_contents($filepath);
|
||||
if(!$file)return;
|
||||
|
||||
$flag = false;
|
||||
|
||||
if(strpos($file, 'window.location.protocol.indexOf("https")>=0')!==false){ //index
|
||||
$file = str_replace('(window.location.protocol.indexOf("https")>=0)', '1', $file);
|
||||
$file = preg_replace('!setTimeout\(\(\(\)=>\w+\(\)\),3e3\)!', '', $file);
|
||||
$file = preg_replace('!setTimeout\(\(function\(\)\{return \w+\(\)\}\),3e3\)!', '', $file);
|
||||
$file = preg_replace('!recommendShow:\w+,!', 'recommendShow:!1,', $file);
|
||||
$code = $this->getExtendCode($file, '"需求反馈"', 2);
|
||||
if($code){
|
||||
$file = str_replace($code, '{}', $file);
|
||||
}
|
||||
$flag = true;
|
||||
}
|
||||
|
||||
if(strpos($file, '"WechatOfficial"')!==false){ //main
|
||||
$code = $this->getExtendCode($file, '"WechatOfficial"', 5);
|
||||
$code = $this->getExtendFunction($file, $code);
|
||||
$start = strpos($file, $code) - 1;
|
||||
for($i=$start;$i>=0;$i--){
|
||||
if(substr($file,$i,1) == ','){
|
||||
$start = $i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$code = $this->getExtendCode($file, '"/other/customer-service.png"', 2);
|
||||
$code = $this->getExtendCode($file, $code, 2, '[', ']');
|
||||
$end = strpos($file, $code)+strlen($code);
|
||||
$code = substr($file, $start, $end - $start + 1);
|
||||
$file = str_replace($code, '', $file);
|
||||
$file = preg_replace('!,isCalc:\w+,isInput:\w+,isCheck:\w+,!', ',isCalc:!1,isInput:!1,isCheck:!1,', $file);
|
||||
$file = preg_replace('!computed\(\(\(\)=>"calc"===\w+\.type\|\|"checkConfirm"===\w+\.type\)\)!', '!1', $file);
|
||||
$file = preg_replace('!computed\(\(\(\)=>"input"===\w+\.type\)\)!', '!1', $file);
|
||||
$file = preg_replace('!computed\(\(\(\)=>"check"===\w+\.type\|\|"checkConfirm"===\w+\.type\)\)!', '!1', $file);
|
||||
$file = preg_replace('!computed\(\(function\(\)\{return"calc"===\w+\.type\|\|"checkConfirm"===\w+\.type\}\)\)!', '!1', $file);
|
||||
$file = preg_replace('!computed\(\(function\(\)\{return"input"===\w+\.type\}\)\)!', '!1', $file);
|
||||
$file = preg_replace('!computed\(\(function\(\)\{return"check"===\w+\.type\|\|"checkConfirm"===\w+\.type\}\)\)!', '!1', $file);
|
||||
$file = str_replace('startNegotiate(),', '', $file);
|
||||
$flag = true;
|
||||
}
|
||||
|
||||
if(strpos($file, '请冷静几秒钟,确认以下要删除的数据')!==false && strpos($file, '"计算结果:"')!==false){ //site
|
||||
$code = $this->getExtendCode($file, '"计算结果:"', 2, '[', ']');
|
||||
$code = $this->getExtendFunction($file, $code);
|
||||
$file = str_replace($code, '', $file);
|
||||
$file = preg_replace('!\w+\.sum===\w+\.addend1\+\w+\.addend2!', '!0', $file);
|
||||
$file = preg_replace('!\w+\.sum\!==\w+\.addend1\+\w+\.addend2!', '!1', $file);
|
||||
$file = preg_replace('!,disableDeleteButton:\w+,countdown:\w+,!', ',disableDeleteButton:!1,countdown:!1,', $file);
|
||||
if(preg_match('/startCountdown:(\w+),/', $file, $matchs)){
|
||||
$file = str_replace([';'.$matchs[1].'()', $matchs[1].'(),'], '', $file);
|
||||
}
|
||||
$flag = true;
|
||||
}
|
||||
|
||||
if(strpos($file, '"bt-waf-gray"')!==false){ //site.popup
|
||||
$code = $this->getExtendCode($file, '"bt-waf-gray"', 2);
|
||||
$code = $this->getExtendCode($file, $code, 1, '[', ']');
|
||||
$code = $this->getExtendFunction($file, $code);
|
||||
$file = str_replace($code, '""', $file);
|
||||
$flag = true;
|
||||
}
|
||||
|
||||
if(strpos($file, '"商用SSL证书"')!==false){ //site-ssl
|
||||
$code = $this->getExtendFunction($file, '"商用SSL证书"', '{', '}');
|
||||
$file = str_replace($code, '', $file);
|
||||
$code = $this->getExtendFunction($file, '"测试证书"', '{', '}');
|
||||
$file = str_replace($code, '', $file);
|
||||
$file = preg_replace('!\w+\.value="currentCertInfo":\w+\.value="busSslList"!', 'i.value="currentCertInfo":i.value="currentCertInfo"', $file);
|
||||
$file = preg_replace('!\{\w+\.value="busSslList",\w+\(\)\}!', '{i.value="letsEncryptList"}', $file);
|
||||
$flag = true;
|
||||
}
|
||||
|
||||
if(strpos($file, '如果您希望添加其它Docker应用')!==false){
|
||||
$code = $this->getExtendCode($file, '如果您希望添加其它Docker应用', 1, '[', ']');
|
||||
$code = $this->getExtendFunction($file, $code);
|
||||
$file = str_replace($code, '', $file);
|
||||
$flag = true;
|
||||
}
|
||||
|
||||
for($i=0;$i<5;$i++){
|
||||
$code = $this->getExtendCode($file, 'content:"需求反馈"', 2);
|
||||
if($code){
|
||||
$code = $this->getExtendFunction($file, $code);
|
||||
$start = strpos($file, $code);
|
||||
if(substr($file,$start-1,1) == ':'){
|
||||
$file = str_replace($code, '{}', $file);
|
||||
}else{
|
||||
$file = str_replace($code, '', $file);
|
||||
}
|
||||
$flag = true;
|
||||
}
|
||||
}
|
||||
$code = $this->getExtendFunction($file, '("需求反馈")');
|
||||
if($code){
|
||||
$file = str_replace($code, '', $file);
|
||||
$flag = true;
|
||||
}
|
||||
$code = $this->getExtendFunction($file, '(" 需求反馈 ")');
|
||||
if($code){
|
||||
$file = str_replace($code, '', $file);
|
||||
$flag = true;
|
||||
}
|
||||
if(strpos('暂无搜索结果,<span class="text-primary cursor-pointer NpsDialog">提交需求反馈</span>', $file)!==false){
|
||||
$file = str_replace('暂无搜索结果,<span class="text-primary cursor-pointer NpsDialog">提交需求反馈</span>', '暂无搜索结果', $file);
|
||||
$flag = true;
|
||||
}
|
||||
|
||||
if(!$flag) return;
|
||||
if(file_put_contents($filepath, $file)){
|
||||
echo '文件:'.$filepath.' 处理成功'."\n";
|
||||
}else{
|
||||
echo '文件:'.$filepath.' 处理失败,可能无写入权限'."\n";
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
Linux_Version="8.0.5"
|
||||
Linux_Version="8.1.0"
|
||||
Windows_Version="7.9.0"
|
||||
Btm_Version="2.2.9"
|
||||
|
||||
|
@@ -8,5 +8,6 @@ return [
|
||||
'updateall' => 'app\command\UpdateAll',
|
||||
'decrypt' => 'app\command\DecryptFile',
|
||||
'clean' => 'app\command\Clean',
|
||||
'cleanvitejs' => 'app\command\CleanViteJs',
|
||||
],
|
||||
];
|
||||
|
0
data/config/.gitkeep
Normal file
0
data/config/.gitkeep
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
0
data/win/config/.gitkeep
Normal file
0
data/win/config/.gitkeep
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -48,7 +48,7 @@ CREATE TABLE `cloud_white` (
|
||||
DROP TABLE IF EXISTS `cloud_record`;
|
||||
CREATE TABLE `cloud_record` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ip` varchar(20) NOT NULL,
|
||||
`ip` varchar(200) NOT NULL,
|
||||
`addtime` datetime NOT NULL,
|
||||
`usetime` datetime NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
|
@@ -59,26 +59,6 @@ GetSysInfo(){
|
||||
echo -e ${SYS_VERSION}
|
||||
echo -e Bit:${SYS_BIT} Mem:${MEM_TOTAL}M Core:${CPU_INFO}
|
||||
echo -e ${SYS_INFO}
|
||||
|
||||
if [ -z "${os_version}" ];then
|
||||
echo -e "============================================"
|
||||
echo -e "检测到为非常用系统安装,建议更换至Centos-7或Debian-10+或Ubuntu-20+系统安装宝塔面板"
|
||||
echo -e "详情请查看系统兼容表:https://docs.qq.com/sheet/DUm54VUtyTVNlc21H?tab=BB08J2"
|
||||
echo -e "特殊情况可通过以下联系方式寻求安装协助情况"
|
||||
fi
|
||||
|
||||
is64bit=$(getconf LONG_BIT)
|
||||
if [ "${is64bit}" == '32' ];then
|
||||
echo -e "宝塔面板不支持32位系统进行安装,请使用64位系统/服务器架构进行安装宝塔"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
S390X_CHECK=$(uname -a|grep s390x)
|
||||
if [ "${S390X_CHECK}" ];then
|
||||
echo -e "宝塔面板不支持s390x架构进行安装,请使用64位系统/服务器架构进行安装宝塔"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "============================================"
|
||||
echo -e "请截图以上报错信息发帖至论坛www.bt.cn/bbs求助"
|
||||
}
|
||||
@@ -150,6 +130,14 @@ Set_Ssl(){
|
||||
esac
|
||||
fi
|
||||
}
|
||||
Add_lib_Install(){
|
||||
Get_Versions
|
||||
if [ "${os_type}" == "el" ] && [ "${os_version}" == "7" ];then
|
||||
cd /www/server/panel/class
|
||||
btpython -c "import panelPlugin; plugin = panelPlugin.panelPlugin(); plugin.check_install_lib('1')"
|
||||
echo "True" > /tmp/panelTask.pl
|
||||
fi
|
||||
}
|
||||
Get_Pack_Manager(){
|
||||
if [ -f "/usr/bin/yum" ] && [ -d "/etc/yum.repos.d" ]; then
|
||||
PM="yum"
|
||||
@@ -167,6 +155,8 @@ Auto_Swap()
|
||||
if [ ! -d /www ];then
|
||||
mkdir /www
|
||||
fi
|
||||
echo "正在设置虚拟内存,请稍等..........";
|
||||
echo '---------------------------------------------';
|
||||
swapFile="/www/swap"
|
||||
dd if=/dev/zero of=$swapFile bs=1M count=1025
|
||||
mkswap -f $swapFile
|
||||
@@ -236,7 +226,7 @@ get_node_url(){
|
||||
|
||||
echo '---------------------------------------------';
|
||||
echo "Selected download node...";
|
||||
nodes=(https://dg2.bt.cn https://download.bt.cn https://ctcc1-node.bt.cn https://cmcc1-node.bt.cn https://ctcc2-node.bt.cn https://hk1-node.bt.cn https://na1-node.bt.cn https://jp1-node.bt.cn);
|
||||
nodes=(https://dg2.bt.cn https://download.bt.cn https://ctcc1-node.bt.cn https://cmcc1-node.bt.cn https://ctcc2-node.bt.cn https://hk1-node.bt.cn https://na1-node.bt.cn https://jp1-node.bt.cn https://cf1-node.aapanel.com);
|
||||
|
||||
if [ "$1" ];then
|
||||
nodes=($(echo ${nodes[*]}|sed "s#${1}##"))
|
||||
@@ -255,7 +245,7 @@ get_node_url(){
|
||||
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 [ $TIME_TOTAL -lt 300 ];then
|
||||
if [ $RES -ge 1500 ];then
|
||||
echo "$RES $node" >> $tmp_file1
|
||||
fi
|
||||
@@ -266,8 +256,8 @@ get_node_url(){
|
||||
fi
|
||||
|
||||
i=$(($i+1))
|
||||
if [ $TIME_TOTAL -lt 100 ];then
|
||||
if [ $RES -ge 3000 ];then
|
||||
if [ $TIME_TOTAL -lt 300 ];then
|
||||
if [ $RES -ge 2390 ];then
|
||||
break;
|
||||
fi
|
||||
fi
|
||||
@@ -403,7 +393,7 @@ Install_Deb_Pack(){
|
||||
apt-get install curl -y
|
||||
fi
|
||||
|
||||
debPacks="wget curl libcurl4-openssl-dev gcc make zip unzip tar openssl libssl-dev gcc libxml2 libxml2-dev 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 qrencode";
|
||||
debPacks="wget curl libcurl4-openssl-dev gcc make zip unzip tar openssl libssl-dev gcc libxml2 libxml2-dev 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 qrencode sqlite3";
|
||||
apt-get install -y $debPacks --force-yes
|
||||
|
||||
for debPack in ${debPacks}
|
||||
@@ -435,6 +425,17 @@ Get_Versions(){
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ -f "/etc/os-release" ];then
|
||||
. /etc/os-release
|
||||
OS_V=${VERSION_ID%%.*}
|
||||
if [ "${ID}" == "opencloudos" ] && [[ "${OS_V}" =~ ^(9)$ ]];then
|
||||
os_type="opencloudos"
|
||||
os_version="9"
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -f $redhat_version_file ];then
|
||||
os_type='el'
|
||||
is_aliyunos=$(cat $redhat_version_file|grep Aliyun)
|
||||
@@ -581,7 +582,9 @@ Install_Python_Lib(){
|
||||
os_version=""
|
||||
rm -f /www/server/panel/pymake.pl
|
||||
fi
|
||||
|
||||
echo "==============================================="
|
||||
echo "正在下载面板运行环境,请稍等..............."
|
||||
echo "==============================================="
|
||||
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 15
|
||||
@@ -700,6 +703,9 @@ Install_Bt(){
|
||||
|
||||
wget -O /etc/init.d/bt ${download_Url}/install/src/bt6.init -T 15
|
||||
wget -O /www/server/panel/install/public.sh ${Btapi_Url}/install/public.sh -T 15
|
||||
echo "=============================================="
|
||||
echo "正在下载面板文件,请稍等..................."
|
||||
echo "=============================================="
|
||||
wget -O panel.zip ${Btapi_Url}/install/src/panel6.zip -T 15
|
||||
|
||||
if [ -f "${setup_path}/server/panel/data/default.db" ];then
|
||||
@@ -714,8 +720,8 @@ Install_Bt(){
|
||||
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
|
||||
|
||||
if [ -f "${setup_path}/server/panel/data/db/default.db" ];then
|
||||
mv -f ${setup_path}/server/panel/data/db/ ${setup_path}/server/panel/old_data/
|
||||
if [ -d "${setup_path}/server/panel/data/db" ];then
|
||||
\cp -r ${setup_path}/server/panel/data/db ${setup_path}/server/panel/old_data/
|
||||
fi
|
||||
|
||||
fi
|
||||
@@ -737,8 +743,8 @@ Install_Bt(){
|
||||
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 [ -f "${setup_path}/server/panel/old_data/db/default.db" ];then
|
||||
mv -f ${setup_path}/server/panel/old_data/db/ ${setup_path}/server/panel/data/db
|
||||
if [ -d "${setup_path}/server/panel/old_data/db" ];then
|
||||
\cp -r ${setup_path}/server/panel/old_data/db ${setup_path}/server/panel/data/
|
||||
fi
|
||||
|
||||
if [ -d "/${setup_path}/server/panel/old_data" ];then
|
||||
@@ -812,16 +818,20 @@ Set_Bt_Panel(){
|
||||
echo "/${auth_path}" > ${admin_auth}
|
||||
fi
|
||||
chmod -R 700 $pyenv_path/pyenv/bin
|
||||
btpip install docxtpl==0.16.7
|
||||
/www/server/panel/pyenv/bin/pip3 install pymongo
|
||||
/www/server/panel/pyenv/bin/pip3 install psycopg2-binary
|
||||
/www/server/panel/pyenv/bin/pip3 install flask -U
|
||||
/www/server/panel/pyenv/bin/pip3 install flask-sock
|
||||
/www/server/panel/pyenv/bin/pip3 install -I gevent
|
||||
btpip install simple-websocket==0.10.0
|
||||
btpip install natsort
|
||||
btpip uninstall enum34 -y
|
||||
btpip install geoip2==4.7.0
|
||||
if [ ! -f "/www/server/panel/pyenv/n.pl" ];then
|
||||
btpip install docxtpl==0.16.7
|
||||
/www/server/panel/pyenv/bin/pip3 install pymongo
|
||||
/www/server/panel/pyenv/bin/pip3 install psycopg2-binary
|
||||
/www/server/panel/pyenv/bin/pip3 install flask -U
|
||||
/www/server/panel/pyenv/bin/pip3 install flask-sock
|
||||
/www/server/panel/pyenv/bin/pip3 install -I gevent
|
||||
btpip install simple-websocket==0.10.0
|
||||
btpip install natsort
|
||||
btpip uninstall enum34 -y
|
||||
btpip install geoip2==4.7.0
|
||||
btpip install brotli
|
||||
btpip install PyMySQL
|
||||
fi
|
||||
auth_path=$(cat ${admin_auth})
|
||||
cd ${setup_path}/server/panel/
|
||||
/etc/init.d/bt start
|
||||
@@ -836,8 +846,19 @@ Set_Bt_Panel(){
|
||||
chmod 600 ${setup_path}/server/panel/default.pl
|
||||
sleep 3
|
||||
if [ "$SET_SSL" == true ]; then
|
||||
btpip install -I pyOpenSSl 2>/dev/null
|
||||
btpython /www/server/panel/tools.py ssl
|
||||
if [ ! -f "/www/server/panel/pyenv/n.pl" ];then
|
||||
btpip install -I pyOpenSSl 2>/dev/null
|
||||
fi
|
||||
echo "========================================"
|
||||
echo "正在开启面板SSL,请稍等............ "
|
||||
echo "========================================"
|
||||
SSL_STATUS=$(btpython /www/server/panel/tools.py ssl)
|
||||
if [ "${SSL_STATUS}" == "0" ] ;then
|
||||
echo -n " -4 " > /www/server/panel/data/v4.pl
|
||||
btpython /www/server/panel/tools.py ssl
|
||||
fi
|
||||
echo "证书开启成功!"
|
||||
echo "========================================"
|
||||
fi
|
||||
/etc/init.d/bt restart
|
||||
sleep 3
|
||||
@@ -857,6 +878,9 @@ Set_Bt_Panel(){
|
||||
btpython -c 'import tools;tools.set_panel_username("'$PANEL_USER'")'
|
||||
cd ~
|
||||
fi
|
||||
if [ -f "/usr/bin/sqlite3" ] ;then
|
||||
sqlite3 /www/server/panel/data/db/panel.db "UPDATE config SET status = '1' WHERE id = '1';" > /dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
Set_Firewall(){
|
||||
sshPort=$(cat /etc/ssh/sshd_config | grep 'Port '|awk '{print $2}')
|
||||
@@ -989,6 +1013,7 @@ Install_Main(){
|
||||
|
||||
Get_Ip_Address
|
||||
Setup_Count ${IDC_CODE}
|
||||
Add_lib_Install
|
||||
}
|
||||
|
||||
echo "
|
||||
@@ -1075,7 +1100,12 @@ echo -e ""
|
||||
echo -e "=================================================================="
|
||||
endTime=`date +%s`
|
||||
((outTime=($endTime-$startTime)/60))
|
||||
echo -e "Time consumed:\033[32m $outTime \033[0mMinute!"
|
||||
if [ "${outTime}" == "0" ];then
|
||||
((outTime=($endTime-$startTime)))
|
||||
echo -e "Time consumed:\033[32m $outTime \033[0mseconds!"
|
||||
else
|
||||
echo -e "Time consumed:\033[32m $outTime \033[0mMinute!"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
@@ -105,6 +105,29 @@ if [ "${GEVENT_V}" -le "1" ];then
|
||||
/www/server/panel/pyenv/bin/pip3 install -I gevent
|
||||
fi
|
||||
|
||||
BROTLI_C=$(btpip list 2> /dev/null |grep Brotli)
|
||||
if [ -z "$BROTLI_C" ]; then
|
||||
btpip install brotli
|
||||
fi
|
||||
|
||||
PYMYSQL_C=$(btpip list 2> /dev/null |grep PyMySQL)
|
||||
if [ -z "$PYMYSQL_C" ]; then
|
||||
btpip install PyMySQL
|
||||
fi
|
||||
|
||||
|
||||
PY_CRPYT=$(btpip list 2> /dev/null |grep cryptography|awk '{print $2}'|cut -f 1 -d '.')
|
||||
if [ "${PY_CRPYT}" -le "10" ];then
|
||||
btpip install pyOpenSSL==24.1.0
|
||||
btpip install cryptography==42.0.5
|
||||
fi
|
||||
|
||||
PYMYSQL_SSL_CHECK=$(btpython -c "import pymysql" 2>&1|grep "AttributeError: module 'cryptography.hazmat.bindings._rust.openssl'")
|
||||
if [ "${PYMYSQL_SSL_CHECK}" ];then
|
||||
btpip uninstall pyopenssl cryptography -y
|
||||
btpip install pyopenssl cryptography
|
||||
fi
|
||||
|
||||
btpip uninstall enum34 -y
|
||||
btpip install geoip2==4.7.0
|
||||
btpip install pandas
|
||||
@@ -145,6 +168,12 @@ if [ ! -f /www/server/panel/data/total_nps.pl ]; then
|
||||
echo "" > /www/server/panel/data/total_nps.pl
|
||||
fi
|
||||
|
||||
echo "==========================================="
|
||||
echo "正在更新面板文件..............."
|
||||
sleep 1
|
||||
echo "更新完成!"
|
||||
echo "==========================================="
|
||||
|
||||
chattr -i /etc/init.d/bt
|
||||
chmod +x /etc/init.d/bt
|
||||
echo "====================================="
|
||||
|
@@ -20,6 +20,8 @@
|
||||
|
||||
- 全局搜索替换 https://download.bt.cn/install/update6.sh => http://www.example.com/install/update6.sh
|
||||
|
||||
- 搜索并删除提交异常报告的代码 bt_error/index.php
|
||||
|
||||
- class/ajax.py 文件 \# 是否执行升级程序 下面的 public.get_url() 改成 public.GetConfigValue('home')
|
||||
|
||||
class/jobs.py 文件 \#尝试升级到独立环境 下面的 public.get_url() 改成 public.GetConfigValue('home')
|
||||
@@ -42,6 +44,8 @@
|
||||
|
||||
在 def check_domain_cloud(domain): 这一行下面加上 return
|
||||
|
||||
在 def err_collect 这一行下面加上 return
|
||||
|
||||
在 def get_improvement(): 这一行下面加上 return False
|
||||
|
||||
在free_login_area方法内get_free_ips_area替换成get_ips_area
|
||||
@@ -61,17 +65,26 @@
|
||||
temp_file = temp_file.replace('https://download.bt.cn/install/public.sh', 'http://www.example.com/install/public.sh')
|
||||
```
|
||||
|
||||
def check_status(self, softInfo): 方法最后一行加上
|
||||
|
||||
```python
|
||||
if 'endtime' in softInfo:
|
||||
softInfo['endtime'] = time.time() + 86400 * 3650
|
||||
```
|
||||
|
||||
- class/plugin_deployment.py 文件,SetupPackage方法内替换 public.GetConfigValue('home') => 'https://www.bt.cn'
|
||||
|
||||
- class/config.py 文件,get_nps方法内data['nps'] = False改成True,get_nps_new方法下面加上 return public.returnMsg(False, "获取问卷失败")
|
||||
|
||||
def err_collection(self, get): 这一行下面加上 return public.returnMsg(True, "OK")
|
||||
|
||||
- script/flush_plugin.py 文件,删除clear_hosts()一行
|
||||
|
||||
- script/reload_check.py 文件,在第2行插入sys.exit()
|
||||
|
||||
- script/local_fix.sh 文件,${D_NODE_URL}替换成www.example.com
|
||||
|
||||
- tools.py 文件,u_input == 16下面的public.get_url()替换成'http://www.example.com'
|
||||
- tools.py 文件,u_input == 16下面的public.get_url()替换成public.GetConfigValue('home')
|
||||
|
||||
- install/install_soft.sh 在. 执行之前加入以下代码
|
||||
|
||||
@@ -120,12 +133,12 @@
|
||||
|
||||
- [可选]关闭自动生成访问日志:在 BTPanel/\_\_init\_\_.py 删除public.write_request_log这一行
|
||||
|
||||
- [可选]删除小图标广告:在BTPanel/static/js/site.js,删除“WAF防火墙”对应的span标签
|
||||
|
||||
- [可选]上传文件默认选中覆盖,在BTPanel/static/js/upload-drog.js,id="all_operation"加checked属性
|
||||
|
||||
- [可选]新版vite页面去除需求反馈、各种广告、计算题等,执行 php think decrypt cleanvitejs <面板BTPanel/static/vite/js路径>
|
||||
|
||||
解压安装包panel6.zip,将更新包改好的文件覆盖到里面,然后重新打包,即可更新安装包。(
|
||||
|
||||
解压安装包[panel6.zip](http://download.bt.cn/install/src/panel6.zip),将更新包改好的文件覆盖到里面,然后重新打包,即可更新安装包。(
|
||||
|
||||
别忘了删除class文件夹里面所有的.so文件)
|
||||
|
||||
|
Reference in New Issue
Block a user