File: /www/server/panel/BTPanel/static/js/view-model.js
import{S as J,f as o,aa as j,J as k,t as x,w as D}from"./utils-lib.js?v=1777008528";import{r as E,g as S,w as K}from"./base-lib.js?v=1777008528";import{o as Q,h as X}from"./use-log-detail.js?v=1777008528";import{k as Y,l as G,m as Z,n as tt,r as at,o as et,p as rt,q as st,t as nt,u as it,v as ot,g as ct}from"./index432.js?v=1777008528";import{c as q}from"./constants.js?v=1777008528";function lt(t){const{blockade:a,incoming_value:e,filter_rule:s}=t;return a==="cc"?e==="堡塔恶意IP情报库IP"?"恶意情报库IP":e==="堡塔云端恶意IP"?"云端恶意IP":e.startsWith("假蜘蛛")?"假蜘蛛":e.startsWith("IDC拦截")?"IDC拦截":"CC攻击":a==="php"&&s.startsWith("ThinkPHP攻击")?"ThinkPHP攻击":a==="upload"?"恶意文件上传":a==="xss"?"XSS拦截":a==="sql"?"SQL注入拦截":a==="scan"?"扫描器拦截":a==="user_agent"?"恶意爬虫拦截":a==="inc"?e.startsWith("自定义拦截规则")?"自定义拦截规则":"多次恶意请求":a==="drop_abroad"&&e.startsWith("开启禁国外增强封锁")?"禁国外":a==="customize"?s||"自定义规则":"多次恶意请求"}function V(t){const a=t.getFullYear(),e=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0");return"".concat(a,"-").concat(e,"-").concat(s)}function xt(t,a){const e=new Date,s=new Date(e);switch(s.setDate(s.getDate()-1),t){case 0:return{};case 1:return{start_time:V(e)};case 2:return{start_time:V(s)};case 3:return a.length===2?{start_time:a[0]}:{};default:return{}}}function H(t){if(typeof t=="number")return t;const a=t.match(/共(\d+)条/);return a?parseInt(a[1],10):0}function ut(t){var i,c,l;const a=(i=t.ip_country)!=null?i:"",e=(c=t.ip_province)!=null?c:"",s=(l=t.ip_city)!=null?l:"";return a==="中国"?!s||e===s?"中国-".concat(e):"".concat(e,"-").concat(s):a||"未知"}async function Et(t){var l,u,p,_;const a=await Y(t),e=(u=(l=a.data)!=null?l:a)!=null?u:{},s=(p=e.data)!=null?p:[],i=typeof e.page=="string"?H(e.page):(_=e.total)!=null?_:s.length;return{list:s.map(r=>{var n,d,y,L,f,g,m,v,b,T,h,I,w,P;return{id:(n=r.id)!=null?n:"",time_localtime:(d=r.time_localtime)!=null?d:"",ip:(y=r.ip)!=null?y:"",server_name:(L=r.server_name)!=null?L:"",type:(f=r.type)!=null?f:"",uri:(g=r.uri)!=null?g:"",status:"已拦截",ip_country:(m=r.ip_country)!=null?m:"",ip_subdivisions:(v=r.ip_subdivisions)!=null?v:"",ip_city:(b=r.ip_city)!=null?b:"",filter_rule:(T=r.filter_rule)!=null?T:"",incoming_value:(h=r.incoming_value)!=null?h:"",user_agent:(I=r.user_agent)!=null?I:"",http_log:(w=r.http_log)!=null?w:"",http_log_path:(P=r.http_log_path)!=null?P:0,location:q({ip_country:r.ip_country,ip_subdivisions:r.ip_subdivisions,ip_city:r.ip_city})}}),total:i}}async function pt(t="all"){window.open("/btwaf/export_logs.json?siteName=".concat(t))}async function _t(){window.open("/btwaf/index?export=export","_blank")}function z(t){return t?new Date(Number(t)*1e3).toLocaleString("zh-CN"):""}async function Ht(t){var l,u,p,_;const a=await G(t),e=(u=(l=a.data)!=null?l:a)!=null?u:{},s=(p=e.data)!=null?p:[],i=typeof e.page=="string"?H(e.page):(_=e.total)!=null?_:s.length;return{list:s.map(r=>{var f,g,m,v,b,T,h,I,w,P,C,$,A,F,U,W,N;const n=(f=r.blockade)!=null?f:"",d=(g=r.incoming_value)!=null?g:"",y=(m=r.filter_rule)!=null?m:"",L=lt({blockade:n,incoming_value:d,filter_rule:y});return{id:(v=r.id)!=null?v:"".concat(r.ip,"_").concat(r.time),time:(b=r.time)!=null?b:"",time_localtime:z(r.time),ip:(T=r.ip)!=null?T:"",server_name:(h=r.server_name)!=null?h:"",uri:(I=r.uri)!=null?I:"",type:(w=r.type)!=null?w:"",blockade:typeof r.blockade=="number"?r.blockade:0,blockadeType:n,blockadeReason:L,blocking_time:(P=r.blocking_time)!=null?P:0,is_feng:(C=r.is_feng)!=null?C:0,statusText:r.is_feng?"封锁中":"已解封",ip_country:($=r.ip_country)!=null?$:"",ip_subdivisions:(A=r.ip_subdivisions)!=null?A:"",ip_city:(F=r.ip_city)!=null?F:"",location:q({ip_country:r.ip_country,ip_subdivisions:r.ip_subdivisions,ip_city:r.ip_city}),incoming_value:d,filter_rule:y,user_agent:(U=r.user_agent)!=null?U:"",http_log:(W=r.http_log)!=null?W:"",http_log_path:(N=r.http_log_path)!=null?N:0}}),total:i}}async function dt(t){await at({ip:t})}async function yt(){await et()}async function Ot(t){var u,p,_,r;const a=await rt(t),e=(p=(u=a.data)!=null?u:a)!=null?p:{},s=(_=e.list)!=null?_:[],i=typeof e.page=="string"?H(e.page):(r=e.total)!=null?r:s.length,c=Math.min(i,2e3);return{list:s.map(n=>{var d,y,L,f,g,m,v,b,T,h,I,w;return{id:(d=n.id)!=null?d:"".concat(n.ip,"_").concat(n.timestimp),timestimp:(y=n.timestimp)!=null?y:0,time_localtime:z(n.timestimp),status:(L=n.status)!=null?L:0,statusText:n.status===1?"拦截":"放行",key:(f=n.key)!=null?f:"",rule_ps:(g=n.rule_ps)!=null?g:"",ruleText:"".concat((m=n.key)!=null?m:"","-").concat((v=n.rule_ps)!=null?v:""),server_name:(b=n.server_name)!=null?b:"",ip:(T=n.ip)!=null?T:"",ip_country:(h=n.ip_country)!=null?h:"",ip_subdivisions:(I=n.ip_subdivisions)!=null?I:"",ip_city:(w=n.ip_city)!=null?w:"",location:ut(n)}}),total:c}}async function ft(){await st()}async function M(t,a,e=!1){return await nt({url_rule:t})}async function gt(){await J({loading:"正在清理日志,请稍候...",message:!0,request:it()})}async function mt(t){var e,s;const a=await ct({path:t});return(s=(e=a.data)!=null?e:a)!=null?s:""}async function vt(){var e,s;const t=await Z();return(s=(e=t.data)!=null?e:t)!=null?s:{}}async function Ct(t){await tt(t)}async function bt(t,a){const e=o(),s=e.load("正在清理站点日志,请稍候...");try{const i={safe_logs:0,site_all:a?1:0,site_logs:JSON.stringify(a?[]:t)},c=await ot(i);return e[c.status?"success":"error"](c.msg),c.status}finally{s.close()}}const B=[{key:"intercept_record",label:"拦截记录",supportExport:!0,supportTimeFilter:!0,supportStatusFilter:!1},{key:"temporary_ip",label:"IP临时拉黑记录",supportExport:!0,supportTimeFilter:!0,supportStatusFilter:!1},{key:"rule_hit",label:"规则命中记录",supportExport:!1,supportTimeFilter:!1,supportStatusFilter:!0}],$t=[{label:"全部",value:"all"},{label:"今天",value:"today"},{label:"昨天",value:"yesterday"},{label:"自定义",value:"custom"}],Tt=[{label:"全部",value:"all"},{label:"拦截",value:"refuse"},{label:"放行",value:"accept"}],O=E("intercept_record"),ht=E({intercept_record:{activeIndex:0,customTime:""},temporary_ip:{activeIndex:0,customTime:""},rule_hit:{activeIndex:0,customTime:""}}),R=S(()=>ht.value[O.value]);S(()=>R.value.activeIndex);S(()=>{const t=R.value.customTime;return t?[t,t]:[]});const At=E("all"),Ft=Tt,{BtTabs:Ut,tabs:It}=j({type:"card",options:[{label:"拦截记录",name:"intercept_record",lazy:!0,render:()=>k(()=>import("./intercept-record.js?v=1777008528"),__vite__mapDeps([]),import.meta.url)},{label:"IP临时拉黑",name:"temporary_ip",lazy:!0,render:()=>k(()=>import("./temporary-ip.js?v=1777008528"),__vite__mapDeps([]),import.meta.url)},{label:"规则命中",name:"rule_hit",lazy:!0,render:()=>k(()=>import("./rule-hit.js?v=1777008528"),__vite__mapDeps([]),import.meta.url)}]});S(()=>{var t;return(t=B.find(a=>a.key===O.value))!=null?t:B[0]});K(It,t=>{O.value=t});function Wt(t){Q({detail:t,openHttpDetail:wt})}function Nt(t,a){X(t.ip,a)}async function Vt(t,a){try{await dt(t.ip),o().success("IP 已解封"),a==null||a()}catch(e){}}async function Bt(t){try{await D({content:"确认解封所有临时封锁的IP?"}),await yt(),o().success("已解封所有IP"),t==null||t()}catch(a){}}async function qt(t,a){if(t.uri==="/"){o().error("根目录不允许执行误报操作");return}try{await D({content:"加入URL白名单后此URL将不再进行防御,是否继续操作?"});const e=await M(t.uri,t.server_name,!1);o()[e.status?"success":"error"](e.msg),a==null||a()}catch(e){}}async function zt(t,a){if(t.uri==="/"){o().error("根目录不允许执行误报操作");return}try{await D({content:"确认将 URL ".concat(t.uri," 加入白名单?")}),await M(t.uri,t.server_name,!1),o().success("URL 已加白"),a==null||a()}catch(e){}}function wt(t){var a,e;x({title:"HTTP请求详情",area:["800px","500px"],component:()=>k(()=>import("./http-detail.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{httpLog:(a=t.http_log)!=null?a:"",httpLogPath:(e=t.http_log_path)!=null?e:0,fetchHttpLogContent:mt},showFooter:!1})}async function Mt(){await pt("all"),o().success("导出成功")}async function Rt(){await _t(),o().success("导出成功")}async function Jt(t){try{await D({content:"确认清空所有临时拉黑历史记录?(不解封当前封锁的IP)"}),await gt(),t==null||t()}catch(a){}}async function jt(t){try{await D({content:"确认清空规则命中记录?此操作不可恢复。"}),await ft(),o().success("已清空"),t==null||t()}catch(a){}}async function Kt(){const t=await vt();x({title:"配置记录类型",area:"35rem",component:()=>k(()=>import("./config-record-type-dialog.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{types:t},btn:["确定","取消"],onConfirm:async()=>!0})}async function Qt(t){const a={sites:[],isAll:!1};x({title:"清理站点日志",area:"45rem",component:()=>k(()=>import("./select-site-dialog.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{result:a},btn:["清理","取消"],onConfirm:async()=>{const e=a.sites,{isAll:s}=a;if(e.length===0)return o().warn("请至少选择一个站点"),!1;try{const i=await bt(e,s);return i&&(t==null||t()),i}catch(i){return!1}}})}export{Ut as B,$t as T,qt as a,xt as b,Nt as c,Mt as d,Qt as e,Et as f,Ht as g,Wt as h,zt as i,Vt as j,Rt as k,Jt as l,Bt as m,Kt as n,Ft as o,jt as p,Ot as q,At as r,Ct as s,ht as t};
function __vite__mapDeps(indexes) {
if (!__vite__mapDeps.viteFileDeps) {
__vite__mapDeps.viteFileDeps = []
}
return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}