Compare commits

...

4 Commits
3.4.4 ... main

Author SHA1 Message Date
flucout
08bd35c997 update 2026-01-23 16:00:06 +08:00
flucout
c0ebc38d54 update 2026-01-10 22:28:33 +08:00
flucout
c7381fd675 update 2025-12-16 23:14:27 +08:00
flucout
1ed4ac8d39 update 2025-12-16 23:05:40 +08:00
15 changed files with 140 additions and 24 deletions

View File

@ -164,8 +164,13 @@ class CleanViteJs extends Command
$file = preg_replace('!computed\(\(\)=>"input"===\w+\.\w+\.type\)!', '!1', $file); $file = preg_replace('!computed\(\(\)=>"input"===\w+\.\w+\.type\)!', '!1', $file);
$file = preg_replace('!computed\(function\(\)\{return"calc"===\w+\.\w+\.type\}\)!', '!1', $file); $file = preg_replace('!computed\(function\(\)\{return"calc"===\w+\.\w+\.type\}\)!', '!1', $file);
$file = preg_replace('!computed\(function\(\)\{return"input"===\w+\.\w+\.type\}\)!', '!1', $file); $file = preg_replace('!computed\(function\(\)\{return"input"===\w+\.\w+\.type\}\)!', '!1', $file);
$file = preg_replace('!computed\(\(\)=>\w+\.\w+\.type==="calc"\)!', '!1', $file);
$file = preg_replace('!computed\(\(\)=>\w+\.\w+\.type==="input"\)!', '!1', $file);
$file = preg_replace('!computed\(function\(\)\{return\w+\.\w+\.type==="calc"\}\)!', '!1', $file);
$file = preg_replace('!computed\(function\(\)\{return\w+\.\w+\.type==="input"\}\)!', '!1', $file);
$code = $this->getExtendCode($file, '"自动部署"', 2); $code = $this->getExtendCode($file, '"自动部署"', 2);
if($code){ if($code){
$file = str_replace($code.',', '', $file);
$file = str_replace($code, '', $file); $file = str_replace($code, '', $file);
} }
$flag = true; $flag = true;
@ -219,10 +224,11 @@ class CleanViteJs extends Command
$code2 = str_replace($this->getExtendFunction($code, '"购买商业证书"'), '', $code2); $code2 = str_replace($this->getExtendFunction($code, '"购买商业证书"'), '', $code2);
$file = str_replace($code, $code2, $file); $file = str_replace($code, $code2, $file);
} }
$file = str_replace('.value="busSslList"', '.value="letsEncryptList"', $file);
$flag = true; $flag = true;
} }
if(strpos($file, '"btSslList"')!==false && strpos($filepath, '/useStore')){ //site-ssl if(strpos($file, '"busSslList"')!==false && strpos($filepath, '/useStore')){ //site-ssl
$file = str_replace('"btSslList"', '"currentCertInfo"', $file); $file = str_replace('"busSslList"', '"currentCertInfo"', $file);
$flag = true; $flag = true;
} }
@ -230,7 +236,9 @@ class CleanViteJs extends Command
$code = $this->getExtendFunction($file, '"商用SSL"', '{', '}'); $code = $this->getExtendFunction($file, '"商用SSL"', '{', '}');
$file = str_replace($code, '', $file); $file = str_replace($code, '', $file);
$code = $this->getExtendFunction($file, '"宝塔证书"', '{', '}'); $code = $this->getExtendFunction($file, '"宝塔证书"', '{', '}');
if($code){
$file = str_replace($code, '', $file); $file = str_replace($code, '', $file);
}
for($i=0;$i<3;$i++){ for($i=0;$i<3;$i++){
$code = $this->getExtendCode($file, ',"联系客服"', 2, '[', ']'); $code = $this->getExtendCode($file, ',"联系客服"', 2, '[', ']');
if($code){ if($code){
@ -240,7 +248,7 @@ class CleanViteJs extends Command
$flag = true; $flag = true;
} }
if(strpos($file, '"SSL-CERTIFICATE-STORE"')!==false){ //ssl if(strpos($file, '"SSL-CERTIFICATE-STORE"')!==false){ //ssl
$file = str_replace('("bt")', '("encrypt")', $file); $file = str_replace('("ssl")', '("encrypt")', $file);
$flag = true; $flag = true;
} }
@ -270,6 +278,10 @@ class CleanViteJs extends Command
if(strpos($file, '"打开插件文件目录"')!==false && strpos($file, '"(续费)"')!==false){ //soft.table if(strpos($file, '"打开插件文件目录"')!==false && strpos($file, '"(续费)"')!==false){ //soft.table
$code = $this->getExtendFunction($file, '"(续费)"'); $code = $this->getExtendFunction($file, '"(续费)"');
$file = str_replace($code, '""', $file); $file = str_replace($code, '""', $file);
$code = $this->getExtendCode($file, 'activity_id:47', 2);
if($code){
$file = str_replace($code, '{}', $file);
}
$flag = true; $flag = true;
} }

