File: /www/server/panel/BTPanel/static/js/index532.js
import{C as ce,bC as _e,bD as ye,bE as ee,p as ge,bF as we,bG as se,bH as Se,bI as be,bJ as ve,bK as xe}from"./firewall.js?v=1777008528";import{c as Ce,k as w,I as te,M as I,j as Ve,e as O,_ as M,du as ke,w as j,Q as Pe,cO as he,K as ne,cZ as U,e8 as Le}from"./utils-lib.js?v=1777008528";import{c as A,H as q,r as v,w as Q,o as ae,I as le,j as x,k as B,e as o,v as a,J as re,p as s,C as z,q as d,L as G,s as Z,x as h,R as $,y as He,z as W,ad as X,ap as ie,ab as Y,V as J,F as Ke,B as Re,Q as ue,am as de,an as me,N as Ee,M as Ie}from"./base-lib.js?v=1777008528";import{p as oe}from"./index3.js?v=1777008528";import{i as $e}from"./useMethod7.js?v=1777008528";import{g as pe}from"./useStore8.js?v=1777008528";import{_ as fe}from"./index116.js?v=1777008528";import"./__commonjsHelpers__.js?v=1777008528";import"./index119.js?v=1777008528";const Be={class:"bt-line mt-2"},Fe={class:"bt-line mt-2"},De=A({__name:"index",setup(C){var L,H;const{refs:{sshInfo:f}}=pe(),{adHideInfo:g}=Ce(),m=q({sshBlastStatus:!!((H=(L=f.value)==null?void 0:L.fail2ban)!=null&&H.status)}),p=v(),b=v(!1),l=v({}),r=async n=>{m.sshBlastStatus=!n;const e=await w({request:te({sName:"fail2ban"})});if(!e.data.setup){oe({name:e.data.name,type:"i",pluginInfo:e.data}),I.warn("请先安装防暴破插件");return}await w({loading:"正在"+(n?"开启":"关闭")+"防暴破,请稍后...",request:ce({act:n}),message:!0}),m.sshBlastStatus=n,$e()},c=async n=>{try{const{data:e}=await w({request:te({sName:"fail2ban"})});e.setup?n&&n():(oe({name:e.name,type:"i",pluginInfo:e}),I.warn("请先安装防暴破插件"))}catch(e){}},V=async()=>{c(()=>O({title:"配置SSH防暴破",area:40,component:()=>M(()=>import("./anti-blast-view.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),showFooter:!0}))},F=async()=>{c(()=>O({title:"防暴破日志",area:60,compData:{type:"AntiBlast",requestFn:()=>ye()},component:()=>M(()=>import("./index323.js?v=1777008528"),__vite__mapDeps([]),import.meta.url)}))},K=()=>{Ve.push({name:"fixed"})},R=async()=>{try{b.value=!0;const{data:n}=await _e();if(l.value=n,n.status){l.value.type=!0;const e={mail:"邮件",sms:"短信",dingding:"钉钉",wx_account:"微信公众号",feishu:"飞书",weixin:"企业微信",webhook:"自定义通道"};l.value.text=l.value.channels.map(t=>e[t]).join("、")+"已配置"}else l.value={type:!1,text:"告警通知未配置"};return n}catch(n){}finally{b.value=!1}},E=async()=>{O({title:"SSH登录告警",area:104,compData:{alertStatus:p.value,refreshFn:R},component:()=>M(()=>import("./login-alert-setting.js?v=1777008528"),__vite__mapDeps([]),import.meta.url)})};return Q(()=>f.value,()=>{var n,e;m.sshBlastStatus=!!((e=(n=f.value)==null?void 0:n.fail2ban)!=null&&e.status)}),ae(()=>{R()}),(n,e)=>{const t=W,i=X,k=ie,S=Y,P=le("bt-loading");return x(),B("div",null,[o(S,{model:s(m),onSubmit:e[6]||(e[6]=$(()=>{},["prevent"]))},{default:a(()=>[re((x(),z(i,{class:"flex-col",label:"SSH登录告警"},{default:a(()=>[d("div",Be,[d("span",{onClick:e[0]||(e[0]=u=>E()),class:G(["!text-small cursor-pointer","text-".concat(s(l).type?"primary":"warning")])},Z(s(l).text),3),o(t,{type:"primary",class:"!ml-4",onClick:e[1]||(e[1]=u=>E())},{default:a(()=>[...e[7]||(e[7]=[h(" 设置登录告警 ",-1)])]),_:1}),e[8]||(e[8]=d("span",{class:"text-tertiary ml-4 text-small"}," 推荐使用密钥登录,关闭密码,安全性更高 ",-1))])]),_:1})),[[P,s(b)]]),o(i,{class:"flex-col",label:"SSH安全防护",onClick:e[5]||(e[5]=$(()=>{},["prevent"]))},{default:a(()=>[d("div",Fe,[o(k,{modelValue:s(m).sshBlastStatus,"onUpdate:modelValue":e[2]||(e[2]=u=>s(m).sshBlastStatus=u),width:36,onChange:r},null,8,["modelValue"]),o(t,{onClick:e[3]||(e[3]=u=>V()),type:"primary",class:"!ml-8"},{default:a(()=>[...e[9]||(e[9]=[h(" 配置 ",-1)])]),_:1}),o(t,{onClick:e[4]||(e[4]=u=>F())},{default:a(()=>[...e[10]||(e[10]=[h("日志",-1)])]),_:1}),e[11]||(e[11]=d("span",{class:"text-tertiary ml-4 text-small"}," 结合fail2ban服务自动阻止恶意IP地址的攻击、暴力破解等行为;首次安装后,请手动刷新页面 ",-1))])]),_:1}),s(g).firewallSshReinforce?He("",!0):(x(),z(i,{key:0,class:"flex-col"},{default:a(()=>[d("span",{class:"text-small text-tertiary"},[e[12]||(e[12]=h(" 更多SSH安全设置请使用系统加固模块 ",-1)),d("span",{class:"bt-link",onClick:K},">> 系统加固")])]),_:1}))]),_:1},8,["model"])])}}}),qe={class:"bt-line mt-2"},Ae={class:"bt-line mt-2"},Ue=A({__name:"root-setting",props:{data:{default:()=>({})}},emits:["refresh"],setup(C,{emit:f}){const g=C,m=f,p=J(g.data),b=v(),l=v("empty"),r=q({rootLogin:"",rootPwd:"",rootKey:""}),c=J(),V=v(!1),F=q({rootPwd:[{required:!1},{validator:(e,t,i)=>{if(!t){l.value="empty",i();return}const k=8,S=/[a-z]/.test(t),P=/[A-Z]/.test(t),u=/[0-9]/.test(t);t.length<k?(l.value="weak",i(new Error("密码长度至少".concat(k,"位")))):S?P?u?(l.value="strong",i()):(l.value="medium",i(new Error("密码必须包含至少一个数字"))):(l.value="weak",i(new Error("密码必须包含至少一个大写字母"))):(l.value="weak",i(new Error("密码必须包含至少一个小写字母")))},trigger:["blur","change"]}]}),K=async e=>{var i;if(((i=p.value)==null?void 0:i.pubkey)!=="yes")return I.error("请先开启SSH密钥登录,再"+(e?"查看":"下载")+"密钥");const t=await w({loading:"正在获取密钥信息,请稍后...",request:ee()});e&&t.status?(r.rootKey=t.msg,V.value=!0):window.open("/ssh_security?action=download_key","_blank","noopener,noreferrer")},R=async()=>{if(!r.rootPwd)return I.error("请输入新密码");await j({title:"提示",content:"重置root密码后,之前的密码将失效,是否继续操作?",icon:"warning-filled"}),await w({loading:"正在重置root密码,请稍后...",request:ge({username:"root",password:r.rootPwd}),message:!0}),m("refresh")},E=async e=>{await w({loading:"正在设置root登录,请稍后...",request:we({p_type:e}),message:!0}),m("refresh")},L=e=>{Pe({value:e})},H=()=>{window.open("/ssh_security?action=download_key","_blank","noopener,noreferrer")},n=async()=>{var i;let e=(i=p.value)==null?void 0:i.pubkey;await w({loading:"正在重新生成SSH登录密钥,请稍后...",request:se({ssh:e,type:p.value.key_type}),message:!0});const t=await w({loading:"正在获取密钥信息,请稍后...",request:ee()});if(!t.msg)return I.msg({type:"warning",message:"请重新开启SSH密钥登录再查看密钥!"});r.rootKey=t.msg,m("refresh")};return Q(()=>g.data,e=>{c.value=Object.entries((e==null?void 0:e.root_login_types)||[]),r.rootLogin=e==null?void 0:e.root_login_type,p.value=e},{immediate:!0}),(e,t)=>{const i=de,k=me,S=X,P=fe,u=W,D=Y,N=he,_=ne;return x(),B("div",null,[o(D,{ref_key:"rootFormRef",ref:b,model:s(r),rules:s(F),onSubmit:t[5]||(t[5]=$(()=>{},["prevent"]))},{default:a(()=>[o(S,{class:"flex-col",label:"Root密码登录设置",prop:"rootLogin"},{default:a(()=>[o(k,{modelValue:s(r).rootLogin,"onUpdate:modelValue":t[0]||(t[0]=y=>s(r).rootLogin=y),class:"!w-[26rem] mt-2",onChange:E},{default:a(()=>[(x(!0),B(Ke,null,Re(s(c),y=>(x(),z(i,{key:y[0],label:y[1],value:y[0]},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(S,{class:G(["root-pwd flex-col",s(l)]),label:"Root密码",prop:"rootPwd"},{default:a(()=>[d("div",qe,[o(P,{modelValue:s(r).rootPwd,"onUpdate:modelValue":t[1]||(t[1]=y=>s(r).rootPwd=y),icon:"el-refresh",placeholder:"请输入新密码",onIconClick:t[2]||(t[2]=()=>s(r).rootPwd=s(ke)(16)),width:"28rem"},null,8,["modelValue"]),o(u,{disabled:s(l)!=="strong",type:"primary",class:"!ml-4",onClick:R},{default:a(()=>[...t[9]||(t[9]=[h(" 重置 ",-1)])]),_:1},8,["disabled"]),t[10]||(t[10]=d("span",{class:"text-tertiary ml-4 text-small"}," 建议使用复杂度高的密码,修改后请及时保存,刷新页面会清空密码框 ",-1))]),d("span",{class:G(["pwd-status mt-2",s(l)])},Z(s(l)==="empty"?"修改密码会进行弱密码检测":s(l)==="weak"?"弱密码":s(l)==="medium"?"中等强度":"强密码"),3)]),_:1},8,["class"]),o(S,{class:"flex-col !mb-4",label:"Root密钥"},{default:a(()=>[d("div",Ae,[o(u,{type:"primary",onClick:t[3]||(t[3]=y=>K(!0))},{default:a(()=>[...t[11]||(t[11]=[h(" 查看密钥 ",-1)])]),_:1}),o(u,{onClick:t[4]||(t[4]=y=>K(!1))},{default:a(()=>[...t[12]||(t[12]=[h(" 下载 ",-1)])]),_:1}),t[13]||(t[13]=d("span",{class:"text-tertiary ml-4 text-small"}," 推荐使用密钥登录,关闭密码,安全性更高 ",-1))])]),_:1})]),_:1},8,["model","rules"]),o(_,{title:"SSH密钥登录",modelValue:s(V),"onUpdate:modelValue":t[8]||(t[8]=y=>ue(V)?V.value=y:null),area:42},{default:a(()=>[o(D,{ref:"openSshKeyForm",model:s(r),class:"p-[2rem]","label-width":"5rem"},{default:a(()=>[o(S,null,{default:a(()=>[o(N,{modelValue:s(r).rootKey,"onUpdate:modelValue":t[6]||(t[6]=y=>s(r).rootKey=y),class:"sshKey",type:"textarea",readOnly:"",rows:12,width:"36rem"},null,8,["modelValue"])]),_:1}),o(S,null,{default:a(()=>[o(u,{type:"primary",class:"copySshPaw",onClick:t[7]||(t[7]=y=>L(s(r).rootKey)),textContent:"复制"}),o(u,{type:"primary",class:"copy",onClick:H,textContent:"下载"}),o(u,{type:"default",class:"copy",onClick:n,textContent:"重新生成"})]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),Ne=U(Ue,[["__scopeId","data-v-c962e2ab"]]),Oe={class:"ssh-setting-wrapper"},Me={class:"bt-line"},Te={class:"bt-line"},je={class:"bt-line"},ze={class:"p-20px"},Ge=A({__name:"ssh-setting",props:{data:{default:()=>({})}},emits:["refresh"],setup(C,{emit:f}){var L,H;const g=C,m=f,{refs:{sshInfo:p}}=pe(),b=J(g==null?void 0:g.data),l=v(!1),r=q({isPwdLogin:((L=b.value)==null?void 0:L.password)==="yes",isKeyLogin:((H=b.value)==null?void 0:H.pubkey)==="yes"}),c=q({ssh:"yes",type:"ed25519"}),V=async n=>{try{await j({content:"确定要".concat(n?"开启":"关闭","SSH密码登录吗?"),title:"提示"})}catch(e){r.isPwdLogin=!n;return}await w({loading:"正在"+(n?"开启":"关闭")+"SSH密码登录,请稍后...",request:Se(!!n),message:!0})},F=async()=>{await w({loading:"正在处理,请稍候...",request:se(c),message:!0}),l.value=!1,c.ssh="yes",c.type="ed25519",m("refresh")},K=async n=>{if(n)r.isKeyLogin=!n,l.value=!0;else{try{await j({content:"确定要".concat(n?"开启":"关闭","SSH密钥登录吗?"),title:"提示"})}catch(e){r.isKeyLogin=!0;return}await w({loading:"正在关闭SSH密钥登录,请稍后...",request:be(),message:!0}),m("refresh")}},R=async()=>{if(!Le(p.value.port)){I.error("端口格式错误,可用范围:1-65535");return}await w({loading:"正在保存SSH端口,请稍后...",request:ve(Number(p.value.port)),message:!0}),m("refresh")},E=()=>{const t=Math.floor(Math.random()*64536)+1e3;p.value.port=t.toString()};return Q(()=>g.data,n=>{n&&(b.value=n),r.isPwdLogin=(n==null?void 0:n.password)==="yes",r.isKeyLogin=(n==null?void 0:n.pubkey)==="yes"},{immediate:!0}),(n,e)=>{const t=ie,i=X,k=fe,S=W,P=Y,u=de,D=me,N=ne;return x(),B("div",Oe,[o(P,{ref:"sshFormRef",model:s(r),onSubmit:e[7]||(e[7]=$(()=>{},["prevent"])),"label-position":"top"},{default:a(()=>[o(i,{class:"flex-col",label:"SSH密码登录",onClick:e[1]||(e[1]=$(()=>{},["prevent"]))},{default:a(()=>[d("div",Me,[o(t,{modelValue:s(r).isPwdLogin,"onUpdate:modelValue":e[0]||(e[0]=_=>s(r).isPwdLogin=_),width:36,onChange:V},null,8,["modelValue"]),e[11]||(e[11]=d("span",{class:"switch-text ml-4"},"允许使用密码进行SSH登录",-1))])]),_:1}),o(i,{class:"flex-col",label:"SSH密钥登录",onClick:e[3]||(e[3]=$(()=>{},["prevent"]))},{default:a(()=>[d("div",Te,[o(t,{modelValue:s(r).isKeyLogin,"onUpdate:modelValue":e[2]||(e[2]=_=>s(r).isKeyLogin=_),width:36,onChange:K},null,8,["modelValue"]),e[12]||(e[12]=d("span",{class:"switch-text ml-4"},"允许使用密钥进行SSH登录",-1))])]),_:1}),o(i,{class:"flex-col !mb-4",label:"SSH端口"},{default:a(()=>[d("div",je,[o(k,{modelValue:s(p).port,"onUpdate:modelValue":e[4]||(e[4]=_=>s(p).port=_),width:"20rem",class:"!max-w-[20rem]",placeholder:"请输入SSH端口",icon:"el-refresh",onIconClick:e[5]||(e[5]=()=>E())},null,8,["modelValue"]),o(S,{type:"primary",class:"!ml-4",onClick:e[6]||(e[6]=_=>R())},{default:a(()=>[...e[13]||(e[13]=[h("保存",-1)])]),_:1}),e[14]||(e[14]=d("span",{class:"text-tertiary ml-4 text-small"},"当前SSH协议所使用的的端口,默认为22",-1))])]),_:1})]),_:1},8,["model"]),o(N,{title:"开启SSH密钥登录",modelValue:s(l),"onUpdate:modelValue":e[10]||(e[10]=_=>ue(l)?l.value=_:null),area:40,onConfirm:F,showFooter:""},{default:a(()=>[d("div",ze,[o(P,{"label-position":"right",model:s(c)},{default:a(()=>[o(i,{label:"SSH密码登录"},{default:a(()=>[o(D,{modelValue:s(c).ssh,"onUpdate:modelValue":e[8]||(e[8]=_=>s(c).ssh=_),class:"!w-[20rem]"},{default:a(()=>[o(u,{label:"开启",value:"yes"}),o(u,{label:"关闭",value:"no"})]),_:1},8,["modelValue"])]),_:1}),o(i,{label:"密钥加密方式"},{default:a(()=>[o(D,{modelValue:s(c).type,"onUpdate:modelValue":e[9]||(e[9]=_=>s(c).type=_),class:"!w-[20rem]"},{default:a(()=>[o(u,{label:"ED25519(推荐)",value:"ed25519"}),o(u,{label:"ECDSA",value:"ecdsa"}),o(u,{label:"RSA",value:"rsa"}),o(u,{label:"DSA",value:"dsa"})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},8,["modelValue"])])}}}),Je=U(Ge,[["__scopeId","data-v-9f2d586b"]]),Qe={class:"title"},Ze={class:"content"},We=A({__name:"index",props:{title:{},style:{}},setup(C){return(f,g)=>(x(),B("div",{class:"firewall-section-ui",style:Ie(C.style)},[d("div",Qe,Z(C.title),1),d("div",Ze,[Ee(f.$slots,"default",{},void 0,!0)])],4))}}),T=U(We,[["__scopeId","data-v-5281641d"]]),Xe=A({__name:"index",setup(C){const f=v(),g=v(!0),m=async()=>{const p=await w({loading:g,request:xe()});f.value=p.data};return ae(()=>{m()}),(p,b)=>{const l=le("bt-loading");return re((x(),B("div",null,[o(T,{title:"SSH基础设置"},{default:a(()=>[o(Je,{class:"top-label-title",data:s(f),onRefresh:m},null,8,["data"])]),_:1}),o(T,{title:"Root设置"},{default:a(()=>[o(Ne,{data:s(f),onRefresh:m},null,8,["data"])]),_:1}),o(T,{title:"安全功能"},{default:a(()=>[o(De,{data:s(f),onRefresh:m},null,8,["data"])]),_:1})])),[[l,s(g)],[l,"正在获取配置信息,请稍后...","title"]])}}}),it=U(Xe,[["__scopeId","data-v-5fbdc76c"]]);export{it as default};
function __vite__mapDeps(indexes) {
if (!__vite__mapDeps.viteFileDeps) {
__vite__mapDeps.viteFileDeps = []
}
return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}