From 30ce4d80363d776440d095191dda69cd10d43770 Mon Sep 17 00:00:00 2001
From: snltty <1069410172@qq.com>
Date: Fri, 27 Sep 2024 23:09:38 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E9=87=8F=E7=BB=9F=E8=AE=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 11 +-
.../1\343\200\201\351\246\226\351\241\265.md" | 2 +-
linker.tray.win/default.aproj | 2 +-
linker.tray.win/dist/linker.tray.win.exe | Bin 5897728 -> 5916672 bytes
linker.tray.win/web/css/236.d0ca6aff.css | 1 -
.../css/{93.438d6c06.css => 273.ded798c5.css} | 2 +-
linker.tray.win/web/css/331.a113c587.css | 1 +
linker.tray.win/web/css/410.38d3acb3.css | 1 -
linker.tray.win/web/css/854.d119409c.css | 1 +
linker.tray.win/web/index.html | 2 +-
linker.tray.win/web/js/146.058e2ce5.js | 1 +
linker.tray.win/web/js/146.a8ead265.js | 1 -
linker.tray.win/web/js/201.7528665b.js | 1 +
linker.tray.win/web/js/201.ab852fbb.js | 1 -
linker.tray.win/web/js/23.b02ef879.js | 1 +
linker.tray.win/web/js/236.a9f9a057.js | 1 -
linker.tray.win/web/js/273.059a1d98.js | 1 +
.../js/{410.d6dc23c6.js => 331.2960524f.js} | 2 +-
linker.tray.win/web/js/50.6f5d837b.js | 1 -
linker.tray.win/web/js/706.0b74d7ba.js | 1 -
linker.tray.win/web/js/706.e2de02b0.js | 1 +
linker.tray.win/web/js/723.1046dd09.js | 1 -
linker.tray.win/web/js/854.92d92203.js | 1 +
linker.tray.win/web/js/93.9e9f6928.js | 1 -
linker.tray.win/web/js/app.25ce9fdc.js | 1 +
linker.tray.win/web/js/app.9462e94d.js | 1 -
linker.web/src/apis/flow.js | 3 +
linker.web/src/views/full/status/Index.vue | 2 +-
.../status/{Server.vue => server/Index.vue} | 0
.../full/status/{ => server}/ServerConfig.vue | 0
.../full/status/{ => server}/ServerFlow.vue | 18 +-
.../{ => server}/ServerFlowMessenger.vue | 0
.../full/status/server/ServerFlowRelay.vue | 150 ++++++++++++++++
.../{ => server}/ServerFlowSForward.vue | 65 +++----
.../status/{ => server}/ServerVersion.vue | 6 +-
linker/plugins/client/config/Config.cs | 6 +
.../plugins/flow/FlowClientApiController.cs | 18 ++
.../plugins/flow/messenger/FlowMessenger.cs | 13 +-
linker/plugins/relay/RelayFlow.cs | 170 ++++++++++++++++++
linker/plugins/relay/RelayResolver.cs | 40 +++--
linker/plugins/relay/RelayStartup.cs | 5 +-
.../plugins/relay/messenger/RelayMessenger.cs | 2 +-
linker/plugins/sforward/proxy/SForwardFlow.cs | 30 ++--
.../plugins/updater/UpdaterClientTransfer.cs | 2 +-
version.txt | 2 +-
45 files changed, 463 insertions(+), 109 deletions(-)
delete mode 100644 linker.tray.win/web/css/236.d0ca6aff.css
rename linker.tray.win/web/css/{93.438d6c06.css => 273.ded798c5.css} (90%)
create mode 100644 linker.tray.win/web/css/331.a113c587.css
delete mode 100644 linker.tray.win/web/css/410.38d3acb3.css
create mode 100644 linker.tray.win/web/css/854.d119409c.css
create mode 100644 linker.tray.win/web/js/146.058e2ce5.js
delete mode 100644 linker.tray.win/web/js/146.a8ead265.js
create mode 100644 linker.tray.win/web/js/201.7528665b.js
delete mode 100644 linker.tray.win/web/js/201.ab852fbb.js
create mode 100644 linker.tray.win/web/js/23.b02ef879.js
delete mode 100644 linker.tray.win/web/js/236.a9f9a057.js
create mode 100644 linker.tray.win/web/js/273.059a1d98.js
rename linker.tray.win/web/js/{410.d6dc23c6.js => 331.2960524f.js} (50%)
delete mode 100644 linker.tray.win/web/js/50.6f5d837b.js
delete mode 100644 linker.tray.win/web/js/706.0b74d7ba.js
create mode 100644 linker.tray.win/web/js/706.e2de02b0.js
delete mode 100644 linker.tray.win/web/js/723.1046dd09.js
create mode 100644 linker.tray.win/web/js/854.92d92203.js
delete mode 100644 linker.tray.win/web/js/93.9e9f6928.js
create mode 100644 linker.tray.win/web/js/app.25ce9fdc.js
delete mode 100644 linker.tray.win/web/js/app.9462e94d.js
rename linker.web/src/views/full/status/{Server.vue => server/Index.vue} (100%)
rename linker.web/src/views/full/status/{ => server}/ServerConfig.vue (100%)
rename linker.web/src/views/full/status/{ => server}/ServerFlow.vue (87%)
rename linker.web/src/views/full/status/{ => server}/ServerFlowMessenger.vue (100%)
create mode 100644 linker.web/src/views/full/status/server/ServerFlowRelay.vue
rename linker.web/src/views/full/status/{ => server}/ServerFlowSForward.vue (66%)
rename linker.web/src/views/full/status/{ => server}/ServerVersion.vue (99%)
create mode 100644 linker/plugins/relay/RelayFlow.cs
diff --git a/README.md b/README.md
index 33932f73..f331b222 100644
--- a/README.md
+++ b/README.md
@@ -36,16 +36,7 @@
- [x] 服务器穿透,在服务器注册端口或域名,通过访问服务器端口或域名,访问内网服务
- [x] 权限管理,主客户端拥有完全权限,可导出、配置子客户端配置,分配其管理权限
- [x] 自定义验证,通过`HTTP POST`让你可以自定义认证是否允许`连接信标`,`中继`,`内网穿透`
-
-## 打洞理论
-
-除了`NAT4+NAT4`理论上都能通,但是也有例外,路由器可能有特殊限制,比如`SYN out, SYN in`和`ICMP Time Exceeded`
-| | NAT1
(Full Cone) | NAT2
(Address-Restricted Cone) | NAT3
(Port-Restricted Cone) | NAT4
(Symmetric) |
-| ---- | ---- | ---- | ---- | ---- |
-| NAT1 (全锥型) | √ | √ | √ | √ |
-| NAT2 (IP限制锥型) | √ | √ | √ | √ |
-| NAT3 (IP+端口限制锥型) | √ | √ | √ | √ |
-| NAT4 (对称型) | √ | √ | √ | × |
+- [x] 流量统计,统计服务器`信标`、`中继`、`内网穿透` 的流量情况
## 界面预览
diff --git "a/linker.doc.web/docs/1\343\200\201\351\246\226\351\241\265.md" "b/linker.doc.web/docs/1\343\200\201\351\246\226\351\241\265.md"
index 77650478..500b8195 100644
--- "a/linker.doc.web/docs/1\343\200\201\351\246\226\351\241\265.md"
+++ "b/linker.doc.web/docs/1\343\200\201\351\246\226\351\241\265.md"
@@ -18,7 +18,7 @@ sidebar_position: 1
- [x] 服务器穿透,在服务器注册端口或域名,通过访问服务器端口或域名,访问内网服务
- [x] 权限管理,主客户端拥有完全权限,可导出、配置子客户端配置,分配其管理权限
- [x] 自定义验证,通过`HTTP POST`让你可以自定义认证是否允许`连接信标`,`中继`,`内网穿透`
-
+- [x] 流量统计,统计服务器`信标`、`中继`、`内网穿透` 的流量情况
#### 1.2、加入组织
你可以加入QQ群:1121552990
diff --git a/linker.tray.win/default.aproj b/linker.tray.win/default.aproj
index a475ec2d..a100e3df 100644
--- a/linker.tray.win/default.aproj
+++ b/linker.tray.win/default.aproj
@@ -1,5 +1,5 @@
-
+
diff --git a/linker.tray.win/dist/linker.tray.win.exe b/linker.tray.win/dist/linker.tray.win.exe
index 65d3301ed2569ed464ff7d4fbeccc925a8420fb1..b45d35e178b46a7f6419ac28f653a4a27481d723 100644
GIT binary patch
delta 40905
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
W%uJZp_x_n>XY|OEpD(*R_5T4Q9C4KZ
delta 32324
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
OvgP-|{bl;{%llinker.web
\ No newline at end of file
+linker.web
\ No newline at end of file
diff --git a/linker.tray.win/web/js/146.058e2ce5.js b/linker.tray.win/web/js/146.058e2ce5.js
new file mode 100644
index 00000000..0665648e
--- /dev/null
+++ b/linker.tray.win/web/js/146.058e2ce5.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[146],{83:function(e,l,t){t.d(l,{$M:function(){return i},KW:function(){return d},S3:function(){return p},Vn:function(){return s},b0:function(){return r},gM:function(){return u},ix:function(){return a},r7:function(){return o}});var n=t(4);const a=()=>(0,n.zG)("tunnel/gettypes"),r=e=>(0,n.zG)("tunnel/SetServers",e),o=(e="0")=>(0,n.zG)("tunnel/get",e),u=()=>(0,n.zG)("tunnel/refresh"),d=e=>(0,n.zG)("tunnel/SetRouteLevel",e),i=e=>(0,n.zG)("tunnel/SetTransports",e),s=()=>(0,n.zG)("tunnel/GeInterfaces"),p=e=>(0,n.zG)("tunnel/SetInterface",e)},8146:function(e,l,t){t.r(l),t.d(l,{default:function(){return b}});var n=t(6768);const a={class:"transport-wrap"};function r(e,l,t,r,o,u){const d=(0,n.g2)("el-table-column"),i=(0,n.g2)("el-option"),s=(0,n.g2)("el-select"),p=(0,n.g2)("el-switch"),c=(0,n.g2)("el-input-number"),h=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.CE)("div",a,[(0,n.bF)(h,{data:r.state.list,border:"",size:"small",width:"100%",height:`${r.state.height}px`},{default:(0,n.k6)((()=>[(0,n.bF)(d,{prop:"Name",label:"名称",width:"120"}),(0,n.bF)(d,{prop:"Label",label:"说明"}),(0,n.bF)(d,{prop:"ProtocolType",label:"协议",width:"60"}),(0,n.bF)(d,{prop:"BufferSize",label:"缓冲区",width:"100"},{default:(0,n.k6)((e=>[(0,n.bF)(s,{modelValue:e.row.BufferSize,"onUpdate:modelValue":l=>e.row.BufferSize=l,placeholder:"Select",size:"small",onChange:r.handleSave},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(r.state.bufferSize,((e,l)=>((0,n.uX)(),(0,n.Wv)(i,{key:l,label:e,value:l},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(d,{property:"Reverse",label:"反向",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(p,{disabled:e.row.DisableReverse,modelValue:e.row.Reverse,"onUpdate:modelValue":l=>e.row.Reverse=l,onChange:r.handleSave,"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(d,{property:"SSL",label:"SSL",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(p,{disabled:e.row.DisableSSL,modelValue:e.row.SSL,"onUpdate:modelValue":l=>e.row.SSL=l,onChange:r.handleSave,"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(d,{property:"Disabled",label:"禁用",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(p,{modelValue:e.row.Disabled,"onUpdate:modelValue":l=>e.row.Disabled=l,onChange:r.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)(d,{prop:"Order",label:"调序",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(c,{modelValue:e.row.Order,"onUpdate:modelValue":l=>e.row.Order=l,min:1,max:255,onChange:r.handleOrderChange,size:"small"},null,8,["modelValue","onUpdate:modelValue","onChange"])])])),_:1})])),_:1},8,["data","height"])])}var o=t(83),u=t(3830),d=t(1219),i=t(144),s=t(7477),p={label:"打洞协议",name:"transports",order:2,components:{Delete:s.epd,Plus:s.FWt,Top:s.EjV,Bottom:s.i5o},setup(e){const l=(0,u.B)(),t=(0,i.Kh)({list:l.value.config.Client.Tunnel.Transports.sort(((e,l)=>e.Order-l.Order)),height:(0,n.EW)((()=>l.value.height-20)),bufferSize:l.value.bufferSize});(0,n.wB)((()=>l.value.config.Client.Tunnel.Transports),(()=>{t.list=l.value.config.Client.Tunnel.Transports.sort(((e,l)=>e.Order-l.Order))}));const a=()=>{r(t.list)},r=()=>{t.list=t.list.slice().sort(((e,l)=>e.Order-l.Order)),(0,o.$M)(t.list).then((()=>{d.nk.success("已操作")})).catch((()=>{d.nk.error("操作失败")}))};return{state:t,handleOrderChange:a,handleSave:r}}},c=t(1241);const h=(0,c.A)(p,[["render",r],["__scopeId","data-v-535dd390"]]);var b=h}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/146.a8ead265.js b/linker.tray.win/web/js/146.a8ead265.js
deleted file mode 100644
index def0431a..00000000
--- a/linker.tray.win/web/js/146.a8ead265.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[146],{83:function(e,l,t){t.d(l,{$M:function(){return i},KW:function(){return d},S3:function(){return p},Vn:function(){return s},b0:function(){return r},gM:function(){return u},ix:function(){return a},r7:function(){return o},zp:function(){return c}});var n=t(4);const a=()=>(0,n.zG)("tunnel/gettypes"),r=e=>(0,n.zG)("tunnel/SetServers",e),o=(e="0")=>(0,n.zG)("tunnel/get",e),u=()=>(0,n.zG)("tunnel/refresh"),d=e=>(0,n.zG)("tunnel/SetRouteLevel",e),i=e=>(0,n.zG)("tunnel/SetTransports",e),s=()=>(0,n.zG)("tunnel/GeInterfaces"),p=e=>(0,n.zG)("tunnel/SetInterface",e),c=()=>(0,n.zG)("tunnel/Records")},8146:function(e,l,t){t.r(l),t.d(l,{default:function(){return b}});var n=t(6768);const a={class:"transport-wrap"};function r(e,l,t,r,o,u){const d=(0,n.g2)("el-table-column"),i=(0,n.g2)("el-option"),s=(0,n.g2)("el-select"),p=(0,n.g2)("el-switch"),c=(0,n.g2)("el-input-number"),h=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.CE)("div",a,[(0,n.bF)(h,{data:r.state.list,border:"",size:"small",width:"100%",height:`${r.state.height}px`},{default:(0,n.k6)((()=>[(0,n.bF)(d,{prop:"Name",label:"名称",width:"120"}),(0,n.bF)(d,{prop:"Label",label:"说明"}),(0,n.bF)(d,{prop:"ProtocolType",label:"协议",width:"60"}),(0,n.bF)(d,{prop:"BufferSize",label:"缓冲区",width:"100"},{default:(0,n.k6)((e=>[(0,n.bF)(s,{modelValue:e.row.BufferSize,"onUpdate:modelValue":l=>e.row.BufferSize=l,placeholder:"Select",size:"small",onChange:r.handleSave},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(r.state.bufferSize,((e,l)=>((0,n.uX)(),(0,n.Wv)(i,{key:l,label:e,value:l},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(d,{property:"Reverse",label:"反向",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(p,{disabled:e.row.DisableReverse,modelValue:e.row.Reverse,"onUpdate:modelValue":l=>e.row.Reverse=l,onChange:r.handleSave,"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(d,{property:"SSL",label:"SSL",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(p,{disabled:e.row.DisableSSL,modelValue:e.row.SSL,"onUpdate:modelValue":l=>e.row.SSL=l,onChange:r.handleSave,"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(d,{property:"Disabled",label:"禁用",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(p,{modelValue:e.row.Disabled,"onUpdate:modelValue":l=>e.row.Disabled=l,onChange:r.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)(d,{prop:"Order",label:"调序",width:"104",fixed:"right"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(c,{modelValue:e.row.Order,"onUpdate:modelValue":l=>e.row.Order=l,min:1,max:255,onChange:r.handleOrderChange,size:"small"},null,8,["modelValue","onUpdate:modelValue","onChange"])])])),_:1})])),_:1},8,["data","height"])])}var o=t(83),u=t(3830),d=t(1219),i=t(144),s=t(7477),p={label:"打洞协议",name:"transports",order:2,components:{Delete:s.epd,Plus:s.FWt,Top:s.EjV,Bottom:s.i5o},setup(e){const l=(0,u.B)(),t=(0,i.Kh)({list:l.value.config.Client.Tunnel.Transports.sort(((e,l)=>e.Order-l.Order)),height:(0,n.EW)((()=>l.value.height-20)),bufferSize:l.value.bufferSize});(0,n.wB)((()=>l.value.config.Client.Tunnel.Transports),(()=>{t.list=l.value.config.Client.Tunnel.Transports.sort(((e,l)=>e.Order-l.Order))}));const a=()=>{r(t.list)},r=()=>{t.list=t.list.slice().sort(((e,l)=>e.Order-l.Order)),(0,o.$M)(t.list).then((()=>{d.nk.success("已操作")})).catch((()=>{d.nk.error("操作失败")}))};return{state:t,handleOrderChange:a,handleSave:r}}},c=t(1241);const h=(0,c.A)(p,[["render",r],["__scopeId","data-v-535dd390"]]);var b=h}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/201.7528665b.js b/linker.tray.win/web/js/201.7528665b.js
new file mode 100644
index 00000000..8abaab8a
--- /dev/null
+++ b/linker.tray.win/web/js/201.7528665b.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[201],{5241:function(e,t,n){n.d(t,{Jd:function(){return d},PR:function(){return u},Yh:function(){return o},ac:function(){return r},en:function(){return c},kl:function(){return a},vB:function(){return s},zi:function(){return l}});var i=n(4);const a=(e="0")=>(0,i.zG)("tuntapclient/connections",e),s=e=>(0,i.zG)("tuntapclient/removeconnection",e),l=(e="0")=>(0,i.zG)("tuntapclient/get",e),c=e=>(0,i.zG)("tuntapclient/run",e),u=e=>(0,i.zG)("tuntapclient/stop",e),r=e=>(0,i.zG)("tuntapclient/update",e),o=()=>(0,i.zG)("tuntapclient/refresh"),d=()=>(0,i.zG)("tuntapclient/SubscribePing")},7985:function(e,t,n){n.d(t,{r:function(){return u}});n(4114);var i=n(9299),a=n(3830),s=n(6768),l=n(144);const c=[],u=()=>{const e=(0,a.B)(),t=(0,s.EW)((()=>e.value.config.Client.Id)),n=(0,l.Kh)({timer:0,page:{Request:{Page:1,Size:+(localStorage.getItem("ps")||"10"),Name:"",Ids:[],Prop:"",Asc:!0},Count:0,List:[]},showDeviceEdit:!1,showAccessEdit:!1,deviceInfo:null}),u=()=>{(0,i.nD)(n.page.Request).then((i=>{n.page.Request=i.Request,n.page.Count=i.Count;for(let n in i.List)Object.assign(i.List[n],{showDel:t.value!=i.List[n].MachineId&&0==i.List[n].Connected,showAccess:t.value!=i.List[n].MachineId&&i.List[n].Connected,showReboot:i.List[n].Connected,isSelf:t.value==i.List[n].MachineId,showip:!1}),i.List[n].isSelf&&(e.value.self=i.List[n]);n.page.List=i.List;for(let e=0;e{}))},r=()=>{(0,i.nD)(n.page.Request).then((i=>{for(let a in i.List){const s=n.page.List.filter((e=>e.MachineId==i.List[a].MachineId))[0];s&&(Object.assign(s,{Connected:i.List[a].Connected,Version:i.List[a].Version,LastSignIn:i.List[a].LastSignIn,Args:i.List[a].Args,showDel:t.value!=i.List[a].MachineId&&0==i.List[a].Connected,showAccess:t.value!=i.List[a].MachineId&&i.List[a].Connected,showReboot:i.List[a].Connected,isSelf:t.value==i.List[a].MachineId}),s.isSelf&&(e.value.self=s))}n.timer=setTimeout(r,5e3)})).catch((e=>{n.timer=setTimeout(r,5e3)}))},o=()=>{try{if(0==c.length)return void setTimeout(o,1e3);const e=c.shift();fetch(`http://ip-api.com/json/${e.IP.split(":")[0]}`).then((async t=>{try{const n=await t.json();e.countryFlag=`https://unpkg.com/flag-icons@7.2.3/flags/4x3/${n.countryCode.toLowerCase()}.svg`}catch(n){}setTimeout(o,1e3)})).catch((()=>{setTimeout(o,1e3)}))}catch(e){setTimeout(o,1e3)}};o();const d=e=>{n.deviceInfo=e,n.showDeviceEdit=!0},h=e=>{n.deviceInfo=e,n.showAccessEdit=!0},m=e=>{e&&(n.page.Request.Page=e),u()},p=e=>{e&&(n.page.Request.Size=e,localStorage.setItem("ps",e)),u()},g=e=>{(0,i.Se)(e).then((()=>{u()}))},f=()=>{clearTimeout(n.timer),n.timer=0},v=e=>(0,i.VN)(e);return{devices:n,machineId:t,_getSignList:u,_getSignList1:r,handleDeviceEdit:d,handleAccessEdit:h,handlePageChange:m,handlePageSizeChange:p,handleDel:g,clearDevicesTimeout:f,setSort:v}}},8104:function(e,t,n){n.d(t,{O:function(){return r},W:function(){return o}});var i=n(3830),a=n(1219),s=n(144),l=n(6768),c=n(5241);const u=Symbol(),r=()=>{(0,i.B)();const e=(0,s.KR)({timer:0,showEdit:!1,current:null,list:{},hashcode:0});(0,l.Gt)(u,e);const t={linux:["debian","ubuntu","alpine","rocky","centos"],windows:["windows"],android:["android"],ios:["ios"]},n=()=>{clearTimeout(e.value.timer),(0,c.zi)(e.value.hashcode.toString()).then((i=>{if(e.value.hashcode=i.HashCode,i.List){for(let e in i.List){let n="system";const a=i.List[e].SystemInfo.toLowerCase();for(let e in t)if(a.indexOf(e)>=0){const i=t[e];if(1==i.length)n=i[0];else for(let e=0;e=0){n=i[e];break}break}Object.assign(i.List[e],{running:2==i.List[e].Status,loading:1==i.List[e].Status,system:n,systemDocker:a.indexOf("docker")>=0})}e.value.list=i.List}e.value.timer=setTimeout(n,1100),(0,c.Jd)()})).catch((t=>{e.value.timer=setTimeout(n,1100)}))},r=t=>{e.value.current=t,e.value.showEdit=!0},o=()=>{(0,c.Yh)(),a.nk.success({message:"刷新成功",grouping:!0})},d=()=>{clearTimeout(e.value.timer),e.value.timer=0},h=t=>Object.values(e.value.list).filter((e=>e.IP.indexOf(t)>=0||e.LanIPs.filter((e=>e.indexOf(t)>=0)).length>0)).map((e=>e.MachineId)),m=t=>{const n=Object.values(e.value.list).filter((e=>e.IP)).sort(((e,t)=>{const n=e.IP.split(".").map((e=>Number(e))),i=t.IP.split(".").map((e=>Number(e)));for(let a=0;ae.MachineId))};return{tuntap:e,_getTuntapInfo:n,handleTuntapEdit:r,handleTuntapRefresh:o,clearTuntapTimeout:d,getTuntapMachines:h,sortTuntapIP:m}},o=()=>(0,l.WQ)(u)},886:function(e,t,n){n.d(t,{A:function(){return v}});var i=n(6768),a=n(4232);const s=["title"],l=["src"],c=["src"],u={key:1,class:"system",src:"/docker.svg"},r={key:1};function o(e,t,n,o,d,h){const m=(0,i.g2)("StarFilled"),p=(0,i.g2)("el-icon");return(0,i.uX)(),(0,i.CE)("div",null,[o.tuntap.list[o.item.MachineId]&&o.tuntap.list[o.item.MachineId].system?((0,i.uX)(),(0,i.CE)("span",{key:0,title:o.tuntap.list[o.item.MachineId].SystemInfo},[o.item.countryFlag?((0,i.uX)(),(0,i.CE)("img",{key:0,class:"system",src:o.item.countryFlag},null,8,l)):(0,i.Q3)("",!0),(0,i.Lk)("img",{class:"system",src:`/${o.tuntap.list[o.item.MachineId].system}.svg`},null,8,c),o.tuntap.list[o.item.MachineId].systemDocker?((0,i.uX)(),(0,i.CE)("img",u)):(0,i.Q3)("",!0)],8,s)):(0,i.Q3)("",!0),(0,i.Lk)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>o.handleEdit&&o.handleEdit(...e)),title:"此客户端的设备名",class:(0,a.C4)({green:o.item.Connected})},(0,a.v_)(o.item.MachineName),3),o.item.isSelf?((0,i.uX)(),(0,i.CE)("strong",r,[(0,i.eW)(" - ("),(0,i.bF)(p,null,{default:(0,i.k6)((()=>[(0,i.bF)(m)])),_:1}),(0,i.eW)(" 本机) ")])):(0,i.Q3)("",!0)])}var d=n(3830),h=n(8104),m=n(7477),p={props:["item","config"],emits:["edit","refresh"],components:{StarFilled:m.BQ2},setup(e,{emit:t}){const n=(0,h.W)(),a=(0,d.B)(),s=(0,i.EW)((()=>a.value.hasAccess("RenameSelf"))),l=(0,i.EW)((()=>a.value.hasAccess("RenameOther"))),c=(0,i.EW)((()=>a.value.config.Client.Id)),u=()=>{if(e.config){if(c.value===e.item.MachineId){if(!s.value)return}else if(!l.value)return;t("edit",e.item)}};return{item:(0,i.EW)((()=>e.item)),tuntap:n,handleEdit:u}}},g=n(1241);const f=(0,g.A)(p,[["render",o],["__scopeId","data-v-a998806a"]]);var v=f},3630:function(e,t,n){n.d(t,{A:function(){return C}});var i=n(6768),a=n(4232);const s={class:"flex"},l={class:"flex-1"},c=["title"],u={class:"red"},r={key:0},o={class:"yellow"},d={key:1},h={key:0,class:"delay green"},m={class:"delay yellow"};function p(e,t,n,p,g,f){const v=(0,i.g2)("el-popover"),I=(0,i.g2)("Loading"),L=(0,i.g2)("el-icon"),k=(0,i.g2)("el-switch");return(0,i.uX)(),(0,i.CE)("div",null,[(0,i.Lk)("div",s,[(0,i.Lk)("div",l,[(0,i.Lk)("a",{href:"javascript:;",class:"a-line",onClick:t[0]||(t[0]=e=>p.handleTuntapIP(p.tuntap.list[p.item.MachineId])),title:p.tuntap.list[p.item.MachineId].Gateway?"我在路由器上,所以略有不同":"此设备的虚拟网卡IP"},[p.tuntap.list[p.item.MachineId].Error?((0,i.uX)(),(0,i.Wv)(v,{key:0,placement:"top",title:"msg",width:"20rem",trigger:"hover",content:p.tuntap.list[p.item.MachineId].Error},{reference:(0,i.k6)((()=>[(0,i.Lk)("strong",u,(0,a.v_)(p.tuntap.list[p.item.MachineId].IP),1)])),_:1},8,["content"])):((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[p.tuntap.list[p.item.MachineId].running?((0,i.uX)(),(0,i.CE)("strong",{key:0,class:(0,a.C4)(["green",{gateway:p.tuntap.list[p.item.MachineId].Gateway}])},(0,a.v_)(p.tuntap.list[p.item.MachineId].IP),3)):((0,i.uX)(),(0,i.CE)("strong",{key:1,class:(0,a.C4)({gateway:p.tuntap.list[p.item.MachineId].Gateway})},(0,a.v_)(p.tuntap.list[p.item.MachineId].IP),3))],64))],8,c)]),p.tuntap.list[p.item.MachineId].loading?((0,i.uX)(),(0,i.CE)("div",r,[(0,i.bF)(L,{size:"14",class:"loading"},{default:(0,i.k6)((()=>[(0,i.bF)(I)])),_:1})])):((0,i.uX)(),(0,i.Wv)(k,{key:1,modelValue:p.tuntap.list[p.item.MachineId].running,"onUpdate:modelValue":t[1]||(t[1]=e=>p.tuntap.list[p.item.MachineId].running=e),loading:p.tuntap.list[p.item.MachineId].loading,disabled:"",onClick:t[2]||(t[2]=e=>p.handleTuntap(p.tuntap.list[p.item.MachineId])),size:"small","inline-prompt":"","active-text":"😀","inactive-text":"😣"},null,8,["modelValue","loading"]))]),(0,i.Lk)("div",null,[p.tuntap.list[p.item.MachineId].Error1?((0,i.uX)(),(0,i.Wv)(v,{key:0,placement:"top",title:"msg",width:"20rem",trigger:"hover",content:p.tuntap.list[p.item.MachineId].Error1},{reference:(0,i.k6)((()=>[(0,i.Lk)("div",o,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(p.tuntap.list[p.item.MachineId].LanIPs,((e,t)=>((0,i.uX)(),(0,i.CE)("div",{key:t},(0,a.v_)(e)+" / "+(0,a.v_)(p.tuntap.list[p.item.MachineId].Masks[t]),1)))),128))])])),_:1},8,["content"])):((0,i.uX)(),(0,i.CE)("div",d,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(p.tuntap.list[p.item.MachineId].LanIPs,((e,t)=>((0,i.uX)(),(0,i.CE)("div",{key:t},(0,a.v_)(e)+" / "+(0,a.v_)(p.tuntap.list[p.item.MachineId].Masks[t]),1)))),128))])),p.showDelay?((0,i.uX)(),(0,i.CE)(i.FK,{key:2},[p.tuntap.list[p.item.MachineId].Delay>=0&&p.tuntap.list[p.item.MachineId].Delay<=100?((0,i.uX)(),(0,i.CE)("div",h,(0,a.v_)(p.tuntap.list[p.item.MachineId].Delay)+"ms",1)):(0,i.Q3)("",!0),(0,i.Lk)("template",null,[(0,i.Lk)("div",m,(0,a.v_)(p.tuntap.list[p.item.MachineId].Delay)+"ms",1)])],64)):(0,i.Q3)("",!0)])])}var g=n(5241),f=n(1219),v=n(8104),I=n(7477),L=n(3830),k={props:["item","config"],emits:["edit","refresh"],components:{Loading:I.Rhj},setup(e,{emit:t}){const n=(0,v.W)(),a=(0,L.B)(),s=(0,i.EW)((()=>a.value.config.Client.Id)),l=(0,i.EW)((()=>a.value.hasAccess("TuntapChangeSelf"))),c=(0,i.EW)((()=>a.value.hasAccess("TuntapChangeOther"))),u=(0,i.EW)((()=>a.value.hasAccess("TuntapStatusSelf"))),r=(0,i.EW)((()=>a.value.hasAccess("TuntapStatusOther"))),o=(0,i.EW)((()=>2==(2&(a.value.config.Running.Tuntap||{Switch:0}).Switch))),d=t=>{if(!e.config)return;if(s.value===t.MachineId){if(!u.value)return}else if(!r.value)return;const n=t.running?(0,g.PR)(t.MachineId):(0,g.en)(t.MachineId);t.loading=!0,n.then((()=>{f.nk.success("操作成功!")})).catch((()=>{f.nk.error("操作失败!")}))},h=n=>{if(e.config||s.value==n.MachineId){if(s.value===n.MachineId){if(!l.value)return}else if(!c.value)return;n.device=e.item,t("edit",n)}},m=()=>{t("refresh")};return{item:(0,i.EW)((()=>e.item)),tuntap:n,showDelay:o,handleTuntap:d,handleTuntapIP:h,handleTuntapRefresh:m}}},y=n(1241);const M=(0,y.A)(k,[["render",p],["__scopeId","data-v-8a7ccef2"]]);var C=M}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/201.ab852fbb.js b/linker.tray.win/web/js/201.ab852fbb.js
deleted file mode 100644
index da8e25c5..00000000
--- a/linker.tray.win/web/js/201.ab852fbb.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[201],{5241:function(e,t,n){n.d(t,{PR:function(){return u},Yh:function(){return o},ac:function(){return r},en:function(){return c},kl:function(){return a},vB:function(){return s},zi:function(){return l}});var i=n(4);const a=(e="0")=>(0,i.zG)("tuntapclient/connections",e),s=e=>(0,i.zG)("tuntapclient/removeconnection",e),l=(e="0")=>(0,i.zG)("tuntapclient/get",e),c=e=>(0,i.zG)("tuntapclient/run",e),u=e=>(0,i.zG)("tuntapclient/stop",e),r=e=>(0,i.zG)("tuntapclient/update",e),o=()=>(0,i.zG)("tuntapclient/refresh")},7985:function(e,t,n){n.d(t,{r:function(){return u}});n(4114);var i=n(9299),a=n(3830),s=n(6768),l=n(144);const c=[],u=()=>{const e=(0,a.B)(),t=(0,s.EW)((()=>e.value.config.Client.Id)),n=(0,l.Kh)({timer:0,page:{Request:{Page:1,Size:+(localStorage.getItem("ps")||"10"),Name:"",Ids:[],Prop:"",Asc:!0},Count:0,List:[]},showDeviceEdit:!1,showAccessEdit:!1,deviceInfo:null}),u=()=>{(0,i.nD)(n.page.Request).then((i=>{n.page.Request=i.Request,n.page.Count=i.Count;for(let n in i.List)Object.assign(i.List[n],{showDel:t.value!=i.List[n].MachineId&&0==i.List[n].Connected,showAccess:t.value!=i.List[n].MachineId&&i.List[n].Connected,showReboot:i.List[n].Connected,isSelf:t.value==i.List[n].MachineId,showip:!1}),i.List[n].isSelf&&(e.value.self=i.List[n]);n.page.List=i.List;for(let e=0;e{}))},r=()=>{(0,i.nD)(n.page.Request).then((i=>{for(let a in i.List){const s=n.page.List.filter((e=>e.MachineId==i.List[a].MachineId))[0];s&&(Object.assign(s,{Connected:i.List[a].Connected,Version:i.List[a].Version,LastSignIn:i.List[a].LastSignIn,Args:i.List[a].Args,showDel:t.value!=i.List[a].MachineId&&0==i.List[a].Connected,showAccess:t.value!=i.List[a].MachineId&&i.List[a].Connected,showReboot:i.List[a].Connected,isSelf:t.value==i.List[a].MachineId}),s.isSelf&&(e.value.self=s))}n.timer=setTimeout(r,5e3)})).catch((e=>{n.timer=setTimeout(r,5e3)}))},o=()=>{try{if(0==c.length)return void setTimeout(o,1e3);const e=c.shift();fetch(`http://ip-api.com/json/${e.IP.split(":")[0]}`).then((async t=>{try{const n=await t.json();e.countryFlag=`https://unpkg.com/flag-icons@7.2.3/flags/4x3/${n.countryCode.toLowerCase()}.svg`}catch(n){}setTimeout(o,1e3)})).catch((()=>{setTimeout(o,1e3)}))}catch(e){setTimeout(o,1e3)}};o();const d=e=>{n.deviceInfo=e,n.showDeviceEdit=!0},h=e=>{n.deviceInfo=e,n.showAccessEdit=!0},m=e=>{e&&(n.page.Request.Page=e),u()},p=e=>{e&&(n.page.Request.Size=e,localStorage.setItem("ps",e)),u()},g=e=>{(0,i.Se)(e).then((()=>{u()}))},v=()=>{clearTimeout(n.timer),n.timer=0},f=e=>(0,i.VN)(e);return{devices:n,machineId:t,_getSignList:u,_getSignList1:r,handleDeviceEdit:d,handleAccessEdit:h,handlePageChange:m,handlePageSizeChange:p,handleDel:g,clearDevicesTimeout:v,setSort:f}}},8104:function(e,t,n){n.d(t,{O:function(){return r},W:function(){return o}});var i=n(3830),a=n(1219),s=n(144),l=n(6768),c=n(5241);const u=Symbol(),r=()=>{(0,i.B)();const e=(0,s.KR)({timer:0,showEdit:!1,current:null,list:{},hashcode:0});(0,l.Gt)(u,e);const t={linux:["debian","ubuntu","alpine","rocky","centos"],windows:["windows"],android:["android"],ios:["ios"]},n=()=>{clearTimeout(e.value.timer),(0,c.zi)(e.value.hashcode.toString()).then((i=>{if(e.value.hashcode=i.HashCode,i.List){for(let e in i.List){let n="system";const a=i.List[e].SystemInfo.toLowerCase();for(let e in t)if(a.indexOf(e)>=0){const i=t[e];if(1==i.length)n=i[0];else for(let e=0;e=0){n=i[e];break}break}Object.assign(i.List[e],{running:2==i.List[e].Status,loading:1==i.List[e].Status,system:n,systemDocker:a.indexOf("docker")>=0})}e.value.list=i.List}e.value.timer=setTimeout(n,1100)})).catch((t=>{e.value.timer=setTimeout(n,1100)}))},r=t=>{e.value.current=t,e.value.showEdit=!0},o=()=>{(0,c.Yh)(),a.nk.success({message:"刷新成功",grouping:!0})},d=()=>{clearTimeout(e.value.timer),e.value.timer=0},h=t=>Object.values(e.value.list).filter((e=>e.IP.indexOf(t)>=0||e.LanIPs.filter((e=>e.indexOf(t)>=0)).length>0)).map((e=>e.MachineId)),m=t=>{const n=Object.values(e.value.list).filter((e=>e.IP)).sort(((e,t)=>{const n=e.IP.split(".").map((e=>Number(e))),i=t.IP.split(".").map((e=>Number(e)));for(let a=0;ae.MachineId))};return{tuntap:e,_getTuntapInfo:n,handleTuntapEdit:r,handleTuntapRefresh:o,clearTuntapTimeout:d,getTuntapMachines:h,sortTuntapIP:m}},o=()=>(0,l.WQ)(u)},886:function(e,t,n){n.d(t,{A:function(){return f}});var i=n(6768),a=n(4232);const s=["title"],l=["src"],c=["src"],u={key:1,class:"system",src:"/docker.svg"},r={key:1};function o(e,t,n,o,d,h){const m=(0,i.g2)("StarFilled"),p=(0,i.g2)("el-icon");return(0,i.uX)(),(0,i.CE)("div",null,[o.tuntap.list[o.item.MachineId]&&o.tuntap.list[o.item.MachineId].system?((0,i.uX)(),(0,i.CE)("span",{key:0,title:o.tuntap.list[o.item.MachineId].SystemInfo},[o.item.countryFlag?((0,i.uX)(),(0,i.CE)("img",{key:0,class:"system",src:o.item.countryFlag},null,8,l)):(0,i.Q3)("",!0),(0,i.Lk)("img",{class:"system",src:`/${o.tuntap.list[o.item.MachineId].system}.svg`},null,8,c),o.tuntap.list[o.item.MachineId].systemDocker?((0,i.uX)(),(0,i.CE)("img",u)):(0,i.Q3)("",!0)],8,s)):(0,i.Q3)("",!0),(0,i.Lk)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>o.handleEdit&&o.handleEdit(...e)),title:"此客户端的设备名",class:(0,a.C4)({green:o.item.Connected})},(0,a.v_)(o.item.MachineName),3),o.item.isSelf?((0,i.uX)(),(0,i.CE)("strong",r,[(0,i.eW)(" - ("),(0,i.bF)(p,null,{default:(0,i.k6)((()=>[(0,i.bF)(m)])),_:1}),(0,i.eW)(" 本机) ")])):(0,i.Q3)("",!0)])}var d=n(3830),h=n(8104),m=n(7477),p={props:["item","config"],emits:["edit","refresh"],components:{StarFilled:m.BQ2},setup(e,{emit:t}){const n=(0,h.W)(),a=(0,d.B)(),s=(0,i.EW)((()=>a.value.hasAccess("RenameSelf"))),l=(0,i.EW)((()=>a.value.hasAccess("RenameOther"))),c=(0,i.EW)((()=>a.value.config.Client.Id)),u=()=>{if(e.config){if(c.value===e.item.MachineId){if(!s.value)return}else if(!l.value)return;t("edit",e.item)}};return{item:(0,i.EW)((()=>e.item)),tuntap:n,handleEdit:u}}},g=n(1241);const v=(0,g.A)(p,[["render",o],["__scopeId","data-v-a998806a"]]);var f=v},3630:function(e,t,n){n.d(t,{A:function(){return C}});var i=n(6768),a=n(4232);const s={class:"flex"},l={class:"flex-1"},c=["title"],u={class:"red"},r={key:0},o={class:"yellow"},d={key:1},h={key:0,class:"delay green"},m={class:"delay yellow"};function p(e,t,n,p,g,v){const f=(0,i.g2)("el-popover"),I=(0,i.g2)("Loading"),L=(0,i.g2)("el-icon"),k=(0,i.g2)("el-switch");return(0,i.uX)(),(0,i.CE)("div",null,[(0,i.Lk)("div",s,[(0,i.Lk)("div",l,[(0,i.Lk)("a",{href:"javascript:;",class:"a-line",onClick:t[0]||(t[0]=e=>p.handleTuntapIP(p.tuntap.list[p.item.MachineId])),title:p.tuntap.list[p.item.MachineId].Gateway?"我在路由器上,所以略有不同":"此设备的虚拟网卡IP"},[p.tuntap.list[p.item.MachineId].Error?((0,i.uX)(),(0,i.Wv)(f,{key:0,placement:"top",title:"msg",width:"20rem",trigger:"hover",content:p.tuntap.list[p.item.MachineId].Error},{reference:(0,i.k6)((()=>[(0,i.Lk)("strong",u,(0,a.v_)(p.tuntap.list[p.item.MachineId].IP),1)])),_:1},8,["content"])):((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[p.tuntap.list[p.item.MachineId].running?((0,i.uX)(),(0,i.CE)("strong",{key:0,class:(0,a.C4)(["green",{gateway:p.tuntap.list[p.item.MachineId].Gateway}])},(0,a.v_)(p.tuntap.list[p.item.MachineId].IP),3)):((0,i.uX)(),(0,i.CE)("strong",{key:1,class:(0,a.C4)({gateway:p.tuntap.list[p.item.MachineId].Gateway})},(0,a.v_)(p.tuntap.list[p.item.MachineId].IP),3))],64))],8,c)]),p.tuntap.list[p.item.MachineId].loading?((0,i.uX)(),(0,i.CE)("div",r,[(0,i.bF)(L,{size:"14",class:"loading"},{default:(0,i.k6)((()=>[(0,i.bF)(I)])),_:1})])):((0,i.uX)(),(0,i.Wv)(k,{key:1,modelValue:p.tuntap.list[p.item.MachineId].running,"onUpdate:modelValue":t[1]||(t[1]=e=>p.tuntap.list[p.item.MachineId].running=e),loading:p.tuntap.list[p.item.MachineId].loading,disabled:"",onClick:t[2]||(t[2]=e=>p.handleTuntap(p.tuntap.list[p.item.MachineId])),size:"small","inline-prompt":"","active-text":"😀","inactive-text":"😣"},null,8,["modelValue","loading"]))]),(0,i.Lk)("div",null,[p.tuntap.list[p.item.MachineId].Error1?((0,i.uX)(),(0,i.Wv)(f,{key:0,placement:"top",title:"msg",width:"20rem",trigger:"hover",content:p.tuntap.list[p.item.MachineId].Error1},{reference:(0,i.k6)((()=>[(0,i.Lk)("div",o,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(p.tuntap.list[p.item.MachineId].LanIPs,((e,t)=>((0,i.uX)(),(0,i.CE)("div",{key:t},(0,a.v_)(e)+" / "+(0,a.v_)(p.tuntap.list[p.item.MachineId].Masks[t]),1)))),128))])])),_:1},8,["content"])):((0,i.uX)(),(0,i.CE)("div",d,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(p.tuntap.list[p.item.MachineId].LanIPs,((e,t)=>((0,i.uX)(),(0,i.CE)("div",{key:t},(0,a.v_)(e)+" / "+(0,a.v_)(p.tuntap.list[p.item.MachineId].Masks[t]),1)))),128))])),p.showDelay?((0,i.uX)(),(0,i.CE)(i.FK,{key:2},[p.tuntap.list[p.item.MachineId].Delay>=0&&p.tuntap.list[p.item.MachineId].Delay<=100?((0,i.uX)(),(0,i.CE)("div",h,(0,a.v_)(p.tuntap.list[p.item.MachineId].Delay)+"ms",1)):(0,i.Q3)("",!0),(0,i.Lk)("template",null,[(0,i.Lk)("div",m,(0,a.v_)(p.tuntap.list[p.item.MachineId].Delay)+"ms",1)])],64)):(0,i.Q3)("",!0)])])}var g=n(5241),v=n(1219),f=n(8104),I=n(7477),L=n(3830),k={props:["item","config"],emits:["edit","refresh"],components:{Loading:I.Rhj},setup(e,{emit:t}){const n=(0,f.W)(),a=(0,L.B)(),s=(0,i.EW)((()=>a.value.config.Client.Id)),l=(0,i.EW)((()=>a.value.hasAccess("TuntapChangeSelf"))),c=(0,i.EW)((()=>a.value.hasAccess("TuntapChangeOther"))),u=(0,i.EW)((()=>a.value.hasAccess("TuntapStatusSelf"))),r=(0,i.EW)((()=>a.value.hasAccess("TuntapStatusOther"))),o=(0,i.EW)((()=>2==(2&(a.value.config.Running.Tuntap||{Switch:0}).Switch))),d=t=>{if(!e.config)return;if(s.value===t.MachineId){if(!u.value)return}else if(!r.value)return;const n=t.running?(0,g.PR)(t.MachineId):(0,g.en)(t.MachineId);t.loading=!0,n.then((()=>{v.nk.success("操作成功!")})).catch((()=>{v.nk.error("操作失败!")}))},h=n=>{if(e.config||s.value==n.MachineId){if(s.value===n.MachineId){if(!l.value)return}else if(!c.value)return;n.device=e.item,t("edit",n)}},m=()=>{t("refresh")};return{item:(0,i.EW)((()=>e.item)),tuntap:n,showDelay:o,handleTuntap:d,handleTuntapIP:h,handleTuntapRefresh:m}}},y=n(1241);const M=(0,y.A)(k,[["render",p],["__scopeId","data-v-8a7ccef2"]]);var C=M}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/23.b02ef879.js b/linker.tray.win/web/js/23.b02ef879.js
new file mode 100644
index 00000000..178f9f96
--- /dev/null
+++ b/linker.tray.win/web/js/23.b02ef879.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[23],{920:function(e,t,a){a.d(t,{BJ:function(){return d},NS:function(){return o},UB:function(){return g},Vk:function(){return u},aP:function(){return p},ir:function(){return r},lJ:function(){return s},mK:function(){return n},y2:function(){return c},yN:function(){return i}});var l=a(4);const n=(e="0")=>(0,l.zG)("updaterclient/get",e),s=e=>(0,l.zG)("updaterclient/confirm",e),o=e=>(0,l.zG)("updaterclient/exit",e),i=()=>(0,l.zG)("updaterclient/GetSecretKey"),r=e=>(0,l.zG)("updaterclient/SetSecretKey",e),u=()=>(0,l.zG)("updaterclient/getcurrent"),d=()=>(0,l.zG)("updaterclient/getserver"),c=e=>(0,l.zG)("updaterclient/confirmserver",e),p=()=>(0,l.zG)("updaterclient/exitserver"),g=()=>(0,l.zG)("updaterclient/Subscribe")},5962:function(e,t,a){a.d(t,{Y:function(){return i},q:function(){return r}});var l=a(8835),n=a(144),s=a(6768);const o=Symbol(),i=()=>{const e=(0,n.KR)({list:{},timer:0,hashcode:0});(0,s.Gt)(o,e);const t=()=>{(0,l.QI)(e.value.hashcode.toString()).then((a=>{e.value.hashcode=a.HashCode,a.List&&(e.value.list=a.List),e.value.timer=setTimeout(t,1e3)})).catch((()=>{e.value.timer=setTimeout(t,1e3)}))},a=()=>{clearTimeout(e.value.timer)};return{access:e,_getAccessInfo:t,clearAccessTimeout:a}},r=()=>(0,s.WQ)(o)},9383:function(e,t,a){a.d(t,{T:function(){return u},d:function(){return r}});var l=a(920),n=a(3830),s=a(144),o=a(6768);const i=Symbol(),r=()=>{const e=(0,n.B)(),t=(0,s.KR)({timer:0,list:{},hashcode:0,current:{Version:"",Msg:[],DateTime:"",Status:0,Length:0,Current:0},subscribeTimer:0});(0,o.Gt)(i,t);const a=()=>{(0,l.mK)(t.value.hashcode.toString()).then((l=>{if(t.value.hashcode=l.HashCode,l.List){const a=Object.values(l.List).filter((e=>!!e.Version))[0];a&&(Object.assign(t.value.current,{DateTime:a.DateTime,Version:a.Version,Status:a.Status,Length:a.Length,Current:a.Current,Msg:a.Msg}),e.value.updater=t.value.current),t.value.list=l.List}t.value.timer=setTimeout(a,800)})).catch((()=>{t.value.timer=setTimeout(a,800)}))},r=()=>{(0,l.UB)().then((()=>{t.value.subscribeTimer=setTimeout(r,5e3)})).catch((()=>{t.value.subscribeTimer=setTimeout(r,5e3)}))},u=()=>{clearTimeout(t.value.timer),clearTimeout(t.value.subscribeTimer)};return{updater:t,_getUpdater:a,_subscribeUpdater:r,clearUpdaterTimeout:u}},u=()=>(0,o.WQ)(i)},5096:function(e,t,a){a.d(t,{A:function(){return p}});var l=a(6768);const n=e=>((0,l.Qi)("data-v-4892cd3c"),e=e(),(0,l.jt)(),e),s=n((()=>(0,l.Lk)("input",{type:"file",id:"file-input"},null,-1)));function o(e,t,a,n,o,i){const r=(0,l.g2)("PictureRounded"),u=(0,l.g2)("el-icon");return(0,l.uX)(),(0,l.CE)(l.FK,null,[(0,l.Lk)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleBg&&n.handleBg(...e))},[(0,l.bF)(u,null,{default:(0,l.k6)((()=>[(0,l.bF)(r)])),_:1})]),s],64)}var i=a(7477),r=a(2933),u={components:{PictureRounded:i.syp},props:["name"],setup(e){const t=`bg-${e.name}`,a=()=>{localStorage.getItem(t)?r.s.confirm("清除背景?","Warning",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{s()})).catch((()=>{})):document.getElementById("file-input").click()},n=e=>{const t=e.target.files[0];if(t)try{const e=new FileReader;e.onload=function(e){s(e.target.result)},e.readAsDataURL(t)}catch(a){}e.target.value=""},s=e=>{e?(document.body.className="sunny",localStorage.setItem(t,e),document.body.style=`background-image:url(${e})`):(document.body.className="",document.body.style="",localStorage.setItem(t,""))};return(0,l.sV)((()=>{document.getElementById("file-input").addEventListener("change",n),s(localStorage.getItem(t))})),{handleBg:a}}},d=a(1241);const c=(0,d.A)(u,[["render",o],["__scopeId","data-v-4892cd3c"]]);var p=c},6611:function(e,t,a){a.d(t,{A:function(){return c}});var l=a(6768);function n(e,t,a,n,s,o){const i=(0,l.g2)("el-checkbox"),r=(0,l.g2)("el-col"),u=(0,l.g2)("el-row"),d=(0,l.g2)("el-checkbox-group");return(0,l.uX)(),(0,l.CE)(l.FK,null,[(0,l.bF)(u,null,{default:(0,l.k6)((()=>[(0,l.bF)(r,{span:8},{default:(0,l.k6)((()=>[(0,l.bF)(i,{modelValue:n.state.checkAll,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.checkAll=e),onChange:n.handleCheckAllChange,label:"全选",indeterminate:n.state.isIndeterminate},null,8,["modelValue","onChange","indeterminate"])])),_:1})])),_:1}),(0,l.bF)(d,{modelValue:n.state.checkList,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.checkList=e),onChange:n.handleCheckedChange},{default:(0,l.k6)((()=>[(0,l.bF)(u,null,{default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.access,((e,t)=>((0,l.uX)(),(0,l.Wv)(r,{key:t,span:8},{default:(0,l.k6)((()=>[(0,l.bF)(i,{value:e.Value,label:e.Text},null,8,["value","label"])])),_:2},1024)))),128))])),_:1})])),_:1},8,["modelValue","onChange"])],64)}a(4114);var s=a(144),o=a(3830),i=a(5962),r={props:["machineid"],setup(e){const t=(0,o.B)(),a=(0,i.q)(),n=(0,l.EW)((()=>{const e=t.value.config.Client.Accesss;return Object.keys(e).reduce(((a,l,n)=>{if(t.value.hasAccess(l)){const t=e[l];t.Key=l,a.push(t)}return a}),[])})),r=(0,s.Kh)({checkList:[t.value.config.Client.Accesss.Api.Value,t.value.config.Client.Accesss.Web.Value,t.value.config.Client.Accesss.NetManager.Value,t.value.config.Client.Accesss.FullManager.Value,t.value.config.Client.Accesss.Transport.Value,t.value.config.Client.Accesss.Action.Value],checkAll:!1,isIndeterminate:!1}),u=()=>r.checkList.reduce(((e,t)=>(e|t)>>>0),0),d=e=>{const t=e.length;r.checkAll=t===n.value.length,r.isIndeterminate=t>0&&t{r.checkAll=e,r.checkList=e?n.value.map((e=>e.Value)):[],r.isIndeterminate=!1};return(0,l.sV)((()=>{if(a&&a.value.list[e.machineid]){const t=a.value.list[e.machineid];r.checkList=n.value.reduce(((e,a)=>((t&a.Value)>>>0==a.Value&&e.push(a.Value),e)),[])}d(r.checkList)})),{state:r,access:n,getValue:u,handleCheckAllChange:c,handleCheckedChange:d}}},u=a(1241);const d=(0,u.A)(r,[["render",n],["__scopeId","data-v-bdd023b0"]]);var c=d},2126:function(e,t,a){a.d(t,{A:function(){return y}});var l=a(6768),n=a(4232);const s=["title"],o={key:0,class:"progress"},i={key:1,class:"progress"};function r(e,t,a,r,u,d){const c=(0,l.g2)("Loading"),p=(0,l.g2)("el-icon"),g=(0,l.g2)("Download"),v=(0,l.g2)("CircleCheck");return(0,l.uX)(),(0,l.CE)("a",{href:"javascript:;",class:(0,n.C4)(["download",r.updaterColor]),onClick:t[0]||(t[0]=e=>r.handleUpdate()),title:r.updaterText},[(0,l.Lk)("span",null,[(0,l.Lk)("span",null,(0,n.v_)(r.item.Version),1),r.updater.list[r.item.MachineId]?((0,l.uX)(),(0,l.CE)(l.FK,{key:0},[1==r.updater.list[r.item.MachineId].Status?((0,l.uX)(),(0,l.Wv)(p,{key:0,size:"14",class:"loading"},{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1})):2==r.updater.list[r.item.MachineId].Status?((0,l.uX)(),(0,l.Wv)(p,{key:1,size:"14"},{default:(0,l.k6)((()=>[(0,l.bF)(g)])),_:1})):3==r.updater.list[r.item.MachineId].Status||5==r.updater.list[r.item.MachineId].Status?((0,l.uX)(),(0,l.CE)(l.FK,{key:2},[(0,l.bF)(p,{size:"14",class:"loading"},{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1}),0==r.updater.list[r.item.MachineId].Length?((0,l.uX)(),(0,l.CE)("span",o,"0%")):((0,l.uX)(),(0,l.CE)("span",i,(0,n.v_)(parseInt(r.updater.list[r.item.MachineId].Current/r.updater.list[r.item.MachineId].Length*100))+"%",1))],64)):6==r.updater.list[r.item.MachineId].Status?((0,l.uX)(),(0,l.Wv)(p,{key:3,size:"14",class:"yellow"},{default:(0,l.k6)((()=>[(0,l.bF)(v)])),_:1})):(0,l.Q3)("",!0)],64)):((0,l.uX)(),(0,l.Wv)(p,{key:1,size:"14"},{default:(0,l.k6)((()=>[(0,l.bF)(g)])),_:1}))])],10,s)}a(4114);var u=a(3830),d=a(144),c=a(1219),p=a(2933),g=a(2248),v=a(920),h=a(7477),m=a(9383),f={props:["item","config"],components:{Download:h.f5X,Loading:h.Rhj,CircleCheck:h.rW7},setup(e){const t=(0,u.B)(),a=(0,l.EW)((()=>t.value.hasAccess("UpdateSelf"))),n=(0,l.EW)((()=>t.value.hasAccess("UpdateOther"))),s=(0,m.T)(),o=(0,l.EW)((()=>t.value.signin.Version)),i=(0,l.EW)((()=>s.value.current.Version)),r=(0,l.EW)((()=>`${i.value}->${s.value.current.DateTime}\n${s.value.current.Msg.map(((e,t)=>`${t+1}、${e}`)).join("\n")}`)),h=(0,l.EW)((()=>s.value.list[e.item.MachineId]?s.value.list[e.item.MachineId].Status<=2?e.item.Version!=o.value?`与服务器版本(${o.value})不一致,建议更新`:i.value!=e.item.Version?`不是最新版本(${i.value}),建议更新\n${r.value}`:`是最新版本,但我无法阻止你喜欢更新\n${r.value}`:{3:"正在下载",4:"已下载",5:"正在解压",6:"已解压,请重启"}[s.value.list[e.item.MachineId].Status]:"未检测到更新")),f=(0,l.EW)((()=>e.item.Version!=o.value?"red":s.value.list[e.item.MachineId]&&i.value!=e.item.Version?"yellow":"green")),k=()=>{if(!e.config)return;if(!a.value)return;const t=s.value.list[e.item.MachineId];if(t)if([0,1,3,5].indexOf(t.Status)>=0)c.nk.error("操作中,请稍后!");else if(6!=t.Status){if(2==t.Status){const t=(0,d.KR)(i.value),a=[(0,l.h)(g.P9,{label:`仅[${e.item.MachineName}] -> ${i.value}(最新版本)`,value:i.value})];e.config&&n.value&&a.push((0,l.h)(g.P9,{label:`[所有] -> ${i.value}(最新版本)`,value:`all->${i.value}`})),e.item.Version!=o.value&&i.value!=o.value&&(a.push((0,l.h)(g.P9,{label:`仅[${e.item.MachineName}] -> ${o.value}(服务器版本)`,value:o.value})),e.config&&n.value&&a.push((0,l.h)(g.P9,{label:`[所有] -> ${o.value}(服务器版本)`,value:`all->${o.value}`}))),(0,p.s)({title:"选择版本",message:()=>(0,l.h)(g.AV,{modelValue:t.value,placeholder:"请选择",style:"width:20rem;","onUpdate:modelValue":e=>{t.value=e}},a),confirmButtonText:"确定",cancelButtonText:"取消"}).then((()=>{const a={MachineId:e.item.MachineId,Version:t.value.replace("all->",""),All:t.value.indexOf("all->")>=0};a.All&&(a.MachineId=""),(0,v.lJ)(a)})).catch((()=>{}))}}else p.s.confirm("确定关闭程序吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{exit(e.item.MachineId)})).catch((()=>{}));else c.nk.error("未检测到更新")};return{item:(0,l.EW)((()=>e.item)),updater:s,updaterText:h,updaterColor:f,handleUpdate:k}}},k=a(1241);const b=(0,k.A)(f,[["render",r],["__scopeId","data-v-56d38c60"]]);var y=b},4548:function(e,t,a){a.d(t,{A:function(){return Oe}});var l=a(6768),n=a(4232),s=a.p+"img/memory.a28433e5.svg",o=a.p+"img/wechat.5c371c5d.jpg",i=a.p+"img/alipay.ff9b1e7c.jpg";const r=e=>((0,l.Qi)("data-v-39d602b6"),e=e(),(0,l.jt)(),e),u={class:"status-wrap flex"},d={class:"copy"},c=r((()=>(0,l.Lk)("img",{src:s,alt:"memory"},null,-1))),p=r((()=>(0,l.Lk)("span",null,"赞助",-1))),g=[c,p],v={href:"https://github.com/snltty/linker",target:"_blank"},h=r((()=>(0,l.Lk)("div",{class:"flex-1"},null,-1))),m={class:"export"},f={class:"api"},k={class:"server"},b=r((()=>(0,l.Lk)("div",{class:"pay"},[(0,l.Lk)("img",{src:o,alt:""}),(0,l.Lk)("img",{src:i,alt:""})],-1)));function y(e,t,a,s,o,i){const r=(0,l.g2)("Export"),c=(0,l.g2)("Api"),p=(0,l.g2)("Server"),y=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.CE)("div",u,[(0,l.Lk)("div",d,[(0,l.Lk)("a",{href:"javascript:;",class:"memory",title:"赞助一笔,让作者饱餐一顿",onClick:t[0]||(t[0]=e=>s.state.showPay=!0)},g),(0,l.Lk)("a",v,"©linker "+(0,n.v_)(s.self.Version),1)]),h,(0,l.Lk)("div",m,[(0,l.bF)(r,{config:s.config},null,8,["config"])]),(0,l.Lk)("div",f,[(0,l.bF)(c,{config:s.config},null,8,["config"])]),(0,l.Lk)("div",k,[(0,l.bF)(p,{config:s.config},null,8,["config"])]),(0,l.bF)(y,{modelValue:s.state.showPay,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.showPay=e),title:"赞助linker",width:"300",top:"1vh"},{default:(0,l.k6)((()=>[b])),_:1},8,["modelValue"])])}var w=a(144);const S={href:"javascript:;",title:"此设备的管理接口"};function C(e,t,a,s,o,i){const r=(0,l.g2)("Tools"),u=(0,l.g2)("el-icon"),d=(0,l.g2)("el-popconfirm");return s.config?((0,l.uX)(),(0,l.CE)("div",{key:0,class:(0,n.C4)(["status-api-wrap",{connected:s.connected}])},[(0,l.bF)(d,{"confirm-button-text":"清除","cancel-button-text":"更改",title:"确定你的操作?",onCancel:s.handleShow,onConfirm:s.handleResetConnect},{reference:(0,l.k6)((()=>[(0,l.Lk)("a",S,[(0,l.bF)(u,{size:"16"},{default:(0,l.k6)((()=>[(0,l.bF)(r)])),_:1}),(0,l.eW)(" 管理接口 ")])])),_:1},8,["onCancel","onConfirm"])],2)):(0,l.Q3)("",!0)}var B=a(3830),F=a(4),V=a(7477),_={components:{Tools:V.S0q},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.api.connected)),n=()=>{localStorage.setItem("api-cache",""),window.location.reload()},s=()=>{(0,F.e3)(),(0,F.a1)(`ws://${window.location.hostname}:12345`,"snltty")};return{config:e.config,connected:a,handleShow:s,handleResetConnect:n}}},T=a(1241);const x=(0,T.A)(_,[["render",C],["__scopeId","data-v-4470fcde"]]);var L=x;const I={class:"status-server-wrap"};function R(e,t,a,n,s,o){const i=(0,l.g2)("ServerConfig"),r=(0,l.g2)("ServerVersion"),u=(0,l.g2)("ServerFlow");return(0,l.uX)(),(0,l.CE)("div",I,[(0,l.bF)(i,{config:n.config},null,8,["config"]),(0,l.bF)(r,{config:n.config},null,8,["config"]),(0,l.bF)(u,{config:n.config},null,8,["config"])])}const A=e=>((0,l.Qi)("data-v-72d1fe1e"),e=e(),(0,l.jt)(),e),E=A((()=>(0,l.Lk)("span",null,"信标服务器",-1))),W={class:"dialog-footer t-c"};function z(e,t,a,s,o,i){const r=(0,l.g2)("Promotion"),u=(0,l.g2)("el-icon"),d=(0,l.g2)("el-input"),c=(0,l.g2)("el-form-item"),p=(0,l.g2)("el-form"),g=(0,l.g2)("el-button"),v=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.CE)(l.FK,null,[(0,l.Lk)("a",{href:"javascript:;",class:(0,n.C4)({connected:s.state.connected}),title:"更改你的连接设置",onClick:t[0]||(t[0]=(...e)=>s.handleConfig&&s.handleConfig(...e))},[(0,l.bF)(u,{size:"16"},{default:(0,l.k6)((()=>[(0,l.bF)(r)])),_:1}),(0,l.eW)(),E],2),(0,l.bF)(v,{modelValue:s.state.show,"onUpdate:modelValue":t[4]||(t[4]=e=>s.state.show=e),title:"连接设置",width:"300","append-to-body":""},{footer:(0,l.k6)((()=>[(0,l.Lk)("div",W,[(0,l.bF)(g,{onClick:t[3]||(t[3]=e=>s.state.show=!1),loading:s.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)("取消")])),_:1},8,["loading"]),(0,l.bF)(g,{type:"primary",onClick:s.handleSave,loading:s.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)("确定保存")])),_:1},8,["onClick","loading"])])])),default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(p,{model:s.state.form,rules:s.state.rules,"label-width":"6rem"},{default:(0,l.k6)((()=>[(0,l.bF)(c,{label:"机器名",prop:"name"},{default:(0,l.k6)((()=>[(0,l.bF)(d,{modelValue:s.state.form.name,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.form.name=e),maxlength:"12","show-word-limit":""},null,8,["modelValue"])])),_:1}),(0,l.bF)(c,{label:"分组名",prop:"groupid"},{default:(0,l.k6)((()=>[(0,l.bF)(d,{modelValue:s.state.form.groupid,"onUpdate:modelValue":t[2]||(t[2]=e=>s.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 P=a(9299),K=a(1219),D={components:{Promotion:V.Yk4},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.hasAccess("Config"))),n=(0,w.Kh)({show:!1,loading:!1,connected:(0,l.EW)((()=>t.value.signin.Connected)),form:{name:t.value.config.Client.Name,groupid:t.value.config.Client.GroupId},rules:{}}),s=()=>{e.config&&a.value&&(n.form.name=t.value.config.Client.Name,n.form.groupid=t.value.config.Client.GroupId,n.show=!0)},o=()=>{n.loading=!0,(0,P.rd)(n.form).then((()=>{n.loading=!1,n.show=!1,K.nk.success("已操作")})).catch((e=>{n.loading=!1,K.nk.success("操作失败!")}))};return{config:e.config,state:n,handleConfig:s,handleSave:o}}};const $=(0,T.A)(D,[["render",z],["__scopeId","data-v-72d1fe1e"]]);var M=$;function X(e,t,a,s,o,i){const r=(0,l.g2)("el-table-column"),u=(0,l.g2)("el-button"),d=(0,l.g2)("el-table"),c=(0,l.g2)("el-dialog"),p=(0,l.g2)("ServerFlowMessenger"),g=(0,l.g2)("ServerFlowSForward"),v=(0,l.g2)("ServerFlowRelay");return(0,l.uX)(),(0,l.CE)(l.FK,null,[s.config?((0,l.uX)(),(0,l.CE)("a",{key:0,href:"javascript:;",title:"linker服务端网速,点击查看详细信息",onClick:t[0]||(t[0]=(...e)=>s.handleShow&&s.handleShow(...e))},[(0,l.Lk)("p",null,"上传 "+(0,n.v_)(s.state.overallSendtSpeed)+"/s",1),(0,l.Lk)("p",null,"下载 "+(0,n.v_)(s.state.overallReceiveSpeed)+"/s",1)])):(0,l.Q3)("",!0),(0,l.bF)(c,{title:s.state.time,"destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.show=e),width:"540"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(d,{data:s.state.list,border:"",size:"small",width:"100%"},{default:(0,l.k6)((()=>[(0,l.bF)(r,{prop:"text",label:"类别",width:"80"}),(0,l.bF)(r,{prop:"sendtBytes",label:"已上传",sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.sendtBytesText),1)])),_:1}),(0,l.bF)(r,{prop:"sendtSpeed",label:"上传速度",sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.sendtSpeedText)+"/s",1)])),_:1}),(0,l.bF)(r,{prop:"receiveBytes",label:"已下载",sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.receiveBytesText),1)])),_:1}),(0,l.bF)(r,{prop:"receiveSpeed",label:"下载速度",sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.receiveSpeedText)+"/s",1)])),_:1}),(0,l.bF)(r,{prop:"oper",label:"操作",width:"64"},{default:(0,l.k6)((e=>[e.row.detail?((0,l.uX)(),(0,l.Wv)(u,{key:0,size:"small",onClick:t=>s.handleShowDetail(e.row.id)},{default:(0,l.k6)((()=>[(0,l.eW)("详情")])),_:2},1032,["onClick"])):(0,l.Q3)("",!0)])),_:1})])),_:1},8,["data"])])])),_:1},8,["title","modelValue"]),s.state.details.Messenger?((0,l.uX)(),(0,l.Wv)(p,{key:1,config:s.config,modelValue:s.state.details.Messenger,"onUpdate:modelValue":t[2]||(t[2]=e=>s.state.details.Messenger=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0),s.state.details.SForward?((0,l.uX)(),(0,l.Wv)(g,{key:2,config:s.config,modelValue:s.state.details.SForward,"onUpdate:modelValue":t[3]||(t[3]=e=>s.state.details.SForward=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0),s.state.details.Relay?((0,l.uX)(),(0,l.Wv)(v,{key:3,config:s.config,modelValue:s.state.details.Relay,"onUpdate:modelValue":t[4]||(t[4]=e=>s.state.details.Relay=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0)],64)}a(4114);const U=()=>(0,F.zG)("flowClient/GetFlows"),G=()=>(0,F.zG)("flowClient/GetMessengerFlows"),O=e=>(0,F.zG)("flowClient/GetSForwardFlows",e),j=e=>(0,F.zG)("flowClient/GetRelayFlows",e);function Q(e,t,a,s,o,i){const r=(0,l.g2)("el-table-column"),u=(0,l.g2)("el-table"),d=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(d,{title:"信标流量",class:"options-center",top:"1vh","destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.show=e),width:"680"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(u,{data:s.state.list,stripe:"",border:"",size:"small",width:"100%",height:"60vh"},{default:(0,l.k6)((()=>[(0,l.bF)(r,{prop:"id",label:"信标id",width:"200"}),(0,l.bF)(r,{prop:"sendtBytes",label:"已上传",sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.sendtBytesText),1)])),_:1}),(0,l.bF)(r,{prop:"sendtSpeed",label:"上传速度",sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.sendtSpeedText)+"/s",1)])),_:1}),(0,l.bF)(r,{prop:"receiveBytes",label:"已下载",sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.receiveBytesText),1)])),_:1}),(0,l.bF)(r,{prop:"receiveSpeed",label:"下载速度",sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.receiveSpeedText)+"/s",1)])),_:1})])),_:1},8,["data"])])])),_:1},8,["modelValue"])}var N={props:["modelValue","config"],emits:["update:modelValue"],setup(e,{emit:t}){const a=(0,w.Kh)({show:!0,timer:0,list:[],old:null});(0,l.wB)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const n={0:"登入信标",1:"客户端列表",2:"客户端删除",4:"客户端改名(转发)",7:"获取服务器版本",8:"客户端搜索ids",9:"客户端id列表",10:"客户端排序",11:"客户端在线",12:"生成客户端id",13:"登入信标V_1_3_1",2001:"外网端口(转发)",2002:"外网端口(转发)",2003:"开始打洞(转发)",2004:"开始打洞(转发)",2005:"打洞失败(转发)",2006:"打洞失败(转发)",2007:"打洞成功(转发)",2008:"打洞成功(转发)",2009:"隧道配置(转发)",2010:"隧道配置(转发)",2012:"隧道同步(转发)",2101:"中继通知(转发)",2102:"中继通知(转发)",2103:"中继请求",2105:"中继连通测试",2201:"运行网卡(转发)",2203:"停止网卡(转发)",2205:"更新网卡(转发)",2206:"同步网卡(转发)",2207:"同步网卡(转发)",2301:"添加内网穿透",2302:"移除内网穿透",2303:"通知内网穿透(转发)",2304:"通知内网穿透UDP(转发)",2305:"获取穿透列表(转发)",2401:"测试端口转发(转发)",2403:"获取端口转发(转发)",2503:"获取权限(转发)",2504:"获取权限(转发)",2506:"更新权限(转发)",2508:"同步密钥(转发)",2510:"同步服务器(转发)",2601:"更新信息(转发)",2602:"更新信息(转发)",2603:"确认更新(转发)",2604:"确认更新(转发)",2605:"重启(转发)",2607:"服务器更新信息",2608:"确认服务器更新",2609:"服务器重启",2610:"订阅更新信息(转发)",2611:"订阅更新信息(转发)",2701:"服务器流量",2702:"服务器信标流量",2703:"服务器中继流量",2704:"服务器内网穿透流量"},s=()=>{G().then((e=>{const t=a.old||e,l=[];for(let a in e){const s=e[a],i=t[a],r=`[${a}]${n[`${a}`]||"未知"}`;l.push({id:r,sendtBytes:s.SendtBytes,sendtBytesText:o(s.SendtBytes),sendtSpeed:s.SendtBytes-i.SendtBytes,sendtSpeedText:o(s.SendtBytes-i.SendtBytes),receiveBytes:s.ReceiveBytes,receiveBytesText:o(s.ReceiveBytes),receiveSpeed:s.ReceiveBytes-i.ReceiveBytes,receiveSpeedText:o(s.ReceiveBytes-i.ReceiveBytes)})}a.list=l.filter((e=>!!e.id)),a.old=e,a.timer=setTimeout(s,1e3)})).catch((e=>{a.timer=setTimeout(s,1e3)}))},o=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`};return(0,l.sV)((()=>{s()})),(0,l.hi)((()=>{clearTimeout(a.timer)})),{config:e.config,state:a}}};const J=(0,T.A)(N,[["render",Q],["__scopeId","data-v-6238c500"]]);var Y=J;const q={class:"head"},H={class:"page t-c"},Z={class:"page-wrap"};function ee(e,t,a,s,o,i){const r=(0,l.g2)("el-input"),u=(0,l.g2)("el-table-column"),d=(0,l.g2)("el-table"),c=(0,l.g2)("el-pagination"),p=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(p,{title:"内网穿透流量",class:"options-center",top:"1vh","destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.show=e),width:"680"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",q,[(0,l.bF)(r,{modelValue:s.state.page.Key,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.page.Key=e),placeholder:"域名/端口搜索"},null,8,["modelValue"])]),(0,l.bF)(d,{data:s.state.list,stripe:"",border:"",size:"small",width:"100%",height:"60vh",onSortChange:s.handleSort},{default:(0,l.k6)((()=>[(0,l.bF)(u,{prop:"Key",label:"域名/端口",width:"200"}),(0,l.bF)(u,{prop:"SendtBytes",label:"已上传",sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.SendtBytesText),1)])),_:1}),(0,l.bF)(u,{prop:"DiffSendtBytes",label:"上传速度",sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.DiffSendtBytesText)+"/s",1)])),_:1}),(0,l.bF)(u,{prop:"ReceiveBytes",label:"已下载",sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.ReceiveBytesText),1)])),_:1}),(0,l.bF)(u,{prop:"DiffReceiveBytes",label:"下载速度",sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.DiffReceiveBytesText)+"/s",1)])),_:1})])),_:1},8,["data","onSortChange"]),(0,l.Lk)("div",H,[(0,l.Lk)("div",Z,[(0,l.bF)(c,{small:"",background:"",layout:"total,prev,pager, next",total:s.state.page.Count,"page-size":s.state.page.PageSize,"current-page":s.state.page.Page,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","onCurrentChange"])])])])])),_:1},8,["modelValue"])}var te={props:["modelValue","config"],emits:["update:modelValue"],setup(e,{emit:t}){const a=(0,w.Kh)({show:!0,timer:0,list:[],page:{Key:"",Page:1,PageSize:15,Count:0,Order:1,OrderType:0}});(0,l.wB)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const n=()=>{O({Key:a.page.Key,Page:a.page.Page,PageSize:a.page.PageSize,Order:a.page.Order,OrderType:a.page.OrderType}).then((e=>{try{a.page.Page=e.Page,a.page.PageSize=e.PageSize,a.page.Count=e.Count;const t=[];for(let a=0;a{a.timer=setTimeout(n,1e3)}))},s=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`},o=e=>{e&&(a.page.Page=e)},i=e=>{const t={ascending:1,descending:0}[e.order],l={SendtBytes:1,DiffSendtBytes:2,ReceiveBytes:3,DiffReceiveBytes:4}[e.prop];a.page.Order=l,a.page.OrderType=t};return(0,l.sV)((()=>{n()})),(0,l.hi)((()=>{clearTimeout(a.timer)})),{config:e.config,state:a,handlePageChange:o,handleSort:i}}};const ae=(0,T.A)(te,[["render",ee],["__scopeId","data-v-3e577fa7"]]);var le=ae;const ne={class:"head"},se={class:"page t-c"},oe={class:"page-wrap"};function ie(e,t,a,s,o,i){const r=(0,l.g2)("el-input"),u=(0,l.g2)("el-table-column"),d=(0,l.g2)("el-table"),c=(0,l.g2)("el-pagination"),p=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(p,{title:"中继流量",class:"options-center",top:"1vh","destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.show=e),width:"680"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",ne,[(0,l.bF)(r,{modelValue:s.state.page.Key,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.page.Key=e),placeholder:"名字搜索"},null,8,["modelValue"])]),(0,l.bF)(d,{data:s.state.list,stripe:"",border:"",size:"small",width:"100%",height:"60vh",onSortChange:s.handleSort},{default:(0,l.k6)((()=>[(0,l.bF)(u,{prop:"FromName",label:"发起端",width:"120"}),(0,l.bF)(u,{prop:"ToName",label:"目标端",width:"120"}),(0,l.bF)(u,{prop:"SendtBytes",label:"已上传",sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.SendtBytesText),1)])),_:1}),(0,l.bF)(u,{prop:"DiffSendtBytes",label:"上传速度",sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.DiffSendtBytesText)+"/s",1)])),_:1}),(0,l.bF)(u,{prop:"ReceiveBytes",label:"已下载",sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.ReceiveBytesText),1)])),_:1}),(0,l.bF)(u,{prop:"DiffReceiveBytes",label:"下载速度",sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,n.v_)(e.row.DiffReceiveBytesText)+"/s",1)])),_:1})])),_:1},8,["data","onSortChange"]),(0,l.Lk)("div",se,[(0,l.Lk)("div",oe,[(0,l.bF)(c,{small:"",background:"",layout:"total,prev,pager, next",total:s.state.page.Count,"page-size":s.state.page.PageSize,"current-page":s.state.page.Page,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","onCurrentChange"])])])])])),_:1},8,["modelValue"])}var re={props:["modelValue","config"],emits:["update:modelValue"],setup(e,{emit:t}){const a=(0,w.Kh)({show:!0,timer:0,list:[],page:{Key:"",Page:1,PageSize:15,Count:0,Order:1,OrderType:0}});(0,l.wB)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const n=()=>{j({Key:a.page.Key,Page:a.page.Page,PageSize:a.page.PageSize,Order:a.page.Order,OrderType:a.page.OrderType}).then((e=>{try{a.page.Page=e.Page,a.page.PageSize=e.PageSize,a.page.Count=e.Count;const t=[];for(let a=0;a{a.timer=setTimeout(n,1e3)}))},s=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`},o=e=>{e&&(a.page.Page=e)},i=e=>{const t={ascending:1,descending:0}[e.order],l={SendtBytes:1,DiffSendtBytes:2,ReceiveBytes:3,DiffReceiveBytes:4}[e.prop];a.page.Order=l,a.page.OrderType=t};return(0,l.sV)((()=>{n()})),(0,l.hi)((()=>{clearTimeout(a.timer)})),{config:e.config,state:a,handlePageChange:o,handleSort:i}}};const ue=(0,T.A)(re,[["render",ie],["__scopeId","data-v-7dbf3a4a"]]);var de=ue,ce={props:["config"],components:{ServerFlowMessenger:Y,ServerFlowSForward:le,ServerFlowRelay:de},setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.hasAccess("SForwardFlow"))),n=(0,l.EW)((()=>t.value.hasAccess("RelayFlow"))),s=(0,w.Kh)({show:!1,timer:0,overallSendtSpeed:"0000.00KB",overallReceiveSpeed:"0000.00KB",time:"",list:[],old:null,details:{Messenger:!1,SForward:!1,Relay:!1}}),o=()=>{s.show=!0},i=e=>{s.details[e]=!0},r={External:{text:"外网端口",detail:!1},Relay:{text:"中继",detail:n.value},Messenger:{text:"信标",detail:!0},SForward:{text:"内网穿透",detail:a.value}},u=()=>{U().then((e=>{const t=s.old||e;let a=0,l=0,n=0,o=0;for(let s in t.Items)a+=t.Items[s].ReceiveBytes,l+=t.Items[s].SendtBytes;for(let s in e.Items)n+=e.Items[s].ReceiveBytes,o+=e.Items[s].SendtBytes;s.overallSendtSpeed=d(o-l),s.overallReceiveSpeed=d(n-a),s.time=`从 ${e.Start}启动 至今`;const i=[];for(let s in e.Items){const a=e.Items[s],l=t.Items[s],n=r[`${s}`]||{text:"未知",detail:!1};i.push({id:s,text:n.text,detail:n.detail,sendtBytes:a.SendtBytes,sendtBytesText:d(a.SendtBytes),sendtSpeed:a.SendtBytes-l.SendtBytes,sendtSpeedText:d(a.SendtBytes-l.SendtBytes),receiveBytes:a.ReceiveBytes,receiveBytesText:d(a.ReceiveBytes),receiveSpeed:a.ReceiveBytes-l.ReceiveBytes,receiveSpeedText:d(a.ReceiveBytes-l.ReceiveBytes)})}s.list=i.filter((e=>!!e.id)),s.old=e,s.timer=setTimeout(u,1e3)})).catch((e=>{s.timer=setTimeout(u,1e3)}))},d=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`};return(0,l.sV)((()=>{u()})),(0,l.hi)((()=>{clearTimeout(s.timer)})),{hasSForwardFlow:a,config:e.config,state:s,handleShow:o,handleShowDetail:i}}};const pe=(0,T.A)(ce,[["render",X],["__scopeId","data-v-6ba77111"]]);var ge=pe;const ve=["title"],he={key:0,class:"progress"},me={key:1,class:"progress"};function fe(e,t,a,s,o,i){const r=(0,l.g2)("Loading"),u=(0,l.g2)("el-icon"),d=(0,l.g2)("Download"),c=(0,l.g2)("CircleCheck");return(0,l.uX)(),(0,l.CE)("a",{href:"javascript:;",title:"服务端的程序版本",onClick:t[0]||(t[0]=(...e)=>s.handleUpdate&&s.handleUpdate(...e)),class:(0,n.C4)(["download",s.updateColor()])},[(0,l.Lk)("span",null,(0,n.v_)(s.state.version),1),s.updaterCurrent.Version?((0,l.uX)(),(0,l.CE)(l.FK,{key:0},[1==s.updaterCurrent.Status?((0,l.uX)(),(0,l.Wv)(u,{key:0,size:"14",class:"loading"},{default:(0,l.k6)((()=>[(0,l.bF)(r)])),_:1})):2==s.updaterServer.Status?((0,l.uX)(),(0,l.Wv)(u,{key:1,size:"14"},{default:(0,l.k6)((()=>[(0,l.bF)(d)])),_:1})):3==s.updaterServer.Status||5==s.updaterServer.Status?((0,l.uX)(),(0,l.CE)(l.FK,{key:2},[(0,l.bF)(u,{size:"14",class:"loading"},{default:(0,l.k6)((()=>[(0,l.bF)(r)])),_:1}),0==s.updaterServer.Length?((0,l.uX)(),(0,l.CE)("span",he,"0%")):((0,l.uX)(),(0,l.CE)("span",me,(0,n.v_)(parseInt(s.updaterServer.Current/s.updaterServer.Length*100))+"%",1))],64)):6==s.updaterServer.Status?((0,l.uX)(),(0,l.Wv)(u,{key:3,size:"14",class:"yellow"},{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1})):(0,l.Q3)("",!0)],64)):((0,l.uX)(),(0,l.Wv)(u,{key:1,size:"14"},{default:(0,l.k6)((()=>[(0,l.bF)(d)])),_:1}))],10,ve)}var ke=a(2933),be=a(920),ye={components:{Promotion:V.Yk4,Download:V.f5X,Loading:V.Rhj,CircleCheck:V.rW7,ServerFlow:ge},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.hasAccess("UpdateServer"))),n=(0,w.KR)({Version:"",Msg:[],DateTime:"",Status:0,Length:0,Current:0}),s=(0,w.KR)({Version:"",Status:0,Length:0,Current:0}),o=(0,l.EW)((()=>`${n.value.Version}->${n.value.DateTime}\n${n.value.Msg.map(((e,t)=>`${t+1}、${e}`)).join("\n")}`)),i=(0,w.Kh)({show:!1,loading:!1,connected:(0,l.EW)((()=>t.value.signin.Connected)),version:(0,l.EW)((()=>t.value.signin.Version))}),r=()=>{(0,be.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)}))},u=()=>{(0,be.BJ)().then((e=>{s.value.Version=e.Version,s.value.Status=e.Status,s.value.Length=e.Length,s.value.Current=e.Current,s.value.Status>2&&s.value.Status<6&&setTimeout((()=>{u()}),1e3)})).catch((()=>{setTimeout((()=>{u()}),1e3)}))},d=()=>n.value.Version?s.value.Status<=2?i.version!=n.value.Version?`不是最新版本(${n.value.Version}),建议更新\n${o.value}`:`是最新版本,但我无法阻止你喜欢更新\n${o.value}`:{3:"正在下载",4:"已下载",5:"正在解压",6:"已解压,请重启"}[s.value.Status]:"未检测到更新",c=()=>i.version!=n.value.Version?"yellow":"green",p=()=>{e.config&&a.value&&(n.value.Version?[0,1,3,5].indexOf(s.value.Status)>=0?K.nk.error("操作中,请稍后!"):6!=s.value.Status?2==n.value.Status&&ke.s.confirm("确定更新服务端吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,be.y2)(n.value.Version).then((()=>{setTimeout((()=>{u()}),1e3)}))})).catch((()=>{})):ke.s.confirm("确定关闭服务端吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,be.aP)()})).catch((()=>{})):K.nk.error("未检测到更新"))};return(0,l.sV)((()=>{r(),u()})),{config:e.config,state:i,updaterCurrent:n,updaterServer:s,handleUpdate:p,updateText:d,updateColor:c}}};const we=(0,T.A)(ye,[["render",fe],["__scopeId","data-v-70063cba"]]);var Se=we,Ce={components:{ServerConfig:M,ServerFlow:ge,ServerVersion:Se},props:["config"],setup(e){const t=(0,w.Kh)({show:!1,loading:!1});return{config:e.config,state:t}}};const Be=(0,T.A)(Ce,[["render",R],["__scopeId","data-v-6468e656"]]);var Fe=Be;const Ve=e=>((0,l.Qi)("data-v-117ef7b0"),e=e(),(0,l.jt)(),e),_e={key:0,class:"status-export-wrap"},Te={class:"port-wrap"},xe=Ve((()=>(0,l.Lk)("div",{class:"text"}," 导出配置,作为子设备运行,如果使用docker,容器映射configs文件夹即可 ",-1))),Le={class:"body"},Ie={class:"card-header"},Re={class:"flex"},Ae={style:{"margin-left":"2rem"}},Ee=Ve((()=>(0,l.Lk)("span",null,"设备名 : ",-1))),We=Ve((()=>(0,l.Lk)("span",null,"管理密码 : ",-1)));function ze(e,t,a,n,s,o){const i=(0,l.g2)("Share"),r=(0,l.g2)("el-icon"),u=(0,l.g2)("el-checkbox"),d=(0,l.g2)("el-popover"),c=(0,l.g2)("el-input"),p=(0,l.g2)("Access"),g=(0,l.g2)("el-card"),v=(0,l.g2)("el-button"),h=(0,l.g2)("el-dialog");return n.config&&n.hasExport?((0,l.uX)(),(0,l.CE)("div",_e,[(0,l.Lk)("a",{href:"javascript:;",title:"此设备的管理接口",onClick:t[0]||(t[0]=e=>n.state.show=!0)},[(0,l.bF)(r,{size:"16"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1}),(0,l.eW)(" 导出配置 ")]),(0,l.bF)(h,{class:"options-center",title:"导出配置","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[5]||(t[5]=e=>n.state.show=e),center:"",width:"580",top:"1vh"},{footer:(0,l.k6)((()=>[(0,l.bF)(v,{plain:"",onClick:t[4]||(t[4]=e=>n.state.show=!1),loading:n.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)("取消")])),_:1},8,["loading"]),(0,l.bF)(v,{type:"success",plain:"",onClick:n.handleExport,loading:n.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)("确定导出")])),_:1},8,["onClick","loading"])])),default:(0,l.k6)((()=>[(0,l.Lk)("div",Te,[xe,(0,l.Lk)("div",Le,[(0,l.bF)(g,{shadow:"never"},{header:(0,l.k6)((()=>[(0,l.Lk)("div",Ie,[(0,l.Lk)("div",Re,[(0,l.Lk)("div",null,[(0,l.bF)(d,{placement:"top-start",title:"tips",width:200,trigger:"hover",content:"这将生成唯一ID,多台设备使用产生冲突,挤压下线"},{reference:(0,l.k6)((()=>[(0,l.bF)(u,{disabled:n.onlyNode,modelValue:n.state.single,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.single=e),label:"单设备"},null,8,["disabled","modelValue"])])),_:1})]),(0,l.Lk)("div",Ae,[Ee,(0,l.bF)(c,{disabled:!n.state.single,modelValue:n.state.name,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.name=e),maxlength:"12","show-word-limit":"",style:{width:"15rem"}},null,8,["disabled","modelValue"])]),(0,l.Lk)("div",null,[We,(0,l.bF)(c,{type:"password","show-password":"",disabled:n.onlyNode,modelValue:n.state.apipassword,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.apipassword=e),maxlength:"36","show-word-limit":"",style:{width:"15rem"}},null,8,["disabled","modelValue"])])])])])),default:(0,l.k6)((()=>[(0,l.bF)(p,{ref:"accessDom",machineid:n.machineId},null,8,["machineid"])])),_:1})])])])),_:1},8,["modelValue"])])):(0,l.Q3)("",!0)}var Pe=a(8835),Ke=a(6611),De={components:{Share:V.SYj,Access:Ke.A},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.hasAccess("Export"))),n=(0,l.EW)((()=>t.value.config.Client.OnlyNode)),s=(0,l.EW)((()=>t.value.config.Client.Id)),o=(0,w.Kh)({show:!1,loading:!1,single:!0,name:"",apipassword:t.value.config.Client.CApi.ApiPassword}),i=(0,w.KR)(null),r=()=>{if(!a.value)return;const e={access:i.value.getValue(),single:o.single,name:o.name,apipassword:o.apipassword};if(e.single){if(!e.name)return void K.nk.error("请输入设备名")}else e.name="";if(!e.single||o.name)return e;K.nk.error("请输入管理密码")},u=()=>{const e=document.createElement("a");o.single?e.download=`client-node-export-${o.name}.zip`:e.download="client-node-export.zip",e.href="/client-node-export.zip",document.body.appendChild(e),e.click(),document.body.removeChild(e)},d=()=>{const e=r();e&&(o.loading=!0,(0,Pe.P$)(e).then((()=>{o.loading=!1,o.show=!1,K.nk.success("导出成功"),u()})).catch((()=>{o.loading=!1})))};return{config:e.config,onlyNode:n,hasExport:a,machineId:s,state:o,accessDom:i,handleExport:d}}};const $e=(0,T.A)(De,[["render",ze],["__scopeId","data-v-117ef7b0"]]);var Me=$e,Xe=a(2126),Ue={components:{Api:L,Server:Fe,Export:Me,UpdaterBtn:Xe.A},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.self)),n=(0,w.Kh)({showPay:!1});return{state:n,config:e.config,self:a}}};const Ge=(0,T.A)(Ue,[["render",y],["__scopeId","data-v-39d602b6"]]);var Oe=Ge}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/236.a9f9a057.js b/linker.tray.win/web/js/236.a9f9a057.js
deleted file mode 100644
index fecef7b8..00000000
--- a/linker.tray.win/web/js/236.a9f9a057.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[236],{8902:function(e,l,r){r.r(l),r.d(l,{default:function(){return Fe}});var a=r(6768);const t={class:"app-wrap flex flex-column flex-nowrap"},o={class:"head"},s={class:"body flex-1 relative",ref:"wrap"},n={class:"home absolute"},u={class:"status"};function d(e,l,r,d,m,i){const f=(0,a.g2)("Head"),c=(0,a.g2)("router-view"),b=(0,a.g2)("Status"),v=(0,a.g2)("Install");return(0,a.uX)(),(0,a.CE)("div",t,[(0,a.Lk)("div",o,[(0,a.bF)(f)]),(0,a.Lk)("div",s,[(0,a.Lk)("div",n,[(0,a.bF)(c)])],512),(0,a.Lk)("div",u,[(0,a.bF)(b,{config:!0}),(0,a.bF)(v)])])}r(4114);var m=r.p+"img/logo.892cb2fb.png",i=r.p+"img/shouye.4c820c0e.svg",f=r.p+"img/fuwuqi.247f2561.svg",c=r.p+"img/dadong.e6fd78bf.svg",b=r.p+"img/anquan.5f8d5e47.svg",v=r.p+"img/rizhi.c3ca751b.svg";const p=e=>((0,a.Qi)("data-v-288c64ff"),e=e(),(0,a.jt)(),e),g={class:"head flex"},k={class:"logo"},F=p((()=>(0,a.Lk)("img",{src:m,alt:""},null,-1))),w={class:"menu flex-1"},y={class:"flex"},S=p((()=>(0,a.Lk)("img",{src:i},null,-1))),h={key:0},_=p((()=>(0,a.Lk)("img",{src:f},null,-1))),K={key:1},V=p((()=>(0,a.Lk)("img",{src:c},null,-1))),C={key:2},P=p((()=>(0,a.Lk)("img",{src:b},null,-1))),x={key:3},L=p((()=>(0,a.Lk)("img",{src:v},null,-1))),W={class:"image"};function U(e,l,r,t,o,s){const n=(0,a.g2)("router-link"),u=(0,a.g2)("Background");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.Lk)("div",g,[(0,a.Lk)("div",k,[(0,a.bF)(n,{to:{name:"FullIndex"}},{default:(0,a.k6)((()=>[F])),_:1})]),(0,a.Lk)("div",w,[(0,a.Lk)("ul",y,[(0,a.Lk)("li",null,[(0,a.bF)(n,{to:{name:"FullIndex"}},{default:(0,a.k6)((()=>[S,(0,a.eW)(" 首页")])),_:1})]),t.hasConfig?((0,a.uX)(),(0,a.CE)("li",h,[(0,a.bF)(n,{to:{name:"FullServers"}},{default:(0,a.k6)((()=>[_,(0,a.eW)(" 服务器")])),_:1})])):(0,a.Q3)("",!0),t.hasTransport?((0,a.uX)(),(0,a.CE)("li",K,[(0,a.bF)(n,{to:{name:"FullTransport"}},{default:(0,a.k6)((()=>[V,(0,a.eW)(" 打洞协议")])),_:1})])):(0,a.Q3)("",!0),t.hasAction?((0,a.uX)(),(0,a.CE)("li",C,[(0,a.bF)(n,{to:{name:"FullAction"}},{default:(0,a.k6)((()=>[P,(0,a.eW)(" 自定义验证")])),_:1})])):(0,a.Q3)("",!0),t.hasLogger?((0,a.uX)(),(0,a.CE)("li",x,[(0,a.bF)(n,{to:{name:"FullLogger"}},{default:(0,a.k6)((()=>[L,(0,a.eW)(" 日志")])),_:1})])):(0,a.Q3)("",!0)])]),(0,a.Lk)("div",W,[(0,a.bF)(u,{name:"full"})])])])}var A=r(7477),X=r(3830),j=r(5096),Q={components:{Promotion:A.Yk4,StarFilled:A.BQ2,WarnTriangleFilled:A.DtC,PhoneFilled:A.pXb,HelpFilled:A.adD,Background:j.A},setup(){const e=(0,X.B)(),l=(0,a.EW)((()=>e.value.hasAccess("Config"))),r=(0,a.EW)((()=>e.value.hasAccess("LoggerShow"))),t=(0,a.EW)((()=>e.value.hasAccess("Transport"))),o=(0,a.EW)((()=>e.value.hasAccess("Action")));return{hasConfig:l,hasLogger:r,hasTransport:t,hasAction:o}}},E=r(1241);const I=(0,E.A)(Q,[["render",U],["__scopeId","data-v-288c64ff"]]);var N=I,q=r(904);const R=e=>((0,a.Qi)("data-v-41d4c7eb"),e=e(),(0,a.jt)(),e),D={class:"head"},B={class:"body"},O=R((()=>(0,a.Lk)("div",{class:"t-c"},"完成保存后,请重启软件",-1))),T={class:"footer t-c"};function J(e,l,r,t,o,s){const n=(0,a.g2)("el-step"),u=(0,a.g2)("el-steps"),d=(0,a.g2)("Common"),m=(0,a.g2)("el-card"),i=(0,a.g2)("Server"),f=(0,a.g2)("Client"),c=(0,a.g2)("el-button"),b=(0,a.g2)("el-dialog");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.bF)(b,{modelValue:t.state.show,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.show=e),title:"初始化配置",width:"600",top:"2vh"},{default:(0,a.k6)((()=>[(0,a.Lk)("div",null,[(0,a.Lk)("div",D,[(0,a.bF)(u,{active:t.step.step,"finish-status":"success"},{default:(0,a.k6)((()=>[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(t.state.steps,((e,l)=>((0,a.uX)(),(0,a.Wv)(n,{title:e},null,8,["title"])))),256))])),_:1},8,["active"])]),(0,a.Lk)("div",B,[1==t.step.step?((0,a.uX)(),(0,a.Wv)(m,{key:0,shadow:"never"},{default:(0,a.k6)((()=>[(0,a.bF)(d,{ref:"currentDom"},null,512)])),_:1})):(0,a.Q3)("",!0),2==t.step.step?((0,a.uX)(),(0,a.Wv)(m,{key:1,shadow:"never"},{default:(0,a.k6)((()=>[(0,a.bF)(i,{ref:"currentDom"},null,512)])),_:1})):(0,a.Q3)("",!0),3==t.step.step?((0,a.uX)(),(0,a.Wv)(m,{key:2,shadow:"never"},{default:(0,a.k6)((()=>[(0,a.bF)(f,{ref:"currentDom"},null,512)])),_:1})):(0,a.Q3)("",!0),4==t.step.step?((0,a.uX)(),(0,a.Wv)(m,{key:3,shadow:"never"},{default:(0,a.k6)((()=>[O])),_:1})):(0,a.Q3)("",!0)]),(0,a.Lk)("div",T,[(0,a.bF)(c,{disabled:t.step.step<=1,onClick:t.handlePrev},{default:(0,a.k6)((()=>[(0,a.eW)("上一步")])),_:1},8,["disabled","onClick"]),t.step.step[(0,a.eW)("下一步")])),_:1},8,["onClick"])):((0,a.uX)(),(0,a.Wv)(c,{key:1,type:"primary",onClick:t.handleSave},{default:(0,a.k6)((()=>[(0,a.eW)("完成")])),_:1},8,["onClick"]))])])])),_:1},8,["modelValue"])])}var H=r(8835),z=r(144),G=r(1219);const Y={class:"t-c"};function M(e,l,r,t,o,s){const n=(0,a.g2)("el-checkbox");return(0,a.uX)(),(0,a.CE)("div",Y,[(0,a.bF)(n,{modelValue:t.state.form.client,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.form.client=e),label:"作为客户端"},null,8,["modelValue"]),(0,a.bF)(n,{modelValue:t.state.form.server,"onUpdate:modelValue":l[1]||(l[1]=e=>t.state.form.server=e),label:"作为服务端"},null,8,["modelValue"])])}var Z={name:"Common",setup(){const e=(0,a.WQ)("step"),l=(0,z.Kh)({form:{client:e.value.form.common.client||e.value.json.Common&&e.value.json.Common.client||!0,server:e.value.form.common.server||e.value.json.Common&&e.value.json.Common.server||!1}}),r=e=>new Promise(((e,r)=>{l.form.client||l.form.server?e({json:{Common:{client:l.form.client,server:l.form.server,modes:[l.form.client?"client":"",l.form.server?"server":""].filter((e=>!!e))}},form:{common:JSON.parse(JSON.stringify(l.form))}}):(G.nk.error("请选择客户端或服务端"),r())}));return{state:l,handleValidate:r}}};const $=(0,E.A)(Z,[["render",M]]);var ee=$;const le=e=>((0,a.Qi)("data-v-47b95c93"),e=e(),(0,a.jt)(),e),re=le((()=>(0,a.Lk)("div",{class:"t-c w-100"},[(0,a.Lk)("p",null,"端口为0则不监听,相同分组名之间的客户端相互可见")],-1)));function ae(e,l,r,t,o,s){const n=(0,a.g2)("el-form-item"),u=(0,a.g2)("el-input"),d=(0,a.g2)("el-col"),m=(0,a.g2)("el-row"),i=(0,a.g2)("el-checkbox"),f=(0,a.g2)("el-form");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.bF)(f,{ref:"formDom",model:t.state.form,rules:t.state.rules,"label-width":"8rem"},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[re])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"机器名",prop:"name"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.name,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.form.name=e),maxlength:"12","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"分组名",prop:"groupid"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.groupid,"onUpdate:modelValue":l[1]||(l[1]=e=>t.state.form.groupid=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"接口端口",prop:"api"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.api,"onUpdate:modelValue":l[2]||(l[2]=e=>t.state.form.api=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"网页端口",prop:"web"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.web,"onUpdate:modelValue":l[3]||(l[3]=e=>t.state.form.web=e)},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"接口密码",prop:"password"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{style:{width:"42rem"},type:"password",modelValue:t.state.form.password,"onUpdate:modelValue":l[4]||(l[4]=e=>t.state.form.password=e),"show-password":"",maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{"label-width":"8rem",prop:"hasServer"},{default:(0,a.k6)((()=>[(0,a.bF)(i,{modelValue:t.state.form.hasServer,"onUpdate:modelValue":l[5]||(l[5]=e=>t.state.form.hasServer=e),label:"我有服务器",size:"large"},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),t.state.form.hasServer?((0,a.uX)(),(0,a.Wv)(n,{key:0,label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"信标服务",prop:"server"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.server,"onUpdate:modelValue":l[6]||(l[6]=e=>t.state.form.server=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"信标密钥",prop:"serverSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.serverSecretKey,"onUpdate:modelValue":l[7]||(l[7]=e=>t.state.form.serverSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1})):(0,a.Q3)("",!0),t.state.form.hasServer?((0,a.uX)(),(0,a.Wv)(n,{key:1,label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"穿透密钥",prop:"sForwardSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.sForwardSecretKey,"onUpdate:modelValue":l[8]||(l[8]=e=>t.state.form.sForwardSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"中继密钥",prop:"relaySecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.relaySecretKey,"onUpdate:modelValue":l[9]||(l[9]=e=>t.state.form.relaySecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1})):(0,a.Q3)("",!0),t.state.form.hasServer?((0,a.uX)(),(0,a.Wv)(n,{key:2,label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"更新密钥",prop:"updaterSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.updaterSecretKey,"onUpdate:modelValue":l[10]||(l[10]=e=>t.state.form.updaterSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"占位"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{disabled:"",maxlength:"36","show-word-limit":""})])),_:1})])),_:1})])),_:1})])),_:1})):(0,a.Q3)("",!0)])),_:1},8,["model","rules"])])}var te={setup(e){const l=(0,a.WQ)("step"),r=(0,X.B)(),t=(0,z.Kh)({form:{name:l.value.form.client.name||r.value.config.Client.Name,groupid:l.value.form.client.groupid||r.value.config.Client.GroupId,api:l.value.form.client.api||r.value.config.Client.CApi.ApiPort,web:l.value.form.client.web||r.value.config.Client.CApi.WebPort,password:l.value.form.client.password||r.value.config.Client.CApi.ApiPassword,hasServer:l.value.form.client.hasServer||!1,server:l.value.form.client.server||r.value.config.Client.ServerInfo.Host,serverSecretKey:l.value.form.client.serverSecretKey||r.value.config.Client.ServerSecretKey,sForwardSecretKey:l.value.form.client.sForwardSecretKey||r.value.config.Client.SForward.SecretKey,relaySecretKey:l.value.form.client.relaySecretKey||(r.value.config.Client.Relay.Servers[0]||{SecretKey:"snltty"}).SecretKey,updaterSecretKey:l.value.form.client.updaterSecretKey||r.value.config.Client.Updater.SecretKey},rules:{name:[{required:!0,message:"必填",trigger:"blur"}],groupid:[{required:!0,message:"必填",trigger:"blur"}],password:[{required:!0,message:"必填",trigger:"blur"}],api:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}],web:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}]}}),o=(0,z.KR)(null),s=()=>new Promise(((e,l)=>{o.value.validate((r=>{r?e({json:{Client:{name:t.form.name,groupid:t.form.groupid,api:+t.form.api,web:+t.form.web,password:t.form.password,hasServer:t.form.hasServer,server:t.form.server,serverSecretKey:t.form.serverSecretKey,sForwardSecretKey:t.form.sForwardSecretKey,relaySecretKey:t.form.relaySecretKey,updaterSecretKey:t.form.updaterSecretKey}},form:{client:JSON.parse(JSON.stringify(t.form))}}):l()}))}));return(0,a.sV)((()=>{0==l.value.json.Common.client&&(l.value.step+=l.value.increment)})),{state:t,handleValidate:s,formDom:o}}};const oe=(0,E.A)(te,[["render",ae],["__scopeId","data-v-47b95c93"]]);var se=oe;const ne=e=>((0,a.Qi)("data-v-c9a17ce0"),e=e(),(0,a.jt)(),e),ue=ne((()=>(0,a.Lk)("div",{class:"t-c w-100"},"端口为0则不监听",-1)));function de(e,l,r,t,o,s){const n=(0,a.g2)("el-form-item"),u=(0,a.g2)("el-input"),d=(0,a.g2)("el-col"),m=(0,a.g2)("el-row"),i=(0,a.g2)("el-form");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.bF)(i,{ref:"formDom",model:t.state.form,rules:t.state.rules,"label-width":"10rem"},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[ue])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"服务端口",prop:"servicePort"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.servicePort,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.form.servicePort=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"web穿透端口",prop:"webPort"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.webPort,"onUpdate:modelValue":l[1]||(l[1]=e=>t.state.form.webPort=e)},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"开放最小端口",prop:"tunnelPort1"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.tunnelPort1,"onUpdate:modelValue":l[2]||(l[2]=e=>t.state.form.tunnelPort1=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"开放最大端口",prop:"tunnelPort2"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.tunnelPort2,"onUpdate:modelValue":l[3]||(l[3]=e=>t.state.form.tunnelPort2=e)},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"信标密钥",prop:"signinSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.signinSecretKey,"onUpdate:modelValue":l[4]||(l[4]=e=>t.state.form.signinSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"穿透密钥",prop:"sForwardSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.sForwardSecretKey,"onUpdate:modelValue":l[5]||(l[5]=e=>t.state.form.sForwardSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"中继密钥",prop:"relaySecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.relaySecretKey,"onUpdate:modelValue":l[6]||(l[6]=e=>t.state.form.relaySecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"更新密钥",prop:"updaterSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.updaterSecretKey,"onUpdate:modelValue":l[7]||(l[7]=e=>t.state.form.updaterSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1})])),_:1},8,["model","rules"])])}var me={setup(e){const l=(0,a.WQ)("step"),r=(0,X.B)(),t=(0,z.Kh)({show:!1,form:{signinSecretKey:l.value.form.server.signinSecretKey||r.value.config.Server.SignIn.SecretKey,relaySecretKey:l.value.form.server.relaySecretKey||r.value.config.Server.Relay.SecretKey,sForwardSecretKey:l.value.form.server.sForwardSecretKey||r.value.config.Server.SForward.SecretKey,servicePort:l.value.form.server.servicePort||r.value.config.Server.ServicePort,webPort:l.value.form.server.webPort||r.value.config.Server.SForward.WebPort,tunnelPort1:l.value.form.server.tunnelPort1||r.value.config.Server.SForward.TunnelPortRange[0],tunnelPort2:l.value.form.server.tunnelPort2||r.value.config.Server.SForward.TunnelPortRange[1],updaterSecretKey:l.value.form.server.updaterSecretKey||r.value.config.Server.Updater.SecretKey},rules:{relaySecretKey:[{required:!0,message:"必填",trigger:"blur"}],sForwardSecretKey:[{required:!0,message:"必填",trigger:"blur"}],servicePort:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}],webPort:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}],tunnelPort1:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}],tunnelPort2:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}]}}),o=(0,z.KR)(null),s=()=>new Promise(((e,l)=>{o.value.validate((r=>{0==r?l():e({json:{Server:{ServicePort:+t.form.servicePort,Relay:{SecretKey:t.form.relaySecretKey},SForward:{SecretKey:t.form.sForwardSecretKey,WebPort:+t.form.webPort,TunnelPortRange:[+t.form.tunnelPort1,+t.form.tunnelPort2]},Updater:{SecretKey:t.form.updaterSecretKey},SignIn:{SecretKey:t.form.signinSecretKey}}},form:{server:JSON.parse(JSON.stringify(t.form))}})}))}));return(0,a.sV)((()=>{0==l.value.json.Common.server&&(l.value.step+=l.value.increment)})),{state:t,handleValidate:s,formDom:o}}};const ie=(0,E.A)(me,[["render",de],["__scopeId","data-v-c9a17ce0"]]);var fe=ie,ce={components:{Common:ee,Client:se,Server:fe},setup(e){const l=(0,X.B)(),r=(0,z.Kh)({show:0==l.value.config.Common.Install,steps:["选择模式","服务端","客户端","完成"]}),t=(0,z.KR)(null),o=(0,z.KR)({step:1,increment:1,json:{},form:{server:{},client:{},common:{}}});(0,a.Gt)("step",o);const s=()=>{o.value.step--,o.value.increment=-1},n=()=>{o.value.increment=1,t.value.handleValidate().then((e=>{o.value.json=Object.assign(o.value.json,e.json),o.value.form=Object.assign(o.value.form,e.form),o.value.step++})).catch((()=>{}))},u=()=>{(0,H.ai)(o.value.json).then((()=>{G.nk.success("保存成功")})).catch((()=>{G.nk.error("保存失败")}))};return{state:r,currentDom:t,step:o,handlePrev:s,handleNext:n,handleSave:u}}};const be=(0,E.A)(ce,[["render",J],["__scopeId","data-v-41d4c7eb"]]);var ve=be,pe=r(1387),ge={name:"Index",components:{Head:N,Status:q.A,Install:ve},setup(e){const l=(0,X.B)(),r=(0,pe.rd)(),t=(0,z.KR)(null),o=()=>{(0,a.dY)((()=>{l.value.height=t.value.offsetHeight}))};return(0,a.sV)((()=>{0==l.value.hasAccess("FullManager")&&r.push({name:"NoPermission"}),window.addEventListener("resize",o),o()})),(0,a.hi)((()=>{window.removeEventListener("resize",o)})),{wrap:t}}};const ke=(0,E.A)(ge,[["render",d],["__scopeId","data-v-5ea3415a"]]);var Fe=ke}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/273.059a1d98.js b/linker.tray.win/web/js/273.059a1d98.js
new file mode 100644
index 00000000..2d4f1c44
--- /dev/null
+++ b/linker.tray.win/web/js/273.059a1d98.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[273],{743:function(e,t,a){a.d(t,{$U:function(){return s},Ap:function(){return n},Co:function(){return o},DY:function(){return u},Qs:function(){return d},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),s=e=>(0,l.zG)("sforwardclient/getremote",e),u=e=>(0,l.zG)("sforwardclient/remove",e),d=e=>(0,l.zG)("sforwardclient/add",e),i=()=>(0,l.zG)("sforwardclient/TestLocal")},83:function(e,t,a){a.d(t,{$M:function(){return d},KW:function(){return u},S3:function(){return c},Vn:function(){return i},b0:function(){return o},gM:function(){return s},ix:function(){return n},r7:function(){return r}});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),s=()=>(0,l.zG)("tunnel/refresh"),u=e=>(0,l.zG)("tunnel/SetRouteLevel",e),d=e=>(0,l.zG)("tunnel/SetTransports",e),i=()=>(0,l.zG)("tunnel/GeInterfaces"),c=e=>(0,l.zG)("tunnel/SetInterface",e)},920:function(e,t,a){a.d(t,{BJ:function(){return i},NS:function(){return r},UB:function(){return m},Vk:function(){return d},aP:function(){return h},ir:function(){return u},lJ:function(){return o},mK:function(){return n},y2:function(){return c},yN:function(){return s}});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),s=()=>(0,l.zG)("updaterclient/GetSecretKey"),u=e=>(0,l.zG)("updaterclient/SetSecretKey",e),d=()=>(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"),m=()=>(0,l.zG)("updaterclient/Subscribe")},5962:function(e,t,a){a.d(t,{Y:function(){return s},q:function(){return u}});var l=a(8835),n=a(144),o=a(6768);const r=Symbol(),s=()=>{const e=(0,n.KR)({list:{},timer:0,hashcode:0});(0,o.Gt)(r,e);const t=()=>{(0,l.QI)(e.value.hashcode.toString()).then((a=>{e.value.hashcode=a.HashCode,a.List&&(e.value.list=a.List),e.value.timer=setTimeout(t,1e3)})).catch((()=>{e.value.timer=setTimeout(t,1e3)}))},a=()=>{clearTimeout(e.value.timer)};return{access:e,_getAccessInfo:t,clearAccessTimeout:a}},u=()=>(0,o.WQ)(r)},9383:function(e,t,a){a.d(t,{T:function(){return d},d:function(){return u}});var l=a(920),n=a(3830),o=a(144),r=a(6768);const s=Symbol(),u=()=>{const e=(0,n.B)(),t=(0,o.KR)({timer:0,list:{},hashcode:0,current:{Version:"",Msg:[],DateTime:"",Status:0,Length:0,Current:0},subscribeTimer:0});(0,r.Gt)(s,t);const a=()=>{(0,l.mK)(t.value.hashcode.toString()).then((l=>{if(t.value.hashcode=l.HashCode,l.List){const a=Object.values(l.List).filter((e=>!!e.Version))[0];a&&(Object.assign(t.value.current,{DateTime:a.DateTime,Version:a.Version,Status:a.Status,Length:a.Length,Current:a.Current,Msg:a.Msg}),e.value.updater=t.value.current),t.value.list=l.List}t.value.timer=setTimeout(a,800)})).catch((()=>{t.value.timer=setTimeout(a,800)}))},u=()=>{(0,l.UB)().then((()=>{t.value.subscribeTimer=setTimeout(u,5e3)})).catch((()=>{t.value.subscribeTimer=setTimeout(u,5e3)}))},d=()=>{clearTimeout(t.value.timer),clearTimeout(t.value.subscribeTimer)};return{updater:t,_getUpdater:a,_subscribeUpdater:u,clearUpdaterTimeout:d}},d=()=>(0,r.WQ)(s)},6611:function(e,t,a){a.d(t,{A:function(){return c}});var l=a(6768);function n(e,t,a,n,o,r){const s=(0,l.g2)("el-checkbox"),u=(0,l.g2)("el-col"),d=(0,l.g2)("el-row"),i=(0,l.g2)("el-checkbox-group");return(0,l.uX)(),(0,l.CE)(l.FK,null,[(0,l.bF)(d,null,{default:(0,l.k6)((()=>[(0,l.bF)(u,{span:8},{default:(0,l.k6)((()=>[(0,l.bF)(s,{modelValue:n.state.checkAll,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.checkAll=e),onChange:n.handleCheckAllChange,label:"全选",indeterminate:n.state.isIndeterminate},null,8,["modelValue","onChange","indeterminate"])])),_:1})])),_:1}),(0,l.bF)(i,{modelValue:n.state.checkList,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.checkList=e),onChange:n.handleCheckedChange},{default:(0,l.k6)((()=>[(0,l.bF)(d,null,{default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n.access,((e,t)=>((0,l.uX)(),(0,l.Wv)(u,{key:t,span:8},{default:(0,l.k6)((()=>[(0,l.bF)(s,{value:e.Value,label:e.Text},null,8,["value","label"])])),_:2},1024)))),128))])),_:1})])),_:1},8,["modelValue","onChange"])],64)}a(4114);var o=a(144),r=a(3830),s=a(5962),u={props:["machineid"],setup(e){const t=(0,r.B)(),a=(0,s.q)(),n=(0,l.EW)((()=>{const e=t.value.config.Client.Accesss;return Object.keys(e).reduce(((a,l,n)=>{if(t.value.hasAccess(l)){const t=e[l];t.Key=l,a.push(t)}return a}),[])})),u=(0,o.Kh)({checkList:[t.value.config.Client.Accesss.Api.Value,t.value.config.Client.Accesss.Web.Value,t.value.config.Client.Accesss.NetManager.Value,t.value.config.Client.Accesss.FullManager.Value,t.value.config.Client.Accesss.Transport.Value,t.value.config.Client.Accesss.Action.Value],checkAll:!1,isIndeterminate:!1}),d=()=>u.checkList.reduce(((e,t)=>(e|t)>>>0),0),i=e=>{const t=e.length;u.checkAll=t===n.value.length,u.isIndeterminate=t>0&&t{u.checkAll=e,u.checkList=e?n.value.map((e=>e.Value)):[],u.isIndeterminate=!1};return(0,l.sV)((()=>{if(a&&a.value.list[e.machineid]){const t=a.value.list[e.machineid];u.checkList=n.value.reduce(((e,a)=>((t&a.Value)>>>0==a.Value&&e.push(a.Value),e)),[])}i(u.checkList)})),{state:u,access:n,getValue:d,handleCheckAllChange:c,handleCheckedChange:i}}},d=a(1241);const i=(0,d.A)(u,[["render",n],["__scopeId","data-v-bdd023b0"]]);var c=i},1848:function(e,t,a){a.r(t),a.d(t,{default:function(){return ia}});var l=a(6768);const n={class:"home-list-wrap absolute"},o={class:"page t-c"},r={class:"page-wrap"};function s(e,t,a,s,u,d){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"),v=(0,l.g2)("Oper"),f=(0,l.g2)("el-pagination"),w=(0,l.g2)("DeviceEdit"),k=(0,l.g2)("AccessEdit"),b=(0,l.g2)("TunnelEdit"),F=(0,l.g2)("ConnectionsEdit"),C=(0,l.g2)("TuntapEdit"),T=(0,l.g2)("ForwardEdit"),L=(0,l.g2)("ForwardCopy"),V=(0,l.g2)("SForwardEdit"),_=(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:s.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:"160",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:s.devices.page.List,stripe:"",border:"",style:{width:"100%"},height:`${s.state.height}px`,size:"small"},{default:(0,l.k6)((()=>[(0,l.bF)(h,{onEdit:s.handleDeviceEdit,onRefresh:s.handlePageRefresh},null,8,["onEdit","onRefresh"]),(0,l.bF)(m,{onEdit:s.handleTunnelEdit,onRefresh:s.handleTunnelRefresh,onConnections:s.handleTunnelConnections},null,8,["onEdit","onRefresh","onConnections"]),(0,l.bF)(p,{onEdit:s.handleTuntapEdit,onRefresh:s.handleTuntapRefresh},null,8,["onEdit","onRefresh"]),(0,l.bF)(g,{onEdit:s._handleForwardEdit,onSedit:s.handleSForwardEdit},null,8,["onEdit","onSedit"]),(0,l.bF)(v,{onRefresh:s.handlePageRefresh,onAccess:s.handleAccessEdit},null,8,["onRefresh","onAccess"])])),_:1},8,["data","height"]),(0,l.Lk)("div",o,[(0,l.Lk)("div",r,[(0,l.bF)(f,{small:"",background:"",layout:"total,sizes,prev,pager, next",total:s.devices.page.Count,"page-size":s.devices.page.Request.Size,"current-page":s.devices.page.Request.Page,onCurrentChange:s.handlePageChange,onSizeChange:s.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])]),s.devices.showDeviceEdit?((0,l.uX)(),(0,l.Wv)(w,{key:0,modelValue:s.devices.showDeviceEdit,"onUpdate:modelValue":t[0]||(t[0]=e=>s.devices.showDeviceEdit=e),onChange:s.handlePageChange,data:s.devices.deviceInfo},null,8,["modelValue","onChange","data"])):(0,l.Q3)("",!0),s.devices.showAccessEdit?((0,l.uX)(),(0,l.Wv)(k,{key:1,modelValue:s.devices.showAccessEdit,"onUpdate:modelValue":t[1]||(t[1]=e=>s.devices.showAccessEdit=e),onChange:s.handlePageChange,data:s.devices.deviceInfo},null,8,["modelValue","onChange","data"])):(0,l.Q3)("",!0),s.tunnel.showEdit?((0,l.uX)(),(0,l.Wv)(b,{key:2,modelValue:s.tunnel.showEdit,"onUpdate:modelValue":t[2]||(t[2]=e=>s.tunnel.showEdit=e),onChange:s.handleTunnelRefresh},null,8,["modelValue","onChange"])):(0,l.Q3)("",!0),s.connections.showEdit?((0,l.uX)(),(0,l.Wv)(F,{key:3,modelValue:s.connections.showEdit,"onUpdate:modelValue":t[3]||(t[3]=e=>s.connections.showEdit=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),s.tuntap.showEdit?((0,l.uX)(),(0,l.Wv)(C,{key:4,modelValue:s.tuntap.showEdit,"onUpdate:modelValue":t[4]||(t[4]=e=>s.tuntap.showEdit=e),onChange:s.handleTuntapRefresh},null,8,["modelValue","onChange"])):(0,l.Q3)("",!0),s.forward.showEdit?((0,l.uX)(),(0,l.Wv)(T,{key:5,modelValue:s.forward.showEdit,"onUpdate:modelValue":t[5]||(t[5]=e=>s.forward.showEdit=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),s.forward.showCopy?((0,l.uX)(),(0,l.Wv)(L,{key:6,modelValue:s.forward.showCopy,"onUpdate:modelValue":t[6]||(t[6]=e=>s.forward.showCopy=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),s.sforward.showEdit?((0,l.uX)(),(0,l.Wv)(V,{key:7,modelValue:s.sforward.showEdit,"onUpdate:modelValue":t[7]||(t[7]=e=>s.sforward.showEdit=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),s.sforward.showCopy?((0,l.uX)(),(0,l.Wv)(_,{key:8,modelValue:s.sforward.showCopy,"onUpdate:modelValue":t[8]||(t[8]=e=>s.sforward.showCopy=e)},null,8,["modelValue"])):(0,l.Q3)("",!0)])}a(4114);var u=a(3830),d=a(144);const i=e=>((0,l.Qi)("data-v-1e7a30d3"),e=e(),(0,l.jt)(),e),c={class:"dropdown"},h=i((()=>(0,l.Lk)("span",null,"操作",-1)));function m(e,t,a,n,o,r){const s=(0,l.g2)("ArrowDown"),u=(0,l.g2)("el-icon"),d=(0,l.g2)("SwitchButton"),i=(0,l.g2)("el-dropdown-item"),m=(0,l.g2)("Delete"),p=(0,l.g2)("Flag"),g=(0,l.g2)("el-dropdown-menu"),v=(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)(v,{size:"small"},{dropdown:(0,l.k6)((()=>[(0,l.bF)(g,null,{default:(0,l.k6)((()=>[e.row.showReboot&&n.hasReboot?((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)(u,null,{default:(0,l.k6)((()=>[(0,l.bF)(d)])),_:1}),(0,l.eW)(" 重启")])),_:2},1032,["onClick"])):(0,l.Q3)("",!0),e.row.showDel&&n.hasRemove?((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)(u,null,{default:(0,l.k6)((()=>[(0,l.bF)(m)])),_:1}),(0,l.eW)(" 删除")])),_:2},1032,["onClick"])):(0,l.Q3)("",!0),n.handleShowAccess(e.row,n.accessList[e.row.MachineId]||0)?((0,l.uX)(),(0,l.Wv)(i,{key:2,onClick:t=>n.handleAccess(e.row)},{default:(0,l.k6)((()=>[(0,l.bF)(u,null,{default:(0,l.k6)((()=>[(0,l.bF)(p)])),_:1}),(0,l.eW)(" 权限")])),_:2},1032,["onClick"])):(0,l.Q3)("",!0)])),_:2},1024)])),default:(0,l.k6)((()=>[(0,l.Lk)("div",c,[h,(0,l.bF)(u,{class:"el-icon--right"},{default:(0,l.k6)((()=>[(0,l.bF)(s)])),_:1})])])),_:2},1024)])),_:1})}var p=a(9299),g=a(920),v=a(7477),f=a(2933),w=a(5962),k={emits:["refresh","access"],components:{Delete:v.epd,SwitchButton:v.L$q,ArrowDown:v.yd$,Flag:v.lNU},setup(e,{emit:t}){const a=(0,u.B)(),n=(0,w.q)(),o=(0,l.EW)((()=>a.value.config.Client.Access)),r=(0,l.EW)((()=>a.value.hasAccess("Access"))),s=(0,l.EW)((()=>n.value.list)),d=(0,l.EW)((()=>a.value.hasAccess("Reboot"))),i=(0,l.EW)((()=>a.value.hasAccess("Remove"))),c=(e,a)=>{f.s.confirm(`确认删除[${a}]?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,p.Se)(e).then((()=>{t("refresh")}))})).catch((()=>{}))},h=(e,a)=>{f.s.confirm(`确认关闭[${a}]?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,g.NS)(e).then((()=>{t("refresh")}))})).catch((()=>{}))},m=(e,t)=>e.showAccess&&r.value&&t>=0&&(~o.value&t)>>>0==0,v=e=>{t("access",e)};return{accessList:s,handleDel:c,handleExit:h,hasReboot:d,hasRemove:i,hasAccess:r,handleShowAccess:m,handleAccess:v}}},b=a(1241);const F=(0,b.A)(k,[["render",m],["__scopeId","data-v-1e7a30d3"]]);var C=F,T=a(4232);const L=e=>((0,l.Qi)("data-v-358fba0e"),e=e(),(0,l.jt)(),e),V={class:"flex"},_=L((()=>(0,l.Lk)("span",{class:"flex-1"},"设备",-1))),E={class:"flex"},y=["onClick"],I=["onClick"],S=L((()=>(0,l.Lk)("span",null,"😴㊙.㊙.㊙.㊙",-1))),P=[S],M=L((()=>(0,l.Lk)("span",{class:"flex-1"},null,-1)));function R(e,t,a,n,o,r){const s=(0,l.g2)("el-input"),u=(0,l.g2)("Search"),d=(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",V,[_,(0,l.Lk)("span",null,[(0,l.bF)(s,{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)(d,null,{default:(0,l.k6)((()=>[(0,l.bF)(u)])),_: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",E,[e.row.showip?((0,l.uX)(),(0,l.CE)("span",{key:0,title:"此设备的外网IP",class:"ipaddress",onClick:t=>n.handleExternal(e.row)},[(0,l.Lk)("span",null,"😀"+(0,T.v_)(e.row.IP),1)],8,y)):((0,l.uX)(),(0,l.CE)("span",{key:1,title:"此设备的外网IP",class:"ipaddress",onClick:t=>n.handleExternal(e.row)},P,8,I)),M,(0,l.bF)(h,{config:!0,item:e.row},null,8,["item"])])])])),_:1})}var W=a(2126),A=a(886),B={emits:["edit","refresh"],components:{Search:v.vji,UpdaterBtn:W.A,DeviceName:A.A},setup(e,{emit:t}){const a=(0,u.B)(),n=(0,l.EW)((()=>a.value.hasAccess("ExternalShow"))),o=(0,d.KR)(sessionStorage.getItem("search-name")||""),r=e=>{n.value&&(e.showip=!e.showip)},s=e=>{t("edit",e)},i=()=>{sessionStorage.setItem("search-name",o.value),t("refresh",o.value)};return{handleEdit:s,handleRefresh:i,name:o,handleExternal:r}}};const z=(0,b.A)(B,[["render",R],["__scopeId","data-v-358fba0e"]]);var N=z;const U=(0,l.Lk)("div",null,"修改后最好能重启一次客户端",-1),X={class:"t-c w-100"};function x(e,t,a,n,o,r){const s=(0,l.g2)("el-form-item"),u=(0,l.g2)("el-input"),d=(0,l.g2)("el-button"),i=(0,l.g2)("el-form"),c=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(c,{modelValue:n.state.show,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:`设置[${n.state.ruleForm.MachineName}]设备`,width:"300"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(i,{ref:"ruleFormRef",model:n.state.ruleForm,rules:n.state.rules,"label-width":"auto"},{default:(0,l.k6)((()=>[(0,l.bF)(s,{label:""},{default:(0,l.k6)((()=>[U])),_:1}),(0,l.bF)(s,{label:"设备名",prop:"MachineName"},{default:(0,l.k6)((()=>[(0,l.bF)(u,{maxlength:"12","show-word-limit":"",modelValue:n.state.ruleForm.MachineName,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.ruleForm.MachineName=e)},null,8,["modelValue"])])),_:1}),(0,l.bF)(s,{label:"",prop:"Btns"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",X,[(0,l.bF)(d,{onClick:t[1]||(t[1]=e=>n.state.show=!1)},{default:(0,l.k6)((()=>[(0,l.eW)("取消")])),_:1}),(0,l.bF)(d,{type:"primary",onClick:n.handleSave},{default:(0,l.k6)((()=>[(0,l.eW)("确认")])),_:1},8,["onClick"])])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue","title"])}var D=a(1219),K={props:["data","modelValue"],emits:["change","update:modelValue"],setup(e,{emit:t}){const a=(0,d.KR)(null),n=(0,d.Kh)({show:!0,ruleForm:{MachineName1:e.data.MachineName,MachineName:e.data.MachineName},rules:{}});(0,l.wB)((()=>n.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=()=>{e.data.MachineName!=n.ruleForm.MachineName&&(0,p.gC)({Id:e.data.MachineId,newName:n.ruleForm.MachineName}).then((()=>{n.show=!1,D.nk.success("已操作!"),t("change")})).catch((()=>{D.nk.error("操作失败!")}))};return{state:n,ruleFormRef:a,handleSave:o}}};const G=(0,b.A)(K,[["render",x]]);var O=G;function $(e,t,a,n,o,r){const s=(0,l.g2)("Access"),u=(0,l.g2)("el-button"),d=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(d,{modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),"close-on-click-modal":!1,center:"","append-to":".app-wrap",title:`设置[${n.machineName}]的权限`,width:"580",top:"1vh"},{footer:(0,l.k6)((()=>[(0,l.bF)(u,{plain:"",onClick:t[0]||(t[0]=e=>n.state.show=!1),loading:n.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)("取消")])),_:1},8,["loading"]),(0,l.bF)(u,{type:"success",plain:"",onClick:n.handleSave,loading:n.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)("确定保存")])),_:1},8,["onClick","loading"])])),default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(s,{machineid:n.machineid,ref:"accessDom"},null,8,["machineid"])])])),_:1},8,["modelValue","title"])}var Q=a(8835),q=a(6611),j={props:["data","modelValue"],emits:["change","update:modelValue"],components:{Access:q.A},setup(e,{emit:t}){const a=(0,d.Kh)({show:!0,loading:!1});(0,l.wB)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const n=(0,d.KR)(null),o=()=>{a.loading=!0,(0,Q.ZK)({ToMachineId:e.data.MachineId,Access:n.value.getValue()}).then((()=>{a.loading=!1,a.show=!1,D.nk.success("已操作!"),t("change")})).catch((()=>{a.loading=!1,D.nk.error("操作失败!")}))};return{machineName:e.data.MachineName,machineid:e.data.MachineId,state:a,accessDom:n,handleSave:o}}};const H=(0,b.A)(j,[["render",$]]);var J=H;const Y={key:0};function Z(e,t,a,n,o,r){const s=(0,l.g2)("TuntapShow"),u=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(u,{prop:"tuntap",label:"虚拟网卡",width:"160"},{default:(0,l.k6)((e=>[n.tuntap.list[e.row.MachineId]?((0,l.uX)(),(0,l.CE)("div",Y,[(0,l.bF)(s,{config:!0,item:e.row,onEdit:n.handleTuntapIP,onRefresh:n.handleTuntapRefresh},null,8,["item","onEdit","onRefresh"])])):(0,l.Q3)("",!0)])),_:1})}var ee=a(8104),te=a(3630),ae={emits:["edit","refresh"],components:{TuntapShow:te.A},setup(e,{emit:t}){const a=(0,ee.W)(),l=e=>{t("edit",e)},n=()=>{t("refresh")};return{tuntap:a,handleTuntapIP:l,handleTuntapRefresh:n}}};const le=(0,b.A)(ae,[["render",Z]]);var ne=le;const oe=e=>((0,l.Qi)("data-v-7c827302"),e=e(),(0,l.jt)(),e),re=oe((()=>(0,l.Lk)("span",null,"/",-1))),se=oe((()=>(0,l.Lk)("span",{style:{width:"2rem"}},null,-1))),ue={key:0,class:"upgrade-wrap"},de=oe((()=>(0,l.Lk)("span",{class:"yellow"},"此设备能使用NAT转发,只需局域网IP,剩下的交给NAT(linux、macos、win10+)",-1))),ie={class:"flex-1"},ce=oe((()=>(0,l.Lk)("span",null,"/",-1))),he={class:"pdl-10"},me=oe((()=>(0,l.Lk)("span",{class:"yellow"},"此设备无法使用NAT转发,或只想使用端口转发",-1))),pe={class:"flex-1"},ge={class:"pdl-10"};function ve(e,t,a,n,o,r){const s=(0,l.g2)("el-form-item"),u=(0,l.g2)("el-input"),d=(0,l.g2)("el-checkbox"),i=(0,l.g2)("Delete"),c=(0,l.g2)("el-icon"),h=(0,l.g2)("el-button"),m=(0,l.g2)("Plus"),p=(0,l.g2)("el-form"),g=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(g,{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:`设置[${n.state.machineName}]组网`,top:"1vh",width:"700"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(p,{ref:"ruleFormRef",model:n.state.ruleForm,rules:n.state.rules,"label-width":"140"},{default:(0,l.k6)((()=>[(0,l.bF)(s,{prop:"gateway",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[(0,l.eW)(" 赐予此设备IP,其它设备可通过此IP访问 ")])),_:1}),(0,l.bF)(s,{label:"此设备的虚拟网卡IP",prop:"IP"},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:n.state.ruleForm.IP,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.ruleForm.IP=e),style:{width:"14rem"}},null,8,["modelValue"]),re,(0,l.bF)(u,{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"]),se,(0,l.bF)(d,{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)(d,{modelValue:n.state.ruleForm.AutoConnect,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.ruleForm.AutoConnect=e),label:"自动连接",size:"large"},null,8,["modelValue"])])),_:1}),(0,l.bF)(s,{prop:"upgrade",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[(0,l.bF)(d,{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",ue,[(0,l.bF)(s,{prop:"nat",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[de])),_:1}),(0,l.bF)(s,{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",ie,[(0,l.bF)(u,{modelValue:n.state.ruleForm.LanIPs[t],"onUpdate:modelValue":e=>n.state.ruleForm.LanIPs[t]=e,style:{width:"14rem"}},null,8,["modelValue","onUpdate:modelValue"]),ce,(0,l.bF)(u,{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",he,[(0,l.bF)(h,{type:"danger",onClick:e=>n.handleDel(t)},{default:(0,l.k6)((()=>[(0,l.bF)(c,null,{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1})])),_:2},1032,["onClick"]),(0,l.bF)(h,{type:"primary",onClick:e=>n.handleAdd(t)},{default:(0,l.k6)((()=>[(0,l.bF)(c,null,{default:(0,l.k6)((()=>[(0,l.bF)(m)])),_:1})])),_:2},1032,["onClick"])])])))),128))])),_:1}),(0,l.bF)(s,{prop:"forward",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[me])),_:1}),(0,l.bF)(s,{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",pe,[(0,l.bF)(u,{modelValue:e.ListenAddr,"onUpdate:modelValue":t=>e.ListenAddr=t,style:{width:"7rem"},readonly:""},null,8,["modelValue","onUpdate:modelValue"]),(0,l.eW)(" : "),(0,l.bF)(u,{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)(u,{modelValue:e.ConnectAddr,"onUpdate:modelValue":t=>e.ConnectAddr=t,style:{width:"14rem"}},null,8,["modelValue","onUpdate:modelValue"]),(0,l.eW)(" : "),(0,l.bF)(u,{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",ge,[(0,l.bF)(h,{type:"danger",onClick:e=>n.handleDelForward(t)},{default:(0,l.k6)((()=>[(0,l.bF)(c,null,{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1})])),_:2},1032,["onClick"]),(0,l.bF)(h,{type:"primary",onClick:e=>n.handleAddForward(t)},{default:(0,l.k6)((()=>[(0,l.bF)(c,null,{default:(0,l.k6)((()=>[(0,l.bF)(m)])),_:1})])),_:2},1032,["onClick"])])])))),128))])),_:1})])):(0,l.Q3)("",!0),(0,l.bF)(s,{label:"",prop:"Btns"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(h,{onClick:t[5]||(t[5]=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","title"])}var fe=a(5241),we={props:["modelValue"],emits:["change","update:modelValue"],components:{Delete:v.epd,Plus:v.FWt},setup(e,{emit:t}){const a=(0,u.B)(),n=(0,ee.W)(),o=(0,d.KR)(null),r=(0,d.Kh)({show:!0,machineName:n.value.current.device.MachineName,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,Multicast:n.value.current.Multicast,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 s=()=>{var e=+r.ruleForm.PrefixLength;(e>32||e<16||isNaN(e))&&(e=24),r.ruleForm.PrefixLength=e},i=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.Multicast=r.ruleForm.Multicast,e.Forwards=r.ruleForm.Forwards,e.Forwards.forEach((e=>{e.ListenPort=+e.ListenPort,e.ConnectPort=+e.ConnectPort})),(0,fe.ac)(e).then((()=>{r.show=!1,D.nk.success("已操作!"),t("change")})).catch((()=>{D.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})},v=()=>{};return{state:r,ruleFormRef:o,handlePrefixLengthChange:s,handleMaskChange:i,handleDel:c,handleAdd:h,handleSave:m,handleForwardChange:v,handleDelForward:p,handleAddForward:g}}};const ke=(0,b.A)(we,[["render",ve],["__scopeId","data-v-7c827302"]]);var be=ke;const Fe={key:0},Ce=["title","onClick"],Te=["onClick"];function Le(e,t,a,n,o,r){const s=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(s,{prop:"tunnel",label:"隧道",width:"90"},{default:(0,l.k6)((e=>[n.tunnel.list[e.row.MachineId]?((0,l.uX)(),(0,l.CE)("div",Fe,[(0,l.Lk)("a",{href:"javascript:;",class:(0,T.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],e.row)},[(0,l.Lk)("span",null,"网关 : "+(0,T.v_)(n.tunnel.list[e.row.MachineId].RouteLevel)+" + "+(0,T.v_)(n.tunnel.list[e.row.MachineId].RouteLevelPlus),1)],10,Ce)])):(0,l.Q3)("",!0),(0,l.Lk)("div",null,[(0,l.Lk)("a",{href:"javascript:;",title:"与此设备的隧道连接",class:(0,T.C4)(["a-line",{green:n.connectionCount(e.row.MachineId)>0}]),onClick:t=>n.handleConnections(e.row)},[(0,l.eW)(" 连接数 : "),(0,l.Lk)("span",null,(0,T.v_)(n.connectionCount(e.row.MachineId)),1)],10,Te)])])),_:1})}var Ve=a(83);const _e=Symbol(),Ee=()=>{(0,u.B)();const e=(0,d.KR)({timer:0,showEdit:!1,current:null,list:{},hashcode:0});(0,l.Gt)(_e,e);const t=()=>{(0,Ve.r7)(e.value.hashcode.toString()).then((a=>{e.value.hashcode=a.HashCode,a.List&&(e.value.list=a.List),e.value.timer=setTimeout(t,1060)})).catch((()=>{e.value.timer=setTimeout(t,1060)}))},a=t=>{e.value.current=t,e.value.showEdit=!0},n=()=>{(0,Ve.gM)(),D.nk.success({message:"刷新成功",grouping:!0})},o=()=>{clearTimeout(e.value.timer)},r=t=>Object.values(e.value.list).sort(((e,t)=>e.RouteLevel+e.RouteLevelPlus-t.RouteLevel+t.RouteLevelPlus)).map((e=>e.MachineId));return{tunnel:e,_getTunnelInfo:t,handleTunnelEdit:a,handleTunnelRefresh:n,clearTunnelTimeout:o,sortTunnel:r}},ye=()=>(0,l.WQ)(_e);var Ie=a(4);const Se=(e="0")=>(0,Ie.zG)("forwardclient/connections",e),Pe=e=>(0,Ie.zG)("forwardclient/removeconnection",e),Me=(e="0")=>(0,Ie.zG)("forwardclient/get",e),Re=e=>(0,Ie.zG)("forwardclient/getremote",e),We=()=>(0,Ie.zG)("forwardclient/bindips"),Ae=e=>(0,Ie.zG)("forwardclient/remove",e),Be=e=>(0,Ie.zG)("forwardclient/add",e),ze=e=>(0,Ie.zG)("forwardclient/TestTarget",e),Ne=Symbol(),Ue=Symbol(),Xe=Symbol(),xe=()=>{const e=(0,d.KR)({showEdit:!1,speedCache:{},current:"",currentName:"",hashcode:0,hashcode1:0,_updateRealTime:!1,updateRealTime:t=>{e.value.hashcode=0,e.value.hashcode1=0,e.value._updateRealTime=t}});(0,l.Gt)(Ne,e);const t=(0,d.KR)({timer:0,list:{}});(0,l.Gt)(Ue,t);const a=()=>{Se(e.value.hashcode.toString()).then((l=>{0==e.value._updateRealTime&&(e.value.hashcode=l.HashCode),l.List&&(r(l.List,Pe),t.value.list=l.List),t.value.timer=setTimeout(a,1e3)})).catch((e=>{t.value.timer=setTimeout(a,1e3)}))},n=(0,d.KR)({timer:0,list:{}});(0,l.Gt)(Xe,n);const o=()=>{(0,fe.kl)(e.value.hashcode1.toString()).then((t=>{0==e.value._updateRealTime&&(e.value.hashcode1=t.HashCode),t.List&&(r(t.List,fe.vB),n.value.list=t.List),n.value.timer=setTimeout(o,1e3)})).catch((e=>{n.value.timer=setTimeout(o,1e3)}))},r=(t,a)=>{const l=e.value.speedCache;for(let e in t){const n=t[e];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]}`},u=t=>{e.value.current=t.MachineId,e.value.currentName=t.MachineName,e.value.showEdit=!0},i=()=>{clearTimeout(t.value.timer),clearTimeout(n.value.timer)};return{connections:e,forwardConnections:t,_getForwardConnections:a,tuntapConnections:n,_getTuntapConnections:o,handleTunnelConnections:u,clearConnectionsTimeout:i}},De=()=>(0,l.WQ)(Ne),Ke=()=>(0,l.WQ)(Ue),Ge=()=>(0,l.WQ)(Xe);var Oe={emits:["edit","refresh"],setup(e,{emit:t}){const a=(0,u.B)(),n=(0,l.EW)((()=>a.value.config.Client.Id)),o=(0,l.EW)((()=>a.value.hasAccess("TunnelChangeSelf"))),r=(0,l.EW)((()=>a.value.hasAccess("TunnelChangeOther"))),s=ye(),d=(De(),Ke()),i=Ge(),c=e=>[d.value.list[e],i.value.list[e]].filter((e=>!!e&&e.Connected)).length,h=(e,a)=>{if(n.value===e.MachineId){if(!o.value)return}else if(!r.value)return;e.device=a,t("edit",e)},m=()=>{t("refresh")},p=e=>{t("connections",e)};return{tunnel:s,handleTunnel:h,handleTunnelRefresh:m,connectionCount:c,handleConnections:p}}};const $e=(0,b.A)(Oe,[["render",Le],["__scopeId","data-v-56597dfc"]]);var Qe=$e;const qe=e=>((0,l.Qi)("data-v-1f7f67a4"),e=e(),(0,l.jt)(),e),je=qe((()=>(0,l.Lk)("div",null,"网关层级为你的设备与外网的距离,你可以手动调整数值",-1))),He=qe((()=>(0,l.Lk)("div",null,"光猫映射了端口后,可以直接连接,把TcpPortMap调到第一",-1))),Je={class:"t-c w-100"};function Ye(e,t,a,n,o,r){const s=(0,l.g2)("el-form-item"),u=(0,l.g2)("el-input"),d=(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:`设置[${n.state.machineName}]网关`,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)(s,{label:"",prop:"alert"},{default:(0,l.k6)((()=>[je])),_:1}),(0,l.bF)(s,{label:""},{default:(0,l.k6)((()=>[(0,l.bF)(c,null,{default:(0,l.k6)((()=>[(0,l.bF)(d,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(s,{label:"网关层级",prop:"RouteLevel"},{default:(0,l.k6)((()=>[(0,l.bF)(u,{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)(d,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(s,{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)(s,{label:"",prop:"alert"},{default:(0,l.k6)((()=>[He])),_:1}),(0,l.bF)(s,{label:""},{default:(0,l.k6)((()=>[(0,l.bF)(c,null,{default:(0,l.k6)((()=>[(0,l.bF)(d,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(s,{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)(d,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(s,{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)(s,{label:"",prop:"Btns"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",Je,[(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","title"])}var Ze={props:["modelValue"],emits:["change","update:modelValue"],setup(e,{emit:t}){const a=ye(),n=(0,d.KR)(null),o=(0,d.Kh)({show:!0,machineName:a.value.current.device.MachineName,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,Ve.KW)(e).then((()=>{o.show=!1,D.nk.success("已操作!"),t("change")})).catch((()=>{D.nk.error("操作失败!")}))};return{state:o,ruleFormRef:n,handleSave:r}}};const et=(0,b.A)(Ze,[["render",Ye],["__scopeId","data-v-1f7f67a4"]]);var tt=et;const at={key:0},lt={class:"list forward"},nt=["onClick"],ot={key:1},rt=["onClick"],st={key:0},ut={class:"list sforward"},dt={key:1};function it(e,t,a,n,o,r){const s=(0,l.g2)("el-table-column");return(0,l.uX)(),(0,l.Wv)(s,{prop:"forward",label:"端口转发"},{default:(0,l.k6)((e=>[e.row.isSelf?((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[n.hasForwardShowSelf?((0,l.uX)(),(0,l.CE)("div",st,[(0,l.Lk)("ul",ut,[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,T.C4)({red:!!e.Msg})},[(0,l.Lk)("a",{href:"javascript:;",onClick:t[0]||(t[0]=e=>n.handleSEdit()),class:(0,T.C4)({green:e.Started})},[(0,l.Lk)("span",null,[(0,l.Lk)("span",{class:(0,T.C4)({red:!!e.Msg})},(0,T.v_)(e.Domain||e.RemotePort),3),(0,l.eW)(" -> "),(0,l.Lk)("span",{class:(0,T.C4)({red:!!e.LocalMsg})},(0,T.v_)(e.LocalEP),3)])],2),(0,l.Lk)("span",null," ("+(0,T.v_)(1<n.handleSEdit())},"暂无配置")]))])])):(0,l.Q3)("",!0)],64)):((0,l.uX)(),(0,l.CE)(l.FK,{key:0},[n.hasForwardShowOther?((0,l.uX)(),(0,l.CE)("div",at,[(0,l.Lk)("ul",lt,[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,T.C4)({green:t.Started})},[(0,l.Lk)("span",null,[(0,l.Lk)("span",{class:(0,T.C4)({red:!!t.Msg})},(0,T.v_)(t.Port),3),(0,l.eW)(" -> "),(0,l.Lk)("span",{class:(0,T.C4)({red:!!t.TargetMsg})},(0,T.v_)(t.TargetEP),3)])],10,nt),(0,l.Lk)("span",null," ("+(0,T.v_)(1<n.handleEdit(e.row.MachineId)},"暂无配置",8,rt)]))])])):(0,l.Q3)("",!0)],64))])),_:1})}const ct=Symbol(),ht=()=>{(0,u.B)();const e=(0,d.KR)({timer:0,showEdit:!1,showCopy:!1,current:null,list:{},testTimer:0,testTargetTimer:0,hashcode:0,hashcode1:0});(0,l.Gt)(ct,e);const t=()=>{Me(e.value.hashcode.toString()).then((a=>{e.value.hashcode=a.HashCode,a.List&&(e.value.list=a.List),e.value.timer=setTimeout(t,1020)})).catch((()=>{e.value.timer=setTimeout(t,1020)}))},a=(t,a)=>{e.value.current=t,e.value.machineName=a,e.value.showEdit=!0},n=()=>{clearTimeout(e.value.testTargetTimer),ze(e.value.current).then((t=>{e.value.testTargetTimer=setTimeout(n,5e3)})).catch((()=>{e.value.testTargetTimer=setTimeout(n,5e3)}))},o=()=>{clearTimeout(e.value.timer),clearTimeout(e.value.testTimer),clearTimeout(e.value.testTargetTimer)},r=t=>Object.values(e.value.list).reduce(((e,t)=>(e=e.concat(t),e)),[]).filter((e=>(e.Name||"").indexOf(t)>=0||(e.BindIPAddress||"").indexOf(t)>=0||e.Port.toString().indexOf(t)>=0||(e.TargetEP||"").indexOf(t)>=0)).map((e=>e.MachineId));return{forward:e,_getForwardInfo:t,handleForwardEdit:a,_testTargetForwardInfo:n,clearForwardTimeout:o,getForwardMachines:r}},mt=()=>(0,l.WQ)(ct);var pt=a(743);const gt=Symbol(),vt=()=>{const e=(0,u.B)(),t=(0,l.EW)((()=>e.value.config.Client.Id)),a=(0,d.KR)({timer:0,showEdit:!1,showCopy:!1,list:[],testTimer:0,hashcode:0});(0,l.Gt)(gt,a);const n=()=>{(0,pt.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)}))},o=()=>{a.value.showEdit=!0},r=()=>{clearTimeout(a.value.testTimer),(0,pt.eX)().then((e=>{a.value.testTimer=setTimeout(r,5e3)})).catch((()=>{a.value.testTimer=setTimeout(r,5e3)}))},s=()=>{clearTimeout(a.value.timer),clearTimeout(a.value.testTimer)},i=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:s,getSForwardMachines:i}},ft=()=>(0,l.WQ)(gt);var wt={emits:["edit","sedit"],setup(e,{emit:t}){const a=mt(),n=ft(),o=(0,u.B)(),r=(0,l.EW)((()=>o.value.config.Client.Id)),s=(0,l.EW)((()=>o.value.hasAccess("ForwardShowSelf"))),d=(0,l.EW)((()=>o.value.hasAccess("ForwardShowOther"))),i=(0,l.EW)((()=>o.value.hasAccess("ForwardSelf"))),c=(0,l.EW)((()=>o.value.hasAccess("ForwardOther"))),h=e=>{if(r.value===e){if(!i.value)return}else if(!c.value)return;t("edit",e)},m=()=>{i.value&&t("sedit")},p=()=>{t("refresh")};return{forward:a,sforward:n,hasForwardShowSelf:s,hasForwardShowOther:d,handleEdit:h,handleSEdit:m,handleForwardRefresh:p}}};const kt=(0,b.A)(wt,[["render",it],["__scopeId","data-v-19db1f43"]]);var bt=kt;const Ft={class:"t-c head"},Ct={class:"error red"},Tt={class:"error red"};function Lt(e,t,a,n,o,r){const s=(0,l.g2)("el-button"),u=(0,l.g2)("el-input"),d=(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"),v=(0,l.g2)("Delete"),f=(0,l.g2)("el-popconfirm"),w=(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",Ft,[(0,l.bF)(s,{type:"success",size:"small",onClick:n.handleAdd},{default:(0,l.k6)((()=>[(0,l.eW)("添加")])),_:1},8,["onClick"]),(0,l.bF)(s,{size:"small",onClick:n.handleRefresh},{default:(0,l.k6)((()=>[(0,l.eW)("刷新")])),_:1},8,["onClick"]),(0,l.bF)(s,{size:"small",onClick:n.handleCopy},{default:(0,l.k6)((()=>[(0,l.eW)("复制转发配置")])),_:1},8,["onClick"])]),(0,l.bF)(w,{data:n.state.data,size:"small",border:"",height:"500",onCellDblclick:n.handleCellClick},{default:(0,l.k6)((()=>[(0,l.bF)(d,{property:"Name",label:"名称"},{default:(0,l.k6)((e=>[e.row.NameEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(u,{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,T.v_)(e.row.Name),1)],64))])),_:1}),(0,l.bF)(d,{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)(d,{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)(d,{property:"Port",label:"监听端口",width:"80"},{default:(0,l.k6)((e=>[e.row.PortEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(u,{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,T.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,T.C4)({green:e.row.Started})},(0,T.v_)(e.row.Port),3))],64))])),_:1}),(0,l.bF)(d,{property:"TargetEP",label:"目标服务",width:"140"},{default:(0,l.k6)((e=>[e.row.TargetEPEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(u,{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",Tt,(0,T.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,T.C4)({green:e.row.Started})},(0,T.v_)(e.row.TargetEP),3))],64))])),_:1}),(0,l.bF)(d,{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)(d,{label:"操作",width:"54"},{default:(0,l.k6)((e=>[(0,l.bF)(f,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"删除不可逆,是否确认?",onConfirm:t=>n.handleDel(e.row.Id)},{reference:(0,l.k6)((()=>[(0,l.bF)(s,{type:"danger",size:"small"},{default:(0,l.k6)((()=>[(0,l.bF)(m,null,{default:(0,l.k6)((()=>[(0,l.bF)(v)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data","onCellDblclick"])])])),_:1},8,["modelValue","onOpen","title"])}var Vt={props:["data","modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:v.DtC,Delete:v.epd},setup(e,{emit:t}){const a=(0,u.B)(),n=mt(),o=(0,d.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=()=>{We().then((e=>{e.splice(0,0,"127.0.0.1"),e.splice(0,0,"0.0.0.0"),o.ips=e})).catch((()=>{}))},s=()=>{ze(n.value.current).then((e=>{o.timerTestTarget=setTimeout(s,1e3)})).catch((()=>{o.timerTestTarget=setTimeout(s,1e3)}))},i=()=>{Me().then((e=>{e.List&&(o.data=e.List[o.machineId]||[])})).catch((()=>{}))},c=()=>{i()},h=(e,t)=>{g(e,t.property)},m=()=>{i(),D.nk.success("已刷新")},p=()=>{k({ID:0,Name:"",Port:0,TargetEP:"127.0.0.1:80",machineId:o.machineId})},g=(e,t)=>{e.Started?D.nk.error("请先停止"):(o.data.forEach((e=>{e["NameEditing"]=!1,e["PortEditing"]=!1,e["TargetEPEditing"]=!1,e["BindIPAddressEditing"]=!1})),e[`${t}Editing`]=!0)},v=(e,t)=>{e.Started?D.nk.error("请先停止"):(e[`${t}Editing`]=!1,k(e))},f=e=>{Ae(e).then((()=>{i()}))},w=e=>{k(e)},k=e=>{e.Port=parseInt(e.Port),Be(e).then((()=>{i()})).catch((e=>{D.nk.error(e)}))},b=()=>{n.value.showCopy=!0};return(0,l.sV)((()=>{i(),r(),s()})),(0,l.hi)((()=>{clearTimeout(o.timerTestTarget),clearTimeout(o.timerTestListen)})),{state:o,handleOnShowList:c,handleCellClick:h,handleRefresh:m,handleAdd:p,handleEdit:g,handleEditBlur:v,handleDel:f,handleStartChange:w,handleCopy:b}}};const _t=(0,b.A)(Vt,[["render",Lt],["__scopeId","data-v-2c1a8404"]]);var Et=_t;const yt=e=>((0,l.Qi)("data-v-3a13c86f"),e=e(),(0,l.jt)(),e),It={class:"t-c head"},St=yt((()=>(0,l.Lk)("span",null,"复制",-1))),Pt={class:"t-c"},Mt={class:"page-wrap"},Rt={class:"foot t-c"};function Wt(e,t,a,n,o,r){const s=(0,l.g2)("el-pagination"),u=(0,l.g2)("el-option"),d=(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",It,[St,(0,l.bF)(d,{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",Pt,[(0,l.Lk)("div",Mt,[(0,l.bF)(s,{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)(u,{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,T.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,T.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",Rt,[(0,l.bF)(m,{type:"primary",onClick:n.handleConfirm},{default:(0,l.k6)((()=>[(0,l.eW)("确定复制")])),_:1},8,["onClick"])])])])),_:1},8,["modelValue","onOpen"])}var At={props:["modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:v.DtC},setup(e,{emit:t}){(0,u.B)();const a=mt(),n=(0,d.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,p.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}))},s=e=>{n.machineIds.Request.Page=e,r()},i=e=>{n.machineIds.Request.Name=e,r()},c=()=>{Re({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=>Be({Name:e.Name,Port:e.Port,TargetEP:e.TargetEP,BufferSize:e.BufferSize,MachineId:n.toMachineId})));Promise.all(e).then((()=>{D.nk.success("已操作!"),n.show=!1})).catch((()=>{D.nk.success("操作失败!")}))};return(0,l.sV)((()=>{r()})),(0,l.hi)((()=>{})),{state:n,handleSearch:i,handleOnShowList:o,handleMachineChange:h,handleConfirm:m,handlePageChange:s}}};const Bt=(0,b.A)(At,[["render",Wt],["__scopeId","data-v-3a13c86f"]]);var zt=Bt;const Nt={class:"t-c head"},Ut={class:"error red"},Xt={class:"error red"};function xt(e,t,a,n,o,r){const s=(0,l.g2)("el-button"),u=(0,l.g2)("el-input"),d=(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"),v=(0,l.g2)("el-table"),f=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(f,{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",Nt,[(0,l.bF)(s,{type:"success",size:"small",onClick:n.handleAdd},{default:(0,l.k6)((()=>[(0,l.eW)("添加")])),_:1},8,["onClick"]),(0,l.bF)(s,{size:"small",onClick:n.handleRefresh},{default:(0,l.k6)((()=>[(0,l.eW)("刷新")])),_:1},8,["onClick"]),(0,l.bF)(s,{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)(d,{property:"Name",label:"名称"},{default:(0,l.k6)((e=>[e.row.NameEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(u,{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,T.v_)(e.row.Name),1)],64))])),_:1}),(0,l.bF)(d,{prop:"BufferSize",label:"缓冲区",width:"100"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,T.v_)(1<[e.row.TempEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(u,{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",Ut,[(0,l.Lk)("span",null,(0,T.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,T.C4)({green:e.row.Started})},(0,T.v_)(e.row.Temp),3))],64))])),_:1}),(0,l.bF)(d,{property:"LocalEP",label:"本机服务",width:"140"},{default:(0,l.k6)((e=>[e.row.LocalEPEditing&&0==e.row.Started?((0,l.uX)(),(0,l.Wv)(u,{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",Xt,(0,T.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,T.C4)({green:e.row.Started})},(0,T.v_)(e.row.LocalEP),3))],64))])),_:1}),(0,l.bF)(d,{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)(d,{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)(s,{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 Dt={props:["data","modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:v.DtC,Delete:v.epd},setup(e,{emit:t}){const a=(0,u.B)(),n=ft(),o=(0,d.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,pt.eX)().then((e=>{o.timerTestLocal=setTimeout(r,1e3)})).catch((()=>{o.timerTestLocal=setTimeout(r,1e3)}))},s=()=>{(0,pt.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((()=>{}))},i=()=>{s()},c=(e,t)=>{p(e,t.property)},h=()=>{s(),D.nk.success("已刷新")},m=()=>{(0,pt.Qs)({Id:0,Name:"",RemotePort:0,LocalEP:"127.0.0.1:80",Domain:"",Temp:""}).then((()=>{setTimeout((()=>{s()}),100)})).catch((e=>{D.nk.error(e)}))},p=(e,t)=>{e.Started?D.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?D.nk.error("请先停止运行"):(e[`${t}Editing`]=!1,w(e))},v=e=>{(0,pt.DY)(e).then((()=>{s()}))},f=e=>{w(e)},w=e=>{e.Temp&&(/^\d+$/.test(e.Temp)?e.RemotePort=parseInt(e.Temp):e.Domain=e.Temp,(0,pt.Qs)(e).then((()=>{setTimeout((()=>{s()}),100)})).catch((e=>{D.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,pt.Qs)(a).then((a=>{setTimeout((()=>{e(++t)}),50)})).catch((a=>{console.log(a),D.nk.error(a),setTimeout((()=>{e(++t)}),100)}))};e()};return(0,l.sV)((()=>{s(),r()})),(0,l.hi)((()=>{clearTimeout(o.timerTestLocal)})),{state:o,handleOnShowList:i,handleCellClick:c,handleRefresh:h,handleAdd:m,handleEdit:p,handleEditBlur:g,handleDel:v,handleStartChange:f,handleCopy:k,handle10000:b}}};const Kt=(0,b.A)(Dt,[["render",xt],["__scopeId","data-v-5e37381c"]]);var Gt=Kt;const Ot=e=>((0,l.Qi)("data-v-5512121a"),e=e(),(0,l.jt)(),e),$t={class:"t-c head"},Qt=Ot((()=>(0,l.Lk)("span",null,"复制",-1))),qt={class:"t-c"},jt={class:"page-wrap"},Ht=Ot((()=>(0,l.Lk)("span",null,"的服务器代理穿透记录",-1))),Jt={class:"foot t-c"};function Yt(e,t,a,n,o,r){const s=(0,l.g2)("el-pagination"),u=(0,l.g2)("el-option"),d=(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",$t,[Qt,(0,l.bF)(d,{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",qt,[(0,l.Lk)("div",jt,[(0,l.bF)(s,{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)(u,{key:t,label:e.MachineName,value:e.MachineId},null,8,["label","value"])))),128))])),_:1},8,["modelValue","onChange","loading","remote-method"]),Ht]),(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,T.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",Jt,[(0,l.bF)(m,{type:"primary",onClick:n.handleConfirm},{default:(0,l.k6)((()=>[(0,l.eW)("确定复制")])),_:1},8,["onClick"])])])])),_:1},8,["modelValue","onOpen"])}var Zt={props:["modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:v.DtC},setup(e,{emit:t}){(0,u.B)();const a=(0,d.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,p.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,i())})).catch((e=>{a.loading=!1}))},r=e=>{a.machineIds.Request.Page=e,o()},s=e=>{a.machineIds.Request.Name=e,o()},i=()=>{(0,pt.$U)(a.machineId).then((e=>{e.forEach((e=>{e.use=!0})),a.forwards=e})).catch((e=>{console.log(e)}))},c=()=>{i()},h=()=>{const e=a.forwards.filter((e=>e.use)).map((e=>(0,pt.Qs)({Name:e.Name,Domain:e.Domain,RemotePort:e.RemotePort,LocalEP:e.LocalEP})));Promise.all(e).then((()=>{D.nk.success("已操作!"),a.show=!1})).catch((()=>{D.nk.success("操作失败!")}))};return(0,l.sV)((()=>{o()})),(0,l.hi)((()=>{})),{state:a,handleSearch:s,handleOnShowList:n,handleMachineChange:c,handleConfirm:h,handlePageChange:r}}};const ea=(0,b.A)(Zt,[["render",Yt],["__scopeId","data-v-5512121a"]]);var ta=ea;function aa(e,t,a,n,o,r){const s=(0,l.g2)("el-table-column"),u=(0,l.g2)("Delete"),d=(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:`与[${n.state.machineName}]的链接`,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)(s,{property:"RemoteMachineId",label:"目标"},{default:(0,l.k6)((e=>[(0,l.Lk)("div",{class:(0,T.C4)({green:e.row.Connected})},[(0,l.Lk)("p",null,(0,T.v_)(e.row.IPEndPoint),1),(0,l.Lk)("p",null,"ssl : "+(0,T.v_)(e.row.SSL),1)],2)])),_:1}),(0,l.bF)(s,{property:"TransactionId",label:"事务",width:"80"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,T.v_)(n.state.transactions[e.row.TransactionId]),1)])),_:1}),(0,l.bF)(s,{property:"TransportName",label:"协议"},{default:(0,l.k6)((e=>[(0,l.Lk)("div",null,[(0,l.Lk)("p",null,(0,T.v_)(e.row.TransportName)+"("+(0,T.v_)(n.state.protocolTypes[e.row.ProtocolType])+")",1),(0,l.Lk)("p",null,(0,T.v_)(n.state.types[e.row.Type])+" - "+(0,T.v_)(1<[(0,l.Lk)("span",null,(0,T.v_)(e.row.Delay)+"ms",1)])),_:1}),(0,l.bF)(s,{property:"Bytes",label:"通信"},{default:(0,l.k6)((e=>[(0,l.Lk)("div",null,[(0,l.Lk)("p",null,"up : "+(0,T.v_)(e.row.SendBytesText),1),(0,l.Lk)("p",null,"down : "+(0,T.v_)(e.row.ReceiveBytesText),1)])])),_:1}),(0,l.bF)(s,{label:"操作",width:"54"},{default:(0,l.k6)((e=>[n.hasTunnelRemove?((0,l.uX)(),(0,l.Wv)(c,{key:0,"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)(d,null,{default:(0,l.k6)((()=>[(0,l.bF)(u)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])):(0,l.Q3)("",!0)])),_:1})])),_:1},8,["data"])])])),_:1},8,["modelValue","title"])}var la={props:["modelValue"],emits:["change","update:modelValue"],components:{Delete:v.epd},setup(e,{emit:t}){const a=(0,u.B)(),n=(0,l.EW)((()=>a.value.hasAccess("TunnelRemove"))),o=De(),r=Ke(),s=Ge(),i=(0,d.Kh)({show:!0,protocolTypes:{1:"tcp",2:"udp",4:"msquic"},types:{0:"打洞",1:"中继"},transactions:{forward:"端口转发",tuntap:"虚拟网卡"},machineName:o.value.currentName,data:(0,l.EW)((()=>[r.value.list[o.value.current],s.value.list[o.value.current]].filter((e=>!!e))))});(0,l.wB)((()=>i.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e),t("change")}),300)}));const c=e=>{n.value&&e.removeFunc(e.RemoteMachineId).then((()=>{D.nk.success("删除成功")})).catch((()=>{}))};return(0,l.sV)((()=>{o.value.updateRealTime(!0)})),(0,l.hi)((()=>{o.value.updateRealTime(!1)})),{state:i,handleDel:c,hasTunnelRemove:n}}};const na=(0,b.A)(la,[["render",aa],["__scopeId","data-v-337b0bab"]]);var oa=na,ra=a(7985),sa=a(9383),ua={components:{Oper:C,Device:N,DeviceEdit:O,AccessEdit:J,Tunnel:Qe,TunnelEdit:tt,ConnectionsEdit:oa,Tuntap:ne,TuntapEdit:be,Forward:bt,ForwardEdit:Et,ForwardCopy:zt,SForwardEdit:Gt,SForwardCopy:ta},setup(e){const t=(0,u.B)(),a=(0,d.Kh)({height:(0,l.EW)((()=>t.value.height-90))}),{devices:n,machineId:o,_getSignList:r,_getSignList1:s,handleDeviceEdit:i,handleAccessEdit:c,handlePageChange:h,handlePageSizeChange:m,handleDel:p,clearDevicesTimeout:g,setSort:v}=(0,ra.r)(),{tuntap:f,_getTuntapInfo:k,handleTuntapEdit:b,handleTuntapRefresh:F,clearTuntapTimeout:C,getTuntapMachines:T,sortTuntapIP:L}=(0,ee.O)(),{tunnel:V,_getTunnelInfo:_,handleTunnelEdit:E,handleTunnelRefresh:y,clearTunnelTimeout:I,sortTunnel:S}=Ee(),{forward:P,_getForwardInfo:M,handleForwardEdit:R,_testTargetForwardInfo:W,clearForwardTimeout:A,getForwardMachines:B}=ht(),{sforward:z,_getSForwardInfo:N,handleSForwardEdit:U,_testLocalSForwardInfo:X,clearSForwardTimeout:x,getSForwardMachines:K}=vt(),{connections:G,forwardConnections:O,_getForwardConnections:$,tuntapConnections:Q,_getTuntapConnections:q,handleTunnelConnections:j,clearConnectionsTimeout:H}=xe(),{_getUpdater:J,_subscribeUpdater:Y,clearUpdaterTimeout:Z}=(0,sa.d)(),{_getAccessInfo:te,clearAccessTimeout:ae}=(0,w.Y)(),le=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=v(e))}else if("tuntap"==e.prop){const e=L(n.page.Request.Asc);e.length>0&&(t=v(e))}t.then((()=>{h()})).catch((()=>{}))},ne=e=>{R(e,n.page.List.filter((t=>t.MachineId==e))[0].MachineName)},oe=e=>{n.page.Request.Name=e||"",n.page.Request.Name?n.page.Request.Ids=T(n.page.Request.Name).concat(B(n.page.Request.Name)).concat(K(n.page.Request.Name)).reduce(((e,t)=>(-1==e.indexOf(t)&&e.push(t),e)),[]):n.page.Request.Ids=[],h(),y(),F(),D.nk.success({message:"刷新成功",grouping:!0})},re=()=>{h(),y(),F(),D.nk.success({message:"刷新成功",grouping:!0})};return(0,l.sV)((()=>{h(),y(),F(),r(),s(),k(),_(),$(),q(),M(),N(),J(),Y(),te(),W(),X()})),(0,l.hi)((()=>{g(),H(),C(),I(),A(),x(),Z(),ae()})),{state:a,devices:n,machineId:o,handleSortChange:le,handleDeviceEdit:i,handleAccessEdit:c,handlePageRefresh:oe,handlePageSearch:re,handlePageChange:h,handlePageSizeChange:m,handleDel:p,tuntap:f,handleTuntapEdit:b,handleTuntapRefresh:F,tunnel:V,connections:G,handleTunnelEdit:E,handleTunnelRefresh:y,handleTunnelConnections:j,forward:P,_handleForwardEdit:ne,sforward:z,handleSForwardEdit:U}}};const da=(0,b.A)(ua,[["render",s],["__scopeId","data-v-137c2b43"]]);var ia=da},2126:function(e,t,a){a.d(t,{A:function(){return b}});var l=a(6768),n=a(4232);const o=["title"],r={key:0,class:"progress"},s={key:1,class:"progress"};function u(e,t,a,u,d,i){const c=(0,l.g2)("Loading"),h=(0,l.g2)("el-icon"),m=(0,l.g2)("Download"),p=(0,l.g2)("CircleCheck");return(0,l.uX)(),(0,l.CE)("a",{href:"javascript:;",class:(0,n.C4)(["download",u.updaterColor]),onClick:t[0]||(t[0]=e=>u.handleUpdate()),title:u.updaterText},[(0,l.Lk)("span",null,[(0,l.Lk)("span",null,(0,n.v_)(u.item.Version),1),u.updater.list[u.item.MachineId]?((0,l.uX)(),(0,l.CE)(l.FK,{key:0},[1==u.updater.list[u.item.MachineId].Status?((0,l.uX)(),(0,l.Wv)(h,{key:0,size:"14",class:"loading"},{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1})):2==u.updater.list[u.item.MachineId].Status?((0,l.uX)(),(0,l.Wv)(h,{key:1,size:"14"},{default:(0,l.k6)((()=>[(0,l.bF)(m)])),_:1})):3==u.updater.list[u.item.MachineId].Status||5==u.updater.list[u.item.MachineId].Status?((0,l.uX)(),(0,l.CE)(l.FK,{key:2},[(0,l.bF)(h,{size:"14",class:"loading"},{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1}),0==u.updater.list[u.item.MachineId].Length?((0,l.uX)(),(0,l.CE)("span",r,"0%")):((0,l.uX)(),(0,l.CE)("span",s,(0,n.v_)(parseInt(u.updater.list[u.item.MachineId].Current/u.updater.list[u.item.MachineId].Length*100))+"%",1))],64)):6==u.updater.list[u.item.MachineId].Status?((0,l.uX)(),(0,l.Wv)(h,{key:3,size:"14",class:"yellow"},{default:(0,l.k6)((()=>[(0,l.bF)(p)])),_:1})):(0,l.Q3)("",!0)],64)):((0,l.uX)(),(0,l.Wv)(h,{key:1,size:"14"},{default:(0,l.k6)((()=>[(0,l.bF)(m)])),_:1}))])],10,o)}a(4114);var d=a(3830),i=a(144),c=a(1219),h=a(2933),m=a(2248),p=a(920),g=a(7477),v=a(9383),f={props:["item","config"],components:{Download:g.f5X,Loading:g.Rhj,CircleCheck:g.rW7},setup(e){const t=(0,d.B)(),a=(0,l.EW)((()=>t.value.hasAccess("UpdateSelf"))),n=(0,l.EW)((()=>t.value.hasAccess("UpdateOther"))),o=(0,v.T)(),r=(0,l.EW)((()=>t.value.signin.Version)),s=(0,l.EW)((()=>o.value.current.Version)),u=(0,l.EW)((()=>`${s.value}->${o.value.current.DateTime}\n${o.value.current.Msg.map(((e,t)=>`${t+1}、${e}`)).join("\n")}`)),g=(0,l.EW)((()=>o.value.list[e.item.MachineId]?o.value.list[e.item.MachineId].Status<=2?e.item.Version!=r.value?`与服务器版本(${r.value})不一致,建议更新`:s.value!=e.item.Version?`不是最新版本(${s.value}),建议更新\n${u.value}`:`是最新版本,但我无法阻止你喜欢更新\n${u.value}`:{3:"正在下载",4:"已下载",5:"正在解压",6:"已解压,请重启"}[o.value.list[e.item.MachineId].Status]:"未检测到更新")),f=(0,l.EW)((()=>e.item.Version!=r.value?"red":o.value.list[e.item.MachineId]&&s.value!=e.item.Version?"yellow":"green")),w=()=>{if(!e.config)return;if(!a.value)return;const t=o.value.list[e.item.MachineId];if(t)if([0,1,3,5].indexOf(t.Status)>=0)c.nk.error("操作中,请稍后!");else if(6!=t.Status){if(2==t.Status){const t=(0,i.KR)(s.value),a=[(0,l.h)(m.P9,{label:`仅[${e.item.MachineName}] -> ${s.value}(最新版本)`,value:s.value})];e.config&&n.value&&a.push((0,l.h)(m.P9,{label:`[所有] -> ${s.value}(最新版本)`,value:`all->${s.value}`})),e.item.Version!=r.value&&s.value!=r.value&&(a.push((0,l.h)(m.P9,{label:`仅[${e.item.MachineName}] -> ${r.value}(服务器版本)`,value:r.value})),e.config&&n.value&&a.push((0,l.h)(m.P9,{label:`[所有] -> ${r.value}(服务器版本)`,value:`all->${r.value}`}))),(0,h.s)({title:"选择版本",message:()=>(0,l.h)(m.AV,{modelValue:t.value,placeholder:"请选择",style:"width:20rem;","onUpdate:modelValue":e=>{t.value=e}},a),confirmButtonText:"确定",cancelButtonText:"取消"}).then((()=>{const a={MachineId:e.item.MachineId,Version:t.value.replace("all->",""),All:t.value.indexOf("all->")>=0};a.All&&(a.MachineId=""),(0,p.lJ)(a)})).catch((()=>{}))}}else h.s.confirm("确定关闭程序吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{exit(e.item.MachineId)})).catch((()=>{}));else c.nk.error("未检测到更新")};return{item:(0,l.EW)((()=>e.item)),updater:o,updaterText:g,updaterColor:f,handleUpdate:w}}},w=a(1241);const k=(0,w.A)(f,[["render",u],["__scopeId","data-v-56d38c60"]]);var b=k}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/410.d6dc23c6.js b/linker.tray.win/web/js/331.2960524f.js
similarity index 50%
rename from linker.tray.win/web/js/410.d6dc23c6.js
rename to linker.tray.win/web/js/331.2960524f.js
index df9b4c5c..443127d2 100644
--- a/linker.tray.win/web/js/410.d6dc23c6.js
+++ b/linker.tray.win/web/js/331.2960524f.js
@@ -1 +1 @@
-"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[410],{3991:function(e,a,t){t.r(a),t.d(a,{default:function(){return M}});var n=t(6768);const l={class:"net-wrap app-wrap"},s={class:"inner absolute flex flex-column flex-nowrap"},i={class:"head"},r={class:"body flex-1 relative"},u={class:"status"};function d(e,a,t,d,c,o){const g=(0,n.g2)("Head"),p=(0,n.g2)("List"),v=(0,n.g2)("Status");return(0,n.uX)(),(0,n.CE)("div",l,[(0,n.Lk)("div",s,[(0,n.Lk)("div",i,[(0,n.bF)(g)]),(0,n.Lk)("div",r,[(0,n.bF)(p)]),(0,n.Lk)("div",u,[(0,n.bF)(v,{config:!1})])])])}t(4114);const c=e=>((0,n.Qi)("data-v-213d85ba"),e=e(),(0,n.jt)(),e),o={class:"head-wrap"},g={class:"tools flex"},p=c((()=>(0,n.Lk)("span",{class:"label"},"服务器 ",-1))),v=c((()=>(0,n.Lk)("span",{class:"flex-1"},null,-1))),h={style:{"margin-left":"1rem"}};function f(e,a,t,l,s,i){const r=(0,n.g2)("el-option"),u=(0,n.g2)("el-select"),d=(0,n.g2)("Refresh"),c=(0,n.g2)("el-icon"),f=(0,n.g2)("el-button"),k=(0,n.g2)("Background");return(0,n.uX)(),(0,n.CE)("div",o,[(0,n.Lk)("div",g,[p,(0,n.bF)(u,{modelValue:l.state.server,"onUpdate:modelValue":a[0]||(a[0]=e=>l.state.server=e),placeholder:"服务器",style:{width:"16rem"},size:"small"},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(l.state.servers,(e=>((0,n.uX)(),(0,n.Wv)(r,{key:e.Host,label:e.Name,value:e.Host},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),v,(0,n.bF)(f,{size:"small",onClick:l.handleRefresh},{default:(0,n.k6)((()=>[(0,n.eW)(" 刷新(F5)"),(0,n.bF)(c,null,{default:(0,n.k6)((()=>[(0,n.bF)(d)])),_:1})])),_:1},8,["onClick"]),(0,n.Lk)("div",h,[(0,n.bF)(k,{name:"net"})])])])}var k=t(3830),m=t(144),b=t(7477),C=t(5096),L={components:{Edit:b.ffu,Refresh:b.C42,Background:C.A},setup(){const e=(0,k.B)(),a=(0,m.Kh)({server:"linker.snltty.com:1802",servers:[]});(0,n.wB)((()=>e.value.config.Client.Servers),(()=>{a.servers=(e.value.config.Client.Servers||[]).slice(0,1),a.server=e.value.config.Client.ServerInfo.Host}));const t=()=>{window.location.reload()};return{state:a,handleRefresh:t}}},w=t(1241);const S=(0,w.A)(L,[["render",f],["__scopeId","data-v-213d85ba"]]);var F=S;const _=e=>((0,n.Qi)("data-v-5052ddc7"),e=e(),(0,n.jt)(),e),x={class:"net-list-wrap flex flex-column absolute"},z={class:"flex-1 scrollbar"},I={class:"flex"},E=_((()=>(0,n.Lk)("div",{class:"flex-1"},null,-1))),T={class:"tuntap"},A={class:"page t-c"},B={class:"page-wrap t-c"};function P(e,a,t,l,s,i){const r=(0,n.g2)("DeviceName"),u=(0,n.g2)("UpdaterBtn"),d=(0,n.g2)("TuntapShow"),c=(0,n.g2)("el-pagination");return(0,n.uX)(),(0,n.CE)("div",x,[(0,n.Lk)("div",z,[(0,n.Lk)("ul",null,[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(l.devices.page.List,((e,a)=>((0,n.uX)(),(0,n.CE)("li",{key:a},[(0,n.Lk)("dl",null,[(0,n.Lk)("dt",I,[(0,n.Lk)("div",null,[(0,n.bF)(r,{item:e},null,8,["item"])]),E,(0,n.Lk)("div",null,[(0,n.bF)(u,{config:!1,item:e},null,8,["item"])])]),(0,n.Lk)("dd",T,[l.tuntap.list[e.MachineId]?((0,n.uX)(),(0,n.Wv)(d,{key:0,item:e},null,8,["item"])):(0,n.Q3)("",!0)])])])))),128))])]),(0,n.Lk)("div",A,[(0,n.Lk)("div",B,[(0,n.bF)(c,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:l.devices.page.Count,"page-size":l.devices.page.Request.Size,"current-page":l.devices.page.Request.Page,onCurrentChange:l.handlePageChange,onSizeChange:l.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var y=t(8104),X=t(7985),R=t(9383),D=t(2126),H=t(886),N=t(3630),U={components:{StarFilled:b.BQ2,UpdaterBtn:D.A,DeviceName:H.A,TuntapShow:N.A},setup(e){(0,k.B)();const a=(0,m.Kh)({}),{devices:t,machineId:l,_getSignList:s,_getSignList1:i,handleDeviceEdit:r,handlePageChange:u,handlePageSizeChange:d,handleDel:c,clearDevicesTimeout:o}=(0,X.r)(),{tuntap:g,_getTuntapInfo:p,handleTuntapRefresh:v,clearTuntapTimeout:h,handleTuntapEdit:f,sortTuntapIP:b}=(0,y.O)(),{_getUpdater:C,clearUpdaterTimeout:L}=(0,R.d)();return(0,n.sV)((()=>{u(),v(),s(),i(),p(),C()})),(0,n.hi)((()=>{o(),h(),L()})),{state:a,devices:t,machineId:l,handlePageChange:u,handlePageSizeChange:d,tuntap:g}}};const V=(0,w.A)(U,[["render",P],["__scopeId","data-v-5052ddc7"]]);var K=V,Q=t(904),W=t(1387),j={components:{Head:F,List:K,Status:Q.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,k.B)(),a=(0,W.rd)();return(0,n.sV)((()=>{0==e.value.hasAccess("NetManager")&&a.push({name:"NoPermission"})})),{}}};const q=(0,w.A)(j,[["render",d],["__scopeId","data-v-6a3f3b43"]]);var M=q}}]);
\ No newline at end of file
+"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[331],{9256:function(e,a,t){t.r(a),t.d(a,{default:function(){return M}});var n=t(6768);const l={class:"net-wrap app-wrap"},s={class:"inner absolute flex flex-column flex-nowrap"},r={class:"head"},i={class:"body flex-1 relative"},u={class:"status"};function c(e,a,t,c,d,o){const g=(0,n.g2)("Head"),p=(0,n.g2)("List"),v=(0,n.g2)("Status");return(0,n.uX)(),(0,n.CE)("div",l,[(0,n.Lk)("div",s,[(0,n.Lk)("div",r,[(0,n.bF)(g)]),(0,n.Lk)("div",i,[(0,n.bF)(p)]),(0,n.Lk)("div",u,[(0,n.bF)(v,{config:!1})])])])}t(4114);const d=e=>((0,n.Qi)("data-v-213d85ba"),e=e(),(0,n.jt)(),e),o={class:"head-wrap"},g={class:"tools flex"},p=d((()=>(0,n.Lk)("span",{class:"label"},"服务器 ",-1))),v=d((()=>(0,n.Lk)("span",{class:"flex-1"},null,-1))),h={style:{"margin-left":"1rem"}};function f(e,a,t,l,s,r){const i=(0,n.g2)("el-option"),u=(0,n.g2)("el-select"),c=(0,n.g2)("Refresh"),d=(0,n.g2)("el-icon"),f=(0,n.g2)("el-button"),k=(0,n.g2)("Background");return(0,n.uX)(),(0,n.CE)("div",o,[(0,n.Lk)("div",g,[p,(0,n.bF)(u,{modelValue:l.state.server,"onUpdate:modelValue":a[0]||(a[0]=e=>l.state.server=e),placeholder:"服务器",style:{width:"16rem"},size:"small"},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(l.state.servers,(e=>((0,n.uX)(),(0,n.Wv)(i,{key:e.Host,label:e.Name,value:e.Host},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),v,(0,n.bF)(f,{size:"small",onClick:l.handleRefresh},{default:(0,n.k6)((()=>[(0,n.eW)(" 刷新(F5)"),(0,n.bF)(d,null,{default:(0,n.k6)((()=>[(0,n.bF)(c)])),_:1})])),_:1},8,["onClick"]),(0,n.Lk)("div",h,[(0,n.bF)(k,{name:"net"})])])])}var k=t(3830),m=t(144),b=t(7477),C=t(5096),L={components:{Edit:b.ffu,Refresh:b.C42,Background:C.A},setup(){const e=(0,k.B)(),a=(0,m.Kh)({server:"linker.snltty.com:1802",servers:[]});(0,n.wB)((()=>e.value.config.Client.Servers),(()=>{a.servers=(e.value.config.Client.Servers||[]).slice(0,1),a.server=e.value.config.Client.ServerInfo.Host}));const t=()=>{window.location.reload()};return{state:a,handleRefresh:t}}},w=t(1241);const S=(0,w.A)(L,[["render",f],["__scopeId","data-v-213d85ba"]]);var _=S;const F=e=>((0,n.Qi)("data-v-b6ab4f06"),e=e(),(0,n.jt)(),e),x={class:"net-list-wrap flex flex-column absolute"},z={class:"flex-1 scrollbar"},I={class:"flex"},E=F((()=>(0,n.Lk)("div",{class:"flex-1"},null,-1))),T={class:"tuntap"},A={class:"page t-c"},B={class:"page-wrap t-c"};function P(e,a,t,l,s,r){const i=(0,n.g2)("DeviceName"),u=(0,n.g2)("UpdaterBtn"),c=(0,n.g2)("TuntapShow"),d=(0,n.g2)("el-pagination");return(0,n.uX)(),(0,n.CE)("div",x,[(0,n.Lk)("div",z,[(0,n.Lk)("ul",null,[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(l.devices.page.List,((e,a)=>((0,n.uX)(),(0,n.CE)("li",{key:a},[(0,n.Lk)("dl",null,[(0,n.Lk)("dt",I,[(0,n.Lk)("div",null,[(0,n.bF)(i,{item:e},null,8,["item"])]),E,(0,n.Lk)("div",null,[(0,n.bF)(u,{config:!1,item:e},null,8,["item"])])]),(0,n.Lk)("dd",T,[l.tuntap.list[e.MachineId]?((0,n.uX)(),(0,n.Wv)(c,{key:0,item:e},null,8,["item"])):(0,n.Q3)("",!0)])])])))),128))])]),(0,n.Lk)("div",A,[(0,n.Lk)("div",B,[(0,n.bF)(d,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:l.devices.page.Count,"page-size":l.devices.page.Request.Size,"current-page":l.devices.page.Request.Page,onCurrentChange:l.handlePageChange,onSizeChange:l.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var y=t(8104),X=t(7985),R=t(9383),D=t(2126),U=t(886),H=t(3630),N={components:{StarFilled:b.BQ2,UpdaterBtn:D.A,DeviceName:U.A,TuntapShow:H.A},setup(e){(0,k.B)();const a=(0,m.Kh)({}),{devices:t,machineId:l,_getSignList:s,_getSignList1:r,handleDeviceEdit:i,handlePageChange:u,handlePageSizeChange:c,handleDel:d,clearDevicesTimeout:o}=(0,X.r)(),{tuntap:g,_getTuntapInfo:p,handleTuntapRefresh:v,clearTuntapTimeout:h,handleTuntapEdit:f,sortTuntapIP:b}=(0,y.O)(),{_getUpdater:C,_subscribeUpdater:L,clearUpdaterTimeout:w}=(0,R.d)();return(0,n.sV)((()=>{u(),v(),s(),r(),p(),C(),L()})),(0,n.hi)((()=>{o(),h(),w()})),{state:a,devices:t,machineId:l,handlePageChange:u,handlePageSizeChange:c,tuntap:g}}};const V=(0,w.A)(N,[["render",P],["__scopeId","data-v-b6ab4f06"]]);var K=V,Q=t(4548),W=t(1387),j={components:{Head:_,List:K,Status:Q.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,k.B)(),a=(0,W.rd)();return(0,n.sV)((()=>{0==e.value.hasAccess("NetManager")&&a.push({name:"NoPermission"})})),{}}};const q=(0,w.A)(j,[["render",c],["__scopeId","data-v-6a3f3b43"]]);var M=q}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/50.6f5d837b.js b/linker.tray.win/web/js/50.6f5d837b.js
deleted file mode 100644
index 533cac3f..00000000
--- a/linker.tray.win/web/js/50.6f5d837b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[50],{83:function(e,t,n){n.d(t,{$M:function(){return s},KW:function(){return r},S3:function(){return d},Vn:function(){return o},b0:function(){return u},gM:function(){return c},ix:function(){return l},r7:function(){return i},zp:function(){return h}});var a=n(4);const l=()=>(0,a.zG)("tunnel/gettypes"),u=e=>(0,a.zG)("tunnel/SetServers",e),i=(e="0")=>(0,a.zG)("tunnel/get",e),c=()=>(0,a.zG)("tunnel/refresh"),r=e=>(0,a.zG)("tunnel/SetRouteLevel",e),s=e=>(0,a.zG)("tunnel/SetTransports",e),o=()=>(0,a.zG)("tunnel/GeInterfaces"),d=e=>(0,a.zG)("tunnel/SetInterface",e),h=()=>(0,a.zG)("tunnel/Records")},920:function(e,t,n){n.d(t,{BJ:function(){return o},NS:function(){return i},Vk:function(){return s},aP:function(){return h},ir:function(){return r},lJ:function(){return u},mK:function(){return l},y2:function(){return d},yN:function(){return c}});var a=n(4);const l=(e="0")=>(0,a.zG)("updaterclient/get",e),u=e=>(0,a.zG)("updaterclient/confirm",e),i=e=>(0,a.zG)("updaterclient/exit",e),c=()=>(0,a.zG)("updaterclient/GetSecretKey"),r=e=>(0,a.zG)("updaterclient/SetSecretKey",e),s=()=>(0,a.zG)("updaterclient/getcurrent"),o=()=>(0,a.zG)("updaterclient/getserver"),d=e=>(0,a.zG)("updaterclient/confirmserver",e),h=()=>(0,a.zG)("updaterclient/exitserver")},5962:function(e,t,n){n.d(t,{Y:function(){return c},q:function(){return r}});var a=n(8835),l=n(144),u=n(6768);const i=Symbol(),c=()=>{const e=(0,l.KR)({list:{},timer:0,hashcode:0});(0,u.Gt)(i,e);const t=()=>{(0,a.QI)(e.value.hashcode.toString()).then((n=>{e.value.hashcode=n.HashCode,n.List&&(e.value.list=n.List),e.value.timer=setTimeout(t,1e3)})).catch((()=>{e.value.timer=setTimeout(t,1e3)}))},n=()=>{clearTimeout(e.value.timer)};return{access:e,_getAccessInfo:t,clearAccessTimeout:n}},r=()=>(0,u.WQ)(i)},9383:function(e,t,n){n.d(t,{T:function(){return s},d:function(){return r}});var a=n(920),l=n(3830),u=n(144),i=n(6768);const c=Symbol(),r=()=>{const e=(0,l.B)(),t=(0,u.KR)({timer:0,list:{},hashcode:0,current:{Version:"",Msg:[],DateTime:"",Status:0,Length:0,Current:0}});(0,i.Gt)(c,t);const n=()=>{(0,a.mK)(t.value.hashcode.toString()).then((a=>{if(t.value.hashcode=a.HashCode,a.List){const n=Object.values(a.List).filter((e=>!!e.Version))[0];n&&(Object.assign(t.value.current,{DateTime:n.DateTime,Version:n.Version,Status:n.Status,Length:n.Length,Current:n.Current,Msg:n.Msg}),e.value.updater=t.value.current),t.value.list=a.List}t.value.timer=setTimeout(n,800)})).catch((()=>{t.value.timer=setTimeout(n,800)}))},r=()=>{clearTimeout(t.value.timer)};return{updater:t,_getUpdater:n,clearUpdaterTimeout:r}},s=()=>(0,i.WQ)(c)},6611:function(e,t,n){n.d(t,{A:function(){return d}});var a=n(6768);function l(e,t,n,l,u,i){const c=(0,a.g2)("el-checkbox"),r=(0,a.g2)("el-col"),s=(0,a.g2)("el-row"),o=(0,a.g2)("el-checkbox-group");return(0,a.uX)(),(0,a.CE)(a.FK,null,[(0,a.bF)(s,null,{default:(0,a.k6)((()=>[(0,a.bF)(r,{span:8},{default:(0,a.k6)((()=>[(0,a.bF)(c,{modelValue:l.state.checkAll,"onUpdate:modelValue":t[0]||(t[0]=e=>l.state.checkAll=e),onChange:l.handleCheckAllChange,label:"全选",indeterminate:l.state.isIndeterminate},null,8,["modelValue","onChange","indeterminate"])])),_:1})])),_:1}),(0,a.bF)(o,{modelValue:l.state.checkList,"onUpdate:modelValue":t[1]||(t[1]=e=>l.state.checkList=e),onChange:l.handleCheckedChange},{default:(0,a.k6)((()=>[(0,a.bF)(s,null,{default:(0,a.k6)((()=>[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(l.access,((e,t)=>((0,a.uX)(),(0,a.Wv)(r,{key:t,span:8},{default:(0,a.k6)((()=>[(0,a.bF)(c,{value:e.Value,label:e.Text},null,8,["value","label"])])),_:2},1024)))),128))])),_:1})])),_:1},8,["modelValue","onChange"])],64)}n(4114);var u=n(144),i=n(3830),c=n(5962),r={props:["machineid"],setup(e){const t=(0,i.B)(),n=(0,c.q)(),l=(0,a.EW)((()=>{const e=t.value.config.Client.Accesss;return Object.keys(e).reduce(((n,a,l)=>{if(t.value.hasAccess(a)){const t=e[a];t.Key=a,n.push(t)}return n}),[])})),r=(0,u.Kh)({checkList:[t.value.config.Client.Accesss.Api.Value,t.value.config.Client.Accesss.Web.Value,t.value.config.Client.Accesss.NetManager.Value,t.value.config.Client.Accesss.FullManager.Value,t.value.config.Client.Accesss.Transport.Value,t.value.config.Client.Accesss.Action.Value],checkAll:!1,isIndeterminate:!1}),s=()=>r.checkList.reduce(((e,t)=>(e|t)>>>0),0),o=e=>{const t=e.length;r.checkAll=t===l.value.length,r.isIndeterminate=t>0&&t{r.checkAll=e,r.checkList=e?l.value.map((e=>e.Value)):[],r.isIndeterminate=!1};return(0,a.sV)((()=>{if(n&&n.value.list[e.machineid]){const t=n.value.list[e.machineid];r.checkList=l.value.reduce(((e,n)=>((t&n.Value)>>>0==n.Value&&e.push(n.Value),e)),[])}o(r.checkList)})),{state:r,access:l,getValue:s,handleCheckAllChange:d,handleCheckedChange:o}}},s=n(1241);const o=(0,s.A)(r,[["render",l],["__scopeId","data-v-bdd023b0"]]);var d=o},2126:function(e,t,n){n.d(t,{A:function(){return V}});var a=n(6768),l=n(4232);const u=["title"],i={key:0,class:"progress"},c={key:1,class:"progress"};function r(e,t,n,r,s,o){const d=(0,a.g2)("Loading"),h=(0,a.g2)("el-icon"),v=(0,a.g2)("Download"),m=(0,a.g2)("CircleCheck");return(0,a.uX)(),(0,a.CE)("a",{href:"javascript:;",class:(0,l.C4)(["download",r.updaterColor]),onClick:t[0]||(t[0]=e=>r.handleUpdate()),title:r.updaterText},[(0,a.Lk)("span",null,[(0,a.Lk)("span",null,(0,l.v_)(r.item.Version),1),r.updater.list[r.item.MachineId]?((0,a.uX)(),(0,a.CE)(a.FK,{key:0},[1==r.updater.list[r.item.MachineId].Status?((0,a.uX)(),(0,a.Wv)(h,{key:0,size:"14",class:"loading"},{default:(0,a.k6)((()=>[(0,a.bF)(d)])),_:1})):2==r.updater.list[r.item.MachineId].Status?((0,a.uX)(),(0,a.Wv)(h,{key:1,size:"14"},{default:(0,a.k6)((()=>[(0,a.bF)(v)])),_:1})):3==r.updater.list[r.item.MachineId].Status||5==r.updater.list[r.item.MachineId].Status?((0,a.uX)(),(0,a.CE)(a.FK,{key:2},[(0,a.bF)(h,{size:"14",class:"loading"},{default:(0,a.k6)((()=>[(0,a.bF)(d)])),_:1}),0==r.updater.list[r.item.MachineId].Length?((0,a.uX)(),(0,a.CE)("span",i,"0%")):((0,a.uX)(),(0,a.CE)("span",c,(0,l.v_)(parseInt(r.updater.list[r.item.MachineId].Current/r.updater.list[r.item.MachineId].Length*100))+"%",1))],64)):6==r.updater.list[r.item.MachineId].Status?((0,a.uX)(),(0,a.Wv)(h,{key:3,size:"14",class:"yellow"},{default:(0,a.k6)((()=>[(0,a.bF)(m)])),_:1})):(0,a.Q3)("",!0)],64)):((0,a.uX)(),(0,a.Wv)(h,{key:1,size:"14"},{default:(0,a.k6)((()=>[(0,a.bF)(v)])),_:1}))])],10,u)}n(4114);var s=n(3830),o=n(144),d=n(1219),h=n(2933),v=n(2248),m=n(920),f=n(7477),p=n(9383),g={props:["item","config"],components:{Download:f.f5X,Loading:f.Rhj,CircleCheck:f.rW7},setup(e){const t=(0,s.B)(),n=(0,a.EW)((()=>t.value.hasAccess("UpdateSelf"))),l=(0,a.EW)((()=>t.value.hasAccess("UpdateOther"))),u=(0,p.T)(),i=(0,a.EW)((()=>t.value.signin.Version)),c=(0,a.EW)((()=>u.value.current.Version)),r=(0,a.EW)((()=>`${c.value}->${u.value.current.DateTime}\n${u.value.current.Msg.map(((e,t)=>`${t+1}、${e}`)).join("\n")}`)),f=(0,a.EW)((()=>u.value.list[e.item.MachineId]?u.value.list[e.item.MachineId].Status<=2?e.item.Version!=i.value?`与服务器版本(${i.value})不一致,建议更新`:c.value!=e.item.Version?`不是最新版本(${c.value}),建议更新\n${r.value}`:`是最新版本,但我无法阻止你喜欢更新\n${r.value}`:{3:"正在下载",4:"已下载",5:"正在解压",6:"已解压,请重启"}[u.value.list[e.item.MachineId].Status]:"未检测到更新")),g=(0,a.EW)((()=>e.item.Version!=i.value?"red":u.value.list[e.item.MachineId]&&c.value!=e.item.Version?"yellow":"green")),k=()=>{if(!e.config)return;if(!n.value)return;const t=u.value.list[e.item.MachineId];if(t)if([0,1,3,5].indexOf(t.Status)>=0)d.nk.error("操作中,请稍后!");else if(6!=t.Status){if(2==t.Status){const t=(0,o.KR)(c.value),n=[(0,a.h)(v.P9,{label:`仅[${e.item.MachineName}] -> ${c.value}(最新版本)`,value:c.value})];e.config&&l.value&&n.push((0,a.h)(v.P9,{label:`[所有] -> ${c.value}(最新版本)`,value:`all->${c.value}`})),e.item.Version!=i.value&&c.value!=i.value&&(n.push((0,a.h)(v.P9,{label:`仅[${e.item.MachineName}] -> ${i.value}(服务器版本)`,value:i.value})),e.config&&l.value&&n.push((0,a.h)(v.P9,{label:`[所有] -> ${i.value}(服务器版本)`,value:`all->${i.value}`}))),(0,h.s)({title:"选择版本",message:()=>(0,a.h)(v.AV,{modelValue:t.value,placeholder:"请选择",style:"width:20rem;","onUpdate:modelValue":e=>{t.value=e}},n),confirmButtonText:"确定",cancelButtonText:"取消"}).then((()=>{const n={MachineId:e.item.MachineId,Version:t.value.replace("all->",""),All:t.value.indexOf("all->")>=0};n.All&&(n.MachineId=""),(0,m.lJ)(n)})).catch((()=>{}))}}else h.s.confirm("确定关闭程序吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{exit(e.item.MachineId)})).catch((()=>{}));else d.nk.error("未检测到更新")};return{item:(0,a.EW)((()=>e.item)),updater:u,updaterText:f,updaterColor:g,handleUpdate:k}}},k=n(1241);const C=(0,k.A)(g,[["render",r],["__scopeId","data-v-56d38c60"]]);var V=C}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/706.0b74d7ba.js b/linker.tray.win/web/js/706.0b74d7ba.js
deleted file mode 100644
index 03e87113..00000000
--- a/linker.tray.win/web/js/706.0b74d7ba.js
+++ /dev/null
@@ -1 +0,0 @@
-(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[706],{743:function(e,t,l){"use strict";l.d(t,{$U:function(){return s},Ap:function(){return r},Co:function(){return a},DY:function(){return u},Qs:function(){return i},eX:function(){return d},pY:function(){return o}});var n=l(4);const r=()=>(0,n.zG)("sforwardclient/GetSecretKey"),a=e=>(0,n.zG)("sforwardclient/SetSecretKey",e),o=(e="0")=>(0,n.zG)("sforwardclient/get",e),s=e=>(0,n.zG)("sforwardclient/getremote",e),u=e=>(0,n.zG)("sforwardclient/remove",e),i=e=>(0,n.zG)("sforwardclient/add",e),d=()=>(0,n.zG)("sforwardclient/TestLocal")},83:function(e,t,l){"use strict";l.d(t,{$M:function(){return i},KW:function(){return u},S3:function(){return c},Vn:function(){return d},b0:function(){return a},gM:function(){return s},ix:function(){return r},r7:function(){return o},zp:function(){return p}});var n=l(4);const r=()=>(0,n.zG)("tunnel/gettypes"),a=e=>(0,n.zG)("tunnel/SetServers",e),o=(e="0")=>(0,n.zG)("tunnel/get",e),s=()=>(0,n.zG)("tunnel/refresh"),u=e=>(0,n.zG)("tunnel/SetRouteLevel",e),i=e=>(0,n.zG)("tunnel/SetTransports",e),d=()=>(0,n.zG)("tunnel/GeInterfaces"),c=e=>(0,n.zG)("tunnel/SetInterface",e),p=()=>(0,n.zG)("tunnel/Records")},920:function(e,t,l){"use strict";l.d(t,{BJ:function(){return d},NS:function(){return o},Vk:function(){return i},aP:function(){return p},ir:function(){return u},lJ:function(){return a},mK:function(){return r},y2:function(){return c},yN:function(){return s}});var n=l(4);const r=(e="0")=>(0,n.zG)("updaterclient/get",e),a=e=>(0,n.zG)("updaterclient/confirm",e),o=e=>(0,n.zG)("updaterclient/exit",e),s=()=>(0,n.zG)("updaterclient/GetSecretKey"),u=e=>(0,n.zG)("updaterclient/SetSecretKey",e),i=()=>(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")},6734:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return b}});var n=l(6768);const r={class:"card-header flex"},a=(0,n.Lk)("span",null,"同步密钥",-1),o=(0,n.Lk)("span",{class:"flex-1"},null,-1),s=(0,n.Lk)("div",null," 同步,信标服务器,中继服务器,服务器代理穿透,的密钥到所有客户端 ",-1),u={class:"card-header flex"},i=(0,n.Lk)("span",null,"同步服务器配置",-1),d=(0,n.Lk)("span",{class:"flex-1"},null,-1),c=(0,n.Lk)("div",null," 同步,信标服务器,端口服务器,中继服务器,列表到所有客户端 ",-1);function p(e,t,l,p,h,f){const v=(0,n.g2)("el-button"),m=(0,n.g2)("el-card");return(0,n.uX)(),(0,n.CE)("div",null,[(0,n.bF)(m,{shadow:"never"},{header:(0,n.k6)((()=>[(0,n.Lk)("div",r,[a,o,(0,n.bF)(v,{type:"success",onClick:p.handleSyncSecretKey},{default:(0,n.k6)((()=>[(0,n.eW)("确定同步")])),_:1},8,["onClick"])])])),default:(0,n.k6)((()=>[s])),_:1}),(0,n.bF)(m,{shadow:"never",style:{"margin-top":"2rem"}},{header:(0,n.k6)((()=>[(0,n.Lk)("div",u,[i,d,(0,n.bF)(v,{type:"success",onClick:p.handleSyncServer},{default:(0,n.k6)((()=>[(0,n.eW)("确定同步")])),_:1},8,["onClick"])])])),default:(0,n.k6)((()=>[c])),_:1})])}var h=l(3830),f=l(1219),v=l(144),m=l(8835),y={label:"同步配置",name:"async",order:7,setup(e){const t=(0,h.B)(),l=(0,v.Kh)({}),n=()=>{const e={SignSecretKey:t.value.config.Client.ServerInfo.SecretKey,RelaySecretKey:t.value.config.Client.Relay.Servers[0].SecretKey,SForwardSecretKey:t.value.config.Client.SForward.SecretKey};(0,m.g2)(e).then((()=>{f.nk.success("已操作")})).catch((()=>{f.nk.error("操作失败")}))},r=()=>{const e={SignServers:t.value.config.Client.Servers,RelayServers:t.value.config.Client.Relay.Servers,TunnelServers:t.value.config.Client.Tunnel.Servers};(0,m.gH)(e).then((()=>{f.nk.success("已操作")})).catch((()=>{f.nk.error("操作失败")}))};return{state:l,handleSyncSecretKey:n,handleSyncServer:r}}},g=l(1241);const w=(0,g.A)(y,[["render",p]]);var b=w},6488:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return c}});var n=l(6768);const r={key:0,class:"servers-wrap"};function a(e,t,l,a,o,s){const u=(0,n.g2)("el-tab-pane"),i=(0,n.g2)("el-tabs");return a.hasConfig?((0,n.uX)(),(0,n.CE)("div",r,[(0,n.bF)(i,{type:"border-card",style:{width:"100%"},modelValue:a.state.tab,"onUpdate:modelValue":t[0]||(t[0]=e=>a.state.tab=e)},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(a.settingComponents,((e,t)=>((0,n.uX)(),(0,n.Wv)(u,{key:t,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))])),_:1},8,["modelValue"])])):(0,n.Q3)("",!0)}var o=l(144),s=l(3830),u={components:{},setup(e){const t=["./Index.vue","./Version.vue","./TunnelServers.vue"],r=l(9317),a=r.keys().filter((e=>0==t.includes(e))).map((e=>r(e).default)).sort(((e,t)=>e.order-t.order)),u=(0,s.B)(),i=(0,n.EW)((()=>u.value.hasAccess("Config"))),d=(0,o.Kh)({tab:a[0].name});return{state:d,settingComponents:a,hasConfig:i}}},i=l(1241);const d=(0,i.A)(u,[["render",a],["__scopeId","data-v-74a22754"]]);var c=d},7362:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return m}});var n=l(6768),r=l(4232);function a(e,t,l,a,o,s){const u=(0,n.g2)("el-input"),i=(0,n.g2)("el-table-column"),d=(0,n.g2)("el-option"),c=(0,n.g2)("el-select"),p=(0,n.g2)("el-switch"),h=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.Wv)(h,{data:a.state.list,border:"",size:"small",width:"100%",height:`${a.state.height}px`,onCellDblclick:a.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(i,{prop:"Name",label:"名称",width:"100"},{default:(0,n.k6)((e=>[e.row.NameEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":t=>e.row.Name=t,onBlur:t=>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,r.v_)(e.row.Name),1)],64))])),_:1}),(0,n.bF)(i,{prop:"RelayType",label:"类别",width:"100"},{default:(0,n.k6)((e=>[(0,n.bF)(c,{disabled:"",modelValue:e.row.RelayType,"onUpdate:modelValue":t=>e.row.RelayType=t,placeholder:"Select",size:"small",onChange:t=>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)(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)(i,{prop:"Host",label:"地址"},{default:(0,n.k6)((e=>[e.row.HostEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Host,"onUpdate:modelValue":t=>e.row.Host=t,onBlur:t=>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,r.C4)({red:!e.row.Available,green:e.row.Available})},(0,r.v_)(e.row.Host),3),(0,n.Lk)("span",{class:(0,r.C4)({red:-1==e.row.Delay,green:e.row.Delay<500&&e.row.Delay>=0,yellow:e.row.Delay>=500})}," - "+(0,r.v_)(e.row.Delay)+"ms",3)],64))])),_:1}),(0,n.bF)(i,{prop:"SecretKey",label:"秘钥"},{default:(0,n.k6)((e=>[e.row.SecretKeyEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,type:"password","show-password":"",size:"small",modelValue:e.row.SecretKey,"onUpdate:modelValue":t=>e.row.SecretKey=t,onBlur:t=>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)(i,{property:"SSL",label:"SSL",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(p,{modelValue:e.row.SSL,"onUpdate:modelValue":t=>e.row.SSL=t,onChange:t=>a.handleEditBlur(e.row,"SSL"),"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(i,{property:"Disabled",label:"禁用",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(p,{modelValue:e.row.Disabled,"onUpdate:modelValue":t=>e.row.Disabled=t,onChange:t=>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})])),_:1},8,["data","height","onCellDblclick"])}var o=l(4);const s=()=>(0,o.zG)("relay/gettypes"),u=e=>(0,o.zG)("relay/SetServers",e);var i=l(3830),d=l(1219),c=l(144),p=l(7477),h={label:"中继服务器",name:"relayServers",order:4,components:{Delete:p.epd,Plus:p.FWt,Top:p.EjV,Bottom:p.i5o},setup(e){const t=(0,i.B)(),l=(0,c.Kh)({list:t.value.config.Client.Relay.Servers.sort(((e,t)=>e.Disabled-t.Disabled)),types:[],height:(0,n.EW)((()=>t.value.height-90))});(0,n.wB)((()=>t.value.config.Client.Relay.Servers),(()=>{0==l.list.filter((e=>e["__editing"])).length&&(l.list=t.value.config.Client.Relay.Servers.sort(((e,t)=>e.Disabled-t.Disabled)))}));const r=()=>{s().then((e=>{l.types=e}))},a=(e,t)=>{o(e,t.property)},o=(e,t)=>{l.list.forEach((e=>{e["NameEditing"]=!1,e["RelayTypeEditing"]=!1,e["HostEditing"]=!1,e["SecretKeyEditing"]=!1})),e["__editing"]=!0,e[`${t}Editing`]=!0},p=(e,t)=>{e[`${t}Editing`]=!1,e["__editing"]=!1,m()},h=e=>{l.list.splice(e,1),m()},f=e=>{l.list.filter((e=>""==e.Host||""==e.Name)).length>0||(l.list.splice(e+1,0,{Name:"",Host:"",RelayType:0,SecretKey:"snltty",Disabled:!1}),m())},v=(e,t)=>{const n=l.list[e],r=l.list[e+t];n&&r&&(l.list[e+t]=n,l.list[e]=r),m(l.list)},m=()=>{l.list=l.list.slice().sort(((e,t)=>e.Disabled-t.Disabled)),u(l.list).then((()=>{d.nk.success("已操作")})).catch((()=>{d.nk.error("操作失败")}))};return(0,n.sV)((()=>{r()})),{state:l,handleCellClick:a,handleEditBlur:p,handleDel:h,handleAdd:f,handleSort:v}}},f=l(1241);const v=(0,f.A)(h,[["render",a],["__scopeId","data-v-2ea70464"]]);var m=v},3751:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return f}});var n=l(6768);const r={style:{width:"30rem",padding:"5rem 0",margin:"0 auto"}},a=(0,n.Lk)("p",{class:"t-c"}," 服务器代理穿透密钥 ",-1);function o(e,t,l,o,s,u){const i=(0,n.g2)("el-input");return(0,n.uX)(),(0,n.CE)("div",r,[a,(0,n.Lk)("p",null,[(0,n.bF)(i,{type:"password","show-password":"",modelValue:o.state.SForwardSecretKey,"onUpdate:modelValue":t[0]||(t[0]=e=>o.state.SForwardSecretKey=e),maxlength:"36",onBlur:o.handleChange},null,8,["modelValue","onBlur"])])])}var s=l(743),u=l(3830),i=l(1219),d=l(144),c={label:"服务器穿透",name:"sforward",order:5,setup(e){(0,u.B)();const t=(0,d.Kh)({SForwardSecretKey:""}),l=()=>{(0,s.Ap)().then((e=>{t.SForwardSecretKey=e}))},r=()=>{t.SForwardSecretKey&&(0,s.Co)(t.SForwardSecretKey).then((()=>{i.nk.success("已操作")})).catch((()=>{i.nk.error("操作失败")}))},a=()=>{r()};return(0,n.sV)((()=>{l()})),{state:t,handleChange:a}}},p=l(1241);const h=(0,p.A)(c,[["render",o]]);var f=h},3477:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return v}});var n=l(6768),r=l(4232);function a(e,t,l,a,o,s){const u=(0,n.g2)("el-input"),i=(0,n.g2)("el-table-column"),d=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.Wv)(d,{data:a.state.list,border:"",size:"small",width:"100%",height:`${a.state.height}px`,onCellDblclick:a.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(i,{prop:"Name",label:"名称",width:"100"},{default:(0,n.k6)((e=>[e.row.NameEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":t=>e.row.Name=t,onBlur:t=>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,r.v_)(e.row.Name),1)],64))])),_:1}),(0,n.bF)(i,{prop:"Host",label:"地址"},{default:(0,n.k6)((e=>[e.row.HostEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Host,"onUpdate:modelValue":t=>e.row.Host=t,onBlur:t=>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,r.v_)(e.row.Host),1)],64))])),_:1}),(0,n.bF)(i,{prop:"SecretKey",label:"秘钥"},{default:(0,n.k6)((e=>[e.row.SecretKeyEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,type:"password","show-password":"",size:"small",modelValue:e.row.SecretKey,"onUpdate:modelValue":t=>e.row.SecretKey=t,onBlur:t=>a.handleEditBlur(e.row,"SecretKey")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[],64))])),_:1})])),_:1},8,["data","height","onCellDblclick"])}var o=l(9299),s=l(3830),u=l(1219),i=l(144),d=l(7477),c=l(83),p={label:"信标服务器",name:"signInServers",order:0,components:{Delete:d.epd,Plus:d.FWt,Select:d.l6P},setup(e){const t=(0,s.B)(),l=(0,i.Kh)({list:t.value.config.Client.Servers||[],server:(0,n.EW)((()=>t.value.config.Client.ServerInfo.Host)),height:(0,n.EW)((()=>t.value.height-90))});(0,n.wB)((()=>t.value.config.Client.Servers),(()=>{0==l.list.filter((e=>e["__editing"])).length&&(l.list=t.value.config.Client.Servers)}));const r=(e,t)=>{a(e,t.property)},a=(e,t)=>{l.list.forEach((e=>{e["NameEditing"]=!1,e["HostEditing"]=!1,e["SecretKeyEditing"]=!1})),e[`${t}Editing`]=!0,e["__editing"]=!0},d=(e,t)=>{e[`${t}Editing`]=!1,e["__editing"]=!1,v()},p=e=>{l.list.splice(e,1),v()},h=e=>{l.list.filter((e=>""==e.Host||""==e.Name)).length>0||(l.list.splice(e+1,0,{Name:"",Host:""}),v())},f=e=>{const t=l.list[e];l.list[e]=l.list[0],l.list[0]=t,v()},v=()=>{const e=t.value.config.Client.Tunnel.Servers.slice(),n=l.list[0];for(let t=0;t{u.nk.success("已操作")})).catch((()=>{u.nk.error("操作失败")})),(0,c.b0)(e).then((()=>{u.nk.success("已操作")})).catch((()=>{u.nk.error("操作失败")}))};return{state:l,handleCellClick:r,handleEditBlur:d,handleDel:p,handleAdd:h,handleUse:f}}},h=l(1241);const f=(0,h.A)(p,[["render",a]]);var v=f},6704:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return f}});var n=l(6768),r=l(4232);function a(e,t,l,a,o,s){const u=(0,n.g2)("el-input"),i=(0,n.g2)("el-table-column"),d=(0,n.g2)("el-option"),c=(0,n.g2)("el-select"),p=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.Wv)(p,{data:a.state.list,border:"",size:"small",width:"100%",height:`${a.state.height}px`,onCellDblclick:a.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(i,{prop:"Name",label:"名称",width:"100"},{default:(0,n.k6)((e=>[e.row.NameEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":t=>e.row.Name=t,onBlur:t=>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,r.v_)(e.row.Name),1)],64))])),_:1}),(0,n.bF)(i,{prop:"ProtocolType",label:"协议",width:"100"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(c,{disabled:"",modelValue:e.row.ProtocolType,"onUpdate:modelValue":t=>e.row.ProtocolType=t,placeholder:"Select",size:"small",onChange:t=>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,t)=>((0,n.uX)(),(0,n.Wv)(d,{key:+t,label:e,value:+t},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])])])),_:1}),(0,n.bF)(i,{prop:"Type",label:"类别",width:"100"},{default:(0,n.k6)((e=>[(0,n.bF)(c,{disabled:"",modelValue:e.row.Type,"onUpdate:modelValue":t=>e.row.Type=t,placeholder:"Select",size:"small",onChange:t=>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)(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)(i,{prop:"Host",label:"地址"},{default:(0,n.k6)((e=>[e.row.HostEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Host,"onUpdate:modelValue":t=>e.row.Host=t,onBlur:t=>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,r.v_)(e.row.Host),1)],64))])),_:1})])),_:1},8,["data","height","onCellDblclick"])}var o=l(83),s=l(3830),u=l(1219),i=l(144),d=l(7477),c={label:"端口服务器",name:"tunnelServers",order:1,components:{Delete:d.epd,Plus:d.FWt,Top:d.EjV,Bottom:d.i5o},setup(e){const t=(0,s.B)(),l=(0,i.Kh)({list:t.value.config.Client.Tunnel.Servers.sort(((e,t)=>e.Disabled-t.Disabled)),types:[],height:(0,n.EW)((()=>t.value.height-90)),interfaces:[]});(0,n.wB)((()=>t.value.config.Client.Tunnel.Servers),(()=>{0==l.list.filter((e=>e["__editing"])).length&&(l.list=t.value.config.Client.Tunnel.Servers.sort(((e,t)=>e.Disabled-t.Disabled))),l.interface=t.value.config.Client.Tunnel.Interface}));const r=()=>{(0,o.Vn)().then((e=>{e.splice(0,0,"0.0.0.0"),l.interfaces=e})).catch((()=>{}))},a=()=>{(0,o.S3)(l.interface).then((()=>{})).catch((()=>{}))},d=()=>{(0,o.ix)().then((e=>{l.types=e,c(l.list)}))},c=e=>{e.forEach((e=>{e.Protocols=l.types.filter((t=>t.Value==e.Type))[0].Protocols,e.Protocols[e.ProtocolType]||(e.ProtocolType=+Object.keys(e.Protocols)[0])}))},p=(e,t)=>{h(e,t.property)},h=(e,t)=>{c([e]),l.list.forEach((e=>{e["NameEditing"]=!1,e["TypeEditing"]=!1,e["HostEditing"]=!1,e["ProtocolTypeEditing"]=!1})),e[`${t}Editing`]=!0,e["__editing"]=!0},f=(e,t)=>{c([e]),e[`${t}Editing`]=!1,e["__editing"]=!1,g()},v=e=>{l.list.splice(e,1),g()},m=e=>{if(l.list.filter((e=>""==e.Host||""==e.Name)).length>0)return;const t={Name:"",Host:"",Type:0,Disabled:!1,ProtocolType:2};c([t]),l.list.splice(e+1,0,t),g()},y=(e,t)=>{const n=l.list[e],r=l.list[e+t];n&&r&&(l.list[e+t]=n,l.list[e]=r),g(l.list)},g=()=>{l.list=l.list.slice().sort(((e,t)=>e.Disabled-t.Disabled)),(0,o.b0)(l.list).then((()=>{u.nk.success("已操作")})).catch((()=>{u.nk.error("操作失败")}))};return(0,n.sV)((()=>{d(),r()})),{state:l,handleCellClick:p,handleEditBlur:f,handleDel:v,handleAdd:m,handleSort:y,handleInterfaceChange:a}}},p=l(1241);const h=(0,p.A)(c,[["render",a]]);var f=h},7858:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return f}});var n=l(6768);const r={style:{width:"30rem",padding:"5rem 0",margin:"0 auto"}},a=(0,n.Lk)("p",{class:"t-c"}," 服务器更新密钥 ",-1);function o(e,t,l,o,s,u){const i=(0,n.g2)("el-input");return(0,n.uX)(),(0,n.CE)("div",r,[a,(0,n.Lk)("p",null,[(0,n.bF)(i,{type:"password","show-password":"",modelValue:o.state.secretKey,"onUpdate:modelValue":t[0]||(t[0]=e=>o.state.secretKey=e),maxlength:"36",onBlur:o.handleChange},null,8,["modelValue","onBlur"])])])}var s=l(920),u=l(3830),i=l(1219),d=l(144),c={label:"服务器更新",name:"updater",order:6,setup(e){(0,u.B)();const t=(0,d.Kh)({secretKey:""}),l=()=>{(0,s.yN)().then((e=>{t.secretKey=e}))},r=()=>{t.secretKey&&(0,s.ir)(t.secretKey).then((()=>{i.nk.success("已操作")})).catch((()=>{i.nk.error("操作失败")}))},a=()=>{r()};return(0,n.sV)((()=>{l()})),{state:t,handleChange:a}}},p=l(1241);const h=(0,p.A)(c,[["render",o]]);var f=h},9317:function(e,t,l){var n={"./Async.vue":6734,"./Index.vue":6488,"./RelayServers.vue":7362,"./SForward.vue":3751,"./SignInServers.vue":3477,"./TunnelServers.vue":6704,"./Updater.vue":7858};function r(e){var t=a(e);return l(t)}function a(e){if(!l.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}r.keys=function(){return Object.keys(n)},r.resolve=a,e.exports=r,r.id=9317}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/706.e2de02b0.js b/linker.tray.win/web/js/706.e2de02b0.js
new file mode 100644
index 00000000..d4e5f637
--- /dev/null
+++ b/linker.tray.win/web/js/706.e2de02b0.js
@@ -0,0 +1 @@
+(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[706],{743:function(e,t,l){"use strict";l.d(t,{$U:function(){return s},Ap:function(){return r},Co:function(){return a},DY:function(){return u},Qs:function(){return i},eX:function(){return d},pY:function(){return o}});var n=l(4);const r=()=>(0,n.zG)("sforwardclient/GetSecretKey"),a=e=>(0,n.zG)("sforwardclient/SetSecretKey",e),o=(e="0")=>(0,n.zG)("sforwardclient/get",e),s=e=>(0,n.zG)("sforwardclient/getremote",e),u=e=>(0,n.zG)("sforwardclient/remove",e),i=e=>(0,n.zG)("sforwardclient/add",e),d=()=>(0,n.zG)("sforwardclient/TestLocal")},83:function(e,t,l){"use strict";l.d(t,{$M:function(){return i},KW:function(){return u},S3:function(){return c},Vn:function(){return d},b0:function(){return a},gM:function(){return s},ix:function(){return r},r7:function(){return o}});var n=l(4);const r=()=>(0,n.zG)("tunnel/gettypes"),a=e=>(0,n.zG)("tunnel/SetServers",e),o=(e="0")=>(0,n.zG)("tunnel/get",e),s=()=>(0,n.zG)("tunnel/refresh"),u=e=>(0,n.zG)("tunnel/SetRouteLevel",e),i=e=>(0,n.zG)("tunnel/SetTransports",e),d=()=>(0,n.zG)("tunnel/GeInterfaces"),c=e=>(0,n.zG)("tunnel/SetInterface",e)},920:function(e,t,l){"use strict";l.d(t,{BJ:function(){return d},NS:function(){return o},UB:function(){return h},Vk:function(){return i},aP:function(){return p},ir:function(){return u},lJ:function(){return a},mK:function(){return r},y2:function(){return c},yN:function(){return s}});var n=l(4);const r=(e="0")=>(0,n.zG)("updaterclient/get",e),a=e=>(0,n.zG)("updaterclient/confirm",e),o=e=>(0,n.zG)("updaterclient/exit",e),s=()=>(0,n.zG)("updaterclient/GetSecretKey"),u=e=>(0,n.zG)("updaterclient/SetSecretKey",e),i=()=>(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"),h=()=>(0,n.zG)("updaterclient/Subscribe")},6734:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return b}});var n=l(6768);const r={class:"card-header flex"},a=(0,n.Lk)("span",null,"同步密钥",-1),o=(0,n.Lk)("span",{class:"flex-1"},null,-1),s=(0,n.Lk)("div",null," 同步,信标服务器,中继服务器,服务器代理穿透,的密钥到所有客户端 ",-1),u={class:"card-header flex"},i=(0,n.Lk)("span",null,"同步服务器配置",-1),d=(0,n.Lk)("span",{class:"flex-1"},null,-1),c=(0,n.Lk)("div",null," 同步,信标服务器,端口服务器,中继服务器,列表到所有客户端 ",-1);function p(e,t,l,p,h,f){const v=(0,n.g2)("el-button"),m=(0,n.g2)("el-card");return(0,n.uX)(),(0,n.CE)("div",null,[(0,n.bF)(m,{shadow:"never"},{header:(0,n.k6)((()=>[(0,n.Lk)("div",r,[a,o,(0,n.bF)(v,{type:"success",onClick:p.handleSyncSecretKey},{default:(0,n.k6)((()=>[(0,n.eW)("确定同步")])),_:1},8,["onClick"])])])),default:(0,n.k6)((()=>[s])),_:1}),(0,n.bF)(m,{shadow:"never",style:{"margin-top":"2rem"}},{header:(0,n.k6)((()=>[(0,n.Lk)("div",u,[i,d,(0,n.bF)(v,{type:"success",onClick:p.handleSyncServer},{default:(0,n.k6)((()=>[(0,n.eW)("确定同步")])),_:1},8,["onClick"])])])),default:(0,n.k6)((()=>[c])),_:1})])}var h=l(3830),f=l(1219),v=l(144),m=l(8835),y={label:"同步配置",name:"async",order:7,setup(e){const t=(0,h.B)(),l=(0,v.Kh)({}),n=()=>{const e={SignSecretKey:t.value.config.Client.ServerInfo.SecretKey,RelaySecretKey:t.value.config.Client.Relay.Servers[0].SecretKey,SForwardSecretKey:t.value.config.Client.SForward.SecretKey};(0,m.g2)(e).then((()=>{f.nk.success("已操作")})).catch((()=>{f.nk.error("操作失败")}))},r=()=>{const e={SignServers:t.value.config.Client.Servers,RelayServers:t.value.config.Client.Relay.Servers,TunnelServers:t.value.config.Client.Tunnel.Servers};(0,m.gH)(e).then((()=>{f.nk.success("已操作")})).catch((()=>{f.nk.error("操作失败")}))};return{state:l,handleSyncSecretKey:n,handleSyncServer:r}}},g=l(1241);const w=(0,g.A)(y,[["render",p]]);var b=w},6488:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return c}});var n=l(6768);const r={key:0,class:"servers-wrap"};function a(e,t,l,a,o,s){const u=(0,n.g2)("el-tab-pane"),i=(0,n.g2)("el-tabs");return a.hasConfig?((0,n.uX)(),(0,n.CE)("div",r,[(0,n.bF)(i,{type:"border-card",style:{width:"100%"},modelValue:a.state.tab,"onUpdate:modelValue":t[0]||(t[0]=e=>a.state.tab=e)},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(a.settingComponents,((e,t)=>((0,n.uX)(),(0,n.Wv)(u,{key:t,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))])),_:1},8,["modelValue"])])):(0,n.Q3)("",!0)}var o=l(144),s=l(3830),u={components:{},setup(e){const t=["./Index.vue","./Version.vue","./TunnelServers.vue"],r=l(9317),a=r.keys().filter((e=>0==t.includes(e))).map((e=>r(e).default)).sort(((e,t)=>e.order-t.order)),u=(0,s.B)(),i=(0,n.EW)((()=>u.value.hasAccess("Config"))),d=(0,o.Kh)({tab:a[0].name});return{state:d,settingComponents:a,hasConfig:i}}},i=l(1241);const d=(0,i.A)(u,[["render",a],["__scopeId","data-v-74a22754"]]);var c=d},7362:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return m}});var n=l(6768),r=l(4232);function a(e,t,l,a,o,s){const u=(0,n.g2)("el-input"),i=(0,n.g2)("el-table-column"),d=(0,n.g2)("el-option"),c=(0,n.g2)("el-select"),p=(0,n.g2)("el-switch"),h=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.Wv)(h,{data:a.state.list,border:"",size:"small",width:"100%",height:`${a.state.height}px`,onCellDblclick:a.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(i,{prop:"Name",label:"名称",width:"100"},{default:(0,n.k6)((e=>[e.row.NameEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":t=>e.row.Name=t,onBlur:t=>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,r.v_)(e.row.Name),1)],64))])),_:1}),(0,n.bF)(i,{prop:"RelayType",label:"类别",width:"100"},{default:(0,n.k6)((e=>[(0,n.bF)(c,{disabled:"",modelValue:e.row.RelayType,"onUpdate:modelValue":t=>e.row.RelayType=t,placeholder:"Select",size:"small",onChange:t=>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)(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)(i,{prop:"Host",label:"地址"},{default:(0,n.k6)((e=>[e.row.HostEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Host,"onUpdate:modelValue":t=>e.row.Host=t,onBlur:t=>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,r.C4)({red:!e.row.Available,green:e.row.Available})},(0,r.v_)(e.row.Host),3),(0,n.Lk)("span",{class:(0,r.C4)({red:-1==e.row.Delay,green:e.row.Delay<500&&e.row.Delay>=0,yellow:e.row.Delay>=500})}," - "+(0,r.v_)(e.row.Delay)+"ms",3)],64))])),_:1}),(0,n.bF)(i,{prop:"SecretKey",label:"秘钥"},{default:(0,n.k6)((e=>[e.row.SecretKeyEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,type:"password","show-password":"",size:"small",modelValue:e.row.SecretKey,"onUpdate:modelValue":t=>e.row.SecretKey=t,onBlur:t=>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)(i,{property:"SSL",label:"SSL",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(p,{modelValue:e.row.SSL,"onUpdate:modelValue":t=>e.row.SSL=t,onChange:t=>a.handleEditBlur(e.row,"SSL"),"inline-prompt":"","active-text":"是","inactive-text":"否"},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,n.bF)(i,{property:"Disabled",label:"禁用",width:"60"},{default:(0,n.k6)((e=>[(0,n.bF)(p,{modelValue:e.row.Disabled,"onUpdate:modelValue":t=>e.row.Disabled=t,onChange:t=>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})])),_:1},8,["data","height","onCellDblclick"])}var o=l(4);const s=()=>(0,o.zG)("relay/gettypes"),u=e=>(0,o.zG)("relay/SetServers",e);var i=l(3830),d=l(1219),c=l(144),p=l(7477),h={label:"中继服务器",name:"relayServers",order:4,components:{Delete:p.epd,Plus:p.FWt,Top:p.EjV,Bottom:p.i5o},setup(e){const t=(0,i.B)(),l=(0,c.Kh)({list:t.value.config.Client.Relay.Servers.sort(((e,t)=>e.Disabled-t.Disabled)),types:[],height:(0,n.EW)((()=>t.value.height-90))});(0,n.wB)((()=>t.value.config.Client.Relay.Servers),(()=>{0==l.list.filter((e=>e["__editing"])).length&&(l.list=t.value.config.Client.Relay.Servers.sort(((e,t)=>e.Disabled-t.Disabled)))}));const r=()=>{s().then((e=>{l.types=e}))},a=(e,t)=>{o(e,t.property)},o=(e,t)=>{l.list.forEach((e=>{e["NameEditing"]=!1,e["RelayTypeEditing"]=!1,e["HostEditing"]=!1,e["SecretKeyEditing"]=!1})),e["__editing"]=!0,e[`${t}Editing`]=!0},p=(e,t)=>{e[`${t}Editing`]=!1,e["__editing"]=!1,m()},h=e=>{l.list.splice(e,1),m()},f=e=>{l.list.filter((e=>""==e.Host||""==e.Name)).length>0||(l.list.splice(e+1,0,{Name:"",Host:"",RelayType:0,SecretKey:"snltty",Disabled:!1}),m())},v=(e,t)=>{const n=l.list[e],r=l.list[e+t];n&&r&&(l.list[e+t]=n,l.list[e]=r),m(l.list)},m=()=>{l.list=l.list.slice().sort(((e,t)=>e.Disabled-t.Disabled)),u(l.list).then((()=>{d.nk.success("已操作")})).catch((()=>{d.nk.error("操作失败")}))};return(0,n.sV)((()=>{r()})),{state:l,handleCellClick:a,handleEditBlur:p,handleDel:h,handleAdd:f,handleSort:v}}},f=l(1241);const v=(0,f.A)(h,[["render",a],["__scopeId","data-v-2ea70464"]]);var m=v},3751:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return f}});var n=l(6768);const r={style:{width:"30rem",padding:"5rem 0",margin:"0 auto"}},a=(0,n.Lk)("p",{class:"t-c"}," 服务器代理穿透密钥 ",-1);function o(e,t,l,o,s,u){const i=(0,n.g2)("el-input");return(0,n.uX)(),(0,n.CE)("div",r,[a,(0,n.Lk)("p",null,[(0,n.bF)(i,{type:"password","show-password":"",modelValue:o.state.SForwardSecretKey,"onUpdate:modelValue":t[0]||(t[0]=e=>o.state.SForwardSecretKey=e),maxlength:"36",onBlur:o.handleChange},null,8,["modelValue","onBlur"])])])}var s=l(743),u=l(3830),i=l(1219),d=l(144),c={label:"服务器穿透",name:"sforward",order:5,setup(e){(0,u.B)();const t=(0,d.Kh)({SForwardSecretKey:""}),l=()=>{(0,s.Ap)().then((e=>{t.SForwardSecretKey=e}))},r=()=>{t.SForwardSecretKey&&(0,s.Co)(t.SForwardSecretKey).then((()=>{i.nk.success("已操作")})).catch((()=>{i.nk.error("操作失败")}))},a=()=>{r()};return(0,n.sV)((()=>{l()})),{state:t,handleChange:a}}},p=l(1241);const h=(0,p.A)(c,[["render",o]]);var f=h},3477:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return v}});var n=l(6768),r=l(4232);function a(e,t,l,a,o,s){const u=(0,n.g2)("el-input"),i=(0,n.g2)("el-table-column"),d=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.Wv)(d,{data:a.state.list,border:"",size:"small",width:"100%",height:`${a.state.height}px`,onCellDblclick:a.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(i,{prop:"Name",label:"名称",width:"100"},{default:(0,n.k6)((e=>[e.row.NameEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":t=>e.row.Name=t,onBlur:t=>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,r.v_)(e.row.Name),1)],64))])),_:1}),(0,n.bF)(i,{prop:"Host",label:"地址"},{default:(0,n.k6)((e=>[e.row.HostEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Host,"onUpdate:modelValue":t=>e.row.Host=t,onBlur:t=>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,r.v_)(e.row.Host),1)],64))])),_:1}),(0,n.bF)(i,{prop:"SecretKey",label:"秘钥"},{default:(0,n.k6)((e=>[e.row.SecretKeyEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,type:"password","show-password":"",size:"small",modelValue:e.row.SecretKey,"onUpdate:modelValue":t=>e.row.SecretKey=t,onBlur:t=>a.handleEditBlur(e.row,"SecretKey")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,n.uX)(),(0,n.CE)(n.FK,{key:1},[],64))])),_:1})])),_:1},8,["data","height","onCellDblclick"])}var o=l(9299),s=l(3830),u=l(1219),i=l(144),d=l(7477),c=l(83),p={label:"信标服务器",name:"signInServers",order:0,components:{Delete:d.epd,Plus:d.FWt,Select:d.l6P},setup(e){const t=(0,s.B)(),l=(0,i.Kh)({list:t.value.config.Client.Servers||[],server:(0,n.EW)((()=>t.value.config.Client.ServerInfo.Host)),height:(0,n.EW)((()=>t.value.height-90))});(0,n.wB)((()=>t.value.config.Client.Servers),(()=>{0==l.list.filter((e=>e["__editing"])).length&&(l.list=t.value.config.Client.Servers)}));const r=(e,t)=>{a(e,t.property)},a=(e,t)=>{l.list.forEach((e=>{e["NameEditing"]=!1,e["HostEditing"]=!1,e["SecretKeyEditing"]=!1})),e[`${t}Editing`]=!0,e["__editing"]=!0},d=(e,t)=>{e[`${t}Editing`]=!1,e["__editing"]=!1,v()},p=e=>{l.list.splice(e,1),v()},h=e=>{l.list.filter((e=>""==e.Host||""==e.Name)).length>0||(l.list.splice(e+1,0,{Name:"",Host:""}),v())},f=e=>{const t=l.list[e];l.list[e]=l.list[0],l.list[0]=t,v()},v=()=>{const e=t.value.config.Client.Tunnel.Servers.slice(),n=l.list[0];for(let t=0;t{u.nk.success("已操作")})).catch((()=>{u.nk.error("操作失败")})),(0,c.b0)(e).then((()=>{u.nk.success("已操作")})).catch((()=>{u.nk.error("操作失败")}))};return{state:l,handleCellClick:r,handleEditBlur:d,handleDel:p,handleAdd:h,handleUse:f}}},h=l(1241);const f=(0,h.A)(p,[["render",a]]);var v=f},6704:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return f}});var n=l(6768),r=l(4232);function a(e,t,l,a,o,s){const u=(0,n.g2)("el-input"),i=(0,n.g2)("el-table-column"),d=(0,n.g2)("el-option"),c=(0,n.g2)("el-select"),p=(0,n.g2)("el-table");return(0,n.uX)(),(0,n.Wv)(p,{data:a.state.list,border:"",size:"small",width:"100%",height:`${a.state.height}px`,onCellDblclick:a.handleCellClick},{default:(0,n.k6)((()=>[(0,n.bF)(i,{prop:"Name",label:"名称",width:"100"},{default:(0,n.k6)((e=>[e.row.NameEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":t=>e.row.Name=t,onBlur:t=>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,r.v_)(e.row.Name),1)],64))])),_:1}),(0,n.bF)(i,{prop:"ProtocolType",label:"协议",width:"100"},{default:(0,n.k6)((e=>[(0,n.Lk)("div",null,[(0,n.bF)(c,{disabled:"",modelValue:e.row.ProtocolType,"onUpdate:modelValue":t=>e.row.ProtocolType=t,placeholder:"Select",size:"small",onChange:t=>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,t)=>((0,n.uX)(),(0,n.Wv)(d,{key:+t,label:e,value:+t},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])])])),_:1}),(0,n.bF)(i,{prop:"Type",label:"类别",width:"100"},{default:(0,n.k6)((e=>[(0,n.bF)(c,{disabled:"",modelValue:e.row.Type,"onUpdate:modelValue":t=>e.row.Type=t,placeholder:"Select",size:"small",onChange:t=>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)(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)(i,{prop:"Host",label:"地址"},{default:(0,n.k6)((e=>[e.row.HostEditing?((0,n.uX)(),(0,n.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Host,"onUpdate:modelValue":t=>e.row.Host=t,onBlur:t=>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,r.v_)(e.row.Host),1)],64))])),_:1})])),_:1},8,["data","height","onCellDblclick"])}var o=l(83),s=l(3830),u=l(1219),i=l(144),d=l(7477),c={label:"端口服务器",name:"tunnelServers",order:1,components:{Delete:d.epd,Plus:d.FWt,Top:d.EjV,Bottom:d.i5o},setup(e){const t=(0,s.B)(),l=(0,i.Kh)({list:t.value.config.Client.Tunnel.Servers.sort(((e,t)=>e.Disabled-t.Disabled)),types:[],height:(0,n.EW)((()=>t.value.height-90)),interfaces:[]});(0,n.wB)((()=>t.value.config.Client.Tunnel.Servers),(()=>{0==l.list.filter((e=>e["__editing"])).length&&(l.list=t.value.config.Client.Tunnel.Servers.sort(((e,t)=>e.Disabled-t.Disabled))),l.interface=t.value.config.Client.Tunnel.Interface}));const r=()=>{(0,o.Vn)().then((e=>{e.splice(0,0,"0.0.0.0"),l.interfaces=e})).catch((()=>{}))},a=()=>{(0,o.S3)(l.interface).then((()=>{})).catch((()=>{}))},d=()=>{(0,o.ix)().then((e=>{l.types=e,c(l.list)}))},c=e=>{e.forEach((e=>{e.Protocols=l.types.filter((t=>t.Value==e.Type))[0].Protocols,e.Protocols[e.ProtocolType]||(e.ProtocolType=+Object.keys(e.Protocols)[0])}))},p=(e,t)=>{h(e,t.property)},h=(e,t)=>{c([e]),l.list.forEach((e=>{e["NameEditing"]=!1,e["TypeEditing"]=!1,e["HostEditing"]=!1,e["ProtocolTypeEditing"]=!1})),e[`${t}Editing`]=!0,e["__editing"]=!0},f=(e,t)=>{c([e]),e[`${t}Editing`]=!1,e["__editing"]=!1,g()},v=e=>{l.list.splice(e,1),g()},m=e=>{if(l.list.filter((e=>""==e.Host||""==e.Name)).length>0)return;const t={Name:"",Host:"",Type:0,Disabled:!1,ProtocolType:2};c([t]),l.list.splice(e+1,0,t),g()},y=(e,t)=>{const n=l.list[e],r=l.list[e+t];n&&r&&(l.list[e+t]=n,l.list[e]=r),g(l.list)},g=()=>{l.list=l.list.slice().sort(((e,t)=>e.Disabled-t.Disabled)),(0,o.b0)(l.list).then((()=>{u.nk.success("已操作")})).catch((()=>{u.nk.error("操作失败")}))};return(0,n.sV)((()=>{d(),r()})),{state:l,handleCellClick:p,handleEditBlur:f,handleDel:v,handleAdd:m,handleSort:y,handleInterfaceChange:a}}},p=l(1241);const h=(0,p.A)(c,[["render",a]]);var f=h},7858:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return f}});var n=l(6768);const r={style:{width:"30rem",padding:"5rem 0",margin:"0 auto"}},a=(0,n.Lk)("p",{class:"t-c"}," 服务器更新密钥 ",-1);function o(e,t,l,o,s,u){const i=(0,n.g2)("el-input");return(0,n.uX)(),(0,n.CE)("div",r,[a,(0,n.Lk)("p",null,[(0,n.bF)(i,{type:"password","show-password":"",modelValue:o.state.secretKey,"onUpdate:modelValue":t[0]||(t[0]=e=>o.state.secretKey=e),maxlength:"36",onBlur:o.handleChange},null,8,["modelValue","onBlur"])])])}var s=l(920),u=l(3830),i=l(1219),d=l(144),c={label:"服务器更新",name:"updater",order:6,setup(e){(0,u.B)();const t=(0,d.Kh)({secretKey:""}),l=()=>{(0,s.yN)().then((e=>{t.secretKey=e}))},r=()=>{t.secretKey&&(0,s.ir)(t.secretKey).then((()=>{i.nk.success("已操作")})).catch((()=>{i.nk.error("操作失败")}))},a=()=>{r()};return(0,n.sV)((()=>{l()})),{state:t,handleChange:a}}},p=l(1241);const h=(0,p.A)(c,[["render",o]]);var f=h},9317:function(e,t,l){var n={"./Async.vue":6734,"./Index.vue":6488,"./RelayServers.vue":7362,"./SForward.vue":3751,"./SignInServers.vue":3477,"./TunnelServers.vue":6704,"./Updater.vue":7858};function r(e){var t=a(e);return l(t)}function a(e){if(!l.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}r.keys=function(){return Object.keys(n)},r.resolve=a,e.exports=r,r.id=9317}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/723.1046dd09.js b/linker.tray.win/web/js/723.1046dd09.js
deleted file mode 100644
index cbdf444b..00000000
--- a/linker.tray.win/web/js/723.1046dd09.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[723],{5096:function(e,t,n){n.d(t,{A:function(){return p}});var a=n(6768);const o=e=>((0,a.Qi)("data-v-4892cd3c"),e=e(),(0,a.jt)(),e),l=o((()=>(0,a.Lk)("input",{type:"file",id:"file-input"},null,-1)));function s(e,t,n,o,s,r){const i=(0,a.g2)("PictureRounded"),d=(0,a.g2)("el-icon");return(0,a.uX)(),(0,a.CE)(a.FK,null,[(0,a.Lk)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>o.handleBg&&o.handleBg(...e))},[(0,a.bF)(d,null,{default:(0,a.k6)((()=>[(0,a.bF)(i)])),_:1})]),l],64)}var r=n(7477),i=n(2933),d={components:{PictureRounded:r.syp},props:["name"],setup(e){const t=`bg-${e.name}`,n=()=>{localStorage.getItem(t)?i.s.confirm("清除背景?","Warning",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{l()})).catch((()=>{})):document.getElementById("file-input").click()},o=e=>{const t=e.target.files[0];if(t)try{const e=new FileReader;e.onload=function(e){l(e.target.result)},e.readAsDataURL(t)}catch(n){}e.target.value=""},l=e=>{e?(document.body.className="sunny",localStorage.setItem(t,e),document.body.style=`background-image:url(${e})`):(document.body.className="",document.body.style="",localStorage.setItem(t,""))};return(0,a.sV)((()=>{document.getElementById("file-input").addEventListener("change",o),l(localStorage.getItem(t))})),{handleBg:n}}},c=n(1241);const u=(0,c.A)(d,[["render",s],["__scopeId","data-v-4892cd3c"]]);var p=u},904:function(e,t,n){n.d(t,{A:function(){return Be}});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-da8e5ef0"),e=e(),(0,a.jt)(),e),d={class:"status-wrap flex"},c={class:"copy"},u=i((()=>(0,a.Lk)("img",{src:l,alt:"memory"},null,-1))),p=i((()=>(0,a.Lk)("span",null,"赞助",-1))),g=[u,p],v={href:"https://github.com/snltty/linker",target:"_blank"},f=i((()=>(0,a.Lk)("div",{class:"flex-1"},null,-1))),m={class:"export"},h={class:"api"},k={class:"server"},y=i((()=>(0,a.Lk)("div",{class:"pay"},[(0,a.Lk)("img",{src:s,alt:""}),(0,a.Lk)("img",{src:r,alt:""})],-1)));function b(e,t,n,l,s,r){const i=(0,a.g2)("Export"),u=(0,a.g2)("Api"),p=(0,a.g2)("Server"),b=(0,a.g2)("el-dialog");return(0,a.uX)(),(0,a.CE)("div",d,[(0,a.Lk)("div",c,[(0,a.Lk)("a",{href:"javascript:;",class:"memory",title:"赞助一笔,让作者饱餐一顿",onClick:t[0]||(t[0]=e=>l.state.showPay=!0)},g),(0,a.Lk)("a",v,"©linker "+(0,o.v_)(l.self.Version),1)]),f,(0,a.Lk)("div",m,[(0,a.bF)(i,{config:l.config},null,8,["config"])]),(0,a.Lk)("div",h,[(0,a.bF)(u,{config:l.config},null,8,["config"])]),(0,a.Lk)("div",k,[(0,a.bF)(p,{config:l.config},null,8,["config"])]),(0,a.bF)(b,{modelValue:l.state.showPay,"onUpdate:modelValue":t[1]||(t[1]=e=>l.state.showPay=e),title:"赞助linker",width:"300",top:"1vh"},{default:(0,a.k6)((()=>[y])),_:1},8,["modelValue"])])}var w=n(144);const S={href:"javascript:;",title:"此设备的管理接口"};function C(e,t,n,l,s,r){const i=(0,a.g2)("Tools"),d=(0,a.g2)("el-icon"),c=(0,a.g2)("el-popconfirm");return l.config?((0,a.uX)(),(0,a.CE)("div",{key:0,class:(0,o.C4)(["status-api-wrap",{connected:l.connected}])},[(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",S,[(0,a.bF)(d,{size:"16"},{default:(0,a.k6)((()=>[(0,a.bF)(i)])),_:1}),(0,a.eW)(" 管理接口 ")])])),_:1},8,["onCancel","onConfirm"])],2)):(0,a.Q3)("",!0)}var B=n(3830),_=n(4),F=n(7477),V={components:{Tools:F.S0q},props:["config"],setup(e){const t=(0,B.B)(),n=(0,a.EW)((()=>t.value.api.connected)),o=()=>{localStorage.setItem("api-cache",""),window.location.reload()},l=()=>{(0,_.e3)(),(0,_.a1)(`ws://${window.location.hostname}:12345`,"snltty")};return{config:e.config,connected:n,handleShow:l,handleResetConnect:o}}},L=n(1241);const x=(0,L.A)(V,[["render",C],["__scopeId","data-v-4470fcde"]]);var R=x;const E={class:"status-server-wrap"};function T(e,t,n,o,l,s){const r=(0,a.g2)("ServerConfig"),i=(0,a.g2)("ServerVersion"),d=(0,a.g2)("ServerFlow");return(0,a.uX)(),(0,a.CE)("div",E,[(0,a.bF)(r,{config:o.config},null,8,["config"]),(0,a.bF)(i,{config:o.config},null,8,["config"]),(0,a.bF)(d,{config:o.config},null,8,["config"])])}const W=e=>((0,a.Qi)("data-v-0bd6e783"),e=e(),(0,a.jt)(),e),A=W((()=>(0,a.Lk)("span",null,"信标服务器",-1))),I={class:"dialog-footer t-c"};function $(e,t,n,l,s,r){const i=(0,a.g2)("Promotion"),d=(0,a.g2)("el-icon"),c=(0,a.g2)("el-input"),u=(0,a.g2)("el-form-item"),p=(0,a.g2)("el-form"),g=(0,a.g2)("el-button"),v=(0,a.g2)("el-dialog");return(0,a.uX)(),(0,a.CE)(a.FK,null,[(0,a.Lk)("a",{href:"javascript:;",class:(0,o.C4)({connected:l.state.connected}),title:"更改你的连接设置",onClick:t[0]||(t[0]=(...e)=>l.handleConfig&&l.handleConfig(...e))},[(0,a.bF)(d,{size:"16"},{default:(0,a.k6)((()=>[(0,a.bF)(i)])),_:1}),(0,a.eW)(),A],2),(0,a.bF)(v,{modelValue:l.state.show,"onUpdate:modelValue":t[4]||(t[4]=e=>l.state.show=e),title:"连接设置",width:"300","append-to-body":""},{footer:(0,a.k6)((()=>[(0,a.Lk)("div",I,[(0,a.bF)(g,{onClick:t[3]||(t[3]=e=>l.state.show=!1),loading:l.state.loading},{default:(0,a.k6)((()=>[(0,a.eW)("取消")])),_:1},8,["loading"]),(0,a.bF)(g,{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)(p,{model:l.state.form,rules:l.state.rules,"label-width":"6rem"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{label:"机器名",prop:"name"},{default:(0,a.k6)((()=>[(0,a.bF)(c,{modelValue:l.state.form.name,"onUpdate:modelValue":t[1]||(t[1]=e=>l.state.form.name=e),maxlength:"12","show-word-limit":""},null,8,["modelValue"])])),_:1}),(0,a.bF)(u,{label:"分组名",prop:"groupid"},{default:(0,a.k6)((()=>[(0,a.bF)(c,{modelValue:l.state.form.groupid,"onUpdate:modelValue":t[2]||(t[2]=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 X=n(9299),K=n(1219),j={components:{Promotion:F.Yk4},props:["config"],setup(e){const t=(0,B.B)(),n=(0,a.EW)((()=>t.value.hasAccess("Config"))),o=(0,w.Kh)({show:!1,loading:!1,connected:(0,a.EW)((()=>t.value.signin.Connected)),form:{name:t.value.config.Client.Name,groupid:t.value.config.Client.GroupId},rules:{}}),l=()=>{e.config&&n.value&&(o.form.name=t.value.config.Client.Name,o.form.groupid=t.value.config.Client.GroupId,o.show=!0)},s=()=>{o.loading=!0,(0,X.rd)(o.form).then((()=>{o.loading=!1,o.show=!1,K.nk.success("已操作")})).catch((e=>{o.loading=!1,K.nk.success("操作失败!")}))};return{config:e.config,state:o,handleConfig:l,handleSave:s}}};const U=(0,L.A)(j,[["render",$],["__scopeId","data-v-0bd6e783"]]);var z=U;function P(e,t,n,l,s,r){const i=(0,a.g2)("el-table-column"),d=(0,a.g2)("el-table"),c=(0,a.g2)("el-dialog");return(0,a.uX)(),(0,a.CE)(a.FK,null,[l.config?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"javascript:;",title:"linker服务端网速,点击查看详细信息",onClick:t[0]||(t[0]=(...e)=>l.handleShow&&l.handleShow(...e))},[(0,a.Lk)("p",null,"上传 "+(0,o.v_)(l.state.overallSendtSpeed),1),(0,a.Lk)("p",null,"下载 "+(0,o.v_)(l.state.overallReceiveSpeed),1)])):(0,a.Q3)("",!0),(0,a.bF)(c,{class:"options-center",title:l.state.time,"destroy-on-close":"",modelValue:l.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>l.state.show=e),center:"",width:"680",top:"1vh"},{default:(0,a.k6)((()=>[(0,a.Lk)("div",null,[(0,a.bF)(d,{data:l.state.list,border:"",size:"small",width:"100%",height:"60vh"},{default:(0,a.k6)((()=>[(0,a.bF)(i,{prop:"id",label:"信标id"}),(0,a.bF)(i,{prop:"sendtBytes",label:"总上传",sortable:""},{default:(0,a.k6)((e=>[(0,a.Lk)("span",null,(0,o.v_)(e.row.sendtBytesText),1)])),_:1}),(0,a.bF)(i,{prop:"sendtSpeed",label:"上传速度",sortable:""},{default:(0,a.k6)((e=>[(0,a.Lk)("span",null,(0,o.v_)(e.row.sendtSpeedText)+"/s",1)])),_:1}),(0,a.bF)(i,{prop:"receiveBytes",label:"总下载",sortable:""},{default:(0,a.k6)((e=>[(0,a.Lk)("span",null,(0,o.v_)(e.row.receiveBytesText),1)])),_:1}),(0,a.bF)(i,{prop:"receiveSpeed",label:"下载速度",sortable:""},{default:(0,a.k6)((e=>[(0,a.Lk)("span",null,(0,o.v_)(e.row.receiveSpeedText)+"/s",1)])),_:1})])),_:1},8,["data"])])])),_:1},8,["title","modelValue"])],64)}n(4114);const D=()=>(0,_.zG)("flowClient/GetFlows");n(83);var M={props:["config"],setup(e){const t=(0,w.Kh)({show:!1,timer:0,overallSendtSpeed:"0000.00KB/s",overallReceiveSpeed:"0000.00KB/s",time:"",list:[],old:null}),n=()=>{t.show=!0},o={External:"外网端口(总计)",Relay:"中继流量(总计)",Messenger:"信标流量(总计)",SForward:"内网穿透(总计)",0:"[信标]登入信标",1:"[信标]客户端列表",2:"[信标]客户端删除",4:"[信标]客户端改名(转发)",7:"[信标]获取服务器版本",8:"[信标]客户端搜索ids",9:"[信标]客户端id列表",10:"[信标]客户端排序",11:"[信标]客户端在线",12:"[信标]生成客户端id",13:"[信标]登入信标V_1_3_1",2001:"[信标]外网端口(转发)",2002:"[信标]外网端口(转发)",2003:"[信标]开始打洞(转发)",2004:"[信标]开始打洞(转发)",2005:"[信标]打洞失败(转发)",2006:"[信标]打洞失败(转发)",2007:"[信标]打洞成功(转发)",2008:"[信标]打洞成功(转发)",2009:"[信标]隧道配置(转发)",2010:"[信标]隧道配置(转发)",2012:"[信标]隧道同步(转发)",2101:"[信标]中继通知(转发)",2102:"[信标]中继通知(转发)",2103:"[信标]中继请求",2105:"[信标]中继连通测试",2201:"[信标]运行网卡(转发)",2203:"[信标]停止网卡(转发)",2205:"[信标]更新网卡(转发)",2206:"[信标]同步网卡(转发)",2207:"[信标]同步网卡(转发)",2301:"[信标]添加内网穿透",2302:"[信标]移除内网穿透",2305:"[信标]获取穿透列表(转发)",2401:"[信标]测试端口转发(转发)",2403:"[信标]获取端口转发(转发)",2503:"[信标]获取权限(转发)",2504:"[信标]获取权限(转发)",2506:"[信标]更新权限(转发)",2508:"[信标]同步密钥(转发)",2510:"[信标]同步服务器(转发)",2601:"[信标]更新信息(转发)",2602:"[信标]更新信息(转发)",2603:"[信标]确认更新(转发)",2605:"[信标]重启(转发)",2607:"[信标]服务器更新信息",2608:"[信标]确认服务器更新",2609:"[信标]服务器重启",2701:"[信标]获取服务器流量"},l=()=>{D().then((e=>{const n=t.old||e;let a=0,r=0,i=0,d=0;for(let t in n.Resolvers)a+=n.Resolvers[t].ReceiveBytes,r+=n.Resolvers[t].SendtBytes;for(let t in e.Resolvers)i+=e.Resolvers[t].ReceiveBytes,d+=e.Resolvers[t].SendtBytes;t.overallSendtSpeed=s(d-r),t.overallReceiveSpeed=s(i-a),t.time=`从 ${e.Start}启动 至今`;const c=[];for(let t in e.Resolvers){const a=e.Resolvers[t],l=n.Resolvers[t];c.push({id:o[`${t}`],sendtBytes:a.SendtBytes,sendtBytesText:s(a.SendtBytes),sendtSpeed:a.SendtBytes-l.SendtBytes,sendtSpeedText:s(a.SendtBytes-l.SendtBytes),receiveBytes:a.ReceiveBytes,receiveBytesText:s(a.ReceiveBytes),receiveSpeed:a.ReceiveBytes-l.ReceiveBytes,receiveSpeedText:s(a.ReceiveBytes-l.ReceiveBytes)})}for(let t in e.Messangers){const a=e.Messangers[t],l=n.Messangers[t];c.push({id:o[`${t}`]||`未知的${t}`,sendtBytes:a.SendtBytes,sendtBytesText:s(a.SendtBytes),sendtSpeed:a.SendtBytes-l.SendtBytes,sendtSpeedText:s(a.SendtBytes-l.SendtBytes),receiveBytes:a.ReceiveBytes,receiveBytesText:s(a.ReceiveBytes),receiveSpeed:a.ReceiveBytes-l.ReceiveBytes,receiveSpeedText:s(a.ReceiveBytes-l.ReceiveBytes)})}t.list=c.filter((e=>!!e.id)),t.old=e,t.timer=setTimeout(l,1e3)})).catch((e=>{t.timer=setTimeout(l,1e3)}))},s=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`};return(0,a.sV)((()=>{l()})),(0,a.hi)((()=>{clearTimeout(t.timer)})),{config:e.config,state:t,handleShow:n}}};const N=(0,L.A)(M,[["render",P],["__scopeId","data-v-2b9ec4b3"]]);var Q=N;const G=["title"],Y={key:0,class:"progress"},O={key:1,class:"progress"};function q(e,t,n,l,s,r){const i=(0,a.g2)("Loading"),d=(0,a.g2)("el-icon"),c=(0,a.g2)("Download"),u=(0,a.g2)("CircleCheck");return(0,a.uX)(),(0,a.CE)("a",{href:"javascript:;",title:"服务端的程序版本",onClick:t[0]||(t[0]=(...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)(d,{key:0,size:"14",class:"loading"},{default:(0,a.k6)((()=>[(0,a.bF)(i)])),_:1})):2==l.updaterServer.Status?((0,a.uX)(),(0,a.Wv)(d,{key:1,size:"14"},{default:(0,a.k6)((()=>[(0,a.bF)(c)])),_:1})):3==l.updaterServer.Status||5==l.updaterServer.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.updaterServer.Length?((0,a.uX)(),(0,a.CE)("span",Y,"0%")):((0,a.uX)(),(0,a.CE)("span",O,(0,o.v_)(parseInt(l.updaterServer.Current/l.updaterServer.Length*100))+"%",1))],64)):6==l.updaterServer.Status?((0,a.uX)(),(0,a.Wv)(d,{key:3,size:"14",class:"yellow"},{default:(0,a.k6)((()=>[(0,a.bF)(u)])),_:1})):(0,a.Q3)("",!0)],64)):((0,a.uX)(),(0,a.Wv)(d,{key:1,size:"14"},{default:(0,a.k6)((()=>[(0,a.bF)(c)])),_:1}))],10,G)}var J=n(2933),H=n(920),Z={components:{Promotion:F.Yk4,Download:F.f5X,Loading:F.Rhj,CircleCheck:F.rW7,ServerFlow:Q},props:["config"],setup(e){const t=(0,B.B)(),n=(0,a.EW)((()=>t.value.hasAccess("UpdateServer"))),o=(0,w.KR)({Version:"",Msg:[],DateTime:"",Status:0,Length:0,Current:0}),l=(0,w.KR)({Version:"",Status:0,Length:0,Current:0}),s=(0,a.EW)((()=>`${o.value.Version}->${o.value.DateTime}\n${o.value.Msg.map(((e,t)=>`${t+1}、${e}`)).join("\n")}`)),r=(0,w.Kh)({show:!1,loading:!1,connected:(0,a.EW)((()=>t.value.signin.Connected)),version:(0,a.EW)((()=>t.value.signin.Version))}),i=()=>{(0,H.Vk)().then((e=>{o.value.DateTime=e.DateTime,o.value.Version=e.Version,o.value.Status=e.Status,o.value.Length=e.Length,o.value.Current=e.Current,o.value.Msg=e.Msg,setTimeout((()=>{i()}),1e3)})).catch((()=>{setTimeout((()=>{i()}),1e3)}))},d=()=>{(0,H.BJ)().then((e=>{l.value.Version=e.Version,l.value.Status=e.Status,l.value.Length=e.Length,l.value.Current=e.Current,l.value.Status>2&&l.value.Status<6&&setTimeout((()=>{d()}),1e3)})).catch((()=>{setTimeout((()=>{d()}),1e3)}))},c=()=>o.value.Version?l.value.Status<=2?r.version!=o.value.Version?`不是最新版本(${o.value.Version}),建议更新\n${s.value}`:`是最新版本,但我无法阻止你喜欢更新\n${s.value}`:{3:"正在下载",4:"已下载",5:"正在解压",6:"已解压,请重启"}[l.value.Status]:"未检测到更新",u=()=>r.version!=o.value.Version?"yellow":"green",p=()=>{e.config&&n.value&&(o.value.Version?[0,1,3,5].indexOf(l.value.Status)>=0?K.nk.error("操作中,请稍后!"):6!=l.value.Status?2==o.value.Status&&J.s.confirm("确定更新服务端吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,H.y2)(o.value.Version).then((()=>{setTimeout((()=>{d()}),1e3)}))})).catch((()=>{})):J.s.confirm("确定关闭服务端吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,H.aP)()})).catch((()=>{})):K.nk.error("未检测到更新"))};return(0,a.sV)((()=>{i(),d()})),{config:e.config,state:r,updaterCurrent:o,updaterServer:l,handleUpdate:p,updateText:c,updateColor:u}}};const ee=(0,L.A)(Z,[["render",q],["__scopeId","data-v-543a912e"]]);var te=ee,ne={components:{ServerConfig:z,ServerFlow:Q,ServerVersion:te},props:["config"],setup(e){const t=(0,w.Kh)({show:!1,loading:!1});return{config:e.config,state:t}}};const ae=(0,L.A)(ne,[["render",T],["__scopeId","data-v-67a4cbd2"]]);var oe=ae;const le=e=>((0,a.Qi)("data-v-117ef7b0"),e=e(),(0,a.jt)(),e),se={key:0,class:"status-export-wrap"},re={class:"port-wrap"},ie=le((()=>(0,a.Lk)("div",{class:"text"}," 导出配置,作为子设备运行,如果使用docker,容器映射configs文件夹即可 ",-1))),de={class:"body"},ce={class:"card-header"},ue={class:"flex"},pe={style:{"margin-left":"2rem"}},ge=le((()=>(0,a.Lk)("span",null,"设备名 : ",-1))),ve=le((()=>(0,a.Lk)("span",null,"管理密码 : ",-1)));function fe(e,t,n,o,l,s){const r=(0,a.g2)("Share"),i=(0,a.g2)("el-icon"),d=(0,a.g2)("el-checkbox"),c=(0,a.g2)("el-popover"),u=(0,a.g2)("el-input"),p=(0,a.g2)("Access"),g=(0,a.g2)("el-card"),v=(0,a.g2)("el-button"),f=(0,a.g2)("el-dialog");return o.config&&o.hasExport?((0,a.uX)(),(0,a.CE)("div",se,[(0,a.Lk)("a",{href:"javascript:;",title:"此设备的管理接口",onClick:t[0]||(t[0]=e=>o.state.show=!0)},[(0,a.bF)(i,{size:"16"},{default:(0,a.k6)((()=>[(0,a.bF)(r)])),_:1}),(0,a.eW)(" 导出配置 ")]),(0,a.bF)(f,{class:"options-center",title:"导出配置","destroy-on-close":"",modelValue:o.state.show,"onUpdate:modelValue":t[5]||(t[5]=e=>o.state.show=e),center:"",width:"580",top:"1vh"},{footer:(0,a.k6)((()=>[(0,a.bF)(v,{plain:"",onClick:t[4]||(t[4]=e=>o.state.show=!1),loading:o.state.loading},{default:(0,a.k6)((()=>[(0,a.eW)("取消")])),_:1},8,["loading"]),(0,a.bF)(v,{type:"success",plain:"",onClick:o.handleExport,loading:o.state.loading},{default:(0,a.k6)((()=>[(0,a.eW)("确定导出")])),_:1},8,["onClick","loading"])])),default:(0,a.k6)((()=>[(0,a.Lk)("div",re,[ie,(0,a.Lk)("div",de,[(0,a.bF)(g,{shadow:"never"},{header:(0,a.k6)((()=>[(0,a.Lk)("div",ce,[(0,a.Lk)("div",ue,[(0,a.Lk)("div",null,[(0,a.bF)(c,{placement:"top-start",title:"tips",width:200,trigger:"hover",content:"这将生成唯一ID,多台设备使用产生冲突,挤压下线"},{reference:(0,a.k6)((()=>[(0,a.bF)(d,{disabled:o.onlyNode,modelValue:o.state.single,"onUpdate:modelValue":t[1]||(t[1]=e=>o.state.single=e),label:"单设备"},null,8,["disabled","modelValue"])])),_:1})]),(0,a.Lk)("div",pe,[ge,(0,a.bF)(u,{disabled:!o.state.single,modelValue:o.state.name,"onUpdate:modelValue":t[2]||(t[2]=e=>o.state.name=e),maxlength:"12","show-word-limit":"",style:{width:"15rem"}},null,8,["disabled","modelValue"])]),(0,a.Lk)("div",null,[ve,(0,a.bF)(u,{type:"password","show-password":"",disabled:o.onlyNode,modelValue:o.state.apipassword,"onUpdate:modelValue":t[3]||(t[3]=e=>o.state.apipassword=e),maxlength:"36","show-word-limit":"",style:{width:"15rem"}},null,8,["disabled","modelValue"])])])])])),default:(0,a.k6)((()=>[(0,a.bF)(p,{ref:"accessDom",machineid:o.machineId},null,8,["machineid"])])),_:1})])])])),_:1},8,["modelValue"])])):(0,a.Q3)("",!0)}var me=n(8835),he=n(6611),ke={components:{Share:F.SYj,Access:he.A},props:["config"],setup(e){const t=(0,B.B)(),n=(0,a.EW)((()=>t.value.hasAccess("Export"))),o=(0,a.EW)((()=>t.value.config.Client.OnlyNode)),l=(0,a.EW)((()=>t.value.config.Client.Id)),s=(0,w.Kh)({show:!1,loading:!1,single:!0,name:"",apipassword:t.value.config.Client.CApi.ApiPassword}),r=(0,w.KR)(null),i=()=>{if(!n.value)return;const e={access:r.value.getValue(),single:s.single,name:s.name,apipassword:s.apipassword};if(e.single){if(!e.name)return void K.nk.error("请输入设备名")}else e.name="";if(!e.single||s.name)return e;K.nk.error("请输入管理密码")},d=()=>{const e=document.createElement("a");s.single?e.download=`client-node-export-${s.name}.zip`:e.download="client-node-export.zip",e.href="/client-node-export.zip",document.body.appendChild(e),e.click(),document.body.removeChild(e)},c=()=>{const e=i();e&&(s.loading=!0,(0,me.P$)(e).then((()=>{s.loading=!1,s.show=!1,K.nk.success("导出成功"),d()})).catch((()=>{s.loading=!1})))};return{config:e.config,onlyNode:o,hasExport:n,machineId:l,state:s,accessDom:r,handleExport:c}}};const ye=(0,L.A)(ke,[["render",fe],["__scopeId","data-v-117ef7b0"]]);var be=ye,we=n(2126),Se={components:{Api:R,Server:oe,Export:be,UpdaterBtn:we.A},props:["config"],setup(e){const t=(0,B.B)(),n=(0,a.EW)((()=>t.value.self)),o=(0,w.Kh)({showPay:!1});return{state:o,config:e.config,self:n}}};const Ce=(0,L.A)(Se,[["render",b],["__scopeId","data-v-da8e5ef0"]]);var Be=Ce}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/854.92d92203.js b/linker.tray.win/web/js/854.92d92203.js
new file mode 100644
index 00000000..2ef581be
--- /dev/null
+++ b/linker.tray.win/web/js/854.92d92203.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[854],{8902:function(e,l,r){r.r(l),r.d(l,{default:function(){return Fe}});var a=r(6768);const t={class:"app-wrap flex flex-column flex-nowrap"},o={class:"head"},s={class:"body flex-1 relative",ref:"wrap"},n={class:"home absolute"},u={class:"status"};function d(e,l,r,d,m,i){const f=(0,a.g2)("Head"),c=(0,a.g2)("router-view"),b=(0,a.g2)("Status"),v=(0,a.g2)("Install");return(0,a.uX)(),(0,a.CE)("div",t,[(0,a.Lk)("div",o,[(0,a.bF)(f)]),(0,a.Lk)("div",s,[(0,a.Lk)("div",n,[(0,a.bF)(c)])],512),(0,a.Lk)("div",u,[(0,a.bF)(b,{config:!0}),(0,a.bF)(v)])])}r(4114);var m=r.p+"img/logo.892cb2fb.png",i=r.p+"img/shouye.4c820c0e.svg",f=r.p+"img/fuwuqi.247f2561.svg",c=r.p+"img/dadong.e6fd78bf.svg",b=r.p+"img/anquan.5f8d5e47.svg",v=r.p+"img/rizhi.c3ca751b.svg";const p=e=>((0,a.Qi)("data-v-288c64ff"),e=e(),(0,a.jt)(),e),g={class:"head flex"},k={class:"logo"},F=p((()=>(0,a.Lk)("img",{src:m,alt:""},null,-1))),w={class:"menu flex-1"},y={class:"flex"},S=p((()=>(0,a.Lk)("img",{src:i},null,-1))),h={key:0},_=p((()=>(0,a.Lk)("img",{src:f},null,-1))),K={key:1},V=p((()=>(0,a.Lk)("img",{src:c},null,-1))),C={key:2},P=p((()=>(0,a.Lk)("img",{src:b},null,-1))),x={key:3},L=p((()=>(0,a.Lk)("img",{src:v},null,-1))),W={class:"image"};function U(e,l,r,t,o,s){const n=(0,a.g2)("router-link"),u=(0,a.g2)("Background");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.Lk)("div",g,[(0,a.Lk)("div",k,[(0,a.bF)(n,{to:{name:"FullIndex"}},{default:(0,a.k6)((()=>[F])),_:1})]),(0,a.Lk)("div",w,[(0,a.Lk)("ul",y,[(0,a.Lk)("li",null,[(0,a.bF)(n,{to:{name:"FullIndex"}},{default:(0,a.k6)((()=>[S,(0,a.eW)(" 首页")])),_:1})]),t.hasConfig?((0,a.uX)(),(0,a.CE)("li",h,[(0,a.bF)(n,{to:{name:"FullServers"}},{default:(0,a.k6)((()=>[_,(0,a.eW)(" 服务器")])),_:1})])):(0,a.Q3)("",!0),t.hasTransport?((0,a.uX)(),(0,a.CE)("li",K,[(0,a.bF)(n,{to:{name:"FullTransport"}},{default:(0,a.k6)((()=>[V,(0,a.eW)(" 打洞协议")])),_:1})])):(0,a.Q3)("",!0),t.hasAction?((0,a.uX)(),(0,a.CE)("li",C,[(0,a.bF)(n,{to:{name:"FullAction"}},{default:(0,a.k6)((()=>[P,(0,a.eW)(" 自定义验证")])),_:1})])):(0,a.Q3)("",!0),t.hasLogger?((0,a.uX)(),(0,a.CE)("li",x,[(0,a.bF)(n,{to:{name:"FullLogger"}},{default:(0,a.k6)((()=>[L,(0,a.eW)(" 日志")])),_:1})])):(0,a.Q3)("",!0)])]),(0,a.Lk)("div",W,[(0,a.bF)(u,{name:"full"})])])])}var A=r(7477),X=r(3830),j=r(5096),Q={components:{Promotion:A.Yk4,StarFilled:A.BQ2,WarnTriangleFilled:A.DtC,PhoneFilled:A.pXb,HelpFilled:A.adD,Background:j.A},setup(){const e=(0,X.B)(),l=(0,a.EW)((()=>e.value.hasAccess("Config"))),r=(0,a.EW)((()=>e.value.hasAccess("LoggerShow"))),t=(0,a.EW)((()=>e.value.hasAccess("Transport"))),o=(0,a.EW)((()=>e.value.hasAccess("Action")));return{hasConfig:l,hasLogger:r,hasTransport:t,hasAction:o}}},E=r(1241);const I=(0,E.A)(Q,[["render",U],["__scopeId","data-v-288c64ff"]]);var N=I,q=r(4548);const R=e=>((0,a.Qi)("data-v-41d4c7eb"),e=e(),(0,a.jt)(),e),D={class:"head"},B={class:"body"},O=R((()=>(0,a.Lk)("div",{class:"t-c"},"完成保存后,请重启软件",-1))),T={class:"footer t-c"};function J(e,l,r,t,o,s){const n=(0,a.g2)("el-step"),u=(0,a.g2)("el-steps"),d=(0,a.g2)("Common"),m=(0,a.g2)("el-card"),i=(0,a.g2)("Server"),f=(0,a.g2)("Client"),c=(0,a.g2)("el-button"),b=(0,a.g2)("el-dialog");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.bF)(b,{modelValue:t.state.show,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.show=e),title:"初始化配置",width:"600",top:"2vh"},{default:(0,a.k6)((()=>[(0,a.Lk)("div",null,[(0,a.Lk)("div",D,[(0,a.bF)(u,{active:t.step.step,"finish-status":"success"},{default:(0,a.k6)((()=>[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(t.state.steps,((e,l)=>((0,a.uX)(),(0,a.Wv)(n,{title:e},null,8,["title"])))),256))])),_:1},8,["active"])]),(0,a.Lk)("div",B,[1==t.step.step?((0,a.uX)(),(0,a.Wv)(m,{key:0,shadow:"never"},{default:(0,a.k6)((()=>[(0,a.bF)(d,{ref:"currentDom"},null,512)])),_:1})):(0,a.Q3)("",!0),2==t.step.step?((0,a.uX)(),(0,a.Wv)(m,{key:1,shadow:"never"},{default:(0,a.k6)((()=>[(0,a.bF)(i,{ref:"currentDom"},null,512)])),_:1})):(0,a.Q3)("",!0),3==t.step.step?((0,a.uX)(),(0,a.Wv)(m,{key:2,shadow:"never"},{default:(0,a.k6)((()=>[(0,a.bF)(f,{ref:"currentDom"},null,512)])),_:1})):(0,a.Q3)("",!0),4==t.step.step?((0,a.uX)(),(0,a.Wv)(m,{key:3,shadow:"never"},{default:(0,a.k6)((()=>[O])),_:1})):(0,a.Q3)("",!0)]),(0,a.Lk)("div",T,[(0,a.bF)(c,{disabled:t.step.step<=1,onClick:t.handlePrev},{default:(0,a.k6)((()=>[(0,a.eW)("上一步")])),_:1},8,["disabled","onClick"]),t.step.step[(0,a.eW)("下一步")])),_:1},8,["onClick"])):((0,a.uX)(),(0,a.Wv)(c,{key:1,type:"primary",onClick:t.handleSave},{default:(0,a.k6)((()=>[(0,a.eW)("完成")])),_:1},8,["onClick"]))])])])),_:1},8,["modelValue"])])}var H=r(8835),z=r(144),G=r(1219);const Y={class:"t-c"};function M(e,l,r,t,o,s){const n=(0,a.g2)("el-checkbox");return(0,a.uX)(),(0,a.CE)("div",Y,[(0,a.bF)(n,{modelValue:t.state.form.client,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.form.client=e),label:"作为客户端"},null,8,["modelValue"]),(0,a.bF)(n,{modelValue:t.state.form.server,"onUpdate:modelValue":l[1]||(l[1]=e=>t.state.form.server=e),label:"作为服务端"},null,8,["modelValue"])])}var Z={name:"Common",setup(){const e=(0,a.WQ)("step"),l=(0,z.Kh)({form:{client:e.value.form.common.client||e.value.json.Common&&e.value.json.Common.client||!0,server:e.value.form.common.server||e.value.json.Common&&e.value.json.Common.server||!1}}),r=e=>new Promise(((e,r)=>{l.form.client||l.form.server?e({json:{Common:{client:l.form.client,server:l.form.server,modes:[l.form.client?"client":"",l.form.server?"server":""].filter((e=>!!e))}},form:{common:JSON.parse(JSON.stringify(l.form))}}):(G.nk.error("请选择客户端或服务端"),r())}));return{state:l,handleValidate:r}}};const $=(0,E.A)(Z,[["render",M]]);var ee=$;const le=e=>((0,a.Qi)("data-v-47b95c93"),e=e(),(0,a.jt)(),e),re=le((()=>(0,a.Lk)("div",{class:"t-c w-100"},[(0,a.Lk)("p",null,"端口为0则不监听,相同分组名之间的客户端相互可见")],-1)));function ae(e,l,r,t,o,s){const n=(0,a.g2)("el-form-item"),u=(0,a.g2)("el-input"),d=(0,a.g2)("el-col"),m=(0,a.g2)("el-row"),i=(0,a.g2)("el-checkbox"),f=(0,a.g2)("el-form");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.bF)(f,{ref:"formDom",model:t.state.form,rules:t.state.rules,"label-width":"8rem"},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[re])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"机器名",prop:"name"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.name,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.form.name=e),maxlength:"12","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"分组名",prop:"groupid"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.groupid,"onUpdate:modelValue":l[1]||(l[1]=e=>t.state.form.groupid=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"接口端口",prop:"api"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.api,"onUpdate:modelValue":l[2]||(l[2]=e=>t.state.form.api=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"网页端口",prop:"web"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.web,"onUpdate:modelValue":l[3]||(l[3]=e=>t.state.form.web=e)},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"接口密码",prop:"password"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{style:{width:"42rem"},type:"password",modelValue:t.state.form.password,"onUpdate:modelValue":l[4]||(l[4]=e=>t.state.form.password=e),"show-password":"",maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{"label-width":"8rem",prop:"hasServer"},{default:(0,a.k6)((()=>[(0,a.bF)(i,{modelValue:t.state.form.hasServer,"onUpdate:modelValue":l[5]||(l[5]=e=>t.state.form.hasServer=e),label:"我有服务器",size:"large"},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),t.state.form.hasServer?((0,a.uX)(),(0,a.Wv)(n,{key:0,label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"信标服务",prop:"server"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.server,"onUpdate:modelValue":l[6]||(l[6]=e=>t.state.form.server=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"信标密钥",prop:"serverSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.serverSecretKey,"onUpdate:modelValue":l[7]||(l[7]=e=>t.state.form.serverSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1})):(0,a.Q3)("",!0),t.state.form.hasServer?((0,a.uX)(),(0,a.Wv)(n,{key:1,label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"穿透密钥",prop:"sForwardSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.sForwardSecretKey,"onUpdate:modelValue":l[8]||(l[8]=e=>t.state.form.sForwardSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"中继密钥",prop:"relaySecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.relaySecretKey,"onUpdate:modelValue":l[9]||(l[9]=e=>t.state.form.relaySecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1})):(0,a.Q3)("",!0),t.state.form.hasServer?((0,a.uX)(),(0,a.Wv)(n,{key:2,label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"更新密钥",prop:"updaterSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.updaterSecretKey,"onUpdate:modelValue":l[10]||(l[10]=e=>t.state.form.updaterSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"占位"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{disabled:"",maxlength:"36","show-word-limit":""})])),_:1})])),_:1})])),_:1})])),_:1})):(0,a.Q3)("",!0)])),_:1},8,["model","rules"])])}var te={setup(e){const l=(0,a.WQ)("step"),r=(0,X.B)(),t=(0,z.Kh)({form:{name:l.value.form.client.name||r.value.config.Client.Name,groupid:l.value.form.client.groupid||r.value.config.Client.GroupId,api:l.value.form.client.api||r.value.config.Client.CApi.ApiPort,web:l.value.form.client.web||r.value.config.Client.CApi.WebPort,password:l.value.form.client.password||r.value.config.Client.CApi.ApiPassword,hasServer:l.value.form.client.hasServer||!1,server:l.value.form.client.server||r.value.config.Client.ServerInfo.Host,serverSecretKey:l.value.form.client.serverSecretKey||r.value.config.Client.ServerSecretKey,sForwardSecretKey:l.value.form.client.sForwardSecretKey||r.value.config.Client.SForward.SecretKey,relaySecretKey:l.value.form.client.relaySecretKey||(r.value.config.Client.Relay.Servers[0]||{SecretKey:"snltty"}).SecretKey,updaterSecretKey:l.value.form.client.updaterSecretKey||r.value.config.Client.Updater.SecretKey},rules:{name:[{required:!0,message:"必填",trigger:"blur"}],groupid:[{required:!0,message:"必填",trigger:"blur"}],password:[{required:!0,message:"必填",trigger:"blur"}],api:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}],web:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}]}}),o=(0,z.KR)(null),s=()=>new Promise(((e,l)=>{o.value.validate((r=>{r?e({json:{Client:{name:t.form.name,groupid:t.form.groupid,api:+t.form.api,web:+t.form.web,password:t.form.password,hasServer:t.form.hasServer,server:t.form.server,serverSecretKey:t.form.serverSecretKey,sForwardSecretKey:t.form.sForwardSecretKey,relaySecretKey:t.form.relaySecretKey,updaterSecretKey:t.form.updaterSecretKey}},form:{client:JSON.parse(JSON.stringify(t.form))}}):l()}))}));return(0,a.sV)((()=>{0==l.value.json.Common.client&&(l.value.step+=l.value.increment)})),{state:t,handleValidate:s,formDom:o}}};const oe=(0,E.A)(te,[["render",ae],["__scopeId","data-v-47b95c93"]]);var se=oe;const ne=e=>((0,a.Qi)("data-v-c9a17ce0"),e=e(),(0,a.jt)(),e),ue=ne((()=>(0,a.Lk)("div",{class:"t-c w-100"},"端口为0则不监听",-1)));function de(e,l,r,t,o,s){const n=(0,a.g2)("el-form-item"),u=(0,a.g2)("el-input"),d=(0,a.g2)("el-col"),m=(0,a.g2)("el-row"),i=(0,a.g2)("el-form");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.bF)(i,{ref:"formDom",model:t.state.form,rules:t.state.rules,"label-width":"10rem"},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[ue])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"服务端口",prop:"servicePort"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.servicePort,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.form.servicePort=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"web穿透端口",prop:"webPort"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.webPort,"onUpdate:modelValue":l[1]||(l[1]=e=>t.state.form.webPort=e)},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"开放最小端口",prop:"tunnelPort1"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.tunnelPort1,"onUpdate:modelValue":l[2]||(l[2]=e=>t.state.form.tunnelPort1=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"开放最大端口",prop:"tunnelPort2"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.tunnelPort2,"onUpdate:modelValue":l[3]||(l[3]=e=>t.state.form.tunnelPort2=e)},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"信标密钥",prop:"signinSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.signinSecretKey,"onUpdate:modelValue":l[4]||(l[4]=e=>t.state.form.signinSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"穿透密钥",prop:"sForwardSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.sForwardSecretKey,"onUpdate:modelValue":l[5]||(l[5]=e=>t.state.form.sForwardSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"中继密钥",prop:"relaySecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.relaySecretKey,"onUpdate:modelValue":l[6]||(l[6]=e=>t.state.form.relaySecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"更新密钥",prop:"updaterSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(u,{modelValue:t.state.form.updaterSecretKey,"onUpdate:modelValue":l[7]||(l[7]=e=>t.state.form.updaterSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1})])),_:1},8,["model","rules"])])}var me={setup(e){const l=(0,a.WQ)("step"),r=(0,X.B)(),t=(0,z.Kh)({show:!1,form:{signinSecretKey:l.value.form.server.signinSecretKey||r.value.config.Server.SignIn.SecretKey,relaySecretKey:l.value.form.server.relaySecretKey||r.value.config.Server.Relay.SecretKey,sForwardSecretKey:l.value.form.server.sForwardSecretKey||r.value.config.Server.SForward.SecretKey,servicePort:l.value.form.server.servicePort||r.value.config.Server.ServicePort,webPort:l.value.form.server.webPort||r.value.config.Server.SForward.WebPort,tunnelPort1:l.value.form.server.tunnelPort1||r.value.config.Server.SForward.TunnelPortRange[0],tunnelPort2:l.value.form.server.tunnelPort2||r.value.config.Server.SForward.TunnelPortRange[1],updaterSecretKey:l.value.form.server.updaterSecretKey||r.value.config.Server.Updater.SecretKey},rules:{relaySecretKey:[{required:!0,message:"必填",trigger:"blur"}],sForwardSecretKey:[{required:!0,message:"必填",trigger:"blur"}],servicePort:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}],webPort:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}],tunnelPort1:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}],tunnelPort2:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}]}}),o=(0,z.KR)(null),s=()=>new Promise(((e,l)=>{o.value.validate((r=>{0==r?l():e({json:{Server:{ServicePort:+t.form.servicePort,Relay:{SecretKey:t.form.relaySecretKey},SForward:{SecretKey:t.form.sForwardSecretKey,WebPort:+t.form.webPort,TunnelPortRange:[+t.form.tunnelPort1,+t.form.tunnelPort2]},Updater:{SecretKey:t.form.updaterSecretKey},SignIn:{SecretKey:t.form.signinSecretKey}}},form:{server:JSON.parse(JSON.stringify(t.form))}})}))}));return(0,a.sV)((()=>{0==l.value.json.Common.server&&(l.value.step+=l.value.increment)})),{state:t,handleValidate:s,formDom:o}}};const ie=(0,E.A)(me,[["render",de],["__scopeId","data-v-c9a17ce0"]]);var fe=ie,ce={components:{Common:ee,Client:se,Server:fe},setup(e){const l=(0,X.B)(),r=(0,z.Kh)({show:0==l.value.config.Common.Install,steps:["选择模式","服务端","客户端","完成"]}),t=(0,z.KR)(null),o=(0,z.KR)({step:1,increment:1,json:{},form:{server:{},client:{},common:{}}});(0,a.Gt)("step",o);const s=()=>{o.value.step--,o.value.increment=-1},n=()=>{o.value.increment=1,t.value.handleValidate().then((e=>{o.value.json=Object.assign(o.value.json,e.json),o.value.form=Object.assign(o.value.form,e.form),o.value.step++})).catch((()=>{}))},u=()=>{(0,H.ai)(o.value.json).then((()=>{G.nk.success("保存成功")})).catch((()=>{G.nk.error("保存失败")}))};return{state:r,currentDom:t,step:o,handlePrev:s,handleNext:n,handleSave:u}}};const be=(0,E.A)(ce,[["render",J],["__scopeId","data-v-41d4c7eb"]]);var ve=be,pe=r(1387),ge={name:"Index",components:{Head:N,Status:q.A,Install:ve},setup(e){const l=(0,X.B)(),r=(0,pe.rd)(),t=(0,z.KR)(null),o=()=>{(0,a.dY)((()=>{l.value.height=t.value.offsetHeight}))};return(0,a.sV)((()=>{0==l.value.hasAccess("FullManager")&&r.push({name:"NoPermission"}),window.addEventListener("resize",o),o()})),(0,a.hi)((()=>{window.removeEventListener("resize",o)})),{wrap:t}}};const ke=(0,E.A)(ge,[["render",d],["__scopeId","data-v-5ea3415a"]]);var Fe=ke}}]);
\ No newline at end of file
diff --git a/linker.tray.win/web/js/93.9e9f6928.js b/linker.tray.win/web/js/93.9e9f6928.js
deleted file mode 100644
index 1a2d1932..00000000
--- a/linker.tray.win/web/js/93.9e9f6928.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[93],{743:function(e,a,t){t.d(a,{$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=t(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")},1413:function(e,a,t){t.r(a),t.d(a,{default:function(){return it}});var l=t(6768);const n={class:"home-list-wrap absolute"},o={class:"page t-c"},r={class:"page-wrap"};function d(e,a,t,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"),w=(0,l.g2)("Oper"),f=(0,l.g2)("el-pagination"),v=(0,l.g2)("DeviceEdit"),k=(0,l.g2)("AccessEdit"),b=(0,l.g2)("TunnelEdit"),F=(0,l.g2)("ConnectionsEdit"),C=(0,l.g2)("TuntapEdit"),L=(0,l.g2)("ForwardEdit"),_=(0,l.g2)("ForwardCopy"),T=(0,l.g2)("SForwardEdit"),E=(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:"160",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)(w,{onRefresh:d.handlePageRefresh,onAccess:d.handleAccessEdit},null,8,["onRefresh","onAccess"])])),_:1},8,["data","height"]),(0,l.Lk)("div",o,[(0,l.Lk)("div",r,[(0,l.bF)(f,{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":a[0]||(a[0]=e=>d.devices.showDeviceEdit=e),onChange:d.handlePageChange,data:d.devices.deviceInfo},null,8,["modelValue","onChange","data"])):(0,l.Q3)("",!0),d.devices.showAccessEdit?((0,l.uX)(),(0,l.Wv)(k,{key:1,modelValue:d.devices.showAccessEdit,"onUpdate:modelValue":a[1]||(a[1]=e=>d.devices.showAccessEdit=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)(b,{key:2,modelValue:d.tunnel.showEdit,"onUpdate:modelValue":a[2]||(a[2]=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)(F,{key:3,modelValue:d.connections.showEdit,"onUpdate:modelValue":a[3]||(a[3]=e=>d.connections.showEdit=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),d.tuntap.showEdit?((0,l.uX)(),(0,l.Wv)(C,{key:4,modelValue:d.tuntap.showEdit,"onUpdate:modelValue":a[4]||(a[4]=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)(L,{key:5,modelValue:d.forward.showEdit,"onUpdate:modelValue":a[5]||(a[5]=e=>d.forward.showEdit=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),d.forward.showCopy?((0,l.uX)(),(0,l.Wv)(_,{key:6,modelValue:d.forward.showCopy,"onUpdate:modelValue":a[6]||(a[6]=e=>d.forward.showCopy=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),d.sforward.showEdit?((0,l.uX)(),(0,l.Wv)(T,{key:7,modelValue:d.sforward.showEdit,"onUpdate:modelValue":a[7]||(a[7]=e=>d.sforward.showEdit=e)},null,8,["modelValue"])):(0,l.Q3)("",!0),d.sforward.showCopy?((0,l.uX)(),(0,l.Wv)(E,{key:8,modelValue:d.sforward.showCopy,"onUpdate:modelValue":a[8]||(a[8]=e=>d.sforward.showCopy=e)},null,8,["modelValue"])):(0,l.Q3)("",!0)])}t(4114);var s=t(3830),u=t(144);const i=e=>((0,l.Qi)("data-v-1e7a30d3"),e=e(),(0,l.jt)(),e),c={class:"dropdown"},h=i((()=>(0,l.Lk)("span",null,"操作",-1)));function m(e,a,t,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"),m=(0,l.g2)("Delete"),p=(0,l.g2)("Flag"),g=(0,l.g2)("el-dropdown-menu"),w=(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)(w,{size:"small"},{dropdown:(0,l.k6)((()=>[(0,l.bF)(g,null,{default:(0,l.k6)((()=>[e.row.showReboot&&n.hasReboot?((0,l.uX)(),(0,l.Wv)(i,{key:0,onClick:a=>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&&n.hasRemove?((0,l.uX)(),(0,l.Wv)(i,{key:1,onClick:a=>n.handleDel(e.row.MachineId,e.row.MachineName)},{default:(0,l.k6)((()=>[(0,l.bF)(s,null,{default:(0,l.k6)((()=>[(0,l.bF)(m)])),_:1}),(0,l.eW)(" 删除")])),_:2},1032,["onClick"])):(0,l.Q3)("",!0),n.handleShowAccess(e.row,n.accessList[e.row.MachineId]||0)?((0,l.uX)(),(0,l.Wv)(i,{key:2,onClick:a=>n.handleAccess(e.row)},{default:(0,l.k6)((()=>[(0,l.bF)(s,null,{default:(0,l.k6)((()=>[(0,l.bF)(p)])),_:1}),(0,l.eW)(" 权限")])),_:2},1032,["onClick"])):(0,l.Q3)("",!0)])),_:2},1024)])),default:(0,l.k6)((()=>[(0,l.Lk)("div",c,[h,(0,l.bF)(s,{class:"el-icon--right"},{default:(0,l.k6)((()=>[(0,l.bF)(d)])),_:1})])])),_:2},1024)])),_:1})}var p=t(9299),g=t(920),w=t(7477),f=t(2933),v=t(5962),k={emits:["refresh","access"],components:{Delete:w.epd,SwitchButton:w.L$q,ArrowDown:w.yd$,Flag:w.lNU},setup(e,{emit:a}){const t=(0,s.B)(),n=(0,v.q)(),o=(0,l.EW)((()=>t.value.config.Client.Access)),r=(0,l.EW)((()=>t.value.hasAccess("Access"))),d=(0,l.EW)((()=>n.value.list)),u=(0,l.EW)((()=>t.value.hasAccess("Reboot"))),i=(0,l.EW)((()=>t.value.hasAccess("Remove"))),c=(e,t)=>{f.s.confirm(`确认删除[${t}]?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,p.Se)(e).then((()=>{a("refresh")}))})).catch((()=>{}))},h=(e,t)=>{f.s.confirm(`确认关闭[${t}]?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,g.NS)(e).then((()=>{a("refresh")}))})).catch((()=>{}))},m=(e,a)=>e.showAccess&&r.value&&a>=0&&(~o.value&a)>>>0==0,w=e=>{a("access",e)};return{accessList:d,handleDel:c,handleExit:h,hasReboot:u,hasRemove:i,hasAccess:r,handleShowAccess:m,handleAccess:w}}},b=t(1241);const F=(0,b.A)(k,[["render",m],["__scopeId","data-v-1e7a30d3"]]);var C=F,L=t(4232);const _=e=>((0,l.Qi)("data-v-358fba0e"),e=e(),(0,l.jt)(),e),T={class:"flex"},E=_((()=>(0,l.Lk)("span",{class:"flex-1"},"设备",-1))),V={class:"flex"},y=["onClick"],I=["onClick"],P=_((()=>(0,l.Lk)("span",null,"😴㊙.㊙.㊙.㊙",-1))),S=[P],R=_((()=>(0,l.Lk)("span",{class:"flex-1"},null,-1)));function M(e,a,t,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",T,[E,(0,l.Lk)("span",null,[(0,l.bF)(d,{size:"small",modelValue:n.name,"onUpdate:modelValue":a[0]||(a[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:a=>n.handleExternal(e.row)},[(0,l.Lk)("span",null,"😀"+(0,L.v_)(e.row.IP),1)],8,y)):((0,l.uX)(),(0,l.CE)("span",{key:1,title:"此设备的外网IP",class:"ipaddress",onClick:a=>n.handleExternal(e.row)},S,8,I)),R,(0,l.bF)(h,{config:!0,item:e.row},null,8,["item"])])])])),_:1})}var W=t(2126),B=t(886),N={emits:["edit","refresh"],components:{Search:w.vji,UpdaterBtn:W.A,DeviceName:B.A},setup(e,{emit:a}){const t=(0,s.B)(),n=(0,l.EW)((()=>t.value.hasAccess("ExternalShow"))),o=(0,u.KR)(sessionStorage.getItem("search-name")||""),r=e=>{n.value&&(e.showip=!e.showip)},d=e=>{a("edit",e)},i=()=>{sessionStorage.setItem("search-name",o.value),a("refresh",o.value)};return{handleEdit:d,handleRefresh:i,name:o,handleExternal:r}}};const A=(0,b.A)(N,[["render",M],["__scopeId","data-v-358fba0e"]]);var z=A;const U=(0,l.Lk)("div",null,"修改后最好能重启一次客户端",-1),X={class:"t-c w-100"};function D(e,a,t,n,o,r){const d=(0,l.g2)("el-form-item"),s=(0,l.g2)("el-input"),u=(0,l.g2)("el-button"),i=(0,l.g2)("el-form"),c=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(c,{modelValue:n.state.show,"onUpdate:modelValue":a[2]||(a[2]=e=>n.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:`设置[${n.state.ruleForm.MachineName}]设备`,width:"300"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(i,{ref:"ruleFormRef",model:n.state.ruleForm,rules:n.state.rules,"label-width":"auto"},{default:(0,l.k6)((()=>[(0,l.bF)(d,{label:""},{default:(0,l.k6)((()=>[U])),_:1}),(0,l.bF)(d,{label:"设备名",prop:"MachineName"},{default:(0,l.k6)((()=>[(0,l.bF)(s,{maxlength:"12","show-word-limit":"",modelValue:n.state.ruleForm.MachineName,"onUpdate:modelValue":a[0]||(a[0]=e=>n.state.ruleForm.MachineName=e)},null,8,["modelValue"])])),_:1}),(0,l.bF)(d,{label:"",prop:"Btns"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",X,[(0,l.bF)(u,{onClick:a[1]||(a[1]=e=>n.state.show=!1)},{default:(0,l.k6)((()=>[(0,l.eW)("取消")])),_:1}),(0,l.bF)(u,{type:"primary",onClick:n.handleSave},{default:(0,l.k6)((()=>[(0,l.eW)("确认")])),_:1},8,["onClick"])])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue","title"])}var x=t(1219),K={props:["data","modelValue"],emits:["change","update:modelValue"],setup(e,{emit:a}){const t=(0,u.KR)(null),n=(0,u.Kh)({show:!0,ruleForm:{MachineName1:e.data.MachineName,MachineName:e.data.MachineName},rules:{}});(0,l.wB)((()=>n.show),(e=>{e||setTimeout((()=>{a("update:modelValue",e)}),300)}));const o=()=>{e.data.MachineName!=n.ruleForm.MachineName&&(0,p.gC)({Id:e.data.MachineId,newName:n.ruleForm.MachineName}).then((()=>{n.show=!1,x.nk.success("已操作!"),a("change")})).catch((()=>{x.nk.error("操作失败!")}))};return{state:n,ruleFormRef:t,handleSave:o}}};const O=(0,b.A)(K,[["render",D]]);var Q=O;function q(e,a,t,n,o,r){const d=(0,l.g2)("Access"),s=(0,l.g2)("el-button"),u=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(u,{modelValue:n.state.show,"onUpdate:modelValue":a[1]||(a[1]=e=>n.state.show=e),"close-on-click-modal":!1,center:"","append-to":".app-wrap",title:`设置[${n.machineName}]的权限`,width:"580",top:"1vh"},{footer:(0,l.k6)((()=>[(0,l.bF)(s,{plain:"",onClick:a[0]||(a[0]=e=>n.state.show=!1),loading:n.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)("取消")])),_:1},8,["loading"]),(0,l.bF)(s,{type:"success",plain:"",onClick:n.handleSave,loading:n.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)("确定保存")])),_:1},8,["onClick","loading"])])),default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(d,{machineid:n.machineid,ref:"accessDom"},null,8,["machineid"])])])),_:1},8,["modelValue","title"])}var G=t(8835),$=t(6611),j={props:["data","modelValue"],emits:["change","update:modelValue"],components:{Access:$.A},setup(e,{emit:a}){const t=(0,u.Kh)({show:!0,loading:!1});(0,l.wB)((()=>t.show),(e=>{e||setTimeout((()=>{a("update:modelValue",e)}),300)}));const n=(0,u.KR)(null),o=()=>{t.loading=!0,(0,G.ZK)({ToMachineId:e.data.MachineId,Access:n.value.getValue()}).then((()=>{t.loading=!1,t.show=!1,x.nk.success("已操作!"),a("change")})).catch((()=>{t.loading=!1,x.nk.error("操作失败!")}))};return{machineName:e.data.MachineName,machineid:e.data.MachineId,state:t,accessDom:n,handleSave:o}}};const Y=(0,b.A)(j,[["render",q]]);var H=Y;const J={key:0};function Z(e,a,t,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",J,[(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 ee=t(8104),ae=t(3630),te={emits:["edit","refresh"],components:{TuntapShow:ae.A},setup(e,{emit:a}){const t=(0,ee.W)(),l=e=>{a("edit",e)},n=()=>{a("refresh")};return{tuntap:t,handleTuntapIP:l,handleTuntapRefresh:n}}};const le=(0,b.A)(te,[["render",Z]]);var ne=le;const oe=e=>((0,l.Qi)("data-v-44067f74"),e=e(),(0,l.jt)(),e),re=oe((()=>(0,l.Lk)("span",null,"/",-1))),de=oe((()=>(0,l.Lk)("span",{style:{width:"3rem"}},null,-1))),se={key:0,class:"upgrade-wrap"},ue=oe((()=>(0,l.Lk)("span",{class:"yellow"},"此设备能使用NAT转发,只需局域网IP,剩下的交给NAT(linux、macos、win10+)",-1))),ie={class:"flex-1"},ce=oe((()=>(0,l.Lk)("span",null,"/",-1))),he={class:"pdl-10"},me=oe((()=>(0,l.Lk)("span",{class:"yellow"},"此设备无法使用NAT转发,或只想使用端口转发",-1))),pe={class:"flex-1"},ge={class:"pdl-10"};function we(e,a,t,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"),w=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(w,{modelValue:n.state.show,"onUpdate:modelValue":a[6]||(a[6]=e=>n.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:`设置[${n.state.machineName}]组网`,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":a[0]||(a[0]=e=>n.state.ruleForm.IP=e),style:{width:"14rem"}},null,8,["modelValue"]),re,(0,l.bF)(s,{onChange:n.handlePrefixLengthChange,modelValue:n.state.ruleForm.PrefixLength,"onUpdate:modelValue":a[1]||(a[1]=e=>n.state.ruleForm.PrefixLength=e),style:{width:"4rem"}},null,8,["onChange","modelValue"]),de,(0,l.bF)(u,{modelValue:n.state.ruleForm.ShowDelay,"onUpdate:modelValue":a[2]||(a[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":a[3]||(a[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":a[4]||(a[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",se,[(0,l.bF)(d,{prop:"nat",style:{"margin-bottom":"0"}},{default:(0,l.k6)((()=>[ue])),_: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,a)=>((0,l.uX)(),(0,l.CE)("div",{key:a,class:"flex",style:{"margin-bottom":".6rem"}},[(0,l.Lk)("div",ie,[(0,l.bF)(s,{modelValue:n.state.ruleForm.LanIPs[a],"onUpdate:modelValue":e=>n.state.ruleForm.LanIPs[a]=e,style:{width:"14rem"}},null,8,["modelValue","onUpdate:modelValue"]),ce,(0,l.bF)(s,{onChange:e=>n.handleMaskChange(a),modelValue:n.state.ruleForm.Masks[a],"onUpdate:modelValue":e=>n.state.ruleForm.Masks[a]=e,style:{width:"4rem"}},null,8,["onChange","modelValue","onUpdate:modelValue"])]),(0,l.Lk)("div",he,[(0,l.bF)(m,{type:"danger",onClick:e=>n.handleDel(a)},{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(a)},{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)((()=>[me])),_: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,a)=>((0,l.uX)(),(0,l.CE)("div",{key:a,class:"flex",style:{"margin-bottom":".6rem"}},[(0,l.Lk)("div",pe,[(0,l.bF)(s,{modelValue:e.ListenAddr,"onUpdate:modelValue":a=>e.ListenAddr=a,style:{width:"7rem"},readonly:""},null,8,["modelValue","onUpdate:modelValue"]),(0,l.eW)(" : "),(0,l.bF)(s,{onChange:e=>n.handleForwardChange(a),modelValue:e.ListenPort,"onUpdate:modelValue":a=>e.ListenPort=a,style:{width:"6rem"}},null,8,["onChange","modelValue","onUpdate:modelValue"]),(0,l.eW)(" -> "),(0,l.bF)(s,{modelValue:e.ConnectAddr,"onUpdate:modelValue":a=>e.ConnectAddr=a,style:{width:"14rem"}},null,8,["modelValue","onUpdate:modelValue"]),(0,l.eW)(" : "),(0,l.bF)(s,{onChange:e=>n.handleForwardChange(a),modelValue:e.ConnectPort,"onUpdate:modelValue":a=>e.ConnectPort=a,style:{width:"6rem"}},null,8,["onChange","modelValue","onUpdate:modelValue"])]),(0,l.Lk)("div",ge,[(0,l.bF)(m,{type:"danger",onClick:e=>n.handleDelForward(a)},{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(a)},{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:a[5]||(a[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","title"])}var fe=t(5241),ve={props:["modelValue"],emits:["change","update:modelValue"],components:{Delete:w.epd,Plus:w.FWt},setup(e,{emit:a}){const t=(0,s.B)(),n=(0,ee.W)(),o=(0,u.KR)(null),r=(0,u.Kh)({show:!0,machineName:n.value.current.device.MachineName,bufferSize:t.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((()=>{a("update:modelValue",e)}),300)}));const d=()=>{var e=+r.ruleForm.PrefixLength;(e>32||e<16||isNaN(e))&&(e=24),r.ruleForm.PrefixLength=e},i=e=>{var a=+r.ruleForm.Masks[e];(a>32||a<16||isNaN(a))&&(a=24),r.ruleForm.Masks[e]=a},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:t,masks:l}=r.ruleForm.LanIPs.reduce(((e,a,t)=>(a&&r.ruleForm.Masks[t]&&(e.lanips.push(a),e.masks.push(r.ruleForm.Masks[t])),e)),{lanips:[],masks:[]});e.LanIPs=t,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,fe.ac)(e).then((()=>{r.show=!1,x.nk.success("已操作!"),a("change")})).catch((()=>{x.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})},w=()=>{};return{state:r,ruleFormRef:o,handlePrefixLengthChange:d,handleMaskChange:i,handleDel:c,handleAdd:h,handleSave:m,handleForwardChange:w,handleDelForward:p,handleAddForward:g}}};const ke=(0,b.A)(ve,[["render",we],["__scopeId","data-v-44067f74"]]);var be=ke;const Fe={key:0},Ce=["title","onClick"],Le=["onClick"];function _e(e,a,t,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",Fe,[(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:a=>n.handleTunnel(n.tunnel.list[e.row.MachineId],e.row)},[(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,Ce)])):(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:a=>n.handleConnections(e.row)},[(0,l.eW)(" 连接数 : "),(0,l.Lk)("span",null,(0,L.v_)(n.connectionCount(e.row.MachineId)),1)],10,Le)])])),_:1})}var Te=t(83);const Ee=Symbol(),Ve=()=>{(0,s.B)();const e=(0,u.KR)({timer:0,showEdit:!1,current:null,list:{},hashcode:0});(0,l.Gt)(Ee,e);const a=()=>{(0,Te.r7)(e.value.hashcode.toString()).then((t=>{e.value.hashcode=t.HashCode,t.List&&(e.value.list=t.List),e.value.timer=setTimeout(a,1060)})).catch((()=>{e.value.timer=setTimeout(a,1060)}))},t=a=>{e.value.current=a,e.value.showEdit=!0},n=()=>{(0,Te.gM)(),x.nk.success({message:"刷新成功",grouping:!0})},o=()=>{clearTimeout(e.value.timer)},r=a=>Object.values(e.value.list).sort(((e,a)=>e.RouteLevel+e.RouteLevelPlus-a.RouteLevel+a.RouteLevelPlus)).map((e=>e.MachineId));return{tunnel:e,_getTunnelInfo:a,handleTunnelEdit:t,handleTunnelRefresh:n,clearTunnelTimeout:o,sortTunnel:r}},ye=()=>(0,l.WQ)(Ee);var Ie=t(4);const Pe=(e="0")=>(0,Ie.zG)("forwardclient/connections",e),Se=e=>(0,Ie.zG)("forwardclient/removeconnection",e),Re=(e="0")=>(0,Ie.zG)("forwardclient/get",e),Me=e=>(0,Ie.zG)("forwardclient/getremote",e),We=()=>(0,Ie.zG)("forwardclient/bindips"),Be=e=>(0,Ie.zG)("forwardclient/remove",e),Ne=e=>(0,Ie.zG)("forwardclient/add",e),Ae=e=>(0,Ie.zG)("forwardclient/TestTarget",e),ze=Symbol(),Ue=Symbol(),Xe=Symbol(),De=()=>{const e=(0,u.KR)({showEdit:!1,speedCache:{},current:"",currentName:"",hashcode:0,hashcode1:0,_updateRealTime:!1,updateRealTime:a=>{e.value.hashcode=0,e.value.hashcode1=0,e.value._updateRealTime=a}});(0,l.Gt)(ze,e);const a=(0,u.KR)({timer:0,list:{}});(0,l.Gt)(Ue,a);const t=()=>{Pe(e.value.hashcode.toString()).then((l=>{0==e.value._updateRealTime&&(e.value.hashcode=l.HashCode),l.List&&(r(l.List,Se),a.value.list=l.List),a.value.timer=setTimeout(t,1e3)})).catch((e=>{a.value.timer=setTimeout(t,1e3)}))},n=(0,u.KR)({timer:0,list:{}});(0,l.Gt)(Xe,n);const o=()=>{(0,fe.kl)(e.value.hashcode1.toString()).then((a=>{0==e.value._updateRealTime&&(e.value.hashcode1=a.HashCode),a.List&&(r(a.List,fe.vB),n.value.list=a.List),n.value.timer=setTimeout(o,1e3)})).catch((e=>{n.value.timer=setTimeout(o,1e3)}))},r=(a,t)=>{const l=e.value.speedCache;for(let e in a){const n=a[e];n.removeFunc=t;const o=`${n.RemoteMachineId}-${n.TransactionId}`,r=l[o]||{SendBytes:0,ReceiveBytes:0};n.SendBytesText=d(n.SendBytes-r.SendBytes),n.ReceiveBytesText=d(n.ReceiveBytes-r.ReceiveBytes),r.SendBytes=n.SendBytes,r.ReceiveBytes=n.ReceiveBytes,l[o]=r}},d=e=>{let a=0;while(e>=1024)e/=1024,a++;return`${e.toFixed(2)}${["B/s","KB/s","MB/s","GB/s","TB/s"][a]}`},s=a=>{e.value.current=a.MachineId,e.value.currentName=a.MachineName,e.value.showEdit=!0},i=()=>{clearTimeout(a.value.timer),clearTimeout(n.value.timer)};return{connections:e,forwardConnections:a,_getForwardConnections:t,tuntapConnections:n,_getTuntapConnections:o,handleTunnelConnections:s,clearConnectionsTimeout:i}},xe=()=>(0,l.WQ)(ze),Ke=()=>(0,l.WQ)(Ue),Oe=()=>(0,l.WQ)(Xe);var Qe={emits:["edit","refresh"],setup(e,{emit:a}){const t=(0,s.B)(),n=(0,l.EW)((()=>t.value.config.Client.Id)),o=(0,l.EW)((()=>t.value.hasAccess("TunnelChangeSelf"))),r=(0,l.EW)((()=>t.value.hasAccess("TunnelChangeOther"))),d=ye(),u=(xe(),Ke()),i=Oe(),c=e=>[u.value.list[e],i.value.list[e]].filter((e=>!!e&&e.Connected)).length,h=(e,t)=>{if(n.value===e.MachineId){if(!o.value)return}else if(!r.value)return;e.device=t,a("edit",e)},m=()=>{a("refresh")},p=e=>{a("connections",e)};return{tunnel:d,handleTunnel:h,handleTunnelRefresh:m,connectionCount:c,handleConnections:p}}};const qe=(0,b.A)(Qe,[["render",_e],["__scopeId","data-v-56597dfc"]]);var Ge=qe;const $e=e=>((0,l.Qi)("data-v-1f7f67a4"),e=e(),(0,l.jt)(),e),je=$e((()=>(0,l.Lk)("div",null,"网关层级为你的设备与外网的距离,你可以手动调整数值",-1))),Ye=$e((()=>(0,l.Lk)("div",null,"光猫映射了端口后,可以直接连接,把TcpPortMap调到第一",-1))),He={class:"t-c w-100"};function Je(e,a,t,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":a[5]||(a[5]=e=>n.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:`设置[${n.state.machineName}]网关`,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)((()=>[je])),_: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":a[0]||(a[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":a[1]||(a[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)((()=>[Ye])),_: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":a[2]||(a[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":a[3]||(a[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",He,[(0,l.bF)(h,{onClick:a[4]||(a[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","title"])}var Ze={props:["modelValue"],emits:["change","update:modelValue"],setup(e,{emit:a}){const t=ye(),n=(0,u.KR)(null),o=(0,u.Kh)({show:!0,machineName:t.value.current.device.MachineName,ruleForm:{RouteLevel:t.value.current.RouteLevel,RouteLevelPlus:t.value.current.RouteLevelPlus,PortMapWan:t.value.current.PortMapWan,PortMapLan:t.value.current.PortMapLan},rules:{}});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{a("update:modelValue",e)}),300)}));const r=()=>{const e=JSON.parse(JSON.stringify(t.value.current));e.RouteLevel=+o.ruleForm.RouteLevel,e.RouteLevelPlus=+o.ruleForm.RouteLevelPlus,e.PortMapWan=+o.ruleForm.PortMapWan,e.PortMapLan=+o.ruleForm.PortMapLan,(0,Te.KW)(e).then((()=>{o.show=!1,x.nk.success("已操作!"),a("change")})).catch((()=>{x.nk.error("操作失败!")}))};return{state:o,ruleFormRef:n,handleSave:r}}};const ea=(0,b.A)(Ze,[["render",Je],["__scopeId","data-v-1f7f67a4"]]);var aa=ea;const ta={key:0},la={class:"list forward"},na=["onClick"],oa={key:1},ra=["onClick"],da={key:0},sa={class:"list sforward"},ua={key:1};function ia(e,a,t,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)(l.FK,{key:1},[n.hasForwardShowSelf?((0,l.uX)(),(0,l.CE)("div",da,[(0,l.Lk)("ul",sa,[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,t)=>((0,l.uX)(),(0,l.CE)("li",{key:t,class:(0,L.C4)({red:!!e.Msg})},[(0,l.Lk)("a",{href:"javascript:;",onClick:a[0]||(a[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.Q3)("",!0)],64)):((0,l.uX)(),(0,l.CE)(l.FK,{key:0},[n.hasForwardShowOther?((0,l.uX)(),(0,l.CE)("div",ta,[(0,l.Lk)("ul",la,[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],((a,t)=>((0,l.uX)(),(0,l.CE)("li",{key:t},[(0,l.Lk)("a",{href:"javascript:;",onClick:a=>n.handleEdit(e.row.MachineId),class:(0,L.C4)({green:a.Started})},[(0,l.Lk)("span",null,[(0,l.Lk)("span",{class:(0,L.C4)({red:!!a.Msg})},(0,L.v_)(a.Port),3),(0,l.eW)(" -> "),(0,l.Lk)("span",{class:(0,L.C4)({red:!!a.TargetMsg})},(0,L.v_)(a.TargetEP),3)])],10,na),(0,l.Lk)("span",null," ("+(0,L.v_)(1<