File: /www/server/panel/BTPanel/static/js/page3.js
import{aa as ue,w as G,f as g,t as A,J as v,bO as de,p as pe,P as me,ag as _e,ar as be,b as he,k as fe,a3 as ve}from"./utils-lib.js?v=1777008528";import{_ as ye}from"./index109.js?v=1777008528";import{_ as ge}from"./index110.js?v=1777008528";import{r as w,W as we,w as K,g as S,c as Q,av as ke,x as b,y as h,A as y,B as T,F as I,aT as D,G as L,z as i,O as j,Q as Pe,e as c,C as k,D as O,a8 as Ce,J as Se,bY as Te,bZ as Ie,ap as Z,V,H as Oe,b5 as xe,aV as Ee,v as Le}from"./base-lib.js?v=1777008528";import{w as Be,x as Ve,c as Ne,y as Ae,z as ee,A as Re,B as De,C as je,D as Ue,E as $,F as $e}from"./index432.js?v=1777008528";import{u as U,a as Me,c as Fe}from"./column.js?v=1777008528";import{a as He}from"./hooks2.js?v=1777008528";const x=w(""),N=w("common"),z=w({}),F=w(!1),te=w([]),ae=w([]),H=we([]),We=[{name:"common",label:"常用设置"},{name:"advanced",label:"高级规则"}],le="common",Ge={disable_php_path:{columns:["访问路径"],ruleName:"disable_php_path",addParamName:"ruleValue"},disable_path:{columns:["访问路径"],ruleName:"disable_path",addParamName:"ruleValue"},disable_ext:{columns:["扩展名"],ruleName:"disable_ext",addParamName:"ruleValue"},disable_upload_ext:{columns:["扩展名"],ruleName:"disable_upload_ext",addParamName:"ruleValue"},url_tell:{columns:["URL地址","参数名","参数值"],ruleName:"url_tell",addParamName:"ruleUri"},url_rule:{columns:["过滤URL","过滤规则"],ruleName:"url_rule",addParamName:"ruleUri"}},Ke={readonly:{content:"最大限度地对入侵行为进行防护,会影响支付、API等正常请求、只允许访问网页其他的操作都会进行拦截,只建议在攻防演练期间开启!",triggerOn:!0},spider_status:{content:"关闭后搜索引擎蜘蛛将无法爬取网站内容,可能影响SEO,确认关闭?",triggerOn:!1}},Qe=[{obj:"malicious_ip",label:"堡塔免费恶意IP共享库",helpUrl:""},{obj:"system_black",label:"禁国外增强封锁",helpUrl:""},{obj:"btmalibrary",label:'<i class="svgtofont-icon-ltd mr-4px text-ltd !text-large"></i>堡塔恶意情报IP库',helpUrl:""}],ze=[{value:"open_idc",label:"开启禁IDC访问",obj:"idc",is_status:!0},{value:"open_cc",label:"开启CC防御",obj:"cc",is_status:!0},{value:"open_smart_cc",label:"开启智能CC防御",obj:"smart_cc",is_status:!0},{value:"open_drop_abroad",label:"开启禁国外访问",obj:"drop_abroad",is_status:!0},{value:"open_drop_china",label:"开启禁国内访问",obj:"drop_china",is_status:!0},{value:"open_cdn",label:"开启CDN选项",obj:"cdn",is_status:!0},{value:"open_status",label:"开启状态",obj:"open",is_status:!0},{value:"open_not_spider",label:"开启假蜘蛛",obj:"not_spider",is_status:!0},{value:"close_idc",label:"关闭禁IDC访问",obj:"idc",is_status:!1},{value:"close_cc",label:"关闭CC防御",obj:"cc",is_status:!1},{value:"close_smart_cc",label:"关闭智能CC防御",obj:"smart_cc",is_status:!1},{value:"close_drop_abroad",label:"关闭禁国外访问",obj:"drop_abroad",is_status:!1},{value:"close_drop_china",label:"关闭禁国内访问",obj:"drop_china",is_status:!1},{value:"close_cdn",label:"关闭CDN选项",obj:"cdn",is_status:!1},{value:"close_status",label:"关闭状态",obj:"open",is_status:!1},{value:"close_not_spider",label:"关闭假蜘蛛",obj:"not_spider",is_status:!1}],Je=["CDN选项:当网站开启CDN之后,一定得开启CDN按钮,否则无法正确获取客户IP","禁IDC,这个是禁止国内的阿里云、腾讯云、等云厂商的IP进行访问","导出默认全部导出,如需单个站点或指定站点导出,请勾选站点后再导出"],_a=["默认允许的蜘蛛进行爬取开启代表允许爬取","禁止后状态码表示禁止该蜘蛛后返回的状态码"],ba=["此处继承全局设置中已启用的规则","此处的设置仅对当前站点有效"],ha=["会同时过滤key和value,请谨慎设置。","请使用正则表达式,提交前应先备份原有表达式。"],fa={drop_china:["设置禁止访问的国内IP段","添加IP段格式:起始IP-结束IP","留空则禁止所有国内IP访问"],drop_abroad:["设置禁止访问的国外IP段","添加IP段格式:起始IP-结束IP","留空则禁止所有国外IP访问"]},ne=[{key:"cc",name:"CC防御",ps:"防御CC攻击,具体参数请到站点配置中调整",fieldPath:"cc.open",hasSwitch:!0,hasButton:!0,buttonLabel:"设置",dialogPath:"./dialogs/cc-defense/index.vue",tab:"common"},{key:"retry",name:"攻击次数拦截",ps:"封锁连续的恶意攻击请求,请到站点配置中调整阈值",fieldPath:"retry.open",hasSwitch:!1,hasButton:!0,buttonLabel:"设置",dialogPath:"./dialogs/attack-retry/index.vue",tab:"common"},{key:"not_spider",name:"假蜘蛛",ps:"拦截伪造的蜘蛛IP",fieldPath:"not_spider.open",hasSwitch:!0,hasButton:!1,tab:"common"},{key:"drop_china",name:"禁止境内访问",ps:"禁止大陆地区访问",fieldPath:"drop_china.open",hasSwitch:!0,hasButton:!0,buttonLabel:"设置",dialogPath:"./dialogs/region-block/index.vue",tab:"common"},{key:"drop_abroad",name:"禁止海外访问",ps:"禁止中国大陆以外的地区访问站点",fieldPath:"drop_abroad.open",hasSwitch:!0,hasButton:!0,buttonLabel:"设置",dialogPath:"./dialogs/region-block/index.vue",tab:"common"},{key:"cdn",name:"使用CDN",ps:"该站点使用CDN,启动后方可正确获取客户IP,默认获取请求头的最后一个IP地址做为客户IP",fieldPath:"cdn",hasSwitch:!0,hasButton:!0,buttonLabel:"设置",dialogPath:"./dialogs/cdn-config/index.vue",tab:"common"},{key:"idc",name:"禁IDC访问",ps:"拦截国内:阿里云、腾讯云、京东云等机器访问",fieldPath:"idc.open",hasSwitch:!0,hasButton:!1,tab:"common"},{key:"smart_cc",name:"智能CC防御",ps:"根据网站负载情况、历史访问数据自动分析当前是否正在被攻击,根据受影响情况自动调整防御策略",fieldPath:"smart_cc.open",hasSwitch:!0,hasButton:!1,tab:"common"}],J=[{key:"xss_injection",name:"SQL注入防御",ps:"检测恶意SQL语句、防止数据库因SQL注入导致的恶意篡改、删库、数据泄露",fieldPath:"xss_injection.open",hasSwitch:!0,hasButton:!0,buttonLabel:"规则",dialogPath:"./dialogs/site-rule/index.vue",tab:"advanced"},{key:"post",name:"XSS防御",ps:"检测XSS语法,防止网页被恶意篡改、用户信息泄露、权限窃取",fieldPath:"post.open",hasSwitch:!0,hasButton:!0,buttonLabel:"规则",dialogPath:"./dialogs/site-rule/index.vue",tab:"advanced"},{key:"rce_injection",name:"命令执行拦截",ps:"通过语法模型判断并拦截潜在的危险命令执行,有效避免黑客通过网站入侵服务器",fieldPath:"rce_injection.open",hasSwitch:!0,hasButton:!1,tab:"advanced"},{key:"file_upload",name:"恶意文件上传防御",ps:"检测恶意文件上传,防止被上传木马、防止服务器权限丢失",fieldPath:"file_upload.open",hasSwitch:!0,hasButton:!1,tab:"advanced"},{key:"get",name:"恶意下载防御",ps:"检测恶意下载,防止备份文件、源代码、其他关键数据被下载",fieldPath:"get.open",hasSwitch:!0,hasButton:!0,buttonLabel:"规则",dialogPath:"./dialogs/site-rule/index.vue",tab:"advanced"},{key:"user_agent",name:"恶意爬虫防御",ps:"检测恶意爬虫,防止恶意爬虫、访问网站",fieldPath:"user_agent.open",hasSwitch:!0,hasButton:!0,buttonLabel:"规则",dialogPath:"./dialogs/site-rule/index.vue",tab:"advanced"},{key:"cookie",name:"Cookie过滤",ps:"过滤利用Cookie发起的渗透攻击",fieldPath:"cookie.open",hasSwitch:!0,hasButton:!0,buttonLabel:"设置",dialogPath:"./dialogs/site-rule/index.vue",tab:"advanced"},{key:"scan",name:"常见扫描器",ps:"过滤常见扫描测试工具的渗透测试",fieldPath:"scan.open",hasSwitch:!0,hasButton:!0,buttonLabel:"设置",dialogPath:"./dialogs/scan-rule/index.vue",tab:"advanced"},{key:"spider_status",name:"蜘蛛池",ps:"默认允许的蜘蛛进行爬取",fieldPath:"spider_status.open",hasSwitch:!0,hasButton:!0,buttonLabel:"设置",dialogPath:"./dialogs/spider-pool/index.vue",tab:"advanced"},{key:"readonly",name:"护网模式",ps:"只读模式,请勿在非攻防演练时开启,开启后将会影响用户登录、支付、搜索、注册、评论等功能",fieldPath:"readonly.open",hasSwitch:!0,hasButton:!1,tab:"advanced"},{key:"disable_php_path",name:"禁止执行PHP的URL",ps:"除正则表达式语句外规则值对大小写不敏感,建议统一使用小写",fieldPath:"disable_php_path",hasSwitch:!1,hasButton:!1,isTable:!0,tab:"advanced"},{key:"disable_path",name:"禁止访问的URL",ps:"除正则表达式语句外规则值对大小写不敏感,建议统一使用小写",fieldPath:"disable_path",hasSwitch:!1,hasButton:!1,isTable:!0,tab:"advanced"},{key:"disable_ext",name:"禁止扩展名",ps:"除正则表达式语句外规则值对大小写不敏感,建议统一使用小写",fieldPath:"disable_ext",hasSwitch:!1,hasButton:!1,isTable:!0,tab:"advanced"},{key:"disable_upload_ext",name:"禁止上传的文件类型",ps:"除正则表达式语句外规则值对大小写不敏感,建议统一使用小写",fieldPath:"disable_upload_ext",hasSwitch:!1,hasButton:!1,isTable:!0,tab:"advanced"},{key:"url_tell",name:"指定参数访问URL",ps:["可用于保护网站后台地址,API接口等非公众URI地址不被渗透","示例:","URI地址: /admin/admin.php 参数名: test 参数值: bt.cn","正确的访问方式: /admin/admin.php?test=bt.cn"],fieldPath:"url_tell",hasSwitch:!1,hasButton:!1,isTable:!0,tab:"advanced"},{key:"url_rule",name:"URL专用过滤",ps:["可用于加强登陆入口、回帖评论等接口的保护,快速修补第三方程序安全漏洞","参数名与参数值对大小写敏感","本过滤器同时作用于GET和POST参数","示例:/admin/update.php?update=_date&date=666 update参数中包含_date 存在漏洞利用的风险。那么可以设置为:","URL地址/admin/update.php,过滤规则为_date,过滤规则是过滤的参数内容。"],fieldPath:"url_rule",hasSwitch:!1,hasButton:!1,isTable:!0,tab:"advanced"}];[...ne,...J];const va=[{value:"today",label:"今天"},{value:"yesterday",label:"昨天"},{value:"last7days",label:"近7天"},{value:"last30days",label:"近30天"},{value:"custom",label:"自定义时间"}],ya=[{label:"标准模式",value:1},{label:"增强模式",value:2}],ga=[{label:"宽松",value:1},{label:"标准",value:2},{label:"严格",value:3},{label:"超严格",value:4}],wa=[{label:"浏览器验证",value:"browser"},{label:"跳转验证",value:"js"},{label:"验证码验证",value:"code"},{label:"人机验证",value:"renji"},{label:"滑动验证",value:"huadong"}],ka=[{label:"默认(带宝塔标识)",value:"default"},{label:"自定义网页跳转内容",value:"text"}],Pa=[{label:"默认(网站域名)",value:"default"},{label:"自定义水印内容",value:"text"}],Ca=[{content:"爬虫防护当前为测试功能"},{content:"效果:该功能开启后,会将网页进行随机加密,每次访问的网页将不一样,有效防止爬虫"},{content:"影响:开启后会导致比之前流量增加1倍,在某些特殊情况下会导致网页打不开"},{content:"建议:测试业务可以尝试开启,但线上业务建议不要开启"},{content:'<a href="https://www.bt.cn/bbs/thread-139641-1-1.html" target="_blank" class="btlink">教程</a>',isHtml:!0}],Sa=[{label:"默认(带宝塔标识)",value:"default"},{label:"自定义网页内容",value:"text"}],Ta=[{content:"等候室/限流当前为测试功能"},{content:"效果:等待室开启后可以解决部分消峰问题"},{content:"影响:低版本的浏览器会存在一直转圈的情况"},{content:"建议:测试业务可以尝试开启,但线上业务建议不要开启"},{content:"默认策略:网站实时流量超1次才会触发。最多50个用户同时访问、超时时间10分钟"},{content:"QPS为0的时候则不会检测QPS的次数"},{content:'<a href="https://www.bt.cn/bbs/thread-141331-1-1.html" target="_blank" class="btlink">教程</a>',isHtml:!0}];async function Ye(e){var l,r,u,_,o;const t=await Ae(e),a=(r=(l=t.data.data)!=null?l:t)!=null?r:{};let n=[];const s={malicious_ip:!1,system_black:!1,btmalibrary:!1};if(Array.isArray(a))n=a.map((m,d)=>({id:d,siteName:m.siteName||m.name||m.sitename||"",...m}));else if(a&&typeof a=="object"){const m=a;if(Array.isArray(m.list)&&(n=m.list.map((d,p)=>({id:p,siteName:d.siteName||d.name||d.sitename||"",...d}))),m.config&&typeof m.config=="object"){const d=m.config;((u=d.malicious_ip)==null?void 0:u.is_status)!==void 0&&(s.malicious_ip=!!d.malicious_ip.is_status),((_=d.system_black)==null?void 0:_.is_status)!==void 0&&(s.system_black=!!d.system_black.is_status),((o=d.btmalibrary)==null?void 0:o.is_status)!==void 0&&(s.btmalibrary=!!d.btmalibrary.is_status)}}return{sites:n,globalSwitches:s,page:t.data.page}}async function qe(e){const{sites:t,page:a}=await Ye(e);return{sites:t,page:a}}async function Xe(){var n,s;const e=await Be(),t=(s=(n=e.data)!=null?n:e)!=null?s:{},a={malicious_ip:!1,system_black:!1,btmalibrary:!1,share_ip:!1};if(t&&typeof t=="object"){const l=t;l.malicious_ip!==void 0&&(a.malicious_ip=!!l.malicious_ip),l.system_black!==void 0&&(a.system_black=!!l.system_black),l.btmalibrary!==void 0&&(a.btmalibrary=!!l.btmalibrary),l.share_ip!==void 0&&(a.share_ip=!!l.share_ip)}return a}async function Ze(e,t){await ee({siteName:e,obj:t})}async function et(e,t){return Ve({siteNames:JSON.stringify(e),is_all:0,obj:t.obj,is_status:!!t.is_status})}function tt(e){return Ne({obj:e})}async function Ia(){var a,n,s;const e=await Re(),t=(n=(a=e.data)!=null?a:e)!=null?n:[];return Array.isArray(t)?t:t&&typeof t=="object"&&"list"in t?(s=t.list)!=null?s:[]:[]}async function Oa(e){await De({site:e.site,html:e.html,picture:e.picture,html_fast:!1,js:!1,htmlnew:JSON.stringify(e.htmlnew),picturenew:JSON.stringify(e.picturenew)})}async function xa(e,t){await je({site:e,limiting:JSON.stringify(t)})}async function at(e){var a,n;const t=await Ue({siteName:e});return(n=(a=t.data)!=null?a:t)!=null?n:{}}async function se(e,t){await ee({siteName:e,obj:t})}function lt(e){var n,s,l,r,u,_;const t=[],a=[];for(const o of ne){const m=q(e,o.fieldPath);let{ps:d}=o;o.key==="cc"&&e.cc?d="".concat((n=e.cc.cycle)!=null?n:60,"秒内请求同一URI累计超过").concat((s=e.cc.limit)!=null?s:180,"次,封锁IP ").concat((l=e.cc.endtime)!=null?l:300,"秒"):o.key==="retry"&&e.retry&&(d="".concat((r=e.retry.cycle)!=null?r:60,"秒内攻击超过").concat((u=e.retry.retry)!=null?u:10,"次,封锁IP ").concat((_=e.retry.time)!=null?_:300,"秒")),t.push({key:o.key,name:o.name,ps:d,isOpen:!!m,hasSwitch:o.hasSwitch,hasButton:o.hasButton,buttonLabel:o.buttonLabel,isTable:o.isTable,tab:o.tab})}for(const o of J){if(o.isTable)continue;const m=q(e,o.fieldPath),{ps:d}=o;a.push({key:o.key,name:o.name,ps:d,isOpen:!!m,hasSwitch:o.hasSwitch,hasButton:o.hasButton,buttonLabel:o.buttonLabel,isTable:o.isTable,tab:o.tab})}return{common:t,advanced:a}}function q(e,t){const a=t.split(".");let n=e;for(const s of a)if(n&&typeof n=="object")n=n[s];else return;return n}async function oe(e,t=!0){x.value=e,t&&(N.value=le),F.value=!0;try{const a=await at(e);z.value=a;const n=lt(a);te.value=n.common,ae.value=n.advanced;const s=Object.keys(Ge).map(l=>{const r=a[l],u=Array.isArray(r)?r:[],_=J.find(o=>o.key===l);return{key:l,name:(_==null?void 0:_.name)||l,ps:(_==null?void 0:_.ps)||"",data:u}});H.value=s}finally{F.value=!1}}const{BtTabs:nt,tabs:ie}=ue({type:"card",options:We.map(e=>({label:e.label,name:e.name})),value:w(le)});K(ie,e=>{N.value=e});const st=S(()=>N.value==="common"?te.value:ae.value);async function ot(e,t){const a=Ke[e.key];if(a&&(a.triggerOn?t:!t))try{await G({content:a.content})}catch(l){return}let n=e.key;e.key==="user_agent"&&(n="user-agent");try{await se(x.value,n),e.isOpen=t,g().success("设置成功")}catch(s){g().error("设置失败")}}const it=S(()=>{var e;return!!((e=z.value)!=null&&e.cdn_baidu)});async function rt(){try{await se(x.value,"cdn_baidu"),g().success("设置成功")}catch(e){g().error("设置失败")}}function ct(e){const a={cc:()=>v(()=>import("./index435.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),retry:()=>v(()=>import("./index436.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),drop_china:()=>v(()=>import("./index437.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),drop_abroad:()=>v(()=>import("./index437.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),cdn:()=>v(()=>import("./index438.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),xss_injection:()=>v(()=>import("./index439.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),post:()=>v(()=>import("./index439.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),get:()=>v(()=>import("./index439.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),user_agent:()=>v(()=>import("./index439.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),cookie:()=>v(()=>import("./index439.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),scan:()=>v(()=>import("./index440.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),spider_status:()=>v(()=>import("./index441.js?v=1777008528"),__vite__mapDeps([]),import.meta.url)}[e.key];if(!a){g().warn("该配置项暂无详细设置");return}const n={retry:"42rem",drop_china:"55rem"};A({title:"".concat(e.name,"设置"),area:n[e.key]||"60rem",component:a,compData:{siteName:x.value,configKey:e.key,configData:z.value,onSaveSuccess:W},btn:["保存","取消"],showFooter:e.key==="retry"||e.key==="scan",onConfirm:async()=>(await W(),!0)})}async function W(){await oe(x.value,!1)}const ut=e=>[{prop:"value",label:"规则值",minWidth:300},U([{title:"删除",onClick:t=>e(t)}])],dt=e=>[{prop:"uri",label:"URL地址",minWidth:200},{prop:"paramName",label:"参数名",minWidth:120},{prop:"paramValue",label:"参数值",minWidth:120},U([{title:"删除",onClick:t=>e(t)}])],pt=e=>[{prop:"uri",label:"过滤URL",minWidth:200},{prop:"rule",label:"过滤规则",minWidth:200},U([{title:"删除",onClick:t=>e(t)}])];function mt(e,t){const a=[],n=Array.isArray(t)?t:[];return e==="url_tell"?n.forEach((s,l)=>{const r=Array.isArray(s)?s:[s];a.push({index:l,uri:r[0]||"",paramName:r[1]||"",paramValue:r[2]||""})}):e==="url_rule"?n.forEach((s,l)=>{const r=Array.isArray(s)?s:[s];a.push({index:l,uri:r[0]||"",rule:r[1]||""})}):n.forEach((s,l)=>{const r=Array.isArray(s)?s[0]:s;a.push({index:l,value:String(r)})}),a}function _t(e,t,a,n){const s=w(!1),l=w({value:"",uri:"",paramName:"",paramValue:"",rule:""}),r=S(()=>t==="url_tell"||t==="url_rule"),u=S(()=>t==="url_tell"?dt(d):t==="url_rule"?pt(d):ut(d)),{BtTable:_,refresh:o}=de({request:async()=>{var C;const p=mt(t,(C=a.value)!=null?C:[]);return{data:p,total:p.length}},columns:u});K(a,()=>{o()},{deep:!0});async function m(){if(r.value){if(t==="url_tell"){if(!l.value.uri||!l.value.paramName||!l.value.paramValue){g().warn("请填写完整信息");return}}else if(!l.value.uri||!l.value.rule){g().warn("请填写完整信息");return}}else if(!l.value.value.trim()){g().warn("请输入规则值");return}try{s.value=!0;let p=null;t==="url_tell"?p=await $({siteName:e,ruleName:t,ruleUri:l.value.uri,ruleValue:l.value.paramValue,rulePass:l.value.paramName}):t==="url_rule"?p=await $({siteName:e,ruleName:t,ruleUri:l.value.uri,ruleValue:l.value.rule}):p=await $({siteName:e,ruleName:t,ruleValue:l.value.value}),l.value={value:"",uri:"",paramName:"",paramValue:"",rule:""},g().request(p),await(n==null?void 0:n()),o()}catch(p){g().error("添加失败")}finally{s.value=!1}}async function d(p){try{const C=await $e({siteName:e,ruleName:t,index:p.index});g().request(C),await(n==null?void 0:n()),o()}catch(C){}}return{BtTable:_,refresh:o,loading:s,addForm:l,isMultiField:r,handleAdd:m,handleDelete:d}}const bt={class:"mt-4 py-[1.6rem] px-[2.6rem] rounded-lg border border-[var(--el-border-color)]"},ht={class:"mb-3"},ft={class:"font-semibold"},vt={key:0,class:"mt-1 text-[1.2rem] text-[var(--el-text-color-secondary)]"},yt={key:1},gt={class:"flex items-center gap-2 mb-3"},wt=Q({__name:"inline-rule-table",props:{siteName:{},ruleName:{},title:{},description:{},initialData:{},onDataChange:{type:Function}},setup(e){const t=e,a=ke(t,"initialData"),{BtTable:n,loading:s,addForm:l,isMultiField:r,handleAdd:u}=_t(t.siteName,t.ruleName,a,t.onDataChange);return(_,o)=>{const m=pe,d=me;return b(),h("div",bt,[y("div",ht,[y("span",ft,T(e.title),1),e.description?(b(),h("ul",vt,[Array.isArray(e.description)?(b(!0),h(I,{key:0},D(e.description,(p,C)=>(b(),h("li",{key:C},T(p),1))),128)):(b(),h("li",yt,T(e.description),1))])):L("",!0)]),y("div",gt,[i(r)?e.ruleName==="url_tell"?(b(),h(I,{key:1},[c(m,{modelValue:i(l).uri,"onUpdate:modelValue":o[1]||(o[1]=p=>i(l).uri=p),placeholder:"URL地址",class:"!w-[200px]"},null,8,["modelValue"]),c(m,{modelValue:i(l).paramName,"onUpdate:modelValue":o[2]||(o[2]=p=>i(l).paramName=p),placeholder:"参数名",class:"!w-[120px]"},null,8,["modelValue"]),c(m,{modelValue:i(l).paramValue,"onUpdate:modelValue":o[3]||(o[3]=p=>i(l).paramValue=p),placeholder:"参数值",class:"!w-[120px]"},null,8,["modelValue"])],64)):(b(),h(I,{key:2},[c(m,{modelValue:i(l).uri,"onUpdate:modelValue":o[4]||(o[4]=p=>i(l).uri=p),placeholder:"过滤URL",class:"!w-[200px]"},null,8,["modelValue"]),c(m,{modelValue:i(l).rule,"onUpdate:modelValue":o[5]||(o[5]=p=>i(l).rule=p),placeholder:"过滤规则",class:"!w-[200px]"},null,8,["modelValue"])],64)):(b(),j(m,{key:0,modelValue:i(l).value,"onUpdate:modelValue":o[0]||(o[0]=p=>i(l).value=p),placeholder:"输入规则值",class:"!w-[400px]",onKeyup:Pe(i(u),["enter"])},null,8,["modelValue","onKeyup"])),c(d,{type:"primary",loading:i(s),onClick:i(u)},{default:k(()=>[...o[6]||(o[6]=[O("添加",-1)])]),_:1},8,["loading","onClick"])]),c(i(n),{"max-height":200})])}}}),kt={class:"flex flex-col h-full flex-1 bg-[var(--el-bg-color)] rounded-lg"},Pt={class:"flex items-center gap-2 p-4 border-b border-[var(--el-border-color)]"},Ct={class:"px-4 pt-4"},St={class:"flex-1 overflow-auto p-4"},Tt={class:"grid grid-cols-4 gap-4"},It={class:"flex flex-col"},Ot={class:"flex justify-between"},xt={class:"flex items-center gap-2"},Et={class:"font-semibold"},Lt={class:"mt-1 text-[1.2rem] text-[var(--el-text-color-secondary)] line-clamp-2"},Bt={class:"flex justify-between items-end"},Vt={key:0,class:"mt-2 flex items-center gap-2"},Nt={key:1,class:"mt-3 ml-auto"},At=Q({__name:"page",props:{siteName:{}},emits:["back"],setup(e,{emit:t}){const a=e,n=t;function s(){n("back")}const l=S(()=>a.siteName);return K(l,r=>{r&&(N.value="common",oe(r))},{immediate:!0}),Ce(()=>{ie.value="common"}),(r,u)=>{const _=Te,o=Ie,m=Z,d=V,p=Oe,C=xe;return Se((b(),h("div",kt,[y("div",Pt,[c(o,{separator:"/"},{default:k(()=>[c(_,null,{default:k(()=>[y("span",{class:"cursor-pointer text-primary hover:underline",onClick:s},"网站防护")]),_:1}),c(_,null,{default:k(()=>[O(T(i(l)),1)]),_:1})]),_:1})]),y("div",Ct,[c(i(nt))]),y("div",St,[y("div",Tt,[(b(!0),h(I,null,D(i(st),f=>(b(),h("div",{key:f.key,class:"px-[2.6rem] py-[1.6rem] rounded-lg border min-h-[14rem] border-[var(--el-border-color)] flex flex-col justify-between"},[y("div",It,[y("div",Ot,[y("div",xt,[y("span",Et,T(f.name),1)]),f.hasSwitch?(b(),j(m,{key:0,"model-value":f.isOpen,onChange:R=>i(ot)(f,R)},null,8,["model-value","onChange"])):L("",!0)]),y("p",Lt,T(f.ps),1)]),y("div",Bt,[f.key==="cdn"?(b(),h("div",Vt,[c(d,{size:"small","model-value":i(it),onChange:u[0]||(u[0]=R=>i(rt)(!!R))},{default:k(()=>[...u[1]||(u[1]=[O(" 首位IP为客户IP ",-1)])]),_:1},8,["model-value"])])):L("",!0),f.hasButton?(b(),h("div",Nt,[c(p,{type:"primary",plain:"",onClick:R=>i(ct)(f)},{default:k(()=>[O(T(f.buttonLabel||"设置"),1)]),_:2},1032,["onClick"])])):L("",!0)])]))),128))]),i(N)==="advanced"&&i(H).length?(b(!0),h(I,{key:0},D(i(H),f=>(b(),j(wt,{key:f.key,"site-name":i(x),"rule-name":f.key,title:f.name,description:f.ps,"initial-data":f.data,"on-data-change":i(W)},null,8,["site-name","rule-name","title","description","initial-data","on-data-change"]))),128)):L("",!0)])])),[[C,i(F)]])}}}),M=e=>!e||e===0?"text-gray-400":"text-red-500",Rt=e=>!e||typeof e!="object"?!1:Object.entries(e).some(([t,a])=>t!=="picturenew"&&t!=="htmlnew"&&!!a),re=(e,t)=>c("div",null,[c("span",{innerHTML:e},null),c(Ee,{content:t,placement:"top"},{default:()=>[c("span",{class:"ml-2 bt-ico-ask"},[O("?")])]})]),E=(e,t,a,n)=>({prop:e,label:t,width:90,renderHeader:n?()=>re(t,n):void 0,render:s=>c(V,{modelValue:s[e],"onUpdate:modelValue":l=>s[e]=l,onChange:()=>a(s)},null)}),Dt=e=>[Me(),{prop:"siteName",label:"站点",width:150,showOverflowTooltip:!0,render:t=>c("span",{class:"text-primary cursor-pointer hover:underline",onClick:()=>e.onOpenSiteConfig(t.siteName)},[t.siteName])},{prop:"total_block",label:"总拦截次数",render:t=>{var l,r;const a=t==null?void 0:t.total;if(!Array.isArray(a))return c("span",{class:M(t.total_block)},[(l=t.total_block)!=null?l:0]);let n=0,s="总拦截次数:";for(let u=0;u<a.length;u++){const _=(r=a[u].value)!=null?r:0;n+=_,s+="\n".concat(a[u].name,":").concat(_,"次")}return s="".concat(n,"次").concat(s),c("span",{class:n?"text-red-500 cursor-pointer hover:underline":"text-gray-400",title:s,onClick:n?()=>e.onOpenTotalBlockDialog(a):void 0},[n])}},E("drop_abroad","禁国外",t=>e.onToggleSwitch(t,"drop_abroad")),E("not_spider",'<a href="https://www.bt.cn/bbs/thread-135625-1-1.html" target="_blank" class="btlink">假蜘蛛</a>',t=>e.onToggleSwitch(t,"not_spider"),"拦截伪造的蜘蛛IP"),E("drop_china","禁国内",t=>e.onToggleSwitch(t,"drop_china")),E("cdn","用了CDN",t=>e.onToggleSwitch(t,"cdn"),"CDN:当网站开启CDN的时候获取的IP开关"),E("idc","禁IDC",t=>e.onToggleSwitch(t,"idc"),"拦截国内:阿里云、腾讯云、京东云等机器访问"),{prop:"smart_cc",label:"智能cc防御",width:100,renderHeader:()=>re('<a href="https://www.bt.cn/bbs/thread-131901-1-1.html" target="_blank" class="btlink">智能cc防御</a>',"根据网站负载情况、历史访问数据自动分析当前是否正在被攻击根据受影响情况自动调整防御策略,从而减少对业务的影响"),render:t=>{var a,n,s,l,r;return c("div",{class:"flex items-center gap-2"},[c(V,{modelValue:t.smart_cc.open,"onUpdate:modelValue":u=>t.smart_cc.open=u,onChange:()=>e.onToggleSwitch(t,"smart_cc")},null),c("span",{class:M((n=(a=t.total)==null?void 0:a[9])==null?void 0:n.value)},[(r=(l=(s=t.total)==null?void 0:s[9])==null?void 0:l.value)!=null?r:0])])}},{prop:"crawler",label:'<a href="https://www.bt.cn/bbs/thread-139641-1-1.html" target="_blank" class="btlink">爬虫防护</a>',render:t=>{const a=Rt(t.crawler);return c("span",{class:"cursor-pointer hover:underline ".concat(a?"text-primary":"text-warning"),onClick:()=>e.onOpenCrawlerDialog(t.siteName,t.crawler)},[a?"已开启":"未开启"])}},{prop:"waiting_room",label:'<a href="https://www.bt.cn/bbs/thread-141331-1-1.html" target="_blank" class="btlink">等待室/限流</a>',render:t=>{var n,s;const a=!!((s=(n=t.limiting)==null?void 0:n.timeout)!=null&&s.open);return c("span",{class:"cursor-pointer hover:underline ".concat(a?"text-primary":"text-warning"),onClick:()=>e.onOpenWaitingRoomDialog(t.siteName,t.limiting)},[a?"已开启":"未开启"])}},{prop:"cc",label:"CC防御",width:100,render:t=>{var a,n,s,l,r;return c("div",{class:"flex items-center gap-2"},[c(V,{modelValue:t.cc.open,"onUpdate:modelValue":u=>t.cc.open=u,onChange:()=>e.onToggleSwitch(t,"cc")},null),c("span",{class:M((n=(a=t.total)==null?void 0:a[2])==null?void 0:n.value)},[(r=(l=(s=t.total)==null?void 0:s[2])==null?void 0:l.value)!=null?r:0])])}},{prop:"open",label:"状态",width:50,render:t=>c(Z,{size:"small",modelValue:t.open,"onUpdate:modelValue":a=>t.open=a,onChange:()=>e.onToggleSwitch(t,"open")},null)},U([{title:"拦截记录",onClick:t=>e.onOpenInterceptRecord(t.siteName)},{title:"设置",onClick:t=>e.onOpenSiteConfig(t.siteName)}],{width:120})],P=w({malicious_ip:!1,system_black:!1,btmalibrary:!1,share_ip:!1}),X=w("");w([]);const B=w("");async function jt(){const e=await Xe();P.value.malicious_ip=e.malicious_ip,P.value.system_black=e.system_black,P.value.btmalibrary=e.btmalibrary,P.value.share_ip=e.share_ip}const Ut=S(()=>Qe);async function $t(e){const t=P.value[e];try{t&&!P.value.share_ip&&await G({icon:"warning",title:"开启共享恶意IP计划",isHtml:!0,content:'当前未开启共享恶意IP计划,是否开启?</br><a href="https://www.kancloud.cn/kern123/cloudwaf/3208853" target="_blank" class="btlink"> >堡塔恶意IP共享计划</a>'});const a=await tt(e);g().request(a),a.status||(P.value[e]=t)}catch(a){P.value[e]=!t}}const Mt=_e(ze.map(e=>({label:e.label,value:e.value,event:async(t,a,n,s,l)=>{const r=n.value.map(u=>u.siteName);if(r.length===0){g().warn("请先选择站点");return}await t({title:"批量".concat(e.label),content:"确认对 ".concat(r.length," 个站点执行「").concat(e.label,"」?"),column:[{label:"站点名称",prop:"siteName"},Fe()],onConfirm:async()=>{const u=await et(r,{siteNames:"",is_all:0,obj:e.obj,is_status:e.is_status?1:0}),_=(u==null?void 0:u.success)||[];return await a(async o=>{const m=_.includes(o.siteName);return{...o,batchStatus:m?1:2,msg:m?"设置成功":"设置失败"}}),l&&l(),ce.refresh(),!1}})}}))),ce=He({request:async e=>{const{sites:t,page:a}=await qe(e);let n=t;if(e.search||X.value){const s=e.search||X.value;n=t.filter(l=>l.siteName.toLowerCase().includes(s.toLowerCase()))}return{data:n,total:be(a)}},columns:Dt({onOpenSiteConfig:Jt,onToggleSwitch:zt,onOpenInterceptRecord:qt,onOpenCrawlerDialog:Xt,onOpenWaitingRoomDialog:Zt,onOpenTotalBlockDialog:ea}),extension:[Mt]}),{BtTable:Ft,BtSearch:Ht,BtPage:Wt,BtBatch:Gt,refresh:Kt}=ce,Y=Kt,Qt={idc:"当前开启后国内的阿里云、腾讯云、京东云等某些厂商的IP将会禁止访问、如你的网站有需要这些IP的访问建议不要开启此功能",smart_cc:"智能CC防御会自动判断是否存在负载高,返回慢,如果存在异常会开启人机验证进行防护"};async function zt(e,t){const a=e[t];try{return(t==="idc"||t==="smart_cc")&&e[t]&&await G({icon:"warning",title:"提示",content:Qt[t]}),await Ze(e.siteName,t),g().success("设置成功"),!0}catch(n){return e[t]=!a,!1}}function Jt(e){B.value=e}function Yt(){B.value="",Y()}function qt(e){A({title:"拦截日志 - ".concat(e),area:"980px",component:()=>v(()=>import("./index442.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{siteName:e},showFooter:!1})}function Xt(e,t){A({title:"".concat(e," - 爬虫防护"),area:"540px",component:()=>v(()=>import("./index443.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{siteName:e,crawlerData:t},btn:["保存","取消"],onConfirm:async()=>(Y(),!0)})}function Zt(e,t){A({title:"".concat(e," - 等候室/限流"),area:"630px",component:()=>v(()=>import("./index444.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{siteName:e,limitingData:t},btn:["保存","取消"],onConfirm:async()=>(Y(),!0)})}function ea(e){A({title:"拦截次数明细",area:"500px",component:()=>v(()=>import("./index445.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{totalData:e},showFooter:!1})}const ta=S(()=>Je),aa={class:"flex flex-col gap-4"},la={class:"flex items-center gap-4"},na=["onClick"],sa=["innerHTML"],oa=Q({__name:"page",setup(e){const{mainHeight:t}=he(),a=S(()=>ta.value.map(s=>({content:s})));function n(){window.open("https://www.bt.cn/bbs/thread-133723-1-1.html","_blank")}return Le(()=>{B.value="",jt()}),(s,l)=>{const r=V,u=ge,_=fe,o=ye,m=ve;return b(),h("div",aa,[i(B)?(b(),j(At,{key:0,"site-name":i(B),onBack:i(Yt)},null,8,["site-name","onBack"])):(b(),h(I,{key:1},[c(o,null,{"header-left":k(()=>[y("div",la,[(b(!0),h(I,null,D(i(Ut),d=>(b(),h("div",{key:d.obj,class:"flex items-center mr-4",onClick:p=>i($t)(d.obj)},[y("span",{class:"flex mr-2",innerHTML:d.label},null,8,sa),c(r,{modelValue:i(P)[d.obj],"onUpdate:modelValue":p=>i(P)[d.obj]=p},null,8,["modelValue","onUpdate:modelValue"])],8,na))),128)),c(u,{class:"!mx-0 !mr-2"}),c(_,{type:"primary",onClick:n},{default:k(()=>[...l[0]||(l[0]=[O(" 查看教程 ",-1)])]),_:1})])]),"header-right":k(()=>[c(i(Ht),{placeholder:"输入站点名",class:"!w-[20rem]"})]),content:k(()=>[c(i(Ft),{"min-height":i(t)-280},null,8,["min-height"])]),"footer-left":k(()=>[c(i(Gt))]),"footer-right":k(()=>[c(i(Wt))]),_:1}),c(m,{"list-style":"disc",options:i(a)},null,8,["options"])],64))])}}}),Ea=Object.freeze(Object.defineProperty({__proto__:null,default:oa},Symbol.toStringTag,{value:"Module"}));export{Ca as C,ka as I,Pa as P,ga as R,ba as S,va as T,wa as V,Sa as W,Ta as a,xa as b,ya as c,fa as d,ha as e,Ia as f,_a as g,Ea as p,Oa as s};
function __vite__mapDeps(indexes) {
if (!__vite__mapDeps.viteFileDeps) {
__vite__mapDeps.viteFileDeps = []
}
return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}