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/index293.js
import{_ as be}from"./index118.js?v=1777008528";import{B as ve}from"./index130.js?v=1777008528";import{c as xe,k as S,M as F,w as ge,d3 as _e,d4 as he,cO as Ve,cP as we,K as Ce}from"./utils-lib.js?v=1777008528";import{c as Ue,r as p,H as Se,o as ke,I as Ee,j as k,k as B,e as o,v as r,x as q,J as Pe,p as l,Q as G,q as m,C as K,y as Q,F as Fe,B as qe,V as Re,z as Le,ap as Be,ad as De,ab as Te}from"./base-lib.js?v=1777008528";import{_ as Me}from"./index131.js?v=1777008528";import{modifyModulesProxy as D,modifyProxy as T,getProxyFile as Ne,removeModulesProxy as W,removeProxy as X,getModulesProxyList as $e,getProxyList as Oe,asyncSaveProxyFile as He,saveRedirectFile as Ie,createProxySite as Ae,createProxy as Je}from"./site.js?v=1777008528";import{e as je,y as ze,g as Ge,b as Ke}from"./index3.js?v=1777008528";import{n as Qe}from"./useController13.js?v=1777008528";import{u as We}from"./useStore2.js?v=1777008528";import"./ace.js?v=1777008528";import"./__commonjsHelpers__.js?v=1777008528";import"./index119.js?v=1777008528";import"./index116.js?v=1777008528";const Xe={class:"p-[20px]"},Ye={class:"flex items-center"},Ze={class:"flex items-center"},et=["onClick"],tt={class:"p-2rem"},bt=Ue({__name:"index",props:{compData:{default:()=>({})}},setup(at,{expose:Y}){var j,z;const{plugin:Z}=xe(),{siteInfo:f}=We(),{webserver:ee}=Z.value,u=p((z=(j=f.value)==null?void 0:j.project_type)==null?void 0:z.toLowerCase()),M=p();p(""),p([]),p("");const N=p([]),$=p(!1),O=p(!1),H=p({}),te=Se({proxyname:[{required:!0,message:"请输入代理名称",trigger:["blur","change"]},{trigger:["blur","input","change"],validator:(a,e,n)=>{e.length<3?n(new Error("代理名称必须大于3个字符串")):n()}}],proxysite:[{required:!0,message:"请输入目标url",trigger:"blur",validator:(a,e,n)=>{e?n():n(new Error("目标URL不能为空"))}}],todomain:[{required:!0,message:"请输入发送域名",trigger:["blur","change"]}]}),t=p({isEdit:!1,type:!0,cache:!1,advanced:!1,proxyname:"",cachetime:1,proxydir:"/",proxysite:"http://",todomain:"",subfilter:[{sub1:"",sub2:"",id:1}],subNum:1,path:"",content:""}),_=p(!1),w=p(!1),ae=[{content:"代理目录:访问这个目录时将会把目标URL的内容返回并显示(需要开启高级功能)"},{content:"目标URL:可以填写你需要代理的站点,目标URL必须为可正常访问的URL,否则将返回错误"},{content:"发送域名:将域名添加到请求头传递到代理服务器,默认为目标URL域名,若设置不当可能导致代理无法正常运行"},{content:"内容替换:只能在使用nginx时提供,最多可以添加3条替换内容,如果不需要替换请留空"}],R=async(a,e,n,c)=>{const{label:b,value:v}=c,x=new Map([["start","批量启动选中的规则后,配置的反向代理规则将继续生效"],["stop","批量停用选中的规则后,配置的反向代理规则将会失效"],["delete","批量删除选中的规则后,配置的反向代理规则将会彻底失效"]]),d=async(i,E)=>{const{proxyname:g,subfilter:h}=i,C=["proxy","phpasync"].includes(u.value);switch(v){case"start":case"stop":let U={...i,subfilter:JSON.stringify(h),type:v==="start"?1:0};const V=C?await D(U,u.value):await T(U);return{...i,batchStatus:V.status?1:2,message:V.msg};case"delete":const s={sitename:f.value.name,proxyname:u.value==="phpasync"?[g]:g},L=C?await W(s,u.value):await X(s);return{...i,batchStatus:L.status?1:2,message:L.msg}}};await a({title:"批量".concat(b),content:"".concat(x.get(v),",是否继续操作?"),column:[{label:"名称",prop:"proxyname"},Ke()],onConfirm:async()=>(await e(d),y(),!1)})},le=()=>[{label:"启用反向代理规则",value:"start",event:R},{label:"停用反向代理规则",value:"stop",event:R},{label:"删除反向代理规则",value:"delete",event:R}],se=()=>Re([je({key:"proxydir"}),{label:"名称",prop:"proxyname"},{label:"代理目录",prop:"proxydir"},{label:"目标URL",width:140,render:a=>o("span",{class:"bt-link",onClick:()=>{window.open(a.proxysite)}},[a.proxysite])},{prop:"cache",label:"缓存",width:60,render:a=>{const{cache:e}=a;return o("span",{class:"".concat(e?"bt-link":"bt-danger"),onClick:()=>{I(a,"cache")}},[e?"已开启":"已关闭"])}},ze({prop:"type",event:I,data:["已暂停","运行中"]}),Ge([{onClick:ne,title:"配置文件",width:56},{onClick:re,title:"编辑"},{onClick:me,title:"删除"}])]),oe=a=>{let e=a.replace(/^http[s]?:\/\//,"");e=e.replace(/(:|\?|\/|\\)(.*)$/,""),t.value.todomain=e},I=async(a,e)=>{let n={...a,subfilter:JSON.stringify(a.subfilter)};e==="cache"?n.cache=a.cache?0:1:n.type=a.type?0:1;const c=["proxy","phpasync"].includes(u.value);(await S({loading:"正在修改状态中,请稍后...",request:c?D(n,u.value):T(n),message:!0})).status&&y()},ne=async a=>{try{if(a.type===0)return F.error("该规则已暂停,无法查看配置文件");const{data:e}=await Ne({sitename:f.value.name,proxyname:a.proxyname,webserver:ee});e.status===!1?F.request(e):(t.value.content=e[0].data,t.value.path=e[1],t.value.proxyname=a.proxyname,w.value=!0)}catch(e){}},A=async()=>{const a=u.value==="phpasync",e=a?He:Ie,n={path:t.value.path,[a?"config":"data"]:t.value.content,encoding:"utf-8"};(await S({loading:"正在保存配置文件,请稍后...",request:e(n),message:!0})).status&&(w.value=!1,J(),y())},re=async a=>{t.value.isEdit=!0,t.value.proxyname=a.proxyname,t.value.proxydir=a.proxydir,t.value.proxysite=a.proxysite,t.value.todomain=a.todomain,t.value.type=!!a.type,t.value.cache=!!a.cache,t.value.advanced=!!a.advanced,t.value.cachetime=a.cachetime,t.value.subfilter=a.subfilter.map((e,n)=>({sub1:e.sub1,sub2:e.sub2,id:n})).filter(e=>e.sub1!==""),_.value=!0},ue=async()=>{J(),_.value=!0},J=async()=>{t.value.isEdit=!1,t.value.proxyname="",t.value.proxydir="/",t.value.proxysite="http://",t.value.todomain="",t.value.type=!0,t.value.cache=!1,t.value.advanced=!1,t.value.cachetime=1,t.value.subfilter=[{sub1:"",sub2:"",id:1}],t.value.subNum=1},ie=async()=>{if(t.value.subfilter.length===3){F.error("最多添加三条内容替换");return}t.value.subfilter.push({sub1:"",sub2:"",id:Math.random()*100})},de=async a=>{if(t.value.subfilter.length===1){F.error("至少保留一条内容替换");return}t.value.subfilter=t.value.subfilter.filter(e=>e.id!==a.id)},pe=a=>{const e=[...a];for(;e.length<3;)e.push({sub1:"",sub2:""});return e.map((n,c)=>({sub1:n.sub1,sub2:n.sub2,id:Math.random()*100}))},ce=async()=>{await H.value.validate();const{isEdit:a,type:e,subfilter:n,cache:c,advanced:b,proxyname:v,proxydir:x,proxysite:d,todomain:i,cachetime:E}=t.value;let g={subfilter:JSON.stringify(pe(n).map(s=>({sub1:s.sub1,sub2:s.sub2}))),type:e?1:0,cache:c?1:0,advanced:b?1:0,sitename:f.value.name,proxyname:v,proxydir:x,proxysite:d,todomain:i,cachetime:E};const h=["proxy","phpasync"].includes(u.value);(await S({loading:O,request:h?(a?D:Ae)(g,u.value):(a?T:Je)(g),message:!0})).status&&(y(),_.value=!1)},me=async a=>{await ge({title:"删除反向代理规则【".concat(a.proxyname,"】"),content:"删除选中的规则后,配置的反向代理规则将会彻底失效,是否继续操作?",icon:"warning-filled"});const e=["proxy","phpasync"].includes(u.value),n={phpasync:{sitename:f.value.name,proxyname:a.proxyname},default:{sitename:f.value.name,proxyname:[a.proxyname]}},c=n[u.value]||n.default;(await S({loading:"正在删除,请稍后...",request:e?W(c,u.value):X(n.default),message:!0})).status&&y()},y=async()=>{const a={sitename:f.value.name},e=["proxy","phpasync"].includes(u.value);await S({loading:$,request:e?$e(a,u.value):Oe(a),data:[Array,N]})},ye=le(),fe=se();return ke(y),Y({init:y}),(a,e)=>{const n=Le,c=Me,b=_e,v=he,x=Be,d=De,i=Ve,E=Te,g=we,h=Ce,C=ve,U=be,V=Ee("bt-loading");return k(),B("div",null,[o(U,null,{"header-left":r(()=>[o(n,{type:"primary",onClick:ue},{default:r(()=>[...e[11]||(e[11]=[q("添加反向代理",-1)])]),_:1})]),"header-right":r(()=>[o(c,{onRefresh:y})]),content:r(()=>[Pe(o(b,{ref_key:"reverseTableRef",ref:M,column:l(fe),"max-height":520,data:l(N)},null,8,["column","data"]),[[V,l($)],[V,"正在获取列表,请稍候...","title"]])]),"footer-left":r(()=>[o(v,{"table-ref":l(M),options:l(ye)},null,8,["table-ref","options"])]),"footer-right":r(()=>[...e[12]||(e[12]=[])]),popup:r(()=>[o(h,{title:l(t).isEdit?"修改反向代理【".concat(l(t).proxyname,"】"):"添加反向代理",modelValue:l(_),"onUpdate:modelValue":e[8]||(e[8]=s=>G(_)?_.value=s:null),"show-footer":!0,area:68,onConfirm:ce},{default:r(()=>[m("div",Xe,[o(E,{ref_key:"proxyForm",ref:H,model:l(t),rules:l(te),disabled:l(O),"label-width":"80px"},{default:r(()=>[o(d,{label:"开启代理"},{default:r(()=>[m("div",Ye,[o(x,{modelValue:l(t).type,"onUpdate:modelValue":e[0]||(e[0]=s=>l(t).type=s)},null,8,["modelValue"]),o(d,{label:"开启缓存",class:"!mt-0"},{default:r(()=>[o(x,{modelValue:l(t).cache,"onUpdate:modelValue":e[1]||(e[1]=s=>l(t).cache=s)},null,8,["modelValue"])]),_:1}),o(d,{label:"高级功能",class:"!mt-0"},{default:r(()=>[o(x,{modelValue:l(t).advanced,"onUpdate:modelValue":e[2]||(e[2]=s=>l(t).advanced=s)},null,8,["modelValue"])]),_:1})])]),_:1}),o(d,{label:"代理名称",prop:"proxyname"},{default:r(()=>[o(i,{modelValue:l(t).proxyname,"onUpdate:modelValue":e[3]||(e[3]=s=>l(t).proxyname=s),disabled:l(t).isEdit,placeholder:"请输入代理名称",width:"20rem"},null,8,["modelValue","disabled"])]),_:1}),l(t).cache?(k(),K(d,{key:0,label:"缓存时间",prop:"cachetime"},{default:r(()=>[o(i,{modelValue:l(t).cachetime,"onUpdate:modelValue":e[4]||(e[4]=s=>l(t).cachetime=s),placeholder:"请输入缓存时间",width:"20rem",textType:"分钟"},{append:r(()=>[...e[13]||(e[13]=[q(" 分钟 ",-1)])]),_:1},8,["modelValue"])]),_:1})):Q("",!0),l(t).advanced?(k(),K(d,{key:1,label:"代理目录",prop:"proxydir"},{default:r(()=>[o(i,{modelValue:l(t).proxydir,"onUpdate:modelValue":e[5]||(e[5]=s=>l(t).proxydir=s),placeholder:"请输入代理目录",width:"20rem"},null,8,["modelValue"])]),_:1})):Q("",!0),o(d,{label:"目标URL",prop:"proxysite","label-width":"80px"},{default:r(()=>[m("div",Ze,[o(i,{modelValue:l(t).proxysite,"onUpdate:modelValue":e[6]||(e[6]=s=>l(t).proxysite=s),placeholder:"请输入目标URL",width:"20rem",onInput:oe},null,8,["modelValue"]),o(d,{label:"发送域名",prop:"todomain","label-width":"50px"},{default:r(()=>[o(i,{modelValue:l(t).todomain,"onUpdate:modelValue":e[7]||(e[7]=s=>l(t).todomain=s),placeholder:"请输入发送域名",width:"20rem"},null,8,["modelValue"])]),_:1})])]),_:1}),o(d,{label:"内容替换"},{default:r(()=>[(k(!0),B(Fe,null,qe(l(t).subfilter,(s,L)=>(k(),B("div",{key:s.id,class:"flex items-center mb-1rem"},[o(i,{modelValue:s.sub1,"onUpdate:modelValue":P=>s.sub1=P,placeholder:"被替换的文本,可留空",width:"20rem",class:"mr-2rem !w-20rem"},null,8,["modelValue","onUpdate:modelValue"]),o(i,{modelValue:s.sub2,"onUpdate:modelValue":P=>s.sub2=P,placeholder:"替换为,可留空",width:"20rem",class:"mr-1rem !w-20rem"},null,8,["modelValue","onUpdate:modelValue"]),m("span",{class:"text-danger cursor-pointer",onClick:P=>de(s)},"删除",8,et)]))),128)),o(n,{disabled:l(t).subfilter.length===3,type:"primary",class:"!mt-1rem",onClick:ie},{default:r(()=>[...e[14]||(e[14]=[m("span",{class:"svgtofont-el-plus"},null,-1),q(" 添加内容替换 ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1},8,["model","rules","disabled"]),o(g,{options:ae,class:"mt-2rem pl-2rem"})])]),_:1},8,["title","modelValue"]),o(h,{title:"编辑配置文件【".concat(l(t).proxyname,"】"),modelValue:l(w),"onUpdate:modelValue":e[10]||(e[10]=s=>G(w)?w.value=s:null),area:55},{default:r(()=>[m("div",tt,[e[16]||(e[16]=m("div",{class:"text-secondary h-[2rem] leading-[2rem] mb-[1rem]"},"提示:Ctrl+S 保存",-1)),o(C,{modelValue:l(t).content,"onUpdate:modelValue":e[9]||(e[9]=s=>l(t).content=s),filePath:l(t).path,config:l(Qe)(),request:!1,class:"!h-38rem",onSave:A},null,8,["modelValue","filePath","config"]),o(n,{type:"primary",class:"!mt-2rem",onClick:A},{default:r(()=>[...e[15]||(e[15]=[q("保存",-1)])]),_:1})])]),_:1},8,["title","modelValue"])]),_:1}),e[17]||(e[17]=m("ul",{class:"mt-[20px] leading-8 text-small list-disc ml-[20px]"},[m("li",null,"设置了反向代理后,【访问限制】中的相应路径的规则将会失效")],-1))])}}});export{bt as default};