File: /www/server/panel/BTPanel/static/js/index365.js
import{k as _,j$ as lt,k0 as Kt,k1 as Jt,M as k,k2 as We,m as Qt,go as Xt,Z as Yt,w as q,cQ as it,c7 as ut,cT as ct,cU as mt,X as he,cN as Zt,Y as es,e as ae,cO as be,k3 as ts,cY as Ke,k4 as ss,k5 as as,k6 as ns,k7 as rs,b as dt,cZ as Ie,k8 as os,k9 as ls,ka as is,c as us,kb as cs,kc as ms,cP as te,kd as ds,ke as ps,f as qe,Q as gs,W as pt,dp as gt,kf as de,kg as _t,kh as _s,ki as vs,a2 as Be,_ as N,cS as fs,K as ys,kj as hs,kk as bs,kl as Je,km as ws,kn as Es,ko as Ds,kp as ks,kq as xs,dm as vt,kr as Rs,ks as Cs,kt as $s,ku as Ss,kv as Ls,kw as Ps,kx as Fs,ky as Ts,kz as Vs,kA as Is,kB as qs,cR as Bs,kC as Os,kD as As}from"./utils-lib.js?v=1777008528";import{aI as we,aJ as ne,r as d,c as C,e as r,x as y,aF as Us,j as E,k as x,q as v,v as g,p as n,Q as F,s as Ee,J as S,K as pe,g as De,aB as zs,z as $,an as ft,am as yt,G as Hs,ap as js,o as T,a8 as ht,i as Ns,t as Ms,I as U,F as Gs,B as Ws,C as X,R as Ks,y as M,$ as Js,L as Qs,H as B,a0 as Qe,ad as bt,U as Xs,ab as wt,w as Et}from"./base-lib.js?v=1777008528";import{u as V,o as Dt,D as Ys}from"./useController20.js?v=1777008528";import{_ as kt}from"./index118.js?v=1777008528";import{B as Zs}from"./index190.js?v=1777008528";import{g as Se,m as ea,i as ta,f as sa}from"./form-item.js?v=1777008528";import{c as aa,e as Oe,w as xt,b as na,y as ra,g as Ae}from"./index3.js?v=1777008528";import{B as Ue}from"./index130.js?v=1777008528";import{S as oa}from"./useStore2.js?v=1777008528";import{saveFileBody as la,getRedirectList as ia}from"./site.js?v=1777008528";import{_ as Rt}from"./index206.js?v=1777008528";const Ct=ne("DOCKERSITE-DOMAIN-STORE",()=>{const e=d();return{isRefreshDomain:d(!1),port:e,delMultDomainEvent:async c=>{const o=k.load("正在删除域名,请稍后...");try{const{data:i}=await We(c),{data:p}=aa(i);return{data:p.map(f=>({name:f.domain,...f})),status:!0}}catch(i){return{status:!1,msg:"删除域名失败"}}finally{o.close()}},getDomainListEvent:async c=>{try{return{data:(await _({request:lt(c)})).data,status:!0}}catch(o){return{status:!1,msg:"获取域名信息失败"}}},addDomainEvent:async c=>{try{const o=await _({loading:"正在添加域名,请稍后...",request:Jt(c)});return{status:o.status,msg:o.msg,data:o.data}}catch(o){return{status:!1,msg:"添加域名失败"}}},setPortEvent:async c=>{try{return{...await _({loading:"正在设置HTTPS端口,请稍候...",request:Kt(c),message:!0})}}catch(o){return{status:!1,msg:"设置https端口失败"}}},delDomainEvent:async c=>{var i;let o=k.load("正在删除域名,请稍后...");try{const p=await We(c),m=(i=p.data)!=null&&i.hasOwnProperty("status")?p.data:p;return Qt(m.data)?{status:m.status,msg:m.data[0].msg}:{status:m.status,msg:(m==null?void 0:m.data)||(m==null?void 0:m.error_msg)||m.msg}}catch(p){return{status:!1,msg:"删除域名失败"}}finally{o.close()}}}}),$t=()=>we(Ct()),{siteInfo:re}=V(),{port:St,isRefreshDomain:ze}=$t(),{getDomainListEvent:ua,setPortEvent:ca,addDomainEvent:ma,delDomainEvent:da,delMultDomainEvent:pa}=Ct(),le=d(!1),G=d(""),ga=e=>{const{name:t,id:s}=re.value;return{id:s,site_name:t,domains:e}},_a=async()=>{var e,t;try{const s=G.value,a=["21","25","443","888","8888","8443"];if(s==="")return k.error("域名不能为空"),!1;let u=String(s.match(/:(\d+)/g)).replace(/:/g,"");if(a.includes(u))return k.error("端口不能为常用端口21、25、443、888、8888、8443"),!1;if(!await ya())return!1;const h=ga(s),c=await ma(h);return c.status&&Dt({title:"域名添加结果",resultData:((e=c==null?void 0:c.data)==null?void 0:e.domains)||((t=c==null?void 0:c.data)==null?void 0:t.data)||[],autoTitle:"添加域名完成"}),ze.value=!0,G.value="",c.status}catch(s){}},va=()=>{const e=re.value;return{site_name:e.name,id:e.id}},fa=async()=>{try{const e=va(),t=await ua(e);return St.value=Number(t.data.https_port)||"未开启",{data:t.data.domain_list,total:t.data.domain_list.length,other:{port:t.data.https_port}}}catch(e){return{data:[],total:0,other:{}}}},ya=async(e=G.value)=>{let t=e.trim().replace(" ","").split("\n");const s=t.findIndex(l=>l.split(":")[0].length<3);for(var a=0;a<t.length;a++){var u=t[a];let l=u.includes(":");if(l&&!Xt(u))return k.error("第"+(a+1)+"行【"+u+"】域名格式错误"),!1;if(!l&&!Yt(u))return k.error("第"+(a+1)+"行【"+u+"】域名格式错误"),!1}return s!==-1?(k.error("第 ".concat(s+1," 个域名长度不符合要求(必须大于3个字符)")),!1):t},ha=async e=>{try{const t=await ca({site_name:re.value.name,https_port:e.value.port});t!=null&&t.status&&(St.value=Number(e.value.port))}catch(t){}},ba=e=>{const{id:t,name:s}=re.value;return{id:t,site_name:s,domain:e.name,port:e.port}},wa=async e=>{try{await q({icon:"warning-filled",title:"删除【".concat(e.name,"】"),content:"删除".concat(e.name,"后,将无法使用该域名访问网站,是否继续操作?")});const t=ba(e),s=await da(t);return k.request(s),ze.value=!0,s}catch(t){}},Ea=e=>{const{name:t}=re.value,s=e.map(a=>({id:a.id,port:a.port,domain:a.name,site_name:t}));return{del_domain_list:JSON.stringify(s)}},Da=async e=>{try{await q({icon:"warning-filled",title:"批量删除",content:"同时删除选中的域名,是否继续?",type:"calc"});let t=[];const s=Ea(e);return t=(await pa(s)).data,await Dt({resultData:t,autoTitle:"删除域名完成"}),ze.value=!0,{status:!0,msg:"删除域名成功"}}catch(t){return{status:!1,msg:"删除域名失败"}}},ka=async()=>{try{return await fa()}catch(e){return{data:[],total:0,other:{}}}},xa={class:""},Ra={class:"flex items-end mb-[12px]"},Ca=C({__name:"index",setup(e){const{isRefreshDomain:t,port:s}=$t(),a=mt([{label:"删除",value:"delete",event:async(o,i,p,m)=>{Da(p.value)}}]),{BtTable:u,BtBatch:l,config:h}=it({request:ka,columns:[Oe(),{label:"域名",prop:"name",width:400,render:o=>r("div",{class:"truncate"},[r(ut,{class:"bt-link",href:"http://".concat(o.name,":").concat(o.port),target:"_blank"},{default:()=>[o.name]})])},{label:"端口",prop:"port"},{label:"操作",align:"right",render:o=>h.data.length===1?r("span",null,[y("不可操作")]):Us("span",{class:"cursor-pointer bt-link",onClick:()=>{wa(o)}},"删除")}],extension:[a,ct(t)]}),c=()=>{const{BtForm:o,submit:i}=he({data:{port:s.value},options:p=>De(()=>[Se("HTTPS端口",()=>r(Zs,{modelValue:p.value.port,"onUpdate:modelValue":m=>p.value.port=m},null),"port",{attrs:{min:1,max:65535},rules:[Zt({message:"请输入端口号",trigger:"blur"}),es()]})]),submit:ha});ae({title:"更换端口",area:42,showFooter:!0,component:()=>r(o,{class:"p-2rem"},null),onConfirm:i})};return(o,i)=>{const p=be,m=zs,f=$,b=kt;return E(),x("div",xa,[v("div",Ra,[r(m,{ref:"popover",placement:"top-start",width:"41rem","popper-class":"green-tips-popover !p-0 !border-none",visible:n(le),"onUpdate:visible":i[2]||(i[2]=oe=>F(le)?le.value=oe:null),"trigger-keys":[],trigger:"focus"},{default:g(()=>[...i[3]||(i[3]=[v("div",{class:"!p-[12px] bg-primary text-white"},[y(" 如需绑定外网,请换行填写,每行一个域名,默认为80端口 "),v("br"),y(" IP地址格式:192.168.1.199 "),v("br"),y(" 泛解析添加方法 *.domain.com "),v("br"),y(" 如另加端口格式为 www.domain.com:88 ")],-1)])]),reference:g(()=>[r(p,{modelValue:n(G),"onUpdate:modelValue":i[0]||(i[0]=oe=>F(G)?G.value=oe:null),type:"textarea",resize:"none",rows:4,width:"42rem",onFocus:i[1]||(i[1]=oe=>le.value=!0),placeholder:"如需绑定外网,请换行填写,每行一个域名,默认为80端口\nIP地址格式:192.168.1.199\n泛解析添加方法 *.domain.com\n如另加端口格式为 www.domain.com:88"},null,8,["modelValue"])]),_:1},8,["visible"]),r(f,{type:"primary",class:"absolute",style:{right:"4rem",top:"5rem"},onClick:n(_a)},{default:g(()=>[...i[4]||(i[4]=[y("添加",-1)])]),_:1},8,["onClick"])]),r(b,null,{"header-right":g(()=>[v("div",null,[y(" HTTPS端口:"+Ee(n(s))+" ",1),S(v("span",{class:"bt-link cursor-pointer",onClick:c},"更换",512),[[pe,typeof n(s)=="number"]])])]),content:g(()=>[r(n(u),{"max-height":440})]),"footer-left":g(()=>[r(n(l))]),_:1}),i[5]||(i[5]=v("ul",{class:"mt-[.8rem] leading-8 text-small list-disc ml-2rem"},[v("li",null,"建议所有域名都使用默认的80端口")],-1))])}}}),$a=e=>{xt({type:"dir",path:e.value.path||"/www/dk_project/wwwroot",change:(t,s)=>{e.value.path=t}})},Sa=ne("DOCKER-SITE-SITE-DIR-STORE",()=>{const{siteInfo:e}=V(),t=d([]),s=d({path:"",run_path:"",userini:!1});return{dirOptions:t,resetData:()=>{t.value=[],s.value.path="",s.value.run_path=""},getFormData:()=>s,getDir:async()=>{try{const i={id:e.value.id},p=await _({loading:"正在获取版本,请稍后...",request:ts(i)});p.status?s.value.path=p.data.path:Ke(p)}catch(i){}},formData:s,saveDirPath:async(i,p)=>{if(!i){k.error("请选择目录");return}const m={site_name:e.value.name,id:e.value.id,...p==="path"?{path:i}:{run_path:i}};_({loading:"正在获取版本,请稍后...",message:!0,request:p==="path"?as(m):ns(m)})},setDirUser:async i=>{const p={id:e.value.id,status:i?1:0};_({loading:"正在设置,请稍后...",message:!0,request:rs(p)})},getUserini:async()=>{try{const i={id:e.value.id},p=await _({loading:"正在获取版本,请稍后...",request:ss(i)});p.status?(s.value.userini=p.data.userini,s.value.run_path=p.data.runPath.runPath,t.value=p.data.runPath.dirs.map(m=>({label:m,value:m}))):Ke(p)}catch(i){}}}}),La={class:"p-[2rem] overflow-auto"};function Pa(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Ns(e)}const Fa=C({__name:"index",setup(e,{expose:t}){const s=Sa(),{dirOptions:a,formData:u}=we(s),{getDir:l,resetData:h,saveDirPath:c,setDirUser:o,getUserini:i}=s,{BtForm:p}=he({data:()=>u.value,options:m=>De(()=>[Se("网站目录",()=>r("div",null,[r("div",{class:"formItem"},[r(be,{modelValue:m.value.path,"onUpdate:modelValue":f=>m.value.path=f,width:"32rem"},{append:()=>r($,{onClick:()=>$a(m)},{default:()=>[r(dt,{icon:"icon-file_mode",class:"cursor-pointer"},null)]})}),r($,{type:"primary",class:"!ml-[1.2rem]",onClick:()=>c(m.value.path,"path")},{default:()=>[y("保存")]})]),r("span",{class:"formTips"},[y("当前网站的部署目录,可以选择其他目录")])]),"path",{rules:[{required:!1,trigger:"change",message:"请选择网站目录"}]}),Se("运行目录",()=>{let f;return r("div",null,[r("div",{class:"formItem"},[r(ft,{class:"!w-[32rem]",modelValue:m.value.run_path,"onUpdate:modelValue":b=>m.value.run_path=b},Pa(f=a.value.map(b=>r(yt,{key:b.value,label:b.label,value:b.value},null)))?f:{default:()=>[f]}),r($,{type:"primary",class:"!ml-[1.2rem]",onClick:()=>c(m.value.run_path,"run_path")},{default:()=>[y("保存")]})]),r("span",{class:"formTips"},[y("部分程序需要指定二级目录作为运行目录,如ThinkPHP5,Laravel")])])},"run_path",{rules:[{required:!1,trigger:"change",message:"请选择网站运行目录"}]}),ea(()=>r("div",null,[r(Hs,null,null),r("div",{class:"formItem"},[r("span",{class:"formLabel"},[y("防跨站攻击")]),r(js,{class:"mr-[12px]",modelValue:m.value.userini,"onUpdate:modelValue":f=>m.value.userini=f,onChange:o},null),r("span",{class:"text-tertiary"},[y("防跨站攻击(open_basedir),防止黑客通过其他网站目录进行入侵攻击")])])]),{key:"userini",rules:[]})])});return T(()=>{l(),i()}),ht(()=>{h()}),t({init:()=>{l(),i()}}),(m,f)=>(E(),x("div",La,[r(n(p))]))}}),Ta=Ie(Fa,[["__scopeId","data-v-9a7e95ec"]]),Va=ne("SITE-PSEUDO-STORE",()=>({delPseudoStaticEvent:async a=>{try{const u=await _({loading:"正在删除伪静态规则,请稍候...",request:os(a),message:!0})}catch(u){return{status:!1,msg:"删除失败"}}},getReWriteListEvent:async a=>{try{const{data:u}=await _({request:ls(a)});return{data:u,status}}catch(u){return{status:!1,msg:"获取伪静态列表失败"}}},setTemplateEvent:async a=>{try{const u=await _({loading:"正在设置模板,请稍候...",request:is(a),message:!0});return{status:u.status,msg:u.msg}}catch(u){return{status:!1,msg:"设置模板失败"}}}})),{siteInfo:He}=V(),{getFileEvent:Ia}=oa(),{plugin:qa,getGlobalInfo:Ba}=us(),{webserver:Oa}=Ms(qa.value),{delPseudoStaticEvent:Aa,getReWriteListEvent:Ua,setTemplateEvent:za}=Va(),W=d(""),Lt=d([]),ue=d(""),je=d([]),Ha=d(!1),ja=d(""),K=d(!1),Na=[{content:"请选择您的应用,若设置伪静态后,网站无法正常访问,请尝试设置回default"},{content:"您可以对伪静态规则进行修改,修改完后保存即可。"}],Ma=e=>!Lt.value.includes(e),Ga=async e=>{await q({title:"删除伪静态模板【".concat(e.name,"】"),content:"删除后不可恢复,确定删除吗?",icon:"warning-filled"}),(await Aa(e)).status&&(await ke(),await xe())},ke=async()=>{const e={siteName:He.value.name};K.value=!0;const t=await Ua(e);Wa(t.data),K.value=!1},Wa=async e=>{je.value=e.rewrite,Lt.value=e.default_list,ja.value=e.sitePath+"/.htaccess",ue.value=e.rewrite[0]||""},xe=async(e={site_name:He.value.name})=>{try{K.value=!0;const t=e.path?await Ia(e):await cs(e);return W.value=t.data.data,K.value=!1,t}catch(t){return K.value=!1,{data:"获取伪静态内容失败"}}},Ka=e=>{let t="/www/server/panel/rewrite/".concat(Oa.value,"/").concat(e,".conf");xe({path:e==="0.当前"?"":t})},Xe=async(e={rewrite_conf:W.value,site_name:"".concat(He.value.name)})=>{const t=await ms(e);k.request(t),t.status&&ke()},Ja=async e=>{try{const t={...e,data:W.value};if(t.name=t.name.trim(),t.name.includes(" "))return k.error("模板名称不能包含空格");if(t.name==="")return k.error("模板名称不能为空");if(je.value.includes(t.name))return k.error("模板名称不能和已有的模板名称重复且不可为空");const s=await za(t);return s.status&&(Ha.value=!1,await ke(),await xe()),s.status}catch(t){return!1}},Qa=async()=>{await Ba(),await ke(),await xe()},Xa={class:"h-full"},Ya={class:"flex items-center justify-between"},Za={class:"flex items-center justify-between"},en=["onClick"],tn={class:"flex items-center"},sn={class:"my-[12px]"},an=C({__name:"index",setup(e){const t=()=>{const{BtForm:s,submit:a}=he({options:()=>De(()=>[{type:"input",label:"模板名称",key:"name",attrs:{placeholder:"请输入模板名称"},rules:[{required:!0,message:"请输入模板名称",trigger:"blur"}]}]),submit:async(u,l)=>(await l(),await Ja(u.value))});ae({title:"另存为模板",area:42,showFooter:!0,component:()=>r(s,{class:"p-2rem"},null),onConfirm:a})};return T(Qa),(s,a)=>{const u=yt,l=ft,h=ut,c=Ue,o=$,i=te,p=U("bt-loading");return E(),x("div",Xa,[S((E(),x("div",null,[v("div",Ya,[r(l,{class:"!w-[15rem]",modelValue:n(ue),"onUpdate:modelValue":a[0]||(a[0]=m=>F(ue)?ue.value=m:null),onChange:n(Ka)},{default:g(()=>[(E(!0),x(Gs,null,Ws(n(je),(m,f)=>(E(),X(u,{key:f,value:m},{default:g(()=>[v("div",Za,[v("span",null,Ee(m),1),n(Ma)(m)?(E(),x("span",{key:0,class:"el-icon-close cursor-pointer text-base ml-1rem",onClick:Ks(b=>n(Ga)({name:m}),["stop"])},null,8,en)):M("",!0)])]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue","onChange"]),v("span",tn,[a[4]||(a[4]=y("规则转换工具: ",-1)),r(h,{class:"bt-link",href:"https://www.bt.cn/Tools"},{default:g(()=>[...a[3]||(a[3]=[y("Apache转Nginx ",-1),v("i",{class:"svgtofont-el-link"},null,-1)])]),_:1})])]),v("div",sn,[r(c,{id:"staticContentRef",request:!1,class:"!h-[40rem] !w-full border border-dark rounded-base",modelValue:n(W),"onUpdate:modelValue":a[1]||(a[1]=m=>F(W)?W.value=m:null),onSave:n(Xe)},null,8,["modelValue","onSave"])]),v("div",null,[r(o,{type:"primary",onClick:a[2]||(a[2]=m=>n(Xe)())},{default:g(()=>[...a[5]||(a[5]=[y("保存",-1)])]),_:1}),r(o,{onClick:t},{default:g(()=>[...a[6]||(a[6]=[y("另存为模板",-1)])]),_:1})]),r(i,{options:n(Na),class:"ml-[20px] mt-[20px]"},null,8,["options"])])),[[p,n(K)],[p,"正在加载内容,请稍候...","title"]])])}}}),ge=qe(),{siteInfo:Pt}=V(),P=d("master"),J=d("server_block"),nn=[{label:"server块",value:"server_block"},{label:"HTTP块",value:"http_block"}],rn=[{content:"主配置文件不允许修改,如需自定义配置请到上方自定义配置文件中操作"}],Ft=[{content:"保存前请检查输入的配置文件是否正确,错误的配置可能会导致网站访问异常"},{content:"如果您对此配置不熟悉,请勿添加自定义配置"},{isHtml:!0,content:'server块的nginx官方配置文档:<a class="text-primary cursor-pointer" href="https://nginx.org/en/docs/http/ngx_http_core_module.html#server" target="_blank" rel="noreferrer noopener">点击跳转</a>'}],on=[{content:"保存前请检查输入的配置文件是否正确,错误的配置可能会导致网站访问异常"},{content:"如果您对此配置不熟悉,请勿添加自定义配置"},{isHtml:!0,content:'http块的nginx官方配置文档:<a class="text-primary cursor-pointer" href="https://nginx.org/en/docs/http/ngx_http_core_module.html#http" target="_blank" rel="noreferrer noopener">点击跳转</a>'}],Tt=d(Ft),I=d(""),Le=d(!1),_e=async()=>{try{Le.value=!0;const{data:e}=await ds({site_name:Pt.value.name});return e.status?P.value==="master"?I.value=e.data.site_conf:(I.value=e.data[J.value],Tt.value=J.value==="server_block"?Ft:on):ge.error(e.msg),{data:I.value}}catch(e){return{data:""}}finally{Le.value=!1}};Js(()=>{ge.error("主配置文件不允许修改,如需自定义配置请到上方自定义配置文件中操作")},3e3);const ln=async()=>{if(P.value==="master")return{status:!1,msg:"主配置文件不允许修改,如需自定义配置请到上方自定义配置文件中操作"};let e=ge.load("正在保存内容,请稍候...");try{const t=await ps({site_name:Pt.value.name,conf_type:J.value,body:I.value});return ge.msg({dangerouslyUseHTMLString:!0,message:t.msg,type:t.status?"success":"error",duration:t.status?2e3:0,showClose:!t.status}),t}catch(t){return{status:!1,msg:"保存文件失败"}}finally{e.close()}},un={class:"h-full"},cn={key:0,class:"mb-1rem text-secondary flex items-center"},mn={class:"mt-1rem"},dn={key:0,class:"ml-[20px] mt-[2rem]"},Ye=C({__name:"files",props:{type:{}},setup(e){const t=e;return T(()=>{_e()}),(s,a)=>{const u=pt,l=te,h=Ue,c=$,o=U("bt-loading");return E(),x("div",un,[v("div",null,[n(P)!=="master"?(E(),x("div",cn,[a[4]||(a[4]=v("span",null,"选择配置块:",-1)),r(u,{class:"!w-[16rem]",modelValue:n(J),"onUpdate:modelValue":a[0]||(a[0]=i=>F(J)?J.value=i:null),options:n(nn),onChange:a[1]||(a[1]=i=>n(_e)())},null,8,["modelValue","options"])])):M("",!0),S(r(l,{options:n(rn),"list-style":"none",class:"ml-[12px] text-small mb-1rem"},null,8,["options"]),[[pe,n(P)==="master"]]),S(r(h,{class:Qs(["!w-[64rem] border border-dark rounded-base",t.type==="master"?"!h-[50rem]":"!h-[34rem]"]),modelValue:n(I),"onUpdate:modelValue":a[2]||(a[2]=i=>F(I)?I.value=i:null),id:Math.random()*1e3,editorOption:{readOnly:n(P)==="master",mode:"ace/mode/nginx"}},null,8,["modelValue","class","id","editorOption"]),[[o,n(Le)]]),v("div",mn,[n(P)!=="master"?(E(),X(c,{key:0,type:"primary",onClick:n(ln)},{default:g(()=>[...a[5]||(a[5]=[y("保存",-1)])]),_:1},8,["onClick"])):M("",!0),r(c,{type:"default",onClick:a[3]||(a[3]=i=>n(gs)({value:n(I)}))},{default:g(()=>[...a[6]||(a[6]=[y("复制",-1)])]),_:1})])]),n(P)!=="master"?(E(),x("div",dn,[r(l,{options:n(Tt)},null,8,["options"])])):M("",!0)])}}}),pn=C({__name:"index",setup(e,{expose:t}){const s=B({site_conf:"",http_block:"",server_block:""});Qe("configList",s),Qe("tabActive",P);const{BtTabs:a}=gt({type:"card",value:P,options:[{label:"主配置文件",name:"master",render:()=>r(Ye,{type:"master"},null)},{label:"自定义配置文件",name:"custom",lazy:!0,render:()=>r(Ye,{type:"custom"},null)}]});return t({init:_e}),(u,l)=>(E(),x("div",null,[r(n(a),{onChange:n(_e)},null,8,["onChange"])]))}}),gn=Ie(pn,[["__scopeId","data-v-4ed3f2da"]]),Vt=ne("DOCKERSITE-REDIRECT-STORE",()=>{const e=d(!1);return{changeStatusEvent:async o=>{try{const i=await _({loading:"正在修改,请稍后...",request:de(o),message:!0});return{status:i.status,msg:i.msg}}catch(i){return{status:!1,msg:"修改状态失败"}}},delRedirectEvent:async o=>{try{const i=await _({loading:"正在删除,请稍后...",request:_t(o),message:!0});return{status:i.status,msg:i.msg}}catch(i){return{status:!1,msg:"删除重定向失败"}}},getRedirectFileEvent:async o=>{try{return{data:{content:(await _({loading:"正在获取内容,请稍候...",request:_s(o)})).data.data,redirect_conf_file:o.path},status:!0}}catch(i){return{status:!1,msg:"获取配置文件失败"}}},getRedirectDataEvent:async o=>{try{const i=await _({request:ia(o,"proxy"),data:Array});return{data:i,total:i.length,other:{}}}catch(i){return{data:[],total:0,other:{}}}},submitRedirectEvent:async(o,i)=>{try{const p=await _({loading:"正在提交,请稍后...",request:i?de(o):vs(o),message:!0});return{status:p.status,msg:p.msg}}catch(p){return{status:!1,msg:"添加重定向失败"}}},isRefreshList:e,saveFileEvent:async o=>{try{const i=await _({loading:"正在保存内容,请稍候...",request:la(o),data:{status:Boolean,msg:String},message:!0});return{status:i.status,msg:i.msg}}catch(i){return{status:!1,msg:"保存文件失败"}}},getDomainListEvent:async o=>{try{return{data:(await _({request:lt(o)})).data,status:!0}}catch(i){return{status:!1,msg:"获取域名信息失败"}}}}}),It=()=>we(Vt()),{siteInfo:A}=V(),{isRefreshList:Re}=It(),{getDomainListEvent:_n,changeStatusEvent:vn,delRedirectEvent:fn,getRedirectDataEvent:yn,getRedirectFileEvent:hn,submitRedirectEvent:bn,saveFileEvent:wn}=Vt(),qt=d([]),Q=d(!1),Pe=d(!1),se=d(""),Bt=d(""),Ze=d(!1),et=d(),Ne=d(!1),En=d(),Dn=d(),kn=[{content:"设置域名重定向后,该域名的404重定向将失效"},{content:"取消重定向时,由于浏览器会缓存重定向信息,在清除缓存前,浏览器仍会根据缓存自动重定向"}],Ar=[{content:"重定向类型:表示访问选择的“域名”或输入的“路径”时将会重定向到指定URL"},{content:"目标URL:可以填写你需要重定向到的站点,目标URL必须为可正常访问的URL,否则将返回错误"},{content:"重定向方式:使用301表示永久重定向,使用302表示临时重定向"},{content:"保留URI参数:表示重定向后访问的URL是否带有子路径或参数如设置访问http://b.com"},{content:"重定向到http://a.com 保留URI参数: http://b.com/1.html ---> http://a.com/1.html"},{content:"不保留URI参数:http://b.com/1.html ---> http://a.com"}],Ot=e=>{let t={...e,type:e.type?0:1,redirectdomain:JSON.stringify(e.redirectdomain)};return delete t.redirect_conf_file,t.site_name=A.value.name,delete t.sitename,t},Ce=async(e,t,s,a)=>{const{label:u,value:l}=a,h=new Map([["start","批量启用选中的规则后,配置的重定向域名/目录将会生效"],["stop","批量停用选中的规则后,配置的重定向域名/目录将会失效"],["delete","批量删除当前选中的规则后,配置的重定向域名/目录将会彻底失效"]]),c=async o=>{const i=new Map([["start",de],["stop",de],["delete",_t]]),{redirectname:p}=o,m=i.get(l);switch(l){case"start":case"stop":if(m){const f=Ot({...o,type:l==="stop"?1:0});return await m(f)}case"delete":if(m)return await m({site_name:A.value.name,redirectname:p})}};await e({title:"批量".concat(u),content:"".concat(h.get(l),",是否继续操作?"),column:[{label:"规则名称",render:o=>{var i;return o.errorpage?"404错误页面":o.domainorpath==="domain"?(i=Be(o.redirectdomain,"array",[]))==null?void 0:i.join("、"):o.redirectpath}},na()],onConfirm:async()=>(await t(c),Re.value=!0,!1)})},xn=async e=>{try{const t=Ot(e),s=await vn(t);return s.status&&(Re.value=!0),s}catch(t){return{status:!1,msg:"修改状态失败"}}},Rn=async e=>{var t;try{await q({title:"删除重定向【".concat(e.domainorpath==="domain"?(t=Be(e.redirectdomain,"array",[]))==null?void 0:t.join("、"):e.redirectpath,"】"),content:"删除选中的规则后,配置的重定向域名/目录将指向源地址,是否继续操作?",icon:"warning-filled",type:"calc"});const{name:s}=A.value,{redirectname:a}=e,l=await fn({proxy:{site_name:s,redirectname:a}}.proxy);return l.status&&(Re.value=!0),l}catch(s){return{status:!1,msg:"删除重定向失败"}}},Cn=async e=>{try{Pe.value=!0;let t={path:e.redirect_conf_file};const s=await hn(t);s.status?(Q.value=!0,se.value=s.data.content,Bt.value=s.data.redirect_conf_file):(k.error(s.msg),Q.value=!1),Pe.value=!1}catch(t){Q.value=!1}},tt=async(e={data:se.value,encoding:"utf-8",path:Bt.value})=>await wn(e),$n=async(e=!1)=>{const t={sitename:A.value.name};try{const s=await yn(t);return e&&k.success("刷新成功"),Ze.value=!1,et.value=null,Array.isArray(s.data)&&s.data.forEach(a=>{a.errorpage&&(Ze.value=!0,et.value=a)}),s}catch(s){return{data:[],total:0,other:{}}}},st=e=>{Ne.value=!!e,Dn.value=e||!1,ae({title:"".concat(e?"编辑":"添加","重定向").concat(e?"【".concat(e.sitename,"】"):""),area:68,component:()=>N(()=>import("./add-redirect2.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),btn:!0})},Sn=async()=>{var e;try{const t=await $n();return qt.value=Array.isArray(t.data)?t.data.map(s=>s.redirectdomain).flat():[],{...t,data:((e=t.data)==null?void 0:e.map((s,a)=>({...s,id:a+1})))||[]}}catch(t){}},Ln=e=>{const{name:t}=A.value,{holdpath:s,type:a,redirectdomain:u}=e;return{...e,site_name:t,holdpath:s?"1":"0",type:a?"1":"0",redirectdomain:JSON.stringify(u),redirectname:e.redirectname||new Date().getTime()}},Ur=async e=>{try{const t=Ln(e),s=await bn(t,Ne.value);return s.status&&(Re.value=!0),s.status}catch(t){return!1}},Pn=()=>({site_name:A.value.name,id:A.value.id}),zr=async()=>{try{const e=Pn(),t=await _n(e);return En.value=Ne.value?t.data.domain_list:t.data.domain_list.filter(s=>!qt.value.some(a=>a.includes(s.name))),t}catch(e){return{status:!1,msg:"获取域名失败"}}},Fn={class:"h-full"},Tn={class:"p-[20px]"},Vn=C({__name:"index",setup(e){const t=qe(),{isRefreshList:s}=It(),a=mt([{label:"启用重定向规则",value:"start",event:Ce},{label:"停用重定向规则",value:"stop",event:Ce},{label:"删除重定向规则",value:"delete",event:Ce}]),{BtTable:u,BtRefresh:l,BtBatch:h}=it({request:Sn,columns:[Oe(),{label:"被重定向",render:c=>{var o;return c.errorpage?"404错误页面":c.domainorpath==="domain"?(o=Be(c.redirectdomain,"array",[]))==null?void 0:o.join("、"):c.redirectpath}},{label:"重定向类型",prop:"domainorpath",render:c=>c.errorpage?"错误":c.domainorpath==="domain"?"域名":"路径"},{label:"重定向到",render:c=>c.topath?c.topath:c.tourl},ra({prop:"type",event:xn,data:["已停止","运行中"]}),Ae([{width:70,title:"配置文件",onClick:c=>{if(!c.type)return t.warn("请先启用重定向规则再查看配置文件");Cn(c)}},{title:"编辑",onClick:c=>{st(c)}},{onClick:Rn,title:"删除"}])],extension:[fs(),a,ct(s)]});return(c,o)=>{const i=kt,p=te,m=ys,f=U("bt-loading");return E(),x("div",Fn,[r(i,null,{"header-left":g(()=>[r(n($),{type:"primary",onClick:o[0]||(o[0]=b=>n(st)())},{default:g(()=>[...o[5]||(o[5]=[y("添加重定向",-1)])]),_:1})]),"header-right":g(()=>[r(n(l))]),content:g(()=>[r(n(u),{"max-height":460})]),"footer-left":g(()=>[r(n(h))]),_:1}),r(p,{class:"mt-2rem",options:n(kn),"list-style":"disc"},null,8,["options"]),r(m,{title:"编辑配置文件",modelValue:n(Q),"onUpdate:modelValue":o[4]||(o[4]=b=>F(Q)?Q.value=b:null),area:54},{default:g(()=>[v("div",Tn,[o[7]||(o[7]=y(" 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换 ",-1)),S(r(n(Ue),{class:"!h-[36rem] my-[8px]",ref:"aceEditor",modelValue:n(se),"onUpdate:modelValue":o[1]||(o[1]=b=>F(se)?se.value=b:null),onSave:o[2]||(o[2]=b=>n(tt)())},null,8,["modelValue"]),[[f,n(Pe)]]),r(n($),{type:"primary",onClick:o[3]||(o[3]=b=>n(tt)())},{default:g(()=>[...o[6]||(o[6]=[y("保存",-1)])]),_:1}),o[8]||(o[8]=v("ul",{class:"mt-[8px] leading-8 text-small list-disc ml-[20px]"},[v("li",null,"此处为该重定向的配置文件,若您不了解配置规则,请勿随意修改。")],-1))])]),_:1},8,["modelValue"])])}}}),{siteInfo:Fe}=V(),Te=d(),ve=d(!1),Ve=d(!1),w=B({fix:"jpg,jpeg,gif,png,js,css",domains:"",return_rule:"404",http_status:!1,status:!1}),At=d(null),In=[{content:'【URL后缀】一般填写文件后缀,每个文件后缀使用","分隔,如: png,jpg'},{content:"【许可域名】允许作为来路的域名,每行一个域名,如: www.bt.cn"},{content:"【响应资源】可设置404/403等状态码,也可以设置一个有效资源,如:/security.png"},{content:"【允许空HTTP_REFERER请求】是否允许浏览器直接访问,若您的网站访问异常,可尝试开启此功能"}],qn=e=>{if(!w.status)return k.error("请先启用防盗链!")},Bn=e=>{w.status=e,e||(w.http_status=!1)},at=async e=>{var a;await At.value.validate();let t={...w,domains:(a=w.domains)==null?void 0:a.replace(/\n/g,",")};ve.value?t.site_ids=JSON.stringify(Te.value.map(u=>u.id)):(t.id=Fe.value.id,t.site_name=Fe.value.name),await _({loading:"正在设置防盗链,请稍后...",request:bs(t),message:!ve.value}),Ut(Te.value)},Ut=async e=>{var t,s;if(Te.value=e||[],!e){const{id:a,name:u}=Fe.value;try{Ve.value=!0;const{data:l}=await hs({id:a,name:u});l&&(w.fix=l.fix||"jpg,jpeg,gif,png,js,css",w.domains=((s=(t=l.domains)==null?void 0:t.toString())==null?void 0:s.replace(/,/g,"\n"))||"",w.return_rule=l.return_rule||"404",w.http_status=l.http_status||!1,w.status=l.status||!1)}catch(l){}finally{Ve.value=!1}}},On={fix:[{required:!0,message:"请输入url后缀",trigger:"blur"}],return_rule:[{required:!0,message:"请输入响应资源",trigger:"blur"}]},An={class:"p-[20px]"},Un=C({__name:"index",props:{compData:{default:()=>{}}},emits:["close"],setup(e,{expose:t,emit:s}){const a=e;return T(()=>{Ut(a.compData)}),t({onConfirm:at}),(u,l)=>{const h=be,c=bt,o=Xs,i=$,p=wt,m=te,f=U("bt-loading");return S((E(),x("div",An,[r(p,{ref_key:"hotFormRef",ref:At,model:n(w),rules:n(On)},{default:g(()=>[r(c,{label:"URL后缀",prop:"fix"},{default:g(()=>[r(h,{modelValue:n(w).fix,"onUpdate:modelValue":l[0]||(l[0]=b=>n(w).fix=b),width:"30rem"},null,8,["modelValue"])]),_:1}),r(c,{label:"许可域名"},{default:g(()=>[r(h,{width:"30rem",modelValue:n(w).domains,"onUpdate:modelValue":l[1]||(l[1]=b=>n(w).domains=b),type:"textarea",resize:"none",rows:8,placeholder:"默认添加主域名,可追加其他的允许域名,一行一个,可为空"},null,8,["modelValue"])]),_:1}),r(c,{label:"响应资源",prop:"return_rule"},{default:g(()=>[r(h,{width:"30rem",modelValue:n(w).return_rule,"onUpdate:modelValue":l[2]||(l[2]=b=>n(w).return_rule=b)},null,8,["modelValue"])]),_:1}),r(c,{label:" "},{default:g(()=>[r(o,{modelValue:n(w).status,"onUpdate:modelValue":l[3]||(l[3]=b=>n(w).status=b),onChange:n(Bn)},{default:g(()=>[...l[6]||(l[6]=[y("启用防盗链",-1)])]),_:1},8,["modelValue","onChange"]),r(o,{disabled:!n(w).status,title:"".concat(n(w).status?"":"需开启防盗链"),modelValue:n(w).http_status,"onUpdate:modelValue":l[4]||(l[4]=b=>n(w).http_status=b),onChange:n(qn)},{default:g(()=>[...l[7]||(l[7]=[y(" 允许空HTTP_REFERER请求 ",-1)])]),_:1},8,["disabled","title","modelValue","onChange"])]),_:1}),n(ve)?M("",!0):(E(),X(c,{key:0,label:" "},{default:g(()=>[r(i,{type:"primary",onClick:l[5]||(l[5]=b=>n(at)())},{default:g(()=>[...l[8]||(l[8]=[y("保存",-1)])]),_:1})]),_:1}))]),_:1},8,["model","rules"]),n(ve)?M("",!0):(E(),X(m,{key:0,options:n(In),class:"ml-[20px] mt-[20px]"},null,8,["options"]))])),[[f,n(Ve)]])}}}),zn=ne("DOCKERSITE-LOGS-STORE",()=>({getErrorLogsEvent:async s=>{try{const{data:a}=await Je(s);return{data:a,status:!0}}catch(a){return{msg:"获取错误日志失败",status:!1}}},getResLogEvent:async s=>{try{const a=await Je(s);return{data:a.data,status:a.status}}catch(a){return{msg:"获取日志失败",status:!1}}}})),Hn=qe(),{siteInfo:R}=V(),zt=d("cache"),Y=d({site_name:"",domain_list:[],site_port:[],port_conf:"",ssl_port_conf:"",site_path:"",ssl_info:{},err_age_404:"",err_age_502:"",ip_limit:{ip_black:[],ip_white:[]},basic_auth:[],proxy_cache:{},gzip:{},sub_filter:{},websocket:{},security:{},redirect:{},proxy_log:{},http_block:"",server_block:"",remark:"",proxy_info:[],ipv6_status:!1}),z=async()=>{const e=await ws({site_name:R.value.name});if(!e.status){Hn.error(e.msg);return}Y.value=e.data},jn=d(!1),H=d(!1),Ht=d(),$e=B({status:!1,time:"",unit:"m"}),Hr=[{label:"分钟",value:"m"},{label:"小时",value:"h"},{label:"天",value:"d"}],jr=[{content:"缓存是一种用于加速网站性能和提高用户体验的技术"},{content:"开启后资源会被缓存,如果影响网站访问请关闭"},{content:"缓存键由主机名、URI 和请求参数组成"},{content:"默认忽略的响应头有:Set-Cookie|Cache-Control|expires|X-Accel-Expires"},{content:"默认缓存的静态资源有:css|js|jpg|jpeg|gif|png|webp|woff|eot|ttf|svg|ico|css.map|js.map"}],Nr={time:[{required:!0,message:"请输入正确的缓存时间",trigger:"blur",validator:(e,t,s)=>{t?isNaN(Number(t))?s(new Error("请输入数字")):Number(t)<1?s(new Error("请输入正确数字")):s():s(new Error("目标URL不能为空"))}},{}]},Mr=async()=>{await q({title:"清理缓存【".concat(R.value.name,"】"),width:"35rem",icon:"warning-filled",content:"清理后包含所有URL的及站点的缓存都会被清空,是否继续?"}),await _({loading:"正在清理缓存,请稍后...",request:Es({site_name:R.value.name}),message:!0})},Gr=async()=>{let e={site_name:R.value.name,cache_status:$e.status?1:0,expires:"".concat($e.time).concat($e.unit)};await Ht.value.validate(),await _({loading:H,request:Ds(e),message:!0})},Nn=d(),L=B({status:!1,type:"",level:1,minLength:"",unit:"m"}),Wr=[{label:"k",value:"k"},{label:"m",value:"m"}],Kr=[{content:"用于对 HTTP 响应的内容进行压缩,以减少数据传输量,提高网站性能和加载速度"},{content:"压缩级别1-9,例如:1为压缩速度最快,但压缩率较低;9为压缩速度最慢,但压缩率最高,建议默认"},{content:"如果开启gzip后影响网站正常访问,请关闭此功能 和请求参数组成"}],Jr={type:[{required:!0,message:"请输入压缩类型",trigger:["blur","change"]}],minLength:[{required:!0,message:"请输入正确的压缩最小长度",trigger:"blur",validator:(e,t,s)=>{t?isNaN(Number(t))?s(new Error("请输入数字")):Number(t)<1?s(new Error("请输入正确数字")):s():s(new Error("压缩最小长度不能为空"))}},{}]},Qr=e=>{L.status=e.gzip_status,L.type=e.gzip_types,L.level=e.gzip_comp_level;let t="",s="m";e.gzip_min_length&&e.gzip_min_length.length>1&&(t=e.gzip_min_length.slice(0,-1),s=e.gzip_min_length.slice(-1)),L.minLength=t,L.unit=s},Xr=async()=>{const e={site_name:R.value.name,gzip_status:L.status?1:0,gzip_min_length:"".concat(L.minLength).concat(L.unit),gzip_comp_level:L.level,gzip_types:L.type};await Nn.value.validate(),await _({loading:H,request:ks(e),message:!0})},O=B({loading:!1,type:"black",white:[],black:[]}),Mn=()=>d([Oe(),{label:"IP",prop:"ip",minWidth:120},Ae([{title:"删除",onClick:e=>{jt(e)}}])]),Yr=e=>{O.type=zt.value==="ipBlackList"?"black":"white",Z.value.address="",Z.value.types=O.type,O.white=e.ip_white.map(t=>({ip:t,type:"white"})),O.black=e.ip_black.map(t=>({ip:t,type:"black"}))},jt=async e=>{const t=!!Array.isArray(e);await q({title:"".concat(t?"批量删除IP":"删除".concat(e.type==="white"?"白名单":"黑名单","【").concat(e.ip,"】")),content:t?"批量删除选中的IP,是否继续操作?":"删除".concat(e.type==="white"?"白名单":"黑名单","【").concat(e.ip,"】,是否继续操作?")});let s={site_name:R.value.name};t?(s.ip_type=O.type,s.ips=e.map(l=>l.ip).join("\n")):(s.ip_type=e.type,s.ip=e.ip),(await _({loading:"正在删除,请稍后...",request:(t?Is:qs)(s),message:!0})).status&&z()},Gn=()=>[{label:"删除IP",value:"delete",event:async(e,t,s,a)=>{jt(s.value)}}],Zr=Mn(),eo=Gn(),to=()=>{Z.value.address="",ae({isAsync:!0,title:"添加IP".concat(zt.value==="ipBlackList"?"黑":"白","名单"),area:40,btn:"确认",component:()=>N(()=>import("./add-ip.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{listType:O.type,refreshEvent:()=>{Z.value.address="",z()}}})},Z=d({types:O.type,address:""}),so=[{content:"一行一条配置,多个IP请换行"}],ao=d(),no={address:[{validator:(e,t,s)=>{t.length>0?s():s(new Error("请输入IP地址"))},trigger:["blur","change"]}]},ro=async e=>{const{types:t,address:s}=Z.value,a={site_name:R.value.name,ip_type:t,ips:s};(await _({loading:H,request:xs(a),message:!0})).status&&(Z.value.address="",z(),e())},Wn=d([]),Kn=()=>d([{label:"名称",prop:"auth_name"},{label:"路径",prop:"auth_path"},Ae([{onClick:Jn,title:"编辑"},{onClick:Qn,title:"删除"}])]),Jn=e=>{j.value=e||!1,ae({isAsync:!0,title:"".concat(e?"编辑":"添加","http认证").concat(e?"【".concat(e.auth_name,"】"):""),area:48,btn:"确认",component:()=>N(()=>import("./http-auth-add.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{refreshEvent:z,proxy_info:Y.value.proxy_info,isEdit:!!e,row:e}})},Qn=async e=>{await q({title:"删除http认证【".concat(e.auth_name,"】"),content:"删除http认证【".concat(e.auth_name,"】,是否继续操作?")}),(await _({loading:"正在删除http认证,请稍候...",request:Fs({site_name:R.value.name,auth_path:e.auth_path,name:e.auth_name}),message:!0})).status&&z()},oo=Kn(),lo=e=>{Wn.value=e||[]},j=d(),Nt=d({name:vt(5),path:"",user:"",password:""}),io=[{content:"例如我设置了加密访问/test/,那我访问http://aaa.com/test/时就要输入账号密码才能访问"}],Xn=d(),uo={name:[{required:!0,message:"请输入名称",trigger:["blur","change"]}],path:[{required:!0,message:"请输入路径",trigger:["blur","change"]}],user:[{required:!0,message:"请输入用户名",trigger:["blur","change"]}],password:[{required:!0,message:"请输入密码",trigger:["blur","change"]}]},co=(e,t)=>{const s=Y.value.proxy_info.map(u=>({value:u.proxy_path})),a=e?s.filter(u=>u.value.includes(e)):s;t(a)},mo=async e=>{let t=Nt.value;await Xn.value.validate();const s={site_name:R.value.name,auth_path:t.path,username:t.user,password:t.password,name:t.name},a=j.value?Rs:Cs;(await _({loading:H,request:a(s)})).status&&(z(),e&&e())},po=()=>{Object.assign(Nt.value,{name:j.value?j.value.auth_name:vt(5),path:j.value?j.value.auth_path:"",user:"",password:""})},Mt=d(),D=B({type:"default",accessLog:"",address:"",port:"514"}),Yn={accessLog:[{validator:(e,t,s)=>{D.type==="file"&&!t?s(new Error("请选择日志目录")):s()},trigger:["blur","change"]}],address:[{validator:(e,t,s)=>{D.type==="rsyslog"&&!t?s(new Error("请输入接收地址")):s()},trigger:["blur","change"]}]},Zn=[{content:"指定目录可选择自定义的日志存储目录,请注意此目录必须www用户可写"},{content:"发送到远程服务器设置之后本地不会保存日志内容,填写前请确保日志接收端可正常访问"}],er=[{label:"默认",value:"default"},{label:"不记录日志",value:"off"},{label:"指定目录",value:"file"},{label:"发送到远程服务器",value:"rsyslog"}],tr=e=>{xt({type:"dir",path:"/www/wwwlogs",change:t=>{D.accessLog=t}})},nt=e=>{e?(D.type=e.log_type,D.accessLog=e.log_path,D.address=e.rsyslog_host):D.type="default"},rt=async()=>{await Mt.value.validate();const e={site_name:R.value.name,log_type:D.type,log_path:D.type=="file"?D.accessLog:D.address};await _({loading:"正在设置日志配置,请稍后...",request:Ts(e),message:!0})},Gt=B({websocket:!1}),go=async e=>{(await _({loading:H,request:$s({site_name:R.value.name,websocket_status:e?1:0}),message:!0})).status||(Gt.websocket=!e)},_o=e=>{Gt.websocket=e?e.websocket_status:!1},vo=e=>{_({loading:"正在设置,请稍后...",request:Ss({site_name:R.value.name,status:e?"1":"0"}),message:!0})},fo=async(e,t,s,a)=>{try{const u=await _({loading:e,request:Ls({site_name:R.value.name})});t.value=u.data.data,s.value=u.data.encoding||"utf-8",a.value=u.data.status}catch(u){}},yo=async(e,t)=>{_({request:Vs({site_name:R.value.name,file_body:e,encoding:t}),message:!0})},ho=async()=>{let e={site_name:R.value.name,ipv6_status:Y.value.ipv6_status?"1":"0"};await Ht.value.validate(),await _({loading:H,request:Ps(e),message:!0})},sr={class:"h-full"},ar={class:"mb-[1.6rem] flex justify-between items-center gap-[1.6rem]"},nr={class:"flex"},rr=C({__name:"error-log",setup(e,{expose:t}){return T(ie),t({init:ie}),(s,a)=>{const u=$,l=U("bt-loading");return S((E(),x("div",sr,[v("div",ar,[v("div",null,"日志大小:"+Ee(n(fe).size),1),r(u,{type:"primary",onClick:a[0]||(a[0]=()=>n(ie)())},{default:g(()=>[...a[1]||(a[1]=[y("刷新日志",-1)])]),_:1})]),v("div",nr,[r(Rt,{content:n(fe).logs,isHtml:!0,fullScreen:{title:"全屏查看[错误]日志",onRefresh:n(ie)},style:{height:"56rem",width:"99.5%"}},null,8,["content","fullScreen"])])])),[[l,n(ee)]])}}}),or={class:"h-full"},lr={class:"mb-[16px] flex justify-between items-center gap-[16px]"},ir=C({__name:"response-log",setup(e,{expose:t}){return T(yr),t({init:me}),(s,a)=>{const u=$,l=U("bt-loading");return E(),x("div",or,[v("div",lr,[v("div",null,"日志大小:"+Ee(n(ye).size),1),r(u,{type:"primary",onClick:a[0]||(a[0]=()=>n(me)())},{default:g(()=>[...a[1]||(a[1]=[y("刷新日志",-1)])]),_:1})]),S(r(Rt,{content:n(ye).logs,isHtml:!0,fullScreen:{title:"全屏查看[响应]日志",onRefresh:n(me)},style:{height:"56rem",width:"99.5%"}},null,8,["content","fullScreen"]),[[l,n(ee)]])])}}}),ur={class:"p-[16px]"},cr={class:"mt-[1.6rem]"},mr={class:"mt-[1.6rem]"},dr={class:"ml-[20px]"},pr=C({__name:"config",setup(e,{expose:t}){return Et(()=>Y.value.proxy_log,s=>{nt(s)}),T(()=>{nt(Y.value.proxy_log)}),t({onConfirm:rt}),(s,a)=>{const u=pt,l=bt,h=dt,c=$,o=be,i=wt,p=te,m=U("bt-loading");return E(),x("div",ur,[S((E(),X(i,{ref_key:"logFormRef",ref:Mt,class:"h-[48rem]",model:n(D),"label-width":"60px",rules:n(Yn),disabled:n(H)},{default:g(()=>[r(l,{label:"日志",prop:"type"},{default:g(()=>[r(u,{class:"!w-[24rem]",modelValue:n(D).type,"onUpdate:modelValue":a[0]||(a[0]=f=>n(D).type=f),options:n(er),placeholder:"请选择"},null,8,["modelValue","options"])]),_:1}),S(v("div",cr,[r(l,{label:"访问日志",prop:"accessLog"},{default:g(()=>[r(o,{modelValue:n(D).accessLog,"onUpdate:modelValue":a[2]||(a[2]=f=>n(D).accessLog=f),placeholder:"请选择或输入目录,例如:/www/wwwlogs",width:"35rem"},{append:g(()=>[r(c,{onClick:a[1]||(a[1]=f=>n(tr)("accessLog"))},{default:g(()=>[r(h,{icon:"el-folder-opened",class:"cursor-pointer"})]),_:1})]),_:1},8,["modelValue"])]),_:1})],512),[[pe,n(D).type==="file"]]),S(v("div",mr,[r(l,{label:"接收地址",prop:"address"},{default:g(()=>[r(o,{modelValue:n(D).address,"onUpdate:modelValue":a[3]||(a[3]=f=>n(D).address=f),placeholder:"接收地址,如:202.96.128.86:9204",width:"24rem"},null,8,["modelValue"])]),_:1})],512),[[pe,n(D).type==="rsyslog"]]),r(l,{class:"mt-[1.6rem]",label:" "},{default:g(()=>[r(c,{type:"primary",onClick:n(rt)},{default:g(()=>[...a[4]||(a[4]=[y("保存",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["model","rules","disabled"])),[[m,n(jn)]]),v("div",dr,[r(p,{options:n(Zn)},null,8,["options"])])])}}}),{getErrorLogsEvent:gr,getResLogEvent:_r}=zn(),{siteInfo:Me}=V(),ee=d(!1),fe=d({logs:"",size:"0 b"}),ce=d("response"),vr=d([{label:"响应日志",name:"response",lazy:!0,render:()=>r(ir,null,null)},{label:"错误日志",name:"error",lazy:!0,render:()=>r(rr,null,null)},{label:"配置",name:"config",lazy:!0,render:()=>r(pr,null,null)}]),fr=()=>{var e;ce.value=((e=Me.value)==null?void 0:e.tabName)||"response"},ie=async()=>{const e=Me.value.name;try{ee.value=!0;const t=await gr({site_name:e,type:"error"});return fe.value.size=t.data.size||"0 b",fe.value.logs=t.data.msg||"暂无日志信息",t}catch(t){return{msg:"获取错误日志失败",status:!1}}finally{ee.value=!1}},ye=B({alert:!1,showIp:!1,ipData:0,logs:"",size:"0 b"}),me=async(e=Me.value.name)=>{try{ee.value=!0;const t=await _r({site_name:e,type:"access"});return ye.logs=t.data.msg||"暂无日志信息",ye.size=t.data.size||"0 b",t}catch(t){return{msg:"获取日志失败",status:!1}}finally{ee.value=!1}},yr=async()=>{await me(),z()},hr=C({__name:"index",setup(e){return T(fr),(t,s)=>{const a=Bs;return E(),x("div",null,[r(a,{type:"card",modelValue:n(ce),"onUpdate:modelValue":s[0]||(s[0]=u=>F(ce)?ce.value=u:null),options:n(vr)},null,8,["modelValue","options"])])}}}),{siteInfo:Wt}=V(),Ge=d([]),br=()=>({version:"",oldVersion:""}),ot=async e=>{const t=await _({request:Os({id:Wt.value.id})});t.status?(e.value.version="".concat(t.data.used.name,":").concat(t.data.used.version),e.value.oldVersion="".concat(t.data.used.name,":").concat(t.data.used.version),Ge.value=t.data.runtime_list.map(s=>({label:"PHP-".concat(s.version,"(").concat(s.name,")"),value:"".concat(s.name,":").concat(s.version)}))):k.error(t.msg)},wr=async({version:e,oldVersion:t},s)=>{try{if(e===t){k.error("当前版本与原版本一致,无需切换");return}await q({title:"切换PHP版本",content:"切换PHP版本可能会导致无法访问,是否切换?"}),_({loading:"正在切换PHP版本,请稍后...",request:As({id:Wt.value.id,runtime_name:e}),message:!0,success:a=>{a.status&&(s.value.oldVersion=e)}})}catch(a){}},Er=()=>{Ge.value=[]},Dr={class:"p-[16px]"},kr={class:"ml-[20px]"},xr=C({__name:"index",setup(e,{expose:t}){const{BtForm:s,submit:a,param:u}=he({data:br,options:()=>De(()=>[ta("PHP版本","version",Ge.value,{attrs:{class:"!w-[22rem]"},rules:[{required:!0,message:"请选择PHP版本",trigger:"change"}]}),sa("切换",{label:" ",attrs:{type:"primary",onClick:a}})]),submit:async(l,h,c)=>{await h(),wr(l.value,u)}});return T(()=>{ot(u)}),ht(()=>{Er()}),t({init:()=>{ot(u)}}),(l,h)=>{const c=te;return E(),x("div",Dr,[r(n(s)),v("div",kr,[r(c,{options:[{content:"切换PHP版本可能会导致网站无法访问"},{content:"如果网站访问异常,建议删除网站重新创建以选择新的PHP版本"}]})])])}}}),Rr=C({__name:"index",setup(e){const{settingTabActive:t,siteInfo:s}=we(Ys()),a=d(t.value||"domain"),{BtTabs:u}=gt({type:"left-bg-card",value:a,options:[{label:"域名管理",name:"domain",lazy:!0,render:()=>r(Ca,null,null)},{label:"网站目录",name:"dir",lazy:!0,render:()=>r(Ta,null,null)},{label:"反向代理",name:"urlProxy",lazy:!0,render:()=>N(()=>import("./index386.js?v=1777008528").then(l=>l.af),__vite__mapDeps([]),import.meta.url)},{label:"全局配置",name:"golbalConfig",lazy:!0,render:()=>N(()=>import("./index541.js?v=1777008528"),__vite__mapDeps([]),import.meta.url)},{label:"伪静态",name:"pseudo",lazy:!0,render:()=>r(an,null,null)},{label:"配置文件",name:"configFile",lazy:!0,render:()=>r(gn,null,null)},{label:"SSL",name:"ssl",lazy:!0,render:()=>N(()=>import("./index364.js?v=1777008528"),__vite__mapDeps([]),import.meta.url)},...s.value.type==="PHP"?[{label:"PHP",name:"php",lazy:!0,render:()=>r(xr,null,null)}]:[],{label:"重定向",name:"redirect",lazy:!0,render:()=>r(Vn,null,null)},{label:"防盗链",name:"antiLeech",lazy:!0,render:()=>r(Un,null,null)},{label:"日志",name:"siteLogs",lazy:!0,render:()=>r(hr,null,null)}]});return Et(()=>t.value,l=>{l&&(a.value=t.value,t.value="")}),(l,h)=>(E(),X(n(u)))}}),Cr=Ie(Rr,[["__scopeId","data-v-59d4f08d"]]),bo=Object.freeze(Object.defineProperty({__proto__:null,default:Cr},Symbol.toStringTag,{value:"Module"}));export{bo as $,jr as A,Y as B,Qr as C,L as D,Xr as E,Wr as F,Nn as G,Jr as H,Kr as I,zt as J,to as K,Yr as L,O as M,Zr as N,Jn as O,lo as P,Wn as Q,oo as R,_o as S,eo as T,Gt as U,go as V,fo as W,vo as X,yo as Y,ho as Z,z as _,Ar as a,so as b,ao as c,En as d,no as e,H as f,zr as g,po as h,Z as i,mo as j,Nt as k,j as l,io as m,Xn as n,ro as o,uo as p,co as q,Dn as r,Ur as s,Gr as t,jn as u,$e as v,Hr as w,Mr as x,Ht as y,Nr as z};
function __vite__mapDeps(indexes) {
if (!__vite__mapDeps.viteFileDeps) {
__vite__mapDeps.viteFileDeps = []
}
return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}