import"./rolldown-runtime-BM3Ffeng.js";import{O as e,b as t,dt as n,ot as r,p as i,ut as a,w as o}from"./element-plus-vendor-BF9PNysW.js";import{A as s,D as c,E as l,N as u,O as d,P as f,Pt as p,Tt as m,V as h,Xt as g,bt as _,et as v,ht as y,k as b,x as ee}from"./vue-vendor-DMUmTARL.js";import{Jr as te,in as ne,li as re,nn as ie,rn as ae,xn as oe}from"./icons-vendor-Buq6V-Ga.js";import{Ot as x,h as S}from"./index-y6crcKNt.js";import{T as C}from"./admin-setting-DI6F8jmk.js";import{t as se}from"./AdminSettingSection-BJnEd-qa.js";import{t as w}from"./useClientInfo-DuMEjFHD.js";var ce={class:`space-y-8`},le={class:`flex flex-wrap items-center gap-2`},ue={class:`flex flex-wrap items-center gap-2`},de={class:`flex flex-wrap items-center gap-2`},fe={class:`el-form-item-tips`},pe={class:`code inline-block max-w-full align-middle`},me={class:`el-form-item-tips`},he={class:`mt-1`},ge={class:`code inline-block max-w-full align-middle`},_e={class:`el-form-item-tips`},ve={class:`mt-1`},T={class:`code inline-block max-w-full align-middle`},E={class:`mt-4`},D={key:0},O={key:0,class:`text-secondary`},k={key:1,class:`text-secondary`},A={key:2},j={class:`code inline-block max-w-full align-middle`},M={key:3},N={class:`el-form-item-tips`},P={class:`mt-1`},F={class:`code inline-block max-w-full align-middle`},ye={class:`mt-4`},be={key:0},I={key:0,class:`text-secondary`},xe={key:1,class:`text-secondary`},Se={key:2},Ce={class:`code inline-block max-w-full align-middle`},we={key:3},Te={class:`flex items-center gap-2`},Ee={class:`text-xs text-secondary`},L=`*Thunder*
Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
*Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;*`,R={__name:`AccessTab`,props:{section:{type:String,default:`all`}},setup(R){let z=h(`securitySettingData`),{clientIp:B,userAgent:De}=w(),Oe=l(()=>!!z.value?.accessIpBlocklist?.trim?.()),ke=l(()=>!!z.value?.accessUaBlocklist?.trim?.()),V=m(``),H=m(null),U=m(!1),W=m(!1),G=x(()=>{Z(`springSimple`,z.value?.accessUaBlocklist,V.value,H,U,W)},250),K=m(``),q=m(null),J=m(!1),Y=m(!1),X=x(()=>{Z(`ip`,z.value?.accessIpBlocklist,K.value,q,J,Y)},250),Z=(e,t,n,r,i,a)=>{let o=typeof t==`string`?t.trim():``,s=typeof n==`string`?n.trim():``;i.value=!1;let c={ruleType:e,rules:o,testValue:s};if(!(c.rules&&c.testValue)){r.value=null,a.value=!1;return}a.value=!0,C(c).then(e=>{r.value=e.data,i.value=!0}).finally(()=>{a.value=!1})},Ae=async()=>{await S(L,`复制成功，请粘贴到 UA 黑名单中，然后保存。`),z.value.accessUaBlocklist&&!z.value.accessUaBlocklist.endsWith(`
`)&&(z.value.accessUaBlocklist+=`
`)};return(l,m)=>{let h=i,x=e,S=o,C=se,w=n,L=ae,Z=t,Q=ne,$=oe,je=r,Me=a;return v(),s(`div`,ce,[R.section===`access`?b(``,!0):(v(),d(C,{key:0,title:`登录频率限制`,description:`同一 IP 登录失败次数过多时自动临时锁定。`,icon:p(re),"icon-class":`bg-orange-50 text-orange-600 dark:bg-orange-500/15 dark:text-orange-300`},{default:y(()=>[f(x,{label:`启用登录失败锁定`},{default:y(()=>[f(h,{modelValue:p(z).loginIpLockEnabled,"onUpdate:modelValue":m[0]||=e=>p(z).loginIpLockEnabled=e},null,8,[`modelValue`])]),_:1}),p(z).loginIpLockEnabled?(v(),s(ee,{key:0},[f(x,{label:`失败次数阈值`},{default:y(()=>[c(`div`,le,[f(S,{modelValue:p(z).loginIpFailThreshold,"onUpdate:modelValue":m[1]||=e=>p(z).loginIpFailThreshold=e,min:1,max:999,step:1,class:`!w-28`,"controls-position":`right`},null,8,[`modelValue`]),m[9]||=c(`span`,null,`次`,-1)])]),_:1}),f(x,{label:`统计窗口`},{default:y(()=>[c(`div`,ue,[f(S,{modelValue:p(z).loginIpFailWindowMinutes,"onUpdate:modelValue":m[2]||=e=>p(z).loginIpFailWindowMinutes=e,min:1,max:1440,step:1,class:`!w-28`,"controls-position":`right`},null,8,[`modelValue`]),m[10]||=c(`span`,null,`分钟`,-1)])]),_:1}),f(x,{label:`锁定时长`},{default:y(()=>[c(`div`,de,[f(S,{modelValue:p(z).loginIpLockMinutes,"onUpdate:modelValue":m[3]||=e=>p(z).loginIpLockMinutes=e,min:1,max:10080,step:1,class:`!w-28`,"controls-position":`right`},null,8,[`modelValue`]),m[11]||=c(`span`,null,`分钟`,-1)]),c(`div`,fe,[m[12]||=u(` 注意：检测到你当前 IP 为：`,-1),c(`code`,pe,g(p(B)),1),m[13]||=u(`。如你使用了反向代理，请确保已正确透传真实客户端 IP，否则此功能可能只会统计到反代服务器地址。 `,-1)])]),_:1})],64)):b(``,!0)]),_:1},8,[`icon`])),R.section===`login`?b(``,!0):(v(),d(C,{key:1,title:`客户端真实 IP 识别`,description:`配置 CDN/反向代理透传的真实客户端 IP 请求头，影响审计日志、限流、IP 黑名单等所有依赖客户端 IP 的功能。`,icon:p(te),"icon-class":`bg-sky-50 text-sky-600 dark:bg-sky-500/15 dark:text-sky-300`},{default:y(()=>[f(x,{label:`自定义 IP 请求头`},{default:y(()=>[f(w,{modelValue:p(z).customClientIpHeaders,"onUpdate:modelValue":m[4]||=e=>p(z).customClientIpHeaders=e,type:`textarea`,rows:5,placeholder:`CF-Connecting-IP
EO-Connecting-IP
True-Client-IP`},null,8,[`modelValue`]),c(`div`,me,[m[16]||=u(` 每行一个请求头，按顺序匹配，命中第一个非内网 IP 后即停止。常见 CDN 厂商: `,-1),m[17]||=c(`ul`,{class:`ml-4 list-disc`},[c(`li`,null,[c(`code`,{class:`code`},`CF-Connecting-IP`),u(` — Cloudflare`)]),c(`li`,null,[c(`code`,{class:`code`},`EO-Connecting-IP`),u(` — 腾讯 EdgeOne`)]),c(`li`,null,[c(`code`,{class:`code`},`True-Client-IP`),u(` — Akamai / Cloudflare Enterprise`)])],-1),m[18]||=c(`div`,{class:`mt-1`},` 自定义请求头优先于内置的 X-Forwarded-For、X-Real-IP 等通用头匹配。留空时使用上述默认列表。 `,-1),c(`div`,he,[m[14]||=u(` 注意：检测到你当前 IP 为：`,-1),c(`code`,ge,g(p(B)),1),m[15]||=u(`。 `,-1)])])]),_:1})]),_:1},8,[`icon`])),R.section===`login`?b(``,!0):(v(),d(C,{key:2,title:`访问黑名单`,description:`按 IP 地址或 UserAgent 屏蔽特定访问来源。`,icon:p(ie),"icon-class":`bg-rose-50 text-rose-600 dark:bg-rose-500/15 dark:text-rose-300`},{default:y(()=>[f(x,{label:`IP 黑名单`},{default:y(()=>[f(w,{modelValue:p(z).accessIpBlocklist,"onUpdate:modelValue":m[5]||=e=>p(z).accessIpBlocklist=e,type:`textarea`,rows:6,onInput:p(X)},null,8,[`modelValue`,`onInput`]),c(`div`,_e,[m[27]||=u(` 每行输入一个 IP 或 IP 段，如： `,-1),m[28]||=c(`ul`,{class:`ml-4 list-disc`},[c(`li`,null,`127.0.0.1`),c(`li`,null,`192.168.0.0/24`),c(`li`,null,`支持 IPv6 地址和网段。`)],-1),c(`div`,ve,[m[21]||=u(` 注意：检测到你当前 ip 为：`,-1),c(`code`,T,g(p(B)),1),m[22]||=u(`，别把自己 ip 配置进去（ `,-1),f(Z,{placement:`top-start`,title:`提示`,width:300,trigger:`hover`},{reference:y(()=>[c(`span`,null,[m[19]||=u(`这里显示的不是你的 IP 地址？`,-1),f(L,{class:`inline h-4 w-4 align-sub`})])]),default:y(()=>[...m[20]||=[u(` 注意：如果你使用了反向代理，而不是直接访问的 ZFile 端口, 那你需要在反向代理处添加以下任意请求头为用户真实 IP："X-Forwarded-For", "X-Real-IP", "Proxy-Client-IP", "WL-Proxy-Client-IP", "HTTP_CLIENT_IP", "HTTP_X_FORWARDED_FOR"，不然不论谁访问 ZFile 都只能获取到反代服务器的 IP，同服务器一般是获取到 127.0.0.1 或 localhost, 这样此功能就无法正常使用!!! `,-1)]]),_:1}),m[23]||=u(` ）。 `,-1)]),c(`div`,E,[m[26]||=c(`div`,null,`填写黑名单规则并输入要测试的 IP 后，会自动显示匹配结果。`,-1),f(w,{modelValue:p(K),"onUpdate:modelValue":m[6]||=e=>_(K)?K.value=e:null,onInput:p(X)},{suffix:y(()=>[p(K)&&p(J)&&p(q)!==null?(v(),d(Q,{key:0,class:`w-4 text-red-500`})):p(K)&&p(J)&&p(q)===null?(v(),d($,{key:1,class:`w-4 text-green-500`})):b(``,!0)]),_:1},8,[`modelValue`,`onInput`]),p(K)?(v(),s(`div`,D,[p(Oe)?p(Y)?(v(),s(`div`,k,`正在校验规则...`)):p(q)?(v(),s(`div`,A,[m[24]||=u(` 输入的测试 IP 匹配了规则: `,-1),c(`code`,j,g(p(q)),1),m[25]||=u(`，会被禁止访问 ZFile。 `,-1)])):p(J)?(v(),s(`div`,M,` 输入的测试 IP 未匹配任何规则，可以正常访问 ZFile。 `)):b(``,!0):(v(),s(`div`,O,` 请先填写 IP 黑名单规则后再测试。 `))])):b(``,!0)])])]),_:1}),f(x,{label:`UA 黑名单`},{default:y(()=>[f(w,{modelValue:p(z).accessUaBlocklist,"onUpdate:modelValue":m[7]||=e=>p(z).accessUaBlocklist=e,type:`textarea`,rows:6,onInput:p(G)},null,8,[`modelValue`,`onInput`]),c(`div`,N,[m[34]||=u(` 每行输入一个 UserAgent，支持 * 通配符，如： `,-1),m[35]||=c(`ul`,{class:`ml-4 list-disc`},[c(`li`,null,`Mozilla/5.0*`),c(`li`,null,` Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 `)],-1),c(`div`,P,[m[29]||=u(` 注意：当前浏览器 UserAgent 为：`,-1),c(`code`,F,g(p(De)),1),m[30]||=u(`，别把自己 ua 填到黑名单去。 `,-1)]),c(`div`,ye,[m[33]||=c(`div`,null,`填写黑名单规则并输入要测试的 UserAgent 后，会自动显示匹配结果。`,-1),f(w,{modelValue:p(V),"onUpdate:modelValue":m[8]||=e=>_(V)?V.value=e:null,onInput:p(G)},{suffix:y(()=>[p(V)&&p(U)&&p(H)!=null?(v(),d(Q,{key:0,class:`w-4 text-red-500`})):p(V)&&p(U)&&p(H)===null?(v(),d($,{key:1,class:`w-4 text-green-500`})):b(``,!0)]),_:1},8,[`modelValue`,`onInput`]),p(V)?(v(),s(`div`,be,[p(ke)?p(W)?(v(),s(`div`,xe,`正在校验规则...`)):p(H)?(v(),s(`div`,Se,[m[31]||=u(` 输入的测试 UserAgent 匹配了规则: `,-1),c(`code`,Ce,g(p(H)),1),m[32]||=u(`，会被禁止访问 ZFile。 `,-1)])):p(U)?(v(),s(`div`,we,` 输入的测试 UserAgent 未匹配任何规则，可以正常访问 ZFile。 `)):b(``,!0):(v(),s(`div`,I,` 请先填写 UA 黑名单规则后再测试。 `))])):b(``,!0)])])]),_:1}),f(x,{label:`屏蔽迅雷`},{default:y(()=>[c(`div`,Te,[f(je,{type:`primary`,plain:``,onClick:Ae},{default:y(()=>[...m[36]||=[u(`复制规则`,-1)]]),_:1}),c(`div`,Ee,[m[37]||=u(` 点击按钮即可复制到剪贴板，然后粘贴到 UA 黑名单中保存即可。 `,-1),f(Me,{content:`不保证该规则一直有效，迅雷的下载服务可能会更改 UA。`,placement:`top`},{default:y(()=>[f(L,{class:`inline h-4 w-4 cursor-pointer align-text-bottom text-placeholder`})]),_:1})])])]),_:1})]),_:1},8,[`icon`]))])}}};export{R as t};