View File

@ -57,7 +57,8 @@ class UpdateAll extends Command
$json_arr = Plugins::get_plugin_list($os); $json_arr = Plugins::get_plugin_list($os);
//循环下载缺少的插件 //循环下载缺少的插件
foreach($json_arr['list'] as $plugin){ foreach($json_arr['list'] as $plugin){
if($type == 0 && ($plugin['type']==8 || $plugin['type']==12 || in_array($plugin['name'], \app\lib\BtPlugins::$skip_plugins)) || $type == 1 && $plugin['type']==12 || $plugin['type']==10 || $plugin['type']==5) continue; if($type == 0 && ($plugin['type']==8 || $plugin['type']==12) || $type == 1 && $plugin['type']==12 || $plugin['type']==10 || $plugin['type']==5) continue;
if(in_array($plugin['name'], \app\lib\BtPlugins::$skip_plugins)) continue;
foreach($plugin['versions'] as $version){ foreach($plugin['versions'] as $version){
$ver = $version['m_version'].'.'.$version['version']; $ver = $version['m_version'].'.'.$version['version'];

View File

@ -580,6 +580,17 @@ class Api extends BaseController
return json(json_decode($response, true)); return json(json_decode($response, true));
} }
public function get_ip_info(){
$ip = input('post.ip');
$data = [];
$url = 'https://www.bt.cn/api/ip/info_json';
$post = http_build_query(['ip'=>$ip]);
$response = get_curl($url, $post);
$arr = json_decode($response, true);
if($arr) $data = $arr;
return json($data);
}
public function return_success(){ public function return_success(){
return json(['status'=>true, 'msg'=>1, 'data'=>(object)[]]); return json(['status'=>true, 'msg'=>1, 'data'=>(object)[]]);
} }

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
Linux_Version="11.3.0" Linux_Version="11.5.0"
Windows_Version="8.2.2" Windows_Version="8.2.2"
Aapanel_Version="7.0.25" Aapanel_Version="7.0.25"
Btm_Version="2.3.3" Btm_Version="2.3.3"

View File

@ -174,7 +174,7 @@
</div><hr/> </div><hr/>
<div id="wbt_type_0" style="{if config_get('wbt_type')==1}display:none;{/if}"> <div id="wbt_type_0" style="{if config_get('wbt_type')==1}display:none;{/if}">
<p>以下宝塔面板请使用官方最新脚本安装并绑定账号,用于获取插件列表及插件包</p> <p>以下宝塔面板请使用官方最新脚本安装并绑定账号,用于获取插件列表及插件包</p>
<p>先在面板软件商店,安装“堡塔面板静态文件加速”插件,然后<a href="/static/file/win/static_cdn.zip">下载专用插件(Win)</a>,上传到 /BtSoft/panel/plugin/ 解压。</p> <p><a href="/static/file/win/kaixin.zip">下载专用插件(Win)</a>,上传到 /BtSoft/panel/plugin/ 解压,即可在软件商店已安装列表看到</p>
<div class="form-group"> <div class="form-group">
<label>宝塔面板URL</label><br/> <label>宝塔面板URL</label><br/>
<input type="text" name="wbt_url" value="{:config_get('wbt_url')}" class="form-control"/> <input type="text" name="wbt_url" value="{:config_get('wbt_url')}" class="form-control"/>

View File

@ -1,7 +1,7 @@
DROP TABLE IF EXISTS `cloud_config`; DROP TABLE IF EXISTS `cloud_config`;
CREATE TABLE `cloud_config` ( CREATE TABLE `cloud_config` (
`key` varchar(32) NOT NULL, `key` varchar(32) NOT NULL,
`value` varchar(255) DEFAULT NULL, `value` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`key`) PRIMARY KEY (`key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@ -12,12 +12,12 @@ INSERT INTO `cloud_config` (`key`, `value`) VALUES
('bt_key', ''), ('bt_key', ''),
('whitelist', '0'), ('whitelist', '0'),
('download_page', '1'), ('download_page', '1'),
('new_version', '11.3.0'), ('new_version', '11.5.0'),
('update_msg', '暂无更新日志'), ('update_msg', '暂无更新日志'),
('update_date', '2025-11-25'), ('update_date', '2026-01-19'),
('new_version_win', '8.4.6'), ('new_version_win', '8.5.1'),
('update_msg_win', '暂无更新日志'), ('update_msg_win', '暂无更新日志'),
('update_date_win', '2025-11-25'), ('update_date_win', '2026-01-19'),
('new_version_en', '7.0.25'), ('new_version_en', '7.0.25'),
('update_msg_en', '暂无更新日志'), ('update_msg_en', '暂无更新日志'),
('update_date_en', '2025-09-10'), ('update_date_en', '2025-09-10'),

View File

@ -358,7 +358,7 @@ Set_Repo_Url(){
if { [ "${NODE_STATUS}" != "200" ] && [ "${NODE_STATUS}" != "301" ]; } || [ "${TIME_TOTAL}" -ge "500" ] || [ "${SOURCE_URL_CHECK}" ]; then if { [ "${NODE_STATUS}" != "200" ] && [ "${NODE_STATUS}" != "301" ]; } || [ "${TIME_TOTAL}" -ge "500" ] || [ "${SOURCE_URL_CHECK}" ]; then
\cp -rpa /etc/apt/sources.list /etc/apt/sources.list.btbackup \cp -rpa /etc/apt/sources.list /etc/apt/sources.list.btbackup
apt_lists=(mirrors.cloud.tencent.com mirrors.163.com repo.huaweicloud.com mirrors.tuna.tsinghua.edu.cn mirrors.aliyun.com mirrors.ustc.edu.cn ) apt_lists=(mirrors.cloud.tencent.com mirrors.163.com repo.huaweicloud.com mirrors.tuna.tsinghua.edu.cn mirrors.aliyun.com mirrors.ustc.edu.cn )
apt_lists=(mirrors.cloud.tencent.com mirrors.163.com repo.huaweicloud.com mirrors.aliyun.com mirrors.ustc.edu.cn ) apt_lists=(mirrors.cloud.tencent.com repo.huaweicloud.com mirrors.aliyun.com mirrors.ustc.edu.cn mirrors.163.com)
for list in ${apt_lists[@]}; for list in ${apt_lists[@]};
do do
NODE_CHECK=$(curl --connect-timeout 3 -m 3 2>/dev/null -w "%{http_code} %{time_total}" ${list} -o /dev/null) NODE_CHECK=$(curl --connect-timeout 3 -m 3 2>/dev/null -w "%{http_code} %{time_total}" ${list} -o /dev/null)
@ -715,7 +715,7 @@ Install_RPM_Pack(){
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#yum remove -y python-requests python3-requests python-greenlet python3-greenlet #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 qrencode at mariadb rsyslog net-tools firewalld" 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 qrencode at rsyslog net-tools firewalld"
yum install -y ${yumPacks} yum install -y ${yumPacks}
for yumPack in ${yumPacks} for yumPack in ${yumPacks}
@ -730,6 +730,10 @@ Install_RPM_Pack(){
dnf install -y redhat-rpm-config dnf install -y redhat-rpm-config
fi fi
# if [ ! -f "/usr/bin/mysql" ] && [ -f "/usr/sbin/mysql" ];then
# yum install
# fi
ALI_OS=$(cat /etc/redhat-release |grep "Alibaba Cloud Linux release 3") ALI_OS=$(cat /etc/redhat-release |grep "Alibaba Cloud Linux release 3")
if [ -z "${ALI_OS}" ];then if [ -z "${ALI_OS}" ];then
yum install epel-release -y yum install epel-release -y
@ -757,6 +761,7 @@ Install_Deb_Pack(){
apt-get install bash -y apt-get install bash -y
if [ -f "/usr/bin/bash" ];then if [ -f "/usr/bin/bash" ];then
ln -sf /usr/bin/bash /bin/sh ln -sf /usr/bin/bash /bin/sh
ln -sf /usr/bin/bash /usr/bin/sh
fi fi
apt-get install ruby -y apt-get install ruby -y
apt-get install lsb-release -y apt-get install lsb-release -y
@ -777,7 +782,7 @@ Install_Deb_Pack(){
apt-get install curl -y apt-get install curl -y
fi 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 sqlite3 at mariadb-client rsyslog net-tools ufw"; 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 at rsyslog net-tools ufw";
apt-get install -y $debPacks --force-yes apt-get install -y $debPacks --force-yes
for debPack in ${debPacks} for debPack in ${debPacks}
@ -788,6 +793,10 @@ Install_Deb_Pack(){
fi fi
done done
if [ ! -f "/usr/bin/mysql" ] && [ -f "/usr/sbin/mysql" ];then
apt-get install mysql-client -y
fi
if [ ! -d '/etc/letsencrypt' ];then if [ ! -d '/etc/letsencrypt' ];then
mkdir -p /etc/letsencryp mkdir -p /etc/letsencryp
mkdir -p /var/spool/cron mkdir -p /var/spool/cron
@ -1218,7 +1227,10 @@ Install_Bt(){
chmod +x /etc/init.d/bt chmod +x /etc/init.d/bt
chmod -R 600 ${setup_path}/server/panel chmod -R 600 ${setup_path}/server/panel
chmod -R +x ${setup_path}/server/panel/script chmod -R +x ${setup_path}/server/panel/script
chmod -R 700 $pyenv_path/pyenv/bin
ln -sf /etc/init.d/bt /usr/bin/bt ln -sf /etc/init.d/bt /usr/bin/bt
chmod +x /www/server/panel/script/btcli.py
ln -sf /www/server/panel/script/btcli.py /usr/bin/btcli
echo "${panelPort}" > ${setup_path}/server/panel/data/port.pl echo "${panelPort}" > ${setup_path}/server/panel/data/port.pl
wget -O /etc/init.d/bt ${download_Url}/install/src/bt7.init -T 15 wget -O /etc/init.d/bt ${download_Url}/install/src/bt7.init -T 15
wget -O /www/server/panel/init.sh ${download_Url}/install/src/bt7.init -T 15 wget -O /www/server/panel/init.sh ${download_Url}/install/src/bt7.init -T 15
@ -1271,7 +1283,8 @@ Set_Bt_Panel(){
auth_path=$SAFE_PATH auth_path=$SAFE_PATH
echo "/${auth_path}" > ${admin_auth} echo "/${auth_path}" > ${admin_auth}
fi fi
chmod -R 700 $pyenv_path/pyenv/bin
btpip install asn1crypto==1.5.1 cbor2==5.4.6
if [ ! -f "/www/server/panel/pyenv/n.pl" ];then if [ ! -f "/www/server/panel/pyenv/n.pl" ];then
btpip install docxtpl==0.16.7 btpip install docxtpl==0.16.7
/www/server/panel/pyenv/bin/pip3 install pymongo /www/server/panel/pyenv/bin/pip3 install pymongo
@ -1354,12 +1367,16 @@ Set_Firewall(){
if [ "${PM}" = "apt-get" ]; then if [ "${PM}" = "apt-get" ]; then
#apt-get install -y ufw #apt-get install -y ufw
if [ -f "/usr/sbin/ufw" ];then if [ -f "/usr/sbin/ufw" ];then
if [ "${PANEL_PORT}" ];then
ufw allow ${PANEL_PORT}/tcp
fi
ufw allow 20/tcp ufw allow 20/tcp
ufw allow 21/tcp ufw allow 21/tcp
ufw allow 22/tcp ufw allow 22/tcp
ufw allow 80/tcp ufw allow 80/tcp
ufw allow 443/tcp ufw allow 443/tcp
ufw allow 888/tcp ufw allow 888/tcp
ufw allow 8888/tcp
ufw allow ${panelPort}/tcp ufw allow ${panelPort}/tcp
ufw allow ${sshPort}/tcp ufw allow ${sshPort}/tcp
ufw allow 39000:40000/tcp ufw allow 39000:40000/tcp
@ -1402,6 +1419,10 @@ Set_Firewall(){
firewall-cmd --permanent --zone=public --add-port=22/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=80/tcp > /dev/null 2>&1
firewall-cmd --permanent --zone=public --add-port=443/tcp > /dev/null 2>&1 firewall-cmd --permanent --zone=public --add-port=443/tcp > /dev/null 2>&1
firewall-cmd --permanent --zone=public --add-port=8888/tcp > /dev/null 2>&1
if [ "${PANEL_PORT}" ];then
firewall-cmd --permanent --zone=public --add-port=${PANEL_PORT}/tcp > /dev/null 2>&10
fi
firewall-cmd --permanent --zone=public --add-port=${panelPort}/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=${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/tcp > /dev/null 2>&1
@ -1492,9 +1513,68 @@ Setup_Count(){
fi fi
echo /www > /var/bt_setupPath.conf echo /www > /var/bt_setupPath.conf
} }
Start_Ip_Cert_Async(){
IP_SSL_PID=""
if [ -z "${ipv4_address}" ];then
return
fi
if [ "$SET_SSL" == "true" ];then
if [ -f "/www/server/panel/script/auto_apply_ip_ssl.py" ];then
acme_connect_url="https://acme-v02.api.letsencrypt.org"
acme_http_code=$(curl -sS --connect-timeout 2 -m 60 -o /dev/null -w "%{http_code}" "$acme_connect_url")
if [ "$acme_http_code" == "200" ];then
echo "正在后台开启受信任宝塔面板ip证书..."
(
timeout 60 $pyenv_path/pyenv/bin/python3.7 /www/server/panel/script/auto_apply_ip_ssl.py -ips ${ipv4_address} -path /www/server/panel/ssl > /tmp/auto_apply_ip_ssl.log 2>&1
echo $? > /tmp/ip_ssl_exit_code.pl
) &
IP_SSL_PID=$!
fi
fi
fi
}
Check_Ip_Cert_Async(){
if [ "$SET_SSL" != "true" ];then
return
fi
if [ -z "$IP_SSL_PID" ]; then
if [ "$acme_http_code" != "200" ];then
echo "受信ip证书申请失败exit code=$acme_http_code"
echo "转为使用默认自签证书后续可手动在面板设置中重新使用Let's encrypt申请ip证书"
return
fi
echo "受信宝塔面板ip证书开启成功"
/etc/init.d/bt restart
return
fi
echo "正在检查受信宝塔面板ip证书开启状态..."
wait $IP_SSL_PID
if [ -f "/tmp/ip_ssl_exit_code.pl" ]; then
rc=$(cat /tmp/ip_ssl_exit_code.pl)
rm -f /tmp/ip_ssl_exit_code.pl
else
rc=1
fi
if [ $rc -eq 0 ]; then
echo "受信宝塔面板ip证书开启成功"
/etc/init.d/bt restart
elif [ $rc -eq 124 ]; then
echo "受信ip证书申请超时60秒"
echo "转为使用默认自签证书后续可手动在面板设置中重新使用Let's encrypt申请ip证书"
else
echo "受信ip证书申请失败exit code=$rc"
echo "转为使用默认自签证书后续可手动在面板设置中重新使用Let's encrypt申请ip证书"
fi
}
Install_Main(){ Install_Main(){
Ready_Check Ready_Check
#Set_Ssl Set_Ssl
startTime=`date +%s` startTime=`date +%s`
Lock_Clear Lock_Clear
System_Check System_Check
@ -1515,15 +1595,17 @@ Install_Main(){
Install_Other_Pack Install_Other_Pack
fi fi
Set_Firewall
Install_Python_Lib Install_Python_Lib
Install_Bt Install_Bt
Get_Ip_Address
Start_Ip_Cert_Async
Set_Bt_Panel Set_Bt_Panel
Service_Add Service_Add
Set_Firewall
Get_Ip_Address Check_Ip_Cert_Async
Setup_Count ${IDC_CODE} Setup_Count ${IDC_CODE}
Add_lib_Install Add_lib_Install
} }

Binary file not shown.

View File

@ -219,6 +219,8 @@ fi
btpip uninstall enum34 -y btpip uninstall enum34 -y
btpip install asn1crypto==1.5.1 cbor2==5.4.6
GEOIP_C=$(echo $pip_list|grep geoip2) GEOIP_C=$(echo $pip_list|grep geoip2)
if [ -z "${GEOIP_C}" ];then if [ -z "${GEOIP_C}" ];then
btpip install geoip2==4.7.0 btpip install geoip2==4.7.0

View File

@ -106,7 +106,9 @@ Route::group('api', function () {
Route::get('/panel/notpro', 'api/return_empty'); Route::get('/panel/notpro', 'api/return_empty');
Route::post('/Btdeployment/get_deplist', 'api/get_deplist'); Route::post('/Btdeployment/get_deplist', 'api/get_deplist');
Route::post('/panel/get_deplist', 'api/get_deplist'); Route::post('/panel/get_deplist', 'api/get_deplist');
Route::get('/ip/info_json', 'api/return_empty_array'); Route::post('/ip/info', 'api/get_ip_info');
Route::post('/ip/info_json', 'api/get_ip_info');
Route::post('/panel/get_ip_info', 'api/get_ip_info');
Route::post('/LinuxBeta', 'api/return_error'); Route::post('/LinuxBeta', 'api/return_error');
Route::post('/panel/apple_beta', 'api/return_error'); Route::post('/panel/apple_beta', 'api/return_error');
@ -155,6 +157,7 @@ Route::group('api', function () {
Route::post('/panel/submit_expand_pack_used', 'api/return_success'); Route::post('/panel/submit_expand_pack_used', 'api/return_success');
Route::get('/panel/getLatestOfficialVersion', 'api/get_version_en'); Route::get('/panel/getLatestOfficialVersion', 'api/get_version_en');
Route::post('/cert/user/list', 'api/nps_questions'); Route::post('/cert/user/list', 'api/nps_questions');
Route::post('/v2/user/wx_web/bound_wx_accounts', 'api/nps_questions');
Route::post('/Auth/GetCloudToken', 'api/get_auth_token'); Route::post('/Auth/GetCloudToken', 'api/get_auth_token');
Route::post('/cloudtro/version_info', 'api/cloudc_version_info'); Route::post('/cloudtro/version_info', 'api/cloudc_version_info');
@ -164,6 +167,10 @@ Route::group('api', function () {
Route::miss('api/return_error'); Route::miss('api/return_error');
}); });
Route::group('newapi', function () {
Route::miss('api/return_error');
});
Route::get('/admin/verifycode', 'admin/verifycode')->middleware(\think\middleware\SessionInit::class); Route::get('/admin/verifycode', 'admin/verifycode')->middleware(\think\middleware\SessionInit::class);
Route::any('/admin/login', 'admin/login')->middleware(\think\middleware\SessionInit::class); Route::any('/admin/login', 'admin/login')->middleware(\think\middleware\SessionInit::class);
Route::get('/admin/logout', 'admin/logout'); Route::get('/admin/logout', 'admin/logout');

View File

@ -18,6 +18,8 @@
- 全局搜索替换 http://www.bt.cn/api/ => http://www.example.com/api/需排除js文件 - 全局搜索替换 http://www.bt.cn/api/ => http://www.example.com/api/需排除js文件
- 全局搜索替换 https://www.bt.cn/newapi/ => http://www.example.com/newapi/
- 全局搜索替换 https://download.bt.cn/install/update6.sh => http://www.example.com/install/update6.sh - 全局搜索替换 https://download.bt.cn/install/update6.sh => http://www.example.com/install/update6.sh
http://download.bt.cn/install/update6.sh => http://www.example.com/install/update6.sh http://download.bt.cn/install/update6.sh => http://www.example.com/install/update6.sh
@ -98,8 +100,6 @@
- script/upgrade_panel_optimized.py 文件def get_home_node(url): 下面加上return url - script/upgrade_panel_optimized.py 文件def get_home_node(url): 下面加上return url
- tools.py 文件u_input == 16下面的public.get_url()替换成public.GetConfigValue('home')
- install/install_soft.sh 在. 执行之前加入以下代码 - install/install_soft.sh 在. 执行之前加入以下代码
```shell ```shell

View File

@ -5,5 +5,6 @@
官方更新包下载链接http://download.bt.cn/win/panel/panel_版本号.zip 官方更新包下载链接http://download.bt.cn/win/panel/panel_版本号.zip
- 使用16进制编辑器打开btPanel.exe将 https://api.bt.cn 替换成 http://api.bt.cn/ ,将 https://www.bt.cn 替换成 http://www.bt.cn/ 然后将api.bt.cn替换成任意其他域名将第二个www.bt.cn替换成任意其他域名。 - 使用16进制编辑器打开btPanel.exe将 https://api.bt.cn 替换成 http://api.bt.cn/ ,将 https://www.bt.cn 替换成 http://www.bt.cn/ 然后将api.bt.cn替换成任意其他域名将第二个www.bt.cn替换成任意其他域名。
- 批量解密模块文件:执行 php think decrypt classdir <面板class文件夹路径>
- 新版vite页面去除需求反馈、各种广告、计算题等执行 php think cleanvitejs <面板assets/static/js路径> - 新版vite页面去除需求反馈、各种广告、计算题等执行 php think cleanvitejs <面板assets/static/js路径>