Compare commits

...

6 Commits
3.1 ... 3.3

Author SHA1 Message Date
flucout
9438c64796 update 2025-05-26 21:49:50 +08:00
Flucont
acb842a883 Merge pull request #264 from Illustar0/main
feat: support get_malicious_ip for bt_waf
2025-04-17 20:11:53 +08:00
Illustar0
6785d259f6 feat: support get_malicious_ip for bt_waf 2025-04-14 11:18:16 +08:00
flucout
04560cd70c update 2025-04-04 20:05:14 +08:00
flucout
ecfe3c9e20 update 2025-03-11 21:13:39 +08:00
flucout
d8de902f1b fix 2025-03-07 12:28:43 +08:00
22 changed files with 148 additions and 61 deletions

View File

@@ -120,7 +120,7 @@ class CleanViteJs extends Command
$flag = true;
}
if(strpos($file, '售后QQ群')!==false){ //main
if(strpos($file, '论坛求助')!==false){ //main
$code = $this->getExtendCode($file, '"微信公众号"', 1);
$code = $this->getExtendFunction($file, $code);
$start = strpos($file, $code) - 1;
@@ -130,7 +130,7 @@ class CleanViteJs extends Command
break;
}
}
$code = $this->getExtendCode($file, '"/other/customer-service.png"', 2);
$code = $this->getExtendCode($file, '"/other/customer-qrcode.png"', 2);
$code = $this->getExtendFunction($file, $code);
$end = strpos($file, $code)+strlen($code);
$code = substr($file, $start, $end - $start);
@@ -182,7 +182,7 @@ class CleanViteJs extends Command
if(strpos($file, '"商用SSL证书"')!==false){ //site-ssl
$code = $this->getExtendFunction($file, '"商用SSL证书"', '{', '}');
$file = str_replace($code, '', $file);
$code = $this->getExtendFunction($file, '"宝塔证书"', '{', '}');
$code = $this->getExtendFunction($file, '"测试证书"', '{', '}');
$file = str_replace($code, '', $file);
$code = $this->getExtendCode($file, '"购买商业证书"', 2);
if($code){
@@ -201,7 +201,7 @@ class CleanViteJs extends Command
if(strpos($file, '"商用SSL"')!==false){ //ssl
$code = $this->getExtendFunction($file, '"商用SSL"', '{', '}');
$file = str_replace($code, '', $file);
$code = $this->getExtendFunction($file, '"宝塔证书"', '{', '}');
$code = $this->getExtendFunction($file, '"测试证书"', '{', '}');
$file = str_replace($code, '', $file);
$code = $this->getExtendCode($file, ',"联系客服"', 2, '[', ']');
if($code){
@@ -259,7 +259,7 @@ class CleanViteJs extends Command
$file = str_replace($code, '[]', $file);
$flag = true;
}
$code = $this->getExtendFunction($file, '," 需求反馈 "');
$code = $this->getExtendFunction($file, 'label:"需求反馈",', '{', '}');
if($code){
$file = str_replace($code, '', $file);
$flag = true;

View File

@@ -523,6 +523,16 @@ class Api extends BaseController
$result = Plugins::get_spider($type);
return json($result);
}
//获取堡塔恶意情报IP库
public function btwaf_getmalicious(){
try{
$result = Plugins::btwaf_getmalicious();
return json($result);
}catch(\Exception $e){
return json(['success'=>false, 'res'=>$e->getMessage()]);
}
}
//检查是否国内IP
public function check_cnip(){

View File

@@ -196,12 +196,14 @@ class BtPlugins
$data = str_replace('\'http://www.bt.cn/api/wpanel/notpro', 'public.GetConfigValue(\'home\')+\'/api/wpanel/notpro', $data);
$data = str_replace('\'https://www.bt.cn/api/wpanel/notpro', 'public.GetConfigValue(\'home\')+\'/api/wpanel/notpro', $data);
$data = str_replace('"https://www.bt.cn/api/bt_waf/get_malicious', 'public.GetConfigValue(\'home\')+"/api/bt_waf/get_malicious', $data);
$data = str_replace('\'http://www.bt.cn/api/bt_waf/getSpiders', 'public.GetConfigValue(\'home\')+\'/api/bt_waf/getSpiders', $data);
$data = str_replace('\'https://www.bt.cn/api/bt_waf/getSpiders', 'public.GetConfigValue(\'home\')+\'/api/bt_waf/getSpiders', $data);
$data = str_replace('\'http://www.bt.cn/api/bt_waf/addSpider', 'public.GetConfigValue(\'home\')+\'/api/bt_waf/addSpider', $data);
$data = str_replace('\'https://www.bt.cn/api/bt_waf/addSpider', 'public.GetConfigValue(\'home\')+\'/api/bt_waf/addSpider', $data);
$data = str_replace('\'https://www.bt.cn/api/bt_waf/getVulScanInfoList', 'public.GetConfigValue(\'home\')+\'/api/bt_waf/getVulScanInfoList', $data);
$data = str_replace('\'https://www.bt.cn/api/bt_waf/reportInterceptFail', 'public.GetConfigValue(\'home\')+\'/api/bt_waf/reportInterceptFail', $data);
$data = str_replace('"https://www.bt.cn/api/bt_waf/reportInterceptFail', 'public.GetConfigValue(\'home\')+"/api/bt_waf/reportInterceptFail', $data);
$data = str_replace('\'https://www.bt.cn/api/v2/contact/nps/questions', 'public.GetConfigValue(\'home\')+\'/panel/notpro', $data);
$data = str_replace('\'https://www.bt.cn/api/v2/contact/nps/submit', 'public.GetConfigValue(\'home\')+\'/panel/notpro', $data);
$data = str_replace('\'http://www.bt.cn/api/Auth', 'public.GetConfigValue(\'home\')+\'/api/Auth', $data);
@@ -290,4 +292,16 @@ class BtPlugins
}
}
//获取堡塔恶意情报IP库
public function btwaf_getmalicious(){
$result = $this->btapi->btwaf_getmalicious();
if(isset($result['success'])){
return $result;
}elseif(isset($result['msg'])){
throw new Exception($result['msg']);
}else{
throw new Exception(isset($result['res'])?$result['res']:'获取失败');
}
}
}

View File

@@ -169,6 +169,18 @@ class Btapi
$data = json_decode($result,true);
return $data;
}
//BTWAF-获取堡塔恶意情报IP库
public function btwaf_getmalicious(){
$url = $this->BT_PANEL.'/plugin?action=a&name=kaixin&s=btwaf_getmalicious';
$p_data = $this->GetKeyData();
$result = $this->curl($url,$p_data);
$data = json_decode($result,true);
return $data;
}
private function GetKeyData(){

View File

@@ -193,4 +193,11 @@ class Plugins
return $result;
}
//获取堡塔恶意情报IP库
public static function btwaf_getmalicious(){
$btapi = self::get_btapi('Linux');
$result = $btapi->btwaf_getmalicious();
return $result;
}
}

