HEX
Server: nginx/1.28.3
System: Linux ip-172-31-12-242 6.17.0-1007-aws #7~24.04.1-Ubuntu SMP Thu Jan 22 21:04:49 UTC 2026 x86_64
User: root (0)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/server/panel/BTPanel/static/js/index71.js
import{M as N,kF as Dt,kG as $t,J as P,cZ as Te,h2 as Le,_ as b,h4 as St,e as O,w as I,kH as Pt,kI as Ot,kJ as Mt,f as De,kK as Rt,m as Y,c7 as At,kL as Vt,kM as Bt,kN as qt,kO as Ut,k as L,kP as Ke,kQ as Nt,d3 as $e,kR as jt,kS as Ht,kT as zt,b as ke,kU as Gt,kV as Wt,kW as Kt,cU as Je,h1 as Jt,kX as Zt,kY as Qt,kZ as Ze,k_ as Yt,da as Qe,cT as Ye,db as Xt,cP as Xe,k$ as ea,l0 as ta,l1 as aa,l2 as sa,W as et,R as na,l3 as tt,l4 as oa,l5 as la,l6 as ua,n as ra,hZ as ia,l7 as ca,l8 as da,l9 as pa,la as at,j as ma,lb as _a,cR as va,a as fa}from"./utils-lib.js?v=1777008528";import{aJ as A,r as f,aI as E,c as C,j as g,k as x,q as d,s as we,N as ga,a8 as V,C as $,v as i,e as o,x as m,p as l,Q as J,ak as ya,aj as ba,T as Se,z as B,H as q,g as ha,U as ka,L as wa,y as ne,F as Ea,ap as me,o as Ca,I as st,J as Pe,Y as xa,K as Ia,ad as Fa,ab as Ta,bi as nt,a9 as La,aW as Da}from"./base-lib.js?v=1777008528";import{a as Z,u as Q,b as Oe,o as $a,e as Sa}from"./useMethod10.js?v=1777008528";import{getCliVersion as Pa}from"./site.js?v=1777008528";import{N as Oa,g as X,b as ot,v as lt,e as ut,w as Ma}from"./index3.js?v=1777008528";import{_ as _e}from"./index118.js?v=1777008528";import{r as Ra}from"./useMethod7.js?v=1777008528";import{m as be,i as Aa}from"./useMethod11.js?v=1777008528";const Ee=A("MAIL_SETTING_TIME",()=>{const e=f(0),t=f(null);return{type:e,days:t,reset:()=>{e.value=0,t.value=null}}}),{type:oe,days:R}=E(Ee()),Va=async()=>{if(!R.value&&R.value!==0&&oe.value===1){N.error("请输入保存时间");return}const{data:e}=await Dt({save_day:oe.value===0?0:R.value});N.request(e),rt()},rt=async()=>{const{data:e}=await $t();P(e)&&(e.data===0||e.data===null?(oe.value=0,R.value=null):(oe.value=1,R.value=e.data))},Ba=e=>{const t=e.replace(/[^\d]/g,"");t===""||t==="0"?R.value="":R.value=t},qa={class:"setting-card"},Ua={class:"setting-title"},Na=C({__name:"setting-card",props:{title:{default:""}},setup(e){return(t,a)=>(g(),x("div",qa,[d("div",Ua,we(e.title),1),ga(t.$slots,"default",{},void 0,!0)]))}}),ee=Te(Na,[["__scopeId","data-v-125476a8"]]),ja={class:"flex items-center"},Ha={class:"w-250px"},za=C({__name:"index",setup(e){const{type:t,days:a}=E(Ee()),{reset:u}=Ee();return Le().install&&rt(),V(()=>{u()}),(n,s)=>{const r=ya,c=ba,y=Se,h=B;return g(),$(ee,{title:"邮件保存时间"},{default:i(()=>[d("div",ja,[o(c,{modelValue:l(t),"onUpdate:modelValue":s[0]||(s[0]=_=>J(t)?t.value=_:null)},{default:i(()=>[o(r,{value:0},{default:i(()=>[...s[2]||(s[2]=[m("永久",-1)])]),_:1}),o(r,{class:"ml-24px",value:1},{default:i(()=>[...s[3]||(s[3]=[m("自定义",-1)])]),_:1})]),_:1},8,["modelValue"]),d("div",Ha,[o(y,{modelValue:l(a),"onUpdate:modelValue":s[1]||(s[1]=_=>J(a)?a.value=_:null),class:"flex-1 ml-16px",type:"number",min:1,max:999999,onInput:l(Ba),disabled:l(t)===0,controls:!1,placeholder:"请输入保存时间"},{append:i(()=>[...s[4]||(s[4]=[m("天",-1)])]),_:1},8,["modelValue","onInput","disabled"])]),o(h,{class:"ml-24px",type:"primary",ghost:"",onClick:l(Va)},{default:i(()=>[...s[5]||(s[5]=[m(" 保存 ",-1)])]),_:1},8,["onClick"])])]),_:1})}}}),le=A("MAIL_SETTING_WEB",()=>{const e=q({id:0,site_name:"",status:!1,ssl_status:!1}),t=ha(()=>"".concat(e.ssl_status?"https":"http","://").concat(e.site_name)),a=Z("安装 WebMail",{onRefresh:async()=>{const{getInfo:ye}=await b(()=>Promise.resolve().then(()=>Ve),void 0,import.meta.url);ye()}}),u=Z("添加已部署的网络邮件",{onRefresh:async()=>{const{getInfo:ye}=await b(()=>Promise.resolve().then(()=>Ve),void 0,import.meta.url);ye()}}),p=f(null),n=q({domain:"",php_version:null}),s={domain:{trigger:"change",validator:()=>n.domain.trim()===""?new Error("请输入域名"):!0},php_version:{trigger:"change",validator:()=>n.php_version===null?new Error("请选择PHP版本"):!0}},r=f([]),{loading:c,setLoading:y}=Q(),h=()=>{e.id=0,e.site_name="",e.status=!1,e.ssl_status=!1},_=()=>{n.domain="",n.php_version=null},w=f(null),k=q({id:0,domain:null,path:""}),It={domain:{trigger:"change",validator:()=>k.domain===null?new Error("请选择站点"):!0}},Ft=f([]),{loading:Tt,setLoading:Lt}=Q();return{info:e,url:t,installModal:a,configModal:u,reset:h,resetInstallForm:_,installForm:n,installRules:s,phpOptions:r,installFormRef:p,installLoading:c,installSetLoading:y,configForm:k,configRules:It,configFormRef:w,configLoading:Tt,configSetLoading:Lt,domainOptions:Ft,resetConfigForm:()=>{k.id=0,k.domain=null,k.path=""}}}),{info:M,installModal:U,configModal:K,phpOptions:Ga,installForm:Ce,installFormRef:Wa,configForm:S,configFormRef:Ka,domainOptions:it}=E(le()),{installSetLoading:Re,configSetLoading:Ae}=le(),Me=De(),Ja=()=>{location.href="/site/php"},ve=async()=>{const{data:e}=await St();P(e)&&(M.value.id=e.id,M.value.status=e.status,M.value.site_name=e.site_name,M.value.ssl_status=e.ssl_status)},ct=()=>{U.value.data.onRefresh=ve,O({title:U.value.title,area:48,showFooter:!0,compData:U.value.data,confirmText:"安装",component:()=>b(()=>import("./install.js?v=1777008528"),__vite__mapDeps([]),import.meta.url)})},dt=()=>{const e=f(!1);I({title:"卸载 WebMail",width:70,content:()=>o("div",null,[o("div",{class:"mb-16px"},[m("卸载WebMail后,【"),M.value.site_name,m("】已从网站列表中删除,网站无法访问,是否继续?")]),o(ka,{checked:e.value,onChange:t=>{e.value=t}},{default:()=>[o("div",{class:"text-desc leading-[1.4]"},[m("FTP、数据库、文档根目录在选择后将被完全删除,请谨慎!")])]})]),onConfirm:async()=>{const{data:t}=await Pt({id:M.value.id,site_name:M.value.site_name,force:e.value?1:0});Me.request(t),ve()}})},pt=()=>{O({title:K.value.title,area:48,showFooter:!0,compData:K.value.data,component:()=>b(()=>import("./config3.js?v=1777008528"),__vite__mapDeps([]),import.meta.url)})},mt=async()=>{const{data:e}=await Pa();P(e)&&(Ga.value=e.versions.reverse().map(t=>({label:t.name,value:t.version})),Ce.value.php_version=e.versions[0].version)},Za=async()=>{try{Re(!0),await Promise.all([mt()])}finally{Re(!1)}},Qa=async e=>{var a;await((a=Wa.value)==null?void 0:a.validate());const{data:t}=await Ot({site_name:Ce.value.domain||"",php_version:Ce.value.php_version||""});Me.request(t),t.status&&(U.value.data.onRefresh&&typeof U.value.data.onRefresh=="function"&&U.value.data.onRefresh(),e())},_t=async()=>{var t;const{data:e}=await Rt();Y(e.data)&&(it.value=e.data.map(a=>({label:a.name,value:a.name,data:a})),(t=e.data)!=null&&t.length&&(S.value.domain=e.data[0].name,S.value.path=e.data[0].path,S.value.id=e.data[0].id))},Ya=e=>{const t=it.value.find(u=>u.value===e),{data:a}=t;P(a)&&(S.value.id=a.id,S.value.path=a.path)},Xa=async()=>{try{Ae(!0),await Promise.all([_t()])}finally{Ae(!1)}},es=async e=>{var a;await((a=Ka.value)==null?void 0:a.validate());const{data:t}=await Mt({id:S.value.id,site_name:S.value.domain||"",path:S.value.path});Me.request(t),t.status&&(e(),K.value.data.onRefresh&&typeof K.value.data.onRefresh=="function"&&K.value.data.onRefresh())},Ve=Object.freeze(Object.defineProperty({__proto__:null,configInit:Xa,configOnConfirm:es,getDomainOptions:_t,getInfo:ve,getPhpOptions:mt,goSite:Ja,installInit:Za,installOnConfirm:Qa,onInstall:ct,onShowConfig:pt,onUninstall:dt,onUpdateDomain:Ya},Symbol.toStringTag,{value:"Module"})),ts={class:"flex items-center"},as={class:"flex items-center mr-32px text-base"},ss={key:0,class:"flex items-center mr-24px text-base"},ns=C({__name:"index",setup(e){const{info:t,url:a}=E(le()),{reset:u}=le();return ve(),V(()=>{u()}),(p,n)=>{const s=At,r=B;return g(),$(ee,{title:"WebMail"},{default:i(()=>[d("div",ts,[d("div",as,[n[0]||(n[0]=d("span",{class:"mr-10px"},"安装状态:",-1)),d("span",{class:wa(l(t).status?"text-primary":"text-dangerDark")},we(l(t).status?"已安装":"未安装"),3)]),l(t).status?(g(),x("div",ss,[n[1]||(n[1]=d("span",{class:"mr-10px"},"URL:",-1)),o(s,{href:l(a),target:"_blank"},{default:i(()=>[m(we(l(a)),1)]),_:1},8,["href"])])):ne("",!0),l(t).status?(g(),$(r,{key:1,onClick:l(dt)},{default:i(()=>[...n[2]||(n[2]=[m(" 卸载 ",-1)])]),_:1},8,["onClick"])):(g(),x(Ea,{key:2},[o(r,{type:"primary",ghost:"",onClick:l(ct)},{default:i(()=>[...n[3]||(n[3]=[m(" 安装 ",-1)])]),_:1},8,["onClick"]),o(r,{class:"ml-10px",onClick:l(pt)},{default:i(()=>[...n[4]||(n[4]=[d("span",null,"添加已有的服务",-1)])]),_:1},8,["onClick"])],64))])]),_:1})}}}),ue=A("MAIL_SETTING_MONITOR",()=>{const e=f(!1),{loading:t,setLoading:a}=Q();return{status:e,loading:t,setLoading:a,reset:()=>{e.value=!1,a(!1)}}}),{status:re}=E(ue()),{setLoading:Be}=ue(),qe=De(),os=async e=>{I({title:e?"启用服务状态监控":"关闭服务状态监控",content:e?"检查邮局服务的状态,并在停止时自动重新启动":"关闭后,系统将不再监控邮局服务状态",onConfirm:async()=>{try{const{data:t}=await(e?Vt():Bt());qe.request(t),vt()}catch(t){re.value=!e,qe.error("操作失败")}},onCancel:()=>{re.value=!e}})},vt=async()=>{try{Be(!0);const{data:e}=await qt();re.value=!!e.status}catch(e){re.value=!1}finally{Be(!1)}},ls={class:"flex items-center"},us=C({__name:"index",setup(e){const t=Le(),{status:a,loading:u}=E(ue()),{reset:p}=ue();return t.install&&vt(),V(()=>{p()}),(n,s)=>{const r=me;return g(),$(ee,{title:"监控"},{default:i(()=>[d("div",ls,[s[0]||(s[0]=d("div",{class:"text-base mr-[3rem]"},"服务停止后自动启动",-1)),o(r,{"model-value":l(a),loading:l(u),onChange:l(os)},null,8,["model-value","loading","onChange"])])]),_:1})}}}),ie=A("MAIL_SETTING_SERVICE",()=>{const{table:e,columns:t}=Oe([{prop:"name",label:"名称"},{prop:"status",label:"状态",render:s=>o(Oa,{modelValue:s.status,onClick:async()=>{const{onChangeStatus:r}=await b(()=>Promise.resolve().then(()=>W),void 0,import.meta.url);r(s)}},null)},X(s=>[{title:s.status?"停止":"开启",onClick:async r=>{const{onChangeStatus:c}=await b(()=>Promise.resolve().then(()=>W),void 0,import.meta.url);c(r)}},{title:"重启",onClick:async r=>{const{onRestart:c}=await b(()=>Promise.resolve().then(()=>W),void 0,import.meta.url);c(r)}},{title:"修复",onClick:async r=>{const{onRepair:c}=await b(()=>Promise.resolve().then(()=>W),void 0,import.meta.url);c(r)}},{title:"设置",onClick:async r=>{const{onShowConfig:c}=await b(()=>Promise.resolve().then(()=>W),void 0,import.meta.url);c(r)}}])]),a=Z(),{loading:u,setLoading:p}=Q();return{table:e,columns:t,loading:u,setLoading:p,configModal:a,reset:()=>{p(!1),e.data=[],e.total=0}}}),{table:z,configModal:G}=E(ie()),{setLoading:Ue}=ie(),rs=e=>{I({title:e.status?"正在停止 ".concat(e.key," 服务"):"正在启动 ".concat(e.key," 服务"),content:e.status?"确定要停止 ".concat(e.key," 服务吗?"):"确定要启动 ".concat(e.key," 服务吗?"),onConfirm:async()=>{L({request:Ke({service:e.key,type:e.status?"stop":"start"}),message:!0,success:()=>{te()}})}})},is=e=>{I({title:"重启 ".concat(e.key," 服务"),content:"确定要重启 ".concat(e.key," 服务吗?"),onConfirm:async()=>{L({request:Ke({service:e.key,type:"restart"}),message:!0,success:()=>{te()}})}})},cs=e=>{let t="确定要修复 ".concat(e.key," 服务吗?");e.key==="dovecot"?t="配置将恢复为默认设置,并使以下配置失效:SSL。确认继续吗?":e.key==="postfix"&&(t="配置将恢复为默认设置,并使以下配置失效:SSL、防垃圾邮件、BCC、SMTP 中继、邮件转发。确认继续吗?"),I({title:"修复 ".concat(e.key," 服务"),content:t,onConfirm:async()=>{L({request:Nt({service:e.key,type:"repair"}),message:!0,success:()=>{te()}})}})},ds=e=>{G.value.data.row=e,G.value.title="在线编辑 【".concat(e.key,"_配置文件】"),G.value.show=!0,O({title:G.value.title,area:[80,60],component:()=>b(()=>import("./config4.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:G.value.data,showFooter:!0,confirmText:"保存"})},te=async()=>{try{Ue(!0);const{data:e}=await Ut();P(e)&&(z.value.data=[],z.value.data.push({key:"dovecot",name:"Dovecot",status:e.dovecot}),e.change_rspamd?z.value.data.push({key:"opendkim",name:"Opendkim",status:e.opendkim}):z.value.data.push({key:"rspamd",name:"Rspamd",status:e.rspamd}),z.value.data.push({key:"postfix",name:"Postfix",status:e.postfix}))}finally{Ue(!1)}},W=Object.freeze(Object.defineProperty({__proto__:null,getList:te,onChangeStatus:rs,onRepair:cs,onRestart:is,onShowConfig:ds},Symbol.toStringTag,{value:"Module"})),ps=C({__name:"index",setup(e){const{table:t,loading:a}=E(ie()),{columns:u,reset:p}=ie();return Le().install&&te(),V(()=>{p()}),(s,r)=>{const c=$e;return g(),$(ee,{title:"服务状态"},{default:i(()=>[o(c,{loading:l(a),"loading-num":3,data:l(t).data,column:l(u)},null,8,["loading","data","column"])]),_:1})}}}),ce=f(!1),xe=f(!1),ms=e=>{I({title:"".concat(e?"开启":"关闭","自动续期SSL证书"),content:"".concat(e?"开启后,系统将自动续期SSL证书":"关闭后,系统将不再自动续期SSL证书"),onConfirm:async()=>{L({loading:"正在".concat(e?"开启":"关闭","自动续期SSL证书"),message:!0,request:e?jt():Ht(),success:()=>{ft()}})},onCancel:()=>{ce.value=!e}})},ft=async()=>{xe.value=!0;try{const{data:e}=await zt();ce.value=e.status,xe.value=!1}catch(e){ce.value=!1}},_s={class:"flex items-center"},vs=C({__name:"index",setup(e){return Ca(()=>{ft()}),(t,a)=>{const u=me;return g(),$(ee,{title:"自动续期SSL证书"},{default:i(()=>[d("div",_s,[a[0]||(a[0]=d("div",{class:"text-base mr-[3rem]"},"自动续期",-1)),o(u,{"model-value":l(ce),loading:l(xe),onChange:l(ms)},null,8,["model-value","loading","onChange"])])]),_:1})}}}),fs=C({__name:"index",setup(e){return(t,a)=>(g(),x("div",null,[o(ns),o(za),o(us),o(vs),o(ps)]))}}),gs=Te(fs,[["__scopeId","data-v-f3d68613"]]),Ie=A("MAIL_BCC",()=>{const e=q({p:1,size:10}),t=Z("添加密抄",{isEdit:!1,row:void 0,onRefresh:async()=>{const{getList:s}=await b(()=>Promise.resolve().then(()=>he),void 0,import.meta.url);s()}}),a=new Map([["sender","发送时抄送"],["recipient","接收时抄送"]]),{table:u,columns:p}=Oe([{prop:"user",label:"被抄送者",showOverflowTooltip:!0},{prop:"forward_user",label:"抄送到",showOverflowTooltip:!0},{prop:"domain",label:"域名",showOverflowTooltip:!0},{prop:"type",label:"抄送类型",render:s=>a.get(s.type)},{prop:"active",label:"状态",render:s=>o("div",{class:"w-[2rem]"},[s.active===1?o(ke,{icon:"el-circle-check",class:"!text-primary"},null):o(ke,{icon:"el-circle-close",class:"!text-dangerDark"},null)])},X([{title:"编辑",onClick:async s=>{const{onShowEdit:r}=await b(()=>Promise.resolve().then(()=>he),void 0,import.meta.url);r(s)}},{title:"删除",onClick:async s=>{const{onDel:r}=await b(()=>Promise.resolve().then(()=>he),void 0,import.meta.url);r(s)}}])]);return{search:e,formModal:t,table:u,columns:p,reset:()=>{e.p=1,e.size=10,u.data=[],u.total=0}}}),{search:ys,table:se,formModal:T}=E(Ie()),bs=De(),gt=()=>{T.value.data.isEdit=!1,T.value.title="添加密抄",T.value.show=!0,O({title:T.value.title,area:54,component:()=>b(()=>import("./index521.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:T.value.data,showFooter:!0})},hs=e=>{T.value.data.isEdit=!0,T.value.data.row=e,T.value.title="编辑密抄",T.value.show=!0,O({title:T.value.title,area:54,component:()=>b(()=>import("./index521.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:T.value.data,showFooter:!0})},ks=async e=>{try{await I({title:"删除转发",content:"是否删除转发设置?"});const{data:t}=await Wt({type:e.type,user:e.user,forward_user:e.forward_user});bs.request(t),fe()}catch(t){}},fe=async()=>{try{se.value.loading=!0;const{data:e}=await Gt();se.value.data=[],P(e.data)&&Object.entries(e.data).forEach(([t,a])=>{Y(a)&&se.value.data.push(...a.map(u=>({...u,type:t})))})}finally{se.value.loading=!1}},yt=()=>{ys.value.p=1,fe()},he=Object.freeze(Object.defineProperty({__proto__:null,getList:fe,onDel:ks,onShowAdd:gt,onShowEdit:hs,refresh:yt},Symbol.toStringTag,{value:"Module"})),ws=C({__name:"index",setup(e){const{table:t}=E(Ie()),{columns:a,reset:u}=Ie();return fe(),V(()=>{u()}),(p,n)=>{const s=B,r=$e,c=_e,y=st("bt-loading");return g(),$(c,null,{"header-left":i(()=>[o(s,{type:"primary",onClick:l(gt)},{default:i(()=>[...n[0]||(n[0]=[m("添加密抄",-1)])]),_:1},8,["onClick"])]),"header-right":i(()=>[o(s,{onClick:l(yt)},{default:i(()=>[...n[1]||(n[1]=[m("刷新",-1)])]),_:1},8,["onClick"])]),content:i(()=>[Pe(o(r,{data:l(t).data,column:l(a)},null,8,["data","column"]),[[y,l(t).loading]])]),_:1})}}}),D=f(0),j=f(!1),Ne=f(!1),Es=f([]),Cs=f([]),F=f({type:"mail",forward_type:0,rule:"all",rule_str:"",receiver:"",status:!0,domain:""}),xs=async()=>{try{const{data:e}=await Kt({dtype:D.value});return{data:e.data,total:e.total}}catch(e){return{data:[],total:0}}},Is=async(e,t,a,u,p,n)=>{const{label:s,value:r}=u,c=new Map([["delete","批量删除已选的转发规则"]]),y=async()=>{const _=new Map([["delete",Ze]]).get(r);switch(r){case"delete":const w=a.value.map(k=>k.address).join(",");if(_)return await _({forward_type:D.value,address:w});break}};await e({title:"批量".concat(s),content:"".concat(c.get(r),",是否继续操作!"),column:[{label:"转发规则",prop:"address"},ot()],onConfirm:async()=>{const h=await y();j.value=!0;const _=[];h.status?a.value.forEach(w=>{_.push({name:w.address,status:!0,msg:"删除成功"})}):a.value.forEach(w=>{_.push({name:w.address,status:!1,msg:"删除失败"})}),p&&p(),lt(_,{title:"".concat(s,"转发规则")})}})},Fs=Je([{label:"删除",value:"delete",event:Is}]),je=async(e,t)=>{F.value.forward_type=D.value,O({title:e?"编辑转发规则".concat(t.forwarder):"添加转发规则",area:54,component:()=>b(()=>import("./index338.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{isEdit:e,row:t},showFooter:!0})},Ts=e=>(F.value.type=e.rule===""?"mail":"wildcard",F.value.status=!!e.active,F.value.domain=e.domain,F.value.rule=e.rule,F.value.receiver=e.goto,F.value.forward_type=D.value,e.rule===""?F.value.rule_str=e.address:F.value.rule_str=e.rule_str,F.value),xn=async()=>{Ne.value=!0;try{const{data:{data:e}}=await Jt();Es.value=e.map(t=>({label:t,value:t}))}catch(e){}finally{Ne.value=!1}},In=async e=>{try{const{data:{data:t}}=await Yt({domain:e});Cs.value=t.map(a=>({label:a.username,value:a.username}))}catch(t){}},Fn=()=>{F.value={type:"mail",forward_type:0,rule:"all",rule_str:"",receiver:"",status:!0,domain:""}},bt=e=>{let t={...e};return t.status=t.status?1:0,t.type!=="wildcard"&&(t.rule=""),t.forward_type===1&&(delete t.rule_str,delete t.rule),delete t.type,t},Tn=async e=>{try{let t=bt(e);const a=await L({request:Zt(t),loading:"添加中...",message:!0});return a.status&&(j.value=!0),a.status}catch(t){return!1}},Ls=async(e,t)=>{try{let a=bt(e);const u=await L({request:Qt({...a,address:t}),loading:"编辑中...",message:!0});return u.status&&(j.value=!0),u.status}catch(a){return!1}},Ds=async e=>{I({title:"删除转发规则【".concat(e.forwarder,"】"),content:"是否确认删除该转发规则?",onConfirm:async()=>{L({request:Ze({forward_type:D.value,address:e.address}),loading:"删除中...",message:!0,success:()=>{j.value=!0}})}})},$s=C({__name:"index",setup(e){const t=[{content:'<span class="text-dangerDark">转发优先级:准确的邮箱转发>域名转发到域名>捕获前缀、后缀、全部邮箱>捕获不存在的邮箱</span>',isHtml:!0},{content:'<span class="text-dangerDark">捕获所有的邮箱和捕获不存在的邮箱不能同时存在</span>',isHtml:!0},{content:'<span class="text-dangerDark">除准确的邮箱转发外,其它所有转发均支持在邮箱不存在时也能转发(可用于实现“无限邮”)</span>',isHtml:!0}],{BtTable:a,BtBatch:u,BtRefresh:p}=Qe({request:xs,columns:[ut({key:"address"}),{label:"被转发者",prop:"forwarder",showOverflowTooltip:!0},{label:"转发到",prop:"goto",showOverflowTooltip:!0},{label:"域名",prop:"domain",isHide:()=>D.value===0,showOverflowTooltip:!0},{label:"创建时间",prop:"created"},{label:"修改时间",prop:"modified"},{label:"状态",prop:"active",render:n=>o(me,{modelValue:n.active,"onUpdate:modelValue":s=>n.active=s,size:"small",activeValue:1,inactiveValue:0,onChange:async s=>{n.active=s,await Ls(Ts(n),n.address)}},null)},X([{title:"编辑",onClick:n=>{je(!0,n)}},{title:"删除",onClick:n=>{Ds(n)}}])],extension:[Fs,Ye(j)]});return(n,s)=>{const r=B,c=Xt,y=_e,h=Xe;return g(),x("div",null,[o(y,null,{"header-left":i(()=>[o(r,{type:"primary",onClick:s[0]||(s[0]=_=>l(je)(!1))},{default:i(()=>[...s[3]||(s[3]=[m("添加",-1)])]),_:1})]),"header-right":i(()=>[o(c,{type:"button",size:"default",modelValue:l(D),"onUpdate:modelValue":s[1]||(s[1]=_=>J(D)?D.value=_:null),options:[{label:"转发到邮箱",value:0},{label:"转发到域名",value:1}],onChange:s[2]||(s[2]=()=>{j.value=!0}),class:"mr-[1rem]"},null,8,["modelValue"]),o(l(p))]),content:i(()=>[o(l(a))]),"footer-left":i(()=>[o(l(u))]),_:1}),o(h,{class:"mt-[1rem]",options:t})])}}}),de=A("MAIL_BACKUP_PLAN",()=>{const e=f(!1),t=q({open:!1,cycle:"week",week:"1",hour:1,minute:30,backupTo:"localhost",save:3}),a=f([{label:"服务器磁盘",value:"localhost"}]);return{open:e,form:t,toOptions:a,weekOptions:[{label:"周一",value:"1"},{label:"周二",value:"2"},{label:"周三",value:"3"},{label:"周四",value:"4"},{label:"周五",value:"5"},{label:"周六",value:"6"},{label:"周日",value:"0"}],cycleOptions:[{label:"每周",value:"week"},{label:"每天",value:"day"}],reset:()=>{t.cycle="week",t.week="1",t.hour=1,t.minute=30,t.backupTo="localhost",t.save=3,t.open=!1,e.value=!1}}}),{form:v,open:Fe,toOptions:He}=E(de()),Ss=()=>{let e={type:v.value.cycle,hour:v.value.hour,minute:v.value.minute,backupTo:v.value.backupTo,save:v.value.save};return v.value.cycle==="week"&&(e=Object.assign(e,{week:v.value.week})),e},Ps=async()=>{const{data:e}=await ea(Ss());N.request(e),ht()},Os=e=>{Fe.value&&e===!1&&I({title:"关闭邮件备份",content:"确认关闭当前备份计划?",onConfirm:async()=>{const{data:t}=await ta();N.request(t),v.value.open=!1},onCancel:()=>{v.value.open=!e}})},Ms=async()=>{const{data:e}=await aa();Y(e.data)&&(He.value=e.data.map(t=>({label:t.name,value:t.value})),He.value.unshift({label:"服务器磁盘",value:"localhost"}))},ht=async()=>{try{const{data:e}=await sa();P(e)&&e.hasOwnProperty("type")&&(Fe.value=!0,v.value.open=!0,v.value.cycle=e.type,v.value.week=e.where1,v.value.hour=e.where_hour,v.value.minute=e.where_minute,v.value.backupTo=e.backupTo,v.value.save=e.save)}catch(e){Fe.value=!1,v.value.open=!1}},Rs=e=>{const t=parseInt(e);isNaN(t)||t<1?v.value.save=1:v.value.save=t},As=e=>{const t=parseInt(e);isNaN(t)||t<0?v.value.hour=0:t>23?v.value.hour=23:v.value.hour=t},Vs=e=>{const t=parseInt(e);isNaN(t)||t<0?v.value.minute=0:t>59?v.value.minute=59:v.value.minute=t},Bs={class:"flex items-center"},qs={class:"w-100px"},Us={class:"w-120px ml-16px"},Ns=C({__name:"period",props:{value:{default:()=>({cycle:"week",week:"1",hour:1,minute:30})},valueModifiers:{}},emits:["update:value"],setup(e){const{weekOptions:t,cycleOptions:a}=de(),u=xa(e,"value");return(p,n)=>{const s=et,r=Se;return g(),x("div",Bs,[d("div",qs,[o(s,{modelValue:u.value.cycle,"onUpdate:modelValue":n[0]||(n[0]=c=>u.value.cycle=c),options:l(a)},null,8,["modelValue","options"])]),Pe(d("div",Us,[o(s,{modelValue:u.value.week,"onUpdate:modelValue":n[1]||(n[1]=c=>u.value.week=c),options:l(t)},null,8,["modelValue","options"])],512),[[Ia,u.value.cycle==="week"]]),d("div",null,[o(r,{modelValue:u.value.hour,"onUpdate:modelValue":n[2]||(n[2]=c=>u.value.hour=c),class:"ml-16px !w-140px",type:"number",min:0,max:23,controls:!1,onInput:l(As)},{append:i(()=>[...n[4]||(n[4]=[m("小时",-1)])]),_:1},8,["modelValue","onInput"])]),d("div",null,[o(r,{modelValue:u.value.minute,"onUpdate:modelValue":n[3]||(n[3]=c=>u.value.minute=c),class:"ml-16px !w-140px",type:"number",min:0,max:59,controls:!1,onInput:l(Vs)},{append:i(()=>[...n[5]||(n[5]=[m("分钟",-1)])]),_:1},8,["modelValue","onInput"])])])}}}),js={class:"p-20px"},Hs={class:"flex-1"},zs={class:"flex items-center"},Gs={class:"w-140px"},Ws=C({__name:"index",setup(e){const{form:t,toOptions:a}=E(de()),{reset:u}=de();return ht(),Ms(),V(()=>{u()}),(p,n)=>{const s=me,r=Fa,c=et,y=Se,h=B,_=Ta,w=nt;return g(),$(w,{class:"mb-16px",shadow:"never"},{header:i(()=>[...n[4]||(n[4]=[d("div",{class:"card-header"},[d("span",null,"备份计划")],-1)])]),default:i(()=>[d("div",js,[o(_,{model:l(t)},{default:i(()=>[o(r,{label:"邮件备份"},{default:i(()=>[o(s,{modelValue:l(t).open,"onUpdate:modelValue":n[0]||(n[0]=k=>l(t).open=k),onChange:l(Os)},null,8,["modelValue","onChange"])]),_:1}),o(r,{label:"执行周期"},{default:i(()=>[d("div",Hs,[o(Ns,{value:l(t),"onUpdate:value":n[1]||(n[1]=k=>J(t)?t.value=k:null)},null,8,["value"])])]),_:1}),d("div",zs,[o(r,{label:"备份到"},{default:i(()=>[d("div",Gs,[o(c,{modelValue:l(t).backupTo,"onUpdate:modelValue":n[2]||(n[2]=k=>l(t).backupTo=k),options:l(a)},null,8,["modelValue","options"])])]),_:1}),o(r,{label:"保留最新","label-width":"auto"},{default:i(()=>[o(y,{modelValue:l(t).save,"onUpdate:modelValue":n[3]||(n[3]=k=>l(t).save=k),class:"!w-140px",type:"number",min:1,controls:!1,onInput:l(Rs)},{append:i(()=>[...n[5]||(n[5]=[m("份",-1)])]),_:1},8,["modelValue","onInput"])]),_:1})]),o(r,{label:" ","show-feedback":!1},{default:i(()=>[o(h,{type:"primary",onClick:l(Ps)},{default:i(()=>[...n[6]||(n[6]=[m("保存",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["model"])])]),_:1})}}}),pe=A("MAIL_BACKUP_IMPORT",()=>{const e=q({path:"/www/backup/path/"}),{table:t,columns:a}=Oe([{prop:"name",label:"文件名"},{prop:"mtime",label:"导入时间",render:s=>na(s.mtime)},X([{title:"恢复",onClick:async s=>{const{onRestore:r}=await b(()=>Promise.resolve().then(()=>Ge),void 0,import.meta.url);r(s)}},{title:"删除",onClick:async s=>{const{onDelete:r}=await b(()=>Promise.resolve().then(()=>Ge),void 0,import.meta.url);r(s)}}],{width:120,fixed:"right",label:"操作"})]),{loading:u,setLoading:p}=Q();return{search:e,table:t,columns:a,loading:u,setLoading:p,reset:()=>{t.data=[],t.total=0}}}),{search:ae,table:Ks}=E(pe()),{setLoading:ze}=pe(),kt=()=>{$a({path:ae.value.path,uploadData:{accept:".gz,.tar,.tar.gz,.zip",multiple:!0},refreshEvent:(e,t)=>{ge(),t()}})},wt=()=>{Ma({type:"file",change:async e=>{L({request:tt({file_path:e}),message:!0})}})},Js=async e=>{await I({title:"恢复备份",content:"确认恢复当前备份?"});const{data:t}=await tt({file_path:"".concat(ae.value.path,"/").concat(e.name)});N.request(t)},Zs=async e=>{await I({title:"删除备份",content:"确认删除当前备份?"});const{data:t}=await la({path:"".concat(ae.value.path,"/").concat(e.name)});N.request(t),ge()},Et=async()=>{const{data:e}=await ua();P(e)&&(ae.value.path=ra(e.data)?e.data:"")},ge=async()=>{try{ze(!0),await Et();const{data:e}=await oa(La(ae.value));Ks.value.data=Y(e.data)?e.data:[]}finally{ze(!1)}},Ge=Object.freeze(Object.defineProperty({__proto__:null,getList:ge,getPath:Et,onDelete:Zs,onRestore:Js,onSelect:wt,onUpload:kt},Symbol.toStringTag,{value:"Module"})),Qs={class:"px-20px py-16px"},Ys=C({__name:"index",setup(e){const{loading:t,table:a}=E(pe()),{columns:u,reset:p}=pe();return ge(),V(()=>{p()}),(n,s)=>{const r=B,c=$e,y=_e,h=nt,_=st("bt-loading");return g(),$(h,{shadow:"never"},{header:i(()=>[...s[0]||(s[0]=[d("div",{class:"card-header"},[d("span",null,"邮件导入")],-1)])]),default:i(()=>[d("div",Qs,[o(y,null,{"header-left":i(()=>[o(r,{onClick:l(kt)},{default:i(()=>[...s[1]||(s[1]=[m("本地上传",-1)])]),_:1},8,["onClick"]),o(r,{onClick:l(wt)},{default:i(()=>[...s[2]||(s[2]=[m("在服务器中选择",-1)])]),_:1},8,["onClick"])]),content:i(()=>[Pe(o(c,{"max-height":340,bordered:!0,data:l(a).data,column:l(u)},null,8,["data","column"]),[[_,l(t)]])]),_:1})])]),_:1})}}}),Xs=C({__name:"index",setup(e){return(t,a)=>(g(),x("div",null,[o(Ws),o(Ys)]))}}),H=f(!1);Z("添加IP标签",{isEdit:!1,row:void 0,onRefresh:async()=>{H.value=!0}});const Ct=f({tag:"",ip:"",syslog:"",helo:"",ipv:4,binds:""}),xt=f([]);f([]);const We=f(!1),en=async(e,t,a,u,p,n)=>{const{label:s,value:r}=u,c=new Map([["delete","批量删除已选的IP标签"]]),y=async()=>{const _=new Map([["delete",at]]).get(r);switch(r){case"delete":const w=a.value.map(k=>k.tag).join(",");if(_)return await _({tags:w});break}};await e({title:"批量".concat(s),content:"".concat(c.get(r),",是否继续操作!"),column:[{label:"标签名",prop:"tag"},ot()],onConfirm:async()=>{const h=await y();H.value=!0;const _=[];h.status?a.value.forEach(w=>{_.push({name:w.tag,status:!0,msg:"删除成功"})}):a.value.forEach(w=>{_.push({name:w.tag,status:!1,msg:"删除失败"})}),p&&p(),lt(_,{title:"".concat(s,"标签")})}})},tn=Je([{label:"批量删除",value:"delete",event:en}]),an=async()=>{try{const{data:e}=await ia();return{data:e.data||[],total:0}}catch(e){return{data:[],total:0}}},sn=async e=>{O({title:"添加IP标签",area:50,component:()=>b(()=>import("./index339.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{isEdit:!1},btn:!0})},Ln=async()=>{try{We.value=!0;const{data:e}=await ca();if(Object.keys(e).length>0){const t=Object.values(e).flatMap(a=>Object.entries(a));xt.value=t.map(([a,u])=>({label:"".concat(u.public_ip),value:"".concat(u.addr),type:u.type}))}}catch(e){}finally{We.value=!1}},Dn=e=>{var a;const t=(a=xt.value.find(u=>u.value===e))==null?void 0:a.type;return t?t==="IPv4"?4:6:4},$n=()=>{Ct.value={tag:"",ip:"",syslog:"",helo:"",ipv:4,binds:""}},Sn=async e=>(await L({request:da(e),loading:"添加中...",message:!0})).status?(H.value=!0,!0):!1,Pn=async e=>(await L({request:pa(e),loading:"编辑中...",message:!0})).status?(H.value=!0,!0):!1,nn=async e=>{I({title:"删除【".concat(e.tag,"】标签"),content:"确定删除【".concat(e.tag,"】标签吗?"),onConfirm:async()=>{try{await at({tags:e.tag}),H.value=!0}catch(t){}}})},on=e=>({tag:e.tag,ip:e.ip,syslog:e.syslog,helo:e.helo,ipv:e.preference==="ipv6"?6:4,binds:Y(e.binds)?e.binds:[]}),ln=async e=>{Ct.value=on(e),O({title:"编辑【".concat(e.tag,"】标签"),area:50,component:()=>b(()=>import("./index339.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{isEdit:!0},btn:!0})},un=C({__name:"index",setup(e){const t=[{content:'<span class="text-dangerDark">IP池中的IP标签可作为某个域名发送邮件的出口IP,在域名列表里配置</span>',isHtml:!0},{content:'<span class="text-dangerDark">每个IP可以有多个标签但是标签名不能重复</span>',isHtml:!0},{content:'<span class="text-dangerDark">调整完发送IP注意修改SPF记录,避免收件方退信或认定为垃圾邮件</span>',isHtml:!0}],a=()=>{ma.push("/mail/maildomain")},{BtTable:u,BtRefresh:p,BtBatch:n}=Qe({request:an,columns:[ut({key:"tag"}),{label:"标签名",prop:"tag"},{renderHeader:()=>o("div",null,[o("span",null,[m("IP")]),o(Da,{placement:"top",effect:"light"},{default:()=>o("span",{class:"ml-4px bt-ico-ask"},[m("?")]),content:()=>o("div",null,[o("div",{class:"text-dangerDark"},[m("• 只能选择由系统从网卡扫描出的IP,此处展示IP地址是通过网络请求获取的公网IP")]),o("div",{class:"text-dangerDark"},[m("• 不支持虚拟网卡,如docker、lo、veth、br-、tun、tap、virb等")]),o("div",{class:"text-dangerDark"},[m("• 若没有找到想要的IP请检查:")]),o("div",{class:"text-dangerDark",style:"margin-left: 20px;"},[m("1.IP绑定的网卡(ipa)")]),o("div",{class:"text-dangerDark",style:"margin-left: 20px;"},[m("2.是否能正常访问宝塔官网获取公网IP")]),o("div",{class:"text-dangerDark",style:"margin-left: 20px;"},[m("(curl --interface【网卡上的IP】https://www.bt.cn/api/getIpAddress)")])])})]),prop:"ip"},{renderHeader:()=>Ra("HELO/EHLO","用于HELO/EHLO的域名,绑定之后也可用于其它域名,不影响发送邮件"),prop:"helo"},X([{title:"编辑",onClick:s=>ln(s)},{title:"删除",onClick:s=>nn(s)}])],extension:[tn,Ye(H)]});return(s,r)=>{const c=B,y=_e,h=Xe;return g(),x("div",null,[o(y,null,{"header-left":i(()=>[o(c,{type:"primary",onClick:l(sn)},{default:i(()=>[...r[0]||(r[0]=[m("添加IP标签",-1)])]),_:1},8,["onClick"])]),"header-right":i(()=>[o(c,{onClick:a},{default:i(()=>[...r[1]||(r[1]=[m("去使用",-1)])]),_:1})]),content:i(()=>[o(l(u))]),"footer-left":i(()=>[o(l(n))]),_:1}),o(h,{class:"mt-[1rem]",options:t})])}}}),rn={key:0,class:"software-mask"},cn={key:1,class:"software-install"},dn={key:0,class:"software-view"},pn={class:"relative"},mn={class:"absolute right-0 top-0"},_n=C({__name:"index",setup(e){const t=_a(),{install:a}=E(t),u=[{name:"common",label:"通用设置",lazy:!0,render:()=>o(gs,null,null)},{name:"ip",label:"IP池",lazy:!0,render:()=>o(un,null,null)},{name:"bcc",label:"密件抄送",lazy:!0,render:()=>o(ws,null,null)},{name:"forward",label:"邮件转发",lazy:!0,render:()=>o($s,null,null)},{name:"backup",label:"备份",lazy:!0,render:()=>o(Xs,null,null)}];return(p,n)=>{const s=ke,r=va,c=fa;return g(),x("div",null,[l(a)?ne("",!0):(g(),x("div",rn)),l(a)?ne("",!0):(g(),x("div",cn,[l(a)?ne("",!0):(g(),x("div",dn,[o(s,{icon:"el-warning",size:30,class:"mr-[8px]",color:"orange"}),n[2]||(n[2]=d("span",{class:"text-base font-black"},"未安装邮件服务器",-1)),d("span",{class:"bt-link text-base ml-8px",onClick:n[0]||(n[0]=y=>l(Sa)("mail_sys","i"))},"点击安装")]))])),d("div",null,[d("div",pn,[o(r,{type:"card",options:u,modelValue:l(be),"onUpdate:modelValue":n[1]||(n[1]=y=>J(be)?be.value=y:null)},null,8,["modelValue"]),d("div",mn,[o(c,{onClick:l(Aa)},{default:i(()=>[...n[3]||(n[3]=[m("环境初始化",-1)])]),_:1},8,["onClick"])])])])])}}}),vn=Te(_n,[["__scopeId","data-v-662737fd"]]),On=Object.freeze(Object.defineProperty({__proto__:null,default:vn},Symbol.toStringTag,{value:"Module"}));export{le as M,F as a,Tn as b,xn as c,Es as d,Ls as e,D as f,In as g,Ts as h,Ne as i,Ct as j,Dn as k,xt as l,Cs as m,Pn as n,Sn as o,Ln as p,$n as q,Fn as r,We as s,Za as t,Qa as u,Xa as v,es as w,Ya as x,On as y};
function __vite__mapDeps(indexes) {
  if (!__vite__mapDeps.viteFileDeps) {
    __vite__mapDeps.viteFileDeps = []
  }
  return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}