diff --git a/linker.tray.win/dist/linker.tray.win.exe b/linker.tray.win/dist/linker.tray.win.exe
index 092ed69c..298a698c 100644
Binary files a/linker.tray.win/dist/linker.tray.win.exe and b/linker.tray.win/dist/linker.tray.win.exe differ
diff --git a/linker.tray.win/web/css/904.1c23cc4a.css b/linker.tray.win/web/css/904.1c23cc4a.css
new file mode 100644
index 00000000..06a24756
--- /dev/null
+++ b/linker.tray.win/web/css/904.1c23cc4a.css
@@ -0,0 +1 @@
+.running-version-wrap[data-v-727cd437]{padding:0 0 1rem 0;line-height:3.2rem}.running-version-wrap span[data-v-727cd437]{vertical-align:top}.green[data-v-7981ea4b],.red[data-v-7981ea4b]{font-weight:700}.servers-wrap[data-v-40863bc6]{padding:1rem;font-size:1.3rem;color:#555}.servers-wrap a[data-v-40863bc6]{color:#333}.el-checkbox[data-v-40863bc6]{vertical-align:middle;margin-right:1rem}
\ No newline at end of file
diff --git a/linker.tray.win/web/css/904.54641a6b.css b/linker.tray.win/web/css/904.54641a6b.css
deleted file mode 100644
index 51102874..00000000
--- a/linker.tray.win/web/css/904.54641a6b.css
+++ /dev/null
@@ -1 +0,0 @@
-.running-version-wrap[data-v-35014fb5]{padding:0 0 1rem 0;line-height:2.4rem}.running-version-wrap span[data-v-35014fb5]{vertical-align:middle}.green[data-v-7981ea4b],.red[data-v-7981ea4b]{font-weight:700}.servers-wrap[data-v-40863bc6]{padding:1rem;font-size:1.3rem;color:#555}.servers-wrap a[data-v-40863bc6]{color:#333}.el-checkbox[data-v-40863bc6]{vertical-align:middle;margin-right:1rem}
\ No newline at end of file
diff --git a/linker.tray.win/web/index.html b/linker.tray.win/web/index.html
index bc25a4f9..43f92c13 100644
--- a/linker.tray.win/web/index.html
+++ b/linker.tray.win/web/index.html
@@ -1 +1 @@
-
linker.web
\ No newline at end of file
+linker.web
\ No newline at end of file
diff --git a/linker.tray.win/web/js/193.4d660997.js b/linker.tray.win/web/js/193.4d660997.js
new file mode 100644
index 00000000..50b40446
--- /dev/null
+++ b/linker.tray.win/web/js/193.4d660997.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[193],{8835:function(e,t,n){n.d(t,{a:function(){return l},z:function(){return o}});var a=n(4);const o=()=>(0,a.zG)("configclient/get"),l=e=>(0,a.zG)("configclient/install",e)},4:function(e,t,n){n.d(t,{a1:function(){return m},e3:function(){return k},jH:function(){return S},zG:function(){return C}});n(4114),n(6573),n(8100),n(7936);var a=n(1219);let o=0,l=null,s="",r=1,i="";const u={},c={connected:!1,connecting:!1},d=()=>{const e=Date.now();for(let t in u){const n=u[t];e-n.time>n.timeout&&(n.reject("超时~"),delete u[t])}setTimeout(d,1e3)};d();const p={subs:{},add:function(e,t){"function"==typeof t&&(this.subs[e]||(this.subs[e]=[]),this.subs[e].push(t))},remove(e,t){let n=this.subs[e]||[];for(let a=n.length-1;a>=0;a--)n[a]==t&&n.splice(a,1)},push(e,t){let n=this.subs[e]||[];for(let a=n.length-1;a>=0;a--)n[a](t)}},v=()=>{c.connected=!0,c.connecting=!1,p.push(w,c.connected)},g=e=>{c.connected=!1,c.connecting=!1,p.push(w,c.connected),setTimeout((()=>{m()}),1e3)},f=e=>{if("string"!=typeof e.data)return void e.data.arrayBuffer().then((t=>{const n=new DataView(t).getInt8(),a=new FileReader;a.readAsText(e.data.slice(4,4+n),"utf8"),a.onload=()=>{let o=JSON.parse(a.result);o.Content={Name:o.Content,Img:e.data.slice(4+n,e.data.length),ArrayBuffer:t},h(o)}}));let t=JSON.parse(e.data);h(t)},h=e=>{let t=u[e.RequestId];t?(0==e.Code?t.resolve(e.Content):1==e.Code?t.reject(e.Content):255==e.Code?(t.reject(e.Content),t.errHandle||a.nk.error(`${t.path}:${e.Content}`)):p.push(e.Path,e.Content),delete u[e.RequestId]):p.push(e.Path,e.Content)},m=(e=s,t=i)=>{if(i=t,s=e,c.connecting||c.connected)return;null!=l&&l.close(),c.connecting=!0;const n=t||"snltty";l=new WebSocket(s,[n]),l.iddd=++r,l.onopen=v,l.onclose=g,l.onmessage=f},k=()=>{l&&l.close()},C=(e,t={},n=!1,a=15e3)=>new Promise(((s,r)=>{let i=++o;try{u[i]={resolve:s,reject:r,errHandle:n,path:e,time:Date.now(),timeout:a};let o=JSON.stringify({Path:e,RequestId:i,Content:"string"==typeof t?t:JSON.stringify(t)});c.connected&&1==l.readyState?l.send(o):r("网络错误~")}catch(d){console.log(d),r("网络错误~"),delete u[i]}})),w=Symbol(),S=e=>{p.add(w,e)}},9299:function(e,t,n){n.d(t,{BS:function(){return u},SZ:function(){return s},Se:function(){return c},VN:function(){return r},gC:function(){return d},jU:function(){return l},nD:function(){return i},rd:function(){return o}});var a=n(4);const o=e=>(0,a.zG)("signInclient/set",e),l=e=>(0,a.zG)("signInclient/setservers",e),s=()=>(0,a.zG)("signInclient/info"),r=e=>(0,a.zG)("signInclient/setorder",e),i=e=>(0,a.zG)("signInclient/List",e),u=e=>(0,a.zG)("signInclient/ids",e),c=e=>(0,a.zG)("signInclient/del",e),d=e=>(0,a.zG)("signInclient/setname",e)},920:function(e,t,n){n.d(t,{BJ:function(){return c},NS:function(){return s},Vk:function(){return u},aP:function(){return p},ir:function(){return i},lJ:function(){return l},mK:function(){return o},y2:function(){return d},yN:function(){return r}});var a=n(4);const o=(e="0")=>(0,a.zG)("updaterclient/get",e),l=e=>(0,a.zG)("updaterclient/confirm",e),s=e=>(0,a.zG)("updaterclient/exit",e),r=()=>(0,a.zG)("updaterclient/GetSecretKey"),i=e=>(0,a.zG)("updaterclient/SetSecretKey",e),u=()=>(0,a.zG)("updaterclient/getcurrent"),c=()=>(0,a.zG)("updaterclient/getserver"),d=e=>(0,a.zG)("updaterclient/confirmserver",e),p=()=>(0,a.zG)("updaterclient/exitserver")},3830:function(e,t,n){n.d(t,{B:function(){return i},v:function(){return r}});var a=n(4),o=n(144),l=n(6768);const s=Symbol(),r=()=>{const e=(0,o.KR)({api:{connected:!1},height:0,config:{Common:{},Client:{Servers:[]},Server:{},Running:{Relay:{Servers:[]},Tuntap:{IP:"",PrefixLength:24},Client:{Servers:[]},AutoSyncs:{}},configed:!1},signin:{Connected:!1,Connecting:!1,Version:"v1.0.0.0"},bufferSize:["1KB","2KB","4KB","8KB","16KB","32KB","64KB","128KB","256KB","512KB","1024KB"],updater:{},self:{}});return(0,a.jH)((t=>{e.value.api.connected=t})),(0,l.Gt)(s,e),e},i=()=>(0,l.WQ)(s)},119:function(e,t,n){n.d(t,{A:function(){return Z}});var a=n(6768),o=n(4232),l=n.p+"img/memory.a28433e5.svg",s=n.p+"img/wechat.5c371c5d.jpg",r=n.p+"img/alipay.ff9b1e7c.jpg";const i=e=>((0,a.Qi)("data-v-7cb8db0a"),e=e(),(0,a.jt)(),e),u={class:"status-wrap flex"},c={class:"copy"},d=i((()=>(0,a.Lk)("img",{src:l,alt:"memory"},null,-1))),p=i((()=>(0,a.Lk)("span",null,"赞助",-1))),v=[d,p],g=i((()=>(0,a.Lk)("a",{href:"https://github.com/snltty/linker",target:"_blank"},"snltty©linker",-1))),f=["title"],h={key:0,class:"progress"},m={key:1,class:"progress"},k=i((()=>(0,a.Lk)("div",{class:"flex-1"},null,-1))),C={class:"api"},w={class:"server"},S=i((()=>(0,a.Lk)("div",{class:"pay"},[(0,a.Lk)("img",{src:s,alt:""}),(0,a.Lk)("img",{src:r,alt:""})],-1)));function y(e,t,n,l,s,r){const i=(0,a.g2)("Loading"),d=(0,a.g2)("el-icon"),p=(0,a.g2)("Download"),y=(0,a.g2)("CircleCheck"),b=(0,a.g2)("Api"),V=(0,a.g2)("Server"),L=(0,a.g2)("el-dialog");return(0,a.uX)(),(0,a.CE)("div",u,[(0,a.Lk)("div",c,[(0,a.Lk)("a",{href:"javascript:;",class:"memory",title:"赞助一笔,让作者饱餐一顿",onClick:t[0]||(t[0]=e=>l.state.showPay=!0)},v),g,(0,a.Lk)("a",{href:"javascript:;",class:(0,o.C4)(["download",l.updateColor]),onClick:t[1]||(t[1]=e=>l.handleUpdate()),title:l.updateText},[(0,a.Lk)("span",null,[(0,a.Lk)("span",null,(0,o.v_)(l.self.Version),1),l.updater.Version?((0,a.uX)(),(0,a.CE)(a.FK,{key:0},[1==l.updater.Status?((0,a.uX)(),(0,a.Wv)(d,{key:0,size:"14",class:"loading"},{default:(0,a.k6)((()=>[(0,a.bF)(i)])),_:1})):2==l.updater.Status?((0,a.uX)(),(0,a.Wv)(d,{key:1,size:"14"},{default:(0,a.k6)((()=>[(0,a.bF)(p)])),_:1})):3==l.updater.Status||5==l.updater.Status?((0,a.uX)(),(0,a.CE)(a.FK,{key:2},[(0,a.bF)(d,{size:"14",class:"loading"},{default:(0,a.k6)((()=>[(0,a.bF)(i)])),_:1}),0==l.updater.Length?((0,a.uX)(),(0,a.CE)("span",h,"0%")):((0,a.uX)(),(0,a.CE)("span",m,(0,o.v_)(parseInt(l.updater.Current/l.updater.Length*100))+"%",1))],64)):6==l.updater.Status?((0,a.uX)(),(0,a.Wv)(d,{key:3,size:"14",class:"yellow"},{default:(0,a.k6)((()=>[(0,a.bF)(y)])),_:1})):(0,a.Q3)("",!0)],64)):((0,a.uX)(),(0,a.Wv)(d,{key:1,size:"14"},{default:(0,a.k6)((()=>[(0,a.bF)(p)])),_:1}))])],10,f)]),k,(0,a.Lk)("div",C,[(0,a.bF)(b,{config:l.config},null,8,["config"])]),(0,a.Lk)("div",w,[(0,a.bF)(V,{config:l.config},null,8,["config"])]),(0,a.bF)(L,{modelValue:l.state.showPay,"onUpdate:modelValue":t[2]||(t[2]=e=>l.state.showPay=e),title:"赞助linker",width:"300",top:"1vh"},{default:(0,a.k6)((()=>[S])),_:1},8,["modelValue"])])}n(4114);var b=n(144);const V={href:"javascript:;",title:"此设备的管理接口"},L={class:"port-wrap t-c"},F={class:"pdt-10"};function z(e,t,n,l,s,r){const i=(0,a.g2)("Tools"),u=(0,a.g2)("el-icon"),c=(0,a.g2)("el-popconfirm"),d=(0,a.g2)("el-input"),p=(0,a.g2)("el-button"),v=(0,a.g2)("el-dialog");return l.config?((0,a.uX)(),(0,a.CE)("div",{key:0,class:(0,o.C4)(["status-api-wrap",{connected:l.connected}])},[(0,a.Lk)("template",null,[(0,a.bF)(c,{"confirm-button-text":"清除","cancel-button-text":"更改",title:"确定你的操作?",onCancel:l.handleShow,onConfirm:l.handleResetConnect},{reference:(0,a.k6)((()=>[(0,a.Lk)("a",V,[(0,a.bF)(u,{size:"16"},{default:(0,a.k6)((()=>[(0,a.bF)(i)])),_:1}),(0,a.eW)(" 管理接口 ")])])),_:1},8,["onCancel","onConfirm"])]),(0,a.bF)(v,{class:"options-center",title:"管理接口","destroy-on-close":"",modelValue:l.showPort,"onUpdate:modelValue":t[2]||(t[2]=e=>l.showPort=e),center:"","show-close":!1,"close-on-click-modal":!1,"align-center":"",width:"200"},{footer:(0,a.k6)((()=>[(0,a.bF)(p,{type:"success",onClick:l.handleConnect1,plain:""},{default:(0,a.k6)((()=>[(0,a.eW)("确 定")])),_:1},8,["onClick"])])),default:(0,a.k6)((()=>[(0,a.Lk)("div",L,[(0,a.Lk)("div",null,[(0,a.eW)(" 接口 : "),(0,a.bF)(d,{modelValue:l.state.api,"onUpdate:modelValue":t[0]||(t[0]=e=>l.state.api=e),style:{width:"70%"}},null,8,["modelValue"])]),(0,a.Lk)("div",F,[(0,a.eW)(" 秘钥 : "),(0,a.bF)(d,{type:"password",modelValue:l.state.psd,"onUpdate:modelValue":t[1]||(t[1]=e=>l.state.psd=e),style:{width:"70%"}},null,8,["modelValue"])])])])),_:1},8,["modelValue"])],2)):(0,a.Q3)("",!0)}var _=n(1387),T=n(3830),$=n(4),W=n(9299),B=n(8835),I=n(7477),K={components:{Tools:I.S0q},props:["config"],setup(e){const t=(0,T.B)(),n=(0,a.EW)((()=>t.value.api.connected)),o=(0,_.rd)(),l=(0,_.lq)(),s={api:`${window.location.hostname}:1803`,psd:"snltty"},r=JSON.parse(localStorage.getItem("api-cache")||JSON.stringify(s)),i=(0,b.Kh)({api:r.api,psd:r.psd,showPort:!1}),u=(0,a.EW)((()=>0==t.value.api.connected&&i.showPort)),c=()=>{localStorage.setItem("api-cache",""),o.push({name:l.name}),window.location.reload()},d=()=>{r.api=i.api,r.psd=i.psd,localStorage.setItem("api-cache",JSON.stringify(r)),(0,$.e3)(),(0,$.a1)(`ws://${i.api}`,i.psd)},p=()=>{d(),window.location.reload()},v=()=>{(0,$.e3)(),(0,$.a1)(`ws://${window.location.hostname}:12345`,i.psd)},g=()=>{(0,B.z)().then((e=>{t.value.config.Common=e.Common,t.value.config.Client=e.Client,t.value.config.Server=e.Server,t.value.config.Running=e.Running,t.value.config.configed=!0,setTimeout((()=>{g()}),1e3)})).catch((e=>{setTimeout((()=>{g()}),1e3)}))},f=()=>{(0,W.SZ)().then((e=>{t.value.signin.Connected=e.Connected,t.value.signin.Connecting=e.Connecting,t.value.signin.Version=e.Version,setTimeout((()=>{f()}),1e3)})).catch((e=>{setTimeout((()=>{f()}),1e3)}))};return(0,a.sV)((()=>{setTimeout((()=>{i.showPort=!0}),500),(0,$.jH)((e=>{e&&(g(),f())})),o.isReady().then((()=>{i.api=l.query.api?`${window.location.hostname}:${l.query.api}`:i.api,i.psd=l.query.psd||i.psd,d()}))})),{config:e.config,state:i,showPort:u,handleConnect1:p,connected:n,handleShow:v,handleResetConnect:c}}},x=n(1241);const G=(0,x.A)(K,[["render",z],["__scopeId","data-v-ce39e2a2"]]);var P=G;const E=["title"],j={key:0,class:"progress"},X={key:1,class:"progress"},R={class:"dialog-footer t-c"};function N(e,t,n,l,s,r){const i=(0,a.g2)("Promotion"),u=(0,a.g2)("el-icon"),c=(0,a.g2)("Loading"),d=(0,a.g2)("Download"),p=(0,a.g2)("CircleCheck"),v=(0,a.g2)("el-input"),g=(0,a.g2)("el-form-item"),f=(0,a.g2)("el-form"),h=(0,a.g2)("el-button"),m=(0,a.g2)("el-dialog");return(0,a.uX)(),(0,a.CE)(a.FK,null,[(0,a.Lk)("div",{class:(0,o.C4)(["status-server-wrap",{connected:l.state.connected}])},[(0,a.Lk)("a",{href:"javascript:;",title:"更改你的连接设置",onClick:t[0]||(t[0]=(...e)=>l.handleConfig&&l.handleConfig(...e))},[(0,a.bF)(u,{size:"16"},{default:(0,a.k6)((()=>[(0,a.bF)(i)])),_:1}),(0,a.eW)(" 信标服务器")]),(0,a.Lk)("a",{href:"javascript:;",title:"服务端的程序版本",onClick:t[1]||(t[1]=(...e)=>l.handleUpdate&&l.handleUpdate(...e)),class:(0,o.C4)(["download",l.updateColor()])},[(0,a.Lk)("span",null,(0,o.v_)(l.state.version),1),l.updaterCurrent.Version?((0,a.uX)(),(0,a.CE)(a.FK,{key:0},[1==l.updaterCurrent.Status?((0,a.uX)(),(0,a.Wv)(u,{key:0,size:"14",class:"loading"},{default:(0,a.k6)((()=>[(0,a.bF)(c)])),_:1})):2==l.updaterServer.Status?((0,a.uX)(),(0,a.Wv)(u,{key:1,size:"14"},{default:(0,a.k6)((()=>[(0,a.bF)(d)])),_:1})):3==l.updaterServer.Status||5==l.updaterServer.Status?((0,a.uX)(),(0,a.CE)(a.FK,{key:2},[(0,a.bF)(u,{size:"14",class:"loading"},{default:(0,a.k6)((()=>[(0,a.bF)(c)])),_:1}),0==l.updaterServer.Length?((0,a.uX)(),(0,a.CE)("span",j,"0%")):((0,a.uX)(),(0,a.CE)("span",X,(0,o.v_)(parseInt(l.updaterServer.Current/l.updaterServer.Length*100))+"%",1))],64)):6==l.updaterServer.Status?((0,a.uX)(),(0,a.Wv)(u,{key:3,size:"14",class:"yellow"},{default:(0,a.k6)((()=>[(0,a.bF)(p)])),_:1})):(0,a.Q3)("",!0)],64)):((0,a.uX)(),(0,a.Wv)(u,{key:1,size:"14"},{default:(0,a.k6)((()=>[(0,a.bF)(d)])),_:1}))],10,E)],2),(0,a.bF)(m,{modelValue:l.state.show,"onUpdate:modelValue":t[5]||(t[5]=e=>l.state.show=e),title:"连接设置",width:"300"},{footer:(0,a.k6)((()=>[(0,a.Lk)("div",R,[(0,a.bF)(h,{onClick:t[4]||(t[4]=e=>l.state.show=!1),loading:l.state.loading},{default:(0,a.k6)((()=>[(0,a.eW)("取消")])),_:1},8,["loading"]),(0,a.bF)(h,{type:"primary",onClick:l.handleSave,loading:l.state.loading},{default:(0,a.k6)((()=>[(0,a.eW)("确定保存")])),_:1},8,["onClick","loading"])])])),default:(0,a.k6)((()=>[(0,a.Lk)("div",null,[(0,a.bF)(f,{model:l.state.form,rules:l.state.rules,"label-width":"6rem"},{default:(0,a.k6)((()=>[(0,a.bF)(g,{label:"机器名",prop:"name"},{default:(0,a.k6)((()=>[(0,a.bF)(v,{modelValue:l.state.form.name,"onUpdate:modelValue":t[2]||(t[2]=e=>l.state.form.name=e),maxlength:"12","show-word-limit":""},null,8,["modelValue"])])),_:1}),(0,a.bF)(g,{label:"分组名",prop:"groupid"},{default:(0,a.k6)((()=>[(0,a.bF)(v,{modelValue:l.state.form.groupid,"onUpdate:modelValue":t[3]||(t[3]=e=>l.state.form.groupid=e),type:"password","show-password":"",maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue"])],64)}var U=n(1219),D=n(2933),A=n(920),J={components:{Promotion:I.Yk4,Download:I.f5X,Loading:I.Rhj,CircleCheck:I.rW7},props:["config"],setup(e){const t=(0,T.B)(),n=(0,b.KR)({Version:"",Msg:[],DateTime:"",Status:0,Length:0,Current:0}),o=(0,b.KR)({Version:"",Status:0,Length:0,Current:0}),l=(0,a.EW)((()=>`${n.value.Version}->${n.value.DateTime}\n${n.value.Msg.map(((e,t)=>`${t+1}、${e}`)).join("\n")}`)),s=(0,b.Kh)({show:!1,loading:!1,connected:(0,a.EW)((()=>t.value.signin.Connected)),version:(0,a.EW)((()=>t.value.signin.Version)),form:{name:t.value.config.Client.Name,groupid:t.value.config.Client.GroupId},rules:{}}),r=()=>{(0,A.Vk)().then((e=>{n.value.DateTime=e.DateTime,n.value.Version=e.Version,n.value.Status=e.Status,n.value.Length=e.Length,n.value.Current=e.Current,n.value.Msg=e.Msg,setTimeout((()=>{r()}),1e3)})).catch((()=>{setTimeout((()=>{r()}),1e3)}))},i=()=>{(0,A.BJ)().then((e=>{o.value.Version=e.Version,o.value.Status=e.Status,o.value.Length=e.Length,o.value.Current=e.Current,o.value.Status>2&&o.value.Status<6&&setTimeout((()=>{i()}),1e3)})).catch((()=>{setTimeout((()=>{i()}),1e3)}))},u=()=>n.value.Version?o.value.Status<=2?s.version!=n.value.Version?`不是最新版本(${n.value.Version}),建议更新\n${l.value}`:`是最新版本,但我无法阻止你喜欢更新\n${l.value}`:{3:"正在下载",4:"已下载",5:"正在解压",6:"已解压,请重启"}[o.value.Status]:"未检测到更新",c=()=>s.version!=n.value.Version?"yellow":"green",d=()=>{e.config&&(n.value.Version?[0,1,3,5].indexOf(o.value.Status)>=0?U.nk.error("操作中,请稍后!"):6!=o.value.Status?2==n.value.Status&&D.s.confirm("确定更新服务端吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,A.y2)(n.value.Version).then((()=>{setTimeout((()=>{i()}),1e3)}))})).catch((()=>{})):D.s.confirm("确定关闭服务端吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,A.aP)()})).catch((()=>{})):U.nk.error("未检测到更新"))},p=()=>{e.config&&(s.form.name=t.value.config.Client.Name,s.form.groupid=t.value.config.Client.GroupId,s.show=!0)},v=()=>{s.loading=!0,(0,W.rd)(s.form).then((()=>{s.loading=!1,s.show=!1,U.nk.success("已操作")})).catch((e=>{s.loading=!1,U.nk.success("操作失败!")}))};return(0,a.sV)((()=>{(0,$.jH)((e=>{e&&(r(),i())}))})),{config:e.config,state:s,handleConfig:p,handleSave:v,updaterCurrent:n,updaterServer:o,handleUpdate:d,updateText:u,updateColor:c}}};const M=(0,x.A)(J,[["render",N],["__scopeId","data-v-d4c02b68"]]);var O=M,q=n(2248),H={components:{Api:P,Server:O,Download:I.f5X,Loading:I.Rhj,CircleCheck:I.rW7},props:["config"],setup(e){const t=(0,T.B)(),n=(0,a.EW)((()=>t.value.updater)),o=(0,a.EW)((()=>n.value.Version)),l=(0,a.EW)((()=>t.value.self)),s=(0,a.EW)((()=>t.value.signin.Version)),r=(0,a.EW)((()=>`${n.value.Version}->${n.value.DateTime}\n${n.value.Msg.map(((e,t)=>`${t+1}、${e}`)).join("\n")}`)),i=(0,a.EW)((()=>n.value.Version&&l.value.Version?n.value<=2?n.value.Version!=s.value?`与服务器版本(${s.value})不一致,建议更新`:l.value.Version!=n.value.Version?`不是最新版本(${l.value.Version}),建议更新\n${r.value}`:`是最新版本,但我无法阻止你喜欢更新\n${r.value}`:{3:"正在下载",4:"已下载",5:"正在解压",6:"已解压,请重启"}[n.value.Status]:"未检测到更新")),u=(0,a.EW)((()=>n.value.Version!=s.value?"red":l.value.Version!=n.value.Version?"yellow":"green")),c=()=>{if(n.value.Version)if([0,1,3,5].indexOf(n.value.Status)>=0)U.nk.error("操作中,请稍后!");else if(6!=n.value.Status){if(2==n.value.Status){const t=(0,b.KR)(o.value),n=[(0,a.h)(q.P9,{label:`仅[${l.value.MachineName}] -> ${o.value}(最新版本)`,value:o.value})];e.config&&n.push((0,a.h)(q.P9,{label:`[所有] -> ${o.value}(最新版本)`,value:`all->${o.value}`})),l.value.Version!=s.value&&o.value!=s.value&&(n.push((0,a.h)(q.P9,{label:`仅[${l.value.MachineName}] -> ${s.value}(服务器版本)`,value:s.value})),e.config&&n.push((0,a.h)(q.P9,{label:`[所有] -> ${s.value}(服务器版本)`,value:`all->${s.value}`}))),(0,D.s)({title:"选择版本",message:()=>(0,a.h)(q.AV,{modelValue:t.value,placeholder:"请选择",style:"width:20rem;","onUpdate:modelValue":e=>{t.value=e}},n),confirmButtonText:"确定",cancelButtonText:"取消"}).then((()=>{const e={MachineId:l.value.MachineId,Version:t.value.replace("all->",""),All:t.value.indexOf("all->")>=0};e.All&&(e.MachineId=""),(0,A.lJ)(e)})).catch((()=>{}))}}else D.s.confirm("确定关闭程序吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,A.NS)(l.value.MachineId)})).catch((()=>{}));else U.nk.error("未检测到更新")},d=(0,b.Kh)({showPay:!1});return{state:d,config:e.config,self:l,updater:n,updateText:i,updateColor:u,handleUpdate:c}}};const Q=(0,x.A)(H,[["render",y],["__scopeId","data-v-7cb8db0a"]]);var Z=Q}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/193.c9be422b.js b/linker.tray.win/web/js/193.c9be422b.js
deleted file mode 100644
index 3575c05d..00000000
--- a/linker.tray.win/web/js/193.c9be422b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[193],{8835:function(e,t,n){n.d(t,{a:function(){return l},z:function(){return o}});var a=n(4);const o=()=>(0,a.zG)("configclient/get"),l=e=>(0,a.zG)("configclient/install",e)},4:function(e,t,n){n.d(t,{a1:function(){return m},e3:function(){return k},jH:function(){return S},zG:function(){return C}});n(4114),n(6573),n(8100),n(7936);var a=n(1219);let o=0,l=null,s="",r=1,i="";const u={},c={connected:!1,connecting:!1},d=()=>{const e=Date.now();for(let t in u){const n=u[t];e-n.time>n.timeout&&(n.reject("超时~"),delete u[t])}setTimeout(d,1e3)};d();const p={subs:{},add:function(e,t){"function"==typeof t&&(this.subs[e]||(this.subs[e]=[]),this.subs[e].push(t))},remove(e,t){let n=this.subs[e]||[];for(let a=n.length-1;a>=0;a--)n[a]==t&&n.splice(a,1)},push(e,t){let n=this.subs[e]||[];for(let a=n.length-1;a>=0;a--)n[a](t)}},v=()=>{c.connected=!0,c.connecting=!1,p.push(w,c.connected)},g=e=>{c.connected=!1,c.connecting=!1,p.push(w,c.connected),setTimeout((()=>{m()}),1e3)},f=e=>{if("string"!=typeof e.data)return void e.data.arrayBuffer().then((t=>{const n=new DataView(t).getInt8(),a=new FileReader;a.readAsText(e.data.slice(4,4+n),"utf8"),a.onload=()=>{let o=JSON.parse(a.result);o.Content={Name:o.Content,Img:e.data.slice(4+n,e.data.length),ArrayBuffer:t},h(o)}}));let t=JSON.parse(e.data);h(t)},h=e=>{let t=u[e.RequestId];t?(0==e.Code?t.resolve(e.Content):1==e.Code?t.reject(e.Content):255==e.Code?(t.reject(e.Content),t.errHandle||a.nk.error(`${t.path}:${e.Content}`)):p.push(e.Path,e.Content),delete u[e.RequestId]):p.push(e.Path,e.Content)},m=(e=s,t=i)=>{if(i=t,s=e,c.connecting||c.connected)return;null!=l&&l.close(),c.connecting=!0;const n=t||"snltty";l=new WebSocket(s,[n]),l.iddd=++r,l.onopen=v,l.onclose=g,l.onmessage=f},k=()=>{l&&l.close()},C=(e,t={},n=!1,a=15e3)=>new Promise(((s,r)=>{let i=++o;try{u[i]={resolve:s,reject:r,errHandle:n,path:e,time:Date.now(),timeout:a};let o=JSON.stringify({Path:e,RequestId:i,Content:"string"==typeof t?t:JSON.stringify(t)});c.connected&&1==l.readyState?l.send(o):r("网络错误~")}catch(d){console.log(d),r("网络错误~"),delete u[i]}})),w=Symbol(),S=e=>{p.add(w,e)}},9299:function(e,t,n){n.d(t,{BS:function(){return u},SZ:function(){return s},Se:function(){return c},VN:function(){return r},gC:function(){return d},jU:function(){return l},nD:function(){return i},rd:function(){return o}});var a=n(4);const o=e=>(0,a.zG)("signInclient/set",e),l=e=>(0,a.zG)("signInclient/setservers",e),s=()=>(0,a.zG)("signInclient/info"),r=e=>(0,a.zG)("signInclient/setorder",e),i=e=>(0,a.zG)("signInclient/List",e),u=e=>(0,a.zG)("signInclient/ids",e),c=e=>(0,a.zG)("signInclient/del",e),d=e=>(0,a.zG)("signInclient/setname",e)},920:function(e,t,n){n.d(t,{BJ:function(){return c},NS:function(){return s},Vk:function(){return u},aP:function(){return p},ir:function(){return i},lJ:function(){return l},mK:function(){return o},y2:function(){return d},yN:function(){return r}});var a=n(4);const o=(e="0")=>(0,a.zG)("updaterclient/get",e),l=e=>(0,a.zG)("updaterclient/confirm",e),s=e=>(0,a.zG)("updaterclient/exit",e),r=()=>(0,a.zG)("updaterclient/GetSecretKey"),i=e=>(0,a.zG)("updaterclient/SetSecretKey",e),u=()=>(0,a.zG)("updaterclient/getcurrent"),c=()=>(0,a.zG)("updaterclient/getserver"),d=e=>(0,a.zG)("updaterclient/confirmserver",e),p=()=>(0,a.zG)("updaterclient/exitserver")},3830:function(e,t,n){n.d(t,{B:function(){return i},v:function(){return r}});var a=n(4),o=n(144),l=n(6768);const s=Symbol(),r=()=>{const e=(0,o.KR)({api:{connected:!1},height:0,config:{Common:{},Client:{Servers:[]},Server:{},Running:{Relay:{Servers:[]},Tuntap:{IP:"",PrefixLength:24},Client:{Servers:[]}},configed:!1},signin:{Connected:!1,Connecting:!1,Version:"v1.0.0.0"},bufferSize:["1KB","2KB","4KB","8KB","16KB","32KB","64KB","128KB","256KB","512KB","1024KB"],updater:{},self:{}});return(0,a.jH)((t=>{e.value.api.connected=t})),(0,l.Gt)(s,e),e},i=()=>(0,l.WQ)(s)},119:function(e,t,n){n.d(t,{A:function(){return Z}});var a=n(6768),o=n(4232),l=n.p+"img/memory.a28433e5.svg",s=n.p+"img/wechat.5c371c5d.jpg",r=n.p+"img/alipay.ff9b1e7c.jpg";const i=e=>((0,a.Qi)("data-v-7cb8db0a"),e=e(),(0,a.jt)(),e),u={class:"status-wrap flex"},c={class:"copy"},d=i((()=>(0,a.Lk)("img",{src:l,alt:"memory"},null,-1))),p=i((()=>(0,a.Lk)("span",null,"赞助",-1))),v=[d,p],g=i((()=>(0,a.Lk)("a",{href:"https://github.com/snltty/linker",target:"_blank"},"snltty©linker",-1))),f=["title"],h={key:0,class:"progress"},m={key:1,class:"progress"},k=i((()=>(0,a.Lk)("div",{class:"flex-1"},null,-1))),C={class:"api"},w={class:"server"},S=i((()=>(0,a.Lk)("div",{class:"pay"},[(0,a.Lk)("img",{src:s,alt:""}),(0,a.Lk)("img",{src:r,alt:""})],-1)));function y(e,t,n,l,s,r){const i=(0,a.g2)("Loading"),d=(0,a.g2)("el-icon"),p=(0,a.g2)("Download"),y=(0,a.g2)("CircleCheck"),b=(0,a.g2)("Api"),V=(0,a.g2)("Server"),L=(0,a.g2)("el-dialog");return(0,a.uX)(),(0,a.CE)("div",u,[(0,a.Lk)("div",c,[(0,a.Lk)("a",{href:"javascript:;",class:"memory",title:"赞助一笔,让作者饱餐一顿",onClick:t[0]||(t[0]=e=>l.state.showPay=!0)},v),g,(0,a.Lk)("a",{href:"javascript:;",class:(0,o.C4)(["download",l.updateColor]),onClick:t[1]||(t[1]=e=>l.handleUpdate()),title:l.updateText},[(0,a.Lk)("span",null,[(0,a.Lk)("span",null,(0,o.v_)(l.self.Version),1),l.updater.Version?((0,a.uX)(),(0,a.CE)(a.FK,{key:0},[1==l.updater.Status?((0,a.uX)(),(0,a.Wv)(d,{key:0,size:"14",class:"loading"},{default:(0,a.k6)((()=>[(0,a.bF)(i)])),_:1})):2==l.updater.Status?((0,a.uX)(),(0,a.Wv)(d,{key:1,size:"14"},{default:(0,a.k6)((()=>[(0,a.bF)(p)])),_:1})):3==l.updater.Status||5==l.updater.Status?((0,a.uX)(),(0,a.CE)(a.FK,{key:2},[(0,a.bF)(d,{size:"14",class:"loading"},{default:(0,a.k6)((()=>[(0,a.bF)(i)])),_:1}),0==l.updater.Length?((0,a.uX)(),(0,a.CE)("span",h,"0%")):((0,a.uX)(),(0,a.CE)("span",m,(0,o.v_)(parseInt(l.updater.Current/l.updater.Length*100))+"%",1))],64)):6==l.updater.Status?((0,a.uX)(),(0,a.Wv)(d,{key:3,size:"14",class:"yellow"},{default:(0,a.k6)((()=>[(0,a.bF)(y)])),_:1})):(0,a.Q3)("",!0)],64)):((0,a.uX)(),(0,a.Wv)(d,{key:1,size:"14"},{default:(0,a.k6)((()=>[(0,a.bF)(p)])),_:1}))])],10,f)]),k,(0,a.Lk)("div",C,[(0,a.bF)(b,{config:l.config},null,8,["config"])]),(0,a.Lk)("div",w,[(0,a.bF)(V,{config:l.config},null,8,["config"])]),(0,a.bF)(L,{modelValue:l.state.showPay,"onUpdate:modelValue":t[2]||(t[2]=e=>l.state.showPay=e),title:"赞助linker",width:"300",top:"1vh"},{default:(0,a.k6)((()=>[S])),_:1},8,["modelValue"])])}n(4114);var b=n(144);const V={href:"javascript:;",title:"此设备的管理接口"},L={class:"port-wrap t-c"},F={class:"pdt-10"};function z(e,t,n,l,s,r){const i=(0,a.g2)("Tools"),u=(0,a.g2)("el-icon"),c=(0,a.g2)("el-popconfirm"),d=(0,a.g2)("el-input"),p=(0,a.g2)("el-button"),v=(0,a.g2)("el-dialog");return l.config?((0,a.uX)(),(0,a.CE)("div",{key:0,class:(0,o.C4)(["status-api-wrap",{connected:l.connected}])},[(0,a.Lk)("template",null,[(0,a.bF)(c,{"confirm-button-text":"清除","cancel-button-text":"更改",title:"确定你的操作?",onCancel:l.handleShow,onConfirm:l.handleResetConnect},{reference:(0,a.k6)((()=>[(0,a.Lk)("a",V,[(0,a.bF)(u,{size:"16"},{default:(0,a.k6)((()=>[(0,a.bF)(i)])),_:1}),(0,a.eW)(" 管理接口 ")])])),_:1},8,["onCancel","onConfirm"])]),(0,a.bF)(v,{class:"options-center",title:"管理接口","destroy-on-close":"",modelValue:l.showPort,"onUpdate:modelValue":t[2]||(t[2]=e=>l.showPort=e),center:"","show-close":!1,"close-on-click-modal":!1,"align-center":"",width:"200"},{footer:(0,a.k6)((()=>[(0,a.bF)(p,{type:"success",onClick:l.handleConnect1,plain:""},{default:(0,a.k6)((()=>[(0,a.eW)("确 定")])),_:1},8,["onClick"])])),default:(0,a.k6)((()=>[(0,a.Lk)("div",L,[(0,a.Lk)("div",null,[(0,a.eW)(" 接口 : "),(0,a.bF)(d,{modelValue:l.state.api,"onUpdate:modelValue":t[0]||(t[0]=e=>l.state.api=e),style:{width:"70%"}},null,8,["modelValue"])]),(0,a.Lk)("div",F,[(0,a.eW)(" 秘钥 : "),(0,a.bF)(d,{type:"password",modelValue:l.state.psd,"onUpdate:modelValue":t[1]||(t[1]=e=>l.state.psd=e),style:{width:"70%"}},null,8,["modelValue"])])])])),_:1},8,["modelValue"])],2)):(0,a.Q3)("",!0)}var _=n(1387),T=n(3830),$=n(4),W=n(9299),B=n(8835),I=n(7477),K={components:{Tools:I.S0q},props:["config"],setup(e){const t=(0,T.B)(),n=(0,a.EW)((()=>t.value.api.connected)),o=(0,_.rd)(),l=(0,_.lq)(),s={api:`${window.location.hostname}:1803`,psd:"snltty"},r=JSON.parse(localStorage.getItem("api-cache")||JSON.stringify(s)),i=(0,b.Kh)({api:r.api,psd:r.psd,showPort:!1}),u=(0,a.EW)((()=>0==t.value.api.connected&&i.showPort)),c=()=>{localStorage.setItem("api-cache",""),o.push({name:l.name}),window.location.reload()},d=()=>{r.api=i.api,r.psd=i.psd,localStorage.setItem("api-cache",JSON.stringify(r)),(0,$.e3)(),(0,$.a1)(`ws://${i.api}`,i.psd)},p=()=>{d(),window.location.reload()},v=()=>{(0,$.e3)(),(0,$.a1)(`ws://${window.location.hostname}:12345`,i.psd)},g=()=>{(0,B.z)().then((e=>{t.value.config.Common=e.Common,t.value.config.Client=e.Client,t.value.config.Server=e.Server,t.value.config.Running=e.Running,t.value.config.configed=!0,setTimeout((()=>{g()}),1e3)})).catch((e=>{setTimeout((()=>{g()}),1e3)}))},f=()=>{(0,W.SZ)().then((e=>{t.value.signin.Connected=e.Connected,t.value.signin.Connecting=e.Connecting,t.value.signin.Version=e.Version,setTimeout((()=>{f()}),1e3)})).catch((e=>{setTimeout((()=>{f()}),1e3)}))};return(0,a.sV)((()=>{setTimeout((()=>{i.showPort=!0}),500),(0,$.jH)((e=>{e&&(g(),f())})),o.isReady().then((()=>{i.api=l.query.api?`${window.location.hostname}:${l.query.api}`:i.api,i.psd=l.query.psd||i.psd,d()}))})),{config:e.config,state:i,showPort:u,handleConnect1:p,connected:n,handleShow:v,handleResetConnect:c}}},x=n(1241);const G=(0,x.A)(K,[["render",z],["__scopeId","data-v-ce39e2a2"]]);var P=G;const E=["title"],j={key:0,class:"progress"},X={key:1,class:"progress"},R={class:"dialog-footer t-c"};function N(e,t,n,l,s,r){const i=(0,a.g2)("Promotion"),u=(0,a.g2)("el-icon"),c=(0,a.g2)("Loading"),d=(0,a.g2)("Download"),p=(0,a.g2)("CircleCheck"),v=(0,a.g2)("el-input"),g=(0,a.g2)("el-form-item"),f=(0,a.g2)("el-form"),h=(0,a.g2)("el-button"),m=(0,a.g2)("el-dialog");return(0,a.uX)(),(0,a.CE)(a.FK,null,[(0,a.Lk)("div",{class:(0,o.C4)(["status-server-wrap",{connected:l.state.connected}])},[(0,a.Lk)("a",{href:"javascript:;",title:"更改你的连接设置",onClick:t[0]||(t[0]=(...e)=>l.handleConfig&&l.handleConfig(...e))},[(0,a.bF)(u,{size:"16"},{default:(0,a.k6)((()=>[(0,a.bF)(i)])),_:1}),(0,a.eW)(" 信标服务器")]),(0,a.Lk)("a",{href:"javascript:;",title:"服务端的程序版本",onClick:t[1]||(t[1]=(...e)=>l.handleUpdate&&l.handleUpdate(...e)),class:(0,o.C4)(["download",l.updateColor()])},[(0,a.Lk)("span",null,(0,o.v_)(l.state.version),1),l.updaterCurrent.Version?((0,a.uX)(),(0,a.CE)(a.FK,{key:0},[1==l.updaterCurrent.Status?((0,a.uX)(),(0,a.Wv)(u,{key:0,size:"14",class:"loading"},{default:(0,a.k6)((()=>[(0,a.bF)(c)])),_:1})):2==l.updaterServer.Status?((0,a.uX)(),(0,a.Wv)(u,{key:1,size:"14"},{default:(0,a.k6)((()=>[(0,a.bF)(d)])),_:1})):3==l.updaterServer.Status||5==l.updaterServer.Status?((0,a.uX)(),(0,a.CE)(a.FK,{key:2},[(0,a.bF)(u,{size:"14",class:"loading"},{default:(0,a.k6)((()=>[(0,a.bF)(c)])),_:1}),0==l.updaterServer.Length?((0,a.uX)(),(0,a.CE)("span",j,"0%")):((0,a.uX)(),(0,a.CE)("span",X,(0,o.v_)(parseInt(l.updaterServer.Current/l.updaterServer.Length*100))+"%",1))],64)):6==l.updaterServer.Status?((0,a.uX)(),(0,a.Wv)(u,{key:3,size:"14",class:"yellow"},{default:(0,a.k6)((()=>[(0,a.bF)(p)])),_:1})):(0,a.Q3)("",!0)],64)):((0,a.uX)(),(0,a.Wv)(u,{key:1,size:"14"},{default:(0,a.k6)((()=>[(0,a.bF)(d)])),_:1}))],10,E)],2),(0,a.bF)(m,{modelValue:l.state.show,"onUpdate:modelValue":t[5]||(t[5]=e=>l.state.show=e),title:"连接设置",width:"300"},{footer:(0,a.k6)((()=>[(0,a.Lk)("div",R,[(0,a.bF)(h,{onClick:t[4]||(t[4]=e=>l.state.show=!1),loading:l.state.loading},{default:(0,a.k6)((()=>[(0,a.eW)("取消")])),_:1},8,["loading"]),(0,a.bF)(h,{type:"primary",onClick:l.handleSave,loading:l.state.loading},{default:(0,a.k6)((()=>[(0,a.eW)("确定保存")])),_:1},8,["onClick","loading"])])])),default:(0,a.k6)((()=>[(0,a.Lk)("div",null,[(0,a.bF)(f,{model:l.state.form,rules:l.state.rules,"label-width":"6rem"},{default:(0,a.k6)((()=>[(0,a.bF)(g,{label:"机器名",prop:"name"},{default:(0,a.k6)((()=>[(0,a.bF)(v,{modelValue:l.state.form.name,"onUpdate:modelValue":t[2]||(t[2]=e=>l.state.form.name=e),maxlength:"12","show-word-limit":""},null,8,["modelValue"])])),_:1}),(0,a.bF)(g,{label:"分组名",prop:"groupid"},{default:(0,a.k6)((()=>[(0,a.bF)(v,{modelValue:l.state.form.groupid,"onUpdate:modelValue":t[3]||(t[3]=e=>l.state.form.groupid=e),type:"password","show-password":"",maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue"])],64)}var U=n(1219),D=n(2933),A=n(920),J={components:{Promotion:I.Yk4,Download:I.f5X,Loading:I.Rhj,CircleCheck:I.rW7},props:["config"],setup(e){const t=(0,T.B)(),n=(0,b.KR)({Version:"",Msg:[],DateTime:"",Status:0,Length:0,Current:0}),o=(0,b.KR)({Version:"",Status:0,Length:0,Current:0}),l=(0,a.EW)((()=>`${n.value.Version}->${n.value.DateTime}\n${n.value.Msg.map(((e,t)=>`${t+1}、${e}`)).join("\n")}`)),s=(0,b.Kh)({show:!1,loading:!1,connected:(0,a.EW)((()=>t.value.signin.Connected)),version:(0,a.EW)((()=>t.value.signin.Version)),form:{name:t.value.config.Client.Name,groupid:t.value.config.Client.GroupId},rules:{}}),r=()=>{(0,A.Vk)().then((e=>{n.value.DateTime=e.DateTime,n.value.Version=e.Version,n.value.Status=e.Status,n.value.Length=e.Length,n.value.Current=e.Current,n.value.Msg=e.Msg,setTimeout((()=>{r()}),1e3)})).catch((()=>{setTimeout((()=>{r()}),1e3)}))},i=()=>{(0,A.BJ)().then((e=>{o.value.Version=e.Version,o.value.Status=e.Status,o.value.Length=e.Length,o.value.Current=e.Current,o.value.Status>2&&o.value.Status<6&&setTimeout((()=>{i()}),1e3)})).catch((()=>{setTimeout((()=>{i()}),1e3)}))},u=()=>n.value.Version?o.value.Status<=2?s.version!=n.value.Version?`不是最新版本(${n.value.Version}),建议更新\n${l.value}`:`是最新版本,但我无法阻止你喜欢更新\n${l.value}`:{3:"正在下载",4:"已下载",5:"正在解压",6:"已解压,请重启"}[o.value.Status]:"未检测到更新",c=()=>s.version!=n.value.Version?"yellow":"green",d=()=>{e.config&&(n.value.Version?[0,1,3,5].indexOf(o.value.Status)>=0?U.nk.error("操作中,请稍后!"):6!=o.value.Status?2==n.value.Status&&D.s.confirm("确定更新服务端吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,A.y2)(n.value.Version).then((()=>{setTimeout((()=>{i()}),1e3)}))})).catch((()=>{})):D.s.confirm("确定关闭服务端吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,A.aP)()})).catch((()=>{})):U.nk.error("未检测到更新"))},p=()=>{e.config&&(s.form.name=t.value.config.Client.Name,s.form.groupid=t.value.config.Client.GroupId,s.show=!0)},v=()=>{s.loading=!0,(0,W.rd)(s.form).then((()=>{s.loading=!1,s.show=!1,U.nk.success("已操作")})).catch((e=>{s.loading=!1,U.nk.success("操作失败!")}))};return(0,a.sV)((()=>{(0,$.jH)((e=>{e&&(r(),i())}))})),{config:e.config,state:s,handleConfig:p,handleSave:v,updaterCurrent:n,updaterServer:o,handleUpdate:d,updateText:u,updateColor:c}}};const M=(0,x.A)(J,[["render",N],["__scopeId","data-v-d4c02b68"]]);var O=M,q=n(2248),H={components:{Api:P,Server:O,Download:I.f5X,Loading:I.Rhj,CircleCheck:I.rW7},props:["config"],setup(e){const t=(0,T.B)(),n=(0,a.EW)((()=>t.value.updater)),o=(0,a.EW)((()=>n.value.Version)),l=(0,a.EW)((()=>t.value.self)),s=(0,a.EW)((()=>t.value.signin.Version)),r=(0,a.EW)((()=>`${n.value.Version}->${n.value.DateTime}\n${n.value.Msg.map(((e,t)=>`${t+1}、${e}`)).join("\n")}`)),i=(0,a.EW)((()=>n.value.Version&&l.value.Version?n.value<=2?n.value.Version!=s.value?`与服务器版本(${s.value})不一致,建议更新`:l.value.Version!=n.value.Version?`不是最新版本(${l.value.Version}),建议更新\n${r.value}`:`是最新版本,但我无法阻止你喜欢更新\n${r.value}`:{3:"正在下载",4:"已下载",5:"正在解压",6:"已解压,请重启"}[n.value.Status]:"未检测到更新")),u=(0,a.EW)((()=>n.value.Version!=s.value?"red":l.value.Version!=n.value.Version?"yellow":"green")),c=()=>{if(n.value.Version)if([0,1,3,5].indexOf(n.value.Status)>=0)U.nk.error("操作中,请稍后!");else if(6!=n.value.Status){if(2==n.value.Status){const t=(0,b.KR)(o.value),n=[(0,a.h)(q.P9,{label:`仅[${l.value.MachineName}] -> ${o.value}(最新版本)`,value:o.value})];e.config&&n.push((0,a.h)(q.P9,{label:`[所有] -> ${o.value}(最新版本)`,value:`all->${o.value}`})),l.value.Version!=s.value&&o.value!=s.value&&(n.push((0,a.h)(q.P9,{label:`仅[${l.value.MachineName}] -> ${s.value}(服务器版本)`,value:s.value})),e.config&&n.push((0,a.h)(q.P9,{label:`[所有] -> ${s.value}(服务器版本)`,value:`all->${s.value}`}))),(0,D.s)({title:"选择版本",message:()=>(0,a.h)(q.AV,{modelValue:t.value,placeholder:"请选择",style:"width:20rem;","onUpdate:modelValue":e=>{t.value=e}},n),confirmButtonText:"确定",cancelButtonText:"取消"}).then((()=>{const e={MachineId:l.value.MachineId,Version:t.value.replace("all->",""),All:t.value.indexOf("all->")>=0};e.All&&(e.MachineId=""),(0,A.lJ)(e)})).catch((()=>{}))}}else D.s.confirm("确定关闭程序吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,A.NS)(l.value.MachineId)})).catch((()=>{}));else U.nk.error("未检测到更新")},d=(0,b.Kh)({showPay:!1});return{state:d,config:e.config,self:l,updater:n,updateText:i,updateColor:u,handleUpdate:c}}};const Q=(0,x.A)(H,[["render",y],["__scopeId","data-v-7cb8db0a"]]);var Z=Q}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/295.b146a038.js b/linker.tray.win/web/js/295.b146a038.js
deleted file mode 100644
index 2b3d1cf9..00000000
--- a/linker.tray.win/web/js/295.b146a038.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[295],{4:function(e,t,a){a.d(t,{a1:function(){return h},e3:function(){return k},jH:function(){return C},zG:function(){return v}});a(4114),a(6573),a(8100),a(7936);var n=a(1219);let l=0,o=null,r="",s=1,i="";const d={},g={connected:!1,connecting:!1},u=()=>{const e=Date.now();for(let t in d){const a=d[t];e-a.time>a.timeout&&(a.reject("超时~"),delete d[t])}setTimeout(u,1e3)};u();const c={subs:{},add:function(e,t){"function"==typeof t&&(this.subs[e]||(this.subs[e]=[]),this.subs[e].push(t))},remove(e,t){let a=this.subs[e]||[];for(let n=a.length-1;n>=0;n--)a[n]==t&&a.splice(n,1)},push(e,t){let a=this.subs[e]||[];for(let n=a.length-1;n>=0;n--)a[n](t)}},p=()=>{g.connected=!0,g.connecting=!1,c.push(y,g.connected)},b=e=>{g.connected=!1,g.connecting=!1,c.push(y,g.connected),setTimeout((()=>{h()}),1e3)},f=e=>{if("string"!=typeof e.data)return void e.data.arrayBuffer().then((t=>{const a=new DataView(t).getInt8(),n=new FileReader;n.readAsText(e.data.slice(4,4+a),"utf8"),n.onload=()=>{let l=JSON.parse(n.result);l.Content={Name:l.Content,Img:e.data.slice(4+a,e.data.length),ArrayBuffer:t},m(l)}}));let t=JSON.parse(e.data);m(t)},m=e=>{let t=d[e.RequestId];t?(0==e.Code?t.resolve(e.Content):1==e.Code?t.reject(e.Content):255==e.Code?(t.reject(e.Content),t.errHandle||n.nk.error(`${t.path}:${e.Content}`)):c.push(e.Path,e.Content),delete d[e.RequestId]):c.push(e.Path,e.Content)},h=(e=r,t=i)=>{if(i=t,r=e,g.connecting||g.connected)return;null!=o&&o.close(),g.connecting=!0;const a=t||"snltty";o=new WebSocket(r,[a]),o.iddd=++s,o.onopen=p,o.onclose=b,o.onmessage=f},k=()=>{o&&o.close()},v=(e,t={},a=!1,n=15e3)=>new Promise(((r,s)=>{let i=++l;try{d[i]={resolve:r,reject:s,errHandle:a,path:e,time:Date.now(),timeout:n};let l=JSON.stringify({Path:e,RequestId:i,Content:"string"==typeof t?t:JSON.stringify(t)});g.connected&&1==o.readyState?o.send(l):s("网络错误~")}catch(u){console.log(u),s("网络错误~"),delete d[i]}})),y=Symbol(),C=e=>{c.add(y,e)}},3830:function(e,t,a){a.d(t,{B:function(){return i},v:function(){return s}});var n=a(4),l=a(144),o=a(6768);const r=Symbol(),s=()=>{const e=(0,l.KR)({api:{connected:!1},height:0,config:{Common:{},Client:{Servers:[]},Server:{},Running:{Relay:{Servers:[]},Tuntap:{IP:"",PrefixLength:24},Client:{Servers:[]}},configed:!1},signin:{Connected:!1,Connecting:!1,Version:"v1.0.0.0"},bufferSize:["1KB","2KB","4KB","8KB","16KB","32KB","64KB","128KB","256KB","512KB","1024KB"],updater:{},self:{}});return(0,n.jH)((t=>{e.value.api.connected=t})),(0,o.Gt)(r,e),e},i=()=>(0,o.WQ)(r)},4295:function(e,t,a){a.r(t),a.d(t,{default:function(){return B}});var n=a(6768),l=a(4232);const o=e=>((0,n.Qi)("data-v-698722d0"),e=e(),(0,n.jt)(),e),r={class:"logger-setting-wrap flex flex-column h-100",ref:"wrap"},s={class:"inner"},i={class:"head flex"},d=o((()=>(0,n.Lk)("span",{class:"flex-1"},null,-1))),g={class:"body flex-1 relative"},u={key:0},c={class:"pages t-c"},p={class:"page-wrap"};function b(e,t,a,o,b,f){const m=(0,n.g2)("el-option"),h=(0,n.g2)("el-select"),k=(0,n.g2)("el-button"),v=(0,n.g2)("el-table-column"),y=(0,n.g2)("el-table"),C=(0,n.g2)("el-empty"),w=(0,n.g2)("el-pagination"),F=(0,n.g2)("el-tab-pane"),S=(0,n.g2)("Setting"),z=(0,n.g2)("el-tabs");return(0,n.uX)(),(0,n.CE)("div",r,[(0,n.bF)(z,{type:"border-card"},{default:(0,n.k6)((()=>[(0,n.bF)(F,{label:"主页"},{default:(0,n.k6)((()=>[(0,n.Lk)("div",s,[(0,n.Lk)("div",i,[(0,n.Lk)("div",null,[(0,n.bF)(h,{modelValue:o.state.type,"onUpdate:modelValue":t[0]||(t[0]=e=>o.state.type=e),onChange:o.loadData,size:"small",class:"m-r-1",style:{width:"6rem"}},{default:(0,n.k6)((()=>[(0,n.bF)(m,{value:-1,label:"all"}),(0,n.bF)(m,{value:0,label:"debug"}),(0,n.bF)(m,{value:1,label:"info"}),(0,n.bF)(m,{value:2,label:"warning"}),(0,n.bF)(m,{value:3,label:"error"}),(0,n.bF)(m,{value:4,label:"fatal"})])),_:1},8,["modelValue","onChange"])]),(0,n.bF)(k,{type:"warning",size:"small",loading:o.state.loading,onClick:o.clearData},{default:(0,n.k6)((()=>[(0,n.eW)("清空")])),_:1},8,["loading","onClick"]),(0,n.bF)(k,{size:"small",loading:o.state.loading,onClick:o.loadData},{default:(0,n.k6)((()=>[(0,n.eW)("刷新列表")])),_:1},8,["loading","onClick"]),d]),(0,n.Lk)("div",g,[o.state.page.List.length>0?((0,n.uX)(),(0,n.CE)("div",u,[(0,n.bF)(y,{border:"",data:o.state.page.List,size:"small",height:`${o.state.height}px`,onRowClick:o.handleRowClick,"row-class-name":o.tableRowClassName},{default:(0,n.k6)((()=>[(0,n.bF)(v,{type:"index",width:"50"}),(0,n.bF)(v,{prop:"Type",label:"类别",width:"80"},{default:(0,n.k6)((e=>[(0,n.Lk)("span",null,(0,l.v_)(o.state.types[e.row.Type]),1)])),_:1}),(0,n.bF)(v,{prop:"Time",label:"时间",width:"160"}),(0,n.bF)(v,{prop:"content",label:"内容"})])),_:1},8,["data","height","onRowClick","row-class-name"])])):((0,n.uX)(),(0,n.Wv)(C,{key:1}))]),(0,n.Lk)("div",c,[(0,n.Lk)("div",p,[(0,n.bF)(w,{small:"",total:o.state.page.Count,currentPage:o.state.page.Page,"onUpdate:currentPage":t[1]||(t[1]=e=>o.state.page.Page=e),"page-size":o.state.page.Size,onCurrentChange:o.handlePageChange,background:"",layout:"total,prev, pager, next"},null,8,["total","currentPage","page-size","onCurrentChange"])])])])])),_:1}),(0,n.bF)(F,{label:"配置"},{default:(0,n.k6)((()=>[(0,n.bF)(S)])),_:1})])),_:1})],512)}var f=a(144),m=a(4);const h=e=>(0,m.zG)("loggerclient/get",e),k=()=>(0,m.zG)("loggerclient/clear"),v=()=>(0,m.zG)("loggerclient/getconfig"),y=e=>(0,m.zG)("loggerclient/setconfig",e),C={class:"t-c w-100"};function w(e,t,a,l,o,r){const s=(0,n.g2)("el-input"),i=(0,n.g2)("el-form-item"),d=(0,n.g2)("el-col"),g=(0,n.g2)("el-option"),u=(0,n.g2)("el-select"),c=(0,n.g2)("el-row"),p=(0,n.g2)("el-button"),b=(0,n.g2)("el-form");return(0,n.uX)(),(0,n.Wv)(b,{"label-width":"8rem",ref:"formDom",model:l.state.form,rules:l.state.rules},{default:(0,n.k6)((()=>[(0,n.bF)(i,{label:"","label-width":"0"},{default:(0,n.k6)((()=>[(0,n.bF)(c,null,{default:(0,n.k6)((()=>[(0,n.bF)(d,{xs:24,sm:8,md:8,lg:8,xl:8},{default:(0,n.k6)((()=>[(0,n.bF)(i,{label:"显示数量",prop:"Size"},{default:(0,n.k6)((()=>[(0,n.bF)(s,{size:"default",modelValue:l.state.form.Size,"onUpdate:modelValue":t[0]||(t[0]=e=>l.state.form.Size=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,n.bF)(d,{xs:24,sm:8,md:8,lg:8,xl:8},{default:(0,n.k6)((()=>[(0,n.bF)(i,{label:"日志等级",prop:"LoggerType"},{default:(0,n.k6)((()=>[(0,n.bF)(u,{modelValue:l.state.form.LoggerType,"onUpdate:modelValue":t[1]||(t[1]=e=>l.state.form.LoggerType=e)},{default:(0,n.k6)((()=>[(0,n.bF)(g,{value:0,label:"debug"}),(0,n.bF)(g,{value:1,label:"info"}),(0,n.bF)(g,{value:2,label:"warning"}),(0,n.bF)(g,{value:3,label:"error"}),(0,n.bF)(g,{value:4,label:"fatal"})])),_:1},8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,n.bF)(i,{"label-width":"0"},{default:(0,n.k6)((()=>[(0,n.Lk)("div",C,[(0,n.bF)(p,{type:"primary",loading:l.state.loading,onClick:l.submit},{default:(0,n.k6)((()=>[(0,n.eW)("确 定")])),_:1},8,["loading","onClick"])])])),_:1})])),_:1},8,["model","rules"])}var F=a(1219),S={setup(){const e=(0,f.KR)(null),t=(0,f.Kh)({loading:!1,configInfo:{},form:{Size:0,LoggerType:-1},rules:{Size:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:1,max:1e4,message:"数字 1-10000",trigger:"blur",transform(e){return Number(e)}}]}}),a=()=>{v().then((e=>{t.configInfo=e,t.form.Size=e.Size,t.form.LoggerType=e.LoggerType})).catch((e=>{}))},l=()=>{let e=JSON.parse(JSON.stringify(t.configInfo));return e.Size=+t.form.Size,e.LoggerType=+t.form.LoggerType,e},o=()=>new Promise(((a,n)=>{e.value.validate((e=>{if(0==e)return n(),!1;t.loading=!0;const o=l();y(o).then((e=>{t.loading=!1,a(),e?F.nk.success("操作成功!"):F.nk.error("操作失败!")})).catch((()=>{t.loading=!1,a()}))}))}));return(0,n.sV)((()=>{(0,m.jH)((e=>{e&&a()})),a()})),{state:t,formDom:e,submit:o}}},z=a(1241);const _=(0,z.A)(S,[["render",w],["__scopeId","data-v-3d9ad497"]]);var L=_,x=a(2933),P=a(3830),T={components:{Setting:L},setup(){const e=(0,P.B)(),t=(0,f.KR)(null),a=(0,f.Kh)({loading:!0,type:-1,page:{Page:1,Size:20,Count:0,List:[]},types:["debug","info","warning","error","fatal"],height:(0,f.EW)((()=>e.value.height-200))}),l=()=>{a.loading=!0,h({Page:a.page.Page,Size:a.page.Size,Type:a.type}).then((e=>{a.loading=!1,e.List.map((e=>{e.content=e.Content.substring(0,50)})),a.page=e})).catch((e=>{console.log(e),a.loading=!1}))},o=e=>{e&&(a.page.Page=e,l())},r=()=>{a.loading=!0,k().then((()=>{a.loading=!1,l()})).catch((()=>{a.loading=!1}))},s=({row:e,rowIndex:t})=>`type-${e.Type}`,i=(e,t,a)=>{let n="padding:1rem;border:1px solid #ddd; resize:none;width:39rem;box-sizing: border-box;white-space: nowrap; height:30rem;";x.s.alert(``,"内容",{dangerouslyUseHTMLString:!0}).catch((()=>{}))};return(0,n.sV)((()=>{(0,m.jH)((e=>{e&&l()})),l()})),{wrap:t,state:a,loadData:l,clearData:r,tableRowClassName:s,handleRowClick:i,handlePageChange:o}}};const K=(0,z.A)(T,[["render",b],["__scopeId","data-v-698722d0"]]);var B=K}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/295.f6737890.js b/linker.tray.win/web/js/295.f6737890.js
new file mode 100644
index 00000000..72968e2a
--- /dev/null
+++ b/linker.tray.win/web/js/295.f6737890.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[295],{4:function(e,t,a){a.d(t,{a1:function(){return h},e3:function(){return k},jH:function(){return C},zG:function(){return v}});a(4114),a(6573),a(8100),a(7936);var n=a(1219);let l=0,o=null,r="",s=1,i="";const d={},g={connected:!1,connecting:!1},u=()=>{const e=Date.now();for(let t in d){const a=d[t];e-a.time>a.timeout&&(a.reject("超时~"),delete d[t])}setTimeout(u,1e3)};u();const c={subs:{},add:function(e,t){"function"==typeof t&&(this.subs[e]||(this.subs[e]=[]),this.subs[e].push(t))},remove(e,t){let a=this.subs[e]||[];for(let n=a.length-1;n>=0;n--)a[n]==t&&a.splice(n,1)},push(e,t){let a=this.subs[e]||[];for(let n=a.length-1;n>=0;n--)a[n](t)}},p=()=>{g.connected=!0,g.connecting=!1,c.push(y,g.connected)},b=e=>{g.connected=!1,g.connecting=!1,c.push(y,g.connected),setTimeout((()=>{h()}),1e3)},f=e=>{if("string"!=typeof e.data)return void e.data.arrayBuffer().then((t=>{const a=new DataView(t).getInt8(),n=new FileReader;n.readAsText(e.data.slice(4,4+a),"utf8"),n.onload=()=>{let l=JSON.parse(n.result);l.Content={Name:l.Content,Img:e.data.slice(4+a,e.data.length),ArrayBuffer:t},m(l)}}));let t=JSON.parse(e.data);m(t)},m=e=>{let t=d[e.RequestId];t?(0==e.Code?t.resolve(e.Content):1==e.Code?t.reject(e.Content):255==e.Code?(t.reject(e.Content),t.errHandle||n.nk.error(`${t.path}:${e.Content}`)):c.push(e.Path,e.Content),delete d[e.RequestId]):c.push(e.Path,e.Content)},h=(e=r,t=i)=>{if(i=t,r=e,g.connecting||g.connected)return;null!=o&&o.close(),g.connecting=!0;const a=t||"snltty";o=new WebSocket(r,[a]),o.iddd=++s,o.onopen=p,o.onclose=b,o.onmessage=f},k=()=>{o&&o.close()},v=(e,t={},a=!1,n=15e3)=>new Promise(((r,s)=>{let i=++l;try{d[i]={resolve:r,reject:s,errHandle:a,path:e,time:Date.now(),timeout:n};let l=JSON.stringify({Path:e,RequestId:i,Content:"string"==typeof t?t:JSON.stringify(t)});g.connected&&1==o.readyState?o.send(l):s("网络错误~")}catch(u){console.log(u),s("网络错误~"),delete d[i]}})),y=Symbol(),C=e=>{c.add(y,e)}},3830:function(e,t,a){a.d(t,{B:function(){return i},v:function(){return s}});var n=a(4),l=a(144),o=a(6768);const r=Symbol(),s=()=>{const e=(0,l.KR)({api:{connected:!1},height:0,config:{Common:{},Client:{Servers:[]},Server:{},Running:{Relay:{Servers:[]},Tuntap:{IP:"",PrefixLength:24},Client:{Servers:[]},AutoSyncs:{}},configed:!1},signin:{Connected:!1,Connecting:!1,Version:"v1.0.0.0"},bufferSize:["1KB","2KB","4KB","8KB","16KB","32KB","64KB","128KB","256KB","512KB","1024KB"],updater:{},self:{}});return(0,n.jH)((t=>{e.value.api.connected=t})),(0,o.Gt)(r,e),e},i=()=>(0,o.WQ)(r)},4295:function(e,t,a){a.r(t),a.d(t,{default:function(){return B}});var n=a(6768),l=a(4232);const o=e=>((0,n.Qi)("data-v-698722d0"),e=e(),(0,n.jt)(),e),r={class:"logger-setting-wrap flex flex-column h-100",ref:"wrap"},s={class:"inner"},i={class:"head flex"},d=o((()=>(0,n.Lk)("span",{class:"flex-1"},null,-1))),g={class:"body flex-1 relative"},u={key:0},c={class:"pages t-c"},p={class:"page-wrap"};function b(e,t,a,o,b,f){const m=(0,n.g2)("el-option"),h=(0,n.g2)("el-select"),k=(0,n.g2)("el-button"),v=(0,n.g2)("el-table-column"),y=(0,n.g2)("el-table"),C=(0,n.g2)("el-empty"),w=(0,n.g2)("el-pagination"),F=(0,n.g2)("el-tab-pane"),S=(0,n.g2)("Setting"),z=(0,n.g2)("el-tabs");return(0,n.uX)(),(0,n.CE)("div",r,[(0,n.bF)(z,{type:"border-card"},{default:(0,n.k6)((()=>[(0,n.bF)(F,{label:"主页"},{default:(0,n.k6)((()=>[(0,n.Lk)("div",s,[(0,n.Lk)("div",i,[(0,n.Lk)("div",null,[(0,n.bF)(h,{modelValue:o.state.type,"onUpdate:modelValue":t[0]||(t[0]=e=>o.state.type=e),onChange:o.loadData,size:"small",class:"m-r-1",style:{width:"6rem"}},{default:(0,n.k6)((()=>[(0,n.bF)(m,{value:-1,label:"all"}),(0,n.bF)(m,{value:0,label:"debug"}),(0,n.bF)(m,{value:1,label:"info"}),(0,n.bF)(m,{value:2,label:"warning"}),(0,n.bF)(m,{value:3,label:"error"}),(0,n.bF)(m,{value:4,label:"fatal"})])),_:1},8,["modelValue","onChange"])]),(0,n.bF)(k,{type:"warning",size:"small",loading:o.state.loading,onClick:o.clearData},{default:(0,n.k6)((()=>[(0,n.eW)("清空")])),_:1},8,["loading","onClick"]),(0,n.bF)(k,{size:"small",loading:o.state.loading,onClick:o.loadData},{default:(0,n.k6)((()=>[(0,n.eW)("刷新列表")])),_:1},8,["loading","onClick"]),d]),(0,n.Lk)("div",g,[o.state.page.List.length>0?((0,n.uX)(),(0,n.CE)("div",u,[(0,n.bF)(y,{border:"",data:o.state.page.List,size:"small",height:`${o.state.height}px`,onRowClick:o.handleRowClick,"row-class-name":o.tableRowClassName},{default:(0,n.k6)((()=>[(0,n.bF)(v,{type:"index",width:"50"}),(0,n.bF)(v,{prop:"Type",label:"类别",width:"80"},{default:(0,n.k6)((e=>[(0,n.Lk)("span",null,(0,l.v_)(o.state.types[e.row.Type]),1)])),_:1}),(0,n.bF)(v,{prop:"Time",label:"时间",width:"160"}),(0,n.bF)(v,{prop:"content",label:"内容"})])),_:1},8,["data","height","onRowClick","row-class-name"])])):((0,n.uX)(),(0,n.Wv)(C,{key:1}))]),(0,n.Lk)("div",c,[(0,n.Lk)("div",p,[(0,n.bF)(w,{small:"",total:o.state.page.Count,currentPage:o.state.page.Page,"onUpdate:currentPage":t[1]||(t[1]=e=>o.state.page.Page=e),"page-size":o.state.page.Size,onCurrentChange:o.handlePageChange,background:"",layout:"total,prev, pager, next"},null,8,["total","currentPage","page-size","onCurrentChange"])])])])])),_:1}),(0,n.bF)(F,{label:"配置"},{default:(0,n.k6)((()=>[(0,n.bF)(S)])),_:1})])),_:1})],512)}var f=a(144),m=a(4);const h=e=>(0,m.zG)("loggerclient/get",e),k=()=>(0,m.zG)("loggerclient/clear"),v=()=>(0,m.zG)("loggerclient/getconfig"),y=e=>(0,m.zG)("loggerclient/setconfig",e),C={class:"t-c w-100"};function w(e,t,a,l,o,r){const s=(0,n.g2)("el-input"),i=(0,n.g2)("el-form-item"),d=(0,n.g2)("el-col"),g=(0,n.g2)("el-option"),u=(0,n.g2)("el-select"),c=(0,n.g2)("el-row"),p=(0,n.g2)("el-button"),b=(0,n.g2)("el-form");return(0,n.uX)(),(0,n.Wv)(b,{"label-width":"8rem",ref:"formDom",model:l.state.form,rules:l.state.rules},{default:(0,n.k6)((()=>[(0,n.bF)(i,{label:"","label-width":"0"},{default:(0,n.k6)((()=>[(0,n.bF)(c,null,{default:(0,n.k6)((()=>[(0,n.bF)(d,{xs:24,sm:8,md:8,lg:8,xl:8},{default:(0,n.k6)((()=>[(0,n.bF)(i,{label:"显示数量",prop:"Size"},{default:(0,n.k6)((()=>[(0,n.bF)(s,{size:"default",modelValue:l.state.form.Size,"onUpdate:modelValue":t[0]||(t[0]=e=>l.state.form.Size=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,n.bF)(d,{xs:24,sm:8,md:8,lg:8,xl:8},{default:(0,n.k6)((()=>[(0,n.bF)(i,{label:"日志等级",prop:"LoggerType"},{default:(0,n.k6)((()=>[(0,n.bF)(u,{modelValue:l.state.form.LoggerType,"onUpdate:modelValue":t[1]||(t[1]=e=>l.state.form.LoggerType=e)},{default:(0,n.k6)((()=>[(0,n.bF)(g,{value:0,label:"debug"}),(0,n.bF)(g,{value:1,label:"info"}),(0,n.bF)(g,{value:2,label:"warning"}),(0,n.bF)(g,{value:3,label:"error"}),(0,n.bF)(g,{value:4,label:"fatal"})])),_:1},8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,n.bF)(i,{"label-width":"0"},{default:(0,n.k6)((()=>[(0,n.Lk)("div",C,[(0,n.bF)(p,{type:"primary",loading:l.state.loading,onClick:l.submit},{default:(0,n.k6)((()=>[(0,n.eW)("确 定")])),_:1},8,["loading","onClick"])])])),_:1})])),_:1},8,["model","rules"])}var F=a(1219),S={setup(){const e=(0,f.KR)(null),t=(0,f.Kh)({loading:!1,configInfo:{},form:{Size:0,LoggerType:-1},rules:{Size:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:1,max:1e4,message:"数字 1-10000",trigger:"blur",transform(e){return Number(e)}}]}}),a=()=>{v().then((e=>{t.configInfo=e,t.form.Size=e.Size,t.form.LoggerType=e.LoggerType})).catch((e=>{}))},l=()=>{let e=JSON.parse(JSON.stringify(t.configInfo));return e.Size=+t.form.Size,e.LoggerType=+t.form.LoggerType,e},o=()=>new Promise(((a,n)=>{e.value.validate((e=>{if(0==e)return n(),!1;t.loading=!0;const o=l();y(o).then((e=>{t.loading=!1,a(),e?F.nk.success("操作成功!"):F.nk.error("操作失败!")})).catch((()=>{t.loading=!1,a()}))}))}));return(0,n.sV)((()=>{(0,m.jH)((e=>{e&&a()})),a()})),{state:t,formDom:e,submit:o}}},z=a(1241);const _=(0,z.A)(S,[["render",w],["__scopeId","data-v-3d9ad497"]]);var L=_,x=a(2933),P=a(3830),T={components:{Setting:L},setup(){const e=(0,P.B)(),t=(0,f.KR)(null),a=(0,f.Kh)({loading:!0,type:-1,page:{Page:1,Size:20,Count:0,List:[]},types:["debug","info","warning","error","fatal"],height:(0,f.EW)((()=>e.value.height-200))}),l=()=>{a.loading=!0,h({Page:a.page.Page,Size:a.page.Size,Type:a.type}).then((e=>{a.loading=!1,e.List.map((e=>{e.content=e.Content.substring(0,50)})),a.page=e})).catch((e=>{console.log(e),a.loading=!1}))},o=e=>{e&&(a.page.Page=e,l())},r=()=>{a.loading=!0,k().then((()=>{a.loading=!1,l()})).catch((()=>{a.loading=!1}))},s=({row:e,rowIndex:t})=>`type-${e.Type}`,i=(e,t,a)=>{let n="padding:1rem;border:1px solid #ddd; resize:none;width:39rem;box-sizing: border-box;white-space: nowrap; height:30rem;";x.s.alert(``,"内容",{dangerouslyUseHTMLString:!0}).catch((()=>{}))};return(0,n.sV)((()=>{(0,m.jH)((e=>{e&&l()})),l()})),{wrap:t,state:a,loadData:l,clearData:r,tableRowClassName:s,handleRowClick:i,handlePageChange:o}}};const K=(0,z.A)(T,[["render",b],["__scopeId","data-v-698722d0"]]);var B=K}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/6.5e75d5f5.js b/linker.tray.win/web/js/6.5e75d5f5.js
new file mode 100644
index 00000000..2dd3baaf
--- /dev/null
+++ b/linker.tray.win/web/js/6.5e75d5f5.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[6],{4:function(e,t,a){a.d(t,{a1:function(){return w},e3:function(){return v},jH:function(){return F},zG:function(){return k}});a(4114),a(6573),a(8100),a(7936);var l=a(1219);let n=0,o=null,r="",d=1,s="";const u={},i={connected:!1,connecting:!1},c=()=>{const e=Date.now();for(let t in u){const a=u[t];e-a.time>a.timeout&&(a.reject("超时~"),delete u[t])}setTimeout(c,1e3)};c();const h={subs:{},add:function(e,t){"function"==typeof t&&(this.subs[e]||(this.subs[e]=[]),this.subs[e].push(t))},remove(e,t){let a=this.subs[e]||[];for(let l=a.length-1;l>=0;l--)a[l]==t&&a.splice(l,1)},push(e,t){let a=this.subs[e]||[];for(let l=a.length-1;l>=0;l--)a[l](t)}},m=()=>{i.connected=!0,i.connecting=!1,h.push(b,i.connected)},p=e=>{i.connected=!1,i.connecting=!1,h.push(b,i.connected),setTimeout((()=>{w()}),1e3)},g=e=>{if("string"!=typeof e.data)return void e.data.arrayBuffer().then((t=>{const a=new DataView(t).getInt8(),l=new FileReader;l.readAsText(e.data.slice(4,4+a),"utf8"),l.onload=()=>{let n=JSON.parse(l.result);n.Content={Name:n.Content,Img:e.data.slice(4+a,e.data.length),ArrayBuffer:t},f(n)}}));let t=JSON.parse(e.data);f(t)},f=e=>{let t=u[e.RequestId];t?(0==e.Code?t.resolve(e.Content):1==e.Code?t.reject(e.Content):255==e.Code?(t.reject(e.Content),t.errHandle||l.nk.error(`${t.path}:${e.Content}`)):h.push(e.Path,e.Content),delete u[e.RequestId]):h.push(e.Path,e.Content)},w=(e=r,t=s)=>{if(s=t,r=e,i.connecting||i.connected)return;null!=o&&o.close(),i.connecting=!0;const a=t||"snltty";o=new WebSocket(r,[a]),o.iddd=++d,o.onopen=m,o.onclose=p,o.onmessage=g},v=()=>{o&&o.close()},k=(e,t={},a=!1,l=15e3)=>new Promise(((r,d)=>{let s=++n;try{u[s]={resolve:r,reject:d,errHandle:a,path:e,time:Date.now(),timeout:l};let n=JSON.stringify({Path:e,RequestId:s,Content:"string"==typeof t?t:JSON.stringify(t)});i.connected&&1==o.readyState?o.send(n):d("网络错误~")}catch(c){console.log(c),d("网络错误~"),delete u[s]}})),b=Symbol(),F=e=>{h.add(b,e)}},743:function(e,t,a){a.d(t,{$U:function(){return d},Ap:function(){return n},Co:function(){return o},DY:function(){return s},Qs:function(){return u},eX:function(){return i},pY:function(){return r}});var l=a(4);const n=()=>(0,l.zG)("sforwardclient/GetSecretKey"),o=e=>(0,l.zG)("sforwardclient/SetSecretKey",e),r=(e="0")=>(0,l.zG)("sforwardclient/get",e),d=e=>(0,l.zG)("sforwardclient/getremote",e),s=e=>(0,l.zG)("sforwardclient/remove",e),u=e=>(0,l.zG)("sforwardclient/add",e),i=()=>(0,l.zG)("sforwardclient/TestLocal")},9299:function(e,t,a){a.d(t,{BS:function(){return u},SZ:function(){return r},Se:function(){return i},VN:function(){return d},gC:function(){return c},jU:function(){return o},nD:function(){return s},rd:function(){return n}});var l=a(4);const n=e=>(0,l.zG)("signInclient/set",e),o=e=>(0,l.zG)("signInclient/setservers",e),r=()=>(0,l.zG)("signInclient/info"),d=e=>(0,l.zG)("signInclient/setorder",e),s=e=>(0,l.zG)("signInclient/List",e),u=e=>(0,l.zG)("signInclient/ids",e),i=e=>(0,l.zG)("signInclient/del",e),c=e=>(0,l.zG)("signInclient/setname",e)},83:function(e,t,a){a.d(t,{$M:function(){return u},KW:function(){return s},S3:function(){return h},Vn:function(){return c},b0:function(){return o},gM:function(){return d},ix:function(){return n},r7:function(){return r},xo:function(){return i}});var l=a(4);const n=()=>(0,l.zG)("tunnel/gettypes"),o=e=>(0,l.zG)("tunnel/SetServers",e),r=(e="0")=>(0,l.zG)("tunnel/get",e),d=()=>(0,l.zG)("tunnel/refresh"),s=e=>(0,l.zG)("tunnel/SetRouteLevel",e),u=e=>(0,l.zG)("tunnel/SetTransports",e),i=e=>(0,l.zG)("tunnel/SetExcludeIPs",e),c=()=>(0,l.zG)("tunnel/GeInterfaces"),h=e=>(0,l.zG)("tunnel/SetInterface",e)},920:function(e,t,a){a.d(t,{BJ:function(){return i},NS:function(){return r},Vk:function(){return u},aP:function(){return h},ir:function(){return s},lJ:function(){return o},mK:function(){return n},y2:function(){return c},yN:function(){return d}});var l=a(4);const n=(e="0")=>(0,l.zG)("updaterclient/get",e),o=e=>(0,l.zG)("updaterclient/confirm",e),r=e=>(0,l.zG)("updaterclient/exit",e),d=()=>(0,l.zG)("updaterclient/GetSecretKey"),s=e=>(0,l.zG)("updaterclient/SetSecretKey",e),u=()=>(0,l.zG)("updaterclient/getcurrent"),i=()=>(0,l.zG)("updaterclient/getserver"),c=e=>(0,l.zG)("updaterclient/confirmserver",e),h=()=>(0,l.zG)("updaterclient/exitserver")},3830:function(e,t,a){a.d(t,{B:function(){return s},v:function(){return d}});var l=a(4),n=a(144),o=a(6768);const r=Symbol(),d=()=>{const e=(0,n.KR)({api:{connected:!1},height:0,config:{Common:{},Client:{Servers:[]},Server:{},Running:{Relay:{Servers:[]},Tuntap:{IP:"",PrefixLength:24},Client:{Servers:[]},AutoSyncs:{}},configed:!1},signin:{Connected:!1,Connecting:!1,Version:"v1.0.0.0"},bufferSize:["1KB","2KB","4KB","8KB","16KB","32KB","64KB","128KB","256KB","512KB","1024KB"],updater:{},self:{}});return(0,l.jH)((t=>{e.value.api.connected=t})),(0,o.Gt)(r,e),e},s=()=>(0,o.WQ)(r)},9927:function(e,t,a){a.r(t),a.d(t,{default:function(){return Yt}});var l=a(6768);const n={class:"home-list-wrap absolute"},o={class:"page t-c"},r={class:"page-wrap"};function d(e,t,a,d,s,u){const i=(0,l.g2)("el-table-column"),c=(0,l.g2)("el-table"),h=(0,l.g2)("Device"),m=(0,l.g2)("Tunnel"),p=(0,l.g2)("Tuntap"),g=(0,l.g2)("Forward"),f=(0,l.g2)("Oper"),w=(0,l.g2)("el-pagination"),v=(0,l.g2)("DeviceEdit"),k=(0,l.g2)("TunnelEdit"),b=(0,l.g2)("ConnectionsEdit"),F=(0,l.g2)("TuntapEdit"),C=(0,l.g2)("ForwardEdit"),L=(0,l.g2)("ForwardCopy"),T=(0,l.g2)("SForwardEdit"),y=(0,l.g2)("SForwardCopy");return(0,l.uX)(),(0,l.CE)("div",n,[(0,l.bF)(c,{border:"",style:{width:"100%"},height:"32px",size:"small",onSortChange:d.handleSortChange,class:"table-sort"},{default:(0,l.k6)((()=>[(0,l.bF)(i,{prop:"MachineId",label:"设备名",width:"120",sortable:"custom"}),(0,l.bF)(i,{prop:"Version",label:"版本",width:"120",sortable:"custom"}),(0,l.bF)(i,{prop:"tunnel",label:"网关",width:"90",sortable:"custom"}),(0,l.bF)(i,{prop:"tuntap",label:"网卡IP",width:"150",sortable:"custom"}),(0,l.bF)(i,{prop:"forward",label:""}),(0,l.bF)(i,{label:"",width:"74",fixed:"right"})])),_:1},8,["onSortChange"]),(0,l.bF)(c,{data:d.devices.page.List,stripe:"",border:"",style:{width:"100%"},height:`${d.state.height}px`,size:"small"},{default:(0,l.k6)((()=>[(0,l.bF)(h,{onEdit:d.handleDeviceEdit,onRefresh:d.handlePageRefresh},null,8,["onEdit","onRefresh"]),(0,l.bF)(m,{onEdit:d.handleTunnelEdit,onRefresh:d.handleTunnelRefresh,onConnections:d.handleTunnelConnections},null,8,["onEdit","onRefresh","onConnections"]),(0,l.bF)(p,{onEdit:d.handleTuntapEdit,onRefresh:d.handleTuntapRefresh},null,8,["onEdit","onRefresh"]),(0,l.bF)(g,{onEdit:d._handleForwardEdit,onSedit:d.handleSForwardEdit},null,8,["onEdit","onSedit"]),(0,l.bF)(f,{onRefresh:d.handlePageRefresh},null,8,["onRefresh"])])),_:1},8,["data","height"]),(0,l.Lk)("div",o,[(0,l.Lk)("div",r,[(0,l.bF)(w,{small:"",background:"",layout:"total,sizes,prev,pager, next",total:d.devices.page.Count,"page-size":d.devices.page.Request.Size,"current-page":d.devices.page.Request.Page,onCurrentChange:d.handlePageChange,onSizeChange:d.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])]),d.devices.showDeviceEdit?((0,l.uX)(),(0,l.Wv)(v,{key:0,modelValue:d.devices.showDeviceEdit,"onUpdate:modelValue":t[0]||(t[0]=e=>d.devices.showDeviceEdit=e),onChange:d.handlePageChange,data:d.devices.deviceInfo},null,8,["modelValue","onChange","data"])):(0,l.Q3)("",!0),d.tunnel.showEdit?((0,l.uX)(),(0,l.Wv)(k,{key:1,modelValue:d.tunnel.showEdit,"onUpdate:modelValue":t[1]||(t[1]=e=>d.tunnel.showEdit=e),onChange:d.handleTunnelRefresh},null,8,["modelValue","onChange"])):(0,l.Q3)("",!0),d.connections.showEdit?((0,l.uX)(),(0,l.Wv)(b,{key:2,modelValue:d.connections.showEdit,"onUpdate:modelValue":t[2]||(t[2]=e=>d.connections.showEdit=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),d.tuntap.showEdit?((0,l.uX)(),(0,l.Wv)(F,{key:3,modelValue:d.tuntap.showEdit,"onUpdate:modelValue":t[3]||(t[3]=e=>d.tuntap.showEdit=e),onChange:d.handleTuntapRefresh},null,8,["modelValue","onChange"])):(0,l.Q3)("",!0),d.forward.showEdit?((0,l.uX)(),(0,l.Wv)(C,{key:4,modelValue:d.forward.showEdit,"onUpdate:modelValue":t[4]||(t[4]=e=>d.forward.showEdit=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),d.forward.showCopy?((0,l.uX)(),(0,l.Wv)(L,{key:5,modelValue:d.forward.showCopy,"onUpdate:modelValue":t[5]||(t[5]=e=>d.forward.showCopy=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),d.sforward.showEdit?((0,l.uX)(),(0,l.Wv)(T,{key:6,modelValue:d.sforward.showEdit,"onUpdate:modelValue":t[6]||(t[6]=e=>d.sforward.showEdit=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),d.sforward.showCopy?((0,l.uX)(),(0,l.Wv)(y,{key:7,modelValue:d.sforward.showCopy,"onUpdate:modelValue":t[7]||(t[7]=e=>d.sforward.showCopy=e)},null,8,["modelValue"])):(0,l.Q3)("",!0)])}a(4114);var s=a(4),u=a(3830),i=a(144);const c=e=>((0,l.Qi)("data-v-435a8a16"),e=e(),(0,l.jt)(),e),h={class:"dropdown"},m=c((()=>(0,l.Lk)("span",null,"操作",-1)));function p(e,t,a,n,o,r){const d=(0,l.g2)("ArrowDown"),s=(0,l.g2)("el-icon"),u=(0,l.g2)("SwitchButton"),i=(0,l.g2)("el-dropdown-item"),c=(0,l.g2)("Delete"),p=(0,l.g2)("el-dropdown-menu"),g=(0,l.g2)("el-dropdown"),f=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(f,{label:"操作",width:"74",fixed:"right"},{default:(0,l.k6)((e=>[(0,l.bF)(g,{size:"small"},{dropdown:(0,l.k6)((()=>[(0,l.bF)(p,null,{default:(0,l.k6)((()=>[e.row.showReboot?((0,l.uX)(),(0,l.Wv)(i,{key:0,onClick:t=>n.handleExit(e.row.MachineId,e.row.MachineName)},{default:(0,l.k6)((()=>[(0,l.bF)(s,null,{default:(0,l.k6)((()=>[(0,l.bF)(u)])),_:1}),(0,l.eW)(" 重启")])),_:2},1032,["onClick"])):(0,l.Q3)("",!0),e.row.showDel?((0,l.uX)(),(0,l.Wv)(i,{key:1,onClick:t=>n.handleDel(e.row.MachineId,e.row.MachineName)},{default:(0,l.k6)((()=>[(0,l.bF)(s,null,{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1}),(0,l.eW)(" 删除")])),_:2},1032,["onClick"])):(0,l.Q3)("",!0)])),_:2},1024)])),default:(0,l.k6)((()=>[(0,l.Lk)("div",h,[m,(0,l.bF)(s,{class:"el-icon--right"},{default:(0,l.k6)((()=>[(0,l.bF)(d)])),_:1})])])),_:2},1024)])),_:1})}var g=a(9299),f=a(920),w=a(7477),v=a(2933),k={emits:["refresh"],components:{Delete:w.epd,SwitchButton:w.L$q,ArrowDown:w.yd$},setup(e,{emit:t}){const a=(e,a)=>{v.s.confirm(`确认删除[${a}]?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,g.Se)(e).then((()=>{t("refresh")}))})).catch((()=>{}))},l=(e,a)=>{v.s.confirm(`确认关闭[${a}]?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,f.NS)(e).then((()=>{t("refresh")}))})).catch((()=>{}))};return{handleDel:a,handleExit:l}}},b=a(1241);const F=(0,b.A)(k,[["render",p],["__scopeId","data-v-435a8a16"]]);var C=F,L=a(4232);const T=e=>((0,l.Qi)("data-v-e7fa483e"),e=e(),(0,l.jt)(),e),y={class:"flex"},_=T((()=>(0,l.Lk)("span",{class:"flex-1"},"设备",-1))),V={class:"flex"},I=["onClick"],S=["onClick"],E=T((()=>(0,l.Lk)("span",null,"😴㊙.㊙.㊙.㊙",-1))),P=[E],R=T((()=>(0,l.Lk)("span",{class:"flex-1"},null,-1)));function z(e,t,a,n,o,r){const d=(0,l.g2)("el-input"),s=(0,l.g2)("Search"),u=(0,l.g2)("el-icon"),i=(0,l.g2)("el-button"),c=(0,l.g2)("DeviceName"),h=(0,l.g2)("UpdaterBtn"),m=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(m,{prop:"MachineId",label:"设备",width:"240"},{header:(0,l.k6)((()=>[(0,l.Lk)("div",y,[_,(0,l.Lk)("span",null,[(0,l.bF)(d,{size:"small",modelValue:n.name,"onUpdate:modelValue":t[0]||(t[0]=e=>n.name=e),clearable:"",onInput:n.handleRefresh,placeholder:"设备/虚拟网卡/端口转发"},null,8,["modelValue","onInput"])]),(0,l.Lk)("span",null,[(0,l.bF)(i,{size:"small",onClick:n.handleRefresh},{default:(0,l.k6)((()=>[(0,l.bF)(u,null,{default:(0,l.k6)((()=>[(0,l.bF)(s)])),_:1})])),_:1},8,["onClick"])])])])),default:(0,l.k6)((e=>[(0,l.Lk)("div",null,[(0,l.Lk)("p",null,[(0,l.bF)(c,{onEdit:n.handleEdit,config:!0,item:e.row},null,8,["onEdit","item"])]),(0,l.Lk)("p",V,[e.row.showip?((0,l.uX)(),(0,l.CE)("span",{key:0,title:"此设备的外网IP",class:"ipaddress",onClick:t=>e.row.showip=!e.row.showip},[(0,l.Lk)("span",null,"😀"+(0,L.v_)(e.row.IP),1)],8,I)):((0,l.uX)(),(0,l.CE)("span",{key:1,title:"此设备的外网IP",class:"ipaddress",onClick:t=>e.row.showip=!e.row.showip},P,8,S)),R,(0,l.bF)(h,{config:!0,item:e.row},null,8,["item"])])])])),_:1})}var B=a(9383),M=a(8104),W=a(3929),U=a(5649),D={emits:["edit","refresh"],components:{Search:w.vji,UpdaterBtn:W.A,DeviceName:U.A},setup(e,{emit:t}){const a=(0,i.KR)(sessionStorage.getItem("search-name")||""),l=(0,B.T)(),n=(0,M.W)(),o=e=>{t("edit",e)},r=()=>{sessionStorage.setItem("search-name",a.value),t("refresh",a.value)};return{tuntap:n,handleEdit:o,handleRefresh:r,name:a,updater:l}}};const N=(0,b.A)(D,[["render",z],["__scopeId","data-v-e7fa483e"]]);var X=N,x=a(8809);const G={key:0};function A(e,t,a,n,o,r){const d=(0,l.g2)("TuntapShow"),s=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(s,{prop:"tuntap",label:"虚拟网卡",width:"160"},{default:(0,l.k6)((e=>[n.tuntap.list[e.row.MachineId]?((0,l.uX)(),(0,l.CE)("div",G,[(0,l.bF)(d,{config:!0,item:e.row,onEdit:n.handleTuntapIP,onRefresh:n.handleTuntapRefresh},null,8,["item","onEdit","onRefresh"])])):(0,l.Q3)("",!0)])),_:1})}var K=a(9120),O={emits:["edit","refresh"],components:{TuntapShow:K.A},setup(e,{emit:t}){const a=(0,M.W)(),l=e=>{t("edit",e)},n=()=>{t("refresh")};return{tuntap:a,handleTuntapIP:l,handleTuntapRefresh:n}}};const q=(0,b.A)(O,[["render",A]]);var Q=q;const j=e=>((0,l.Qi)("data-v-22dd5fdf"),e=e(),(0,l.jt)(),e),$=j((()=>(0,l.Lk)("span",null,"/",-1))),H=j((()=>(0,l.Lk)("span",{style:{width:"3rem"}},null,-1))),J={key:0,class:"upgrade-wrap"},Y=j((()=>(0,l.Lk)("span",{class:"yellow"},"此设备能使用NAT转发,只需局域网IP,剩下的交给NAT(linux、macos、win10+)",-1))),Z={class:"flex-1"},ee=j((()=>(0,l.Lk)("span",null,"/",-1))),te={class:"pdl-10"},ae=j((()=>(0,l.Lk)("span",{class:"yellow"},"此设备无法使用NAT转发,或只想使用端口转发",-1))),le={class:"flex-1"},ne={class:"pdl-10"};function oe(e,t,a,n,o,r){const d=(0,l.g2)("el-form-item"),s=(0,l.g2)("el-input"),u=(0,l.g2)("el-checkbox"),i=(0,l.g2)("el-popover"),c=(0,l.g2)("Delete"),h=(0,l.g2)("el-icon"),m=(0,l.g2)("el-button"),p=(0,l.g2)("Plus"),g=(0,l.g2)("el-form"),f=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(f,{modelValue:n.state.show,"onUpdate:modelValue":t[6]||(t[6]=e=>n.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:"组网设置",top:"1vh",width:"700"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(g,{ref:"ruleFormRef",model:n.state.ruleForm,rules:n.state.rules,"label-width":"140"},{default:(0,l.k6)((()=>[(0,l.bF)(d,{prop:"gateway",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[(0,l.eW)(" 赐予此设备IP,其它设备可通过此IP访问 ")])),_:1}),(0,l.bF)(d,{label:"此设备的虚拟网卡IP",prop:"IP"},{default:(0,l.k6)((()=>[(0,l.bF)(s,{modelValue:n.state.ruleForm.IP,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.ruleForm.IP=e),style:{width:"14rem"}},null,8,["modelValue"]),$,(0,l.bF)(s,{onChange:n.handlePrefixLengthChange,modelValue:n.state.ruleForm.PrefixLength,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.ruleForm.PrefixLength=e),style:{width:"4rem"}},null,8,["onChange","modelValue"]),H,(0,l.bF)(u,{modelValue:n.state.ruleForm.ShowDelay,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.ruleForm.ShowDelay=e),label:"显示延迟",size:"large"},null,8,["modelValue"]),(0,l.bF)(i,{placement:"top",title:"提示",width:400,trigger:"hover",content:"在测试延迟时,如果未连接,将自动去打洞连接,当你有一百个设备时,每个设备都同时去与其它99台设备连接,这数据量不小,所以尽量不要个设备都勾选"},{reference:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:n.state.ruleForm.AutoConnect,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.ruleForm.AutoConnect=e),label:"自动连接?",size:"large"},null,8,["modelValue"])])),_:1})])),_:1}),(0,l.bF)(d,{prop:"upgrade",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:n.state.ruleForm.Upgrade,"onUpdate:modelValue":t[4]||(t[4]=e=>n.state.ruleForm.Upgrade=e),label:"我很懂,我要使用高级功能(点对网和网对网)",size:"large"},null,8,["modelValue"])])),_:1}),n.state.ruleForm.Upgrade?((0,l.uX)(),(0,l.CE)("div",J,[(0,l.bF)(d,{prop:"nat",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[Y])),_:1}),(0,l.bF)(d,{label:"此设备局域网IP",prop:"LanIP",style:{"border-bottom":"1px solid #ddd","margin-bottom":"0"}},{default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.state.ruleForm.LanIPs,((e,t)=>((0,l.uX)(),(0,l.CE)("div",{key:t,class:"flex",style:{"margin-bottom":".6rem"}},[(0,l.Lk)("div",Z,[(0,l.bF)(s,{modelValue:n.state.ruleForm.LanIPs[t],"onUpdate:modelValue":e=>n.state.ruleForm.LanIPs[t]=e,style:{width:"14rem"}},null,8,["modelValue","onUpdate:modelValue"]),ee,(0,l.bF)(s,{onChange:e=>n.handleMaskChange(t),modelValue:n.state.ruleForm.Masks[t],"onUpdate:modelValue":e=>n.state.ruleForm.Masks[t]=e,style:{width:"4rem"}},null,8,["onChange","modelValue","onUpdate:modelValue"])]),(0,l.Lk)("div",te,[(0,l.bF)(m,{type:"danger",onClick:e=>n.handleDel(t)},{default:(0,l.k6)((()=>[(0,l.bF)(h,null,{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1})])),_:2},1032,["onClick"]),(0,l.bF)(m,{type:"primary",onClick:e=>n.handleAdd(t)},{default:(0,l.k6)((()=>[(0,l.bF)(h,null,{default:(0,l.k6)((()=>[(0,l.bF)(p)])),_:1})])),_:2},1032,["onClick"])])])))),128))])),_:1}),(0,l.bF)(d,{prop:"forward",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[ae])),_:1}),(0,l.bF)(d,{label:"端口转发",prop:"forwards"},{default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.state.ruleForm.Forwards,((e,t)=>((0,l.uX)(),(0,l.CE)("div",{key:t,class:"flex",style:{"margin-bottom":".6rem"}},[(0,l.Lk)("div",le,[(0,l.bF)(s,{modelValue:e.ListenAddr,"onUpdate:modelValue":t=>e.ListenAddr=t,style:{width:"7rem"},readonly:""},null,8,["modelValue","onUpdate:modelValue"]),(0,l.eW)(" : "),(0,l.bF)(s,{onChange:e=>n.handleForwardChange(t),modelValue:e.ListenPort,"onUpdate:modelValue":t=>e.ListenPort=t,style:{width:"6rem"}},null,8,["onChange","modelValue","onUpdate:modelValue"]),(0,l.eW)(" -> "),(0,l.bF)(s,{modelValue:e.ConnectAddr,"onUpdate:modelValue":t=>e.ConnectAddr=t,style:{width:"14rem"}},null,8,["modelValue","onUpdate:modelValue"]),(0,l.eW)(" : "),(0,l.bF)(s,{onChange:e=>n.handleForwardChange(t),modelValue:e.ConnectPort,"onUpdate:modelValue":t=>e.ConnectPort=t,style:{width:"6rem"}},null,8,["onChange","modelValue","onUpdate:modelValue"])]),(0,l.Lk)("div",ne,[(0,l.bF)(m,{type:"danger",onClick:e=>n.handleDelForward(t)},{default:(0,l.k6)((()=>[(0,l.bF)(h,null,{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1})])),_:2},1032,["onClick"]),(0,l.bF)(m,{type:"primary",onClick:e=>n.handleAddForward(t)},{default:(0,l.k6)((()=>[(0,l.bF)(h,null,{default:(0,l.k6)((()=>[(0,l.bF)(p)])),_:1})])),_:2},1032,["onClick"])])])))),128))])),_:1})])):(0,l.Q3)("",!0),(0,l.bF)(d,{label:"",prop:"Btns"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(m,{onClick:t[5]||(t[5]=e=>n.state.show=!1)},{default:(0,l.k6)((()=>[(0,l.eW)("取消")])),_:1}),(0,l.bF)(m,{type:"primary",onClick:n.handleSave},{default:(0,l.k6)((()=>[(0,l.eW)("确认")])),_:1},8,["onClick"])])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue"])}var re=a(5241),de=a(1219),se={props:["modelValue"],emits:["change","update:modelValue"],components:{Delete:w.epd,Plus:w.FWt},setup(e,{emit:t}){const a=(0,u.B)(),n=(0,M.W)(),o=(0,i.KR)(null),r=(0,i.Kh)({show:!0,bufferSize:a.value.bufferSize,ruleForm:{IP:n.value.current.IP,LanIPs:n.value.current.LanIPs.slice(0),Masks:n.value.current.Masks.slice(0),PrefixLength:n.value.current.PrefixLength||24,Gateway:n.value.current.Gateway,ShowDelay:n.value.current.ShowDelay,AutoConnect:n.value.current.AutoConnect,Upgrade:n.value.current.Upgrade,Forwards:0==n.value.current.Forwards.length?[{ListenAddr:"0.0.0.0",ListenPort:0,ConnectAddr:"0.0.0.0",ConnectPort:0}]:n.value.current.Forwards.slice(0)},rules:{}});0==r.ruleForm.LanIPs.length&&(r.ruleForm.LanIPs.push(""),r.ruleForm.Masks.push(24)),(0,l.wB)((()=>r.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const d=()=>{var e=+r.ruleForm.PrefixLength;(e>32||e<16||isNaN(e))&&(e=24),r.ruleForm.PrefixLength=e},s=e=>{var t=+r.ruleForm.Masks[e];(t>32||t<16||isNaN(t))&&(t=24),r.ruleForm.Masks[e]=t},c=e=>{r.ruleForm.LanIPs.splice(e,1),r.ruleForm.Masks.splice(e,1),0==r.ruleForm.LanIPs.length&&h(0)},h=e=>{r.ruleForm.LanIPs.splice(e+1,0,""),r.ruleForm.Masks.splice(e+1,0,24)},m=()=>{const e=JSON.parse(JSON.stringify(n.value.current));e.IP=r.ruleForm.IP||"0.0.0.0";const{lanips:a,masks:l}=r.ruleForm.LanIPs.reduce(((e,t,a)=>(t&&r.ruleForm.Masks[a]&&(e.lanips.push(t),e.masks.push(r.ruleForm.Masks[a])),e)),{lanips:[],masks:[]});e.LanIPs=a,e.Masks=l,e.PrefixLength=+r.ruleForm.PrefixLength,e.Gateway=r.ruleForm.Gateway,e.ShowDelay=r.ruleForm.ShowDelay,e.AutoConnect=r.ruleForm.AutoConnect,e.Upgrade=r.ruleForm.Upgrade,e.Forwards=r.ruleForm.Forwards,e.Forwards.forEach((e=>{e.ListenPort=+e.ListenPort,e.ConnectPort=+e.ConnectPort})),(0,re.ac)(e).then((()=>{r.show=!1,de.nk.success("已操作!"),t("change")})).catch((()=>{de.nk.error("操作失败!")}))},p=e=>{r.ruleForm.Forwards.splice(e,1),0==r.ruleForm.Forwards.length&&g(0)},g=e=>{r.ruleForm.Forwards.splice(e+1,0,{ListenAddr:"0.0.0.0",ListenPort:0,ConnectAddr:"0.0.0.0",ConnectPort:0})},f=()=>{};return{state:r,ruleFormRef:o,handlePrefixLengthChange:d,handleMaskChange:s,handleDel:c,handleAdd:h,handleSave:m,handleForwardChange:f,handleDelForward:p,handleAddForward:g}}};const ue=(0,b.A)(se,[["render",oe],["__scopeId","data-v-22dd5fdf"]]);var ie=ue;const ce={key:0},he=["title","onClick"],me=["onClick"];function pe(e,t,a,n,o,r){const d=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(d,{prop:"tunnel",label:"隧道",width:"90"},{default:(0,l.k6)((e=>[n.tunnel.list[e.row.MachineId]?((0,l.uX)(),(0,l.CE)("div",ce,[(0,l.Lk)("a",{href:"javascript:;",class:(0,L.C4)(["a-line",{yellow:n.tunnel.list[e.row.MachineId].NeedReboot}]),title:n.tunnel.list[e.row.MachineId].NeedReboot?"需要重启":"调整网关层级有助于打洞成功",onClick:t=>n.handleTunnel(n.tunnel.list[e.row.MachineId])},[(0,l.Lk)("span",null,"网关 : "+(0,L.v_)(n.tunnel.list[e.row.MachineId].RouteLevel)+" + "+(0,L.v_)(n.tunnel.list[e.row.MachineId].RouteLevelPlus),1)],10,he)])):(0,l.Q3)("",!0),(0,l.Lk)("div",null,[(0,l.Lk)("a",{href:"javascript:;",title:"与此设备的隧道连接",class:(0,L.C4)(["a-line",{green:n.connectionCount(e.row.MachineId)>0}]),onClick:t=>n.handleConnections(e.row.MachineId)},[(0,l.eW)(" 连接数 : "),(0,l.Lk)("span",null,(0,L.v_)(n.connectionCount(e.row.MachineId)),1)],10,me)])])),_:1})}var ge=a(83);const fe=Symbol(),we=()=>{const e=(0,u.B)(),t=(0,i.KR)({timer:0,showEdit:!1,current:null,list:{},hashcode:0});(0,l.Gt)(fe,t);const a=()=>{e.value.api.connected?(0,ge.r7)(t.value.hashcode.toString()).then((e=>{t.value.hashcode=e.HashCode,e.List&&(t.value.list=e.List),t.value.timer=setTimeout(a,1060)})).catch((()=>{t.value.timer=setTimeout(a,1060)})):t.value.timer=setTimeout(a,1060)},n=e=>{t.value.current=e,t.value.showEdit=!0},o=()=>{(0,ge.gM)(),de.nk.success({message:"刷新成功",grouping:!0})},r=()=>{clearTimeout(t.value.timer)},d=e=>Object.values(t.value.list).sort(((e,t)=>e.RouteLevel+e.RouteLevelPlus-t.RouteLevel+t.RouteLevelPlus)).map((e=>e.MachineId));return{tunnel:t,_getTunnelInfo:a,handleTunnelEdit:n,handleTunnelRefresh:o,clearTunnelTimeout:r,sortTunnel:d}},ve=()=>(0,l.WQ)(fe),ke=(e="0")=>(0,s.zG)("forwardclient/connections",e),be=e=>(0,s.zG)("forwardclient/removeconnection",e),Fe=(e="0")=>(0,s.zG)("forwardclient/get",e),Ce=e=>(0,s.zG)("forwardclient/getremote",e),Le=()=>(0,s.zG)("forwardclient/bindips"),Te=e=>(0,s.zG)("forwardclient/remove",e),ye=e=>(0,s.zG)("forwardclient/add",e),_e=e=>(0,s.zG)("forwardclient/TestTarget",e),Ve=Symbol(),Ie=Symbol(),Se=Symbol(),Ee=()=>{const e=(0,u.B)(),t=(0,i.KR)({showEdit:!1,speedCache:{},current:"",hashcode:0,hashcode1:0});(0,l.Gt)(Ve,t);const a=(0,i.KR)({timer:0,list:{}});(0,l.Gt)(Ie,a);const n=()=>{e.value.api.connected?ke(t.value.hashcode.toString()).then((e=>{t.value.hashcode=e.HashCode,e.List&&(d(e.List,be),a.value.list=e.List),a.value.timer=setTimeout(n,1e3)})).catch((e=>{a.value.timer=setTimeout(n,1e3)})):a.value.timer=setTimeout(n,1e3)},o=(0,i.KR)({timer:0,list:{}});(0,l.Gt)(Se,o);const r=()=>{e.value.api.connected?(0,re.kl)(t.value.hashcode1.toString()).then((e=>{t.value.hashcode1=e.HashCode,e.List&&(d(e.List,re.vB),o.value.list=e.List),o.value.timer=setTimeout(r,1e3)})).catch((e=>{o.value.timer=setTimeout(r,1e3)})):o.value.timer=setTimeout(r,1e3)},d=(e,a)=>{const l=t.value.speedCache;for(let t in e){const n=e[t];n.removeFunc=a;const o=`${n.RemoteMachineId}-${n.TransactionId}`,r=l[o]||{SendBytes:0,ReceiveBytes:0};n.SendBytesText=s(n.SendBytes-r.SendBytes),n.ReceiveBytesText=s(n.ReceiveBytes-r.ReceiveBytes),r.SendBytes=n.SendBytes,r.ReceiveBytes=n.ReceiveBytes,l[o]=r}},s=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B/s","KB/s","MB/s","GB/s","TB/s"][t]}`},c=e=>{t.value.current=e,t.value.showEdit=!0},h=()=>{clearTimeout(a.value.timer),clearTimeout(o.value.timer)};return{connections:t,forwardConnections:a,_getForwardConnections:n,tuntapConnections:o,_getTuntapConnections:r,handleTunnelConnections:c,clearConnectionsTimeout:h}},Pe=()=>(0,l.WQ)(Ve),Re=()=>(0,l.WQ)(Ie),ze=()=>(0,l.WQ)(Se);var Be={emits:["edit","refresh"],setup(e,{emit:t}){const a=ve(),l=(Pe(),Re()),n=ze(),o=e=>[l.value.list[e],n.value.list[e]].filter((e=>!!e&&e.Connected)).length,r=e=>{t("edit",e)},d=()=>{t("refresh")},s=e=>{t("connections",e)};return{tunnel:a,handleTunnel:r,handleTunnelRefresh:d,connectionCount:o,handleConnections:s}}};const Me=(0,b.A)(Be,[["render",pe],["__scopeId","data-v-c257d30c"]]);var We=Me;const Ue=e=>((0,l.Qi)("data-v-98329976"),e=e(),(0,l.jt)(),e),De=Ue((()=>(0,l.Lk)("div",null,"网关层级为你的设备与外网的距离,你可以手动调整数值",-1))),Ne=Ue((()=>(0,l.Lk)("div",null,"光猫映射了端口后,可以直接连接,把TcpPortMap调到第一",-1))),Xe={class:"t-c w-100"};function xe(e,t,a,n,o,r){const d=(0,l.g2)("el-form-item"),s=(0,l.g2)("el-input"),u=(0,l.g2)("el-col"),i=(0,l.g2)("el-input-number"),c=(0,l.g2)("el-row"),h=(0,l.g2)("el-button"),m=(0,l.g2)("el-form"),p=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(p,{modelValue:n.state.show,"onUpdate:modelValue":t[5]||(t[5]=e=>n.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:"设置隧道",width:"400"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(m,{ref:"ruleFormRef",model:n.state.ruleForm,rules:n.state.rules,"label-width":"auto"},{default:(0,l.k6)((()=>[(0,l.bF)(d,{label:"",prop:"alert"},{default:(0,l.k6)((()=>[De])),_:1}),(0,l.bF)(d,{label:""},{default:(0,l.k6)((()=>[(0,l.bF)(c,null,{default:(0,l.k6)((()=>[(0,l.bF)(u,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(d,{label:"网关层级",prop:"RouteLevel"},{default:(0,l.k6)((()=>[(0,l.bF)(s,{readonly:"",modelValue:n.state.ruleForm.RouteLevel,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.ruleForm.RouteLevel=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,l.bF)(u,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(d,{label:"调整层级",prop:"RouteLevelPlus"},{default:(0,l.k6)((()=>[(0,l.bF)(i,{modelValue:n.state.ruleForm.RouteLevelPlus,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.ruleForm.RouteLevelPlus=e)},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,l.bF)(d,{label:"",prop:"alert"},{default:(0,l.k6)((()=>[Ne])),_:1}),(0,l.bF)(d,{label:""},{default:(0,l.k6)((()=>[(0,l.bF)(c,null,{default:(0,l.k6)((()=>[(0,l.bF)(u,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(d,{label:"外网端口",prop:"PortMapWan"},{default:(0,l.k6)((()=>[(0,l.bF)(i,{modelValue:n.state.ruleForm.PortMapWan,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.ruleForm.PortMapWan=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,l.bF)(u,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(d,{label:"内网端口",prop:"PortMapLan"},{default:(0,l.k6)((()=>[(0,l.bF)(i,{modelValue:n.state.ruleForm.PortMapLan,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.ruleForm.PortMapLan=e)},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,l.bF)(d,{label:"",prop:"Btns"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",Xe,[(0,l.bF)(h,{onClick:t[4]||(t[4]=e=>n.state.show=!1)},{default:(0,l.k6)((()=>[(0,l.eW)("取消")])),_:1}),(0,l.bF)(h,{type:"primary",onClick:n.handleSave},{default:(0,l.k6)((()=>[(0,l.eW)("确认")])),_:1},8,["onClick"])])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue"])}var Ge={props:["modelValue"],emits:["change","update:modelValue"],setup(e,{emit:t}){const a=ve(),n=(0,i.KR)(null),o=(0,i.Kh)({show:!0,ruleForm:{RouteLevel:a.value.current.RouteLevel,RouteLevelPlus:a.value.current.RouteLevelPlus,PortMapWan:a.value.current.PortMapWan,PortMapLan:a.value.current.PortMapLan},rules:{}});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const r=()=>{const e=JSON.parse(JSON.stringify(a.value.current));e.RouteLevel=+o.ruleForm.RouteLevel,e.RouteLevelPlus=+o.ruleForm.RouteLevelPlus,e.PortMapWan=+o.ruleForm.PortMapWan,e.PortMapLan=+o.ruleForm.PortMapLan,(0,ge.KW)(e).then((()=>{o.show=!1,de.nk.success("已操作!"),t("change")})).catch((()=>{de.nk.error("操作失败!")}))};return{state:o,ruleFormRef:n,handleSave:r}}};const Ae=(0,b.A)(Ge,[["render",xe],["__scopeId","data-v-98329976"]]);var Ke=Ae;const Oe={key:0},qe={class:"list forward"},Qe=["onClick"],je={key:1},$e=["onClick"],He={key:1},Je={class:"list sforward"},Ye={key:1};function Ze(e,t,a,n,o,r){const d=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(d,{prop:"forward",label:"端口转发"},{default:(0,l.k6)((e=>[e.row.isSelf?((0,l.uX)(),(0,l.CE)("div",He,[(0,l.Lk)("ul",Je,[n.sforward.list&&n.sforward.list.length>0?((0,l.uX)(!0),(0,l.CE)(l.FK,{key:0},(0,l.pI)(n.sforward.list.slice(0,5),((e,a)=>((0,l.uX)(),(0,l.CE)("li",{key:a,class:(0,L.C4)({red:!!e.Msg})},[(0,l.Lk)("a",{href:"javascript:;",onClick:t[0]||(t[0]=e=>n.handleSEdit()),class:(0,L.C4)({green:e.Started})},[(0,l.Lk)("span",null,[(0,l.Lk)("span",{class:(0,L.C4)({red:!!e.Msg})},(0,L.v_)(e.Domain||e.RemotePort),3),(0,l.eW)(" -> "),(0,l.Lk)("span",{class:(0,L.C4)({red:!!e.LocalMsg})},(0,L.v_)(e.LocalEP),3)])],2),(0,l.Lk)("span",null," ("+(0,L.v_)(1<n.handleSEdit())},"暂无配置")]))])])):((0,l.uX)(),(0,l.CE)("div",Oe,[(0,l.Lk)("ul",qe,[n.forward.list[e.row.MachineId]&&n.forward.list[e.row.MachineId].length>0?((0,l.uX)(!0),(0,l.CE)(l.FK,{key:0},(0,l.pI)(n.forward.list[e.row.MachineId],((t,a)=>((0,l.uX)(),(0,l.CE)("li",{key:a},[(0,l.Lk)("a",{href:"javascript:;",onClick:t=>n.handleEdit(e.row.MachineId),class:(0,L.C4)({green:t.Started})},[(0,l.Lk)("span",null,[(0,l.Lk)("span",{class:(0,L.C4)({red:!!t.Msg})},(0,L.v_)(t.Port),3),(0,l.eW)(" -> "),(0,l.Lk)("span",{class:(0,L.C4)({red:!!t.TargetMsg})},(0,L.v_)(t.TargetEP),3)])],10,Qe),(0,l.Lk)("span",null," ("+(0,L.v_)(1<n.handleEdit(e.row.MachineId)},"暂无配置",8,$e)]))])]))])),_:1})}const et=Symbol(),tt=()=>{const e=(0,u.B)(),t=(0,i.KR)({timer:0,showEdit:!1,showCopy:!1,current:null,list:{},testTimer:0,testTargetTimer:0,hashcode:0,hashcode1:0});(0,l.Gt)(et,t);const a=()=>{e.value.api.connected?Fe(t.value.hashcode.toString()).then((e=>{t.value.hashcode=e.HashCode,e.List&&(t.value.list=e.List),t.value.timer=setTimeout(a,1020)})).catch((()=>{t.value.timer=setTimeout(a,1020)})):t.value.timer=setTimeout(a,1020)},n=(e,a)=>{t.value.current=e,t.value.machineName=a,t.value.showEdit=!0},o=()=>{clearTimeout(t.value.testTargetTimer),_e(t.value.current).then((e=>{t.value.testTargetTimer=setTimeout(o,5e3)})).catch((()=>{t.value.testTargetTimer=setTimeout(o,5e3)}))},r=()=>{clearTimeout(t.value.timer),clearTimeout(t.value.testTimer),clearTimeout(t.value.testTargetTimer)},d=e=>Object.values(t.value.list).reduce(((e,t)=>(e=e.concat(t),e)),[]).filter((t=>(t.Name||"").indexOf(e)>=0||(t.BindIPAddress||"").indexOf(e)>=0||t.Port.toString().indexOf(e)>=0||(t.TargetEP||"").indexOf(e)>=0)).map((e=>e.MachineId));return{forward:t,_getForwardInfo:a,handleForwardEdit:n,_testTargetForwardInfo:o,clearForwardTimeout:r,getForwardMachines:d}},at=()=>(0,l.WQ)(et);var lt=a(743);const nt=Symbol(),ot=()=>{const e=(0,u.B)(),t=(0,l.EW)((()=>e.value.config.Client.Id)),a=(0,i.KR)({timer:0,showEdit:!1,showCopy:!1,list:[],testTimer:0,hashcode:0});(0,l.Gt)(nt,a);const n=()=>{e.value.api.connected?(0,lt.pY)(a.value.hashcode.toString()).then((e=>{a.value.hashcode=e.HashCode,e.List&&(a.value.list=e.List),a.value.timer=setTimeout(n,1040)})).catch((()=>{a.value.timer=setTimeout(n,1040)})):a.value.timer=setTimeout(n,1040)},o=()=>{a.value.showEdit=!0},r=()=>{clearTimeout(a.value.testTimer),(0,lt.eX)().then((e=>{a.value.testTimer=setTimeout(r,5e3)})).catch((()=>{a.value.testTimer=setTimeout(r,5e3)}))},d=()=>{clearTimeout(a.value.timer),clearTimeout(a.value.testTimer)},s=e=>{const l=a.value.list.filter((t=>(t.Name||"").indexOf(e)>=0||(t.Domain||"").indexOf(e)>=0||t.RemotePort.toString().indexOf(e)>=0||t.LocalEP.indexOf(e)>=0));return l.length>0?[t.value]:[]};return{sforward:a,_getSForwardInfo:n,handleSForwardEdit:o,_testLocalSForwardInfo:r,clearSForwardTimeout:d,getSForwardMachines:s}},rt=()=>(0,l.WQ)(nt);var dt={emits:["edit","sedit"],setup(e,{emit:t}){const a=at(),l=rt(),n=e=>{t("edit",e)},o=()=>{t("sedit")},r=()=>{t("refresh")};return{forward:a,sforward:l,handleEdit:n,handleSEdit:o,handleForwardRefresh:r}}};const st=(0,b.A)(dt,[["render",Ze],["__scopeId","data-v-36ba4048"]]);var ut=st;const it={class:"t-c head"},ct={class:"error red"},ht={class:"error red"};function mt(e,t,a,n,o,r){const d=(0,l.g2)("el-button"),s=(0,l.g2)("el-input"),u=(0,l.g2)("el-table-column"),i=(0,l.g2)("el-option"),c=(0,l.g2)("el-select"),h=(0,l.g2)("WarnTriangleFilled"),m=(0,l.g2)("el-icon"),p=(0,l.g2)("el-popover"),g=(0,l.g2)("el-switch"),f=(0,l.g2)("Delete"),w=(0,l.g2)("el-popconfirm"),v=(0,l.g2)("el-table"),k=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(k,{modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),onOpen:n.handleOnShowList,"append-to":".app-wrap",title:`端口转发到【${n.state.machineName}】`,top:"1vh",width:"700"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",it,[(0,l.bF)(d,{type:"success",size:"small",onClick:n.handleAdd},{default:(0,l.k6)((()=>[(0,l.eW)("添加")])),_:1},8,["onClick"]),(0,l.bF)(d,{size:"small",onClick:n.handleRefresh},{default:(0,l.k6)((()=>[(0,l.eW)("刷新")])),_:1},8,["onClick"]),(0,l.bF)(d,{size:"small",onClick:n.handleCopy},{default:(0,l.k6)((()=>[(0,l.eW)("复制转发配置")])),_:1},8,["onClick"])]),(0,l.bF)(v,{data:n.state.data,size:"small",border:"",height:"500",onCellDblclick:n.handleCellClick},{default:(0,l.k6)((()=>[(0,l.bF)(u,{property:"Name",label:"名称"},{default:(0,l.k6)((e=>[e.row.NameEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":t=>e.row.Name=t,onBlur:t=>n.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.eW)((0,L.v_)(e.row.Name),1)],64))])),_:1}),(0,l.bF)(u,{prop:"BufferSize",label:"缓冲区",width:"100"},{default:(0,l.k6)((e=>[(0,l.bF)(c,{modelValue:e.row.BufferSize,"onUpdate:modelValue":t=>e.row.BufferSize=t,placeholder:"Select",size:"small",disabled:e.row.Started,onChange:t=>n.handleEditBlur(e.row,"BufferSize")},{default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.state.bufferSize,((e,t)=>((0,l.uX)(),(0,l.Wv)(i,{key:t,label:e,value:t},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","disabled","onChange"])])),_:1}),(0,l.bF)(u,{property:"BindIPAddress",label:"监听IP",width:"140"},{default:(0,l.k6)((e=>[(0,l.bF)(c,{modelValue:e.row.BindIPAddress,"onUpdate:modelValue":t=>e.row.BindIPAddress=t,size:"small",disabled:e.row.Started},{default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.state.ips,(e=>((0,l.uX)(),(0,l.Wv)(i,{key:e,label:e,value:e},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","disabled"])])),_:1}),(0,l.bF)(u,{property:"Port",label:"监听端口",width:"80"},{default:(0,l.k6)((e=>[e.row.PortEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(s,{key:0,type:"number",autofocus:"",size:"small",modelValue:e.row.Port,"onUpdate:modelValue":t=>e.row.Port=t,onBlur:t=>n.handleEditBlur(e.row,"Port")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[e.row.Msg?((0,l.uX)(),(0,l.Wv)(p,{key:0,placement:"top",title:"msg",width:"20rem",trigger:"hover",content:e.row.Msg},{reference:(0,l.k6)((()=>[(0,l.Lk)("div",ct,[(0,l.Lk)("span",null,(0,L.v_)(e.row.Port),1),(0,l.bF)(m,{size:"20"},{default:(0,l.k6)((()=>[(0,l.bF)(h)])),_:1})])])),_:2},1032,["content"])):((0,l.uX)(),(0,l.CE)("span",{key:1,class:(0,L.C4)({green:e.row.Started})},(0,L.v_)(e.row.Port),3))],64))])),_:1}),(0,l.bF)(u,{property:"TargetEP",label:"目标服务",width:"140"},{default:(0,l.k6)((e=>[e.row.TargetEPEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.TargetEP,"onUpdate:modelValue":t=>e.row.TargetEP=t,onBlur:t=>n.handleEditBlur(e.row,"TargetEP")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[e.row.TargetMsg?((0,l.uX)(),(0,l.Wv)(p,{key:0,placement:"top",title:"msg",width:"20rem",trigger:"hover",content:e.row.TargetMsg},{reference:(0,l.k6)((()=>[(0,l.Lk)("span",ht,(0,L.v_)(e.row.TargetEP),1),(0,l.bF)(m,{size:"20"},{default:(0,l.k6)((()=>[(0,l.bF)(h)])),_:1})])),_:2},1032,["content"])):((0,l.uX)(),(0,l.CE)("span",{key:1,class:(0,L.C4)({green:e.row.Started})},(0,L.v_)(e.row.TargetEP),3))],64))])),_:1}),(0,l.bF)(u,{property:"Started",label:"状态",width:"60"},{default:(0,l.k6)((e=>[(0,l.bF)(g,{modelValue:e.row.Started,"onUpdate:modelValue":t=>e.row.Started=t,onChange:t=>n.handleStartChange(e.row),"inline-prompt":"","active-text":"开","inactive-text":"关"},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,l.bF)(u,{label:"操作",width:"54"},{default:(0,l.k6)((e=>[(0,l.bF)(w,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"删除不可逆,是否确认?",onConfirm:t=>n.handleDel(e.row.Id)},{reference:(0,l.k6)((()=>[(0,l.bF)(d,{type:"danger",size:"small"},{default:(0,l.k6)((()=>[(0,l.bF)(m,null,{default:(0,l.k6)((()=>[(0,l.bF)(f)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data","onCellDblclick"])])])),_:1},8,["modelValue","onOpen","title"])}var pt={props:["data","modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:w.DtC,Delete:w.epd},setup(e,{emit:t}){const a=(0,u.B)(),n=at(),o=(0,i.Kh)({show:!0,machineId:n.value.current,machineName:n.value.machineName,data:[],ips:[],timerTestTarget:0,timerTestListen:0,bufferSize:a.value.bufferSize});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const r=()=>{Le().then((e=>{e.splice(0,0,"127.0.0.1"),e.splice(0,0,"0.0.0.0"),o.ips=e})).catch((()=>{}))},d=()=>{_e(n.value.current).then((e=>{o.timerTestTarget=setTimeout(d,1e3)})).catch((()=>{o.timerTestTarget=setTimeout(d,1e3)}))},s=()=>{Fe().then((e=>{e.List&&(o.data=e.List[o.machineId]||[])})).catch((()=>{}))},c=()=>{s()},h=(e,t)=>{g(e,t.property)},m=()=>{s(),de.nk.success("已刷新")},p=()=>{k({ID:0,Name:"",Port:0,TargetEP:"127.0.0.1:80",machineId:o.machineId})},g=(e,t)=>{e.Started?de.nk.error("请先停止"):(o.data.forEach((e=>{e["NameEditing"]=!1,e["PortEditing"]=!1,e["TargetEPEditing"]=!1,e["BindIPAddressEditing"]=!1})),e[`${t}Editing`]=!0)},f=(e,t)=>{e.Started?de.nk.error("请先停止"):(e[`${t}Editing`]=!1,k(e))},w=e=>{Te(e).then((()=>{s()}))},v=e=>{k(e)},k=e=>{e.Port=parseInt(e.Port),ye(e).then((()=>{s()})).catch((e=>{de.nk.error(e)}))},b=()=>{n.value.showCopy=!0};return(0,l.sV)((()=>{s(),r(),d()})),(0,l.hi)((()=>{clearTimeout(o.timerTestTarget),clearTimeout(o.timerTestListen)})),{state:o,handleOnShowList:c,handleCellClick:h,handleRefresh:m,handleAdd:p,handleEdit:g,handleEditBlur:f,handleDel:w,handleStartChange:v,handleCopy:b}}};const gt=(0,b.A)(pt,[["render",mt],["__scopeId","data-v-2c1a8404"]]);var ft=gt;const wt=e=>((0,l.Qi)("data-v-3a13c86f"),e=e(),(0,l.jt)(),e),vt={class:"t-c head"},kt=wt((()=>(0,l.Lk)("span",null,"复制",-1))),bt={class:"t-c"},Ft={class:"page-wrap"},Ct={class:"foot t-c"};function Lt(e,t,a,n,o,r){const d=(0,l.g2)("el-pagination"),s=(0,l.g2)("el-option"),u=(0,l.g2)("el-select"),i=(0,l.g2)("el-table-column"),c=(0,l.g2)("el-checkbox"),h=(0,l.g2)("el-table"),m=(0,l.g2)("el-button"),p=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(p,{modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),onOpen:n.handleOnShowList,"append-to":".app-wrap",title:"复制端口转发",top:"1vh",width:"500"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",vt,[kt,(0,l.bF)(u,{modelValue:n.state.machineId,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.machineId=e),onChange:n.handleMachineChange,filterable:"",remote:"",loading:n.state.loading,"remote-method":n.handleSearch},{header:(0,l.k6)((()=>[(0,l.Lk)("div",bt,[(0,l.Lk)("div",Ft,[(0,l.bF)(d,{small:"",background:"",layout:"prev, pager, next","page-size":n.state.machineIds.Request.Size,total:n.state.machineIds.Count,"pager-count":5,"current-page":n.state.machineIds.Request.Page,onCurrentChange:n.handlePageChange},null,8,["page-size","total","current-page","onCurrentChange"])])])])),default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.state.machineIds.List,((e,t)=>((0,l.uX)(),(0,l.Wv)(s,{key:t,label:e.MachineName,value:e.MachineId},null,8,["label","value"])))),128))])),_:1},8,["modelValue","onChange","loading","remote-method"]),(0,l.Lk)("span",null,"到【"+(0,L.v_)(n.state.toMachineName)+"】的端口转发记录",1)]),(0,l.bF)(h,{data:n.state.forwards,size:"small",border:""},{default:(0,l.k6)((()=>[(0,l.bF)(i,{property:"Name",label:"名称"}),(0,l.bF)(i,{prop:"BufferSize",label:"缓冲区",width:"60"},{default:(0,l.k6)((e=>[(0,l.eW)((0,L.v_)(1<[(0,l.bF)(c,{modelValue:e.row.use,"onUpdate:modelValue":t=>e.row.use=t},{default:(0,l.k6)((()=>[(0,l.eW)("使用")])),_:2},1032,["modelValue","onUpdate:modelValue"])])),_:1})])),_:1},8,["data"]),(0,l.Lk)("div",Ct,[(0,l.bF)(m,{type:"primary",onClick:n.handleConfirm},{default:(0,l.k6)((()=>[(0,l.eW)("确定复制")])),_:1},8,["onClick"])])])])),_:1},8,["modelValue","onOpen"])}var Tt={props:["modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:w.DtC},setup(e,{emit:t}){(0,u.B)();const a=at(),n=(0,i.Kh)({show:!0,loading:!1,machineId:"",toMachineId:a.value.current,toMachineName:a.value.machineName,machineIds:{Request:{Page:1,Size:10,Name:""},Count:0,List:[]},forwards:[]});(0,l.wB)((()=>n.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=()=>{r()},r=()=>{n.loading=!0,(0,g.BS)(n.machineIds.Request).then((e=>{n.loading=!1,n.machineIds.Request=e.Request,n.machineIds.Count=e.Count,n.machineIds.List=e.List,!n.machineId&&n.machineIds.List.length>0&&(n.machineId=n.machineIds.List[0].MachineId,c())})).catch((e=>{n.loading=!1}))},d=e=>{n.machineIds.Request.Page=e,r()},s=e=>{n.machineIds.Request.Name=e,r()},c=()=>{Ce({MachineId:n.machineId,ToMachineId:n.toMachineId}).then((e=>{e.forEach((e=>{e.use=!0})),n.forwards=e})).catch((e=>{console.log(e)}))},h=()=>{c()},m=()=>{const e=n.forwards.filter((e=>e.use)).map((e=>ye({Name:e.Name,Port:e.Port,TargetEP:e.TargetEP,BufferSize:e.BufferSize,MachineId:n.toMachineId})));Promise.all(e).then((()=>{de.nk.success("已操作!"),n.show=!1})).catch((()=>{de.nk.success("操作失败!")}))};return(0,l.sV)((()=>{r()})),(0,l.hi)((()=>{})),{state:n,handleSearch:s,handleOnShowList:o,handleMachineChange:h,handleConfirm:m,handlePageChange:d}}};const yt=(0,b.A)(Tt,[["render",Lt],["__scopeId","data-v-3a13c86f"]]);var _t=yt;const Vt={class:"t-c head"},It={class:"error red"},St={class:"error red"};function Et(e,t,a,n,o,r){const d=(0,l.g2)("el-button"),s=(0,l.g2)("el-input"),u=(0,l.g2)("el-table-column"),i=(0,l.g2)("WarnTriangleFilled"),c=(0,l.g2)("el-icon"),h=(0,l.g2)("el-popover"),m=(0,l.g2)("el-switch"),p=(0,l.g2)("Delete"),g=(0,l.g2)("el-popconfirm"),f=(0,l.g2)("el-table"),w=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(w,{modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),onOpen:n.handleOnShowList,"append-to":".app-wrap",title:"服务器代理穿透",top:"1vh",width:"700"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",Vt,[(0,l.bF)(d,{type:"success",size:"small",onClick:n.handleAdd},{default:(0,l.k6)((()=>[(0,l.eW)("添加")])),_:1},8,["onClick"]),(0,l.bF)(d,{size:"small",onClick:n.handleRefresh},{default:(0,l.k6)((()=>[(0,l.eW)("刷新")])),_:1},8,["onClick"]),(0,l.bF)(d,{size:"small",onClick:n.handleCopy},{default:(0,l.k6)((()=>[(0,l.eW)("复制穿透配置")])),_:1},8,["onClick"])]),(0,l.bF)(f,{data:n.state.data,size:"small",border:"",height:"500",onCellDblclick:n.handleCellClick},{default:(0,l.k6)((()=>[(0,l.bF)(u,{property:"Name",label:"名称"},{default:(0,l.k6)((e=>[e.row.NameEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":t=>e.row.Name=t,onBlur:t=>n.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.eW)((0,L.v_)(e.row.Name),1)],64))])),_:1}),(0,l.bF)(u,{prop:"BufferSize",label:"缓冲区",width:"100"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,L.v_)(1<[e.row.TempEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Temp,"onUpdate:modelValue":t=>e.row.Temp=t,onBlur:t=>n.handleEditBlur(e.row,"Temp")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[e.row.Msg?((0,l.uX)(),(0,l.Wv)(h,{key:0,placement:"top",title:"msg",width:"20rem",trigger:"hover",content:e.row.Msg},{reference:(0,l.k6)((()=>[(0,l.Lk)("div",It,[(0,l.Lk)("span",null,(0,L.v_)(e.row.Temp),1),(0,l.bF)(c,{size:"20"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1})])])),_:2},1032,["content"])):((0,l.uX)(),(0,l.CE)("span",{key:1,class:(0,L.C4)({green:e.row.Started})},(0,L.v_)(e.row.Temp),3))],64))])),_:1}),(0,l.bF)(u,{property:"LocalEP",label:"本机服务",width:"140"},{default:(0,l.k6)((e=>[e.row.LocalEPEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.LocalEP,"onUpdate:modelValue":t=>e.row.LocalEP=t,onBlur:t=>n.handleEditBlur(e.row,"LocalEP")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[e.row.LocalMsg?((0,l.uX)(),(0,l.Wv)(h,{key:0,placement:"top",title:"msg",width:"20rem",trigger:"hover",content:e.row.LocalMsg},{reference:(0,l.k6)((()=>[(0,l.Lk)("span",St,(0,L.v_)(e.row.LocalEP),1),(0,l.bF)(c,{size:"20"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1})])),_:2},1032,["content"])):((0,l.uX)(),(0,l.CE)("span",{key:1,class:(0,L.C4)({green:e.row.Started})},(0,L.v_)(e.row.LocalEP),3))],64))])),_:1}),(0,l.bF)(u,{property:"Started",label:"状态",width:"60"},{default:(0,l.k6)((e=>[(0,l.bF)(m,{modelValue:e.row.Started,"onUpdate:modelValue":t=>e.row.Started=t,onChange:t=>n.handleStartChange(e.row),"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,l.bF)(u,{label:"操作",width:"54"},{default:(0,l.k6)((e=>[(0,l.bF)(g,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"删除不可逆,是否确认?",onConfirm:t=>n.handleDel(e.row.Id)},{reference:(0,l.k6)((()=>[(0,l.bF)(d,{type:"danger",size:"small"},{default:(0,l.k6)((()=>[(0,l.bF)(c,null,{default:(0,l.k6)((()=>[(0,l.bF)(p)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data","onCellDblclick"])])])),_:1},8,["modelValue","onOpen"])}var Pt={props:["data","modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:w.DtC,Delete:w.epd},setup(e,{emit:t}){const a=(0,u.B)(),n=rt(),o=(0,i.Kh)({bufferSize:a.value.bufferSize,show:!0,data:[],timerTestLocal:0});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const r=()=>{(0,lt.eX)().then((e=>{o.timerTestLocal=setTimeout(r,1e3)})).catch((()=>{o.timerTestLocal=setTimeout(r,1e3)}))},d=()=>{(0,lt.pY)().then((e=>{let t=e.List||[];t.forEach((e=>{e.Temp=(e.Domain||e.RemotePort).toString(),e.RemotePort=0,e.Domain=""})),o.data=t})).catch((()=>{}))},s=()=>{d()},c=(e,t)=>{p(e,t.property)},h=()=>{d(),de.nk.success("已刷新")},m=()=>{(0,lt.Qs)({Id:0,Name:"",RemotePort:0,LocalEP:"127.0.0.1:80",Domain:"",Temp:""}).then((()=>{setTimeout((()=>{d()}),100)})).catch((e=>{de.nk.error(e)}))},p=(e,t)=>{e.Started?de.nk.error("请先停止运行"):(o.data.forEach((e=>{e["NameEditing"]=!1,e["RemotePortEditing"]=!1,e["LocalEPEditing"]=!1,e["DomainEditing"]=!1,e["TempEditing"]=!1})),e[`${t}Editing`]=!0)},g=(e,t)=>{e.Started?de.nk.error("请先停止运行"):(e[`${t}Editing`]=!1,v(e))},f=e=>{(0,lt.DY)(e).then((()=>{d()}))},w=e=>{v(e)},v=e=>{e.Temp&&(/^\d+$/.test(e.Temp)?e.RemotePort=parseInt(e.Temp):e.Domain=e.Temp,(0,lt.Qs)(e).then((()=>{setTimeout((()=>{d()}),100)})).catch((e=>{de.nk.error(e)})))},k=()=>{n.value.showCopy=!0},b=()=>{const e=(t=1e4)=>{if(t>2e4)return;const a={Name:`s-${t}`,RemotePort:t,LocalEP:"127.0.0.1:80",Started:!0};(0,lt.Qs)(a).then((a=>{setTimeout((()=>{e(++t)}),50)})).catch((a=>{console.log(a),de.nk.error(a),setTimeout((()=>{e(++t)}),100)}))};e()};return(0,l.sV)((()=>{d(),r()})),(0,l.hi)((()=>{clearTimeout(o.timerTestLocal)})),{state:o,handleOnShowList:s,handleCellClick:c,handleRefresh:h,handleAdd:m,handleEdit:p,handleEditBlur:g,handleDel:f,handleStartChange:w,handleCopy:k,handle10000:b}}};const Rt=(0,b.A)(Pt,[["render",Et],["__scopeId","data-v-5e37381c"]]);var zt=Rt;const Bt=e=>((0,l.Qi)("data-v-5512121a"),e=e(),(0,l.jt)(),e),Mt={class:"t-c head"},Wt=Bt((()=>(0,l.Lk)("span",null,"复制",-1))),Ut={class:"t-c"},Dt={class:"page-wrap"},Nt=Bt((()=>(0,l.Lk)("span",null,"的服务器代理穿透记录",-1))),Xt={class:"foot t-c"};function xt(e,t,a,n,o,r){const d=(0,l.g2)("el-pagination"),s=(0,l.g2)("el-option"),u=(0,l.g2)("el-select"),i=(0,l.g2)("el-table-column"),c=(0,l.g2)("el-checkbox"),h=(0,l.g2)("el-table"),m=(0,l.g2)("el-button"),p=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(p,{modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),onOpen:n.handleOnShowList,"append-to":".app-wrap",title:"复制服务器代理穿透",top:"1vh",width:"500"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",Mt,[Wt,(0,l.bF)(u,{modelValue:n.state.machineId,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.machineId=e),onChange:n.handleMachineChange,filterable:"",remote:"",loading:n.state.loading,"remote-method":n.handleSearch},{header:(0,l.k6)((()=>[(0,l.Lk)("div",Ut,[(0,l.Lk)("div",Dt,[(0,l.bF)(d,{small:"",background:"",layout:"prev, pager, next","page-size":n.state.machineIds.Request.Size,total:n.state.machineIds.Count,"pager-count":5,"current-page":n.state.machineIds.Request.Page,onCurrentChange:n.handlePageChange},null,8,["page-size","total","current-page","onCurrentChange"])])])])),default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.state.machineIds.List,((e,t)=>((0,l.uX)(),(0,l.Wv)(s,{key:t,label:e.MachineName,value:e.MachineId},null,8,["label","value"])))),128))])),_:1},8,["modelValue","onChange","loading","remote-method"]),Nt]),(0,l.bF)(h,{data:n.state.forwards,size:"small",border:""},{default:(0,l.k6)((()=>[(0,l.bF)(i,{property:"Name",label:"名称"}),(0,l.bF)(i,{property:"Domain",label:"域名/端口"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,L.v_)(e.row.Domain||e.row.RemotePort),1)])),_:1}),(0,l.bF)(i,{property:"LocalEP",label:"本机服务",width:"140"}),(0,l.bF)(i,{label:"操作",width:"80"},{default:(0,l.k6)((e=>[(0,l.bF)(c,{modelValue:e.row.use,"onUpdate:modelValue":t=>e.row.use=t},{default:(0,l.k6)((()=>[(0,l.eW)("使用")])),_:2},1032,["modelValue","onUpdate:modelValue"])])),_:1})])),_:1},8,["data"]),(0,l.Lk)("div",Xt,[(0,l.bF)(m,{type:"primary",onClick:n.handleConfirm},{default:(0,l.k6)((()=>[(0,l.eW)("确定复制")])),_:1},8,["onClick"])])])])),_:1},8,["modelValue","onOpen"])}var Gt={props:["modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:w.DtC},setup(e,{emit:t}){(0,u.B)();const a=(0,i.Kh)({show:!0,loading:!1,machineId:"",machineIds:{Request:{Page:1,Size:10,Name:""},Count:0,List:[]},forwards:[]});(0,l.wB)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const n=()=>{o()},o=()=>{a.loading=!0,(0,g.BS)(a.machineIds.Request).then((e=>{a.loading=!1,a.machineIds.Request=e.Request,a.machineIds.Count=e.Count,a.machineIds.List=e.List,!a.machineId&&a.machineIds.List.length>0&&(a.machineId=a.machineIds.List[0].MachineId,s())})).catch((e=>{a.loading=!1}))},r=e=>{a.machineIds.Request.Page=e,o()},d=e=>{a.machineIds.Request.Name=e,o()},s=()=>{(0,lt.$U)(a.machineId).then((e=>{e.forEach((e=>{e.use=!0})),a.forwards=e})).catch((e=>{console.log(e)}))},c=()=>{s()},h=()=>{const e=a.forwards.filter((e=>e.use)).map((e=>(0,lt.Qs)({Name:e.Name,Domain:e.Domain,RemotePort:e.RemotePort,LocalEP:e.LocalEP})));Promise.all(e).then((()=>{de.nk.success("已操作!"),a.show=!1})).catch((()=>{de.nk.success("操作失败!")}))};return(0,l.sV)((()=>{o()})),(0,l.hi)((()=>{})),{state:a,handleSearch:d,handleOnShowList:n,handleMachineChange:c,handleConfirm:h,handlePageChange:r}}};const At=(0,b.A)(Gt,[["render",xt],["__scopeId","data-v-5512121a"]]);var Kt=At;function Ot(e,t,a,n,o,r){const d=(0,l.g2)("el-table-column"),s=(0,l.g2)("Delete"),u=(0,l.g2)("el-icon"),i=(0,l.g2)("el-button"),c=(0,l.g2)("el-popconfirm"),h=(0,l.g2)("el-table"),m=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(m,{modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),"append-to":".app-wrap",title:"隧道链接",top:"1vh",width:"700"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(h,{data:n.state.data,size:"small",border:"",height:"500"},{default:(0,l.k6)((()=>[(0,l.bF)(d,{property:"RemoteMachineId",label:"目标"},{default:(0,l.k6)((e=>[(0,l.Lk)("div",{class:(0,L.C4)({green:e.row.Connected})},[(0,l.Lk)("p",null,(0,L.v_)(e.row.IPEndPoint),1),(0,l.Lk)("p",null,"ssl : "+(0,L.v_)(e.row.SSL),1)],2)])),_:1}),(0,l.bF)(d,{property:"TransactionId",label:"事务",width:"80"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,L.v_)(n.state.transactions[e.row.TransactionId]),1)])),_:1}),(0,l.bF)(d,{property:"TransportName",label:"协议"},{default:(0,l.k6)((e=>[(0,l.Lk)("div",null,[(0,l.Lk)("p",null,(0,L.v_)(e.row.TransportName)+"("+(0,L.v_)(n.state.protocolTypes[e.row.ProtocolType])+")",1),(0,l.Lk)("p",null,(0,L.v_)(n.state.types[e.row.Type])+" - "+(0,L.v_)(1<[(0,l.Lk)("span",null,(0,L.v_)(e.row.Delay)+"ms",1)])),_:1}),(0,l.bF)(d,{property:"Bytes",label:"通信"},{default:(0,l.k6)((e=>[(0,l.Lk)("div",null,[(0,l.Lk)("p",null,"up : "+(0,L.v_)(e.row.SendBytesText),1),(0,l.Lk)("p",null,"down : "+(0,L.v_)(e.row.ReceiveBytesText),1)])])),_:1}),(0,l.bF)(d,{label:"操作",width:"54"},{default:(0,l.k6)((e=>[(0,l.bF)(c,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"确定关闭此连接?",onConfirm:t=>n.handleDel(e.row)},{reference:(0,l.k6)((()=>[(0,l.bF)(i,{type:"danger",size:"small"},{default:(0,l.k6)((()=>[(0,l.bF)(u,null,{default:(0,l.k6)((()=>[(0,l.bF)(s)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data"])])])),_:1},8,["modelValue"])}var qt={props:["modelValue"],emits:["change","update:modelValue"],components:{Delete:w.epd},setup(e,{emit:t}){const a=Pe(),n=Re(),o=ze(),r=(0,i.Kh)({show:!0,protocolTypes:{1:"tcp",2:"udp",4:"msquic"},types:{0:"打洞",1:"中继"},transactions:{forward:"端口转发",tuntap:"虚拟网卡"},data:(0,l.EW)((()=>[n.value.list[a.value.current],o.value.list[a.value.current]].filter((e=>!!e))))});(0,l.wB)((()=>r.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e),t("change")}),300)}));const d=e=>{e.removeFunc(e.RemoteMachineId).then((()=>{de.nk.success("删除成功")})).catch((()=>{}))};return{state:r,handleDel:d}}};const Qt=(0,b.A)(qt,[["render",Ot],["__scopeId","data-v-4760aa5d"]]);var jt=Qt,$t=a(7985),Ht={components:{Oper:C,Device:X,DeviceEdit:x.A,Tunnel:We,TunnelEdit:Ke,ConnectionsEdit:jt,Tuntap:Q,TuntapEdit:ie,Forward:ut,ForwardEdit:ft,ForwardCopy:_t,SForwardEdit:zt,SForwardCopy:Kt},setup(e){const t=(0,u.B)(),a=(0,i.Kh)({height:(0,l.EW)((()=>t.value.height-90))}),{devices:n,machineId:o,_getSignList:r,_getSignList1:d,handleDeviceEdit:c,handlePageChange:h,handlePageSizeChange:m,handleDel:p,clearDevicesTimeout:g,setSort:f}=(0,$t.r)(),{tuntap:w,_getTuntapInfo:v,handleTuntapEdit:k,handleTuntapRefresh:b,clearTuntapTimeout:F,getTuntapMachines:C,sortTuntapIP:L}=(0,M.O)(),{tunnel:T,_getTunnelInfo:y,handleTunnelEdit:_,handleTunnelRefresh:V,clearTunnelTimeout:I,sortTunnel:S}=we(),{forward:E,_getForwardInfo:P,handleForwardEdit:R,_testTargetForwardInfo:z,clearForwardTimeout:W,getForwardMachines:U}=tt(),{sforward:D,_getSForwardInfo:N,handleSForwardEdit:X,_testLocalSForwardInfo:x,clearSForwardTimeout:G,getSForwardMachines:A}=ot(),{connections:K,forwardConnections:O,_getForwardConnections:q,tuntapConnections:Q,_getTuntapConnections:j,handleTunnelConnections:$,clearConnectionsTimeout:H}=Ee(),{_getUpdater:J,clearUpdaterTimeout:Y}=(0,B.d)(),Z=e=>{n.page.Request.Prop=e.prop,n.page.Request.Asc="ascending"==e.order;let t=new Promise(((e,t)=>{e()}));if("tunnel"==e.prop){const e=S(n.page.Request.Asc);e.length>0&&(t=f(e))}else if("tuntap"==e.prop){const e=L(n.page.Request.Asc);e.length>0&&(t=f(e))}t.then((()=>{h()})).catch((()=>{}))},ee=e=>{R(e,n.page.List.filter((t=>t.MachineId==e))[0].MachineName)},te=e=>{n.page.Request.Name=e||"",n.page.Request.Name?n.page.Request.Ids=C(n.page.Request.Name).concat(U(n.page.Request.Name)).concat(A(n.page.Request.Name)).reduce(((e,t)=>(-1==e.indexOf(t)&&e.push(t),e)),[]):n.page.Request.Ids=[],h(),V(),b(),de.nk.success({message:"刷新成功",grouping:!0})},ae=()=>{h(),V(),b(),de.nk.success({message:"刷新成功",grouping:!0})};return(0,l.sV)((()=>{(0,s.jH)((e=>{e&&(h(),r(),V(),b())})),r(),d(),v(),y(),q(),j(),P(),N(),J(),z(),x()})),(0,l.hi)((()=>{g(),H(),F(),I(),W(),G(),Y()})),{state:a,devices:n,machineId:o,handleSortChange:Z,handleDeviceEdit:c,handlePageRefresh:te,handlePageSearch:ae,handlePageChange:h,handlePageSizeChange:m,handleDel:p,tuntap:w,handleTuntapEdit:k,handleTuntapRefresh:b,tunnel:T,connections:K,handleTunnelEdit:_,handleTunnelRefresh:V,handleTunnelConnections:$,forward:E,_handleForwardEdit:ee,sforward:D,handleSForwardEdit:X}}};const Jt=(0,b.A)(Ht,[["render",d],["__scopeId","data-v-6aa4e468"]]);var Yt=Jt}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/6.679ab27b.js b/linker.tray.win/web/js/6.679ab27b.js
deleted file mode 100644
index cde99766..00000000
--- a/linker.tray.win/web/js/6.679ab27b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[6],{4:function(e,t,a){a.d(t,{a1:function(){return w},e3:function(){return v},jH:function(){return F},zG:function(){return k}});a(4114),a(6573),a(8100),a(7936);var l=a(1219);let n=0,o=null,r="",d=1,s="";const u={},i={connected:!1,connecting:!1},c=()=>{const e=Date.now();for(let t in u){const a=u[t];e-a.time>a.timeout&&(a.reject("超时~"),delete u[t])}setTimeout(c,1e3)};c();const h={subs:{},add:function(e,t){"function"==typeof t&&(this.subs[e]||(this.subs[e]=[]),this.subs[e].push(t))},remove(e,t){let a=this.subs[e]||[];for(let l=a.length-1;l>=0;l--)a[l]==t&&a.splice(l,1)},push(e,t){let a=this.subs[e]||[];for(let l=a.length-1;l>=0;l--)a[l](t)}},m=()=>{i.connected=!0,i.connecting=!1,h.push(b,i.connected)},p=e=>{i.connected=!1,i.connecting=!1,h.push(b,i.connected),setTimeout((()=>{w()}),1e3)},g=e=>{if("string"!=typeof e.data)return void e.data.arrayBuffer().then((t=>{const a=new DataView(t).getInt8(),l=new FileReader;l.readAsText(e.data.slice(4,4+a),"utf8"),l.onload=()=>{let n=JSON.parse(l.result);n.Content={Name:n.Content,Img:e.data.slice(4+a,e.data.length),ArrayBuffer:t},f(n)}}));let t=JSON.parse(e.data);f(t)},f=e=>{let t=u[e.RequestId];t?(0==e.Code?t.resolve(e.Content):1==e.Code?t.reject(e.Content):255==e.Code?(t.reject(e.Content),t.errHandle||l.nk.error(`${t.path}:${e.Content}`)):h.push(e.Path,e.Content),delete u[e.RequestId]):h.push(e.Path,e.Content)},w=(e=r,t=s)=>{if(s=t,r=e,i.connecting||i.connected)return;null!=o&&o.close(),i.connecting=!0;const a=t||"snltty";o=new WebSocket(r,[a]),o.iddd=++d,o.onopen=m,o.onclose=p,o.onmessage=g},v=()=>{o&&o.close()},k=(e,t={},a=!1,l=15e3)=>new Promise(((r,d)=>{let s=++n;try{u[s]={resolve:r,reject:d,errHandle:a,path:e,time:Date.now(),timeout:l};let n=JSON.stringify({Path:e,RequestId:s,Content:"string"==typeof t?t:JSON.stringify(t)});i.connected&&1==o.readyState?o.send(n):d("网络错误~")}catch(c){console.log(c),d("网络错误~"),delete u[s]}})),b=Symbol(),F=e=>{h.add(b,e)}},743:function(e,t,a){a.d(t,{$U:function(){return d},Ap:function(){return n},Co:function(){return o},DY:function(){return s},Qs:function(){return u},eX:function(){return i},pY:function(){return r}});var l=a(4);const n=()=>(0,l.zG)("sforwardclient/GetSecretKey"),o=e=>(0,l.zG)("sforwardclient/SetSecretKey",e),r=(e="0")=>(0,l.zG)("sforwardclient/get",e),d=e=>(0,l.zG)("sforwardclient/getremote",e),s=e=>(0,l.zG)("sforwardclient/remove",e),u=e=>(0,l.zG)("sforwardclient/add",e),i=()=>(0,l.zG)("sforwardclient/TestLocal")},9299:function(e,t,a){a.d(t,{BS:function(){return u},SZ:function(){return r},Se:function(){return i},VN:function(){return d},gC:function(){return c},jU:function(){return o},nD:function(){return s},rd:function(){return n}});var l=a(4);const n=e=>(0,l.zG)("signInclient/set",e),o=e=>(0,l.zG)("signInclient/setservers",e),r=()=>(0,l.zG)("signInclient/info"),d=e=>(0,l.zG)("signInclient/setorder",e),s=e=>(0,l.zG)("signInclient/List",e),u=e=>(0,l.zG)("signInclient/ids",e),i=e=>(0,l.zG)("signInclient/del",e),c=e=>(0,l.zG)("signInclient/setname",e)},83:function(e,t,a){a.d(t,{$M:function(){return u},KW:function(){return s},b0:function(){return o},gM:function(){return d},ix:function(){return n},r7:function(){return r},xo:function(){return i}});var l=a(4);const n=()=>(0,l.zG)("tunnel/gettypes"),o=e=>(0,l.zG)("tunnel/SetServers",e),r=(e="0")=>(0,l.zG)("tunnel/get",e),d=()=>(0,l.zG)("tunnel/refresh"),s=e=>(0,l.zG)("tunnel/SetRouteLevel",e),u=e=>(0,l.zG)("tunnel/SetTransports",e),i=e=>(0,l.zG)("tunnel/SetExcludeIPs",e)},920:function(e,t,a){a.d(t,{BJ:function(){return i},NS:function(){return r},Vk:function(){return u},aP:function(){return h},ir:function(){return s},lJ:function(){return o},mK:function(){return n},y2:function(){return c},yN:function(){return d}});var l=a(4);const n=(e="0")=>(0,l.zG)("updaterclient/get",e),o=e=>(0,l.zG)("updaterclient/confirm",e),r=e=>(0,l.zG)("updaterclient/exit",e),d=()=>(0,l.zG)("updaterclient/GetSecretKey"),s=e=>(0,l.zG)("updaterclient/SetSecretKey",e),u=()=>(0,l.zG)("updaterclient/getcurrent"),i=()=>(0,l.zG)("updaterclient/getserver"),c=e=>(0,l.zG)("updaterclient/confirmserver",e),h=()=>(0,l.zG)("updaterclient/exitserver")},3830:function(e,t,a){a.d(t,{B:function(){return s},v:function(){return d}});var l=a(4),n=a(144),o=a(6768);const r=Symbol(),d=()=>{const e=(0,n.KR)({api:{connected:!1},height:0,config:{Common:{},Client:{Servers:[]},Server:{},Running:{Relay:{Servers:[]},Tuntap:{IP:"",PrefixLength:24},Client:{Servers:[]}},configed:!1},signin:{Connected:!1,Connecting:!1,Version:"v1.0.0.0"},bufferSize:["1KB","2KB","4KB","8KB","16KB","32KB","64KB","128KB","256KB","512KB","1024KB"],updater:{},self:{}});return(0,l.jH)((t=>{e.value.api.connected=t})),(0,o.Gt)(r,e),e},s=()=>(0,o.WQ)(r)},9927:function(e,t,a){a.r(t),a.d(t,{default:function(){return Yt}});var l=a(6768);const n={class:"home-list-wrap absolute"},o={class:"page t-c"},r={class:"page-wrap"};function d(e,t,a,d,s,u){const i=(0,l.g2)("el-table-column"),c=(0,l.g2)("el-table"),h=(0,l.g2)("Device"),m=(0,l.g2)("Tunnel"),p=(0,l.g2)("Tuntap"),g=(0,l.g2)("Forward"),f=(0,l.g2)("Oper"),w=(0,l.g2)("el-pagination"),v=(0,l.g2)("DeviceEdit"),k=(0,l.g2)("TunnelEdit"),b=(0,l.g2)("ConnectionsEdit"),F=(0,l.g2)("TuntapEdit"),C=(0,l.g2)("ForwardEdit"),L=(0,l.g2)("ForwardCopy"),T=(0,l.g2)("SForwardEdit"),y=(0,l.g2)("SForwardCopy");return(0,l.uX)(),(0,l.CE)("div",n,[(0,l.bF)(c,{border:"",style:{width:"100%"},height:"32px",size:"small",onSortChange:d.handleSortChange,class:"table-sort"},{default:(0,l.k6)((()=>[(0,l.bF)(i,{prop:"MachineId",label:"设备名",width:"120",sortable:"custom"}),(0,l.bF)(i,{prop:"Version",label:"版本",width:"120",sortable:"custom"}),(0,l.bF)(i,{prop:"tunnel",label:"网关",width:"90",sortable:"custom"}),(0,l.bF)(i,{prop:"tuntap",label:"网卡IP",width:"150",sortable:"custom"}),(0,l.bF)(i,{prop:"forward",label:""}),(0,l.bF)(i,{label:"",width:"74",fixed:"right"})])),_:1},8,["onSortChange"]),(0,l.bF)(c,{data:d.devices.page.List,stripe:"",border:"",style:{width:"100%"},height:`${d.state.height}px`,size:"small"},{default:(0,l.k6)((()=>[(0,l.bF)(h,{onEdit:d.handleDeviceEdit,onRefresh:d.handlePageRefresh},null,8,["onEdit","onRefresh"]),(0,l.bF)(m,{onEdit:d.handleTunnelEdit,onRefresh:d.handleTunnelRefresh,onConnections:d.handleTunnelConnections},null,8,["onEdit","onRefresh","onConnections"]),(0,l.bF)(p,{onEdit:d.handleTuntapEdit,onRefresh:d.handleTuntapRefresh},null,8,["onEdit","onRefresh"]),(0,l.bF)(g,{onEdit:d._handleForwardEdit,onSedit:d.handleSForwardEdit},null,8,["onEdit","onSedit"]),(0,l.bF)(f,{onRefresh:d.handlePageRefresh},null,8,["onRefresh"])])),_:1},8,["data","height"]),(0,l.Lk)("div",o,[(0,l.Lk)("div",r,[(0,l.bF)(w,{small:"",background:"",layout:"total,sizes,prev,pager, next",total:d.devices.page.Count,"page-size":d.devices.page.Request.Size,"current-page":d.devices.page.Request.Page,onCurrentChange:d.handlePageChange,onSizeChange:d.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])]),d.devices.showDeviceEdit?((0,l.uX)(),(0,l.Wv)(v,{key:0,modelValue:d.devices.showDeviceEdit,"onUpdate:modelValue":t[0]||(t[0]=e=>d.devices.showDeviceEdit=e),onChange:d.handlePageChange,data:d.devices.deviceInfo},null,8,["modelValue","onChange","data"])):(0,l.Q3)("",!0),d.tunnel.showEdit?((0,l.uX)(),(0,l.Wv)(k,{key:1,modelValue:d.tunnel.showEdit,"onUpdate:modelValue":t[1]||(t[1]=e=>d.tunnel.showEdit=e),onChange:d.handleTunnelRefresh},null,8,["modelValue","onChange"])):(0,l.Q3)("",!0),d.connections.showEdit?((0,l.uX)(),(0,l.Wv)(b,{key:2,modelValue:d.connections.showEdit,"onUpdate:modelValue":t[2]||(t[2]=e=>d.connections.showEdit=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),d.tuntap.showEdit?((0,l.uX)(),(0,l.Wv)(F,{key:3,modelValue:d.tuntap.showEdit,"onUpdate:modelValue":t[3]||(t[3]=e=>d.tuntap.showEdit=e),onChange:d.handleTuntapRefresh},null,8,["modelValue","onChange"])):(0,l.Q3)("",!0),d.forward.showEdit?((0,l.uX)(),(0,l.Wv)(C,{key:4,modelValue:d.forward.showEdit,"onUpdate:modelValue":t[4]||(t[4]=e=>d.forward.showEdit=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),d.forward.showCopy?((0,l.uX)(),(0,l.Wv)(L,{key:5,modelValue:d.forward.showCopy,"onUpdate:modelValue":t[5]||(t[5]=e=>d.forward.showCopy=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),d.sforward.showEdit?((0,l.uX)(),(0,l.Wv)(T,{key:6,modelValue:d.sforward.showEdit,"onUpdate:modelValue":t[6]||(t[6]=e=>d.sforward.showEdit=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),d.sforward.showCopy?((0,l.uX)(),(0,l.Wv)(y,{key:7,modelValue:d.sforward.showCopy,"onUpdate:modelValue":t[7]||(t[7]=e=>d.sforward.showCopy=e)},null,8,["modelValue"])):(0,l.Q3)("",!0)])}a(4114);var s=a(4),u=a(3830),i=a(144);const c=e=>((0,l.Qi)("data-v-435a8a16"),e=e(),(0,l.jt)(),e),h={class:"dropdown"},m=c((()=>(0,l.Lk)("span",null,"操作",-1)));function p(e,t,a,n,o,r){const d=(0,l.g2)("ArrowDown"),s=(0,l.g2)("el-icon"),u=(0,l.g2)("SwitchButton"),i=(0,l.g2)("el-dropdown-item"),c=(0,l.g2)("Delete"),p=(0,l.g2)("el-dropdown-menu"),g=(0,l.g2)("el-dropdown"),f=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(f,{label:"操作",width:"74",fixed:"right"},{default:(0,l.k6)((e=>[(0,l.bF)(g,{size:"small"},{dropdown:(0,l.k6)((()=>[(0,l.bF)(p,null,{default:(0,l.k6)((()=>[e.row.showReboot?((0,l.uX)(),(0,l.Wv)(i,{key:0,onClick:t=>n.handleExit(e.row.MachineId,e.row.MachineName)},{default:(0,l.k6)((()=>[(0,l.bF)(s,null,{default:(0,l.k6)((()=>[(0,l.bF)(u)])),_:1}),(0,l.eW)(" 重启")])),_:2},1032,["onClick"])):(0,l.Q3)("",!0),e.row.showDel?((0,l.uX)(),(0,l.Wv)(i,{key:1,onClick:t=>n.handleDel(e.row.MachineId,e.row.MachineName)},{default:(0,l.k6)((()=>[(0,l.bF)(s,null,{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1}),(0,l.eW)(" 删除")])),_:2},1032,["onClick"])):(0,l.Q3)("",!0)])),_:2},1024)])),default:(0,l.k6)((()=>[(0,l.Lk)("div",h,[m,(0,l.bF)(s,{class:"el-icon--right"},{default:(0,l.k6)((()=>[(0,l.bF)(d)])),_:1})])])),_:2},1024)])),_:1})}var g=a(9299),f=a(920),w=a(7477),v=a(2933),k={emits:["refresh"],components:{Delete:w.epd,SwitchButton:w.L$q,ArrowDown:w.yd$},setup(e,{emit:t}){const a=(e,a)=>{v.s.confirm(`确认删除[${a}]?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,g.Se)(e).then((()=>{t("refresh")}))})).catch((()=>{}))},l=(e,a)=>{v.s.confirm(`确认关闭[${a}]?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,f.NS)(e).then((()=>{t("refresh")}))})).catch((()=>{}))};return{handleDel:a,handleExit:l}}},b=a(1241);const F=(0,b.A)(k,[["render",p],["__scopeId","data-v-435a8a16"]]);var C=F,L=a(4232);const T=e=>((0,l.Qi)("data-v-e7fa483e"),e=e(),(0,l.jt)(),e),y={class:"flex"},_=T((()=>(0,l.Lk)("span",{class:"flex-1"},"设备",-1))),V={class:"flex"},I=["onClick"],E=["onClick"],P=T((()=>(0,l.Lk)("span",null,"😴㊙.㊙.㊙.㊙",-1))),S=[P],R=T((()=>(0,l.Lk)("span",{class:"flex-1"},null,-1)));function z(e,t,a,n,o,r){const d=(0,l.g2)("el-input"),s=(0,l.g2)("Search"),u=(0,l.g2)("el-icon"),i=(0,l.g2)("el-button"),c=(0,l.g2)("DeviceName"),h=(0,l.g2)("UpdaterBtn"),m=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(m,{prop:"MachineId",label:"设备",width:"240"},{header:(0,l.k6)((()=>[(0,l.Lk)("div",y,[_,(0,l.Lk)("span",null,[(0,l.bF)(d,{size:"small",modelValue:n.name,"onUpdate:modelValue":t[0]||(t[0]=e=>n.name=e),clearable:"",onInput:n.handleRefresh,placeholder:"设备/虚拟网卡/端口转发"},null,8,["modelValue","onInput"])]),(0,l.Lk)("span",null,[(0,l.bF)(i,{size:"small",onClick:n.handleRefresh},{default:(0,l.k6)((()=>[(0,l.bF)(u,null,{default:(0,l.k6)((()=>[(0,l.bF)(s)])),_:1})])),_:1},8,["onClick"])])])])),default:(0,l.k6)((e=>[(0,l.Lk)("div",null,[(0,l.Lk)("p",null,[(0,l.bF)(c,{onEdit:n.handleEdit,config:!0,item:e.row},null,8,["onEdit","item"])]),(0,l.Lk)("p",V,[e.row.showip?((0,l.uX)(),(0,l.CE)("span",{key:0,title:"此设备的外网IP",class:"ipaddress",onClick:t=>e.row.showip=!e.row.showip},[(0,l.Lk)("span",null,"😀"+(0,L.v_)(e.row.IP),1)],8,I)):((0,l.uX)(),(0,l.CE)("span",{key:1,title:"此设备的外网IP",class:"ipaddress",onClick:t=>e.row.showip=!e.row.showip},S,8,E)),R,(0,l.bF)(h,{config:!0,item:e.row},null,8,["item"])])])])),_:1})}var B=a(9383),M=a(8104),W=a(3929),U=a(5649),D={emits:["edit","refresh"],components:{Search:w.vji,UpdaterBtn:W.A,DeviceName:U.A},setup(e,{emit:t}){const a=(0,i.KR)(sessionStorage.getItem("search-name")||""),l=(0,B.T)(),n=(0,M.W)(),o=e=>{t("edit",e)},r=()=>{sessionStorage.setItem("search-name",a.value),t("refresh",a.value)};return{tuntap:n,handleEdit:o,handleRefresh:r,name:a,updater:l}}};const N=(0,b.A)(D,[["render",z],["__scopeId","data-v-e7fa483e"]]);var X=N,x=a(8809);const K={key:0};function A(e,t,a,n,o,r){const d=(0,l.g2)("TuntapShow"),s=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(s,{prop:"tuntap",label:"虚拟网卡",width:"160"},{default:(0,l.k6)((e=>[n.tuntap.list[e.row.MachineId]?((0,l.uX)(),(0,l.CE)("div",K,[(0,l.bF)(d,{config:!0,item:e.row,onEdit:n.handleTuntapIP,onRefresh:n.handleTuntapRefresh},null,8,["item","onEdit","onRefresh"])])):(0,l.Q3)("",!0)])),_:1})}var G=a(9120),O={emits:["edit","refresh"],components:{TuntapShow:G.A},setup(e,{emit:t}){const a=(0,M.W)(),l=e=>{t("edit",e)},n=()=>{t("refresh")};return{tuntap:a,handleTuntapIP:l,handleTuntapRefresh:n}}};const q=(0,b.A)(O,[["render",A]]);var Q=q;const j=e=>((0,l.Qi)("data-v-22dd5fdf"),e=e(),(0,l.jt)(),e),$=j((()=>(0,l.Lk)("span",null,"/",-1))),H=j((()=>(0,l.Lk)("span",{style:{width:"3rem"}},null,-1))),J={key:0,class:"upgrade-wrap"},Y=j((()=>(0,l.Lk)("span",{class:"yellow"},"此设备能使用NAT转发,只需局域网IP,剩下的交给NAT(linux、macos、win10+)",-1))),Z={class:"flex-1"},ee=j((()=>(0,l.Lk)("span",null,"/",-1))),te={class:"pdl-10"},ae=j((()=>(0,l.Lk)("span",{class:"yellow"},"此设备无法使用NAT转发,或只想使用端口转发",-1))),le={class:"flex-1"},ne={class:"pdl-10"};function oe(e,t,a,n,o,r){const d=(0,l.g2)("el-form-item"),s=(0,l.g2)("el-input"),u=(0,l.g2)("el-checkbox"),i=(0,l.g2)("el-popover"),c=(0,l.g2)("Delete"),h=(0,l.g2)("el-icon"),m=(0,l.g2)("el-button"),p=(0,l.g2)("Plus"),g=(0,l.g2)("el-form"),f=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(f,{modelValue:n.state.show,"onUpdate:modelValue":t[6]||(t[6]=e=>n.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:"组网设置",top:"1vh",width:"700"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(g,{ref:"ruleFormRef",model:n.state.ruleForm,rules:n.state.rules,"label-width":"140"},{default:(0,l.k6)((()=>[(0,l.bF)(d,{prop:"gateway",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[(0,l.eW)(" 赐予此设备IP,其它设备可通过此IP访问 ")])),_:1}),(0,l.bF)(d,{label:"此设备的虚拟网卡IP",prop:"IP"},{default:(0,l.k6)((()=>[(0,l.bF)(s,{modelValue:n.state.ruleForm.IP,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.ruleForm.IP=e),style:{width:"14rem"}},null,8,["modelValue"]),$,(0,l.bF)(s,{onChange:n.handlePrefixLengthChange,modelValue:n.state.ruleForm.PrefixLength,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.ruleForm.PrefixLength=e),style:{width:"4rem"}},null,8,["onChange","modelValue"]),H,(0,l.bF)(u,{modelValue:n.state.ruleForm.ShowDelay,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.ruleForm.ShowDelay=e),label:"显示延迟",size:"large"},null,8,["modelValue"]),(0,l.bF)(i,{placement:"top",title:"提示",width:400,trigger:"hover",content:"在测试延迟时,如果未连接,将自动去打洞连接,当你有一百个设备时,每个设备都同时去与其它99台设备连接,这数据量不小,所以尽量不要个设备都勾选"},{reference:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:n.state.ruleForm.AutoConnect,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.ruleForm.AutoConnect=e),label:"自动连接?",size:"large"},null,8,["modelValue"])])),_:1})])),_:1}),(0,l.bF)(d,{prop:"upgrade",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:n.state.ruleForm.Upgrade,"onUpdate:modelValue":t[4]||(t[4]=e=>n.state.ruleForm.Upgrade=e),label:"我很懂,我要使用高级功能(点对网和网对网)",size:"large"},null,8,["modelValue"])])),_:1}),n.state.ruleForm.Upgrade?((0,l.uX)(),(0,l.CE)("div",J,[(0,l.bF)(d,{prop:"nat",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[Y])),_:1}),(0,l.bF)(d,{label:"此设备局域网IP",prop:"LanIP",style:{"border-bottom":"1px solid #ddd","margin-bottom":"0"}},{default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.state.ruleForm.LanIPs,((e,t)=>((0,l.uX)(),(0,l.CE)("div",{key:t,class:"flex",style:{"margin-bottom":".6rem"}},[(0,l.Lk)("div",Z,[(0,l.bF)(s,{modelValue:n.state.ruleForm.LanIPs[t],"onUpdate:modelValue":e=>n.state.ruleForm.LanIPs[t]=e,style:{width:"14rem"}},null,8,["modelValue","onUpdate:modelValue"]),ee,(0,l.bF)(s,{onChange:e=>n.handleMaskChange(t),modelValue:n.state.ruleForm.Masks[t],"onUpdate:modelValue":e=>n.state.ruleForm.Masks[t]=e,style:{width:"4rem"}},null,8,["onChange","modelValue","onUpdate:modelValue"])]),(0,l.Lk)("div",te,[(0,l.bF)(m,{type:"danger",onClick:e=>n.handleDel(t)},{default:(0,l.k6)((()=>[(0,l.bF)(h,null,{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1})])),_:2},1032,["onClick"]),(0,l.bF)(m,{type:"primary",onClick:e=>n.handleAdd(t)},{default:(0,l.k6)((()=>[(0,l.bF)(h,null,{default:(0,l.k6)((()=>[(0,l.bF)(p)])),_:1})])),_:2},1032,["onClick"])])])))),128))])),_:1}),(0,l.bF)(d,{prop:"forward",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[ae])),_:1}),(0,l.bF)(d,{label:"端口转发",prop:"forwards"},{default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.state.ruleForm.Forwards,((e,t)=>((0,l.uX)(),(0,l.CE)("div",{key:t,class:"flex",style:{"margin-bottom":".6rem"}},[(0,l.Lk)("div",le,[(0,l.bF)(s,{modelValue:e.ListenAddr,"onUpdate:modelValue":t=>e.ListenAddr=t,style:{width:"7rem"},readonly:""},null,8,["modelValue","onUpdate:modelValue"]),(0,l.eW)(" : "),(0,l.bF)(s,{onChange:e=>n.handleForwardChange(t),modelValue:e.ListenPort,"onUpdate:modelValue":t=>e.ListenPort=t,style:{width:"6rem"}},null,8,["onChange","modelValue","onUpdate:modelValue"]),(0,l.eW)(" -> "),(0,l.bF)(s,{modelValue:e.ConnectAddr,"onUpdate:modelValue":t=>e.ConnectAddr=t,style:{width:"14rem"}},null,8,["modelValue","onUpdate:modelValue"]),(0,l.eW)(" : "),(0,l.bF)(s,{onChange:e=>n.handleForwardChange(t),modelValue:e.ConnectPort,"onUpdate:modelValue":t=>e.ConnectPort=t,style:{width:"6rem"}},null,8,["onChange","modelValue","onUpdate:modelValue"])]),(0,l.Lk)("div",ne,[(0,l.bF)(m,{type:"danger",onClick:e=>n.handleDelForward(t)},{default:(0,l.k6)((()=>[(0,l.bF)(h,null,{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1})])),_:2},1032,["onClick"]),(0,l.bF)(m,{type:"primary",onClick:e=>n.handleAddForward(t)},{default:(0,l.k6)((()=>[(0,l.bF)(h,null,{default:(0,l.k6)((()=>[(0,l.bF)(p)])),_:1})])),_:2},1032,["onClick"])])])))),128))])),_:1})])):(0,l.Q3)("",!0),(0,l.bF)(d,{label:"",prop:"Btns"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(m,{onClick:t[5]||(t[5]=e=>n.state.show=!1)},{default:(0,l.k6)((()=>[(0,l.eW)("取消")])),_:1}),(0,l.bF)(m,{type:"primary",onClick:n.handleSave},{default:(0,l.k6)((()=>[(0,l.eW)("确认")])),_:1},8,["onClick"])])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue"])}var re=a(5241),de=a(1219),se={props:["modelValue"],emits:["change","update:modelValue"],components:{Delete:w.epd,Plus:w.FWt},setup(e,{emit:t}){const a=(0,u.B)(),n=(0,M.W)(),o=(0,i.KR)(null),r=(0,i.Kh)({show:!0,bufferSize:a.value.bufferSize,ruleForm:{IP:n.value.current.IP,LanIPs:n.value.current.LanIPs.slice(0),Masks:n.value.current.Masks.slice(0),PrefixLength:n.value.current.PrefixLength||24,Gateway:n.value.current.Gateway,ShowDelay:n.value.current.ShowDelay,AutoConnect:n.value.current.AutoConnect,Upgrade:n.value.current.Upgrade,Forwards:0==n.value.current.Forwards.length?[{ListenAddr:"0.0.0.0",ListenPort:0,ConnectAddr:"0.0.0.0",ConnectPort:0}]:n.value.current.Forwards.slice(0)},rules:{}});0==r.ruleForm.LanIPs.length&&(r.ruleForm.LanIPs.push(""),r.ruleForm.Masks.push(24)),(0,l.wB)((()=>r.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const d=()=>{var e=+r.ruleForm.PrefixLength;(e>32||e<16||isNaN(e))&&(e=24),r.ruleForm.PrefixLength=e},s=e=>{var t=+r.ruleForm.Masks[e];(t>32||t<16||isNaN(t))&&(t=24),r.ruleForm.Masks[e]=t},c=e=>{r.ruleForm.LanIPs.splice(e,1),r.ruleForm.Masks.splice(e,1),0==r.ruleForm.LanIPs.length&&h(0)},h=e=>{r.ruleForm.LanIPs.splice(e+1,0,""),r.ruleForm.Masks.splice(e+1,0,24)},m=()=>{const e=JSON.parse(JSON.stringify(n.value.current));e.IP=r.ruleForm.IP||"0.0.0.0";const{lanips:a,masks:l}=r.ruleForm.LanIPs.reduce(((e,t,a)=>(t&&r.ruleForm.Masks[a]&&(e.lanips.push(t),e.masks.push(r.ruleForm.Masks[a])),e)),{lanips:[],masks:[]});e.LanIPs=a,e.Masks=l,e.PrefixLength=+r.ruleForm.PrefixLength,e.Gateway=r.ruleForm.Gateway,e.ShowDelay=r.ruleForm.ShowDelay,e.AutoConnect=r.ruleForm.AutoConnect,e.Upgrade=r.ruleForm.Upgrade,e.Forwards=r.ruleForm.Forwards,e.Forwards.forEach((e=>{e.ListenPort=+e.ListenPort,e.ConnectPort=+e.ConnectPort})),(0,re.ac)(e).then((()=>{r.show=!1,de.nk.success("已操作!"),t("change")})).catch((()=>{de.nk.error("操作失败!")}))},p=e=>{r.ruleForm.Forwards.splice(e,1),0==r.ruleForm.Forwards.length&&g(0)},g=e=>{r.ruleForm.Forwards.splice(e+1,0,{ListenAddr:"0.0.0.0",ListenPort:0,ConnectAddr:"0.0.0.0",ConnectPort:0})},f=()=>{};return{state:r,ruleFormRef:o,handlePrefixLengthChange:d,handleMaskChange:s,handleDel:c,handleAdd:h,handleSave:m,handleForwardChange:f,handleDelForward:p,handleAddForward:g}}};const ue=(0,b.A)(se,[["render",oe],["__scopeId","data-v-22dd5fdf"]]);var ie=ue;const ce={key:0},he=["title","onClick"],me=["onClick"];function pe(e,t,a,n,o,r){const d=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(d,{prop:"tunnel",label:"隧道",width:"90"},{default:(0,l.k6)((e=>[n.tunnel.list[e.row.MachineId]?((0,l.uX)(),(0,l.CE)("div",ce,[(0,l.Lk)("a",{href:"javascript:;",class:(0,L.C4)(["a-line",{yellow:n.tunnel.list[e.row.MachineId].NeedReboot}]),title:n.tunnel.list[e.row.MachineId].NeedReboot?"需要重启":"调整网关层级有助于打洞成功",onClick:t=>n.handleTunnel(n.tunnel.list[e.row.MachineId])},[(0,l.Lk)("span",null,"网关 : "+(0,L.v_)(n.tunnel.list[e.row.MachineId].RouteLevel)+" + "+(0,L.v_)(n.tunnel.list[e.row.MachineId].RouteLevelPlus),1)],10,he)])):(0,l.Q3)("",!0),(0,l.Lk)("div",null,[(0,l.Lk)("a",{href:"javascript:;",title:"与此设备的隧道连接",class:(0,L.C4)(["a-line",{green:n.connectionCount(e.row.MachineId)>0}]),onClick:t=>n.handleConnections(e.row.MachineId)},[(0,l.eW)(" 连接数 : "),(0,l.Lk)("span",null,(0,L.v_)(n.connectionCount(e.row.MachineId)),1)],10,me)])])),_:1})}var ge=a(83);const fe=Symbol(),we=()=>{const e=(0,u.B)(),t=(0,i.KR)({timer:0,showEdit:!1,current:null,list:{},hashcode:0});(0,l.Gt)(fe,t);const a=()=>{e.value.api.connected?(0,ge.r7)(t.value.hashcode.toString()).then((e=>{t.value.hashcode=e.HashCode,e.List&&(t.value.list=e.List),t.value.timer=setTimeout(a,1060)})).catch((()=>{t.value.timer=setTimeout(a,1060)})):t.value.timer=setTimeout(a,1060)},n=e=>{t.value.current=e,t.value.showEdit=!0},o=()=>{(0,ge.gM)(),de.nk.success({message:"刷新成功",grouping:!0})},r=()=>{clearTimeout(t.value.timer)},d=e=>Object.values(t.value.list).sort(((e,t)=>e.RouteLevel+e.RouteLevelPlus-t.RouteLevel+t.RouteLevelPlus)).map((e=>e.MachineId));return{tunnel:t,_getTunnelInfo:a,handleTunnelEdit:n,handleTunnelRefresh:o,clearTunnelTimeout:r,sortTunnel:d}},ve=()=>(0,l.WQ)(fe),ke=(e="0")=>(0,s.zG)("forwardclient/connections",e),be=e=>(0,s.zG)("forwardclient/removeconnection",e),Fe=(e="0")=>(0,s.zG)("forwardclient/get",e),Ce=e=>(0,s.zG)("forwardclient/getremote",e),Le=()=>(0,s.zG)("forwardclient/bindips"),Te=e=>(0,s.zG)("forwardclient/remove",e),ye=e=>(0,s.zG)("forwardclient/add",e),_e=e=>(0,s.zG)("forwardclient/TestTarget",e),Ve=Symbol(),Ie=Symbol(),Ee=Symbol(),Pe=()=>{const e=(0,u.B)(),t=(0,i.KR)({showEdit:!1,speedCache:{},current:"",hashcode:0,hashcode1:0});(0,l.Gt)(Ve,t);const a=(0,i.KR)({timer:0,list:{}});(0,l.Gt)(Ie,a);const n=()=>{e.value.api.connected?ke(t.value.hashcode.toString()).then((e=>{t.value.hashcode=e.HashCode,e.List&&(d(e.List,be),a.value.list=e.List),a.value.timer=setTimeout(n,1e3)})).catch((e=>{a.value.timer=setTimeout(n,1e3)})):a.value.timer=setTimeout(n,1e3)},o=(0,i.KR)({timer:0,list:{}});(0,l.Gt)(Ee,o);const r=()=>{e.value.api.connected?(0,re.kl)(t.value.hashcode1.toString()).then((e=>{t.value.hashcode1=e.HashCode,e.List&&(d(e.List,re.vB),o.value.list=e.List),o.value.timer=setTimeout(r,1e3)})).catch((e=>{o.value.timer=setTimeout(r,1e3)})):o.value.timer=setTimeout(r,1e3)},d=(e,a)=>{const l=t.value.speedCache;for(let t in e){const n=e[t];n.removeFunc=a;const o=`${n.RemoteMachineId}-${n.TransactionId}`,r=l[o]||{SendBytes:0,ReceiveBytes:0};n.SendBytesText=s(n.SendBytes-r.SendBytes),n.ReceiveBytesText=s(n.ReceiveBytes-r.ReceiveBytes),r.SendBytes=n.SendBytes,r.ReceiveBytes=n.ReceiveBytes,l[o]=r}},s=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B/s","KB/s","MB/s","GB/s","TB/s"][t]}`},c=e=>{t.value.current=e,t.value.showEdit=!0},h=()=>{clearTimeout(a.value.timer),clearTimeout(o.value.timer)};return{connections:t,forwardConnections:a,_getForwardConnections:n,tuntapConnections:o,_getTuntapConnections:r,handleTunnelConnections:c,clearConnectionsTimeout:h}},Se=()=>(0,l.WQ)(Ve),Re=()=>(0,l.WQ)(Ie),ze=()=>(0,l.WQ)(Ee);var Be={emits:["edit","refresh"],setup(e,{emit:t}){const a=ve(),l=(Se(),Re()),n=ze(),o=e=>[l.value.list[e],n.value.list[e]].filter((e=>!!e&&e.Connected)).length,r=e=>{t("edit",e)},d=()=>{t("refresh")},s=e=>{t("connections",e)};return{tunnel:a,handleTunnel:r,handleTunnelRefresh:d,connectionCount:o,handleConnections:s}}};const Me=(0,b.A)(Be,[["render",pe],["__scopeId","data-v-c257d30c"]]);var We=Me;const Ue=e=>((0,l.Qi)("data-v-98329976"),e=e(),(0,l.jt)(),e),De=Ue((()=>(0,l.Lk)("div",null,"网关层级为你的设备与外网的距离,你可以手动调整数值",-1))),Ne=Ue((()=>(0,l.Lk)("div",null,"光猫映射了端口后,可以直接连接,把TcpPortMap调到第一",-1))),Xe={class:"t-c w-100"};function xe(e,t,a,n,o,r){const d=(0,l.g2)("el-form-item"),s=(0,l.g2)("el-input"),u=(0,l.g2)("el-col"),i=(0,l.g2)("el-input-number"),c=(0,l.g2)("el-row"),h=(0,l.g2)("el-button"),m=(0,l.g2)("el-form"),p=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(p,{modelValue:n.state.show,"onUpdate:modelValue":t[5]||(t[5]=e=>n.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:"设置隧道",width:"400"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(m,{ref:"ruleFormRef",model:n.state.ruleForm,rules:n.state.rules,"label-width":"auto"},{default:(0,l.k6)((()=>[(0,l.bF)(d,{label:"",prop:"alert"},{default:(0,l.k6)((()=>[De])),_:1}),(0,l.bF)(d,{label:""},{default:(0,l.k6)((()=>[(0,l.bF)(c,null,{default:(0,l.k6)((()=>[(0,l.bF)(u,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(d,{label:"网关层级",prop:"RouteLevel"},{default:(0,l.k6)((()=>[(0,l.bF)(s,{readonly:"",modelValue:n.state.ruleForm.RouteLevel,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.ruleForm.RouteLevel=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,l.bF)(u,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(d,{label:"调整层级",prop:"RouteLevelPlus"},{default:(0,l.k6)((()=>[(0,l.bF)(i,{modelValue:n.state.ruleForm.RouteLevelPlus,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.ruleForm.RouteLevelPlus=e)},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,l.bF)(d,{label:"",prop:"alert"},{default:(0,l.k6)((()=>[Ne])),_:1}),(0,l.bF)(d,{label:""},{default:(0,l.k6)((()=>[(0,l.bF)(c,null,{default:(0,l.k6)((()=>[(0,l.bF)(u,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(d,{label:"外网端口",prop:"PortMapWan"},{default:(0,l.k6)((()=>[(0,l.bF)(i,{modelValue:n.state.ruleForm.PortMapWan,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.ruleForm.PortMapWan=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,l.bF)(u,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(d,{label:"内网端口",prop:"PortMapLan"},{default:(0,l.k6)((()=>[(0,l.bF)(i,{modelValue:n.state.ruleForm.PortMapLan,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.ruleForm.PortMapLan=e)},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,l.bF)(d,{label:"",prop:"Btns"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",Xe,[(0,l.bF)(h,{onClick:t[4]||(t[4]=e=>n.state.show=!1)},{default:(0,l.k6)((()=>[(0,l.eW)("取消")])),_:1}),(0,l.bF)(h,{type:"primary",onClick:n.handleSave},{default:(0,l.k6)((()=>[(0,l.eW)("确认")])),_:1},8,["onClick"])])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue"])}var Ke={props:["modelValue"],emits:["change","update:modelValue"],setup(e,{emit:t}){const a=ve(),n=(0,i.KR)(null),o=(0,i.Kh)({show:!0,ruleForm:{RouteLevel:a.value.current.RouteLevel,RouteLevelPlus:a.value.current.RouteLevelPlus,PortMapWan:a.value.current.PortMapWan,PortMapLan:a.value.current.PortMapLan},rules:{}});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const r=()=>{const e=JSON.parse(JSON.stringify(a.value.current));e.RouteLevel=+o.ruleForm.RouteLevel,e.RouteLevelPlus=+o.ruleForm.RouteLevelPlus,e.PortMapWan=+o.ruleForm.PortMapWan,e.PortMapLan=+o.ruleForm.PortMapLan,(0,ge.KW)(e).then((()=>{o.show=!1,de.nk.success("已操作!"),t("change")})).catch((()=>{de.nk.error("操作失败!")}))};return{state:o,ruleFormRef:n,handleSave:r}}};const Ae=(0,b.A)(Ke,[["render",xe],["__scopeId","data-v-98329976"]]);var Ge=Ae;const Oe={key:0},qe={class:"list forward"},Qe=["onClick"],je={key:1},$e=["onClick"],He={key:1},Je={class:"list sforward"},Ye={key:1};function Ze(e,t,a,n,o,r){const d=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(d,{prop:"forward",label:"端口转发"},{default:(0,l.k6)((e=>[e.row.isSelf?((0,l.uX)(),(0,l.CE)("div",He,[(0,l.Lk)("ul",Je,[n.sforward.list&&n.sforward.list.length>0?((0,l.uX)(!0),(0,l.CE)(l.FK,{key:0},(0,l.pI)(n.sforward.list.slice(0,5),((e,a)=>((0,l.uX)(),(0,l.CE)("li",{key:a,class:(0,L.C4)({red:!!e.Msg})},[(0,l.Lk)("a",{href:"javascript:;",onClick:t[0]||(t[0]=e=>n.handleSEdit()),class:(0,L.C4)({green:e.Started})},[(0,l.Lk)("span",null,[(0,l.Lk)("span",{class:(0,L.C4)({red:!!e.Msg})},(0,L.v_)(e.Domain||e.RemotePort),3),(0,l.eW)(" -> "),(0,l.Lk)("span",{class:(0,L.C4)({red:!!e.LocalMsg})},(0,L.v_)(e.LocalEP),3)])],2),(0,l.Lk)("span",null," ("+(0,L.v_)(1<n.handleSEdit())},"暂无配置")]))])])):((0,l.uX)(),(0,l.CE)("div",Oe,[(0,l.Lk)("ul",qe,[n.forward.list[e.row.MachineId]&&n.forward.list[e.row.MachineId].length>0?((0,l.uX)(!0),(0,l.CE)(l.FK,{key:0},(0,l.pI)(n.forward.list[e.row.MachineId],((t,a)=>((0,l.uX)(),(0,l.CE)("li",{key:a},[(0,l.Lk)("a",{href:"javascript:;",onClick:t=>n.handleEdit(e.row.MachineId),class:(0,L.C4)({green:t.Started})},[(0,l.Lk)("span",null,[(0,l.Lk)("span",{class:(0,L.C4)({red:!!t.Msg})},(0,L.v_)(t.Port),3),(0,l.eW)(" -> "),(0,l.Lk)("span",{class:(0,L.C4)({red:!!t.TargetMsg})},(0,L.v_)(t.TargetEP),3)])],10,Qe),(0,l.Lk)("span",null," ("+(0,L.v_)(1<n.handleEdit(e.row.MachineId)},"暂无配置",8,$e)]))])]))])),_:1})}const et=Symbol(),tt=()=>{const e=(0,u.B)(),t=(0,i.KR)({timer:0,showEdit:!1,showCopy:!1,current:null,list:{},testTimer:0,testTargetTimer:0,hashcode:0,hashcode1:0});(0,l.Gt)(et,t);const a=()=>{e.value.api.connected?Fe(t.value.hashcode.toString()).then((e=>{t.value.hashcode=e.HashCode,e.List&&(t.value.list=e.List),t.value.timer=setTimeout(a,1020)})).catch((()=>{t.value.timer=setTimeout(a,1020)})):t.value.timer=setTimeout(a,1020)},n=(e,a)=>{t.value.current=e,t.value.machineName=a,t.value.showEdit=!0},o=()=>{clearTimeout(t.value.testTargetTimer),_e(t.value.current).then((e=>{t.value.testTargetTimer=setTimeout(o,5e3)})).catch((()=>{t.value.testTargetTimer=setTimeout(o,5e3)}))},r=()=>{clearTimeout(t.value.timer),clearTimeout(t.value.testTimer),clearTimeout(t.value.testTargetTimer)},d=e=>Object.values(t.value.list).reduce(((e,t)=>(e=e.concat(t),e)),[]).filter((t=>(t.Name||"").indexOf(e)>=0||(t.BindIPAddress||"").indexOf(e)>=0||t.Port.toString().indexOf(e)>=0||(t.TargetEP||"").indexOf(e)>=0)).map((e=>e.MachineId));return{forward:t,_getForwardInfo:a,handleForwardEdit:n,_testTargetForwardInfo:o,clearForwardTimeout:r,getForwardMachines:d}},at=()=>(0,l.WQ)(et);var lt=a(743);const nt=Symbol(),ot=()=>{const e=(0,u.B)(),t=(0,l.EW)((()=>e.value.config.Client.Id)),a=(0,i.KR)({timer:0,showEdit:!1,showCopy:!1,list:[],testTimer:0,hashcode:0});(0,l.Gt)(nt,a);const n=()=>{e.value.api.connected?(0,lt.pY)(a.value.hashcode.toString()).then((e=>{a.value.hashcode=e.HashCode,e.List&&(a.value.list=e.List),a.value.timer=setTimeout(n,1040)})).catch((()=>{a.value.timer=setTimeout(n,1040)})):a.value.timer=setTimeout(n,1040)},o=()=>{a.value.showEdit=!0},r=()=>{clearTimeout(a.value.testTimer),(0,lt.eX)().then((e=>{a.value.testTimer=setTimeout(r,5e3)})).catch((()=>{a.value.testTimer=setTimeout(r,5e3)}))},d=()=>{clearTimeout(a.value.timer),clearTimeout(a.value.testTimer)},s=e=>{const l=a.value.list.filter((t=>(t.Name||"").indexOf(e)>=0||(t.Domain||"").indexOf(e)>=0||t.RemotePort.toString().indexOf(e)>=0||t.LocalEP.indexOf(e)>=0));return l.length>0?[t.value]:[]};return{sforward:a,_getSForwardInfo:n,handleSForwardEdit:o,_testLocalSForwardInfo:r,clearSForwardTimeout:d,getSForwardMachines:s}},rt=()=>(0,l.WQ)(nt);var dt={emits:["edit","sedit"],setup(e,{emit:t}){const a=at(),l=rt(),n=e=>{t("edit",e)},o=()=>{t("sedit")},r=()=>{t("refresh")};return{forward:a,sforward:l,handleEdit:n,handleSEdit:o,handleForwardRefresh:r}}};const st=(0,b.A)(dt,[["render",Ze],["__scopeId","data-v-36ba4048"]]);var ut=st;const it={class:"t-c head"},ct={class:"error red"},ht={class:"error red"};function mt(e,t,a,n,o,r){const d=(0,l.g2)("el-button"),s=(0,l.g2)("el-input"),u=(0,l.g2)("el-table-column"),i=(0,l.g2)("el-option"),c=(0,l.g2)("el-select"),h=(0,l.g2)("WarnTriangleFilled"),m=(0,l.g2)("el-icon"),p=(0,l.g2)("el-popover"),g=(0,l.g2)("el-switch"),f=(0,l.g2)("Delete"),w=(0,l.g2)("el-popconfirm"),v=(0,l.g2)("el-table"),k=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(k,{modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),onOpen:n.handleOnShowList,"append-to":".app-wrap",title:`端口转发到【${n.state.machineName}】`,top:"1vh",width:"700"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",it,[(0,l.bF)(d,{type:"success",size:"small",onClick:n.handleAdd},{default:(0,l.k6)((()=>[(0,l.eW)("添加")])),_:1},8,["onClick"]),(0,l.bF)(d,{size:"small",onClick:n.handleRefresh},{default:(0,l.k6)((()=>[(0,l.eW)("刷新")])),_:1},8,["onClick"]),(0,l.bF)(d,{size:"small",onClick:n.handleCopy},{default:(0,l.k6)((()=>[(0,l.eW)("复制转发配置")])),_:1},8,["onClick"])]),(0,l.bF)(v,{data:n.state.data,size:"small",border:"",height:"500",onCellDblclick:n.handleCellClick},{default:(0,l.k6)((()=>[(0,l.bF)(u,{property:"Name",label:"名称"},{default:(0,l.k6)((e=>[e.row.NameEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":t=>e.row.Name=t,onBlur:t=>n.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.eW)((0,L.v_)(e.row.Name),1)],64))])),_:1}),(0,l.bF)(u,{prop:"BufferSize",label:"缓冲区",width:"100"},{default:(0,l.k6)((e=>[(0,l.bF)(c,{modelValue:e.row.BufferSize,"onUpdate:modelValue":t=>e.row.BufferSize=t,placeholder:"Select",size:"small",disabled:e.row.Started,onChange:t=>n.handleEditBlur(e.row,"BufferSize")},{default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.state.bufferSize,((e,t)=>((0,l.uX)(),(0,l.Wv)(i,{key:t,label:e,value:t},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","disabled","onChange"])])),_:1}),(0,l.bF)(u,{property:"BindIPAddress",label:"监听IP",width:"140"},{default:(0,l.k6)((e=>[(0,l.bF)(c,{modelValue:e.row.BindIPAddress,"onUpdate:modelValue":t=>e.row.BindIPAddress=t,size:"small",disabled:e.row.Started},{default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.state.ips,(e=>((0,l.uX)(),(0,l.Wv)(i,{key:e,label:e,value:e},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","disabled"])])),_:1}),(0,l.bF)(u,{property:"Port",label:"监听端口",width:"80"},{default:(0,l.k6)((e=>[e.row.PortEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(s,{key:0,type:"number",autofocus:"",size:"small",modelValue:e.row.Port,"onUpdate:modelValue":t=>e.row.Port=t,onBlur:t=>n.handleEditBlur(e.row,"Port")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[e.row.Msg?((0,l.uX)(),(0,l.Wv)(p,{key:0,placement:"top",title:"msg",width:"20rem",trigger:"hover",content:e.row.Msg},{reference:(0,l.k6)((()=>[(0,l.Lk)("div",ct,[(0,l.Lk)("span",null,(0,L.v_)(e.row.Port),1),(0,l.bF)(m,{size:"20"},{default:(0,l.k6)((()=>[(0,l.bF)(h)])),_:1})])])),_:2},1032,["content"])):((0,l.uX)(),(0,l.CE)("span",{key:1,class:(0,L.C4)({green:e.row.Started})},(0,L.v_)(e.row.Port),3))],64))])),_:1}),(0,l.bF)(u,{property:"TargetEP",label:"目标服务",width:"140"},{default:(0,l.k6)((e=>[e.row.TargetEPEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.TargetEP,"onUpdate:modelValue":t=>e.row.TargetEP=t,onBlur:t=>n.handleEditBlur(e.row,"TargetEP")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[e.row.TargetMsg?((0,l.uX)(),(0,l.Wv)(p,{key:0,placement:"top",title:"msg",width:"20rem",trigger:"hover",content:e.row.TargetMsg},{reference:(0,l.k6)((()=>[(0,l.Lk)("span",ht,(0,L.v_)(e.row.TargetEP),1),(0,l.bF)(m,{size:"20"},{default:(0,l.k6)((()=>[(0,l.bF)(h)])),_:1})])),_:2},1032,["content"])):((0,l.uX)(),(0,l.CE)("span",{key:1,class:(0,L.C4)({green:e.row.Started})},(0,L.v_)(e.row.TargetEP),3))],64))])),_:1}),(0,l.bF)(u,{property:"Started",label:"状态",width:"60"},{default:(0,l.k6)((e=>[(0,l.bF)(g,{modelValue:e.row.Started,"onUpdate:modelValue":t=>e.row.Started=t,onChange:t=>n.handleStartChange(e.row),"inline-prompt":"","active-text":"开","inactive-text":"关"},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,l.bF)(u,{label:"操作",width:"54"},{default:(0,l.k6)((e=>[(0,l.bF)(w,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"删除不可逆,是否确认?",onConfirm:t=>n.handleDel(e.row.Id)},{reference:(0,l.k6)((()=>[(0,l.bF)(d,{type:"danger",size:"small"},{default:(0,l.k6)((()=>[(0,l.bF)(m,null,{default:(0,l.k6)((()=>[(0,l.bF)(f)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data","onCellDblclick"])])])),_:1},8,["modelValue","onOpen","title"])}var pt={props:["data","modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:w.DtC,Delete:w.epd},setup(e,{emit:t}){const a=(0,u.B)(),n=at(),o=(0,i.Kh)({show:!0,machineId:n.value.current,machineName:n.value.machineName,data:[],ips:[],timerTestTarget:0,timerTestListen:0,bufferSize:a.value.bufferSize});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const r=()=>{Le().then((e=>{e.splice(0,0,"127.0.0.1"),e.splice(0,0,"0.0.0.0"),o.ips=e})).catch((()=>{}))},d=()=>{_e(n.value.current).then((e=>{o.timerTestTarget=setTimeout(d,1e3)})).catch((()=>{o.timerTestTarget=setTimeout(d,1e3)}))},s=()=>{Fe().then((e=>{e.List&&(o.data=e.List[o.machineId]||[])})).catch((()=>{}))},c=()=>{s()},h=(e,t)=>{g(e,t.property)},m=()=>{s(),de.nk.success("已刷新")},p=()=>{k({ID:0,Name:"",Port:0,TargetEP:"127.0.0.1:80",machineId:o.machineId})},g=(e,t)=>{e.Started?de.nk.error("请先停止"):(o.data.forEach((e=>{e["NameEditing"]=!1,e["PortEditing"]=!1,e["TargetEPEditing"]=!1,e["BindIPAddressEditing"]=!1})),e[`${t}Editing`]=!0)},f=(e,t)=>{e.Started?de.nk.error("请先停止"):(e[`${t}Editing`]=!1,k(e))},w=e=>{Te(e).then((()=>{s()}))},v=e=>{k(e)},k=e=>{e.Port=parseInt(e.Port),ye(e).then((()=>{s()})).catch((e=>{de.nk.error(e)}))},b=()=>{n.value.showCopy=!0};return(0,l.sV)((()=>{s(),r(),d()})),(0,l.hi)((()=>{clearTimeout(o.timerTestTarget),clearTimeout(o.timerTestListen)})),{state:o,handleOnShowList:c,handleCellClick:h,handleRefresh:m,handleAdd:p,handleEdit:g,handleEditBlur:f,handleDel:w,handleStartChange:v,handleCopy:b}}};const gt=(0,b.A)(pt,[["render",mt],["__scopeId","data-v-2c1a8404"]]);var ft=gt;const wt=e=>((0,l.Qi)("data-v-3a13c86f"),e=e(),(0,l.jt)(),e),vt={class:"t-c head"},kt=wt((()=>(0,l.Lk)("span",null,"复制",-1))),bt={class:"t-c"},Ft={class:"page-wrap"},Ct={class:"foot t-c"};function Lt(e,t,a,n,o,r){const d=(0,l.g2)("el-pagination"),s=(0,l.g2)("el-option"),u=(0,l.g2)("el-select"),i=(0,l.g2)("el-table-column"),c=(0,l.g2)("el-checkbox"),h=(0,l.g2)("el-table"),m=(0,l.g2)("el-button"),p=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(p,{modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),onOpen:n.handleOnShowList,"append-to":".app-wrap",title:"复制端口转发",top:"1vh",width:"500"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",vt,[kt,(0,l.bF)(u,{modelValue:n.state.machineId,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.machineId=e),onChange:n.handleMachineChange,filterable:"",remote:"",loading:n.state.loading,"remote-method":n.handleSearch},{header:(0,l.k6)((()=>[(0,l.Lk)("div",bt,[(0,l.Lk)("div",Ft,[(0,l.bF)(d,{small:"",background:"",layout:"prev, pager, next","page-size":n.state.machineIds.Request.Size,total:n.state.machineIds.Count,"pager-count":5,"current-page":n.state.machineIds.Request.Page,onCurrentChange:n.handlePageChange},null,8,["page-size","total","current-page","onCurrentChange"])])])])),default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.state.machineIds.List,((e,t)=>((0,l.uX)(),(0,l.Wv)(s,{key:t,label:e.MachineName,value:e.MachineId},null,8,["label","value"])))),128))])),_:1},8,["modelValue","onChange","loading","remote-method"]),(0,l.Lk)("span",null,"到【"+(0,L.v_)(n.state.toMachineName)+"】的端口转发记录",1)]),(0,l.bF)(h,{data:n.state.forwards,size:"small",border:""},{default:(0,l.k6)((()=>[(0,l.bF)(i,{property:"Name",label:"名称"}),(0,l.bF)(i,{prop:"BufferSize",label:"缓冲区",width:"60"},{default:(0,l.k6)((e=>[(0,l.eW)((0,L.v_)(1<[(0,l.bF)(c,{modelValue:e.row.use,"onUpdate:modelValue":t=>e.row.use=t},{default:(0,l.k6)((()=>[(0,l.eW)("使用")])),_:2},1032,["modelValue","onUpdate:modelValue"])])),_:1})])),_:1},8,["data"]),(0,l.Lk)("div",Ct,[(0,l.bF)(m,{type:"primary",onClick:n.handleConfirm},{default:(0,l.k6)((()=>[(0,l.eW)("确定复制")])),_:1},8,["onClick"])])])])),_:1},8,["modelValue","onOpen"])}var Tt={props:["modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:w.DtC},setup(e,{emit:t}){(0,u.B)();const a=at(),n=(0,i.Kh)({show:!0,loading:!1,machineId:"",toMachineId:a.value.current,toMachineName:a.value.machineName,machineIds:{Request:{Page:1,Size:10,Name:""},Count:0,List:[]},forwards:[]});(0,l.wB)((()=>n.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=()=>{r()},r=()=>{n.loading=!0,(0,g.BS)(n.machineIds.Request).then((e=>{n.loading=!1,n.machineIds.Request=e.Request,n.machineIds.Count=e.Count,n.machineIds.List=e.List,!n.machineId&&n.machineIds.List.length>0&&(n.machineId=n.machineIds.List[0].MachineId,c())})).catch((e=>{n.loading=!1}))},d=e=>{n.machineIds.Request.Page=e,r()},s=e=>{n.machineIds.Request.Name=e,r()},c=()=>{Ce({MachineId:n.machineId,ToMachineId:n.toMachineId}).then((e=>{e.forEach((e=>{e.use=!0})),n.forwards=e})).catch((e=>{console.log(e)}))},h=()=>{c()},m=()=>{const e=n.forwards.filter((e=>e.use)).map((e=>ye({Name:e.Name,Port:e.Port,TargetEP:e.TargetEP,BufferSize:e.BufferSize,MachineId:n.toMachineId})));Promise.all(e).then((()=>{de.nk.success("已操作!"),n.show=!1})).catch((()=>{de.nk.success("操作失败!")}))};return(0,l.sV)((()=>{r()})),(0,l.hi)((()=>{})),{state:n,handleSearch:s,handleOnShowList:o,handleMachineChange:h,handleConfirm:m,handlePageChange:d}}};const yt=(0,b.A)(Tt,[["render",Lt],["__scopeId","data-v-3a13c86f"]]);var _t=yt;const Vt={class:"t-c head"},It={class:"error red"},Et={class:"error red"};function Pt(e,t,a,n,o,r){const d=(0,l.g2)("el-button"),s=(0,l.g2)("el-input"),u=(0,l.g2)("el-table-column"),i=(0,l.g2)("WarnTriangleFilled"),c=(0,l.g2)("el-icon"),h=(0,l.g2)("el-popover"),m=(0,l.g2)("el-switch"),p=(0,l.g2)("Delete"),g=(0,l.g2)("el-popconfirm"),f=(0,l.g2)("el-table"),w=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(w,{modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),onOpen:n.handleOnShowList,"append-to":".app-wrap",title:"服务器代理穿透",top:"1vh",width:"700"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",Vt,[(0,l.bF)(d,{type:"success",size:"small",onClick:n.handleAdd},{default:(0,l.k6)((()=>[(0,l.eW)("添加")])),_:1},8,["onClick"]),(0,l.bF)(d,{size:"small",onClick:n.handleRefresh},{default:(0,l.k6)((()=>[(0,l.eW)("刷新")])),_:1},8,["onClick"]),(0,l.bF)(d,{size:"small",onClick:n.handleCopy},{default:(0,l.k6)((()=>[(0,l.eW)("复制穿透配置")])),_:1},8,["onClick"])]),(0,l.bF)(f,{data:n.state.data,size:"small",border:"",height:"500",onCellDblclick:n.handleCellClick},{default:(0,l.k6)((()=>[(0,l.bF)(u,{property:"Name",label:"名称"},{default:(0,l.k6)((e=>[e.row.NameEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":t=>e.row.Name=t,onBlur:t=>n.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.eW)((0,L.v_)(e.row.Name),1)],64))])),_:1}),(0,l.bF)(u,{prop:"BufferSize",label:"缓冲区",width:"100"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,L.v_)(1<[e.row.TempEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Temp,"onUpdate:modelValue":t=>e.row.Temp=t,onBlur:t=>n.handleEditBlur(e.row,"Temp")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[e.row.Msg?((0,l.uX)(),(0,l.Wv)(h,{key:0,placement:"top",title:"msg",width:"20rem",trigger:"hover",content:e.row.Msg},{reference:(0,l.k6)((()=>[(0,l.Lk)("div",It,[(0,l.Lk)("span",null,(0,L.v_)(e.row.Temp),1),(0,l.bF)(c,{size:"20"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1})])])),_:2},1032,["content"])):((0,l.uX)(),(0,l.CE)("span",{key:1,class:(0,L.C4)({green:e.row.Started})},(0,L.v_)(e.row.Temp),3))],64))])),_:1}),(0,l.bF)(u,{property:"LocalEP",label:"本机服务",width:"140"},{default:(0,l.k6)((e=>[e.row.LocalEPEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.LocalEP,"onUpdate:modelValue":t=>e.row.LocalEP=t,onBlur:t=>n.handleEditBlur(e.row,"LocalEP")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[e.row.LocalMsg?((0,l.uX)(),(0,l.Wv)(h,{key:0,placement:"top",title:"msg",width:"20rem",trigger:"hover",content:e.row.LocalMsg},{reference:(0,l.k6)((()=>[(0,l.Lk)("span",Et,(0,L.v_)(e.row.LocalEP),1),(0,l.bF)(c,{size:"20"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1})])),_:2},1032,["content"])):((0,l.uX)(),(0,l.CE)("span",{key:1,class:(0,L.C4)({green:e.row.Started})},(0,L.v_)(e.row.LocalEP),3))],64))])),_:1}),(0,l.bF)(u,{property:"Started",label:"状态",width:"60"},{default:(0,l.k6)((e=>[(0,l.bF)(m,{modelValue:e.row.Started,"onUpdate:modelValue":t=>e.row.Started=t,onChange:t=>n.handleStartChange(e.row),"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,l.bF)(u,{label:"操作",width:"54"},{default:(0,l.k6)((e=>[(0,l.bF)(g,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"删除不可逆,是否确认?",onConfirm:t=>n.handleDel(e.row.Id)},{reference:(0,l.k6)((()=>[(0,l.bF)(d,{type:"danger",size:"small"},{default:(0,l.k6)((()=>[(0,l.bF)(c,null,{default:(0,l.k6)((()=>[(0,l.bF)(p)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data","onCellDblclick"])])])),_:1},8,["modelValue","onOpen"])}var St={props:["data","modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:w.DtC,Delete:w.epd},setup(e,{emit:t}){const a=(0,u.B)(),n=rt(),o=(0,i.Kh)({bufferSize:a.value.bufferSize,show:!0,data:[],timerTestLocal:0});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const r=()=>{(0,lt.eX)().then((e=>{o.timerTestLocal=setTimeout(r,1e3)})).catch((()=>{o.timerTestLocal=setTimeout(r,1e3)}))},d=()=>{(0,lt.pY)().then((e=>{let t=e.List||[];t.forEach((e=>{e.Temp=(e.Domain||e.RemotePort).toString(),e.RemotePort=0,e.Domain=""})),o.data=t})).catch((()=>{}))},s=()=>{d()},c=(e,t)=>{p(e,t.property)},h=()=>{d(),de.nk.success("已刷新")},m=()=>{(0,lt.Qs)({Id:0,Name:"",RemotePort:0,LocalEP:"127.0.0.1:80",Domain:"",Temp:""}).then((()=>{setTimeout((()=>{d()}),100)})).catch((e=>{de.nk.error(e)}))},p=(e,t)=>{e.Started?de.nk.error("请先停止运行"):(o.data.forEach((e=>{e["NameEditing"]=!1,e["RemotePortEditing"]=!1,e["LocalEPEditing"]=!1,e["DomainEditing"]=!1,e["TempEditing"]=!1})),e[`${t}Editing`]=!0)},g=(e,t)=>{e.Started?de.nk.error("请先停止运行"):(e[`${t}Editing`]=!1,v(e))},f=e=>{(0,lt.DY)(e).then((()=>{d()}))},w=e=>{v(e)},v=e=>{e.Temp&&(/^\d+$/.test(e.Temp)?e.RemotePort=parseInt(e.Temp):e.Domain=e.Temp,(0,lt.Qs)(e).then((()=>{setTimeout((()=>{d()}),100)})).catch((e=>{de.nk.error(e)})))},k=()=>{n.value.showCopy=!0},b=()=>{const e=(t=1e4)=>{if(t>2e4)return;const a={Name:`s-${t}`,RemotePort:t,LocalEP:"127.0.0.1:80",Started:!0};(0,lt.Qs)(a).then((a=>{setTimeout((()=>{e(++t)}),50)})).catch((a=>{console.log(a),de.nk.error(a),setTimeout((()=>{e(++t)}),100)}))};e()};return(0,l.sV)((()=>{d(),r()})),(0,l.hi)((()=>{clearTimeout(o.timerTestLocal)})),{state:o,handleOnShowList:s,handleCellClick:c,handleRefresh:h,handleAdd:m,handleEdit:p,handleEditBlur:g,handleDel:f,handleStartChange:w,handleCopy:k,handle10000:b}}};const Rt=(0,b.A)(St,[["render",Pt],["__scopeId","data-v-5e37381c"]]);var zt=Rt;const Bt=e=>((0,l.Qi)("data-v-5512121a"),e=e(),(0,l.jt)(),e),Mt={class:"t-c head"},Wt=Bt((()=>(0,l.Lk)("span",null,"复制",-1))),Ut={class:"t-c"},Dt={class:"page-wrap"},Nt=Bt((()=>(0,l.Lk)("span",null,"的服务器代理穿透记录",-1))),Xt={class:"foot t-c"};function xt(e,t,a,n,o,r){const d=(0,l.g2)("el-pagination"),s=(0,l.g2)("el-option"),u=(0,l.g2)("el-select"),i=(0,l.g2)("el-table-column"),c=(0,l.g2)("el-checkbox"),h=(0,l.g2)("el-table"),m=(0,l.g2)("el-button"),p=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(p,{modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),onOpen:n.handleOnShowList,"append-to":".app-wrap",title:"复制服务器代理穿透",top:"1vh",width:"500"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",Mt,[Wt,(0,l.bF)(u,{modelValue:n.state.machineId,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.machineId=e),onChange:n.handleMachineChange,filterable:"",remote:"",loading:n.state.loading,"remote-method":n.handleSearch},{header:(0,l.k6)((()=>[(0,l.Lk)("div",Ut,[(0,l.Lk)("div",Dt,[(0,l.bF)(d,{small:"",background:"",layout:"prev, pager, next","page-size":n.state.machineIds.Request.Size,total:n.state.machineIds.Count,"pager-count":5,"current-page":n.state.machineIds.Request.Page,onCurrentChange:n.handlePageChange},null,8,["page-size","total","current-page","onCurrentChange"])])])])),default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.state.machineIds.List,((e,t)=>((0,l.uX)(),(0,l.Wv)(s,{key:t,label:e.MachineName,value:e.MachineId},null,8,["label","value"])))),128))])),_:1},8,["modelValue","onChange","loading","remote-method"]),Nt]),(0,l.bF)(h,{data:n.state.forwards,size:"small",border:""},{default:(0,l.k6)((()=>[(0,l.bF)(i,{property:"Name",label:"名称"}),(0,l.bF)(i,{property:"Domain",label:"域名/端口"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,L.v_)(e.row.Domain||e.row.RemotePort),1)])),_:1}),(0,l.bF)(i,{property:"LocalEP",label:"本机服务",width:"140"}),(0,l.bF)(i,{label:"操作",width:"80"},{default:(0,l.k6)((e=>[(0,l.bF)(c,{modelValue:e.row.use,"onUpdate:modelValue":t=>e.row.use=t},{default:(0,l.k6)((()=>[(0,l.eW)("使用")])),_:2},1032,["modelValue","onUpdate:modelValue"])])),_:1})])),_:1},8,["data"]),(0,l.Lk)("div",Xt,[(0,l.bF)(m,{type:"primary",onClick:n.handleConfirm},{default:(0,l.k6)((()=>[(0,l.eW)("确定复制")])),_:1},8,["onClick"])])])])),_:1},8,["modelValue","onOpen"])}var Kt={props:["modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:w.DtC},setup(e,{emit:t}){(0,u.B)();const a=(0,i.Kh)({show:!0,loading:!1,machineId:"",machineIds:{Request:{Page:1,Size:10,Name:""},Count:0,List:[]},forwards:[]});(0,l.wB)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const n=()=>{o()},o=()=>{a.loading=!0,(0,g.BS)(a.machineIds.Request).then((e=>{a.loading=!1,a.machineIds.Request=e.Request,a.machineIds.Count=e.Count,a.machineIds.List=e.List,!a.machineId&&a.machineIds.List.length>0&&(a.machineId=a.machineIds.List[0].MachineId,s())})).catch((e=>{a.loading=!1}))},r=e=>{a.machineIds.Request.Page=e,o()},d=e=>{a.machineIds.Request.Name=e,o()},s=()=>{(0,lt.$U)(a.machineId).then((e=>{e.forEach((e=>{e.use=!0})),a.forwards=e})).catch((e=>{console.log(e)}))},c=()=>{s()},h=()=>{const e=a.forwards.filter((e=>e.use)).map((e=>(0,lt.Qs)({Name:e.Name,Domain:e.Domain,RemotePort:e.RemotePort,LocalEP:e.LocalEP})));Promise.all(e).then((()=>{de.nk.success("已操作!"),a.show=!1})).catch((()=>{de.nk.success("操作失败!")}))};return(0,l.sV)((()=>{o()})),(0,l.hi)((()=>{})),{state:a,handleSearch:d,handleOnShowList:n,handleMachineChange:c,handleConfirm:h,handlePageChange:r}}};const At=(0,b.A)(Kt,[["render",xt],["__scopeId","data-v-5512121a"]]);var Gt=At;function Ot(e,t,a,n,o,r){const d=(0,l.g2)("el-table-column"),s=(0,l.g2)("Delete"),u=(0,l.g2)("el-icon"),i=(0,l.g2)("el-button"),c=(0,l.g2)("el-popconfirm"),h=(0,l.g2)("el-table"),m=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(m,{modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),"append-to":".app-wrap",title:"隧道链接",top:"1vh",width:"700"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(h,{data:n.state.data,size:"small",border:"",height:"500"},{default:(0,l.k6)((()=>[(0,l.bF)(d,{property:"RemoteMachineId",label:"目标"},{default:(0,l.k6)((e=>[(0,l.Lk)("div",{class:(0,L.C4)({green:e.row.Connected})},[(0,l.Lk)("p",null,(0,L.v_)(e.row.IPEndPoint),1),(0,l.Lk)("p",null,"ssl : "+(0,L.v_)(e.row.SSL),1)],2)])),_:1}),(0,l.bF)(d,{property:"TransactionId",label:"事务",width:"80"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,L.v_)(n.state.transactions[e.row.TransactionId]),1)])),_:1}),(0,l.bF)(d,{property:"TransportName",label:"协议"},{default:(0,l.k6)((e=>[(0,l.Lk)("div",null,[(0,l.Lk)("p",null,(0,L.v_)(e.row.TransportName)+"("+(0,L.v_)(n.state.protocolTypes[e.row.ProtocolType])+")",1),(0,l.Lk)("p",null,(0,L.v_)(n.state.types[e.row.Type])+" - "+(0,L.v_)(1<[(0,l.Lk)("span",null,(0,L.v_)(e.row.Delay)+"ms",1)])),_:1}),(0,l.bF)(d,{property:"Bytes",label:"通信"},{default:(0,l.k6)((e=>[(0,l.Lk)("div",null,[(0,l.Lk)("p",null,"up : "+(0,L.v_)(e.row.SendBytesText),1),(0,l.Lk)("p",null,"down : "+(0,L.v_)(e.row.ReceiveBytesText),1)])])),_:1}),(0,l.bF)(d,{label:"操作",width:"54"},{default:(0,l.k6)((e=>[(0,l.bF)(c,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"确定关闭此连接?",onConfirm:t=>n.handleDel(e.row)},{reference:(0,l.k6)((()=>[(0,l.bF)(i,{type:"danger",size:"small"},{default:(0,l.k6)((()=>[(0,l.bF)(u,null,{default:(0,l.k6)((()=>[(0,l.bF)(s)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data"])])])),_:1},8,["modelValue"])}var qt={props:["modelValue"],emits:["change","update:modelValue"],components:{Delete:w.epd},setup(e,{emit:t}){const a=Se(),n=Re(),o=ze(),r=(0,i.Kh)({show:!0,protocolTypes:{1:"tcp",2:"udp",4:"msquic"},types:{0:"打洞",1:"中继"},transactions:{forward:"端口转发",tuntap:"虚拟网卡"},data:(0,l.EW)((()=>[n.value.list[a.value.current],o.value.list[a.value.current]].filter((e=>!!e))))});(0,l.wB)((()=>r.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e),t("change")}),300)}));const d=e=>{e.removeFunc(e.RemoteMachineId).then((()=>{de.nk.success("删除成功")})).catch((()=>{}))};return{state:r,handleDel:d}}};const Qt=(0,b.A)(qt,[["render",Ot],["__scopeId","data-v-4760aa5d"]]);var jt=Qt,$t=a(7985),Ht={components:{Oper:C,Device:X,DeviceEdit:x.A,Tunnel:We,TunnelEdit:Ge,ConnectionsEdit:jt,Tuntap:Q,TuntapEdit:ie,Forward:ut,ForwardEdit:ft,ForwardCopy:_t,SForwardEdit:zt,SForwardCopy:Gt},setup(e){const t=(0,u.B)(),a=(0,i.Kh)({height:(0,l.EW)((()=>t.value.height-90))}),{devices:n,machineId:o,_getSignList:r,_getSignList1:d,handleDeviceEdit:c,handlePageChange:h,handlePageSizeChange:m,handleDel:p,clearDevicesTimeout:g,setSort:f}=(0,$t.r)(),{tuntap:w,_getTuntapInfo:v,handleTuntapEdit:k,handleTuntapRefresh:b,clearTuntapTimeout:F,getTuntapMachines:C,sortTuntapIP:L}=(0,M.O)(),{tunnel:T,_getTunnelInfo:y,handleTunnelEdit:_,handleTunnelRefresh:V,clearTunnelTimeout:I,sortTunnel:E}=we(),{forward:P,_getForwardInfo:S,handleForwardEdit:R,_testTargetForwardInfo:z,clearForwardTimeout:W,getForwardMachines:U}=tt(),{sforward:D,_getSForwardInfo:N,handleSForwardEdit:X,_testLocalSForwardInfo:x,clearSForwardTimeout:K,getSForwardMachines:A}=ot(),{connections:G,forwardConnections:O,_getForwardConnections:q,tuntapConnections:Q,_getTuntapConnections:j,handleTunnelConnections:$,clearConnectionsTimeout:H}=Pe(),{_getUpdater:J,clearUpdaterTimeout:Y}=(0,B.d)(),Z=e=>{n.page.Request.Prop=e.prop,n.page.Request.Asc="ascending"==e.order;let t=new Promise(((e,t)=>{e()}));if("tunnel"==e.prop){const e=E(n.page.Request.Asc);e.length>0&&(t=f(e))}else if("tuntap"==e.prop){const e=L(n.page.Request.Asc);e.length>0&&(t=f(e))}t.then((()=>{h()})).catch((()=>{}))},ee=e=>{R(e,n.page.List.filter((t=>t.MachineId==e))[0].MachineName)},te=e=>{n.page.Request.Name=e||"",n.page.Request.Name?n.page.Request.Ids=C(n.page.Request.Name).concat(U(n.page.Request.Name)).concat(A(n.page.Request.Name)).reduce(((e,t)=>(-1==e.indexOf(t)&&e.push(t),e)),[]):n.page.Request.Ids=[],h(),V(),b(),de.nk.success({message:"刷新成功",grouping:!0})},ae=()=>{h(),V(),b(),de.nk.success({message:"刷新成功",grouping:!0})};return(0,l.sV)((()=>{(0,s.jH)((e=>{e&&(h(),r(),V(),b())})),r(),d(),v(),y(),q(),j(),S(),N(),J(),z(),x()})),(0,l.hi)((()=>{g(),H(),F(),I(),W(),K(),Y()})),{state:a,devices:n,machineId:o,handleSortChange:Z,handleDeviceEdit:c,handlePageRefresh:te,handlePageSearch:ae,handlePageChange:h,handlePageSizeChange:m,handleDel:p,tuntap:w,handleTuntapEdit:k,handleTuntapRefresh:b,tunnel:T,connections:G,handleTunnelEdit:_,handleTunnelRefresh:V,handleTunnelConnections:$,forward:P,_handleForwardEdit:ee,sforward:D,handleSForwardEdit:X}}};const Jt=(0,b.A)(Ht,[["render",d],["__scopeId","data-v-6aa4e468"]]);var Yt=Jt}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/904.762122de.js b/linker.tray.win/web/js/904.762122de.js
new file mode 100644
index 00000000..219c4355
--- /dev/null
+++ b/linker.tray.win/web/js/904.762122de.js
@@ -0,0 +1 @@
+(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[904],{4:function(e,l,t){"use strict";t.d(l,{a1:function(){return m},e3:function(){return v},jH:function(){return w},zG:function(){return k}});t(4114),t(6573),t(8100),t(7936);var n=t(1219);let a=0,o=null,r="",i=1,u="";const s={},d={connected:!1,connecting:!1},c=()=>{const e=Date.now();for(let l in s){const t=s[l];e-t.time>t.timeout&&(t.reject("超时~"),delete s[l])}setTimeout(c,1e3)};c();const p={subs:{},add:function(e,l){"function"==typeof l&&(this.subs[e]||(this.subs[e]=[]),this.subs[e].push(l))},remove(e,l){let t=this.subs[e]||[];for(let n=t.length-1;n>=0;n--)t[n]==l&&t.splice(n,1)},push(e,l){let t=this.subs[e]||[];for(let n=t.length-1;n>=0;n--)t[n](l)}},f=()=>{d.connected=!0,d.connecting=!1,p.push(y,d.connected)},h=e=>{d.connected=!1,d.connecting=!1,p.push(y,d.connected),setTimeout((()=>{m()}),1e3)},g=e=>{if("string"!=typeof e.data)return void e.data.arrayBuffer().then((l=>{const t=new DataView(l).getInt8(),n=new FileReader;n.readAsText(e.data.slice(4,4+t),"utf8"),n.onload=()=>{let a=JSON.parse(n.result);a.Content={Name:a.Content,Img:e.data.slice(4+t,e.data.length),ArrayBuffer:l},b(a)}}));let l=JSON.parse(e.data);b(l)},b=e=>{let l=s[e.RequestId];l?(0==e.Code?l.resolve(e.Content):1==e.Code?l.reject(e.Content):255==e.Code?(l.reject(e.Content),l.errHandle||n.nk.error(`${l.path}:${e.Content}`)):p.push(e.Path,e.Content),delete s[e.RequestId]):p.push(e.Path,e.Content)},m=(e=r,l=u)=>{if(u=l,r=e,d.connecting||d.connected)return;null!=o&&o.close(),d.connecting=!0;const t=l||"snltty";o=new WebSocket(r,[t]),o.iddd=++i,o.onopen=f,o.onclose=h,o.onmessage=g},v=()=>{o&&o.close()},k=(e,l={},t=!1,n=15e3)=>new Promise(((r,i)=>{let u=++a;try{s[u]={resolve:r,reject:i,errHandle:t,path:e,time:Date.now(),timeout:n};let a=JSON.stringify({Path:e,RequestId:u,Content:"string"==typeof l?l:JSON.stringify(l)});d.connected&&1==o.readyState?o.send(a):i("网络错误~")}catch(c){console.log(c),i("网络错误~"),delete s[u]}})),y=Symbol(),w=e=>{p.add(y,e)}},743:function(e,l,t){"use strict";t.d(l,{$U:function(){return i},Ap:function(){return a},Co:function(){return o},DY:function(){return u},Qs:function(){return s},eX:function(){return d},pY:function(){return r}});var n=t(4);const a=()=>(0,n.zG)("sforwardclient/GetSecretKey"),o=e=>(0,n.zG)("sforwardclient/SetSecretKey",e),r=(e="0")=>(0,n.zG)("sforwardclient/get",e),i=e=>(0,n.zG)("sforwardclient/getremote",e),u=e=>(0,n.zG)("sforwardclient/remove",e),s=e=>(0,n.zG)("sforwardclient/add",e),d=()=>(0,n.zG)("sforwardclient/TestLocal")},9299:function(e,l,t){"use strict";t.d(l,{BS:function(){return s},SZ:function(){return r},Se:function(){return d},VN:function(){return i},gC:function(){return c},jU:function(){return o},nD:function(){return u},rd:function(){return a}});var n=t(4);const a=e=>(0,n.zG)("signInclient/set",e),o=e=>(0,n.zG)("signInclient/setservers",e),r=()=>(0,n.zG)("signInclient/info"),i=e=>(0,n.zG)("signInclient/setorder",e),u=e=>(0,n.zG)("signInclient/List",e),s=e=>(0,n.zG)("signInclient/ids",e),d=e=>(0,n.zG)("signInclient/del",e),c=e=>(0,n.zG)("signInclient/setname",e)},83:function(e,l,t){"use strict";t.d(l,{$M:function(){return s},KW:function(){return u},S3:function(){return p},Vn:function(){return c},b0:function(){return o},gM:function(){return i},ix:function(){return a},r7:function(){return r},xo:function(){return d}});var n=t(4);const a=()=>(0,n.zG)("tunnel/gettypes"),o=e=>(0,n.zG)("tunnel/SetServers",e),r=(e="0")=>(0,n.zG)("tunnel/get",e),i=()=>(0,n.zG)("tunnel/refresh"),u=e=>(0,n.zG)("tunnel/SetRouteLevel",e),s=e=>(0,n.zG)("tunnel/SetTransports",e),d=e=>(0,n.zG)("tunnel/SetExcludeIPs",e),c=()=>(0,n.zG)("tunnel/GeInterfaces"),p=e=>(0,n.zG)("tunnel/SetInterface",e)},920:function(e,l,t){"use strict";t.d(l,{BJ:function(){return d},NS:function(){return r},Vk:function(){return s},aP:function(){return p},ir:function(){return u},lJ:function(){return o},mK:function(){return a},y2:function(){return c},yN:function(){return i}});var n=t(4);const a=(e="0")=>(0,n.zG)("updaterclient/get",e),o=e=>(0,n.zG)("updaterclient/confirm",e),r=e=>(0,n.zG)("updaterclient/exit",e),i=()=>(0,n.zG)("updaterclient/GetSecretKey"),u=e=>(0,n.zG)("updaterclient/SetSecretKey",e),s=()=>(0,n.zG)("updaterclient/getcurrent"),d=()=>(0,n.zG)("updaterclient/getserver"),c=e=>(0,n.zG)("updaterclient/confirmserver",e),p=()=>(0,n.zG)("updaterclient/exitserver")},3830:function(e,l,t){"use strict";t.d(l,{B:function(){return u},v:function(){return i}});var n=t(4),a=t(144),o=t(6768);const r=Symbol(),i=()=>{const e=(0,a.KR)({api:{connected:!1},height:0,config:{Common:{},Client:{Servers:[]},Server:{},Running:{Relay:{Servers:[]},Tuntap:{IP:"",PrefixLength:24},Client:{Servers:[]},AutoSyncs:{}},configed:!1},signin:{Connected:!1,Connecting:!1,Version:"v1.0.0.0"},bufferSize:["1KB","2KB","4KB","8KB","16KB","32KB","64KB","128KB","256KB","512KB","1024KB"],updater:{},self:{}});return(0,n.jH)((l=>{e.value.api.connected=l})),(0,o.Gt)(r,e),e},u=()=>(0,o.WQ)(r)},4378:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return g}});var n=t(6768),a=t(4232);function o(e,l,t,o,r,i){const u=(0,n.g2)("Version"),s=(0,n.g2)("el-input"),d=(0,n.g2)("el-table-column"),c=(0,n.g2)("Delete"),p=(0,n.g2)("el-icon"),f=(0,n.g2)("el-button"),h=(0,n.g2)("el-popconfirm"),g=(0,n.g2)("Plus"),b=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(u,{ckey:"excludeIPConfig"}),(0,n.bF)(b,{data:o.state.list,border:"",size:"small",width:"100%",height:`${o.state.height}px`,onCellDblclick:o.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(d,{prop:"IPAddress",label:"IP"},{default:(0,n.k6)((e=>[e.row.IPAddressEditing?((0,n.uX)(),(0,n.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.IPAddress,"onUpdate:modelValue":l=>e.row.IPAddress=l,onBlur:l=>o.handleEditBlur(e.row,"IPAddress")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,a.v_)(e.row.IPAddress),1)],64))])),_:1}),(0,n.bF)(d,{prop:"Mask",label:"掩码"},{default:(0,n.k6)((e=>[e.row.MaskEditing?((0,n.uX)(),(0,n.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Mask,"onUpdate:modelValue":l=>e.row.Mask=l,onBlur:l=>o.handleEditBlur(e.row,"Mask")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,a.v_)(e.row.Mask),1)],64))])),_:1}),(0,n.bF)(d,{prop:"Oper",label:"操作",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(h,{title:"删除不可逆,是否确认?",onConfirm:l=>o.handleDel(e.$index)},{reference:(0,n.k6)((()=>[(0,n.bF)(f,{type:"danger",size:"small"},{default:(0,n.k6)((()=>[(0,n.bF)(p,null,{default:(0,n.k6)((()=>[(0,n.bF)(c)])),_:1})])),_:1})])),_:2},1032,["onConfirm"]),(0,n.bF)(f,{type:"primary",size:"small",onClick:l=>o.handleAdd(e.$index)},{default:(0,n.k6)((()=>[(0,n.bF)(p,null,{default:(0,n.k6)((()=>[(0,n.bF)(g)])),_:1})])),_:2},1032,["onClick"])])])),_:1})])),_:1},8,["data","height","onCellDblclick"])],64)}var r=t(83),i=t(3830),u=t(1219),s=t(144),d=t(3169),c=t(7477),p={label:"打洞排除IP",name:"excludeIP",order:3,components:{Version:d["default"],Delete:c.epd,Plus:c.FWt},setup(e){const l=(0,i.B)(),t=(0,s.Kh)({list:l.value.config.Running.Tunnel.ExcludeIPs||[{IPAddress:"0.0.0.0",Mask:32}],types:[],height:(0,n.EW)((()=>l.value.height-127))}),a=(e,l)=>{o(e,l.property)},o=(e,l)=>{t.list.forEach((e=>{e["IPAddressEditing"]=!1,e["MaskEditing"]=!1})),e[`${l}Editing`]=!0},d=(e,l)=>{e[`${l}Editing`]=!1,f()},c=e=>{t.list.splice(e,1),f()},p=e=>{t.list.splice(e+1,0,{IPAddress:"0.0.0.0",Mask:32}),f()},f=()=>{t.list.forEach((e=>{e.Mask=parseInt(e.Mask)})),(0,r.xo)(t.list).then((()=>{u.nk.success("已操作")})).catch((()=>{u.nk.success("操作失败")}))};return(0,n.sV)((()=>{0==t.list.length&&(t.list=[{IPAddress:"0.0.0.0",Mask:32}])})),{state:t,handleCellClick:a,handleEditBlur:d,handleDel:c,handleAdd:p}}},f=t(1241);const h=(0,f.A)(p,[["render",o]]);var g=h},2820:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return c}});var n=t(6768);const a={class:"servers-wrap"};function o(e,l,t,o,r,i){const u=(0,n.g2)("el-tab-pane"),s=(0,n.g2)("el-tabs");return(0,n.uX)(),(0,n.CE)("div",a,[(0,n.bF)(s,{type:"border-card",style:{width:"100%"},modelValue:o.state.tab,"onUpdate:modelValue":l[0]||(l[0]=e=>o.state.tab=e)},{default:(0,n.k6)((()=>[o.state.connected?((0,n.uX)(!0),(0,n.CE)(n.FK,{key:0},(0,n.pI)(o.settingComponents,((e,l)=>((0,n.uX)(),(0,n.Wv)(u,{key:l,label:e.label,name:e.name},{default:(0,n.k6)((()=>[((0,n.uX)(),(0,n.Wv)((0,n.$y)(e)))])),_:2},1032,["label","name"])))),128)):(0,n.Q3)("",!0)])),_:1},8,["modelValue"])])}var r=t(144),i=t(3830),u={components:{},setup(e){const l=["./Index.vue","./Version.vue"],a=t(2067),o=a.keys().filter((e=>0==l.includes(e))).map((e=>a(e).default)).sort(((e,l)=>e.order-l.order)),u=(0,i.B)(),s=(0,r.Kh)({tab:o[0].name,connected:(0,n.EW)((()=>u.value.api.connected&&u.value.config.configed))});return{state:s,settingComponents:o}}},s=t(1241);const d=(0,s.A)(u,[["render",o],["__scopeId","data-v-40863bc6"]]);var c=d},4780:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return m}});var n=t(6768),a=t(4232);function o(e,l,t,o,r,i){const u=(0,n.g2)("el-radio-button"),s=(0,n.g2)("el-radio-group"),d=(0,n.g2)("Version"),c=(0,n.g2)("el-input"),p=(0,n.g2)("el-table-column"),f=(0,n.g2)("el-option"),h=(0,n.g2)("el-select"),g=(0,n.g2)("el-switch"),b=(0,n.g2)("Top"),m=(0,n.g2)("el-icon"),v=(0,n.g2)("el-button"),k=(0,n.g2)("Bottom"),y=(0,n.g2)("Delete"),w=(0,n.g2)("el-popconfirm"),C=(0,n.g2)("Plus"),V=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(d,{ckey:"relayServers"},{default:(0,n.k6)((()=>[(0,n.Lk)("div",null,[(0,n.bF)(s,{modelValue:o.state.byRelay,"onUpdate:modelValue":l[0]||(l[0]=e=>o.state.byRelay=e),size:"small",style:{"vertical-align":"bottom"},onChange:o.handleByRelayChange},{default:(0,n.k6)((()=>[(0,n.bF)(u,{label:"延迟优先",value:!0}),(0,n.bF)(u,{label:"顺序优先",value:!1})])),_:1},8,["modelValue","onChange"])])])),_:1}),(0,n.bF)(V,{data:o.state.list,border:"",size:"small",width:"100%",height:`${o.state.height}px`,onCellDblclick:o.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(p,{prop:"Name",label:"名称",width:"100"},{default:(0,n.k6)((e=>[e.row.NameEditing?((0,n.uX)(),(0,n.Wv)(c,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":l=>e.row.Name=l,onBlur:l=>o.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,a.v_)(e.row.Name),1)],64))])),_:1}),(0,n.bF)(p,{prop:"RelayType",label:"类别",width:"80"},{default:(0,n.k6)((e=>[(0,n.bF)(h,{modelValue:e.row.RelayType,"onUpdate:modelValue":l=>e.row.RelayType=l,placeholder:"Select",size:"small",onChange:l=>o.handleEditBlur(e.row,"RelayType")},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(o.state.types,(e=>((0,n.uX)(),(0,n.Wv)(f,{key:e.Value,label:e.Name,value:e.Value},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(p,{prop:"Host",label:"地址"},{default:(0,n.k6)((e=>[e.row.HostEditing?((0,n.uX)(),(0,n.Wv)(c,{key:0,autofocus:"",size:"small",modelValue:e.row.Host,"onUpdate:modelValue":l=>e.row.Host=l,onBlur:l=>o.handleEditBlur(e.row,"Host")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.Lk)("span",{class:(0,a.C4)({red:!e.row.Available,green:e.row.Available})},(0,a.v_)(e.row.Host),3),(0,n.Lk)("span",{class:(0,a.C4)({red:-1==e.row.Delay,green:e.row.Delay<500&&e.row.Delay>=0,yellow:e.row.Delay>=500})}," - "+(0,a.v_)(e.row.Delay)+"ms",3)],64))])),_:1}),(0,n.bF)(p,{prop:"SecretKey",label:"秘钥"},{default:(0,n.k6)((e=>[e.row.SecretKeyEditing?((0,n.uX)(),(0,n.Wv)(c,{key:0,type:"password","show-password":"",size:"small",modelValue:e.row.SecretKey,"onUpdate:modelValue":l=>e.row.SecretKey=l,onBlur:l=>o.handleEditBlur(e.row,"SecretKey")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[],64))])),_:1}),(0,n.bF)(p,{property:"SSL",label:"SSL",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(g,{modelValue:e.row.SSL,"onUpdate:modelValue":l=>e.row.SSL=l,onChange:l=>o.handleEditBlur(e.row,"SSL"),"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(p,{property:"Disabled",label:"禁用",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(g,{modelValue:e.row.Disabled,"onUpdate:modelValue":l=>e.row.Disabled=l,onChange:l=>o.handleEditBlur(e.row,"Disabled"),"inline-prompt":"","active-text":"是","inactive-text":"否",style:{"--el-switch-on-color":"red","--el-switch-off-color":"#ddd"}},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(p,{prop:"Sort",label:"调序",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(v,{size:"small",onClick:l=>o.handleSort(e.$index,-1)},{default:(0,n.k6)((()=>[(0,n.bF)(m,null,{default:(0,n.k6)((()=>[(0,n.bF)(b)])),_:1})])),_:2},1032,["onClick"]),(0,n.bF)(v,{size:"small",onClick:l=>o.handleSort(e.$index,1)},{default:(0,n.k6)((()=>[(0,n.bF)(m,null,{default:(0,n.k6)((()=>[(0,n.bF)(k)])),_:1})])),_:2},1032,["onClick"])])])),_:1}),(0,n.bF)(p,{prop:"Oper",label:"操作",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(w,{title:"删除不可逆,是否确认?",onConfirm:l=>o.handleDel(e.$index)},{reference:(0,n.k6)((()=>[(0,n.bF)(v,{type:"danger",size:"small"},{default:(0,n.k6)((()=>[(0,n.bF)(m,null,{default:(0,n.k6)((()=>[(0,n.bF)(y)])),_:1})])),_:1})])),_:2},1032,["onConfirm"]),(0,n.bF)(v,{type:"primary",size:"small",onClick:l=>o.handleAdd(e.$index)},{default:(0,n.k6)((()=>[(0,n.bF)(m,null,{default:(0,n.k6)((()=>[(0,n.bF)(C)])),_:1})])),_:2},1032,["onClick"])])])),_:1})])),_:1},8,["data","height","onCellDblclick"])],64)}var r=t(4);const i=()=>(0,r.zG)("relay/gettypes"),u=e=>(0,r.zG)("relay/SetServers",e);var s=t(3830),d=t(1219),c=t(144),p=t(3169),f=t(7477),h={label:"中继服务器",name:"relayServers",order:4,components:{Version:p["default"],Delete:f.epd,Plus:f.FWt,Top:f.EjV,Bottom:f.i5o},setup(e){const l=(0,s.B)(),t=(0,c.Kh)({list:l.value.config.Running.Relay.Servers.sort(((e,l)=>e.Disabled-l.Disabled)),byRelay:l.value.config.Running.Relay.ByRelay,types:[],height:(0,n.EW)((()=>l.value.height-127))});(0,n.wB)((()=>l.value.config.Running.Relay.Servers),(()=>{0==t.list.filter((e=>e["__editing"])).length&&(t.list=l.value.config.Running.Relay.Servers.sort(((e,l)=>e.Disabled-l.Disabled)),t.byRelay=l.value.config.Running.Relay.ByRelay)}));const a=()=>{i().then((e=>{t.types=e}))},o=(e,l)=>{r(e,l.property)},r=(e,l)=>{t.list.forEach((e=>{e["NameEditing"]=!1,e["RelayTypeEditing"]=!1,e["HostEditing"]=!1,e["SecretKeyEditing"]=!1})),e["__editing"]=!0,e[`${l}Editing`]=!0},p=(e,l)=>{e[`${l}Editing`]=!1,e["__editing"]=!1,m()},f=e=>{t.list.splice(e,1),m()},h=e=>{t.list.filter((e=>""==e.Host||""==e.Name)).length>0||(t.list.splice(e+1,0,{Name:"",Host:"",RelayType:0,SecretKey:"snltty",Disabled:!1}),m())},g=(e,l)=>{const n=t.list[e],a=t.list[e+l];n&&a&&(t.list[e+l]=n,t.list[e]=a),m(t.list)},b=()=>{m()},m=()=>{t.list=t.list.slice().sort(((e,l)=>e.Disabled-l.Disabled)),u({servers:t.list,byRelay:t.byRelay}).then((()=>{d.nk.success("已操作")})).catch((()=>{d.nk.success("操作失败")}))};return(0,n.sV)((()=>{a()})),{state:t,handleCellClick:o,handleEditBlur:p,handleDel:f,handleAdd:h,handleSort:g,handleByRelayChange:b}}},g=t(1241);const b=(0,g.A)(h,[["render",o],["__scopeId","data-v-7981ea4b"]]);var m=b},6093:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return g}});var n=t(6768);const a={style:{width:"30rem",padding:"5rem 0",margin:"0 auto"}},o=(0,n.Lk)("p",{class:"t-c"}," 服务器代理穿透密钥 ",-1);function r(e,l,t,r,i,u){const s=(0,n.g2)("Version"),d=(0,n.g2)("el-input");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(s,{ckey:"sforwardKey"}),(0,n.Lk)("div",a,[o,(0,n.Lk)("p",null,[(0,n.bF)(d,{type:"password","show-password":"",modelValue:r.state.SForwardSecretKey,"onUpdate:modelValue":l[0]||(l[0]=e=>r.state.SForwardSecretKey=e),maxlength:"36",onBlur:r.handleChange},null,8,["modelValue","onBlur"])])])],64)}var i=t(743),u=t(3830),s=t(1219),d=t(144),c=t(3169),p={label:"服务器穿透",name:"sforward",order:5,components:{Version:c["default"]},setup(e){(0,u.B)();const l=(0,d.Kh)({SForwardSecretKey:""}),t=()=>{(0,i.Ap)().then((e=>{l.SForwardSecretKey=e}))},a=()=>{l.SForwardSecretKey&&(0,i.Co)(l.SForwardSecretKey).then((()=>{s.nk.success("已操作")})).catch((()=>{s.nk.success("操作失败")}))},o=()=>{a()};return(0,n.sV)((()=>{t()})),{state:l,handleChange:o}}},f=t(1241);const h=(0,f.A)(p,[["render",r]]);var g=h},1557:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return g}});var n=t(6768),a=t(4232);function o(e,l,t,o,r,i){const u=(0,n.g2)("Version"),s=(0,n.g2)("el-input"),d=(0,n.g2)("el-table-column"),c=(0,n.g2)("Delete"),p=(0,n.g2)("el-icon"),f=(0,n.g2)("el-button"),h=(0,n.g2)("el-popconfirm"),g=(0,n.g2)("Plus"),b=(0,n.g2)("Select"),m=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(u,{ckey:"signServers"}),(0,n.bF)(m,{data:o.state.list,border:"",size:"small",width:"100%",height:`${o.state.height}px`,onCellDblclick:o.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(d,{prop:"Name",label:"名称"},{default:(0,n.k6)((e=>[e.row.NameEditing?((0,n.uX)(),(0,n.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":l=>e.row.Name=l,onBlur:l=>o.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,a.v_)(e.row.Name),1)],64))])),_:1}),(0,n.bF)(d,{prop:"Host",label:"地址"},{default:(0,n.k6)((e=>[e.row.HostEditing?((0,n.uX)(),(0,n.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Host,"onUpdate:modelValue":l=>e.row.Host=l,onBlur:l=>o.handleEditBlur(e.row,"Host")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,a.v_)(e.row.Host),1)],64))])),_:1}),(0,n.bF)(d,{prop:"Oper",label:"操作",width:"150"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(h,{title:"删除不可逆,是否确认?",onConfirm:l=>o.handleDel(e.$index)},{reference:(0,n.k6)((()=>[(0,n.bF)(f,{type:"danger",size:"small"},{default:(0,n.k6)((()=>[(0,n.bF)(p,null,{default:(0,n.k6)((()=>[(0,n.bF)(c)])),_:1})])),_:1})])),_:2},1032,["onConfirm"]),(0,n.bF)(f,{type:"primary",size:"small",onClick:l=>o.handleAdd(e.$index)},{default:(0,n.k6)((()=>[(0,n.bF)(p,null,{default:(0,n.k6)((()=>[(0,n.bF)(g)])),_:1})])),_:2},1032,["onClick"]),o.state.server!=e.row.Host?((0,n.uX)(),(0,n.Wv)(f,{key:0,size:"small",onClick:l=>o.handleUse(e.$index)},{default:(0,n.k6)((()=>[(0,n.bF)(p,null,{default:(0,n.k6)((()=>[(0,n.bF)(b)])),_:1})])),_:2},1032,["onClick"])):(0,n.Q3)("",!0)])])),_:1})])),_:1},8,["data","height","onCellDblclick"])],64)}var r=t(9299),i=t(3830),u=t(1219),s=t(144),d=t(3169),c=t(7477),p={label:"信标服务器",name:"signInServers",order:0,components:{Version:d["default"],Delete:c.epd,Plus:c.FWt,Select:c.l6P},setup(e){const l=(0,i.B)(),t=(0,s.Kh)({list:l.value.config.Running.Client.Servers||[],server:(0,n.EW)((()=>l.value.config.Client.Server)),height:(0,n.EW)((()=>l.value.height-127))});(0,n.wB)((()=>l.value.config.Running.Client.Servers),(()=>{0==t.list.filter((e=>e["__editing"])).length&&(t.list=l.value.config.Running.Client.Servers)}));const a=(e,l)=>{o(e,l.property)},o=(e,l)=>{t.list.forEach((e=>{e["NameEditing"]=!1,e["HostEditing"]=!1})),e[`${l}Editing`]=!0,e["__editing"]=!0},d=(e,l)=>{e[`${l}Editing`]=!1,e["__editing"]=!1,h()},c=e=>{t.list.splice(e,1),h()},p=e=>{t.list.filter((e=>""==e.Host||""==e.Name)).length>0||(t.list.splice(e+1,0,{Name:"",Host:""}),h())},f=e=>{const l=t.list[e];t.list[e]=t.list[0],t.list[0]=l,h()},h=()=>{(0,r.jU)(t.list).then((()=>{u.nk.success("已操作")})).catch((()=>{u.nk.success("操作失败")}))};return{state:t,handleCellClick:a,handleEditBlur:d,handleDel:c,handleAdd:p,handleUse:f}}},f=t(1241);const h=(0,f.A)(p,[["render",o]]);var g=h},1436:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return h}});var n=t(6768);function a(e,l,t,a,o,r){const i=(0,n.g2)("Version"),u=(0,n.g2)("el-table-column"),s=(0,n.g2)("el-option"),d=(0,n.g2)("el-select"),c=(0,n.g2)("el-switch"),p=(0,n.g2)("el-input-number"),f=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(i,{ckey:"tunnelTransports"}),(0,n.bF)(f,{data:a.state.list,border:"",size:"small",width:"100%",height:`${a.state.height}px`},{default:(0,n.k6)((()=>[(0,n.bF)(u,{prop:"Name",label:"名称",width:"120"}),(0,n.bF)(u,{prop:"Label",label:"说明"}),(0,n.bF)(u,{prop:"ProtocolType",label:"协议",width:"60"}),(0,n.bF)(u,{prop:"BufferSize",label:"缓冲区",width:"100"},{default:(0,n.k6)((e=>[(0,n.bF)(d,{modelValue:e.row.BufferSize,"onUpdate:modelValue":l=>e.row.BufferSize=l,placeholder:"Select",size:"small",onChange:a.handleSave},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(a.state.bufferSize,((e,l)=>((0,n.uX)(),(0,n.Wv)(s,{key:l,label:e,value:l},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(u,{property:"Reverse",label:"反向",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(c,{disabled:e.row.DisableReverse,modelValue:e.row.Reverse,"onUpdate:modelValue":l=>e.row.Reverse=l,onChange:a.handleSave,"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(u,{property:"SSL",label:"SSL",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(c,{disabled:e.row.DisableSSL,modelValue:e.row.SSL,"onUpdate:modelValue":l=>e.row.SSL=l,onChange:a.handleSave,"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(u,{property:"Disabled",label:"禁用",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(c,{modelValue:e.row.Disabled,"onUpdate:modelValue":l=>e.row.Disabled=l,onChange:a.handleSave,"inline-prompt":"","active-text":"是","inactive-text":"否",style:{"--el-switch-on-color":"red","--el-switch-off-color":"#ddd"}},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(u,{prop:"Order",label:"调序",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(p,{modelValue:e.row.Order,"onUpdate:modelValue":l=>e.row.Order=l,min:1,max:255,onChange:a.handleOrderChange,size:"small"},null,8,["modelValue","onUpdate:modelValue","onChange"])])])),_:1})])),_:1},8,["data","height"])],64)}var o=t(83),r=t(3830),i=t(1219),u=t(144),s=t(3169),d=t(7477),c={label:"打洞协议",name:"transports",order:2,components:{Version:s["default"],Delete:d.epd,Plus:d.FWt,Top:d.EjV,Bottom:d.i5o},setup(e){const l=(0,r.B)(),t=(0,u.Kh)({list:l.value.config.Running.Tunnel.Transports.sort(((e,l)=>e.Order-l.Order)),height:(0,n.EW)((()=>l.value.height-127)),bufferSize:l.value.bufferSize});(0,n.wB)((()=>l.value.config.Running.Tunnel.Transports),(()=>{t.list=l.value.config.Running.Tunnel.Transports.sort(((e,l)=>e.Order-l.Order))}));const a=()=>{s(t.list)},s=()=>{t.list=t.list.slice().sort(((e,l)=>e.Order-l.Order)),(0,o.$M)(t.list).then((()=>{i.nk.success("已操作")})).catch((()=>{i.nk.success("操作失败")}))};return{state:t,handleOrderChange:a,handleSave:s}}},p=t(1241);const f=(0,p.A)(c,[["render",a]]);var h=f},5081:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return m}});var n=t(6768),a=t(4232);const o={class:"interface"},r=(0,n.Lk)("span",null,"网络接口 : ",-1);function i(e,l,t,i,u,s){const d=(0,n.g2)("el-option"),c=(0,n.g2)("el-select"),p=(0,n.g2)("Version"),f=(0,n.g2)("el-input"),h=(0,n.g2)("el-table-column"),g=(0,n.g2)("el-switch"),b=(0,n.g2)("Top"),m=(0,n.g2)("el-icon"),v=(0,n.g2)("el-button"),k=(0,n.g2)("Bottom"),y=(0,n.g2)("Delete"),w=(0,n.g2)("el-popconfirm"),C=(0,n.g2)("Plus"),V=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(p,{ckey:"tunnelWanPortProtocols"},{default:(0,n.k6)((()=>[(0,n.Lk)("div",o,[r,(0,n.bF)(c,{modelValue:i.state.interface,"onUpdate:modelValue":l[0]||(l[0]=e=>i.state.interface=e),onChange:i.handleInterfaceChange,placeholder:"Select",size:"small",style:{width:"12rem"}},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(i.state.interfaces,(e=>((0,n.uX)(),(0,n.Wv)(d,{key:e,label:e,value:e},null,8,["label","value"])))),128))])),_:1},8,["modelValue","onChange"])])])),_:1}),(0,n.bF)(V,{data:i.state.list,border:"",size:"small",width:"100%",height:`${i.state.height}px`,onCellDblclick:i.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(h,{prop:"Name",label:"名称"},{default:(0,n.k6)((e=>[e.row.NameEditing?((0,n.uX)(),(0,n.Wv)(f,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":l=>e.row.Name=l,onBlur:l=>i.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,a.v_)(e.row.Name),1)],64))])),_:1}),(0,n.bF)(h,{prop:"ProtocolType",label:"协议",width:"100"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(c,{modelValue:e.row.ProtocolType,"onUpdate:modelValue":l=>e.row.ProtocolType=l,placeholder:"Select",size:"small",onChange:l=>i.handleEditBlur(e.row,"ProtocolType")},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(e.row.Protocols,((e,l)=>((0,n.uX)(),(0,n.Wv)(d,{key:+l,label:e,value:+l},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])])])),_:1}),(0,n.bF)(h,{prop:"Type",label:"类别",width:"100"},{default:(0,n.k6)((e=>[(0,n.bF)(c,{modelValue:e.row.Type,"onUpdate:modelValue":l=>e.row.Type=l,placeholder:"Select",size:"small",onChange:l=>i.handleEditBlur(e.row,"Type")},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(i.state.types,(e=>((0,n.uX)(),(0,n.Wv)(d,{key:e.Value,label:e.Name,value:e.Value},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(h,{prop:"Host",label:"地址"},{default:(0,n.k6)((e=>[e.row.HostEditing?((0,n.uX)(),(0,n.Wv)(f,{key:0,autofocus:"",size:"small",modelValue:e.row.Host,"onUpdate:modelValue":l=>e.row.Host=l,onBlur:l=>i.handleEditBlur(e.row,"Host")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,a.v_)(e.row.Host),1)],64))])),_:1}),(0,n.bF)(h,{property:"Disabled",label:"禁用",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(g,{modelValue:e.row.Disabled,"onUpdate:modelValue":l=>e.row.Disabled=l,onChange:l=>i.handleEditBlur(e.row,"Disabled"),"inline-prompt":"","active-text":"是","inactive-text":"否",style:{"--el-switch-on-color":"red","--el-switch-off-color":"#ddd"}},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(h,{prop:"Sort",label:"调序",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(v,{size:"small",onClick:l=>i.handleSort(e.$index,-1)},{default:(0,n.k6)((()=>[(0,n.bF)(m,null,{default:(0,n.k6)((()=>[(0,n.bF)(b)])),_:1})])),_:2},1032,["onClick"]),(0,n.bF)(v,{size:"small",onClick:l=>i.handleSort(e.$index,1)},{default:(0,n.k6)((()=>[(0,n.bF)(m,null,{default:(0,n.k6)((()=>[(0,n.bF)(k)])),_:1})])),_:2},1032,["onClick"])])])),_:1}),(0,n.bF)(h,{prop:"Oper",label:"操作",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(w,{title:"删除不可逆,是否确认?",onConfirm:l=>i.handleDel(e.$index)},{reference:(0,n.k6)((()=>[(0,n.bF)(v,{type:"danger",size:"small"},{default:(0,n.k6)((()=>[(0,n.bF)(m,null,{default:(0,n.k6)((()=>[(0,n.bF)(y)])),_:1})])),_:1})])),_:2},1032,["onConfirm"]),(0,n.bF)(v,{type:"primary",size:"small",onClick:l=>i.handleAdd(e.$index)},{default:(0,n.k6)((()=>[(0,n.bF)(m,null,{default:(0,n.k6)((()=>[(0,n.bF)(C)])),_:1})])),_:2},1032,["onClick"])])])),_:1})])),_:1},8,["data","height","onCellDblclick"])],64)}var u=t(83),s=t(3830),d=t(1219),c=t(144),p=t(3169),f=t(7477),h={label:"端口服务器",name:"tunnelServers",order:1,components:{Version:p["default"],Delete:f.epd,Plus:f.FWt,Top:f.EjV,Bottom:f.i5o},setup(e){const l=(0,s.B)(),t=(0,c.Kh)({list:l.value.config.Running.Tunnel.Servers.sort(((e,l)=>e.Disabled-l.Disabled)),types:[],height:(0,n.EW)((()=>l.value.height-127)),interfaces:[],interface:l.value.config.Running.Tunnel.Interface});(0,n.wB)((()=>l.value.config.Running.Tunnel.Servers),(()=>{0==t.list.filter((e=>e["__editing"])).length&&(t.list=l.value.config.Running.Tunnel.Servers.sort(((e,l)=>e.Disabled-l.Disabled))),t.interface=l.value.config.Running.Tunnel.Interface})),console.log(t.interface);const a=()=>{(0,u.Vn)().then((e=>{e.splice(0,0,"0.0.0.0"),t.interfaces=e})).catch((()=>{}))},o=()=>{(0,u.S3)(t.interface).then((()=>{})).catch((()=>{}))},r=()=>{(0,u.ix)().then((e=>{t.types=e,i(t.list)}))},i=e=>{e.forEach((e=>{e.Protocols=t.types.filter((l=>l.Value==e.Type))[0].Protocols,e.Protocols[e.ProtocolType]||(e.ProtocolType=+Object.keys(e.Protocols)[0])}))},p=(e,l)=>{f(e,l.property)},f=(e,l)=>{i([e]),t.list.forEach((e=>{e["NameEditing"]=!1,e["TypeEditing"]=!1,e["HostEditing"]=!1,e["ProtocolTypeEditing"]=!1})),e[`${l}Editing`]=!0,e["__editing"]=!0},h=(e,l)=>{i([e]),e[`${l}Editing`]=!1,e["__editing"]=!1,v()},g=e=>{t.list.splice(e,1),v()},b=e=>{if(t.list.filter((e=>""==e.Host||""==e.Name)).length>0)return;const l={Name:"",Host:"",Type:0,Disabled:!1,ProtocolType:2};i([l]),t.list.splice(e+1,0,l),v()},m=(e,l)=>{const n=t.list[e],a=t.list[e+l];n&&a&&(t.list[e+l]=n,t.list[e]=a),v(t.list)},v=()=>{t.list=t.list.slice().sort(((e,l)=>e.Disabled-l.Disabled)),(0,u.b0)(t.list).then((()=>{d.nk.success("已操作")})).catch((()=>{d.nk.success("操作失败")}))};return(0,n.sV)((()=>{r(),a()})),{state:t,handleCellClick:p,handleEditBlur:h,handleDel:g,handleAdd:b,handleSort:m,handleInterfaceChange:o}}},g=t(1241);const b=(0,g.A)(h,[["render",i]]);var m=b},6026:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return g}});var n=t(6768);const a={style:{width:"30rem",padding:"5rem 0",margin:"0 auto"}},o=(0,n.Lk)("p",{class:"t-c"}," 服务器更新密钥 ",-1);function r(e,l,t,r,i,u){const s=(0,n.g2)("Version"),d=(0,n.g2)("el-input");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(s,{ckey:"updater"}),(0,n.Lk)("div",a,[o,(0,n.Lk)("p",null,[(0,n.bF)(d,{type:"password","show-password":"",modelValue:r.state.secretKey,"onUpdate:modelValue":l[0]||(l[0]=e=>r.state.secretKey=e),maxlength:"36",onBlur:r.handleChange},null,8,["modelValue","onBlur"])])])],64)}var i=t(920),u=t(3830),s=t(1219),d=t(144),c=t(3169),p={label:"服务器更新",name:"updater",order:6,components:{Version:c["default"]},setup(e){(0,u.B)();const l=(0,d.Kh)({secretKey:""}),t=()=>{(0,i.yN)().then((e=>{l.secretKey=e}))},a=()=>{l.secretKey&&(0,i.ir)(l.secretKey).then((()=>{s.nk.success("已操作")})).catch((()=>{s.nk.success("操作失败")}))},o=()=>{a()};return(0,n.sV)((()=>{t()})),{state:l,handleChange:o}}},f=t(1241);const h=(0,f.A)(p,[["render",r]]);var g=h},3169:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return k}});var n=t(6768),a=t(4232);const o=e=>((0,n.Qi)("data-v-727cd437"),e=e(),(0,n.jt)(),e),r={class:"running-version-wrap flex"},i=o((()=>(0,n.Lk)("span",null,",配置自动同步,除非",-1))),u=o((()=>(0,n.Lk)("span",{class:"flex-1"},null,-1)));function s(e,l,t,o,s,d){const c=(0,n.g2)("el-checkbox");return(0,n.uX)(),(0,n.CE)("div",r,[(0,n.Lk)("span",null,[(0,n.Lk)("a",{href:"javascript:;",onClick:l[0]||(l[0]=(...e)=>o.handleEdit&&o.handleEdit(...e))},"配置版本 : "+(0,a.v_)(o.version||1),1)]),(0,n.Lk)("div",null,[i,(0,n.bF)(c,{modelValue:o.disableSyncValue,"onUpdate:modelValue":l[1]||(l[1]=e=>o.disableSyncValue=e),onChange:o.handleSync},{default:(0,n.k6)((()=>[(0,n.eW)("关闭自动同步")])),_:1},8,["modelValue","onChange"])]),u,(0,n.RG)(e.$slots,"default",{},void 0,!0)])}var d=t(4);const c=e=>(0,d.zG)("RunningConfig/UpdateVersion",e),p=e=>(0,d.zG)("RunningConfig/UpdateDisableSync",e);var f=t(3830),h=t(2933),g=t(144),b={props:["ckey"],setup(e){const l=(0,f.B)(),t=(0,n.EW)((()=>l.value.config.Running.Versions[e.ckey])),a=(0,n.EW)((()=>l.value.config.Running.DisableSyncs[e.ckey]||!1));(0,n.wB)((()=>a.value),(()=>{o.value=a.value}));const o=(0,g.KR)(a.value),r=()=>{h.s.prompt("输入你要修改到的版本","修改版本",{confirmButtonText:"确定",cancelButtonText:"取消",inputValue:t.value,inputPattern:/\d+/,inputErrorMessage:"Invalid Number"}).then((({value:l})=>{l=+l,isNaN(l)||c({key:e.ckey,version:l})})).catch((()=>{}))},i=()=>{p({key:e.ckey,sync:o.value})};return{version:t,disableSyncValue:o,handleEdit:r,handleSync:i}}},m=t(1241);const v=(0,m.A)(b,[["render",s],["__scopeId","data-v-727cd437"]]);var k=v},2067:function(e,l,t){var n={"./ExcludeIP.vue":4378,"./Index.vue":2820,"./RelayServers.vue":4780,"./SForward.vue":6093,"./SignInServers.vue":1557,"./Transports.vue":1436,"./TunnelServers.vue":5081,"./Updater.vue":6026,"./Version.vue":3169};function a(e){var l=o(e);return t(l)}function o(e){if(!t.o(n,e)){var l=new Error("Cannot find module '"+e+"'");throw l.code="MODULE_NOT_FOUND",l}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=o,e.exports=a,a.id=2067}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/904.a5d7ab42.js b/linker.tray.win/web/js/904.a5d7ab42.js
deleted file mode 100644
index 13f6d846..00000000
--- a/linker.tray.win/web/js/904.a5d7ab42.js
+++ /dev/null
@@ -1 +0,0 @@
-(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[904],{4:function(e,l,t){"use strict";t.d(l,{a1:function(){return m},e3:function(){return k},jH:function(){return w},zG:function(){return v}});t(4114),t(6573),t(8100),t(7936);var n=t(1219);let o=0,a=null,r="",i=1,u="";const s={},d={connected:!1,connecting:!1},c=()=>{const e=Date.now();for(let l in s){const t=s[l];e-t.time>t.timeout&&(t.reject("超时~"),delete s[l])}setTimeout(c,1e3)};c();const p={subs:{},add:function(e,l){"function"==typeof l&&(this.subs[e]||(this.subs[e]=[]),this.subs[e].push(l))},remove(e,l){let t=this.subs[e]||[];for(let n=t.length-1;n>=0;n--)t[n]==l&&t.splice(n,1)},push(e,l){let t=this.subs[e]||[];for(let n=t.length-1;n>=0;n--)t[n](l)}},f=()=>{d.connected=!0,d.connecting=!1,p.push(y,d.connected)},g=e=>{d.connected=!1,d.connecting=!1,p.push(y,d.connected),setTimeout((()=>{m()}),1e3)},h=e=>{if("string"!=typeof e.data)return void e.data.arrayBuffer().then((l=>{const t=new DataView(l).getInt8(),n=new FileReader;n.readAsText(e.data.slice(4,4+t),"utf8"),n.onload=()=>{let o=JSON.parse(n.result);o.Content={Name:o.Content,Img:e.data.slice(4+t,e.data.length),ArrayBuffer:l},b(o)}}));let l=JSON.parse(e.data);b(l)},b=e=>{let l=s[e.RequestId];l?(0==e.Code?l.resolve(e.Content):1==e.Code?l.reject(e.Content):255==e.Code?(l.reject(e.Content),l.errHandle||n.nk.error(`${l.path}:${e.Content}`)):p.push(e.Path,e.Content),delete s[e.RequestId]):p.push(e.Path,e.Content)},m=(e=r,l=u)=>{if(u=l,r=e,d.connecting||d.connected)return;null!=a&&a.close(),d.connecting=!0;const t=l||"snltty";a=new WebSocket(r,[t]),a.iddd=++i,a.onopen=f,a.onclose=g,a.onmessage=h},k=()=>{a&&a.close()},v=(e,l={},t=!1,n=15e3)=>new Promise(((r,i)=>{let u=++o;try{s[u]={resolve:r,reject:i,errHandle:t,path:e,time:Date.now(),timeout:n};let o=JSON.stringify({Path:e,RequestId:u,Content:"string"==typeof l?l:JSON.stringify(l)});d.connected&&1==a.readyState?a.send(o):i("网络错误~")}catch(c){console.log(c),i("网络错误~"),delete s[u]}})),y=Symbol(),w=e=>{p.add(y,e)}},743:function(e,l,t){"use strict";t.d(l,{$U:function(){return i},Ap:function(){return o},Co:function(){return a},DY:function(){return u},Qs:function(){return s},eX:function(){return d},pY:function(){return r}});var n=t(4);const o=()=>(0,n.zG)("sforwardclient/GetSecretKey"),a=e=>(0,n.zG)("sforwardclient/SetSecretKey",e),r=(e="0")=>(0,n.zG)("sforwardclient/get",e),i=e=>(0,n.zG)("sforwardclient/getremote",e),u=e=>(0,n.zG)("sforwardclient/remove",e),s=e=>(0,n.zG)("sforwardclient/add",e),d=()=>(0,n.zG)("sforwardclient/TestLocal")},9299:function(e,l,t){"use strict";t.d(l,{BS:function(){return s},SZ:function(){return r},Se:function(){return d},VN:function(){return i},gC:function(){return c},jU:function(){return a},nD:function(){return u},rd:function(){return o}});var n=t(4);const o=e=>(0,n.zG)("signInclient/set",e),a=e=>(0,n.zG)("signInclient/setservers",e),r=()=>(0,n.zG)("signInclient/info"),i=e=>(0,n.zG)("signInclient/setorder",e),u=e=>(0,n.zG)("signInclient/List",e),s=e=>(0,n.zG)("signInclient/ids",e),d=e=>(0,n.zG)("signInclient/del",e),c=e=>(0,n.zG)("signInclient/setname",e)},83:function(e,l,t){"use strict";t.d(l,{$M:function(){return s},KW:function(){return u},b0:function(){return a},gM:function(){return i},ix:function(){return o},r7:function(){return r},xo:function(){return d}});var n=t(4);const o=()=>(0,n.zG)("tunnel/gettypes"),a=e=>(0,n.zG)("tunnel/SetServers",e),r=(e="0")=>(0,n.zG)("tunnel/get",e),i=()=>(0,n.zG)("tunnel/refresh"),u=e=>(0,n.zG)("tunnel/SetRouteLevel",e),s=e=>(0,n.zG)("tunnel/SetTransports",e),d=e=>(0,n.zG)("tunnel/SetExcludeIPs",e)},920:function(e,l,t){"use strict";t.d(l,{BJ:function(){return d},NS:function(){return r},Vk:function(){return s},aP:function(){return p},ir:function(){return u},lJ:function(){return a},mK:function(){return o},y2:function(){return c},yN:function(){return i}});var n=t(4);const o=(e="0")=>(0,n.zG)("updaterclient/get",e),a=e=>(0,n.zG)("updaterclient/confirm",e),r=e=>(0,n.zG)("updaterclient/exit",e),i=()=>(0,n.zG)("updaterclient/GetSecretKey"),u=e=>(0,n.zG)("updaterclient/SetSecretKey",e),s=()=>(0,n.zG)("updaterclient/getcurrent"),d=()=>(0,n.zG)("updaterclient/getserver"),c=e=>(0,n.zG)("updaterclient/confirmserver",e),p=()=>(0,n.zG)("updaterclient/exitserver")},3830:function(e,l,t){"use strict";t.d(l,{B:function(){return u},v:function(){return i}});var n=t(4),o=t(144),a=t(6768);const r=Symbol(),i=()=>{const e=(0,o.KR)({api:{connected:!1},height:0,config:{Common:{},Client:{Servers:[]},Server:{},Running:{Relay:{Servers:[]},Tuntap:{IP:"",PrefixLength:24},Client:{Servers:[]}},configed:!1},signin:{Connected:!1,Connecting:!1,Version:"v1.0.0.0"},bufferSize:["1KB","2KB","4KB","8KB","16KB","32KB","64KB","128KB","256KB","512KB","1024KB"],updater:{},self:{}});return(0,n.jH)((l=>{e.value.api.connected=l})),(0,a.Gt)(r,e),e},u=()=>(0,a.WQ)(r)},4378:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return h}});var n=t(6768),o=t(4232);function a(e,l,t,a,r,i){const u=(0,n.g2)("Version"),s=(0,n.g2)("el-input"),d=(0,n.g2)("el-table-column"),c=(0,n.g2)("Delete"),p=(0,n.g2)("el-icon"),f=(0,n.g2)("el-button"),g=(0,n.g2)("el-popconfirm"),h=(0,n.g2)("Plus"),b=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(u,{ckey:"excludeIPConfig"}),(0,n.bF)(b,{data:a.state.list,border:"",size:"small",width:"100%",height:`${a.state.height}px`,onCellDblclick:a.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(d,{prop:"IPAddress",label:"IP"},{default:(0,n.k6)((e=>[e.row.IPAddressEditing?((0,n.uX)(),(0,n.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.IPAddress,"onUpdate:modelValue":l=>e.row.IPAddress=l,onBlur:l=>a.handleEditBlur(e.row,"IPAddress")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,o.v_)(e.row.IPAddress),1)],64))])),_:1}),(0,n.bF)(d,{prop:"Mask",label:"掩码"},{default:(0,n.k6)((e=>[e.row.MaskEditing?((0,n.uX)(),(0,n.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Mask,"onUpdate:modelValue":l=>e.row.Mask=l,onBlur:l=>a.handleEditBlur(e.row,"Mask")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,o.v_)(e.row.Mask),1)],64))])),_:1}),(0,n.bF)(d,{prop:"Oper",label:"操作",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(g,{title:"删除不可逆,是否确认?",onConfirm:l=>a.handleDel(e.$index)},{reference:(0,n.k6)((()=>[(0,n.bF)(f,{type:"danger",size:"small"},{default:(0,n.k6)((()=>[(0,n.bF)(p,null,{default:(0,n.k6)((()=>[(0,n.bF)(c)])),_:1})])),_:1})])),_:2},1032,["onConfirm"]),(0,n.bF)(f,{type:"primary",size:"small",onClick:l=>a.handleAdd(e.$index)},{default:(0,n.k6)((()=>[(0,n.bF)(p,null,{default:(0,n.k6)((()=>[(0,n.bF)(h)])),_:1})])),_:2},1032,["onClick"])])])),_:1})])),_:1},8,["data","height","onCellDblclick"])],64)}var r=t(83),i=t(3830),u=t(1219),s=t(144),d=t(8662),c=t(7477),p={label:"打洞排除IP",name:"excludeIP",order:3,components:{Version:d["default"],Delete:c.epd,Plus:c.FWt},setup(e){const l=(0,i.B)(),t=(0,s.Kh)({list:l.value.config.Running.Tunnel.ExcludeIPs||[{IPAddress:"0.0.0.0",Mask:32}],types:[],height:(0,n.EW)((()=>l.value.height-127))}),o=(e,l)=>{a(e,l.property)},a=(e,l)=>{t.list.forEach((e=>{e["IPAddressEditing"]=!1,e["MaskEditing"]=!1})),e[`${l}Editing`]=!0},d=(e,l)=>{e[`${l}Editing`]=!1,f()},c=e=>{t.list.splice(e,1),f()},p=e=>{t.list.splice(e+1,0,{IPAddress:"0.0.0.0",Mask:32}),f()},f=()=>{t.list.forEach((e=>{e.Mask=parseInt(e.Mask)})),(0,r.xo)(t.list).then((()=>{u.nk.success("已操作")})).catch((()=>{u.nk.success("操作失败")}))};return(0,n.sV)((()=>{0==t.list.length&&(t.list=[{IPAddress:"0.0.0.0",Mask:32}])})),{state:t,handleCellClick:o,handleEditBlur:d,handleDel:c,handleAdd:p}}},f=t(1241);const g=(0,f.A)(p,[["render",a]]);var h=g},2820:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return c}});var n=t(6768);const o={class:"servers-wrap"};function a(e,l,t,a,r,i){const u=(0,n.g2)("el-tab-pane"),s=(0,n.g2)("el-tabs");return(0,n.uX)(),(0,n.CE)("div",o,[(0,n.bF)(s,{type:"border-card",style:{width:"100%"},modelValue:a.state.tab,"onUpdate:modelValue":l[0]||(l[0]=e=>a.state.tab=e)},{default:(0,n.k6)((()=>[a.state.connected?((0,n.uX)(!0),(0,n.CE)(n.FK,{key:0},(0,n.pI)(a.settingComponents,((e,l)=>((0,n.uX)(),(0,n.Wv)(u,{key:l,label:e.label,name:e.name},{default:(0,n.k6)((()=>[((0,n.uX)(),(0,n.Wv)((0,n.$y)(e)))])),_:2},1032,["label","name"])))),128)):(0,n.Q3)("",!0)])),_:1},8,["modelValue"])])}var r=t(144),i=t(3830),u={components:{},setup(e){const l=["./Index.vue","./Version.vue"],o=t(2067),a=o.keys().filter((e=>0==l.includes(e))).map((e=>o(e).default)).sort(((e,l)=>e.order-l.order)),u=(0,i.B)(),s=(0,r.Kh)({tab:a[0].name,connected:(0,n.EW)((()=>u.value.api.connected&&u.value.config.configed))});return{state:s,settingComponents:a}}},s=t(1241);const d=(0,s.A)(u,[["render",a],["__scopeId","data-v-40863bc6"]]);var c=d},4780:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return m}});var n=t(6768),o=t(4232);function a(e,l,t,a,r,i){const u=(0,n.g2)("el-radio-button"),s=(0,n.g2)("el-radio-group"),d=(0,n.g2)("Version"),c=(0,n.g2)("el-input"),p=(0,n.g2)("el-table-column"),f=(0,n.g2)("el-option"),g=(0,n.g2)("el-select"),h=(0,n.g2)("el-switch"),b=(0,n.g2)("Top"),m=(0,n.g2)("el-icon"),k=(0,n.g2)("el-button"),v=(0,n.g2)("Bottom"),y=(0,n.g2)("Delete"),w=(0,n.g2)("el-popconfirm"),C=(0,n.g2)("Plus"),F=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(d,{ckey:"relayServers"},{default:(0,n.k6)((()=>[(0,n.Lk)("div",null,[(0,n.bF)(s,{modelValue:a.state.byRelay,"onUpdate:modelValue":l[0]||(l[0]=e=>a.state.byRelay=e),size:"small",style:{"vertical-align":"bottom"},onChange:a.handleByRelayChange},{default:(0,n.k6)((()=>[(0,n.bF)(u,{label:"延迟优先",value:!0}),(0,n.bF)(u,{label:"顺序优先",value:!1})])),_:1},8,["modelValue","onChange"])])])),_:1}),(0,n.bF)(F,{data:a.state.list,border:"",size:"small",width:"100%",height:`${a.state.height}px`,onCellDblclick:a.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(p,{prop:"Name",label:"名称",width:"100"},{default:(0,n.k6)((e=>[e.row.NameEditing?((0,n.uX)(),(0,n.Wv)(c,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":l=>e.row.Name=l,onBlur:l=>a.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,o.v_)(e.row.Name),1)],64))])),_:1}),(0,n.bF)(p,{prop:"RelayType",label:"类别",width:"80"},{default:(0,n.k6)((e=>[(0,n.bF)(g,{modelValue:e.row.RelayType,"onUpdate:modelValue":l=>e.row.RelayType=l,placeholder:"Select",size:"small",onChange:l=>a.handleEditBlur(e.row,"RelayType")},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(a.state.types,(e=>((0,n.uX)(),(0,n.Wv)(f,{key:e.Value,label:e.Name,value:e.Value},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(p,{prop:"Host",label:"地址"},{default:(0,n.k6)((e=>[e.row.HostEditing?((0,n.uX)(),(0,n.Wv)(c,{key:0,autofocus:"",size:"small",modelValue:e.row.Host,"onUpdate:modelValue":l=>e.row.Host=l,onBlur:l=>a.handleEditBlur(e.row,"Host")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.Lk)("span",{class:(0,o.C4)({red:!e.row.Available,green:e.row.Available})},(0,o.v_)(e.row.Host),3),(0,n.Lk)("span",{class:(0,o.C4)({red:-1==e.row.Delay,green:e.row.Delay<500&&e.row.Delay>=0,yellow:e.row.Delay>=500})}," - "+(0,o.v_)(e.row.Delay)+"ms",3)],64))])),_:1}),(0,n.bF)(p,{prop:"SecretKey",label:"秘钥"},{default:(0,n.k6)((e=>[e.row.SecretKeyEditing?((0,n.uX)(),(0,n.Wv)(c,{key:0,type:"password","show-password":"",size:"small",modelValue:e.row.SecretKey,"onUpdate:modelValue":l=>e.row.SecretKey=l,onBlur:l=>a.handleEditBlur(e.row,"SecretKey")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[],64))])),_:1}),(0,n.bF)(p,{property:"SSL",label:"SSL",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(h,{modelValue:e.row.SSL,"onUpdate:modelValue":l=>e.row.SSL=l,onChange:l=>a.handleEditBlur(e.row,"SSL"),"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(p,{property:"Disabled",label:"禁用",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(h,{modelValue:e.row.Disabled,"onUpdate:modelValue":l=>e.row.Disabled=l,onChange:l=>a.handleEditBlur(e.row,"Disabled"),"inline-prompt":"","active-text":"是","inactive-text":"否",style:{"--el-switch-on-color":"red","--el-switch-off-color":"#ddd"}},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(p,{prop:"Sort",label:"调序",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(k,{size:"small",onClick:l=>a.handleSort(e.$index,-1)},{default:(0,n.k6)((()=>[(0,n.bF)(m,null,{default:(0,n.k6)((()=>[(0,n.bF)(b)])),_:1})])),_:2},1032,["onClick"]),(0,n.bF)(k,{size:"small",onClick:l=>a.handleSort(e.$index,1)},{default:(0,n.k6)((()=>[(0,n.bF)(m,null,{default:(0,n.k6)((()=>[(0,n.bF)(v)])),_:1})])),_:2},1032,["onClick"])])])),_:1}),(0,n.bF)(p,{prop:"Oper",label:"操作",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(w,{title:"删除不可逆,是否确认?",onConfirm:l=>a.handleDel(e.$index)},{reference:(0,n.k6)((()=>[(0,n.bF)(k,{type:"danger",size:"small"},{default:(0,n.k6)((()=>[(0,n.bF)(m,null,{default:(0,n.k6)((()=>[(0,n.bF)(y)])),_:1})])),_:1})])),_:2},1032,["onConfirm"]),(0,n.bF)(k,{type:"primary",size:"small",onClick:l=>a.handleAdd(e.$index)},{default:(0,n.k6)((()=>[(0,n.bF)(m,null,{default:(0,n.k6)((()=>[(0,n.bF)(C)])),_:1})])),_:2},1032,["onClick"])])])),_:1})])),_:1},8,["data","height","onCellDblclick"])],64)}var r=t(4);const i=()=>(0,r.zG)("relay/gettypes"),u=e=>(0,r.zG)("relay/SetServers",e);var s=t(3830),d=t(1219),c=t(144),p=t(8662),f=t(7477),g={label:"中继服务器",name:"relayServers",order:4,components:{Version:p["default"],Delete:f.epd,Plus:f.FWt,Top:f.EjV,Bottom:f.i5o},setup(e){const l=(0,s.B)(),t=(0,c.Kh)({list:l.value.config.Running.Relay.Servers.sort(((e,l)=>e.Disabled-l.Disabled)),byRelay:l.value.config.Running.Relay.ByRelay,types:[],height:(0,n.EW)((()=>l.value.height-127))});(0,n.wB)((()=>l.value.config.Running.Relay.Servers),(()=>{0==t.list.filter((e=>e["__editing"])).length&&(t.list=l.value.config.Running.Relay.Servers.sort(((e,l)=>e.Disabled-l.Disabled)),t.byRelay=l.value.config.Running.Relay.ByRelay)}));const o=()=>{i().then((e=>{t.types=e}))},a=(e,l)=>{r(e,l.property)},r=(e,l)=>{t.list.forEach((e=>{e["NameEditing"]=!1,e["RelayTypeEditing"]=!1,e["HostEditing"]=!1,e["SecretKeyEditing"]=!1})),e["__editing"]=!0,e[`${l}Editing`]=!0},p=(e,l)=>{e[`${l}Editing`]=!1,e["__editing"]=!1,m()},f=e=>{t.list.splice(e,1),m()},g=e=>{t.list.filter((e=>""==e.Host||""==e.Name)).length>0||(t.list.splice(e+1,0,{Name:"",Host:"",RelayType:0,SecretKey:"snltty",Disabled:!1}),m())},h=(e,l)=>{const n=t.list[e],o=t.list[e+l];n&&o&&(t.list[e+l]=n,t.list[e]=o),m(t.list)},b=()=>{m()},m=()=>{t.list=t.list.slice().sort(((e,l)=>e.Disabled-l.Disabled)),u({servers:t.list,byRelay:t.byRelay}).then((()=>{d.nk.success("已操作")})).catch((()=>{d.nk.success("操作失败")}))};return(0,n.sV)((()=>{o()})),{state:t,handleCellClick:a,handleEditBlur:p,handleDel:f,handleAdd:g,handleSort:h,handleByRelayChange:b}}},h=t(1241);const b=(0,h.A)(g,[["render",a],["__scopeId","data-v-7981ea4b"]]);var m=b},6093:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return h}});var n=t(6768);const o={style:{width:"30rem",padding:"5rem 0",margin:"0 auto"}},a=(0,n.Lk)("p",{class:"t-c"}," 服务器代理穿透密钥 ",-1);function r(e,l,t,r,i,u){const s=(0,n.g2)("Version"),d=(0,n.g2)("el-input");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(s,{ckey:"sforwardKey"}),(0,n.Lk)("div",o,[a,(0,n.Lk)("p",null,[(0,n.bF)(d,{type:"password","show-password":"",modelValue:r.state.SForwardSecretKey,"onUpdate:modelValue":l[0]||(l[0]=e=>r.state.SForwardSecretKey=e),maxlength:"36",onBlur:r.handleChange},null,8,["modelValue","onBlur"])])])],64)}var i=t(743),u=t(3830),s=t(1219),d=t(144),c=t(8662),p={label:"服务器穿透",name:"sforward",order:5,components:{Version:c["default"]},setup(e){(0,u.B)();const l=(0,d.Kh)({SForwardSecretKey:""}),t=()=>{(0,i.Ap)().then((e=>{l.SForwardSecretKey=e}))},o=()=>{l.SForwardSecretKey&&(0,i.Co)(l.SForwardSecretKey).then((()=>{s.nk.success("已操作")})).catch((()=>{s.nk.success("操作失败")}))},a=()=>{o()};return(0,n.sV)((()=>{t()})),{state:l,handleChange:a}}},f=t(1241);const g=(0,f.A)(p,[["render",r]]);var h=g},1557:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return h}});var n=t(6768),o=t(4232);function a(e,l,t,a,r,i){const u=(0,n.g2)("Version"),s=(0,n.g2)("el-input"),d=(0,n.g2)("el-table-column"),c=(0,n.g2)("Delete"),p=(0,n.g2)("el-icon"),f=(0,n.g2)("el-button"),g=(0,n.g2)("el-popconfirm"),h=(0,n.g2)("Plus"),b=(0,n.g2)("Select"),m=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(u,{ckey:"signServers"}),(0,n.bF)(m,{data:a.state.list,border:"",size:"small",width:"100%",height:`${a.state.height}px`,onCellDblclick:a.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(d,{prop:"Name",label:"名称"},{default:(0,n.k6)((e=>[e.row.NameEditing?((0,n.uX)(),(0,n.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":l=>e.row.Name=l,onBlur:l=>a.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,o.v_)(e.row.Name),1)],64))])),_:1}),(0,n.bF)(d,{prop:"Host",label:"地址"},{default:(0,n.k6)((e=>[e.row.HostEditing?((0,n.uX)(),(0,n.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Host,"onUpdate:modelValue":l=>e.row.Host=l,onBlur:l=>a.handleEditBlur(e.row,"Host")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,o.v_)(e.row.Host),1)],64))])),_:1}),(0,n.bF)(d,{prop:"Oper",label:"操作",width:"150"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(g,{title:"删除不可逆,是否确认?",onConfirm:l=>a.handleDel(e.$index)},{reference:(0,n.k6)((()=>[(0,n.bF)(f,{type:"danger",size:"small"},{default:(0,n.k6)((()=>[(0,n.bF)(p,null,{default:(0,n.k6)((()=>[(0,n.bF)(c)])),_:1})])),_:1})])),_:2},1032,["onConfirm"]),(0,n.bF)(f,{type:"primary",size:"small",onClick:l=>a.handleAdd(e.$index)},{default:(0,n.k6)((()=>[(0,n.bF)(p,null,{default:(0,n.k6)((()=>[(0,n.bF)(h)])),_:1})])),_:2},1032,["onClick"]),a.state.server!=e.row.Host?((0,n.uX)(),(0,n.Wv)(f,{key:0,size:"small",onClick:l=>a.handleUse(e.$index)},{default:(0,n.k6)((()=>[(0,n.bF)(p,null,{default:(0,n.k6)((()=>[(0,n.bF)(b)])),_:1})])),_:2},1032,["onClick"])):(0,n.Q3)("",!0)])])),_:1})])),_:1},8,["data","height","onCellDblclick"])],64)}var r=t(9299),i=t(3830),u=t(1219),s=t(144),d=t(8662),c=t(7477),p={label:"信标服务器",name:"signInServers",order:0,components:{Version:d["default"],Delete:c.epd,Plus:c.FWt,Select:c.l6P},setup(e){const l=(0,i.B)(),t=(0,s.Kh)({list:l.value.config.Running.Client.Servers||[],server:(0,n.EW)((()=>l.value.config.Client.Server)),height:(0,n.EW)((()=>l.value.height-127))});(0,n.wB)((()=>l.value.config.Running.Client.Servers),(()=>{0==t.list.filter((e=>e["__editing"])).length&&(t.list=l.value.config.Running.Client.Servers)}));const o=(e,l)=>{a(e,l.property)},a=(e,l)=>{t.list.forEach((e=>{e["NameEditing"]=!1,e["HostEditing"]=!1})),e[`${l}Editing`]=!0,e["__editing"]=!0},d=(e,l)=>{e[`${l}Editing`]=!1,e["__editing"]=!1,g()},c=e=>{t.list.splice(e,1),g()},p=e=>{t.list.filter((e=>""==e.Host||""==e.Name)).length>0||(t.list.splice(e+1,0,{Name:"",Host:""}),g())},f=e=>{const l=t.list[e];t.list[e]=t.list[0],t.list[0]=l,g()},g=()=>{(0,r.jU)(t.list).then((()=>{u.nk.success("已操作")})).catch((()=>{u.nk.success("操作失败")}))};return{state:t,handleCellClick:o,handleEditBlur:d,handleDel:c,handleAdd:p,handleUse:f}}},f=t(1241);const g=(0,f.A)(p,[["render",a]]);var h=g},1436:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return g}});var n=t(6768);function o(e,l,t,o,a,r){const i=(0,n.g2)("Version"),u=(0,n.g2)("el-table-column"),s=(0,n.g2)("el-option"),d=(0,n.g2)("el-select"),c=(0,n.g2)("el-switch"),p=(0,n.g2)("el-input-number"),f=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(i,{ckey:"tunnelTransports"}),(0,n.bF)(f,{data:o.state.list,border:"",size:"small",width:"100%",height:`${o.state.height}px`},{default:(0,n.k6)((()=>[(0,n.bF)(u,{prop:"Name",label:"名称",width:"120"}),(0,n.bF)(u,{prop:"Label",label:"说明"}),(0,n.bF)(u,{prop:"ProtocolType",label:"协议",width:"60"}),(0,n.bF)(u,{prop:"BufferSize",label:"缓冲区",width:"100"},{default:(0,n.k6)((e=>[(0,n.bF)(d,{modelValue:e.row.BufferSize,"onUpdate:modelValue":l=>e.row.BufferSize=l,placeholder:"Select",size:"small",onChange:o.handleSave},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(o.state.bufferSize,((e,l)=>((0,n.uX)(),(0,n.Wv)(s,{key:l,label:e,value:l},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(u,{property:"Reverse",label:"反向",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(c,{disabled:e.row.DisableReverse,modelValue:e.row.Reverse,"onUpdate:modelValue":l=>e.row.Reverse=l,onChange:o.handleSave,"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(u,{property:"SSL",label:"SSL",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(c,{disabled:e.row.DisableSSL,modelValue:e.row.SSL,"onUpdate:modelValue":l=>e.row.SSL=l,onChange:o.handleSave,"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(u,{property:"Disabled",label:"禁用",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(c,{modelValue:e.row.Disabled,"onUpdate:modelValue":l=>e.row.Disabled=l,onChange:o.handleSave,"inline-prompt":"","active-text":"是","inactive-text":"否",style:{"--el-switch-on-color":"red","--el-switch-off-color":"#ddd"}},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(u,{prop:"Order",label:"调序",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(p,{modelValue:e.row.Order,"onUpdate:modelValue":l=>e.row.Order=l,min:1,max:255,onChange:o.handleOrderChange,size:"small"},null,8,["modelValue","onUpdate:modelValue","onChange"])])])),_:1})])),_:1},8,["data","height"])],64)}var a=t(83),r=t(3830),i=t(1219),u=t(144),s=t(8662),d=t(7477),c={label:"打洞协议",name:"transports",order:2,components:{Version:s["default"],Delete:d.epd,Plus:d.FWt,Top:d.EjV,Bottom:d.i5o},setup(e){const l=(0,r.B)(),t=(0,u.Kh)({list:l.value.config.Running.Tunnel.Transports.sort(((e,l)=>e.Order-l.Order)),height:(0,n.EW)((()=>l.value.height-127)),bufferSize:l.value.bufferSize});(0,n.wB)((()=>l.value.config.Running.Tunnel.Transports),(()=>{t.list=l.value.config.Running.Tunnel.Transports.sort(((e,l)=>e.Order-l.Order))}));const o=()=>{s(t.list)},s=()=>{t.list=t.list.slice().sort(((e,l)=>e.Order-l.Order)),(0,a.$M)(t.list).then((()=>{i.nk.success("已操作")})).catch((()=>{i.nk.success("操作失败")}))};return{state:t,handleOrderChange:o,handleSave:s}}},p=t(1241);const f=(0,p.A)(c,[["render",o]]);var g=f},5178:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return h}});var n=t(6768),o=t(4232);function a(e,l,t,a,r,i){const u=(0,n.g2)("Version"),s=(0,n.g2)("el-input"),d=(0,n.g2)("el-table-column"),c=(0,n.g2)("el-option"),p=(0,n.g2)("el-select"),f=(0,n.g2)("el-switch"),g=(0,n.g2)("Top"),h=(0,n.g2)("el-icon"),b=(0,n.g2)("el-button"),m=(0,n.g2)("Bottom"),k=(0,n.g2)("Delete"),v=(0,n.g2)("el-popconfirm"),y=(0,n.g2)("Plus"),w=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(u,{ckey:"tunnelWanPortProtocols"}),(0,n.bF)(w,{data:a.state.list,border:"",size:"small",width:"100%",height:`${a.state.height}px`,onCellDblclick:a.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(d,{prop:"Name",label:"名称"},{default:(0,n.k6)((e=>[e.row.NameEditing?((0,n.uX)(),(0,n.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":l=>e.row.Name=l,onBlur:l=>a.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,o.v_)(e.row.Name),1)],64))])),_:1}),(0,n.bF)(d,{prop:"ProtocolType",label:"协议",width:"100"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(p,{modelValue:e.row.ProtocolType,"onUpdate:modelValue":l=>e.row.ProtocolType=l,placeholder:"Select",size:"small",onChange:l=>a.handleEditBlur(e.row,"ProtocolType")},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(e.row.Protocols,((e,l)=>((0,n.uX)(),(0,n.Wv)(c,{key:+l,label:e,value:+l},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])])])),_:1}),(0,n.bF)(d,{prop:"Type",label:"类别",width:"100"},{default:(0,n.k6)((e=>[(0,n.bF)(p,{modelValue:e.row.Type,"onUpdate:modelValue":l=>e.row.Type=l,placeholder:"Select",size:"small",onChange:l=>a.handleEditBlur(e.row,"Type")},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(a.state.types,(e=>((0,n.uX)(),(0,n.Wv)(c,{key:e.Value,label:e.Name,value:e.Value},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(d,{prop:"Host",label:"地址"},{default:(0,n.k6)((e=>[e.row.HostEditing?((0,n.uX)(),(0,n.Wv)(s,{key:0,autofocus:"",size:"small",modelValue:e.row.Host,"onUpdate:modelValue":l=>e.row.Host=l,onBlur:l=>a.handleEditBlur(e.row,"Host")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[(0,n.eW)((0,o.v_)(e.row.Host),1)],64))])),_:1}),(0,n.bF)(d,{property:"Disabled",label:"禁用",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(f,{modelValue:e.row.Disabled,"onUpdate:modelValue":l=>e.row.Disabled=l,onChange:l=>a.handleEditBlur(e.row,"Disabled"),"inline-prompt":"","active-text":"是","inactive-text":"否",style:{"--el-switch-on-color":"red","--el-switch-off-color":"#ddd"}},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(d,{prop:"Sort",label:"调序",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(b,{size:"small",onClick:l=>a.handleSort(e.$index,-1)},{default:(0,n.k6)((()=>[(0,n.bF)(h,null,{default:(0,n.k6)((()=>[(0,n.bF)(g)])),_:1})])),_:2},1032,["onClick"]),(0,n.bF)(b,{size:"small",onClick:l=>a.handleSort(e.$index,1)},{default:(0,n.k6)((()=>[(0,n.bF)(h,null,{default:(0,n.k6)((()=>[(0,n.bF)(m)])),_:1})])),_:2},1032,["onClick"])])])),_:1}),(0,n.bF)(d,{prop:"Oper",label:"操作",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(v,{title:"删除不可逆,是否确认?",onConfirm:l=>a.handleDel(e.$index)},{reference:(0,n.k6)((()=>[(0,n.bF)(b,{type:"danger",size:"small"},{default:(0,n.k6)((()=>[(0,n.bF)(h,null,{default:(0,n.k6)((()=>[(0,n.bF)(k)])),_:1})])),_:1})])),_:2},1032,["onConfirm"]),(0,n.bF)(b,{type:"primary",size:"small",onClick:l=>a.handleAdd(e.$index)},{default:(0,n.k6)((()=>[(0,n.bF)(h,null,{default:(0,n.k6)((()=>[(0,n.bF)(y)])),_:1})])),_:2},1032,["onClick"])])])),_:1})])),_:1},8,["data","height","onCellDblclick"])],64)}var r=t(83),i=t(3830),u=t(1219),s=t(144),d=t(8662),c=t(7477),p={label:"端口服务器",name:"tunnelServers",order:1,components:{Version:d["default"],Delete:c.epd,Plus:c.FWt,Top:c.EjV,Bottom:c.i5o},setup(e){const l=(0,i.B)(),t=l.value.config.Running.Tunnel.Servers.sort(((e,l)=>e.Disabled-l.Disabled)),o=(0,s.Kh)({list:t,types:[],height:(0,n.EW)((()=>l.value.height-127))});(0,n.wB)((()=>l.value.config.Running.Tunnel.Servers),(()=>{0==o.list.filter((e=>e["__editing"])).length&&(o.list=l.value.config.Running.Tunnel.Servers.sort(((e,l)=>e.Disabled-l.Disabled)))}));const a=()=>{(0,r.ix)().then((e=>{o.types=e,d(o.list)}))},d=e=>{e.forEach((e=>{e.Protocols=o.types.filter((l=>l.Value==e.Type))[0].Protocols,e.Protocols[e.ProtocolType]||(e.ProtocolType=+Object.keys(e.Protocols)[0])}))},c=(e,l)=>{p(e,l.property)},p=(e,l)=>{d([e]),o.list.forEach((e=>{e["NameEditing"]=!1,e["TypeEditing"]=!1,e["HostEditing"]=!1,e["ProtocolTypeEditing"]=!1})),e[`${l}Editing`]=!0,e["__editing"]=!0},f=(e,l)=>{d([e]),e[`${l}Editing`]=!1,e["__editing"]=!1,m()},g=e=>{o.list.splice(e,1),m()},h=e=>{if(o.list.filter((e=>""==e.Host||""==e.Name)).length>0)return;const l={Name:"",Host:"",Type:0,Disabled:!1,ProtocolType:2};d([l]),o.list.splice(e+1,0,l),m()},b=(e,l)=>{const t=o.list[e],n=o.list[e+l];t&&n&&(o.list[e+l]=t,o.list[e]=n),m(o.list)},m=()=>{o.list=o.list.slice().sort(((e,l)=>e.Disabled-l.Disabled)),(0,r.b0)(o.list).then((()=>{u.nk.success("已操作")})).catch((()=>{u.nk.success("操作失败")}))};return(0,n.sV)((()=>{a()})),{state:o,handleCellClick:c,handleEditBlur:f,handleDel:g,handleAdd:h,handleSort:b}}},f=t(1241);const g=(0,f.A)(p,[["render",a]]);var h=g},6026:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return h}});var n=t(6768);const o={style:{width:"30rem",padding:"5rem 0",margin:"0 auto"}},a=(0,n.Lk)("p",{class:"t-c"}," 服务器更新密钥 ",-1);function r(e,l,t,r,i,u){const s=(0,n.g2)("Version"),d=(0,n.g2)("el-input");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.bF)(s,{ckey:"updater"}),(0,n.Lk)("div",o,[a,(0,n.Lk)("p",null,[(0,n.bF)(d,{type:"password","show-password":"",modelValue:r.state.secretKey,"onUpdate:modelValue":l[0]||(l[0]=e=>r.state.secretKey=e),maxlength:"36",onBlur:r.handleChange},null,8,["modelValue","onBlur"])])])],64)}var i=t(920),u=t(3830),s=t(1219),d=t(144),c=t(8662),p={label:"服务器更新",name:"updater",order:6,components:{Version:c["default"]},setup(e){(0,u.B)();const l=(0,d.Kh)({secretKey:""}),t=()=>{(0,i.yN)().then((e=>{l.secretKey=e}))},o=()=>{l.secretKey&&(0,i.ir)(l.secretKey).then((()=>{s.nk.success("已操作")})).catch((()=>{s.nk.success("操作失败")}))},a=()=>{o()};return(0,n.sV)((()=>{t()})),{state:l,handleChange:a}}},f=t(1241);const g=(0,f.A)(p,[["render",r]]);var h=g},8662:function(e,l,t){"use strict";t.r(l),t.d(l,{default:function(){return m}});var n=t(6768),o=t(4232);const a=e=>((0,n.Qi)("data-v-35014fb5"),e=e(),(0,n.jt)(),e),r={class:"running-version-wrap flex"},i=a((()=>(0,n.Lk)("span",null,"高版本一端自动同步到低版本一端",-1))),u=a((()=>(0,n.Lk)("span",{class:"flex-1"},null,-1)));function s(e,l,t,a,s,d){const c=(0,n.g2)("el-button");return(0,n.uX)(),(0,n.CE)("div",r,[(0,n.Lk)("span",null,"配置版本 : "+(0,o.v_)(a.version||1),1),(0,n.bF)(c,{size:"small",onClick:a.handleEdit},{default:(0,n.k6)((()=>[(0,n.eW)("手动修改版本")])),_:1},8,["onClick"]),i,u,(0,n.RG)(e.$slots,"default",{},void 0,!0)])}var d=t(4);const c=e=>(0,d.zG)("RunningConfig/UpdateVersion",e);var p=t(3830),f=t(2933),g={props:["ckey"],setup(e){const l=(0,p.B)(),t=(0,n.EW)((()=>l.value.config.Running.Versions[e.ckey])),o=()=>{f.s.prompt("输入你要修改到的版本","修改版本",{confirmButtonText:"确定",cancelButtonText:"取消",inputValue:t.value,inputPattern:/\d+/,inputErrorMessage:"Invalid Number"}).then((({value:l})=>{l=+l,isNaN(l)||c({key:e.ckey,version:l})})).catch((()=>{}))};return{version:t,handleEdit:o}}},h=t(1241);const b=(0,h.A)(g,[["render",s],["__scopeId","data-v-35014fb5"]]);var m=b},2067:function(e,l,t){var n={"./ExcludeIP.vue":4378,"./Index.vue":2820,"./RelayServers.vue":4780,"./SForward.vue":6093,"./SignInServers.vue":1557,"./Transports.vue":1436,"./TunnelServers.vue":5178,"./Updater.vue":6026,"./Version.vue":8662};function o(e){var l=a(e);return t(l)}function a(e){if(!t.o(n,e)){var l=new Error("Cannot find module '"+e+"'");throw l.code="MODULE_NOT_FOUND",l}return n[e]}o.keys=function(){return Object.keys(n)},o.resolve=a,e.exports=o,o.id=2067}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/app.af107821.js b/linker.tray.win/web/js/app.7834d995.js
similarity index 74%
rename from linker.tray.win/web/js/app.af107821.js
rename to linker.tray.win/web/js/app.7834d995.js
index 600e5f72..692b53d4 100644
--- a/linker.tray.win/web/js/app.af107821.js
+++ b/linker.tray.win/web/js/app.7834d995.js
@@ -1 +1 @@
-(function(){"use strict";var e={4223:function(e,n,t){var r=t(5130),o=t(6768);function i(e,n,t,r,i,u){const a=(0,o.g2)("router-view");return(0,o.uX)(),(0,o.CE)("div",null,[(0,o.bF)(a)])}var u={setup(e){return{}}},a=t(1241);const c=(0,a.A)(u,[["render",i]]);var l=c,f=t(1387);const s=[{path:"/",name:"Full",component:()=>Promise.all([t.e(193),t.e(801)]).then(t.bind(t,6469)),redirect:"/full/index.html",children:[{path:"/full/index.html",name:"FullIndex",component:()=>Promise.all([t.e(772),t.e(6)]).then(t.bind(t,9927))},{path:"/full/settings.html",name:"FullSettings",component:()=>t.e(904).then(t.bind(t,2820))},{path:"/full/logger.html",name:"FullLogger",component:()=>t.e(295).then(t.bind(t,4295))}]},{path:"/net/index.html",name:"Network",component:()=>Promise.all([t.e(193),t.e(772),t.e(637)]).then(t.bind(t,5837))}],d=(0,f.aE)({history:(0,f.Bt)(),routes:s});var p=d,h=t(6161);t(4188),t(2355),t(1862);const m=(0,r.Ef)(l);m.use(h.A,{size:"default"}).use(p).mount("#app")}},n={};function t(r){var o=n[r];if(void 0!==o)return o.exports;var i=n[r]={exports:{}};return e[r].call(i.exports,i,i.exports,t),i.exports}t.m=e,function(){var e=[];t.O=function(n,r,o,i){if(!r){var u=1/0;for(f=0;f=i)&&Object.keys(t.O).every((function(e){return t.O[e](r[c])}))?r.splice(c--,1):(a=!1,i0&&e[f-1][2]>i;f--)e[f]=e[f-1];e[f]=[r,o,i]}}(),function(){t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,{a:n}),n}}(),function(){t.d=function(e,n){for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce((function(n,r){return t.f[r](e,n),n}),[]))}}(),function(){t.u=function(e){return"js/"+e+"."+{6:"679ab27b",193:"c9be422b",295:"b146a038",637:"a247013e",772:"23955cbb",801:"44f9fcae",904:"a5d7ab42"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{6:"85412b00",295:"0d822e3c",637:"7ba06324",801:"ba70bff7",904:"54641a6b"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)}}(),function(){var e={},n="linker.web:";t.l=function(r,o,i,u){if(e[r])e[r].push(o);else{var a,c;if(void 0!==i)for(var l=document.getElementsByTagName("script"),f=0;fPromise.all([t.e(193),t.e(801)]).then(t.bind(t,6469)),redirect:"/full/index.html",children:[{path:"/full/index.html",name:"FullIndex",component:()=>Promise.all([t.e(772),t.e(6)]).then(t.bind(t,9927))},{path:"/full/settings.html",name:"FullSettings",component:()=>t.e(904).then(t.bind(t,2820))},{path:"/full/logger.html",name:"FullLogger",component:()=>t.e(295).then(t.bind(t,4295))}]},{path:"/net/index.html",name:"Network",component:()=>Promise.all([t.e(193),t.e(772),t.e(637)]).then(t.bind(t,5837))}],s=(0,l.aE)({history:(0,l.Bt)(),routes:d});var p=s,h=t(6161);t(4188),t(2355),t(1862);const m=(0,r.Ef)(f);m.use(h.A,{size:"default"}).use(p).mount("#app")}},n={};function t(r){var o=n[r];if(void 0!==o)return o.exports;var i=n[r]={exports:{}};return e[r].call(i.exports,i,i.exports,t),i.exports}t.m=e,function(){var e=[];t.O=function(n,r,o,i){if(!r){var u=1/0;for(l=0;l=i)&&Object.keys(t.O).every((function(e){return t.O[e](r[c])}))?r.splice(c--,1):(a=!1,i0&&e[l-1][2]>i;l--)e[l]=e[l-1];e[l]=[r,o,i]}}(),function(){t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,{a:n}),n}}(),function(){t.d=function(e,n){for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce((function(n,r){return t.f[r](e,n),n}),[]))}}(),function(){t.u=function(e){return"js/"+e+"."+{6:"5e75d5f5",193:"4d660997",295:"f6737890",637:"a247013e",772:"23955cbb",801:"44f9fcae",904:"762122de"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{6:"85412b00",295:"0d822e3c",637:"7ba06324",801:"ba70bff7",904:"1c23cc4a"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)}}(),function(){var e={},n="linker.web:";t.l=function(r,o,i,u){if(e[r])e[r].push(o);else{var a,c;if(void 0!==i)for(var f=document.getElementsByTagName("script"),l=0;l{
- //有NAT
new IPEndPoint(tunnelTransportInfo.Remote.Remote.Address,tunnelTransportInfo.Remote.Remote.Port),
- new IPEndPoint(tunnelTransportInfo.Remote.Remote.Address,tunnelTransportInfo.Remote.Remote.Port+1),
- //无NAT
- new IPEndPoint(tunnelTransportInfo.Remote.Remote.Address,tunnelTransportInfo.Remote.Local.Port),
+ new IPEndPoint(tunnelTransportInfo.Remote.Remote.Address,tunnelTransportInfo.Remote.Remote.Port+1)
});
//再尝试IPV6
foreach (IPAddress item in tunnelTransportInfo.Remote.LocalIps.Where(c => c.AddressFamily == AddressFamily.InterNetworkV6))
diff --git a/linker.tunnel/wanport/ITunnelWanPortProtocol.cs b/linker.tunnel/wanport/ITunnelWanPortProtocol.cs
index 5c037626..6f3c9067 100644
--- a/linker.tunnel/wanport/ITunnelWanPortProtocol.cs
+++ b/linker.tunnel/wanport/ITunnelWanPortProtocol.cs
@@ -13,9 +13,10 @@ namespace linker.tunnel.wanport
///
/// 获取外网端口
///
- /// 服务端
+ /// 本地网卡
+ /// 服务器
///
- public Task GetAsync(IPEndPoint server);
+ public Task GetAsync(IPAddress inter,IPEndPoint server);
}
public sealed class TunnelWanPortEndPoint
@@ -40,7 +41,11 @@ namespace linker.tunnel.wanport
/// 协议类别
///
public TunnelWanPortType Type { get; set; }
+ ///
+ /// 协议
+ ///
public TunnelWanPortProtocolType ProtocolType { get; set; } = TunnelWanPortProtocolType.Udp;
+
///
/// 地址
///
diff --git a/linker.tunnel/wanport/TunnelWanPortProtocolLinker.cs b/linker.tunnel/wanport/TunnelWanPortProtocolLinker.cs
index 41b0d615..c09e14c1 100644
--- a/linker.tunnel/wanport/TunnelWanPortProtocolLinker.cs
+++ b/linker.tunnel/wanport/TunnelWanPortProtocolLinker.cs
@@ -17,9 +17,10 @@ namespace linker.tunnel.wanport
}
- public async Task GetAsync(IPEndPoint server)
+ public async Task GetAsync(IPAddress localIP, IPEndPoint server)
{
UdpClient udpClient = new UdpClient(AddressFamily.InterNetwork);
+ udpClient.Client.Bind(new IPEndPoint(localIP, 0));
udpClient.Client.Reuse();
udpClient.Client.WindowsUdpBug();
@@ -69,12 +70,13 @@ namespace linker.tunnel.wanport
}
- public async Task GetAsync(IPEndPoint server)
+ public async Task GetAsync(IPAddress localIP, IPEndPoint server)
{
byte[] buffer = ArrayPool.Shared.Rent(20);
try
{
Socket socket = new Socket(server.AddressFamily, SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp);
+ socket.Bind(new IPEndPoint(localIP, 0));
socket.Reuse(true);
await socket.ConnectAsync(server).ConfigureAwait(false);
await socket.SendAsync(new byte[] { 0 });
diff --git a/linker.tunnel/wanport/TunnelWanPortProtocolStun.cs b/linker.tunnel/wanport/TunnelWanPortProtocolStun.cs
index 58bced4c..75922b7a 100644
--- a/linker.tunnel/wanport/TunnelWanPortProtocolStun.cs
+++ b/linker.tunnel/wanport/TunnelWanPortProtocolStun.cs
@@ -16,9 +16,10 @@ namespace linker.tunnel.wanport
{
}
- public async Task GetAsync(IPEndPoint server)
+ public async Task GetAsync(IPAddress localIP, IPEndPoint server)
{
UdpClient udpClient = new UdpClient(AddressFamily.InterNetwork);
+ udpClient.Client.Bind(new IPEndPoint(localIP,0));
udpClient.Client.Reuse();
udpClient.Client.WindowsUdpBug();
try
diff --git a/linker.tunnel/wanport/TunnelWanPortTransfer.cs b/linker.tunnel/wanport/TunnelWanPortTransfer.cs
index 48f1afb0..4560ecbc 100644
--- a/linker.tunnel/wanport/TunnelWanPortTransfer.cs
+++ b/linker.tunnel/wanport/TunnelWanPortTransfer.cs
@@ -53,7 +53,7 @@ namespace linker.tunnel.wanport
LoggerHelper.Instance.Debug($"get domain ip {info.Host}");
IPEndPoint server = NetworkHelper.GetEndPoint(info.Host, 3478);
if (server == null) return null;
- TunnelWanPortEndPoint wanPort = await tunnelWanPort.GetAsync(server).ConfigureAwait(false);
+ TunnelWanPortEndPoint wanPort = await tunnelWanPort.GetAsync(localIP, server).ConfigureAwait(false);
if (wanPort != null)
{
wanPort.Local.Address = localIP;
diff --git a/linker.web/src/apis/tunnel.js b/linker.web/src/apis/tunnel.js
index 0d2decab..90ce4aee 100644
--- a/linker.web/src/apis/tunnel.js
+++ b/linker.web/src/apis/tunnel.js
@@ -30,4 +30,11 @@ export const getTunnelExcludeIPs = () => {
}
export const setTunnelExcludeIPs = (data) => {
return sendWebsocketMsg('tunnel/SetExcludeIPs', data);
+}
+
+export const getInterfaces = () => {
+ return sendWebsocketMsg('tunnel/GeInterfaces');
+}
+export const setInterface = (ip) => {
+ return sendWebsocketMsg('tunnel/SetInterface', ip);
}
\ No newline at end of file
diff --git a/linker.web/src/views/full/settings/TunnelServers.vue b/linker.web/src/views/full/settings/TunnelServers.vue
index b0c5492d..abafbd28 100644
--- a/linker.web/src/views/full/settings/TunnelServers.vue
+++ b/linker.web/src/views/full/settings/TunnelServers.vue
@@ -1,5 +1,16 @@
-
+
+
+ 网络接口 :
+
+
+
+
+
@@ -75,7 +86,7 @@
\ No newline at end of file
diff --git a/linker.web/src/views/full/settings/Version.vue b/linker.web/src/views/full/settings/Version.vue
index 0bdd12bb..d6add0fd 100644
--- a/linker.web/src/views/full/settings/Version.vue
+++ b/linker.web/src/views/full/settings/Version.vue
@@ -1,10 +1,8 @@
@@ -54,9 +52,9 @@ export default {
\ No newline at end of file
diff --git a/linker/plugins/tunnel/TunnelAdapter.cs b/linker/plugins/tunnel/TunnelAdapter.cs
index 37dafcd4..551ea0c0 100644
--- a/linker/plugins/tunnel/TunnelAdapter.cs
+++ b/linker/plugins/tunnel/TunnelAdapter.cs
@@ -17,7 +17,9 @@ namespace linker.plugins.tunnel
{
public sealed class TunnelAdapter : ITunnelAdapter
{
- public IPAddress LocalIP => clientSignInState.Connection?.LocalAddress.Address ?? IPAddress.Any;
+ public IPAddress LocalIP => running.Data.Tunnel.Interface != null && running.Data.Tunnel.Interface.Equals(IPAddress.Any) == false
+ ? (clientSignInState.Connection?.LocalAddress.Address ?? IPAddress.Any) : running.Data.Tunnel.Interface;
+
public X509Certificate2 Certificate { get; private set; }
public PortMapInfo PortMap => new PortMapInfo { WanPort = running.Data.Tunnel.PortMapWan, LanPort = running.Data.Tunnel.PortMapLan };
diff --git a/linker/plugins/tunnel/TunnelApiController.cs b/linker/plugins/tunnel/TunnelApiController.cs
index 6d9b0373..c5d6aa7b 100644
--- a/linker/plugins/tunnel/TunnelApiController.cs
+++ b/linker/plugins/tunnel/TunnelApiController.cs
@@ -12,6 +12,8 @@ using linker.plugins.client;
using linker.plugins.capi;
using linker.plugins.messenger;
using linker.plugins.tunnel.excludeip;
+using System.Net;
+using linker.libs;
namespace linker.plugins.tunnel
{
@@ -147,6 +149,28 @@ namespace linker.plugins.tunnel
public ulong HashCode { get; set; }
}
+ ///
+ /// 获取网卡接口列表
+ ///
+ ///
+ ///
+ public IPAddress[] GeInterfaces(ApiControllerParamsInfo param)
+ {
+ return NetworkHelper.GetIPV4();
+ }
+ ///
+ /// 设置网卡接口
+ ///
+ ///
+ ///
+ public bool SetInterface(ApiControllerParamsInfo param)
+ {
+ IPAddress ip = IPAddress.Parse(param.Content);
+
+ tunnelConfigTransfer.SetInterface(ip);
+
+ return true;
+ }
}
}
diff --git a/linker/plugins/tunnel/TunnelConfigTransfer.cs b/linker/plugins/tunnel/TunnelConfigTransfer.cs
index 8d70fff1..f0656d93 100644
--- a/linker/plugins/tunnel/TunnelConfigTransfer.cs
+++ b/linker/plugins/tunnel/TunnelConfigTransfer.cs
@@ -9,6 +9,7 @@ using linker.tunnel.transport;
using linker.tunnel.wanport;
using MemoryPack;
using System.Collections.Concurrent;
+using System.Net;
using System.Net.Quic;
namespace linker.plugins.tunnel
@@ -154,6 +155,12 @@ namespace linker.plugins.tunnel
}
+ public void SetInterface(IPAddress ip)
+ {
+ running.Data.Tunnel.Interface = ip;
+ running.Data.Update();
+ }
+
private void TestQuic()
{
if (OperatingSystem.IsWindows())
diff --git a/linker/plugins/tunnel/config/Config.cs b/linker/plugins/tunnel/config/Config.cs
index 0d7a751f..cf2babfb 100644
--- a/linker/plugins/tunnel/config/Config.cs
+++ b/linker/plugins/tunnel/config/Config.cs
@@ -41,6 +41,9 @@ namespace linker.client.config
public int PortMapWan { get; set; }
public int PortMapLan { get; set; }
+
+
+ public IPAddress Interface { get; set; } = IPAddress.Any;
}
[MemoryPackable]
diff --git a/version.txt b/version.txt
index 89e5598c..2c72774c 100644
--- a/version.txt
+++ b/version.txt
@@ -1,3 +1,3 @@
v1.2.9
-2024-09-03 11:52:36
+2024-09-03 16:23:17
1. 选择是否自动同步配置文件
\ No newline at end of file