View File

@@ -28,11 +28,11 @@ class ThirdPlugins
public function get_plugin_list()
{
if($this->os == 'en'){
$url = $this->url . 'api/panel/get_plugin_list_en';
$url = $this->url . 'api/panel/getSoftListEn';
}elseif($this->os == 'Windows'){
$url = $this->url . 'api/wpanel/get_plugin_list';
$url = $this->url . 'api/wpanel/get_soft_list';
}else{
$url = $this->url . 'api/panel/get_plugin_list';
$url = $this->url . 'api/panel/get_soft_list';
}
$res = $this->curl($url);
$result = json_decode($res, true);
@@ -174,6 +174,18 @@ class ThirdPlugins
}
}
//获取堡塔恶意情报IP库
public function btwaf_getmalicious(){
$url = $this->url . 'api/bt_waf/get_malicious';
$res = $this->curl($url);
$result = json_decode($res, true);
if(isset($result['success'])){
return $result;
}else{
throw new Exception(isset($result['res'])?$result['res']:'获取失败');
}
}
private function curl($url, $post = 0){
$ua = "Mozilla/5.0 (BtCloud; ".request()->root(true).")";
return get_curl($url, $post, 0, 0, 0, $ua);

View File

@@ -1,14 +1,14 @@
#!/bin/bash
Linux_Version="9.4.0"
Linux_Version="9.6.0"
Windows_Version="8.2.2"
Aapanel_Version="7.0.13"
Aapanel_Version="7.0.16"
Btm_Version="2.3.0"
FILES=(
public/install/src/panel6.zip
public/install/update/LinuxPanel-${Linux_Version}.zip
public/install/install_6.0.sh
public/install/install_panel.sh
public/install/update_panel.sh
public/install/update6.sh
public/win/install/panel_update.py
@@ -21,7 +21,6 @@ public/install/update_btmonitor.sh
public/install/src/panel_7_en.zip
public/install/update/LinuxPanel_EN-${Aapanel_Version}.zip
public/install/install_7.0_en.sh
public/install/install_pro_en.sh
public/install/update_7.x_en.sh
)

View File

@@ -35,6 +35,7 @@ td{overflow: hidden;text-overflow: ellipsis;white-space: nowrap;max-width:340px;
<div class="modal-body">
<p>“版本与状态”一列中,红色的按钮代表本地不存在该版本插件包,需要点击下载;绿色的按钮代表已存在。</p>
<p>官方插件包本地存储路径是/data/plugins/package/软件标识-版本号.zip第三方插件包路径是/data/plugins/other/other/,对于部分包含二次验证的插件可以自行修改。</p>
<p>若对接的服务器网速较慢,可能会导致下载失败,提示"服务器错误",可稍等一会,进入对接服务器/tmp/plugins目录下载插件包将_改成-,并上传到本站/data/plugins/package目录下。</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>

View File

@@ -110,15 +110,15 @@
<div class="install-code">
<span class="osname">Centos安装脚本</span>
<div class="code-cont">
<div class="command" title="点击复制Centos安装脚本">yum install -y wget && wget -O install.sh {$siteurl}/install/install_6.0.sh && sh install.sh</div>
<span class="ico-copy" title="点击复制Centos安装脚本" data-clipboard-text="yum install -y wget && wget -O install.sh {$siteurl}/install/install_6.0.sh && sh install.sh">复制</span>
<div class="command" title="点击复制Centos安装脚本">yum install -y wget && wget -O install.sh {$siteurl}/install/install_panel.sh && sh install.sh</div>
<span class="ico-copy" title="点击复制Centos安装脚本" data-clipboard-text="yum install -y wget && wget -O install.sh {$siteurl}/install/install_panel.sh && sh install.sh">复制</span>
</div>
</div>
<div class="install-code">
<span class="osname">Ubuntu/Debian安装脚本</span>
<div class="code-cont">
<div class="command" title="点击复制Ubuntu/Debian安装脚本">wget -O install.sh {$siteurl}/install/install_6.0.sh && bash install.sh</div>
<span class="ico-copy" title="点击复制Ubuntu/Debian安装脚本" data-clipboard-text="wget -O install.sh {$siteurl}/install/install_6.0.sh && bash install.sh">复制</span>
<div class="command" title="点击复制Ubuntu/Debian安装脚本">wget -O install.sh {$siteurl}/install/install_panel.sh && bash install.sh</div>
<span class="ico-copy" title="点击复制Ubuntu/Debian安装脚本" data-clipboard-text="wget -O install.sh {$siteurl}/install/install_panel.sh && bash install.sh">复制</span>
</div>
</div>
<div class="install-code">

View File

@@ -63,7 +63,7 @@ GetSysInfo() {
echo -e ${SYS_VERSION}
echo -e Bit:${SYS_BIT} Mem:${MEM_TOTAL}M Core:${CPU_INFO}
echo -e ${SYS_INFO}
echo -e "Please screenshot above error message and post forum forum.aapanel.com or send email: kern@aapanel.com for help"
echo -e "Please screenshot above error message and post forum forum.aapanel.com or send email: support@aapanel.com for help"
}
@@ -557,7 +557,7 @@ Install_RPM_Pack() {
yum config-manager --set-enabled PowerTools
fi
if [ -f "/etc/redhat-release" ] && [ $(cat /etc/os-release|grep PLATFORM_ID|grep -oE "el9") ];then
if [ -f "/etc/redhat-release" ] && [ $(cat /etc/os-release|grep PLATFORM_ID|grep -oE "el9|el10") ];then
dnf config-manager --set-enabled crb -y
fi
@@ -648,7 +648,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 libxslt-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 ufw ipset sqlite3 uuid-dev libpq-dev liblzma-dev ca-certificates sudo autoconf at mariadb-client rsyslog xfsprogs quota"
debPacks="wget curl libcurl4-openssl-dev gcc make zip unzip tar openssl libssl-dev gcc libxml2 libxml2-dev libxslt-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 ufw ipset sqlite3 uuid-dev libpq-dev liblzma-dev ca-certificates sudo autoconf at mariadb-client rsyslog xfsprogs quota libssh2-1-dev"
DEBIAN_FRONTEND=noninteractive apt-get install -y $debPacks --allow-downgrades --allow-remove-essential --allow-change-held-packages
@@ -1130,7 +1130,7 @@ Get_Versions() {
os_version=""
fi
if [ -z "${os_version}" ]; then
os_version=$(cat /etc/redhat-release | grep Stream | grep -oE "8|9")
os_version=$(cat /etc/redhat-release | grep Stream | grep -oE "8|9|10")
fi
else
os_type='ubuntu'

View File

@@ -3,12 +3,6 @@ PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
LANG=en_US.UTF-8
INSTALL_LOGFILE="/tmp/btpanel-install.log"
if [ -f "$INSTALL_LOGFILE" ];then
rm -f $INSTALL_LOGFILE
fi
exec > >(tee -a "$INSTALL_LOGFILE") 2>&1
Btapi_Url='http://www.example.com'
Check_Api=$(curl -Ss --connect-timeout 5 -m 2 $Btapi_Url/api/SetupCount)
if [ "$Check_Api" != 'ok' ];then
@@ -39,8 +33,9 @@ if [ "${UbuntuCheck}" ] && [ "${UbuntuCheck}" -lt "16" ];then
fi
HOSTNAME_CHECK=$(cat /etc/hostname)
if [ -z "${HOSTNAME_CHECK}" ];then
echo "当前主机名hostname为空无法安装宝塔面板请咨询服务器运营商设置好hostname后再重新安装"
exit 1
echo "localhost" > /etc/hostname
# echo "当前主机名hostname为空无法安装宝塔面板请咨询服务器运营商设置好hostname后再重新安装"
# exit 1
fi
UBUNTU_NO_LTS=$(cat /etc/issue|grep Ubuntu|grep -E "19|21|23|25")
@@ -82,25 +77,25 @@ Ready_Check(){
exit 1
fi
ROOT_DISK_INODE=$(df -i|grep /$|awk '{print $2}')
if [ "${ROOT_DISK_INODE}" != "0" ];then
ROOT_DISK_INODE_FREE=$(df -i|grep /$|awk '{print $4}')
if [ "${ROOT_DISK_INODE_FREE}" -le 1000 ];then
echo -e "系统盘剩余inodes空间不足1000,无法继续安装!"
echo -e "请尝试清理磁盘空间后再重新进行安装"
exit 1
fi
fi
# ROOT_DISK_INODE=$(df -i|grep /$|awk '{print $2}')
# if [ "${ROOT_DISK_INODE}" != "0" ];then
# ROOT_DISK_INODE_FREE=$(df -i|grep /$|awk '{print $4}')
# if [ "${ROOT_DISK_INODE_FREE}" -le 1000 ];then
# echo -e "系统盘剩余inodes空间不足1000,无法继续安装!"
# echo -e "请尝试清理磁盘空间后再重新进行安装"
# exit 1
# fi
# fi
WWW_DISK_INODE==$(df -i|grep /www|awk '{print $2}')
if [ "${WWW_DISK_INODE}" ] && [ "${WWW_DISK_INODE}" != "0" ] ;then
WWW_DISK_INODE_FREE=$(df -i|grep /www|awk '{print $4}')
if [ "${WWW_DISK_INODE_FREE}" ] && [ "${WWW_DISK_INODE_FREE}" -le 1000 ] ;then
echo -e "/www盘剩余inodes空间不足1000, 无法继续安装!"
echo -e "请尝试清理磁盘空间后再重新进行安装"
exit 1
fi
fi
# WWW_DISK_INODE==$(df -i|grep /www|awk '{print $2}')
# if [ "${WWW_DISK_INODE}" ] && [ "${WWW_DISK_INODE}" != "0" ] ;then
# WWW_DISK_INODE_FREE=$(df -i|grep /www|awk '{print $4}')
# if [ "${WWW_DISK_INODE_FREE}" ] && [ "${WWW_DISK_INODE_FREE}" -le 1000 ] ;then
# echo -e "/www盘剩余inodes空间不足1000, 无法继续安装!"
# echo -e "请尝试清理磁盘空间后再重新进行安装"
# exit 1
# fi
# fi
}
GetSysInfo(){
@@ -1237,7 +1232,40 @@ Set_Firewall(){
}
Get_Ip_Address(){
getIpAddress=""
getIpAddress=$(curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress)
#getIpAddress=$(curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress)
ipv4_address=""
ipv6_address=""
ipv4_address=$(curl -4 -sS --connect-timeout 4 -m 5 https://api.bt.cn/Api/getIpAddress 2>&1)
if [ -z "${ipv4_address}" ];then
ipv4_address=$(curl -4 -sS --connect-timeout 4 -m 5 https://www.bt.cn/Api/getIpAddress 2>&1)
if [ -z "${ipv4_address}" ];then
ipv4_address=$(curl -4 -sS --connect-timeout 4 -m 5 https://www.aapanel.com/api/common/getClientIP 2>&1)
fi
fi
IPV4_REGEX="^([0-9]{1,3}\.){3}[0-9]{1,3}$"
if ! [[ $ipv4_address =~ $IPV4_REGEX ]]; then
ipv4_address=""
fi
ipv6_address=$(curl -6 -sS --connect-timeout 4 -m 5 https://www.bt.cn/Api/getIpAddress 2>&1)
IPV6_REGEX="^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$"
if ! [[ $ipv6_address =~ $IPV6_REGEX ]]; then
ipv6_address=""
else
if [[ ! $ipv6_address =~ ^\[ ]]; then
ipv6_address="[$ipv6_address]"
fi
fi
if [ "${ipv4_address}" ];then
getIpAddress=$ipv4_address
elif [ "${ipv6_address}" ];then
getIpAddress=$ipv6_address
fi
if [ -z "${getIpAddress}" ] || [ "${getIpAddress}" = "0.0.0.0" ]; then
isHosts=$(cat /etc/hosts|grep 'www.bt.cn')
if [ -z "${isHosts}" ];then
@@ -1266,6 +1294,7 @@ Get_Ip_Address(){
echo "True" > ${setup_path}/server/panel/data/ipv6.pl
sleep 1
/etc/init.d/bt restart
getIpAddress=$(echo "[$getIpAddress]")
fi
fi
@@ -1415,8 +1444,16 @@ echo -e "\033[32mCongratulations! Installed successfully!\033[0m"
echo -e "========================面板账户登录信息=========================="
echo -e ""
echo -e " 【云服务器】请在安全组放行 $panelPort 端口"
echo -e " 外网面板地址: ${HTTP_S}://${getIpAddress}:${panelPort}${auth_path}"
echo -e " 网面板地址: ${HTTP_S}://${LOCAL_IP}:${panelPort}${auth_path}"
if [ -z "${ipv4_address}" ] && [ -z "${ipv6_address}" ];then
echo -e " 网面板地址: ${HTTP_S}://SERVER_IP:${panelPort}${auth_path}"
fi
if [ "${ipv4_address}" ];then
echo -e " 外网ipv4面板地址: ${HTTP_S}://${ipv4_address}:${panelPort}${auth_path}"
fi
if [ "${ipv6_address}" ];then
echo -e " 外网ipv6面板地址: ${HTTP_S}://${ipv6_address}:${panelPort}${auth_path}"
fi
echo -e " 内网面板地址: ${HTTP_S}://${LOCAL_IP}:${panelPort}${auth_path}"
echo -e " username: $username"
echo -e " password: $password"
echo -e ""

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
{"hash": "c097e387cb3f2baf34a222191de7130bd878215ffa4ba8cef2d337e3466e6963", "update_time": "1747723203"}

View File

@@ -0,0 +1 @@
{"hash": "d869ee4b8bdcfae324c4fdef9ec647db4a1529e7f6890b8cb4693f40b8a24626", "update_time": "1748242787"}

View File

@@ -102,8 +102,8 @@ if [ -f "/etc/redhat-release" ];then
fi
setup_path=/www
version=$(curl -Ss --connect-timeout 5 -m 2 $Btapi_Url/api/panel/get_version)
if [ -z "$VERSION_CHECK" ];then
version='9.4.0'
if [ -z "$version" ];then
version='9.5.0'
fi
armCheck=$(uname -m|grep arm)
if [ "${armCheck}" ];then

Binary file not shown.

View File

@@ -121,9 +121,11 @@ Route::group('api', function () {
Route::post('/v2/product/email', 'api/return_error2');
Route::any('/bt_waf/getSpiders', 'api/btwaf_getspiders');
Route::any('/bt_waf/get_malicious', 'api/btwaf_getmalicious');
Route::post('/bt_waf/addSpider', 'api/return_empty');
Route::post('/bt_waf/getVulScanInfoList', 'api/return_empty');
Route::post('/bt_waf/reportInterceptFail', 'api/return_empty');
Route::any('/bt_waf/get_system_malicious', 'api/return_error2');
Route::any('/panel/get_spider', 'api/get_spider');
Route::post('/Auth/GetSocre', 'api/get_ssl_list');

View File

@@ -59,13 +59,6 @@
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_v2/btdockerModelV2/flush_plugin.py 文件删除clear_hosts()一行
- install/install_soft.sh 在. 执行之前加入以下代码

View File

@@ -121,14 +121,12 @@
- script/site_task.py 删除flush_ssh_log()
- [可选]去除各种计算题复制bt.js到 BTPanel/static/ ,在 BTPanel/templates/default/layout.html 的\</body\>前面加入
- [可选]去除各种计算题复制bt.js到 BTPanel/static/ ,在 BTPanel/templates/default/software.html 的 \<script\>window.vite_public_request_token 前面加入
```javascript
<script src="/static/bt.js"></script>
```
在 BTPanel/templates/default/software.html 的 \<script\>window.vite_public_request_token 前面加入
- [可选]去除创建网站自动创建的垃圾文件在class/panelSite.py分别删除
htaccess = self.sitePath + '/.htaccess'