diff --git a/src/linker.app/public/web/css/237.04563f19.css b/src/linker.app/public/web/css/237.04563f19.css new file mode 100644 index 00000000..f3fc9e79 --- /dev/null +++ b/src/linker.app/public/web/css/237.04563f19.css @@ -0,0 +1 @@ +#file-input[data-v-4892cd3c]{opacity:0;position:absolute;z-index:-1}.el-icon[data-v-4892cd3c]{font-size:1.6rem;vertical-align:middle;color:#555}#file-input[data-v-203e923a]{opacity:0;position:absolute;z-index:-1}.head[data-v-203e923a]{background-color:#f6f8fa;border-bottom:1px solid #d0d7de;box-shadow:1px 1px 4px rgba(0,0,0,.05);height:5rem;line-height:5rem}.head .logo[data-v-203e923a]{padding:.5rem 0 0 1rem;height:4.5rem}.head .logo img[data-v-203e923a]{vertical-align:top;height:4rem}.head .menu[data-v-203e923a]{padding-left:1rem;font-size:1.4rem}.head .menu li[data-v-203e923a]{box-sizing:border-box;padding:.5rem 0;margin-right:.2rem}.head .menu a[data-v-203e923a]{display:block;color:#333;padding:0 1rem;line-height:4rem;height:4rem}.head .menu a.router-link-active[data-v-203e923a],.head .menu a[data-v-203e923a]:hover{background-color:rgba(0,0,0,.1);font-weight:700;border-radius:4px}.head .menu a img[data-v-203e923a]{height:2rem;margin-right:.2rem;margin-top:1rem}.head .menu a span[data-v-203e923a]{vertical-align:top}.head .select[data-v-203e923a]{padding-right:1rem}.head .select .el-dropdown[data-v-203e923a]{vertical-align:middle}.head .select .el-dropdown .el-icon[data-v-203e923a]{vertical-align:bottom;font-size:2rem}.head .locale[data-v-203e923a]{padding-right:1rem}.head .locale .el-dropdown[data-v-203e923a]{vertical-align:middle}.head .locale .el-dropdown .el-icon[data-v-203e923a]{vertical-align:bottom}.head .image[data-v-203e923a]{padding-right:1rem}body.sunny{background-image:url(../img/bg.a2158f12.jpg);background-repeat:no-repeat;background-size:cover;background-position:bottom;position:absolute;left:0;top:0;right:0;bottom:0}body.sunny .app-wrap{background-color:hsla(0,0%,100%,.5)}body.sunny .status-wrap{background-color:hsla(0,0%,96%,.3)}body.sunny .status-wrap .copy a{color:#333}body.sunny .el-table{background-color:hsla(0,0%,100%,.5)}body.sunny .head{background-color:rgba(246,248,250,.5)}body.sunny .el-table tr,body.sunny .el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background-color:rgba(246,248,250,.2)}.el-pagination__total,body.sunny .el-pagination__sizes,body.sunny .status-wrap .copy a{color:#000}.status-api-wrap[data-v-52645186]{padding-right:1rem}.status-api-wrap.connected a[data-v-52645186]{color:green;font-weight:700}.status-api-wrap a[data-v-52645186]{color:#333}.status-api-wrap a .el-icon[data-v-52645186]{vertical-align:sub}.el-dropdown[data-v-33467232]{vertical-align:inherit;margin-right:1rem}.el-dropdown-link.connected[data-v-33467232]{color:green;font-weight:700}.el-dropdown-link .el-icon[data-v-33467232]{vertical-align:bottom}a[data-v-80718c08]{font-weight:700;position:absolute;right:1rem;bottom:90%;border:1px solid #ddd;background-color:#fff;z-index:9}a p[data-v-80718c08]{line-height:normal;white-space:nowrap}.head[data-v-f73b7458]{padding-bottom:1rem;text-align:center}.head .el-input[data-v-f73b7458]{width:20rem}.page[data-v-f73b7458]{padding-top:1rem}.page-wrap[data-v-f73b7458]{display:inline-block}.head[data-v-019c1d95]{padding-bottom:1rem;text-align:center}.head .el-input[data-v-019c1d95]{width:20rem}.page[data-v-019c1d95]{padding-top:1rem}.page-wrap[data-v-019c1d95]{display:inline-block}#map[data-v-3c0782be],#map[data-v-6f5477f6]{height:60rem}.flow-wrap[data-v-12cd5250]{padding:.4rem;font-weight:700;position:absolute;right:1rem;bottom:80%;border:1px solid #ddd;background-color:#fff;z-index:9}.flow-wrap>a[data-v-12cd5250],.flow-wrap>p[data-v-12cd5250]{line-height:normal;white-space:nowrap;display:block}a[data-v-6baf133f]{font-weight:700;line-height:3rem;display:inline-flex}a .el-icon[data-v-6baf133f]{margin-top:.8rem}a.download .el-icon[data-v-6baf133f]{font-weight:700;margin-left:.3rem}a.download .el-icon.loading[data-v-6baf133f]{animation:loading-6baf133f 1s linear infinite}@keyframes loading-6baf133f{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.status-server-wrap[data-v-2d85a782]{position:relative;padding-right:.5rem}.status-server-wrap a[data-v-2d85a782]{color:#333}.status-server-wrap a+a[data-v-2d85a782]{margin-left:.6rem}.status-server-wrap .el-icon[data-v-2d85a782]{vertical-align:text-bottom}.el-col[data-v-63a22370]{text-align:left}.status-export-wrap[data-v-3ca1e8b8]{padding-right:1rem}.status-export-wrap a[data-v-3ca1e8b8]{color:#333}.status-export-wrap a .el-icon[data-v-3ca1e8b8]{vertical-align:sub}.status-export-wrap .el-col[data-v-3ca1e8b8]{text-align:left}a[data-v-18dc4cc8]{color:#666;text-decoration:underline}a.green[data-v-18dc4cc8]{color:green;font-weight:700}a.download[data-v-18dc4cc8]{margin-left:.6rem}a.download .el-icon[data-v-18dc4cc8]{vertical-align:middle;font-weight:700;margin-left:.3rem}a.download .el-icon.loading[data-v-18dc4cc8]{animation:loading-18dc4cc8 1s linear infinite}a.download+a.download[data-v-18dc4cc8]{margin-left:.2rem}@keyframes loading-18dc4cc8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.status-wrap[data-v-ab734c72]{border-top:1px solid #ddd;background-color:#f5f5f5;height:3rem;line-height:3rem;font-size:1.2rem;color:#555}.status-wrap .pay[data-v-ab734c72]{font-size:xxx-large}.status-wrap .pay img[data-v-ab734c72]{width:100%;margin:0}.status-wrap .copy[data-v-ab734c72]{padding-left:.5rem}.status-wrap .copy a[data-v-ab734c72]{color:#555;margin-right:1rem}.status-wrap a.memory[data-v-ab734c72]{margin-right:.6rem}.status-wrap a.memory img[data-v-ab734c72]{height:2rem;vertical-align:sub;margin-right:.1rem}.body[data-v-503d4124]{padding:1rem 0 0 0}.footer[data-v-503d4124]{padding:1rem 0}.phone .el-dialog__body .el-col .el-form-item[data-v-503d4124]:last-child{margin-bottom:.6rem}.body[data-v-8d4253a6]{padding:1rem 0 0 0}.footer[data-v-8d4253a6]{padding:1rem 0}.body[data-v-ce07310a],.el-card+.el-card[data-v-8d4253a6]{margin-top:1rem}.footer[data-v-ce07310a]{margin-top:2rem}@media screen and (max-width:1000px){body .app-wrap[data-v-59076a44]{position:absolute;left:0;top:0;right:auto;bottom:auto;height:100%;width:100%;transform:none;max-width:100%;border:0}}.app-wrap[data-v-59076a44]{box-sizing:border-box;background-color:#fff;border:1px solid #d0d7de;width:81rem;max-width:80%;height:90%;position:absolute;left:50%;top:50%;transform:translateX(-50%) translateY(-50%)} \ No newline at end of file diff --git a/src/linker.app/public/web/css/377.f1f2e77e.css b/src/linker.app/public/web/css/377.f1f2e77e.css new file mode 100644 index 00000000..821dd985 --- /dev/null +++ b/src/linker.app/public/web/css/377.f1f2e77e.css @@ -0,0 +1 @@ +.table-sort th[data-v-107f04ae]{border-bottom:0}.show-columns[data-v-107f04ae]{vertical-align:middle;font-size:1.2rem}.show-columns .el-icon[data-v-107f04ae]{vertical-align:bottom;font-size:1.2rem}a[data-v-18dc4cc8]{color:#666;text-decoration:underline}a.green[data-v-18dc4cc8]{color:green;font-weight:700}a.download[data-v-18dc4cc8]{margin-left:.6rem}a.download .el-icon[data-v-18dc4cc8]{vertical-align:middle;font-weight:700;margin-left:.3rem}a.download .el-icon.loading[data-v-18dc4cc8]{animation:loading-18dc4cc8 1s linear infinite}a.download+a.download[data-v-18dc4cc8]{margin-left:.2rem}@keyframes loading-18dc4cc8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}img.system[data-v-cdb79646]{height:1.6rem;vertical-align:middle;margin-left:.4rem}.self[data-v-cdb79646]{color:#d400ff}.self .el-icon[data-v-cdb79646]{vertical-align:text-bottom}.ipaddress span[data-v-b66b6858]{vertical-align:middle}.el-input[data-v-b66b6858]{width:12rem;margin-right:.6rem}.el-col[data-v-63a22370]{text-align:left}.connect-point .el-loading-mask{background-color:transparent}.connect-point .el-loading-spinner{width:100%;height:100%;margin:0;top:0}.connect-point .el-loading-spinner .circular{width:100%;height:100%;vertical-align:top}.connect-point .el-loading-spinner .path{stroke-width:6;stroke:green}div.connect-point[data-v-064c2370]{margin:-.2rem .3rem 0 -1.4rem;position:absolute}span.connect-point[data-v-064c2370]{width:.9rem;height:.9rem;border-radius:50%;display:inline-block;vertical-align:middle;background-color:#eee;border:1px solid #ddd;cursor:pointer;transition:.3s}span.connect-point[data-v-064c2370]:hover{transform:scale(2)}span.connect-point.p2p[data-v-064c2370]{background-color:#01c901;border:1px solid #049538}span.connect-point.relay[data-v-064c2370]{background-color:#e3e811;border:1px solid #b3c410}span.connect-point.node[data-v-064c2370]{background-color:#09dda9;border:1px solid #0cac90}.el-icon.loading[data-v-c75f41f4],a.loading[data-v-c75f41f4]{vertical-align:middle;font-weight:700;animation:loading-c75f41f4 1s linear infinite}.el-switch.is-disabled[data-v-c75f41f4]{opacity:1}.el-input[data-v-c75f41f4]{width:8rem}.delay[data-v-c75f41f4]{position:absolute;right:0;bottom:0;line-height:normal}.switch-btn[data-v-c75f41f4]{font-size:1.5rem}.any[data-v-c75f41f4]{position:absolute;left:-7px;top:-2px;line-height:normal}.any.green[data-v-c75f41f4]{background:linear-gradient(270deg,#caff00,green,#0d6d23,#e38a00,green);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:hsla(0,0%,100%,0)}@keyframes loading-c75f41f4{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.remark[data-v-1f1a4aca]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-switch.is-disabled[data-v-2eb35cd0]{opacity:1}.wrap[data-v-2eb35cd0]{min-height:40rem}.foot[data-v-87d2a32c]{padding-top:2rem}.el-switch.is-disabled[data-v-67ed3552]{opacity:1}.calc span[data-v-67ed3552]{display:inline-block}.calc span.label[data-v-67ed3552]{width:6rem}.el-icon.loading[data-v-878a681e],a.loading[data-v-878a681e]{vertical-align:middle;font-weight:700;animation:loading-878a681e 1s linear infinite}.el-switch.is-disabled[data-v-878a681e]{opacity:1}.el-input[data-v-878a681e]{width:8rem}.switch-btn[data-v-878a681e]{font-size:1.5rem}@keyframes loading-878a681e{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.el-switch.is-disabled[data-v-2ea91b4b]{opacity:1}.upgrade-wrap[data-v-2ea91b4b]{border:1px solid #ddd;margin-bottom:2rem;padding:1rem}.el-switch.is-disabled[data-v-0e8bb9bd]{opacity:1}.green[data-v-0e8bb9bd]{font-weight:700}img.system[data-v-0e8bb9bd],span.nat[data-v-0e8bb9bd]{height:1.4rem;margin-right:.4rem;border:1px solid #eee;line-height:1.4rem;vertical-align:middle}span.nat[data-v-0e8bb9bd]{display:inline-block;padding:0 .2rem;margin-right:0;font-family:fantasy}.el-switch.is-disabled[data-v-6941c158]{opacity:1}ul li[data-v-6941c158]{padding-left:2rem}a[data-v-26db2314]{text-decoration:underline}a+a[data-v-26db2314]{margin-left:1rem}a.green[data-v-26db2314]{font-weight:700}.head[data-v-aaafd500]{padding-bottom:1rem}.green[data-v-aaafd500]{color:green;font-weight:700}.error[data-v-aaafd500]{font-weight:700}.error .el-icon[data-v-aaafd500]{vertical-align:text-bottom}.head[data-v-010bdab6]{padding-bottom:1rem}.error[data-v-010bdab6]{font-weight:700}.error .el-icon[data-v-010bdab6]{vertical-align:text-bottom}.plan .el-icon[data-v-010bdab6]{vertical-align:middle;margin-right:.4rem}.head[data-v-0c4e4760]{padding-bottom:1rem}.blue[data-v-0c4e4760]{color:#409eff}.dropdown[data-v-0c4e4760]{border:1px solid #ddd;padding:.4rem;font-size:1.3rem;border-radius:.4rem;position:relative}.dropdown .el-icon[data-v-0c4e4760]{vertical-align:middle}.dropdown .badge[data-v-0c4e4760]{position:absolute;right:-1rem;top:-50%;border-radius:10px;background-color:#f1ae05;color:#fff;padding:.2rem .6rem;font-size:1.2rem}.el-icon.loading[data-v-0c4e4760]{margin-left:.3rem;vertical-align:middle;font-weight:700;animation:loading-0c4e4760 1s linear infinite}@keyframes loading-0c4e4760{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.dropdown[data-v-8c55c3c4]{border:1px solid #ddd;padding:.4rem;font-size:1.3rem;border-radius:.4rem;position:relative}.dropdown .el-icon[data-v-8c55c3c4]{vertical-align:middle}.dropdown .badge[data-v-8c55c3c4]{position:absolute;right:-1rem;top:-50%;border-radius:10px;background-color:#f1ae05;color:#fff;padding:.2rem .6rem;font-size:1.2rem}.el-form-item[data-v-c9c6ff1a]{margin-bottom:1rem}.head[data-v-0679a99a]{margin-bottom:1rem;color:#555;border:1px solid #eee;padding:0 1rem 1rem 1rem}.firewall.el-table .action-1{color:green}.firewall.el-table .action-2{color:#c83f08}.el-transfer.src-tranfer .el-transfer__buttons .el-button{display:block}.el-transfer.src-tranfer .el-transfer__buttons .el-button:nth-child(2){margin:1rem 0 0 0}.el-form-item[data-v-3f022378]{margin-bottom:1rem}.head[data-v-70ca2b5a]{margin-bottom:1rem;color:#555;border:1px solid #eee;padding:0 1rem 1rem 1rem}.firewall.el-table .run-btn img{height:2rem;vertical-align:middle}.table-sort.el-table th.el-table__cell.is-leaf{border-bottom:0}.table-sort.el-table .el-table__inner-wrapper:before{height:0}.home-list-wrap[data-v-0e366c4c]{padding:1rem}.home-list-wrap .page[data-v-0e366c4c]{padding-top:1rem}.home-list-wrap .page-wrap[data-v-0e366c4c]{display:inline-block} \ No newline at end of file diff --git a/src/linker.app/public/web/index.html b/src/linker.app/public/web/index.html index 811fe1be..4bbb1e9e 100644 --- a/src/linker.app/public/web/index.html +++ b/src/linker.app/public/web/index.html @@ -1 +1 @@ -linker.web
\ No newline at end of file +linker.web
\ No newline at end of file diff --git a/src/linker.app/public/web/js/237.9b10edd4.js b/src/linker.app/public/web/js/237.9b10edd4.js new file mode 100644 index 00000000..2ce165c9 --- /dev/null +++ b/src/linker.app/public/web/js/237.9b10edd4.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[237],{61953:function(e,l,a){a.r(l),a.d(l,{default:function(){return vl}});var r=a(56768);const t={class:"app-wrap flex flex-column flex-nowrap",id:"app-wrap"},o={class:"head"},u={class:"body flex-1 relative",ref:"wrap"},s={class:"home absolute"},n={class:"status"};function d(e,l,a,d,m,i){const c=(0,r.g2)("Head"),f=(0,r.g2)("router-view"),v=(0,r.g2)("Status"),p=(0,r.g2)("Install");return(0,r.uX)(),(0,r.CE)("div",t,[(0,r.Lk)("div",o,[(0,r.bF)(c)]),(0,r.Lk)("div",u,[(0,r.Lk)("div",s,[(0,r.bF)(f)])],512),(0,r.Lk)("div",n,[(0,r.bF)(v,{config:!0}),(0,r.bF)(p)])])}a(44114);var m=a(24232),i=a.p+"img/logo.c20f799b.png",c=a.p+"img/shouye.95a3b86e.svg",f=a.p+"img/fuwuqi.3b385506.svg",v=a.p+"img/dadong.e6fd78bf.svg",p=a.p+"img/login.0201d499.svg",b=a.p+"img/anquan.5f8d5e47.svg",g=a.p+"img/qidong.d8a368a0.svg",k=a.p+"img/rizhi.b3494c50.svg",F=a.p+"img/shuaxin2.b46145e2.svg";const h=e=>((0,r.Qi)("data-v-203e923a"),e=e(),(0,r.jt)(),e),w={class:"head flex"},_={class:"logo"},y=h((()=>(0,r.Lk)("img",{src:i,alt:""},null,-1))),S={class:"menu flex-1"},K={key:0,class:"flex"},V=h((()=>(0,r.Lk)("img",{src:c},null,-1))),C={key:0},L=h((()=>(0,r.Lk)("img",{src:f},null,-1))),P={key:1},W=h((()=>(0,r.Lk)("img",{src:v},null,-1))),x={key:2},X=h((()=>(0,r.Lk)("img",{src:p},null,-1))),E={key:3},Q=h((()=>(0,r.Lk)("img",{src:b},null,-1))),A={key:4},U=h((()=>(0,r.Lk)("img",{src:g},null,-1))),D={key:5},$=h((()=>(0,r.Lk)("img",{src:k},null,-1))),I={key:1,class:"flex"},j={key:0},q=h((()=>(0,r.Lk)("img",{src:c},null,-1))),N={key:1},O=h((()=>(0,r.Lk)("img",{src:f},null,-1))),R={key:2},T=h((()=>(0,r.Lk)("img",{src:v},null,-1))),B={key:3},J=h((()=>(0,r.Lk)("img",{src:p},null,-1))),z={key:4},G=h((()=>(0,r.Lk)("img",{src:b},null,-1))),H={key:5},Y=h((()=>(0,r.Lk)("img",{src:g},null,-1))),M={key:6},Z=h((()=>(0,r.Lk)("img",{src:k},null,-1))),ee=h((()=>(0,r.Lk)("img",{src:F},null,-1))),le={key:0,class:"select"},ae={class:"el-dropdown-link"},re=h((()=>(0,r.Lk)("img",{src:c,height:"20",style:{"vertical-align":"text-top"}},null,-1))),te=h((()=>(0,r.Lk)("img",{src:f,height:"20",style:{"vertical-align":"text-top"}},null,-1))),oe=h((()=>(0,r.Lk)("img",{src:v,height:"20",style:{"vertical-align":"text-top"}},null,-1))),ue=h((()=>(0,r.Lk)("img",{src:p,height:"20",style:{"vertical-align":"text-top"}},null,-1))),se=h((()=>(0,r.Lk)("img",{src:b,height:"20",style:{"vertical-align":"text-top"}},null,-1))),ne=h((()=>(0,r.Lk)("img",{src:g,height:"20",style:{"vertical-align":"text-top"}},null,-1))),de=h((()=>(0,r.Lk)("img",{src:k,height:"20",style:{"vertical-align":"text-top"}},null,-1))),me={key:1,class:"locale"},ie={class:"el-dropdown-link"},ce={key:2,class:"image"};function fe(e,l,a,t,o,u){const s=(0,r.g2)("router-link"),n=(0,r.g2)("Operation"),d=(0,r.g2)("el-icon"),i=(0,r.g2)("el-dropdown-item"),c=(0,r.g2)("el-dropdown-menu"),f=(0,r.g2)("el-dropdown"),v=(0,r.g2)("ArrowDown"),p=(0,r.g2)("Background");return(0,r.uX)(),(0,r.CE)("div",null,[(0,r.Lk)("div",w,[(0,r.Lk)("div",_,[(0,r.bF)(s,{to:{name:"FullIndex"}},{default:(0,r.k6)((()=>[y])),_:1})]),(0,r.Lk)("div",S,[t.globalData.isPc?((0,r.uX)(),(0,r.CE)("ul",K,[(0,r.Lk)("li",null,[(0,r.bF)(s,{to:{name:"FullIndex"}},{default:(0,r.k6)((()=>[V,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.home")),1)])),_:1})]),t.hasConfig?((0,r.uX)(),(0,r.CE)("li",C,[(0,r.bF)(s,{to:{name:"FullServers"}},{default:(0,r.k6)((()=>[L,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.server")),1)])),_:1})])):(0,r.Q3)("",!0),t.hasTransport?((0,r.uX)(),(0,r.CE)("li",P,[(0,r.bF)(s,{to:{name:"FullTransport"}},{default:(0,r.k6)((()=>[W,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.protocol")),1)])),_:1})])):(0,r.Q3)("",!0),t.hasAction?((0,r.uX)(),(0,r.CE)("li",x,[(0,r.bF)(s,{to:{name:"FullAction"}},{default:(0,r.k6)((()=>[X,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.action")),1)])),_:1})])):(0,r.Q3)("",!0),t.hasFirewall?((0,r.uX)(),(0,r.CE)("li",E,[(0,r.bF)(s,{to:{name:"FullFirewall"}},{default:(0,r.k6)((()=>[Q,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.firewall")),1)])),_:1})])):(0,r.Q3)("",!0),t.hasWakeupSelf?((0,r.uX)(),(0,r.CE)("li",A,[(0,r.bF)(s,{to:{name:"FullWakeup"}},{default:(0,r.k6)((()=>[U,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.wakeup")),1)])),_:1})])):(0,r.Q3)("",!0),t.hasLogger?((0,r.uX)(),(0,r.CE)("li",D,[(0,r.bF)(s,{to:{name:"FullLogger"}},{default:(0,r.k6)((()=>[$,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.logger")),1)])),_:1})])):(0,r.Q3)("",!0)])):((0,r.uX)(),(0,r.CE)("ul",I,["FullIndex"==t.route.name?((0,r.uX)(),(0,r.CE)("li",j,[(0,r.bF)(s,{to:{name:"FullIndex"}},{default:(0,r.k6)((()=>[q,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.home")),1)])),_:1})])):(0,r.Q3)("",!0),t.hasConfig&&"FullServers"==t.route.name?((0,r.uX)(),(0,r.CE)("li",N,[(0,r.bF)(s,{to:{name:"FullServers"}},{default:(0,r.k6)((()=>[O,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.server")),1)])),_:1})])):(0,r.Q3)("",!0),t.hasTransport&&"FullTransport"==t.route.name?((0,r.uX)(),(0,r.CE)("li",R,[(0,r.bF)(s,{to:{name:"FullTransport"}},{default:(0,r.k6)((()=>[T,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.protocol")),1)])),_:1})])):(0,r.Q3)("",!0),t.hasAction&&"FullAction"==t.route.name?((0,r.uX)(),(0,r.CE)("li",B,[(0,r.bF)(s,{to:{name:"FullAction"}},{default:(0,r.k6)((()=>[J,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.action")),1)])),_:1})])):(0,r.Q3)("",!0),t.hasFirewall&&"FullFirewall"==t.route.name?((0,r.uX)(),(0,r.CE)("li",z,[(0,r.bF)(s,{to:{name:"FullFirewall"}},{default:(0,r.k6)((()=>[G,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.firewall")),1)])),_:1})])):(0,r.Q3)("",!0),t.hasWakeupSelf&&"FullWakeup"==t.route.name?((0,r.uX)(),(0,r.CE)("li",H,[(0,r.bF)(s,{to:{name:"FullWakeup"}},{default:(0,r.k6)((()=>[Y,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.wakeup")),1)])),_:1})])):(0,r.Q3)("",!0),t.hasLogger&&"FullLogger"==t.route.name?((0,r.uX)(),(0,r.CE)("li",M,[(0,r.bF)(s,{to:{name:"FullLogger"}},{default:(0,r.k6)((()=>[Z,(0,r.eW)(),(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.logger")),1)])),_:1})])):(0,r.Q3)("",!0),(0,r.Lk)("li",null,[(0,r.Lk)("a",{href:"javascript:void(0);",onClick:l[0]||(l[0]=(...e)=>t.refresh&&t.refresh(...e))},[ee,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.refresh")),1)])])]))]),t.globalData.isPhone?((0,r.uX)(),(0,r.CE)("div",le,[(0,r.bF)(f,null,{dropdown:(0,r.k6)((()=>[(0,r.bF)(c,{class:"select-menu"},{default:(0,r.k6)((()=>[(0,r.bF)(i,null,{default:(0,r.k6)((()=>[(0,r.bF)(s,{to:{name:"FullIndex"}},{default:(0,r.k6)((()=>[re,(0,r.eW)(" "+(0,m.v_)(e.$t("head.home")),1)])),_:1})])),_:1}),t.hasConfig?((0,r.uX)(),(0,r.Wv)(i,{key:0},{default:(0,r.k6)((()=>[(0,r.bF)(s,{to:{name:"FullServers"}},{default:(0,r.k6)((()=>[te,(0,r.eW)(" "+(0,m.v_)(e.$t("head.server")),1)])),_:1})])),_:1})):(0,r.Q3)("",!0),t.hasTransport?((0,r.uX)(),(0,r.Wv)(i,{key:1},{default:(0,r.k6)((()=>[(0,r.bF)(s,{to:{name:"FullTransport"}},{default:(0,r.k6)((()=>[oe,(0,r.eW)(" "+(0,m.v_)(e.$t("head.protocol")),1)])),_:1})])),_:1})):(0,r.Q3)("",!0),t.hasAction?((0,r.uX)(),(0,r.Wv)(i,{key:2},{default:(0,r.k6)((()=>[(0,r.bF)(s,{to:{name:"FullAction"}},{default:(0,r.k6)((()=>[ue,(0,r.eW)(" "+(0,m.v_)(e.$t("head.action")),1)])),_:1})])),_:1})):(0,r.Q3)("",!0),t.hasFirewall?((0,r.uX)(),(0,r.Wv)(i,{key:3},{default:(0,r.k6)((()=>[(0,r.bF)(s,{to:{name:"FullFirewall"}},{default:(0,r.k6)((()=>[se,(0,r.eW)(" "+(0,m.v_)(e.$t("head.firewall")),1)])),_:1})])),_:1})):(0,r.Q3)("",!0),t.hasWakeupSelf?((0,r.uX)(),(0,r.Wv)(i,{key:4},{default:(0,r.k6)((()=>[(0,r.bF)(s,{to:{name:"FullWakeup"}},{default:(0,r.k6)((()=>[ne,(0,r.eW)(" "+(0,m.v_)(e.$t("head.wakeup")),1)])),_:1})])),_:1})):(0,r.Q3)("",!0),t.hasLogger?((0,r.uX)(),(0,r.Wv)(i,{key:5},{default:(0,r.k6)((()=>[(0,r.bF)(s,{to:{name:"FullLogger"}},{default:(0,r.k6)((()=>[de,(0,r.eW)(" "+(0,m.v_)(e.$t("head.logger")),1)])),_:1})])),_:1})):(0,r.Q3)("",!0)])),_:1})])),default:(0,r.k6)((()=>[(0,r.Lk)("span",ae,[(0,r.bF)(d,null,{default:(0,r.k6)((()=>[(0,r.bF)(n)])),_:1})])])),_:1})])):(0,r.Q3)("",!0),t.globalData.isPc?((0,r.uX)(),(0,r.CE)("div",me,[(0,r.bF)(f,null,{dropdown:(0,r.k6)((()=>[(0,r.bF)(c,null,{default:(0,r.k6)((()=>[((0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(t.localeOptions,((e,l)=>((0,r.uX)(),(0,r.Wv)(i,{onClick:e=>t.handleLocale(l)},{default:(0,r.k6)((()=>[(0,r.eW)((0,m.v_)(e),1)])),_:2},1032,["onClick"])))),256))])),_:1})])),default:(0,r.k6)((()=>[(0,r.Lk)("span",ie,[(0,r.eW)((0,m.v_)(t.localeOptions[t.locale])+" ",1),(0,r.bF)(d,null,{default:(0,r.k6)((()=>[(0,r.bF)(v)])),_:1})])])),_:1})])):(0,r.Q3)("",!0),t.globalData.isPc?((0,r.uX)(),(0,r.CE)("div",ce,[(0,r.bF)(p,{name:"full"})])):(0,r.Q3)("",!0)])])}var ve=a(57477),pe=a(53830),be=a(90144),ge=a(5096),ke=a(49287),Fe=a(22773),he=a(81387),we={components:{Background:ge.A,Operation:ve.IaS,ArrowDown:ve.yd$},setup(){const e=(0,he.lq)(),l=(0,pe.B)(),a=(0,r.EW)((()=>l.value.hasAccess("Config"))),t=(0,r.EW)((()=>l.value.hasAccess("LoggerShow"))),o=(0,r.EW)((()=>l.value.hasAccess("Transport"))),u=(0,r.EW)((()=>l.value.hasAccess("Action"))),s=(0,r.EW)((()=>l.value.hasAccess("Group"))),n=(0,r.EW)((()=>l.value.hasAccess("FirewallSelf"))),d=(0,r.EW)((()=>l.value.hasAccess("WakeupSelf"))),m=(0,be.KR)(ke.Y),{changeLocale:i,currentLocale:c}=(0,Fe.A)(),f=(0,r.EW)({get(){return c.value},set(e){i(e)}}),v=e=>{f.value=e},p=()=>{window.location.reload()};return{route:e,globalData:l,hasConfig:a,hasGroup:s,hasLogger:t,hasTransport:o,hasAction:u,hasFirewall:n,hasWakeupSelf:d,localeOptions:m,locale:f,handleLocale:v,refresh:p}}},_e=a(71241);const ye=(0,_e.A)(we,[["render",fe],["__scopeId","data-v-203e923a"]]);var Se=ye,Ke=a(69083);function Ve(e,l,a,t,o,u){const s=(0,r.g2)("Input"),n=(0,r.g2)("el-tab-pane"),d=(0,r.g2)("Copy"),m=(0,r.g2)("Save"),i=(0,r.g2)("el-tabs"),c=(0,r.g2)("el-dialog");return(0,r.uX)(),(0,r.CE)("div",null,[(0,r.bF)(c,{modelValue:t.state.show,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.show=e),title:"初始化配置",width:"700",top:"2vh"},{default:(0,r.k6)((()=>[(0,r.Lk)("div",null,[(0,r.bF)(i,{type:"border-card"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"手动输入"},{default:(0,r.k6)((()=>[(0,r.bF)(s)])),_:1}),(0,r.bF)(n,{label:"粘贴配置"},{default:(0,r.k6)((()=>[(0,r.bF)(d)])),_:1}),(0,r.bF)(n,{label:"在线导入"},{default:(0,r.k6)((()=>[(0,r.bF)(m)])),_:1})])),_:1})])])),_:1},8,["modelValue"])])}const Ce=e=>((0,r.Qi)("data-v-ce07310a"),e=e(),(0,r.jt)(),e),Le={class:"head"},Pe={class:"body"},We=Ce((()=>(0,r.Lk)("div",{class:"t-c"},"完成保存后,请重启软件",-1))),xe={class:"footer t-c"};function Xe(e,l,a,t,o,u){const s=(0,r.g2)("el-step"),n=(0,r.g2)("el-steps"),d=(0,r.g2)("Common"),m=(0,r.g2)("el-card"),i=(0,r.g2)("Server"),c=(0,r.g2)("Client"),f=(0,r.g2)("el-button");return(0,r.uX)(),(0,r.CE)("div",null,[(0,r.Lk)("div",Le,[(0,r.bF)(n,{active:t.step.step,"finish-status":"success"},{default:(0,r.k6)((()=>[((0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(t.state.steps,((e,l)=>((0,r.uX)(),(0,r.Wv)(s,{title:e},null,8,["title"])))),256))])),_:1},8,["active"])]),(0,r.Lk)("div",Pe,[1==t.step.step?((0,r.uX)(),(0,r.Wv)(m,{key:0,shadow:"never"},{default:(0,r.k6)((()=>[(0,r.bF)(d,{ref:"currentDom"},null,512)])),_:1})):(0,r.Q3)("",!0),2==t.step.step?((0,r.uX)(),(0,r.Wv)(m,{key:1,shadow:"never"},{default:(0,r.k6)((()=>[(0,r.bF)(i,{ref:"currentDom"},null,512)])),_:1})):(0,r.Q3)("",!0),3==t.step.step?((0,r.uX)(),(0,r.Wv)(m,{key:2,shadow:"never"},{default:(0,r.k6)((()=>[(0,r.bF)(c,{ref:"currentDom"},null,512)])),_:1})):(0,r.Q3)("",!0),4==t.step.step?((0,r.uX)(),(0,r.Wv)(m,{key:3,shadow:"never"},{default:(0,r.k6)((()=>[We])),_:1})):(0,r.Q3)("",!0)]),(0,r.Lk)("div",xe,[(0,r.bF)(f,{disabled:t.step.step<=1,onClick:t.handlePrev},{default:(0,r.k6)((()=>[(0,r.eW)("上一步")])),_:1},8,["disabled","onClick"]),t.step.step[(0,r.eW)("下一步")])),_:1},8,["onClick"])):((0,r.uX)(),(0,r.Wv)(f,{key:1,type:"primary",onClick:t.handleSave},{default:(0,r.k6)((()=>[(0,r.eW)("完成")])),_:1},8,["onClick"]))])])}var Ee=a(88835),Qe=a(51219);const Ae={class:"t-c"};function Ue(e,l,a,t,o,u){const s=(0,r.g2)("el-checkbox");return(0,r.uX)(),(0,r.CE)("div",Ae,[(0,r.bF)(s,{modelValue:t.state.form.client,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.form.client=e),label:"作为客户端"},null,8,["modelValue"]),t.globalData.isPc?((0,r.uX)(),(0,r.Wv)(s,{key:0,modelValue:t.state.form.server,"onUpdate:modelValue":l[1]||(l[1]=e=>t.state.form.server=e),label:"作为服务端"},null,8,["modelValue"])):(0,r.Q3)("",!0)])}var De={name:"Common",setup(){const e=(0,pe.B)(),l=(0,r.WQ)("step"),a=(0,be.Kh)({form:{client:l.value.form.common.client||l.value.json.Common&&l.value.json.Common.client||!0,server:l.value.form.common.server||l.value.json.Common&&l.value.json.Common.server||!1}}),t=e=>new Promise(((e,l)=>{a.form.client||a.form.server?e({json:{Common:{client:a.form.client,server:a.form.server,modes:[a.form.client?"client":"",a.form.server?"server":""].filter((e=>!!e))}},form:{common:JSON.parse(JSON.stringify(a.form))}}):(Qe.nk.error("请选择客户端或服务端"),l())}));return{state:a,globalData:e,handleValidate:t}}};const $e=(0,_e.A)(De,[["render",Ue]]);var Ie=$e;function je(e,l,a,t,o,u){const s=(0,r.g2)("el-input"),n=(0,r.g2)("el-form-item"),d=(0,r.g2)("el-col"),m=(0,r.g2)("el-row"),i=(0,r.g2)("el-checkbox"),c=(0,r.g2)("el-form");return(0,r.uX)(),(0,r.CE)("div",null,[(0,r.bF)(c,{ref:"formDom",model:t.state.form,rules:t.state.rules,"label-width":"8rem"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"","label-width":"0"},{default:(0,r.k6)((()=>[(0,r.bF)(m,{class:"w-100"},{default:(0,r.k6)((()=>[(0,r.bF)(d,{sm:12,xs:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"机器名",prop:"name"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{modelValue:t.state.form.name,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.form.name=e),maxlength:"32","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),t.globalData.isPc?((0,r.uX)(),(0,r.Wv)(n,{key:0,label:"","label-width":"0"},{default:(0,r.k6)((()=>[(0,r.bF)(m,{class:"w-100"},{default:(0,r.k6)((()=>[t.globalData.isPc?((0,r.uX)(),(0,r.Wv)(d,{key:0,sm:12,xs:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"管理端口",prop:"web"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{modelValue:t.state.form.web,"onUpdate:modelValue":l[1]||(l[1]=e=>t.state.form.web=e)},null,8,["modelValue"])])),_:1})])),_:1})):(0,r.Q3)("",!0),(0,r.bF)(d,{sm:12,xs:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"管理密码",prop:"password"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{type:"password",modelValue:t.state.form.password,"onUpdate:modelValue":l[2]||(l[2]=e=>t.state.form.password=e),"show-password":"",maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1})):(0,r.Q3)("",!0),(0,r.bF)(n,{label:"","label-width":"0"},{default:(0,r.k6)((()=>[(0,r.bF)(m,{class:"w-100"},{default:(0,r.k6)((()=>[(0,r.bF)(d,{sm:12,xs:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"分组名",prop:"groupid"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{modelValue:t.state.form.groupid,"onUpdate:modelValue":l[3]||(l[3]=e=>t.state.form.groupid=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,r.bF)(d,{sm:12,xs:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"分组密码",prop:"groupPassword"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{modelValue:t.state.form.groupPassword,"onUpdate:modelValue":l[4]||(l[4]=e=>t.state.form.groupPassword=e),type:"password","show-password":"",maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,r.bF)(n,{label:"","label-width":"0"},{default:(0,r.k6)((()=>[(0,r.bF)(m,{class:"w-100"},{default:(0,r.k6)((()=>[(0,r.bF)(d,{span:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{"label-width":"8rem",prop:"hasServer"},{default:(0,r.k6)((()=>[(0,r.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,r.uX)(),(0,r.Wv)(n,{key:1,label:"","label-width":"0"},{default:(0,r.k6)((()=>[(0,r.bF)(m,{class:"w-100"},{default:(0,r.k6)((()=>[(0,r.bF)(d,{sm:12,xs:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"信标服务",prop:"server"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{modelValue:t.state.form.server,"onUpdate:modelValue":l[6]||(l[6]=e=>t.state.form.server=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,r.bF)(d,{sm:12,xs:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"信标密钥",prop:"serverSecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{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,r.Q3)("",!0),t.state.form.hasServer?((0,r.uX)(),(0,r.Wv)(n,{key:2,label:"","label-width":"0"},{default:(0,r.k6)((()=>[(0,r.bF)(m,{class:"w-100"},{default:(0,r.k6)((()=>[(0,r.bF)(d,{sm:12,xs:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"穿透密钥",prop:"sForwardSecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{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,r.bF)(d,{sm:12,xs:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"中继密钥",prop:"relaySecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{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,r.Q3)("",!0),t.state.form.hasServer?((0,r.uX)(),(0,r.Wv)(n,{key:3,label:"","label-width":"0"},{default:(0,r.k6)((()=>[(0,r.bF)(m,{class:"w-100"},{default:(0,r.k6)((()=>[(0,r.bF)(d,{sm:12,xs:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"更新密钥",prop:"updaterSecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{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}),t.globalData.isPc?((0,r.uX)(),(0,r.Wv)(d,{key:0,sm:12,xs:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"占位"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{disabled:"",maxlength:"36","show-word-limit":""})])),_:1})])),_:1})):(0,r.Q3)("",!0)])),_:1})])),_:1})):(0,r.Q3)("",!0)])),_:1},8,["model","rules"])])}var qe={setup(e){const l=(0,r.WQ)("step"),a=(0,pe.B)(),t=(0,be.Kh)({form:{name:l.value.form.client.name||a.value.config.Client.Name,groupid:l.value.form.client.groupid||a.value.config.Client.Group.Id,groupPassword:l.value.form.client.groupPassword||a.value.config.Client.Group.Password,web:l.value.form.client.web||a.value.config.Client.CApi.WebPort,password:l.value.form.client.password||a.value.config.Client.CApi.ApiPassword,hasServer:l.value.form.client.hasServer||!1,server:l.value.form.client.server||a.value.config.Client.Server.Host,serverSecretKey:l.value.form.client.serverSecretKey||a.value.config.Client.ServerSecretKey,sForwardSecretKey:l.value.form.client.sForwardSecretKey||a.value.config.Client.SForward.SecretKey,relaySecretKey:l.value.form.client.relaySecretKey||(a.value.config.Client.Relay.Servers[0]||{SecretKey:"snltty"}).SecretKey,updaterSecretKey:l.value.form.client.updaterSecretKey||a.value.config.Client.Updater.SecretKey},rules:{name:[{required:!0,message:"必填",trigger:"blur"}],groupid:[{required:!0,message:"必填",trigger:"blur"}],groupPassword:[{required:!0,message:"必填",trigger:"blur"}],password:[{required:!0,message:"必填",trigger:"blur"}],web:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}]}}),o=(0,be.KR)(null),u=()=>new Promise(((e,l)=>{o.value.validate((a=>{a?e({json:{Client:{name:t.form.name,groupid:t.form.groupid,groupPassword:t.form.groupPassword,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,r.sV)((()=>{0==l.value.json.Common.client&&(l.value.step+=l.value.increment)})),{state:t,globalData:a,handleValidate:u,formDom:o}}};const Ne=(0,_e.A)(qe,[["render",je],["__scopeId","data-v-503d4124"]]);var Oe=Ne;const Re=e=>((0,r.Qi)("data-v-8d4253a6"),e=e(),(0,r.jt)(),e),Te=Re((()=>(0,r.Lk)("div",{class:"t-c w-100"},"端口为0则不监听",-1)));function Be(e,l,a,t,o,u){const s=(0,r.g2)("el-form-item"),n=(0,r.g2)("el-input"),d=(0,r.g2)("el-col"),m=(0,r.g2)("el-row"),i=(0,r.g2)("el-form");return(0,r.uX)(),(0,r.CE)("div",null,[(0,r.bF)(i,{ref:"formDom",model:t.state.form,rules:t.state.rules,"label-width":"12rem"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{label:"","label-width":"0"},{default:(0,r.k6)((()=>[Te])),_:1}),(0,r.bF)(s,{label:"","label-width":"0"},{default:(0,r.k6)((()=>[(0,r.bF)(m,null,{default:(0,r.k6)((()=>[(0,r.bF)(d,{span:12},{default:(0,r.k6)((()=>[(0,r.bF)(s,{label:"服务端口",prop:"servicePort"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{modelValue:t.state.form.servicePort,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.form.servicePort=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,r.bF)(d,{span:12},{default:(0,r.k6)((()=>[(0,r.bF)(s,{label:"web穿透端口",prop:"webPort"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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,r.bF)(s,{label:"","label-width":"0"},{default:(0,r.k6)((()=>[(0,r.bF)(m,null,{default:(0,r.k6)((()=>[(0,r.bF)(d,{span:12},{default:(0,r.k6)((()=>[(0,r.bF)(s,{label:"开放最小端口",prop:"tunnelPort1"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{modelValue:t.state.form.tunnelPort1,"onUpdate:modelValue":l[2]||(l[2]=e=>t.state.form.tunnelPort1=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,r.bF)(d,{span:12},{default:(0,r.k6)((()=>[(0,r.bF)(s,{label:"开放最大端口",prop:"tunnelPort2"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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,r.bF)(s,{label:"","label-width":"0"},{default:(0,r.k6)((()=>[(0,r.bF)(m,null,{default:(0,r.k6)((()=>[(0,r.bF)(d,{span:12},{default:(0,r.k6)((()=>[(0,r.bF)(s,{label:"穿透密钥",prop:"sForwardSecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{modelValue:t.state.form.sForwardSecretKey,"onUpdate:modelValue":l[4]||(l[4]=e=>t.state.form.sForwardSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,r.bF)(d,{span:12},{default:(0,r.k6)((()=>[(0,r.bF)(s,{label:"中继密钥",prop:"relaySecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{modelValue:t.state.form.relaySecretKey,"onUpdate:modelValue":l[5]||(l[5]=e=>t.state.form.relaySecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,r.bF)(s,{label:"","label-width":"0"},{default:(0,r.k6)((()=>[(0,r.bF)(m,null,{default:(0,r.k6)((()=>[(0,r.bF)(d,{span:12},{default:(0,r.k6)((()=>[(0,r.bF)(s,{label:"信标密钥",prop:"signinSecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{modelValue:t.state.form.signinSecretKey,"onUpdate:modelValue":l[6]||(l[6]=e=>t.state.form.signinSecretKey=e),maxlength:"36","show-word-limit":""},null,8,["modelValue"])])),_:1})])),_:1}),(0,r.bF)(d,{span:12},{default:(0,r.k6)((()=>[(0,r.bF)(s,{label:"更新密钥",prop:"updaterSecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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 Je={setup(e){const l=(0,r.WQ)("step"),a=(0,pe.B)(),t=(0,be.Kh)({show:!1,form:{signinSecretKey:l.value.form.server.signinSecretKey||a.value.config.Server.SignIn.SecretKey,relaySecretKey:l.value.form.server.relaySecretKey||a.value.config.Server.Relay.SecretKey,sForwardSecretKey:l.value.form.server.sForwardSecretKey||a.value.config.Server.SForward.SecretKey,servicePort:l.value.form.server.servicePort||a.value.config.Server.ServicePort,webPort:l.value.form.server.webPort||a.value.config.Server.SForward.WebPort,tunnelPort1:l.value.form.server.tunnelPort1||a.value.config.Server.SForward.TunnelPortRange[0],tunnelPort2:l.value.form.server.tunnelPort2||a.value.config.Server.SForward.TunnelPortRange[1],updaterSecretKey:l.value.form.server.updaterSecretKey||a.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,be.KR)(null),u=()=>new Promise(((e,l)=>{o.value.validate((a=>{0==a?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,r.sV)((()=>{0!=l.value.json.Common.server&&0!=a.value.isPC||(l.value.step+=l.value.increment)})),{state:t,handleValidate:u,formDom:o}}};const ze=(0,_e.A)(Je,[["render",Be],["__scopeId","data-v-8d4253a6"]]);var Ge=ze,He={components:{Common:Ie,Client:Oe,Server:Ge},setup(e){const l=(0,pe.B)(),a=(0,be.Kh)({steps:(0,r.EW)((()=>["选择模式",l.value.isPc?"服务端":"","客户端","完成"]))}),t=(0,be.KR)(null),o=(0,be.KR)({step:1,increment:1,json:{},form:{server:{},client:{},common:{}}});(0,r.Gt)("step",o);const u=()=>{o.value.step--,o.value.increment=-1},s=()=>{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((()=>{}))},n=()=>{(0,Ee.ai)(o.value.json).then((()=>{Qe.nk.success("保存成功"),window.location.reload()})).catch((()=>{Qe.nk.error("保存失败")}))};return{state:a,globalData:l,currentDom:t,step:o,handlePrev:u,handleNext:s,handleSave:n}}};const Ye=(0,_e.A)(He,[["render",Xe],["__scopeId","data-v-ce07310a"]]);var Me=Ye;const Ze={class:"t-c mgt-1"};function el(e,l,a,t,o,u){const s=(0,r.g2)("el-input"),n=(0,r.g2)("el-button");return(0,r.uX)(),(0,r.CE)("div",null,[(0,r.Lk)("div",null,[(0,r.bF)(s,{modelValue:t.state.content,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.content=e),type:"textarea",rows:10,resize:"none"},null,8,["modelValue"])]),(0,r.Lk)("div",Ze,[(0,r.bF)(n,{type:"primary",onClick:t.handleSave},{default:(0,r.k6)((()=>[(0,r.eW)("确定")])),_:1},8,["onClick"])])])}var ll={setup(){const e=(0,be.Kh)({content:""}),l=()=>{e.content&&(0,Ee.vZ)(e.content).then((e=>{e?(Qe.nk.success("保存成功"),window.location.reload()):Qe.nk.error("保存失败,可能格式有误,无法解析")})).catch((()=>{Qe.nk.error("保存失败")}))};return{state:e,handleSave:l}}};const al=(0,_e.A)(ll,[["render",el]]);var rl=al;const tl={class:"t-c w-100"};function ol(e,l,a,t,o,u){const s=(0,r.g2)("el-input"),n=(0,r.g2)("el-form-item"),d=(0,r.g2)("el-button"),m=(0,r.g2)("el-form");return(0,r.uX)(),(0,r.CE)("div",null,[(0,r.bF)(m,{ref:"formDom",model:t.state.ruleForm,rules:t.state.rules,"label-width":"auto"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"服务器",prop:"server"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{modelValue:t.state.ruleForm.server,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.ruleForm.server=e)},null,8,["modelValue"])])),_:1}),(0,r.bF)(n,{label:"密钥",prop:"value"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{modelValue:t.state.ruleForm.value,"onUpdate:modelValue":l[1]||(l[1]=e=>t.state.ruleForm.value=e)},null,8,["modelValue"])])),_:1}),(0,r.bF)(n,{label:"",prop:"Btns"},{default:(0,r.k6)((()=>[(0,r.Lk)("div",tl,[(0,r.bF)(d,{type:"primary",onClick:t.handleSave},{default:(0,r.k6)((()=>[(0,r.eW)("确认")])),_:1},8,["onClick"])])])),_:1})])),_:1},8,["model","rules"])])}var ul={setup(){const e=(0,be.Kh)({ruleForm:{server:"",value:""},rules:{server:[{required:!0,message:"必填",trigger:"blur"}],value:[{required:!0,message:"必填",trigger:"blur"}]}}),l=(0,be.KR)(null),a=()=>{l.value.validate((l=>{l&&(0,Ee.D3)(e.ruleForm).then((e=>{e?(Qe.nk.success("保存成功"),window.location.reload()):Qe.nk.error("保存失败,可能服务器或者密钥不正确,或者密钥已被使用")})).catch((()=>{Qe.nk.error("保存失败")}))}))};return{state:e,formDom:l,handleSave:a}}};const sl=(0,_e.A)(ul,[["render",ol]]);var nl=sl,dl={components:{Input:Me,Copy:rl,Save:nl},setup(e){const l=(0,pe.B)(),a=(0,be.Kh)({show:0==l.value.config.Common.Install});return{state:a,globalData:l}}};const ml=(0,_e.A)(dl,[["render",Ve]]);var il=ml,cl={name:"Index",components:{Head:Se,Status:Ke.A,Install:il},setup(e){const l=(0,pe.B)(),a=(0,he.rd)(),t=(0,be.KR)(null),o=()=>{(0,r.dY)((()=>{l.value.height=t.value.offsetHeight,l.value.width=window.innerWidth}))};return(0,r.sV)((()=>{0==l.value.hasAccess("FullManager")&&a.push({name:"NoPermission"}),window.addEventListener("resize",o),o()})),(0,r.hi)((()=>{window.removeEventListener("resize",o)})),{wrap:t}}};const fl=(0,_e.A)(cl,[["render",d],["__scopeId","data-v-59076a44"]]);var vl=fl}}]); \ No newline at end of file diff --git a/src/linker.app/public/web/js/377.77b930b6.js b/src/linker.app/public/web/js/377.77b930b6.js new file mode 100644 index 00000000..f2a3f876 --- /dev/null +++ b/src/linker.app/public/web/js/377.77b930b6.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[377],{70743:function(e,l,a){a.d(l,{Ap:function(){return n},Co:function(){return o},DY:function(){return u},JT:function(){return m},Qs:function(){return i},Uh:function(){return p},a9:function(){return s},eX:function(){return c},gz:function(){return d},nP:function(){return h},pY:function(){return r}});var t=a(10004);const n=()=>(0,t.zG)("sforward/GetSecretKey"),o=e=>(0,t.zG)("sforward/SetSecretKey",e),r=e=>(0,t.zG)("sforward/get",e),s=()=>(0,t.zG)("sforward/refresh"),d=(e="0")=>(0,t.zG)("sforward/getcount",e),u=e=>(0,t.zG)("sforward/remove",e),i=e=>(0,t.zG)("sforward/add",e),c=e=>(0,t.zG)("sforward/TestLocal",e),h=e=>(0,t.zG)("sforward/start",e),m=e=>(0,t.zG)("sforward/stop",e),p=e=>(0,t.zG)("sforward/checkkey",e)},44477:function(e,l,a){a.r(l),a.d(l,{default:function(){return xo}});var t=a(56768),n=a(24232);const o={class:"home-list-wrap absolute"},r={class:"page-wrap"};function s(e,l,a,s,d,u){const i=(0,t.g2)("Sort"),c=(0,t.g2)("Device"),h=(0,t.g2)("Tunnel"),m=(0,t.g2)("Tuntap"),p=(0,t.g2)("Socks5"),g=(0,t.g2)("Forward"),w=(0,t.g2)("Oper"),k=(0,t.g2)("el-table"),v=(0,t.g2)("el-pagination"),f=(0,t.g2)("DeviceEdit"),b=(0,t.g2)("AccessEdit"),C=(0,t.g2)("TunnelEdit"),F=(0,t.g2)("ConnectionsEdit"),y=(0,t.g2)("TuntapEdit"),V=(0,t.g2)("TuntapLease"),E=(0,t.g2)("Socks5Edit"),_=(0,t.g2)("ForwardEdit"),L=(0,t.g2)("SForwardEdit"),P=(0,t.g2)("UpdaterConfirm"),I=(0,t.g2)("Stopwatch"),M=(0,t.g2)("OperRoutes"),T=(0,t.g2)("OperFirewall"),S=(0,t.g2)("OperWakeup");return(0,t.uX)(),(0,t.CE)("div",o,[(0,t.bF)(i,{onSort:s.handleSortChange},null,8,["onSort"]),(0,t.bF)(k,{data:s.devices.page.List,stripe:"",border:"",style:{width:"100%"},height:`${s.state.height}px`,size:"small"},{default:(0,t.k6)((()=>[(0,t.bF)(c,{onEdit:s.handleDeviceEdit,onRefresh:s.handlePageRefresh},null,8,["onEdit","onRefresh"]),(0,t.bF)(h,{onEdit:s.handleTunnelEdit,onRefresh:s.handleTunnelRefresh,onConnections:s.handleTunnelConnections},null,8,["onEdit","onRefresh","onConnections"]),(0,t.bF)(m,{onEdit:s.handleTuntapEdit,onRefresh:s.handleTuntapRefresh},null,8,["onEdit","onRefresh"]),(0,t.bF)(p,{onEdit:s.handleSocks5Edit,onRefresh:s.handleSocks5Refresh},null,8,["onEdit","onRefresh"]),(0,t.bF)(g,{onEdit:s.handleForwardEdit,onSedit:s.handleSForwardEdit},null,8,["onEdit","onSedit"]),(0,t.bF)(w,{onRefresh:s.handlePageRefresh,onAccess:s.handleAccessEdit},null,8,["onRefresh","onAccess"])])),_:1},8,["data","height"]),(0,t.Lk)("div",{class:(0,n.C4)(["page",{"t-c":s.globalData.isPc}])},[(0,t.Lk)("div",r,[(0,t.bF)(v,{small:"",background:"",total:s.devices.page.Count,"pager-count":s.globalData.isPc?7:3,layout:s.globalData.isPc?"total,sizes,prev,pager, next":"prev, pager, next","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","pager-count","layout","page-size","current-page","onCurrentChange","onSizeChange"])])],2),s.devices.showDeviceEdit?((0,t.uX)(),(0,t.Wv)(f,{key:0,modelValue:s.devices.showDeviceEdit,"onUpdate:modelValue":l[0]||(l[0]=e=>s.devices.showDeviceEdit=e),onChange:s.handlePageChange,data:s.devices.deviceInfo},null,8,["modelValue","onChange","data"])):(0,t.Q3)("",!0),s.devices.showAccessEdit?((0,t.uX)(),(0,t.Wv)(b,{key:1,modelValue:s.devices.showAccessEdit,"onUpdate:modelValue":l[1]||(l[1]=e=>s.devices.showAccessEdit=e),onChange:s.handlePageChange,data:s.devices.deviceInfo},null,8,["modelValue","onChange","data"])):(0,t.Q3)("",!0),s.tunnel.showEdit?((0,t.uX)(),(0,t.Wv)(C,{key:2,modelValue:s.tunnel.showEdit,"onUpdate:modelValue":l[2]||(l[2]=e=>s.tunnel.showEdit=e),onChange:s.handleTunnelRefresh},null,8,["modelValue","onChange"])):(0,t.Q3)("",!0),s.connections.showEdit?((0,t.uX)(),(0,t.Wv)(F,{key:3,modelValue:s.connections.showEdit,"onUpdate:modelValue":l[3]||(l[3]=e=>s.connections.showEdit=e)},null,8,["modelValue"])):(0,t.Q3)("",!0),s.tuntap.showEdit?((0,t.uX)(),(0,t.Wv)(y,{key:4,modelValue:s.tuntap.showEdit,"onUpdate:modelValue":l[4]||(l[4]=e=>s.tuntap.showEdit=e),onChange:s.handleTuntapRefresh},null,8,["modelValue","onChange"])):(0,t.Q3)("",!0),s.tuntap.showLease?((0,t.uX)(),(0,t.Wv)(V,{key:5,modelValue:s.tuntap.showLease,"onUpdate:modelValue":l[5]||(l[5]=e=>s.tuntap.showLease=e),onChange:s.handleTuntapRefresh},null,8,["modelValue","onChange"])):(0,t.Q3)("",!0),s.socks5.showEdit?((0,t.uX)(),(0,t.Wv)(E,{key:6,modelValue:s.socks5.showEdit,"onUpdate:modelValue":l[6]||(l[6]=e=>s.socks5.showEdit=e),onChange:s.handleSocks5Refresh},null,8,["modelValue","onChange"])):(0,t.Q3)("",!0),s.forward.showEdit?((0,t.uX)(),(0,t.Wv)(_,{key:7,modelValue:s.forward.showEdit,"onUpdate:modelValue":l[7]||(l[7]=e=>s.forward.showEdit=e)},null,8,["modelValue"])):(0,t.Q3)("",!0),s.sforward.showEdit?((0,t.uX)(),(0,t.Wv)(L,{key:8,modelValue:s.sforward.showEdit,"onUpdate:modelValue":l[8]||(l[8]=e=>s.sforward.showEdit=e)},null,8,["modelValue"])):(0,t.Q3)("",!0),s.updater.show?((0,t.uX)(),(0,t.Wv)(P,{key:9,modelValue:s.updater.show,"onUpdate:modelValue":l[9]||(l[9]=e=>s.updater.show=e)},null,8,["modelValue"])):(0,t.Q3)("",!0),s.flow.show?((0,t.uX)(),(0,t.Wv)(I,{key:10,modelValue:s.flow.show,"onUpdate:modelValue":l[10]||(l[10]=e=>s.flow.show=e)},null,8,["modelValue"])):(0,t.Q3)("",!0),s.oper.showRoutes?((0,t.uX)(),(0,t.Wv)(M,{key:11,modelValue:s.oper.showRoutes,"onUpdate:modelValue":l[11]||(l[11]=e=>s.oper.showRoutes=e)},null,8,["modelValue"])):(0,t.Q3)("",!0),s.oper.showFirewall?((0,t.uX)(),(0,t.Wv)(T,{key:12,modelValue:s.oper.showFirewall,"onUpdate:modelValue":l[12]||(l[12]=e=>s.oper.showFirewall=e)},null,8,["modelValue"])):(0,t.Q3)("",!0),s.oper.showWakeup?((0,t.uX)(),(0,t.Wv)(S,{key:13,modelValue:s.oper.showWakeup,"onUpdate:modelValue":l[13]||(l[13]=e=>s.oper.showWakeup=e)},null,8,["modelValue"])):(0,t.Q3)("",!0)])}a(44114);var d=a(53830),u=a(90144),i=a(51219);const c={class:"el-dropdown-link"};function h(e,l,a,n,o,r){const s=(0,t.g2)("el-table-column"),d=(0,t.g2)("ArrowDownBold"),u=(0,t.g2)("el-icon"),i=(0,t.g2)("el-checkbox"),h=(0,t.g2)("el-dropdown-item"),m=(0,t.g2)("el-dropdown-menu"),p=(0,t.g2)("el-dropdown"),g=(0,t.g2)("el-table");return(0,t.uX)(),(0,t.Wv)(g,{border:"",style:{width:"100%"},height:"32px",size:"small",onSortChange:n.handleSortChange,class:"table-sort"},{default:(0,t.k6)((()=>[(0,t.bF)(s,{prop:"MachineId",label:"设备名",width:"110",sortable:"custom"}),(0,t.bF)(s,{prop:"Version",label:"版本",width:"110",sortable:"custom"}),(0,t.bF)(s,{prop:"tunnel",label:"网络",width:"76",sortable:"custom"}),n.tuntap.show?((0,t.uX)(),(0,t.Wv)(s,{key:0,prop:"tuntap",label:"网卡IP",width:"160",sortable:"custom"})):(0,t.Q3)("",!0),n.socks5.show?((0,t.uX)(),(0,t.Wv)(s,{key:1,prop:"socks5",label:"代理转发",width:"160",sortable:"custom"})):(0,t.Q3)("",!0),(0,t.bF)(s,{label:"columns",fixed:"right"},{header:(0,t.k6)((()=>[(0,t.bF)(p,{class:"show-columns"},{dropdown:(0,t.k6)((()=>[(0,t.bF)(m,null,{default:(0,t.k6)((()=>[(0,t.bF)(h,null,{default:(0,t.k6)((()=>[(0,t.bF)(i,{modelValue:n.tuntap.show,"onUpdate:modelValue":l[0]||(l[0]=e=>n.tuntap.show=e),onChange:n.handleTuntapShow,size:"small",style:{"margin-right":"1rem"}},{default:(0,t.k6)((()=>[(0,t.eW)("网卡")])),_:1},8,["modelValue","onChange"])])),_:1}),(0,t.bF)(h,null,{default:(0,t.k6)((()=>[(0,t.bF)(i,{modelValue:n.socks5.show,"onUpdate:modelValue":l[1]||(l[1]=e=>n.socks5.show=e),onChange:n.handleSocks5Show,size:"small",style:{"margin-right":"1rem"}},{default:(0,t.k6)((()=>[(0,t.eW)("代理")])),_:1},8,["modelValue","onChange"])])),_:1}),(0,t.bF)(h,null,{default:(0,t.k6)((()=>[(0,t.bF)(i,{modelValue:n.forward.show,"onUpdate:modelValue":l[2]||(l[2]=e=>n.forward.show=e),onChange:n.handleForwardShow,size:"small",style:{"margin-right":"0rem"}},{default:(0,t.k6)((()=>[(0,t.eW)("转发")])),_:1},8,["modelValue","onChange"])])),_:1})])),_:1})])),default:(0,t.k6)((()=>[(0,t.Lk)("span",c,[(0,t.eW)("显示项"),(0,t.bF)(u,null,{default:(0,t.k6)((()=>[(0,t.bF)(d)])),_:1})])])),_:1})])),_:1})])),_:1},8,["onSortChange"])}var m=a(47716);const p=Symbol(),g=()=>{(0,d.B)();const e=(0,u.KR)({show:!0,timer:0,showEdit:!1,machineId:null,list:{},hashcode:0});(0,t.Gt)(p,e);const l=()=>{(0,m.dS)()},a=()=>{clearTimeout(e.value.timer),(0,m.V1)(e.value.hashcode.toString()).then((l=>{e.value.hashcode=l.HashCode,l.List&&(e.value.list=l.List),e.value.timer=setTimeout(a,1020)})).catch((()=>{e.value.timer=setTimeout(a,1020)}))},n=l=>{e.value.machineId=l[0],e.value.machineName=l[1],e.value.showEdit=!0},o=()=>{clearTimeout(e.value.timer)};return{forward:e,_getForwardCountInfo:a,handleForwardEdit:n,clearForwardTimeout:o,handleForwardRefresh:l}},w=()=>(0,t.WQ)(p);var k=a(72173);const v=Symbol(),f=()=>{const e=(0,u.KR)({show:!0,timer:0,showEdit:!1,current:null,list:{},hashcode:0});(0,t.Gt)(v,e);const l=()=>{clearTimeout(e.value.timer),(0,k.$y)(e.value.hashcode.toString()).then((a=>{if(e.value.hashcode=a.HashCode,a.List){for(let e in a.List)Object.assign(a.List[e],{running:2==a.List[e].Status,loading:1==a.List[e].Status});e.value.list=a.List}e.value.timer=setTimeout(l,1100)})).catch((a=>{e.value.timer=setTimeout(l,1100)}))},a=l=>{e.value.current=l,e.value.showEdit=!0},n=()=>{(0,k.QP)()},o=()=>{clearTimeout(e.value.timer),e.value.timer=0},r=l=>Object.values(e.value.list).filter((e=>e.Port.toString().indexOf(l)>=0||e.Lans.filter((e=>e.IP.indexOf(l)>=0)).length>0)).map((e=>e.MachineId)),s=l=>{const a=Object.values(e.value.list).sort(((e,l)=>e.Port-l.Port));return a.map((e=>e.MachineId))};return{socks5:e,_getSocks5Info:l,handleSocks5Edit:a,handleSocks5Refresh:n,clearSocks5Timeout:o,getSocks5Machines:r,sortSocks5:s}},b=()=>(0,t.WQ)(v);var C=a(98104),F=a(57477),y={emits:["sort"],components:{ArrowDownBold:F.$bU},setup(e,{emit:l}){const a=(0,C.W)();a.value.show="false"!=localStorage.getItem("tuntap.show");const t=b();t.value.show="false"!=localStorage.getItem("socks5.show");const n=w();n.value.show="false"!=localStorage.getItem("forward.show");const o=e=>{l("sort",e)},r=()=>{localStorage.setItem("tuntap.show",a.value.show)},s=()=>{localStorage.setItem("socks5.show",t.value.show)},d=()=>{localStorage.setItem("forward.show",n.value.show)};return{tuntap:a,socks5:t,forward:n,handleSortChange:o,handleTuntapShow:r,handleSocks5Show:s,handleForwardShow:d}}},V=a(71241);const E=(0,V.A)(y,[["render",h],["__scopeId","data-v-107f04ae"]]);var _=E;const L=e=>((0,t.Qi)("data-v-b66b6858"),e=e(),(0,t.jt)(),e),P={class:"flex"},I=L((()=>(0,t.Lk)("span",{class:"flex-1"},"设备",-1))),M={class:"flex"},T=["onClick"],S=["onClick"],W=L((()=>(0,t.Lk)("span",null,"😴㊙.㊙.㊙.㊙",-1))),A=[W],X=L((()=>(0,t.Lk)("span",{class:"flex-1"},null,-1)));function R(e,l,a,o,r,s){const d=(0,t.g2)("el-input"),u=(0,t.g2)("Search"),i=(0,t.g2)("el-icon"),c=(0,t.g2)("el-button"),h=(0,t.g2)("DeviceName"),m=(0,t.g2)("UpdaterBtn"),p=(0,t.g2)("el-table-column");return(0,t.uX)(),(0,t.Wv)(p,{prop:"MachineId",label:"设备",width:"220"},{header:(0,t.k6)((()=>[(0,t.Lk)("div",P,[I,(0,t.Lk)("span",null,[(0,t.bF)(d,{size:"small",modelValue:o.name,"onUpdate:modelValue":l[0]||(l[0]=e=>o.name=e),clearable:"",onInput:o.handleRefresh,placeholder:"设备/虚拟网卡/端口转发"},null,8,["modelValue","onInput"])]),(0,t.Lk)("span",null,[(0,t.bF)(c,{size:"small",onClick:o.handleRefresh},{default:(0,t.k6)((()=>[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})])),_:1},8,["onClick"])])])])),default:(0,t.k6)((e=>[(0,t.Lk)("div",null,[(0,t.Lk)("p",null,[(0,t.bF)(h,{onEdit:o.handleEdit,config:!0,item:e.row},null,8,["onEdit","item"])]),(0,t.Lk)("p",M,[e.row.showip?((0,t.uX)(),(0,t.CE)("span",{key:0,title:"此设备的外网IP",class:"ipaddress",onClick:l=>o.handleExternal(e.row)},[(0,t.Lk)("span",null,"😀"+(0,n.v_)(e.row.IP),1)],8,T)):((0,t.uX)(),(0,t.CE)("span",{key:1,title:"此设备的外网IP",class:"ipaddress",onClick:l=>o.handleExternal(e.row)},A,8,S)),X,0==e.row.showip?((0,t.uX)(),(0,t.Wv)(m,{key:2,config:!0,item:e.row},null,8,["item"])):(0,t.Q3)("",!0)])])])),_:1})}var N=a(62956),x=a(27569),B={emits:["edit","refresh"],components:{Search:F.vji,UpdaterBtn:N.A,DeviceName:x.A},setup(e,{emit:l}){const a=(0,d.B)(),n=(0,t.EW)((()=>a.value.hasAccess("ExternalShow"))),o=(0,u.KR)(sessionStorage.getItem("search-name")||""),r=e=>{n.value?e.showip=!e.showip:i.nk.success("无权限")},s=e=>{l("edit",e)},c=()=>{sessionStorage.setItem("search-name",o.value),l("refresh",o.value)};return{handleEdit:s,handleRefresh:c,name:o,handleExternal:r}}};const U=(0,V.A)(B,[["render",R],["__scopeId","data-v-b66b6858"]]);var $=U;const D=(0,t.Lk)("div",null,"修改后最好能重启一次客户端",-1),z={class:"t-c w-100"};function O(e,l,a,n,o,r){const s=(0,t.g2)("el-form-item"),d=(0,t.g2)("el-input"),u=(0,t.g2)("el-button"),i=(0,t.g2)("el-form"),c=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(c,{modelValue:n.state.show,"onUpdate:modelValue":l[2]||(l[2]=e=>n.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:`设置[${n.state.ruleForm.MachineName}]设备`,width:"360"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(i,{ref:"ruleFormRef",model:n.state.ruleForm,rules:n.state.rules,"label-width":"auto"},{default:(0,t.k6)((()=>[(0,t.bF)(s,{label:""},{default:(0,t.k6)((()=>[D])),_:1}),(0,t.bF)(s,{label:"设备名",prop:"MachineName"},{default:(0,t.k6)((()=>[(0,t.bF)(d,{maxlength:"32","show-word-limit":"",modelValue:n.state.ruleForm.MachineName,"onUpdate:modelValue":l[0]||(l[0]=e=>n.state.ruleForm.MachineName=e)},null,8,["modelValue"])])),_:1}),(0,t.bF)(s,{label:"",prop:"Btns"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",z,[(0,t.bF)(u,{onClick:l[1]||(l[1]=e=>n.state.show=!1)},{default:(0,t.k6)((()=>[(0,t.eW)("取消")])),_:1}),(0,t.bF)(u,{type:"primary",onClick:n.handleSave},{default:(0,t.k6)((()=>[(0,t.eW)("确认")])),_:1},8,["onClick"])])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue","title"])}var Q=a(69299),j={props:["data","modelValue"],emits:["change","update:modelValue"],setup(e,{emit:l}){const a=(0,u.KR)(null),n=(0,u.Kh)({show:!0,ruleForm:{MachineName1:e.data.MachineName,MachineName:e.data.MachineName},rules:{}});(0,t.wB)((()=>n.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e)}),300)}));const o=()=>{e.data.MachineName!=n.ruleForm.MachineName&&(0,Q.gC)({Id:e.data.MachineId,newName:n.ruleForm.MachineName}).then((()=>{n.show=!1,i.nk.success("已操作!"),l("change")})).catch((e=>{console.log(e),i.nk.error("操作失败!")}))};return{state:n,ruleFormRef:a,handleSave:o}}};const K=(0,V.A)(j,[["render",O]]);var G=K,q=a(27985);function H(e,l,a,n,o,r){const s=(0,t.g2)("Access"),d=(0,t.g2)("el-button"),u=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(u,{modelValue:n.state.show,"onUpdate:modelValue":l[1]||(l[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,t.k6)((()=>[(0,t.bF)(d,{plain:"",onClick:l[0]||(l[0]=e=>n.state.show=!1),loading:n.state.loading},{default:(0,t.k6)((()=>[(0,t.eW)("取消")])),_:1},8,["loading"]),(0,t.bF)(d,{type:"success",plain:"",onClick:n.handleSave,loading:n.state.loading},{default:(0,t.k6)((()=>[(0,t.eW)("确定保存")])),_:1},8,["onClick","loading"])])),default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(s,{machineid:n.machineid,ref:"accessDom"},null,8,["machineid"])])])),_:1},8,["modelValue","title"])}var J=a(73363),Z=a(74339),Y={props:["data","modelValue"],emits:["change","update:modelValue"],components:{Access:Z.A},setup(e,{emit:l}){const a=(0,u.Kh)({show:!0,loading:!1});(0,t.wB)((()=>a.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e)}),300)}));const n=(0,u.KR)(null),o=()=>{a.loading=!0;const t=n.value.getValue();(0,J.ZK)({ToMachineId:e.data.MachineId,Access:t[0],FullAccess:t[1]}).then((()=>{a.loading=!1,a.show=!1,i.nk.success("已操作!"),l("change")})).catch((e=>{console.log(e),a.loading=!1,i.nk.error("操作失败!")}))};return{machineName:e.data.MachineName,machineid:e.data.MachineId,state:a,accessDom:n,handleSave:o}}};const ee=(0,V.A)(Y,[["render",H]]);var le=ee,ae=a(25962);const te={key:0};function ne(e,l,a,n,o,r){const s=(0,t.g2)("TuntapShow"),d=(0,t.g2)("el-table-column");return(0,t.uX)(),(0,t.Wv)(d,{prop:"tuntap",label:n.tuntap.show?"虚拟网卡":"",width:"160"},{header:(0,t.k6)((()=>[n.tuntap.show?((0,t.uX)(),(0,t.CE)("a",{key:0,href:"javascript:;",class:"a-line",onClick:l[0]||(l[0]=(...e)=>n.handleShowLease&&n.handleShowLease(...e))},"虚拟网卡")):(0,t.Q3)("",!0)])),default:(0,t.k6)((e=>[n.tuntap.show&&n.tuntap.list[e.row.MachineId]?((0,t.uX)(),(0,t.CE)("div",te,[(0,t.bF)(s,{config:!0,item:e.row,onEdit:n.handleTuntapIP,onRefresh:n.handleTuntapRefresh},null,8,["item","onEdit","onRefresh"])])):(0,t.Q3)("",!0)])),_:1},8,["label"])}var oe=a(57671),re={emits:["edit","refresh"],components:{TuntapShow:oe.A},setup(e,{emit:l}){const a=(0,C.W)(),t=e=>{l("edit",e)},n=()=>{l("refresh")},o=()=>{a.value.showLease=!0};return{tuntap:a,handleTuntapIP:t,handleTuntapRefresh:n,handleShowLease:o}}};const se=(0,V.A)(re,[["render",ne]]);var de=se;const ue={class:"foot t-c"};function ie(e,l,a,n,o,r){const s=(0,t.g2)("TuntapIP"),d=(0,t.g2)("el-tab-pane"),u=(0,t.g2)("TuntapLan"),i=(0,t.g2)("TuntapForward"),c=(0,t.g2)("el-tabs"),h=(0,t.g2)("el-button"),m=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(m,{modelValue:n.state.show,"onUpdate:modelValue":l[1]||(l[1]=e=>n.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:`设置[${n.state.machineName}]组网`,top:"1vh",width:"780"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(c,{type:"border-card"},{default:(0,t.k6)((()=>[(0,t.bF)(d,{label:"网卡"},{default:(0,t.k6)((()=>[(0,t.bF)(s,{ref:"ipDom"},null,512)])),_:1}),(0,t.bF)(d,{label:"点/网对网"},{default:(0,t.k6)((()=>[(0,t.bF)(u,{ref:"lanDom"},null,512)])),_:1}),(0,t.bF)(d,{label:"端口转发"},{default:(0,t.k6)((()=>[(0,t.bF)(i,{ref:"forwardDom"},null,512)])),_:1})])),_:1}),(0,t.Lk)("div",ue,[(0,t.bF)(h,{onClick:l[0]||(l[0]=e=>n.state.show=!1),loading:n.state.loading},{default:(0,t.k6)((()=>[(0,t.eW)("取消")])),_:1},8,["loading"]),(0,t.bF)(h,{type:"primary",onClick:n.handleSave,loading:n.state.loading},{default:(0,t.k6)((()=>[(0,t.eW)("确定保存")])),_:1},8,["onClick","loading"])])])])),_:1},8,["modelValue","title"])}var ce=a(15241),he=a(45130);const me=e=>((0,t.Qi)("data-v-1f1a4aca"),e=e(),(0,t.jt)(),e),pe={class:"w-100"},ge=me((()=>(0,t.Lk)("span",{class:"yellow"},"使用系统端口转发",-1))),we={key:0,class:"green"},ke={class:"wrap"},ve=["onClick"],fe=["title"],be={key:1},Ce=["onClick"],Fe=["onClick"],ye=["title"],Ve={key:1},Ee=["onClick"],_e=["onClick"],Le=["title"],Pe={key:1},Ie=["onClick"],Me={key:1,class:"remark"},Te=["onClick"];function Se(e,l,a,o,r,s){const d=(0,t.g2)("el-input"),u=(0,t.g2)("Delete"),i=(0,t.g2)("el-icon"),c=(0,t.g2)("el-table-column"),h=(0,t.g2)("el-button"),m=(0,t.g2)("el-popconfirm"),p=(0,t.g2)("Plus"),g=(0,t.g2)("el-table");return(0,t.uX)(),(0,t.CE)("div",pe,[(0,t.Lk)("div",null,[ge,o.state.testing?((0,t.uX)(),(0,t.CE)("span",we,"、testing")):(0,t.Q3)("",!0)]),(0,t.Lk)("div",ke,[(0,t.bF)(g,{stripe:"",data:o.state.forwards,border:"",size:"small",width:"100%",height:"400px",onCellDblclick:o.handleCellClick},{default:(0,t.k6)((()=>[(0,t.bF)(c,{prop:"ListenPort",label:"源端口",width:"60"},{default:(0,t.k6)((e=>[e.row.ListenPortEditing?((0,t.uX)(),(0,t.Wv)(d,{key:0,autofocus:"",size:"small",modelValue:e.row.ListenPort,"onUpdate:modelValue":l=>e.row.ListenPort=l,onBlur:l=>o.handleEditBlur(e.row,"ListenPort")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"ListenPort")},[e.row.Error?((0,t.uX)(),(0,t.CE)("strong",{key:0,title:e.row.Error,class:"red"},(0,n.v_)(e.row.ListenPort),9,fe)):((0,t.uX)(),(0,t.CE)("span",be,[(0,t.eW)((0,n.v_)(e.row.ListenPort)+" ",1),(0,t.Lk)("a",{href:"javascript:;",onClick:(0,he.D$)((l=>e.row.ListenPort=0),["stop"])},[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})],8,Ce)]))],8,ve))])),_:1}),(0,t.bF)(c,{prop:"ConnectAddr",label:"目标IP",width:"120"},{default:(0,t.k6)((e=>[e.row.ConnectAddrEditing?((0,t.uX)(),(0,t.Wv)(d,{key:0,autofocus:"",size:"small",modelValue:e.row.ConnectAddr,"onUpdate:modelValue":l=>e.row.ConnectAddr=l,onBlur:l=>o.handleEditBlur(e.row,"ConnectAddr")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"ConnectAddr")},[e.row.Error?((0,t.uX)(),(0,t.CE)("strong",{key:0,title:e.row.Error,class:"red"},(0,n.v_)(e.row.ConnectAddr),9,ye)):((0,t.uX)(),(0,t.CE)("span",Ve,[(0,t.eW)((0,n.v_)(e.row.ConnectAddr)+" ",1),(0,t.Lk)("a",{href:"javascript:;",onClick:(0,he.D$)((l=>e.row.ConnectAddr="0.0.0.0"),["stop"])},[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})],8,Ee)]))],8,Fe))])),_:1}),(0,t.bF)(c,{prop:"ConnectPort",label:"目标端口",width:"80"},{default:(0,t.k6)((e=>[e.row.ConnectPortEditing?((0,t.uX)(),(0,t.Wv)(d,{key:0,autofocus:"",size:"small",modelValue:e.row.ConnectPort,"onUpdate:modelValue":l=>e.row.ConnectPort=l,onBlur:l=>o.handleEditBlur(e.row,"ConnectPort")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"ConnectPort")},[e.row.Error?((0,t.uX)(),(0,t.CE)("strong",{key:0,title:e.row.Error,class:"red"},(0,n.v_)(e.row.ConnectPort),9,Le)):((0,t.uX)(),(0,t.CE)("span",Pe,[(0,t.eW)((0,n.v_)(e.row.ConnectPort)+" ",1),(0,t.Lk)("a",{href:"javascript:;",onClick:(0,he.D$)((l=>e.row.ConnectPort=0),["stop"])},[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})],8,Ie)]))],8,_e))])),_:1}),(0,t.bF)(c,{prop:"Remark",label:"备注"},{default:(0,t.k6)((e=>[e.row.RemarkEditing?((0,t.uX)(),(0,t.Wv)(d,{key:0,autofocus:"",size:"small",modelValue:e.row.Remark,"onUpdate:modelValue":l=>e.row.Remark=l,onBlur:l=>o.handleEditBlur(e.row,"Remark")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("div",Me,[(0,t.Lk)("a",{href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"Remark")},(0,n.v_)(e.row.Remark||"无"),9,Te)]))])),_:1}),(0,t.bF)(c,{prop:"Oper",label:"操作",width:"110"},{default:(0,t.k6)((e=>[(0,t.Lk)("div",null,[(0,t.bF)(m,{title:"删除不可逆,是否确认?",onConfirm:l=>o.handleDel(e.$index)},{reference:(0,t.k6)((()=>[(0,t.bF)(h,{type:"danger",size:"small"},{default:(0,t.k6)((()=>[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})])),_:1})])),_:2},1032,["onConfirm"]),(0,t.bF)(h,{type:"primary",size:"small",onClick:l=>o.handleAdd(e.$index)},{default:(0,t.k6)((()=>[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(p)])),_:1})])),_:2},1032,["onClick"])])])),_:1})])),_:1},8,["data","onCellDblclick"])])])}var We={props:["modelValue"],emits:["update:modelValue"],components:{Delete:F.epd,Plus:F.FWt,Warning:F.N5l,Refresh:F.C42},setup(e){const l=(0,C.W)(),a=(0,u.Kh)({machineName:l.value.current.device.MachineName,forwards:0==l.value.current.Forwards.length?[{ListenAddr:"0.0.0.0",ListenPort:0,ConnectAddr:"0.0.0.0",ConnectPort:0,Remark:""}]:l.value.current.Forwards.slice(0),timer:0,testing:!1}),n=(e,l)=>{o(e,l.property)},o=(e,l)=>{a.forwards.forEach((e=>{e["ListenAddrEditing"]=!1,e["ListenPortEditing"]=!1,e["ConnectAddrEditing"]=!1,e["ConnectPortEditing"]=!1,e["RemarkEditing"]=!1})),e[`${l}Editing`]=!0,e["__editing"]=!0},r=(e,l)=>{e[`${l}Editing`]=!1,e["__editing"]=!1},s=e=>{1==a.forwards.length?a.forwards[0]={ListenAddr:"0.0.0.0",ListenPort:0,ConnectAddr:"0.0.0.0",ConnectPort:0,Remark:""}:a.forwards.splice(e,1)},d=e=>{a.forwards.filter((e=>"0.0.0.0"==e.ConnectAddr||0==e.ConnectPort||0==e.ListenPort)).length>0||a.forwards.splice(e+1,0,{ListenAddr:"0.0.0.0",ListenPort:0,ConnectAddr:"0.0.0.0",ConnectPort:0,Remark:""})},i=()=>{clearTimeout(a.timer),a.testing=!0,(0,ce._)({MachineId:l.value.current.MachineId,List:a.forwards.map((e=>({ListenAddr:e.ListenAddr,ListenPort:+e.ListenPort,ConnectAddr:e.ConnectAddr,ConnectPort:+e.ConnectPort})))}).then((e=>{var l=e.List;for(let t=0;t${e.ConnectAddr}:${e.ConnectPort}`,o=a.forwards.filter((e=>`${e.ListenPort}->${e.ConnectAddr}:${e.ConnectPort}`==n));for(let l=0;l{a.testing=!1,a.timer=setTimeout(i,3e3)}))};(0,t.sV)((()=>{i()})),(0,t.hi)((()=>{clearTimeout(a.timer)}));const c=()=>a.forwards.map((e=>(e.ListenPort=+e.ListenPort,e.ConnectPort=+e.ConnectPort,e)));return{state:a,handleCellClick:n,handleEditBlur:r,handleEdit:o,handleDel:s,handleAdd:d,getData:c}}};const Ae=(0,V.A)(We,[["render",Se],["__scopeId","data-v-1f1a4aca"]]);var Xe=Ae;const Re={class:"w-100"},Ne=(0,t.Lk)("div",null,[(0,t.Lk)("span",{class:"yellow"},"使用系统NAT或应用层SNAT")],-1),xe={class:"wrap"},Be=["onClick"],Ue=["title"],$e={key:1},De=["onClick"],ze=["onClick"],Oe=["title"],Qe={key:1},je=["onClick"],Ke=["title"],Ge={key:1},qe=["onClick"],He=["onClick"],Je=["title"],Ze={key:1};function Ye(e,l,a,o,r,s){const d=(0,t.g2)("el-input"),u=(0,t.g2)("Delete"),i=(0,t.g2)("el-icon"),c=(0,t.g2)("el-table-column"),h=(0,t.g2)("el-checkbox"),m=(0,t.g2)("el-button"),p=(0,t.g2)("el-popconfirm"),g=(0,t.g2)("Plus"),w=(0,t.g2)("el-table");return(0,t.uX)(),(0,t.CE)("div",Re,[Ne,(0,t.Lk)("div",xe,[(0,t.bF)(w,{stripe:"",data:o.state.lans,border:"",size:"small",width:"100%",height:"400px",onCellDblclick:o.handleCellClick},{default:(0,t.k6)((()=>[(0,t.bF)(c,{prop:"IP",label:"路由IP",width:"120"},{default:(0,t.k6)((e=>[e.row.IPEditing?((0,t.uX)(),(0,t.Wv)(d,{key:0,autofocus:"",size:"small",modelValue:e.row.IP,"onUpdate:modelValue":l=>e.row.IP=l,onBlur:l=>o.handleEditBlur(e.row,"IP")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"IP")},[e.row.Error?((0,t.uX)(),(0,t.CE)("strong",{key:0,title:e.row.Error,class:"red"},(0,n.v_)(e.row.IP),9,Ue)):((0,t.uX)(),(0,t.CE)("span",$e,[(0,t.eW)((0,n.v_)(e.row.IP)+" ",1),(0,t.Lk)("a",{href:"javascript:;",onClick:(0,he.D$)((l=>e.row.IP="0.0.0.0"),["stop"])},[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})],8,De)]))],8,Be))])),_:1}),(0,t.bF)(c,{prop:"PrefixLength",label:"路由掩码",width:"80"},{default:(0,t.k6)((e=>[e.row.PrefixLengthEditing?((0,t.uX)(),(0,t.Wv)(d,{key:0,autofocus:"",size:"small",modelValue:e.row.PrefixLength,"onUpdate:modelValue":l=>e.row.PrefixLength=l,onBlur:l=>o.handleEditBlur(e.row,"PrefixLength")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"PrefixLength")},[e.row.Error?((0,t.uX)(),(0,t.CE)("strong",{key:0,title:e.row.Error,class:"red"},(0,n.v_)(e.row.PrefixLength),9,Oe)):((0,t.uX)(),(0,t.CE)("span",Qe,(0,n.v_)(e.row.PrefixLength),1))],8,ze))])),_:1}),(0,t.bF)(c,{prop:"MapIP",label:"目标IP",width:"120"},{default:(0,t.k6)((e=>[e.row.MapIPEditing?((0,t.uX)(),(0,t.Wv)(d,{key:0,autofocus:"",size:"small",modelValue:e.row.MapIP,"onUpdate:modelValue":l=>e.row.MapIP=l,onBlur:l=>o.handleEditBlur(e.row,"MapIP")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"MapIP")},[e.row.Error?((0,t.uX)(),(0,t.CE)("strong",{key:0,title:e.row.Error,class:"red"},(0,n.v_)(e.row.MapIP),9,Ke)):((0,t.uX)(),(0,t.CE)("span",Ge,[(0,t.eW)((0,n.v_)(e.row.MapIP)+" ",1),(0,t.Lk)("a",{href:"javascript:;",onClick:(0,he.D$)((l=>e.row.MapIP="0.0.0.0"),["stop"])},[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})],8,qe)]))],8,je))])),_:1}),(0,t.bF)(c,{prop:"MapPrefixLength",label:"目标掩码",width:"80"},{default:(0,t.k6)((e=>[e.row.MapPrefixLengthEditing?((0,t.uX)(),(0,t.Wv)(d,{key:0,autofocus:"",size:"small",modelValue:e.row.MapPrefixLength,"onUpdate:modelValue":l=>e.row.MapPrefixLength=l,onBlur:l=>o.handleEditBlur(e.row,"MapPrefixLength")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"MapPrefixLength")},[e.row.Error?((0,t.uX)(),(0,t.CE)("strong",{key:0,title:e.row.Error,class:"red"},(0,n.v_)(e.row.MapPrefixLength),9,Je)):((0,t.uX)(),(0,t.CE)("span",Ze,(0,n.v_)(e.row.MapPrefixLength),1))],8,He))])),_:1}),(0,t.bF)(c,{prop:"Disabled",label:"禁用"},{default:(0,t.k6)((e=>[(0,t.bF)(h,{modelValue:e.row.Disabled,"onUpdate:modelValue":l=>e.row.Disabled=l,label:"禁用"},null,8,["modelValue","onUpdate:modelValue"])])),_:1}),(0,t.bF)(c,{prop:"Oper",label:"操作",width:"110"},{default:(0,t.k6)((e=>[(0,t.Lk)("div",null,[(0,t.bF)(p,{title:"删除不可逆,是否确认?",onConfirm:l=>o.handleDel(e.$index)},{reference:(0,t.k6)((()=>[(0,t.bF)(m,{type:"danger",size:"small"},{default:(0,t.k6)((()=>[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})])),_:1})])),_:2},1032,["onConfirm"]),(0,t.bF)(m,{type:"primary",size:"small",onClick:l=>o.handleAdd(e.$index)},{default:(0,t.k6)((()=>[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(g)])),_:1})])),_:2},1032,["onClick"])])])),_:1})])),_:1},8,["data","onCellDblclick"])])])}var el={props:["modelValue"],emits:["update:modelValue"],components:{Delete:F.epd,Plus:F.FWt,Warning:F.N5l,Refresh:F.C42},setup(e){const l=(0,C.W)(),a=(0,u.Kh)({lans:l.value.current.Lans.slice(0).map((e=>(e.MapIP=e.MapIP||"0.0.0.0",e.MapPrefixLength=e.MapPrefixLength||24,e)))});0==a.lans.length&&a.lans.push({IP:"0.0.0.0",PrefixLength:24,MapIP:"0.0.0.0",MapPrefixLength:24});const t=(e,l)=>{n(e,l.property)},n=(e,l)=>{a.lans.forEach((e=>{e["IPEditing"]=!1,e["PrefixLengthEditing"]=!1,e["MapIPEditing"]=!1,e["MapPrefixLengthEditing"]=!1})),e[`${l}Editing`]=!0,e["__editing"]=!0},o=(e,l)=>{if(e[`${l}Editing`]=!1,e["__editing"]=!1,"PrefixLength"==l||"MapPrefixLength"==l){var a=+e[l];(a>32||a<0||isNaN(a))&&(a=24),e[l]=a}},r=e=>{a.lans.splice(e,1),0==a.lans.length&&s(0)},s=e=>{a.lans.splice(e+1,0,{IP:"0.0.0.0",PrefixLength:24,MapIP:"0.0.0.0",MapPrefixLength:24})},d=()=>a.lans.map((e=>(e.PrefixLength=+e.PrefixLength,e)));return{state:a,handleDel:r,handleAdd:s,getData:d,handleCellClick:t,handleEditBlur:o,handleEdit:n}}};const ll=(0,V.A)(el,[["render",Ye]]);var al=ll;const tl=e=>((0,t.Qi)("data-v-2eb35cd0"),e=e(),(0,t.jt)(),e),nl={class:"wrap"},ol=tl((()=>(0,t.Lk)("span",null,"留空则使用【本组网络】的设置",-1))),rl=tl((()=>(0,t.Lk)("span",null,"/",-1)));function sl(e,l,a,n,o,r){const s=(0,t.g2)("el-input"),d=(0,t.g2)("el-form-item"),u=(0,t.g2)("el-checkbox"),i=(0,t.g2)("el-form");return(0,t.uX)(),(0,t.CE)("div",nl,[(0,t.bF)(i,{ref:"ruleFormRef",model:n.state.ruleForm,rules:n.state.rules,"label-width":"8rem"},{default:(0,t.k6)((()=>[(0,t.bF)(d,{label:"网卡名",prop:"Name"},{default:(0,t.k6)((()=>[(0,t.bF)(s,{modelValue:n.state.ruleForm.Name,"onUpdate:modelValue":l[0]||(l[0]=e=>n.state.ruleForm.Name=e),style:{width:"14rem"}},null,8,["modelValue"]),(0,t.eW)(),ol])),_:1}),(0,t.bF)(d,{label:"网卡IP",prop:"IP",class:"mgb-0"},{default:(0,t.k6)((()=>[(0,t.bF)(s,{modelValue:n.state.ruleForm.IP,"onUpdate:modelValue":l[1]||(l[1]=e=>n.state.ruleForm.IP=e),style:{width:"14rem"}},null,8,["modelValue"]),rl,(0,t.bF)(s,{onChange:n.handlePrefixLengthChange,modelValue:n.state.ruleForm.PrefixLength,"onUpdate:modelValue":l[2]||(l[2]=e=>n.state.ruleForm.PrefixLength=e),style:{width:"4rem"}},null,8,["onChange","modelValue"])])),_:1}),(0,t.bF)(d,{label:"",class:"mgb-0"},{default:(0,t.k6)((()=>[(0,t.bF)(u,{class:"mgr-1",modelValue:n.state.ruleForm.ShowDelay,"onUpdate:modelValue":l[3]||(l[3]=e=>n.state.ruleForm.ShowDelay=e),label:"显示延迟",size:"large"},null,8,["modelValue"]),(0,t.bF)(u,{class:"mgr-1",modelValue:n.state.ruleForm.AutoConnect,"onUpdate:modelValue":l[4]||(l[4]=e=>n.state.ruleForm.AutoConnect=e),label:"自动连接",size:"large"},null,8,["modelValue"]),(0,t.bF)(u,{class:"mgr-1",modelValue:n.state.ruleForm.Multicast,"onUpdate:modelValue":l[5]||(l[5]=e=>n.state.ruleForm.Multicast=e),label:"禁用广播",size:"large"},null,8,["modelValue"]),(0,t.bF)(u,{class:"mgr-1",modelValue:n.state.ruleForm.Nat,"onUpdate:modelValue":l[6]||(l[6]=e=>n.state.ruleForm.Nat=e),label:"禁用NAT",size:"large"},null,8,["modelValue"]),(0,t.bF)(u,{class:"mgr-1",modelValue:n.state.ruleForm.TcpMerge,"onUpdate:modelValue":l[7]||(l[7]=e=>n.state.ruleForm.TcpMerge=e),label:"TCP包合并",size:"large"},null,8,["modelValue"]),(0,t.bF)(u,{modelValue:n.state.ruleForm.InterfaceOrder,"onUpdate:modelValue":l[8]||(l[8]=e=>n.state.ruleForm.InterfaceOrder=e),label:"调整网卡顺序",size:"large"},null,8,["modelValue"])])),_:1})])),_:1},8,["model","rules"])])}var dl={emits:["change"],components:{Delete:F.epd,Plus:F.FWt,Warning:F.N5l,Refresh:F.C42,TuntapForward:Xe,TuntapLan:al},setup(e,{emit:l}){const a=(0,C.W)(),t=(0,u.KR)(null),n=(0,u.Kh)({ruleForm:{IP:a.value.current.IP,PrefixLength:a.value.current.PrefixLength||24,Gateway:a.value.current.Gateway,ShowDelay:a.value.current.ShowDelay,AutoConnect:a.value.current.AutoConnect,Upgrade:a.value.current.Upgrade,Multicast:a.value.current.Multicast,Nat:a.value.current.Nat,TcpMerge:a.value.current.TcpMerge,InterfaceOrder:a.value.current.InterfaceOrder,Forwards:a.value.current.Forwards,Name:a.value.current.Name},rules:{Name:{type:"string",pattern:/^$|^[A-Za-z][A-Za-z0-9]{0,31}$/,message:"请输入正确的网卡名",transform(e){return e.trim()}}}}),o=()=>{var e=+n.ruleForm.PrefixLength;(e>32||e<16||isNaN(e))&&(e=24),n.ruleForm.PrefixLength=e},r=()=>{const e=JSON.parse(JSON.stringify(a.value.current));return e.IP=n.ruleForm.IP.replace(/\s/g,"")||"0.0.0.0",e.PrefixLength=+n.ruleForm.PrefixLength,e.Gateway=n.ruleForm.Gateway,e.ShowDelay=n.ruleForm.ShowDelay,e.AutoConnect=n.ruleForm.AutoConnect,e.Upgrade=n.ruleForm.Upgrade,e.Multicast=n.ruleForm.Multicast,e.Nat=n.ruleForm.Nat,e.TcpMerge=n.ruleForm.TcpMerge,e.InterfaceOrder=n.ruleForm.InterfaceOrder,e.Name=n.ruleForm.Name,e};return{state:n,ruleFormRef:t,handlePrefixLengthChange:o,getData:r}}};const ul=(0,V.A)(dl,[["render",sl],["__scopeId","data-v-2eb35cd0"]]);var il=ul,cl={props:["modelValue"],emits:["change","update:modelValue"],components:{TuntapForward:Xe,TuntapLan:al,TuntapIP:il},setup(e,{emit:l}){const a=(0,C.W)(),n=(0,u.Kh)({show:!0,machineName:a.value.current.device.MachineName,loading:!1});(0,t.wB)((()=>n.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e)}),300)}));const o=(0,u.KR)(null),r=(0,u.KR)(null),s=(0,u.KR)(null),d=()=>{n.loading=!0;const e=o.value.getData();e.Lans=r.value?r.value.getData():a.value.current.Lans,e.Forwards=s.value?s.value.getData():a.value.current.Forwards,(0,ce.ac)(e).then((()=>{n.show=!1,n.loading=!1,i.nk.success("已操作!"),l("change")})).catch((e=>{n.loading=!1,console.log(e),i.nk.error("操作失败!")}))};return{state:n,handleSave:d,ipDom:o,lanDom:r,forwardDom:s}}};const hl=(0,V.A)(cl,[["render",ie],["__scopeId","data-v-87d2a32c"]]);var ml=hl;const pl=e=>((0,t.Qi)("data-v-67ed3552"),e=e(),(0,t.jt)(),e),gl=pl((()=>(0,t.Lk)("p",null,"网络租期30天、IP租期7天",-1))),wl=pl((()=>(0,t.Lk)("span",null,"/",-1))),kl=pl((()=>(0,t.Lk)("span",{style:{width:"1rem"}},null,-1))),vl={class:"calc"},fl=pl((()=>(0,t.Lk)("span",{class:"label"},"网络号",-1))),bl={class:"value"},Cl=pl((()=>(0,t.Lk)("span",{class:"label"},"网关",-1))),Fl={class:"value"},yl=pl((()=>(0,t.Lk)("span",{class:"label"},"开始IP",-1))),Vl={class:"value"},El=pl((()=>(0,t.Lk)("span",{class:"label"},"结束IP",-1))),_l={class:"value"},Ll=pl((()=>(0,t.Lk)("span",{class:"label"},"广播号",-1))),Pl={class:"value"},Il=pl((()=>(0,t.Lk)("span",{class:"label"},"IP数量",-1))),Ml={class:"value"};function Tl(e,l,a,o,r,s){const d=(0,t.g2)("el-form-item"),u=(0,t.g2)("el-input"),i=(0,t.g2)("el-button"),c=(0,t.g2)("el-form"),h=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(h,{modelValue:o.state.show,"onUpdate:modelValue":l[4]||(l[4]=e=>o.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:"配置本组的网络",top:"1vh",width:"400"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(c,{ref:"ruleFormRef",model:o.state.ruleForm,rules:o.state.rules,"label-width":"100"},{default:(0,t.k6)((()=>[(0,t.bF)(d,{prop:"gateway"},{default:(0,t.k6)((()=>[gl])),_:1}),(0,t.bF)(d,{label:"网卡名",prop:"Name"},{default:(0,t.k6)((()=>[(0,t.bF)(u,{modelValue:o.state.ruleForm.Name,"onUpdate:modelValue":l[0]||(l[0]=e=>o.state.ruleForm.Name=e),style:{width:"14rem"}},null,8,["modelValue"])])),_:1}),(0,t.bF)(d,{label:"网络前缀",prop:"IP"},{default:(0,t.k6)((()=>[(0,t.bF)(u,{modelValue:o.state.ruleForm.IP,"onUpdate:modelValue":l[1]||(l[1]=e=>o.state.ruleForm.IP=e),style:{width:"14rem"},onChange:o.handlePrefixLengthChange},null,8,["modelValue","onChange"]),wl,(0,t.bF)(u,{onChange:o.handlePrefixLengthChange,modelValue:o.state.ruleForm.PrefixLength,"onUpdate:modelValue":l[2]||(l[2]=e=>o.state.ruleForm.PrefixLength=e),style:{width:"4rem"}},null,8,["onChange","modelValue"]),kl,(0,t.bF)(i,{onClick:o.handleClear},{default:(0,t.k6)((()=>[(0,t.eW)("重置")])),_:1},8,["onClick"])])),_:1}),(0,t.bF)(d,{label:"",prop:"IP1"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",vl,[(0,t.Lk)("p",null,[fl,(0,t.Lk)("span",bl,(0,n.v_)(o.state.values.Network),1)]),(0,t.Lk)("p",null,[Cl,(0,t.Lk)("span",Fl,(0,n.v_)(o.state.values.Gateway),1)]),(0,t.Lk)("p",null,[yl,(0,t.Lk)("span",Vl,(0,n.v_)(o.state.values.Start),1)]),(0,t.Lk)("p",null,[El,(0,t.Lk)("span",_l,(0,n.v_)(o.state.values.End),1)]),(0,t.Lk)("p",null,[Ll,(0,t.Lk)("span",Pl,(0,n.v_)(o.state.values.Broadcast),1)]),(0,t.Lk)("p",null,[Il,(0,t.Lk)("span",Ml,(0,n.v_)(o.state.values.Count),1)])])])),_:1}),o.hasLease?((0,t.uX)(),(0,t.Wv)(d,{key:0,label:"",prop:"Btns"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(i,{onClick:l[3]||(l[3]=e=>o.state.show=!1)},{default:(0,t.k6)((()=>[(0,t.eW)("取消")])),_:1}),(0,t.bF)(i,{type:"primary",onClick:o.handleSave},{default:(0,t.k6)((()=>[(0,t.eW)("确认")])),_:1},8,["onClick"])])])),_:1})):(0,t.Q3)("",!0)])),_:1},8,["model","rules"])])])),_:1},8,["modelValue"])}var Sl={props:["modelValue"],emits:["change","update:modelValue"],components:{Delete:F.epd,Plus:F.FWt},setup(e,{emit:l}){const a=(0,d.B)(),n=(0,t.EW)((()=>a.value.hasAccess("Lease"))),o=(0,u.KR)(null),r=(0,u.Kh)({show:!0,ruleForm:{Name:"",IP:"0.0.0.0",PrefixLength:24},rules:{Name:{type:"string",pattern:/^$|^[A-Za-z][A-Za-z0-9]{0,31}$/,message:"请输入正确的网卡名",transform(e){return e.trim()}}},values:{}});(0,t.wB)((()=>r.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e)}),300)}));const s=()=>{(0,ce.w0)(r.ruleForm).then((e=>{r.values=e}))},c=()=>{(0,ce.Nj)().then((e=>{r.ruleForm.Name=e.Name,r.ruleForm.IP=e.IP,r.ruleForm.PrefixLength=e.PrefixLength,s()}))},h=()=>{var e=+r.ruleForm.PrefixLength;(e>32||e<16||isNaN(e))&&(e=24),r.ruleForm.PrefixLength=e,s()},m=()=>{(0,ce.AE)(r.ruleForm).then((()=>{i.nk.success("已操作"),r.show=!1})).catch((e=>{console.log(e),i.nk.error("操作失败")}))},p=()=>{(0,ce.AE)({Name:"",IP:"0.0.0.0",PrefixLength:24}).then((()=>{i.nk.success("已操作"),c()})).catch((e=>{console.log(e),i.nk.error("操作失败")}))};return(0,t.sV)((()=>{c()})),{state:r,hasLease:n,ruleFormRef:o,handleSave:m,handlePrefixLengthChange:h,handleClear:p}}};const Wl=(0,V.A)(Sl,[["render",Tl],["__scopeId","data-v-67ed3552"]]);var Al=Wl;const Xl={key:0};function Rl(e,l,a,n,o,r){const s=(0,t.g2)("Socks5Show"),d=(0,t.g2)("el-table-column");return(0,t.uX)(),(0,t.Wv)(d,{prop:"socks5",label:n.socks5.show?"代理转发":"",width:"160"},{default:(0,t.k6)((e=>[n.socks5.show&&n.socks5.list[e.row.MachineId]?((0,t.uX)(),(0,t.CE)("div",Xl,[(0,t.bF)(s,{config:!0,item:e.row,onEdit:n.handleSocks5,onRefresh:n.handleSocks5Refresh},null,8,["item","onEdit","onRefresh"])])):(0,t.Q3)("",!0)])),_:1},8,["label"])}const Nl={class:"flex"},xl={class:"flex-1"},Bl=["title"],Ul={key:0,class:"green gateway"},$l={key:1},Dl={key:0},zl={key:0,class:"flex disable",title:"已禁用"},Ol={key:1,class:"flex yellow",title:"与其它设备填写IP、或本机局域网IP有冲突"};function Ql(e,l,a,o,r,s){const d=(0,t.g2)("ConnectionShow"),u=(0,t.g2)("Loading"),i=(0,t.g2)("el-icon"),c=(0,t.g2)("el-switch");return(0,t.uX)(),(0,t.CE)("div",null,[(0,t.Lk)("div",Nl,[(0,t.Lk)("div",xl,[(0,t.bF)(d,{data:o.connections.list[o.item.MachineId],row:o.item,transitionId:"socks5"},null,8,["data","row"]),(0,t.Lk)("a",{href:"javascript:;",class:"a-line",onClick:l[0]||(l[0]=e=>o.handleSocks5Port(o.socks5.list[o.item.MachineId])),title:"此设备的socks5代理"},[o.socks5.list[o.item.MachineId].SetupError?((0,t.uX)(),(0,t.CE)("strong",{key:0,class:"red",title:o.socks5.list[o.item.MachineId].SetupError}," socks5://*:"+(0,n.v_)(o.socks5.list[o.item.MachineId].Port),9,Bl)):((0,t.uX)(),(0,t.CE)(t.FK,{key:1},[o.item.Connected&&o.socks5.list[o.item.MachineId].running?((0,t.uX)(),(0,t.CE)("strong",Ul,"socks5://*:"+(0,n.v_)(o.socks5.list[o.item.MachineId].Port),1)):((0,t.uX)(),(0,t.CE)("span",$l,"socks5://*:"+(0,n.v_)(o.socks5.list[o.item.MachineId].Port),1))],64))])]),o.socks5.list[o.item.MachineId].loading?((0,t.uX)(),(0,t.CE)("div",Dl,[(0,t.bF)(i,{size:"14",class:"loading"},{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})])):((0,t.uX)(),(0,t.Wv)(c,{key:1,"model-value":o.item.Connected&&o.socks5.list[o.item.MachineId].running,loading:o.socks5.list[o.item.MachineId].loading,disabled:"",onClick:l[1]||(l[1]=e=>o.handleSocks5(o.socks5.list[o.item.MachineId])),size:"small","inline-prompt":"","active-text":"😀","inactive-text":"😣"},null,8,["model-value","loading"]))]),(0,t.Lk)("div",null,[(0,t.Lk)("div",null,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(o.socks5.list[o.item.MachineId].Lans,((e,l)=>((0,t.uX)(),(0,t.CE)(t.FK,{key:l},[e.Disabled?((0,t.uX)(),(0,t.CE)("div",zl,(0,n.v_)(e.IP)+" / "+(0,n.v_)(e.PrefixLength),1)):e.Exists?((0,t.uX)(),(0,t.CE)("div",Ol,(0,n.v_)(e.IP)+" / "+(0,n.v_)(e.PrefixLength),1)):((0,t.uX)(),(0,t.CE)("div",{key:2,class:(0,n.C4)(["flex green",{green:o.item.Connected&&o.socks5.list[o.item.MachineId].running}]),title:"正常使用"},(0,n.v_)(e.IP)+" / "+(0,n.v_)(e.PrefixLength),3))],64)))),128))])])])}var jl=a(99983),Kl=a(6132),Gl={props:["item","config"],emits:["edit","refresh"],components:{Loading:F.Rhj,ConnectionShow:Kl.A},setup(e,{emit:l}){const a=b(),n=(0,d.B)(),o=(0,t.EW)((()=>n.value.config.Client.Id)),r=(0,t.EW)((()=>n.value.hasAccess("Socks5ChangeSelf"))),s=(0,t.EW)((()=>n.value.hasAccess("Socks5ChangeOther"))),u=(0,t.EW)((()=>n.value.hasAccess("Socks5StatusSelf"))),c=(0,t.EW)((()=>n.value.hasAccess("Socks5StatusOther"))),h=(0,jl.bB)(),m=l=>{if(!e.config)return;if(o.value===l.MachineId){if(!u.value)return void i.nk.success("无权限")}else if(!c.value)return void i.nk.success("无权限");const a=e.item.Connected&&l.running?(0,k.R2)(l.MachineId):(0,k.qH)(l.MachineId);l.loading=!0,a.then((()=>{i.nk.success("操作成功!")})).catch((e=>{console.log(e),i.nk.error("操作失败!")}))},p=a=>{if(e.config||o.value==a.MachineId){if(o.value===a.MachineId){if(!r.value)return void i.nk.success("无权限")}else if(!s.value)return void i.nk.success("无权限");a.device=e.item,l("edit",a)}},g=()=>{l("refresh")};return{item:(0,t.EW)((()=>e.item)),socks5:a,connections:h,handleSocks5:m,handleSocks5Port:p,handleSocks5Refresh:g}}};const ql=(0,V.A)(Gl,[["render",Ql],["__scopeId","data-v-878a681e"]]);var Hl=ql,Jl={emits:["edit","refresh"],components:{Socks5Show:Hl},setup(e,{emit:l}){const a=b(),t=e=>{l("edit",e)},n=()=>{l("refresh")};return{socks5:a,handleSocks5:t,handleSocks5Refresh:n}}};const Zl=(0,V.A)(Jl,[["render",Rl]]);var Yl=Zl;const ea={class:"upgrade-wrap"},la={class:"t-c w-100"};function aa(e,l,a,n,o,r){const s=(0,t.g2)("el-form-item"),d=(0,t.g2)("el-input"),u=(0,t.g2)("Socks5Lan"),i=(0,t.g2)("el-button"),c=(0,t.g2)("el-form"),h=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(h,{modelValue:n.state.show,"onUpdate:modelValue":l[2]||(l[2]=e=>n.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:`设置[${n.state.machineName}]代理`,top:"1vh",width:"700"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(c,{ref:"ruleFormRef",model:n.state.ruleForm,rules:n.state.rules,"label-width":"140"},{default:(0,t.k6)((()=>[(0,t.bF)(s,{prop:"gateway",style:{"margin-bottom":"0"}},{default:(0,t.k6)((()=>[(0,t.eW)(" 配置代理,通过代理访问其它设备 ")])),_:1}),(0,t.bF)(s,{label:"代理端口",prop:"Port"},{default:(0,t.k6)((()=>[(0,t.bF)(d,{modelValue:n.state.ruleForm.Port,"onUpdate:modelValue":l[0]||(l[0]=e=>n.state.ruleForm.Port=e),style:{width:"14rem"}},null,8,["modelValue"])])),_:1}),(0,t.Lk)("div",ea,[(0,t.bF)(u,{ref:"socks5Dom"},null,512)]),(0,t.bF)(s,{label:"",prop:"Btns","label-width":"0"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",la,[(0,t.bF)(i,{onClick:l[1]||(l[1]=e=>n.state.show=!1)},{default:(0,t.k6)((()=>[(0,t.eW)("取消")])),_:1}),(0,t.bF)(i,{type:"primary",onClick:n.handleSave},{default:(0,t.k6)((()=>[(0,t.eW)("确认")])),_:1},8,["onClick"])])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue","title"])}const ta={class:"w-100"},na={class:"wrap"},oa=["onClick"],ra=["title"],sa={key:1},da=["onClick"],ua=["onClick"],ia=["title"],ca={key:1},ha=["onClick"],ma=["title"],pa={key:1},ga=["onClick"],wa=["onClick"],ka=["title"],va={key:1};function fa(e,l,a,o,r,s){const d=(0,t.g2)("el-input"),u=(0,t.g2)("Delete"),i=(0,t.g2)("el-icon"),c=(0,t.g2)("el-table-column"),h=(0,t.g2)("el-checkbox"),m=(0,t.g2)("el-button"),p=(0,t.g2)("el-popconfirm"),g=(0,t.g2)("Plus"),w=(0,t.g2)("el-table");return(0,t.uX)(),(0,t.CE)("div",ta,[(0,t.Lk)("div",na,[(0,t.bF)(w,{stripe:"",data:o.state.lans,border:"",size:"small",width:"100%",height:"400px",onCellDblclick:o.handleCellClick},{default:(0,t.k6)((()=>[(0,t.bF)(c,{prop:"IP",label:"路由IP",width:"120"},{default:(0,t.k6)((e=>[e.row.IPEditing?((0,t.uX)(),(0,t.Wv)(d,{key:0,autofocus:"",size:"small",modelValue:e.row.IP,"onUpdate:modelValue":l=>e.row.IP=l,onBlur:l=>o.handleEditBlur(e.row,"IP")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"IP")},[e.row.Error?((0,t.uX)(),(0,t.CE)("strong",{key:0,title:e.row.Error,class:"red"},(0,n.v_)(e.row.IP),9,ra)):((0,t.uX)(),(0,t.CE)("span",sa,[(0,t.eW)((0,n.v_)(e.row.IP)+" ",1),(0,t.Lk)("a",{href:"javascript:;",onClick:(0,he.D$)((l=>e.row.IP="0.0.0.0"),["stop"])},[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})],8,da)]))],8,oa))])),_:1}),(0,t.bF)(c,{prop:"PrefixLength",label:"路由掩码",width:"80"},{default:(0,t.k6)((e=>[e.row.PrefixLengthEditing?((0,t.uX)(),(0,t.Wv)(d,{key:0,autofocus:"",size:"small",modelValue:e.row.PrefixLength,"onUpdate:modelValue":l=>e.row.PrefixLength=l,onBlur:l=>o.handleEditBlur(e.row,"PrefixLength")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"PrefixLength")},[e.row.Error?((0,t.uX)(),(0,t.CE)("strong",{key:0,title:e.row.Error,class:"red"},(0,n.v_)(e.row.PrefixLength),9,ia)):((0,t.uX)(),(0,t.CE)("span",ca,(0,n.v_)(e.row.PrefixLength),1))],8,ua))])),_:1}),(0,t.bF)(c,{prop:"MapIP",label:"目标IP",width:"120"},{default:(0,t.k6)((e=>[e.row.MapIPEditing?((0,t.uX)(),(0,t.Wv)(d,{key:0,autofocus:"",size:"small",modelValue:e.row.MapIP,"onUpdate:modelValue":l=>e.row.MapIP=l,onBlur:l=>o.handleEditBlur(e.row,"MapIP")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"MapIP")},[e.row.Error?((0,t.uX)(),(0,t.CE)("strong",{key:0,title:e.row.Error,class:"red"},(0,n.v_)(e.row.MapIP),9,ma)):((0,t.uX)(),(0,t.CE)("span",pa,[(0,t.eW)((0,n.v_)(e.row.MapIP)+" ",1),(0,t.Lk)("a",{href:"javascript:;",onClick:(0,he.D$)((l=>e.row.MapIP="0.0.0.0"),["stop"])},[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})],8,ga)]))],8,ha))])),_:1}),(0,t.bF)(c,{prop:"MapPrefixLength",label:"目标掩码",width:"80"},{default:(0,t.k6)((e=>[e.row.MapPrefixLengthEditing?((0,t.uX)(),(0,t.Wv)(d,{key:0,autofocus:"",size:"small",modelValue:e.row.MapPrefixLength,"onUpdate:modelValue":l=>e.row.MapPrefixLength=l,onBlur:l=>o.handleEditBlur(e.row,"MapPrefixLength")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"MapPrefixLength")},[e.row.Error?((0,t.uX)(),(0,t.CE)("strong",{key:0,title:e.row.Error,class:"red"},(0,n.v_)(e.row.MapPrefixLength),9,ka)):((0,t.uX)(),(0,t.CE)("span",va,(0,n.v_)(e.row.MapPrefixLength),1))],8,wa))])),_:1}),(0,t.bF)(c,{prop:"Disabled",label:"禁用"},{default:(0,t.k6)((e=>[(0,t.bF)(h,{modelValue:e.row.Disabled,"onUpdate:modelValue":l=>e.row.Disabled=l,label:"禁用"},null,8,["modelValue","onUpdate:modelValue"])])),_:1}),(0,t.bF)(c,{prop:"Oper",label:"操作",width:"110"},{default:(0,t.k6)((e=>[(0,t.Lk)("div",null,[(0,t.bF)(p,{title:"删除不可逆,是否确认?",onConfirm:l=>o.handleDel(e.$index)},{reference:(0,t.k6)((()=>[(0,t.bF)(m,{type:"danger",size:"small"},{default:(0,t.k6)((()=>[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})])),_:1})])),_:2},1032,["onConfirm"]),(0,t.bF)(m,{type:"primary",size:"small",onClick:l=>o.handleAdd(e.$index)},{default:(0,t.k6)((()=>[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(g)])),_:1})])),_:2},1032,["onClick"])])])),_:1})])),_:1},8,["data","onCellDblclick"])])])}var ba={props:["modelValue"],emits:["update:modelValue"],components:{Delete:F.epd,Plus:F.FWt,Warning:F.N5l,Refresh:F.C42},setup(e){const l=b(),a=(0,u.Kh)({lans:l.value.current.Lans.slice(0).map((e=>(e.MapIP=e.MapIP||"0.0.0.0",e.MapPrefixLength=e.MapPrefixLength||24,e)))});0==a.lans.length&&a.lans.push({IP:"0.0.0.0",PrefixLength:24,MapIP:"0.0.0.0",MapPrefixLength:24});const t=(e,l)=>{n(e,l.property)},n=(e,l)=>{a.lans.forEach((e=>{e["IPEditing"]=!1,e["PrefixLengthEditing"]=!1,e["MapIPEditing"]=!1,e["MapPrefixLengthEditing"]=!1})),e[`${l}Editing`]=!0,e["__editing"]=!0},o=(e,l)=>{if(e[`${l}Editing`]=!1,e["__editing"]=!1,"PrefixLength"==l||"MapPrefixLength"==l){var a=+e[l];(a>32||a<0||isNaN(a))&&(a=24),e[l]=a}},r=e=>{a.lans.splice(e,1),0==a.lans.length&&s(0)},s=e=>{a.lans.splice(e+1,0,{IP:"0.0.0.0",PrefixLength:24,MapIP:"0.0.0.0",MapPrefixLength:24})},d=()=>a.lans.map((e=>(e.PrefixLength=+e.PrefixLength,e)));return{state:a,handleDel:r,handleAdd:s,getData:d,handleCellClick:t,handleEditBlur:o,handleEdit:n}}};const Ca=(0,V.A)(ba,[["render",fa]]);var Fa=Ca,ya={props:["modelValue"],emits:["change","update:modelValue"],components:{Socks5Lan:Fa},setup(e,{emit:l}){const a=(0,d.B)(),n=b(),o=(0,u.KR)(null),r=(0,u.Kh)({show:!0,machineName:n.value.current.device.MachineName,bufferSize:a.value.bufferSize,ruleForm:{Port:n.value.current.Port,Lans:[]},rules:{}});0==r.ruleForm.Lans.length&&r.ruleForm.Lans.push({IP:"0.0.0.0",PrefixLength:24}),(0,t.wB)((()=>r.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e)}),300)}));const s=(0,u.KR)(null),c=()=>{const e=JSON.parse(JSON.stringify(n.value.current));e.Port=+(r.ruleForm.Port||"1805"),e.Lans=s.value.getData(),(0,k._Q)(e).then((()=>{r.show=!1,i.nk.success("已操作!"),l("change")})).catch((e=>{console.log(e),i.nk.error("操作失败!")}))};return{state:r,ruleFormRef:o,socks5Dom:s,handleSave:c}}};const Va=(0,V.A)(ya,[["render",aa],["__scopeId","data-v-2ea91b4b"]]);var Ea=Va;const _a=["title","src"],La={key:1,title:"?",class:"system",src:"/system.svg"},Pa=["title","src"],Ia={key:3,title:"?",class:"system",src:"/system.svg"},Ma=["title"],Ta={key:5,title:"?",class:"system",src:"/system.svg"},Sa={class:"flex"},Wa=["title","onClick"];function Aa(e,l,a,o,r,s){const d=(0,t.g2)("el-table-column");return(0,t.uX)(),(0,t.Wv)(d,{prop:"tunnel",label:"网络",width:"76"},{default:(0,t.k6)((e=>[o.tunnel.list[e.row.MachineId]?((0,t.uX)(),(0,t.CE)(t.FK,{key:0},[(0,t.Lk)("div",null,[o.tunnel.list[e.row.MachineId].Net.CountryCode?((0,t.uX)(),(0,t.CE)("img",{key:0,title:`${o.tunnel.list[e.row.MachineId].Net.CountryCode}、${o.tunnel.list[e.row.MachineId].Net.City}`,class:"system",src:`https://unpkg.com/flag-icons@7.2.3/flags/4x3/${o.tunnel.list[e.row.MachineId].Net.CountryCode.toLowerCase()}.svg`},null,8,_a)):((0,t.uX)(),(0,t.CE)("img",La)),o.tunnel.list[e.row.MachineId].Net.Isp?((0,t.uX)(),(0,t.CE)("img",{key:2,title:`${o.tunnel.list[e.row.MachineId].Net.Isp}`,class:"system",src:o.netImg(o.tunnel.list[e.row.MachineId].Net)},null,8,Pa)):((0,t.uX)(),(0,t.CE)("img",Ia)),o.tunnel.list[e.row.MachineId].Net.Nat?((0,t.uX)(),(0,t.CE)("span",{key:4,class:"nat",title:o.tunnel.list[e.row.MachineId].Net.Nat},(0,n.v_)(o.natMap[o.tunnel.list[e.row.MachineId].Net.Nat]),9,Ma)):((0,t.uX)(),(0,t.CE)("img",Ta))]),(0,t.Lk)("div",Sa,[(0,t.Lk)("a",{href:"javascript:;",class:(0,n.C4)(["a-line",{yellow:o.tunnel.list[e.row.MachineId].NeedReboot}]),title:o.title(o.tunnel.list[e.row.MachineId]),onClick:l=>o.handleTunnel(o.tunnel.list[e.row.MachineId],e.row)},[(0,t.Lk)("span",null,"跳点:"+(0,n.v_)(o.tunnel.list[e.row.MachineId].RouteLevel)+"+"+(0,n.v_)(o.tunnel.list[e.row.MachineId].RouteLevelPlus),1)],10,Wa)])],64)):(0,t.Q3)("",!0)])),_:1})}var Xa=a(18566),Ra={emits:["edit","refresh"],setup(e,{emit:l}){const a=(0,d.B)(),n=(0,t.EW)((()=>a.value.config.Client.Id)),o=(0,t.EW)((()=>a.value.hasAccess("TunnelChangeSelf"))),r=(0,t.EW)((()=>a.value.hasAccess("TunnelChangeOther"))),s=(0,Xa.e)(),u=((0,jl.ZY)(),(0,jl.mx)()),c=(0,jl.FG)(),h=(0,jl.bB)(),m=e=>{let l=["调整网关层级有助于打洞成功"];return e.NeedReboot?"需要重启":l.join("\r\n")},p={chinanet:"chinanet.svg",china169:"chinanet.svg","china telecom":"chinanet.svg","china unicom":"chinaunicom.svg","china mobile":"chinamobile.svg",huawei:"huawei.svg",amazon:"amazon.svg",aliyun:"aliyun.svg",alibaba:"aliyun.svg",jdcom:"jdcom.svg"},g=new RegExp(Object.keys(p).map((e=>`\\b${e}\\b`)).join("|")),w=e=>{const l=e.Isp.toLowerCase();if(l){const e=l.match(g);if(e)return`./${p[e[0]]}`}return"./system.svg"},k={Unknown:"?",UnsupportedServer:"?",UdpBlocked:"?",OpenInternet:"?",SymmetricUdpFirewall:"?",FullCone:"1",RestrictedCone:"2",PortRestrictedCone:"3",Symmetric:"4"},v=e=>{const l=[u.value.list[e],c.value.list[e],h.value.list[e]].filter((e=>!!e&&e.Connected)).length;return l},f=(e,a)=>{if(n.value===e.MachineId){if(!o.value)return void i.nk.success("无权限")}else if(!r.value)return void i.nk.success("无权限");e.device=a,l("edit",e)},b=()=>{l("refresh")},C=e=>{l("connections",e)};return{tunnel:s,handleTunnel:f,handleTunnelRefresh:b,connectionCount:v,handleConnections:C,title:m,netImg:w,natMap:k}}};const Na=(0,V.A)(Ra,[["render",Aa],["__scopeId","data-v-0e8bb9bd"]]);var xa=Na;const Ba=e=>((0,t.Qi)("data-v-6941c158"),e=e(),(0,t.jt)(),e),Ua=Ba((()=>(0,t.Lk)("div",null,"网关层级为你的设备与外网的距离,你可以手动调整数值",-1))),$a={class:"pdl-20"},Da=Ba((()=>(0,t.Lk)("h3",null,"跳跃点",-1))),za={class:"pdl-20"},Oa={class:"t-c w-100"};function Qa(e,l,a,o,r,s){const d=(0,t.g2)("el-form-item"),u=(0,t.g2)("el-input"),i=(0,t.g2)("el-col"),c=(0,t.g2)("el-input-number"),h=(0,t.g2)("el-row"),m=(0,t.g2)("el-button"),p=(0,t.g2)("el-form"),g=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(g,{modelValue:o.state.show,"onUpdate:modelValue":l[5]||(l[5]=e=>o.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:`设置[${o.state.machineName}]网关`,width:"560",top:"2vh"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(p,{ref:"ruleFormRef",model:o.state.ruleForm,rules:o.state.rules,"label-width":"auto"},{default:(0,t.k6)((()=>[(0,t.bF)(d,{label:"",prop:"alert"},{default:(0,t.k6)((()=>[Ua])),_:1}),(0,t.bF)(d,{label:""},{default:(0,t.k6)((()=>[(0,t.bF)(h,null,{default:(0,t.k6)((()=>[(0,t.bF)(i,{span:12},{default:(0,t.k6)((()=>[(0,t.bF)(d,{label:"网关层级",prop:"RouteLevel"},{default:(0,t.k6)((()=>[(0,t.bF)(u,{readonly:"",modelValue:o.state.ruleForm.RouteLevel,"onUpdate:modelValue":l[0]||(l[0]=e=>o.state.ruleForm.RouteLevel=e),style:{width:"15rem"}},null,8,["modelValue"])])),_:1})])),_:1}),(0,t.bF)(i,{span:12},{default:(0,t.k6)((()=>[(0,t.bF)(d,{label:"加上",prop:"RouteLevelPlus"},{default:(0,t.k6)((()=>[(0,t.bF)(c,{modelValue:o.state.ruleForm.RouteLevelPlus,"onUpdate:modelValue":l[1]||(l[1]=e=>o.state.ruleForm.RouteLevelPlus=e)},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),(0,t.bF)(d,{label:""},{default:(0,t.k6)((()=>[(0,t.bF)(h,null,{default:(0,t.k6)((()=>[(0,t.bF)(i,{span:12},{default:(0,t.k6)((()=>[(0,t.bF)(d,{label:"外网端口",prop:"PortMapWan"},{default:(0,t.k6)((()=>[(0,t.bF)(c,{modelValue:o.state.ruleForm.PortMapWan,"onUpdate:modelValue":l[2]||(l[2]=e=>o.state.ruleForm.PortMapWan=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,t.bF)(i,{span:12},{default:(0,t.k6)((()=>[(0,t.bF)(d,{label:"内网端口",prop:"PortMapLan"},{default:(0,t.k6)((()=>[(0,t.bF)(c,{modelValue:o.state.ruleForm.PortMapLan,"onUpdate:modelValue":l[3]||(l[3]=e=>o.state.ruleForm.PortMapLan=e)},null,8,["modelValue"])])),_:1})])),_:1})])),_:1})])),_:1}),o.state.net.HostName?((0,t.uX)(),(0,t.Wv)(d,{key:0,label:"",prop:"alert"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.Lk)("h3",null,(0,n.v_)(o.state.net.HostName),1),(0,t.Lk)("ul",null,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(o.state.net.Lans.filter((e=>e.Ips.length>0)),((e,l)=>((0,t.uX)(),(0,t.CE)("li",null,[(0,t.Lk)("div",null,"【"+(0,n.v_)(e.Mac||"00-00-00-00-00-00")+"】"+(0,n.v_)(e.Desc),1),(0,t.Lk)("div",$a,(0,n.v_)(e.Ips.join("、")),1)])))),256))]),Da,(0,t.Lk)("div",za,(0,n.v_)(o.state.net.Routes.join("、")),1)])])),_:1})):(0,t.Q3)("",!0),(0,t.bF)(d,{label:"",prop:"Btns"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",Oa,[(0,t.bF)(m,{onClick:l[4]||(l[4]=e=>o.state.show=!1)},{default:(0,t.k6)((()=>[(0,t.eW)("取消")])),_:1}),(0,t.bF)(m,{type:"primary",onClick:o.handleSave},{default:(0,t.k6)((()=>[(0,t.eW)("确认")])),_:1},8,["onClick"])])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue","title"])}var ja=a(90083),Ka={props:["modelValue"],emits:["change","update:modelValue"],setup(e,{emit:l}){const a=(0,Xa.e)(),n=(0,u.KR)(null),o=(0,u.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:{},net:{}});(0,t.wB)((()=>o.show),(e=>{e||setTimeout((()=>{l("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,ja.KW)(e).then((()=>{o.show=!1,i.nk.success("已操作!"),l("change")})).catch((e=>{console.log(e),i.nk.error("操作失败!")}))};return(0,t.sV)((()=>{(0,ja.Zu)(a.value.current.MachineId).then((e=>{o.net=e})).catch((()=>{}))})),{state:o,ruleFormRef:n,handleSave:r,tunnel:a}}};const Ga=(0,V.A)(Ka,[["render",Qa],["__scopeId","data-v-6941c158"]]);var qa=Ga;const Ha={class:"nowrap"},Ja=["onClick"],Za={class:"nowrap"},Ya=["onClick"],et={class:"nowrap"},lt=["onClick"],at={class:"nowrap"},tt=["onClick"];function nt(e,l,a,o,r,s){const d=(0,t.g2)("ConnectionShow"),u=(0,t.g2)("el-table-column");return(0,t.uX)(),(0,t.Wv)(u,{prop:"forward",label:o.forward.show?"转发/穿透":""},{default:(0,t.k6)((l=>[o.forward.show&&l.row.Connected?((0,t.uX)(),(0,t.CE)(t.FK,{key:0},[l.row.isSelf&&(o.hasForwardShowSelf||e.hasForwardSelf)?((0,t.uX)(),(0,t.CE)(t.FK,{key:0},[(0,t.Lk)("div",Ha,[(0,t.bF)(d,{data:o.connections.list[l.row.MachineId],row:l.row,transitionId:"forward"},null,8,["data","row"]),(0,t.Lk)("a",{href:"javascript:;",title:"管理自己的端口转发",class:(0,n.C4)({green:o.forward.list[l.row.MachineId]>0}),onClick:e=>o.handleEdit(l.row.MachineId,l.row.MachineName)},[(0,t.Lk)("span",{class:(0,n.C4)({gateway:o.forward.list[l.row.MachineId]>0})},"端口转发("+(0,n.v_)(o.forward.list[l.row.MachineId]>99?"99+":o.forward.list[l.row.MachineId])+")",3)],10,Ja)]),(0,t.Lk)("div",Za,[(0,t.Lk)("a",{href:"javascript:;",title:"管理自己的内网穿透",class:(0,n.C4)({green:o.sforward.list[l.row.MachineId]>0}),onClick:e=>o.handleSEdit(l.row.MachineId,l.row.MachineName)},[(0,t.Lk)("span",{class:(0,n.C4)({gateway:o.sforward.list[l.row.MachineId]>0})},"内网穿透("+(0,n.v_)(o.sforward.list[l.row.MachineId]>99?"99+":o.sforward.list[l.row.MachineId])+")",3)],10,Ya)])],64)):o.hasForwardShowOther||e.hasForwardOther?((0,t.uX)(),(0,t.CE)(t.FK,{key:1},[(0,t.Lk)("div",et,[(0,t.bF)(d,{data:o.connections.list[l.row.MachineId],row:l.row,transitionId:"forward"},null,8,["data","row"]),(0,t.Lk)("a",{href:"javascript:;",title:"管理自己的端口转发",class:(0,n.C4)({green:o.forward.list[l.row.MachineId]>0}),onClick:e=>o.handleEdit(l.row.MachineId,l.row.MachineName)},[(0,t.Lk)("span",{class:(0,n.C4)({gateway:o.forward.list[l.row.MachineId]>0})},"端口转发("+(0,n.v_)(o.forward.list[l.row.MachineId]>99?"99+":o.forward.list[l.row.MachineId])+")",3)],10,lt)]),(0,t.Lk)("div",at,[(0,t.Lk)("a",{href:"javascript:;",title:"管理自己的内网穿透",class:(0,n.C4)({green:o.sforward.list[l.row.MachineId]>0}),onClick:e=>o.handleSEdit(l.row.MachineId,l.row.MachineName)},[(0,t.Lk)("span",{class:(0,n.C4)({gateway:o.sforward.list[l.row.MachineId]>0})},"内网穿透("+(0,n.v_)(o.sforward.list[l.row.MachineId]>99?"99+":o.sforward.list[l.row.MachineId])+")",3)],10,tt)])],64)):(0,t.Q3)("",!0)],64)):(0,t.Q3)("",!0)])),_:1},8,["label"])}var ot=a(70743);const rt=Symbol(),st=()=>{const e=(0,d.B)(),l=((0,t.EW)((()=>e.value.config.Client.Id)),(0,u.KR)({timer:0,showEdit:!1,showCopy:!1,list:{},testTimer:0,hashcode:0,machineid:"",machineName:""}));(0,t.Gt)(rt,l);const a=()=>{(0,ot.a9)()},n=()=>{clearTimeout(l.value.timer),(0,ot.gz)(l.value.hashcode.toString()).then((e=>{l.value.hashcode=e.HashCode,e.List&&(l.value.list=e.List),l.value.timer=setTimeout(n,1020)})).catch((()=>{l.value.timer=setTimeout(n,1020)}))},o=e=>{l.value.machineid=e[0],l.value.machineName=e[1],l.value.showEdit=!0},r=()=>{clearTimeout(l.value.timer),clearTimeout(l.value.testTimer)};return{sforward:l,_getSForwardCountInfo:n,handleSForwardEdit:o,clearSForwardTimeout:r,handleSForwardRefresh:a}},dt=()=>(0,t.WQ)(rt);var ut={emits:["edit","sedit"],components:{ConnectionShow:Kl.A},setup(e,{emit:l}){const a=w(),n=dt(),o=(0,d.B)(),r=(0,t.EW)((()=>o.value.config.Client.Id)),s=(0,t.EW)((()=>o.value.hasAccess("ForwardShowSelf"))),u=(0,t.EW)((()=>o.value.hasAccess("ForwardShowOther"))),c=(0,t.EW)((()=>o.value.hasAccess("ForwardSelf"))),h=(0,t.EW)((()=>o.value.hasAccess("ForwardOther"))),m=(0,jl.mx)(),p=(e,a)=>{if(r.value===e){if(!c.value)return void i.nk.success("无权限")}else if(!h.value)return void i.nk.success("无权限");l("edit",[e,a])},g=(e,a)=>{if(r.value===e){if(!c.value)return void i.nk.success("无权限")}else if(!h.value)return void i.nk.success("无权限");l("sedit",[e,a])},k=()=>{l("refresh")};return{forward:a,sforward:n,hasForwardShowSelf:s,hasForwardShowOther:u,connections:m,handleEdit:p,handleSEdit:g,handleForwardRefresh:k}}};const it=(0,V.A)(ut,[["render",nt],["__scopeId","data-v-26db2314"]]);var ct=it;const ht={class:"t-c head"},mt=["onClick"],pt=["onClick"],gt=["onClick"],wt=["onClick"],kt=["title"],vt={class:"t-c"},ft={class:"page-wrap"},bt=["onClick"],Ct={key:0},Ft={key:1,class:"error red",title:"off line"},yt=["onClick"],Vt=["title"];function Et(e,l,a,o,r,s){const d=(0,t.g2)("el-button"),u=(0,t.g2)("el-input"),i=(0,t.g2)("el-table-column"),c=(0,t.g2)("el-option"),h=(0,t.g2)("el-select"),m=(0,t.g2)("el-pagination"),p=(0,t.g2)("el-switch"),g=(0,t.g2)("Delete"),w=(0,t.g2)("el-icon"),k=(0,t.g2)("el-popconfirm"),v=(0,t.g2)("el-table"),f=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(f,{modelValue:o.state.show,"onUpdate:modelValue":l[0]||(l[0]=e=>o.state.show=e),onOpen:o.handleOnShowList,"append-to":".app-wrap",title:`【${o.state.machineName}】的端口转发`,top:"1vh",width:"780"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.Lk)("div",ht,[(0,t.bF)(d,{type:"success",size:"small",onClick:o.handleAdd,loading:o.state.loading},{default:(0,t.k6)((()=>[(0,t.eW)("添加")])),_:1},8,["onClick","loading"]),(0,t.bF)(d,{size:"small",onClick:o.handleRefresh},{default:(0,t.k6)((()=>[(0,t.eW)("刷新")])),_:1},8,["onClick"])]),(0,t.bF)(v,{data:o.state.data,size:"small",border:"",height:"500",onCellDblclick:o.handleCellClick},{default:(0,t.k6)((()=>[(0,t.bF)(i,{property:"Name",label:"名称",width:"100"},{default:(0,t.k6)((e=>[e.row.NameEditing&&0==e.row.Started?((0,t.uX)(),(0,t.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":l=>e.row.Name=l,onBlur:l=>o.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"Name")},(0,n.v_)(e.row.Name||"未知"),9,mt))])),_:1}),(0,t.bF)(i,{prop:"BufferSize",label:"缓冲区",width:"80"},{default:(0,t.k6)((e=>[e.row.BufferSizeEditing&&0==e.row.Started?((0,t.uX)(),(0,t.Wv)(h,{key:0,modelValue:e.row.BufferSize,"onUpdate:modelValue":l=>e.row.BufferSize=l,placeholder:"Select",size:"small",disabled:e.row.Started,onChange:l=>o.handleEditBlur(e.row,"BufferSize")},{default:(0,t.k6)((()=>[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(o.state.bufferSize,((e,l)=>((0,t.uX)(),(0,t.Wv)(c,{key:l,label:e,value:l},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","disabled","onChange"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"BufferSize")},(0,n.v_)(o.state.bufferSize[e.row.BufferSize]),9,pt))])),_:1}),(0,t.bF)(i,{property:"BindIPAddress",label:"监听IP",width:"140"},{default:(0,t.k6)((e=>[e.row.BindIPAddressEditing&&0==e.row.Started?((0,t.uX)(),(0,t.Wv)(h,{key:0,modelValue:e.row.BindIPAddress,"onUpdate:modelValue":l=>e.row.BindIPAddress=l,size:"small",disabled:e.row.Started,onChange:l=>o.handleEditBlur(e.row,"BindIPAddress")},{default:(0,t.k6)((()=>[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(o.state.ips,(e=>((0,t.uX)(),(0,t.Wv)(c,{key:e,label:e,value:e},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","disabled","onChange"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"BindIPAddress")},(0,n.v_)(e.row.BindIPAddress),9,gt))])),_:1}),(0,t.bF)(i,{property:"Port",label:"监听端口",width:"80"},{default:(0,t.k6)((e=>[e.row.PortEditing&&0==e.row.Started?((0,t.uX)(),(0,t.Wv)(u,{key:0,type:"number",autofocus:"",size:"small",modelValue:e.row.Port,"onUpdate:modelValue":l=>e.row.Port=l,onBlur:l=>o.handleEditBlur(e.row,"Port")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"Port")},[e.row.Msg?((0,t.uX)(),(0,t.CE)("div",{key:0,class:"error red",title:e.row.Msg},[(0,t.Lk)("span",null,(0,n.v_)(e.row.Port),1)],8,kt)):((0,t.uX)(),(0,t.CE)("span",{key:1,class:(0,n.C4)({green:e.row.Started})},(0,n.v_)(e.row.Port),3))],8,wt))])),_:1}),(0,t.bF)(i,{property:"MachineId",label:"目标"},{default:(0,t.k6)((e=>[e.row.MachineIdEditing&&0==e.row.Started?((0,t.uX)(),(0,t.Wv)(h,{key:0,modelValue:e.row.MachineId,"onUpdate:modelValue":l=>e.row.MachineId=l,onChange:l=>o.handleEditBlur(e.row,"MachineId"),filterable:"",remote:"",loading:o.state.loading,"remote-method":o.handleSearch},{header:(0,t.k6)((()=>[(0,t.Lk)("div",vt,[(0,t.Lk)("div",ft,[(0,t.bF)(m,{small:"",background:"",layout:"prev, pager, next","page-size":o.state.machineIds.Request.Size,total:o.state.machineIds.Count,"pager-count":5,"current-page":o.state.machineIds.Request.Page,onCurrentChange:o.handlePageChange},null,8,["page-size","total","current-page","onCurrentChange"])])])])),default:(0,t.k6)((()=>[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(o.state.machineIds.List,((e,l)=>((0,t.uX)(),(0,t.Wv)(c,{key:l,label:e.MachineName,value:e.MachineId},null,8,["label","value"])))),128))])),_:2},1032,["modelValue","onUpdate:modelValue","onChange","loading","remote-method"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"MachineId")},[o.state.names[e.row.MachineId]?((0,t.uX)(),(0,t.CE)("span",Ct,(0,n.v_)(e.row.MachineName||"未知"),1)):((0,t.uX)(),(0,t.CE)("span",Ft,(0,n.v_)(e.row.MachineName||"未知"),1))],8,bt))])),_:1}),(0,t.bF)(i,{property:"TargetEP",label:"目标服务",width:"140"},{default:(0,t.k6)((e=>[e.row.TargetEPEditing&&0==e.row.Started?((0,t.uX)(),(0,t.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.TargetEP,"onUpdate:modelValue":l=>e.row.TargetEP=l,onBlur:l=>o.handleEditBlur(e.row,"TargetEP")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"TargetEP")},[e.row.TargetMsg?((0,t.uX)(),(0,t.CE)("div",{key:0,class:"error red",title:e.row.TargetMsg},[(0,t.Lk)("span",null,(0,n.v_)(e.row.TargetEP),1)],8,Vt)):((0,t.uX)(),(0,t.CE)("span",{key:1,class:(0,n.C4)({green:e.row.Started})},(0,n.v_)(e.row.TargetEP),3))],8,yt))])),_:1}),(0,t.bF)(i,{property:"Started",label:"状态",width:"60"},{default:(0,t.k6)((e=>[(0,t.bF)(p,{modelValue:e.row.Started,"onUpdate:modelValue":l=>e.row.Started=l,onChange:l=>o.handleStartChange(e.row),"inline-prompt":"","active-text":"开","inactive-text":"关"},null,8,["modelValue","onUpdate:modelValue","onChange"])])),_:1}),(0,t.bF)(i,{label:"操作",width:"54"},{default:(0,t.k6)((e=>[(0,t.bF)(k,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"删除不可逆,是否确认?",onConfirm:l=>o.handleDel(e.row.Id)},{reference:(0,t.k6)((()=>[(0,t.bF)(d,{type:"danger",size:"small"},{default:(0,t.k6)((()=>[(0,t.bF)(w,null,{default:(0,t.k6)((()=>[(0,t.bF)(g)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data","onCellDblclick"])])])),_:1},8,["modelValue","onOpen","title"])}var _t={props:["data","modelValue"],emits:["update:modelValue"],components:{Delete:F.epd},setup(e,{emit:l}){const a=(0,d.B)(),n=w(),o=(0,u.Kh)({show:!0,machineId:n.value.machineId,machineName:n.value.machineName,data:[],ips:[],bufferSize:a.value.bufferSize,loading:!1,machineIds:{Request:{Page:1,Size:10,Name:""},Count:0,List:[]},timer:0,timer1:0,editing:!1,names:{}});(0,t.wB)((()=>o.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e)}),300)}));const r=()=>{clearTimeout(o.timer),(0,m.lE)(n.value.machineId).then((e=>{o.timer=setTimeout(r,1e3)})).catch((()=>{o.timer=setTimeout(r,1e3)}))},s=()=>{(0,m.xD)().then((e=>{e.splice(0,0,"127.0.0.1"),e.splice(0,0,"0.0.0.0"),o.ips=e})).catch((()=>{}))},c=()=>{clearTimeout(o.timer1),0==o.editing?(0,m.Oy)(o.machineId).then((e=>{o.data=e,o.timer1=setTimeout(c,1e3)})).catch((()=>{o.timer1=setTimeout(c,1e3)})):o.timer1=setTimeout(c,1e3)},h=()=>{c(),i.nk.success("已刷新")},p=()=>{(0,Q.NT)().then((e=>{o.names=e.filter((e=>e.Online)).reduce(((e,l)=>(e[l.MachineId]=!0,e)),{})})).catch((()=>{}))},g=e=>{o.machineIds.Request.Name=e,k()},k=()=>{o.loading=!0,(0,Q.BS)(o.machineIds.Request).then((e=>{o.loading=!1,o.machineIds.Request=e.Request,o.machineIds.Count=e.Count,o.machineIds.List=e.List})).catch((e=>{o.loading=!1}))},v=e=>{o.machineIds.Request.Page=e,k()},f=()=>{k()},b=(e,l)=>{F(e,l.property)},C=()=>{_({ID:0,Name:"",Port:0,TargetEP:"127.0.0.1:80",machineId:""})},F=(e,l)=>{e.Started?i.nk.error("请先停止"):(o.data.forEach((e=>{e["NameEditing"]=!1,e["PortEditing"]=!1,e["TargetEPEditing"]=!1,e["BindIPAddressEditing"]=!1,e["BufferSizeEditing"]=!1,e["MachineIdEditing"]=!1})),e[`${l}Editing`]=!0,o.editing=!0)},y=(e,l)=>{if(e.Started)return void i.nk.error("请先停止");e[`${l}Editing`]=!1,o.editing=!1;const a=o.machineIds.List.find((l=>l.MachineId==e.MachineId));a&&(e.MachineName=a.MachineName),_(e)},V=e=>{(0,m.we)({machineId:o.machineId,Id:e}).then((()=>{c()}))},E=e=>{_(e)},_=e=>{o.loading=!0,e.Port=parseInt(e.Port),(0,m.nH)({machineId:o.machineId,data:e}).then((()=>{o.loading=!1,c()})).catch((e=>{o.loading=!1,i.nk.error(e)}))};return(0,t.sV)((()=>{c(),s(),r(),p()})),(0,t.hi)((()=>{clearTimeout(o.timer),clearTimeout(o.timer1)})),{state:o,handleOnShowList:f,handleCellClick:b,handleRefresh:h,handleAdd:C,handleEdit:F,handleEditBlur:y,handleDel:V,handleStartChange:E,handleSearch:g,handlePageChange:v}}};const Lt=(0,V.A)(_t,[["render",Et],["__scopeId","data-v-aaafd500"]]);var Pt=Lt;const It={class:"t-c head"},Mt=["onClick"],Tt={class:"plan"},St=["onClick"],Wt=["title"],At=["onClick"],Xt=["title"];function Rt(e,l,a,o,r,s){const d=(0,t.g2)("el-button"),u=(0,t.g2)("el-input"),i=(0,t.g2)("el-table-column"),c=(0,t.g2)("Select"),h=(0,t.g2)("el-icon"),m=(0,t.g2)("PlanShow"),p=(0,t.g2)("CloseBold"),g=(0,t.g2)("WarnTriangleFilled"),w=(0,t.g2)("el-switch"),k=(0,t.g2)("Delete"),v=(0,t.g2)("el-popconfirm"),f=(0,t.g2)("el-table"),b=(0,t.g2)("el-dialog"),C=(0,t.g2)("PlanList");return(0,t.uX)(),(0,t.Wv)(C,{ref:"planDom",machineid:o.machineId,category:"sforward",handles:o.state.handles},{default:(0,t.k6)((()=>[(0,t.bF)(b,{modelValue:o.state.show,"onUpdate:modelValue":l[0]||(l[0]=e=>o.state.show=e),onOpen:o.handleOnShowList,"append-to":".app-wrap",title:`【${o.machineName}】的内网穿透`,top:"2vh",width:"760"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.Lk)("div",It,[(0,t.bF)(d,{type:"success",size:"small",onClick:o.handleAdd,loading:o.state.loading},{default:(0,t.k6)((()=>[(0,t.eW)("添加")])),_:1},8,["onClick","loading"]),(0,t.bF)(d,{size:"small",onClick:o.handleRefresh},{default:(0,t.k6)((()=>[(0,t.eW)("刷新")])),_:1},8,["onClick"])]),(0,t.bF)(f,{data:o.state.data,size:"small",border:"",height:"500",onCellDblclick:o.handleCellClick},{default:(0,t.k6)((()=>[(0,t.bF)(i,{property:"Name",label:"名称"},{default:(0,t.k6)((e=>[e.row.NameEditing&&0==e.row.Started?((0,t.uX)(),(0,t.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":l=>e.row.Name=l,onBlur:l=>o.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"Name")},(0,n.v_)(e.row.Name||"未知"),9,Mt))])),_:1}),(0,t.bF)(i,{prop:"Plan",label:"开启和关闭计划",width:"200"},{default:(0,t.k6)((e=>[(0,t.Lk)("div",Tt,[(0,t.Lk)("p",null,[(0,t.bF)(h,null,{default:(0,t.k6)((()=>[(0,t.bF)(c)])),_:1}),(0,t.bF)(m,{handle:"start",keyid:e.row.Id},null,8,["keyid"])]),(0,t.Lk)("p",null,[(0,t.bF)(h,null,{default:(0,t.k6)((()=>[(0,t.bF)(p)])),_:1}),(0,t.bF)(m,{handle:"stop",keyid:e.row.Id},null,8,["keyid"])])])])),_:1}),(0,t.bF)(i,{property:"Temp",label:"服务器端口/域名",width:"160"},{default:(0,t.k6)((e=>[e.row.TempEditing&&0==e.row.Started?((0,t.uX)(),(0,t.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.Temp,"onUpdate:modelValue":l=>e.row.Temp=l,onBlur:l=>o.handleEditBlur(e.row,"Temp")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"Temp")},[e.row.Msg?((0,t.uX)(),(0,t.CE)("div",{key:0,class:"error red",title:e.row.Msg},[(0,t.Lk)("span",null,(0,n.v_)(e.row.Temp),1),(0,t.bF)(h,{size:"20"},{default:(0,t.k6)((()=>[(0,t.bF)(g)])),_:1})],8,Wt)):((0,t.uX)(),(0,t.CE)("span",{key:1,class:(0,n.C4)({green:e.row.Started})},(0,n.v_)(e.row.Temp),3))],8,St))])),_:1}),(0,t.bF)(i,{property:"LocalEP",label:"本机服务",width:"140"},{default:(0,t.k6)((e=>[e.row.LocalEPEditing&&0==e.row.Started?((0,t.uX)(),(0,t.Wv)(u,{key:0,autofocus:"",size:"small",modelValue:e.row.LocalEP,"onUpdate:modelValue":l=>e.row.LocalEP=l,onBlur:l=>o.handleEditBlur(e.row,"LocalEP")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleEdit(e.row,"LocalEP")},[e.row.LocalMsg?((0,t.uX)(),(0,t.CE)("div",{key:0,class:"error red",title:e.row.LocalMsg},[(0,t.Lk)("span",null,(0,n.v_)(e.row.LocalEP),1),(0,t.bF)(h,{size:"20"},{default:(0,t.k6)((()=>[(0,t.bF)(g)])),_:1})],8,Xt)):((0,t.uX)(),(0,t.CE)("span",{key:1,class:(0,n.C4)({green:e.row.Started})},(0,n.v_)(e.row.LocalEP),3))],8,At))])),_:1}),(0,t.bF)(i,{property:"Started",label:"状态",width:"60"},{default:(0,t.k6)((e=>[(0,t.bF)(w,{disabled:"",modelValue:e.row.Started,"onUpdate:modelValue":l=>e.row.Started=l,"inline-prompt":"","active-text":"是","inactive-text":"否",onClick:l=>o.handleStartChange(e.row)},null,8,["modelValue","onUpdate:modelValue","onClick"])])),_:1}),(0,t.bF)(i,{label:"操作",width:"54"},{default:(0,t.k6)((e=>[(0,t.bF)(v,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"删除不可逆,是否确认?",onConfirm:l=>o.handleDel(e.row.Id)},{reference:(0,t.k6)((()=>[(0,t.bF)(d,{type:"danger",size:"small"},{default:(0,t.k6)((()=>[(0,t.bF)(h,null,{default:(0,t.k6)((()=>[(0,t.bF)(k)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data","onCellDblclick"])])])),_:1},8,["modelValue","onOpen","title"])])),_:1},8,["machineid","handles"])}function Nt(e,l,a,n,o,r){const s=(0,t.g2)("PlanEdit");return(0,t.uX)(),(0,t.CE)("div",null,[(0,t.RG)(e.$slots,"default"),n.plan.showEdit?((0,t.uX)(),(0,t.Wv)(s,{key:0,modelValue:n.plan.showEdit,"onUpdate:modelValue":l[0]||(l[0]=e=>n.plan.showEdit=e)},null,8,["modelValue"])):(0,t.Q3)("",!0)])}var xt=a(10004);const Bt=(e,l)=>(0,xt.zG)("plan/get",{machineId:e,category:l}),Ut=(e,l)=>(0,xt.zG)("plan/add",{machineId:e,plan:l}),$t=(e,l)=>(0,xt.zG)("plan/remove",{machineId:e,planId:l}),Dt={key:0,class:"mgl-2"},zt={class:"w-100"},Ot=(0,t.Lk)("span",null,"的",-1),Qt={class:"w-100 mgt-1"},jt={class:"w-100"},Kt={class:"w-100 mgt-1"},Gt={class:"w-100"},qt={class:"w-100 mgt-1"},Ht={class:"w-100"},Jt=(0,t.Lk)("span",null,"的",-1),Zt={class:"mgt-1 w-100"},Yt={class:"mgt-1 w-100"},en=(0,t.Lk)("span",null,"后",-1),ln={class:"t-c w-100"};function an(e,l,a,o,r,s){const d=(0,t.g2)("el-option"),u=(0,t.g2)("el-select"),i=(0,t.g2)("el-form-item"),c=(0,t.g2)("el-input"),h=(0,t.g2)("el-switch"),m=(0,t.g2)("el-button"),p=(0,t.g2)("el-form"),g=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(g,{modelValue:o.state.show,"onUpdate:modelValue":l[30]||(l[30]=e=>o.state.show=e),"close-on-click-modal":!1,"append-to":".app-wrap",title:"计划任务",top:"2vh",width:"450"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(p,{ref:"ruleFormRef",model:o.state.ruleForm,rules:o.state.rules,"label-width":"auto"},{default:(0,t.k6)((()=>[(0,t.bF)(i,{label:"执行操作",prop:"Handle"},{default:(0,t.k6)((()=>[(0,t.bF)(u,{modelValue:o.state.ruleForm.Handle,"onUpdate:modelValue":l[0]||(l[0]=e=>o.state.ruleForm.Handle=e),style:{width:"10rem"},disabled:""},{default:(0,t.k6)((()=>[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(o.plan.handles,((e,l)=>((0,t.uX)(),(0,t.Wv)(d,{value:e.value,label:e.label},null,8,["value","label"])))),256))])),_:1},8,["modelValue"])])),_:1}),(0,t.bF)(i,{label:"执行方式",prop:"Method"},{default:(0,t.k6)((()=>[(0,t.bF)(u,{modelValue:o.state.ruleForm.Method,"onUpdate:modelValue":l[1]||(l[1]=e=>o.state.ruleForm.Method=e),style:{width:"10rem"},onChange:o.handleChange},{default:(0,t.k6)((()=>[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(o.plan.methods,((e,l)=>((0,t.uX)(),(0,t.Wv)(d,{value:e.value,label:e.label},null,8,["value","label"])))),256))])),_:1},8,["modelValue","onChange"]),o.state.ruleForm.Method>=2?((0,t.uX)(),(0,t.CE)("strong",Dt,(0,n.v_)(o.state.ruleForm.Rule),1)):(0,t.Q3)("",!0)])),_:1}),2==o.state.ruleForm.Method?((0,t.uX)(),(0,t.Wv)(i,{key:0,label:"在",prop:"Rule"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",zt,[(0,t.bF)(u,{modelValue:o.state.ruleAt.type,"onUpdate:modelValue":l[2]||(l[2]=e=>o.state.ruleAt.type=e),style:{width:"10rem"},onChange:o.handleChange},{default:(0,t.k6)((()=>[(0,t.bF)(d,{value:2,label:"每月"}),(0,t.bF)(d,{value:3,label:"每日"}),(0,t.bF)(d,{value:4,label:"每时"}),(0,t.bF)(d,{value:5,label:"每分"})])),_:1},8,["modelValue","onChange"]),(0,t.eW)(),Ot]),(0,t.Lk)("div",Qt,[o.state.ruleAt.type<2?((0,t.uX)(),(0,t.Wv)(c,{key:0,onChange:o.handleChange,modelValue:o.state.ruleAt.month,"onUpdate:modelValue":l[3]||(l[3]=e=>o.state.ruleAt.month=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("月")])),_:1},8,["onChange","modelValue"])):(0,t.Q3)("",!0),o.state.ruleAt.type<3?((0,t.uX)(),(0,t.Wv)(c,{key:1,onChange:o.handleChange,class:(0,n.C4)({"mgl-1":o.state.ruleAt.type<2}),modelValue:o.state.ruleAt.day,"onUpdate:modelValue":l[4]||(l[4]=e=>o.state.ruleAt.day=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("日")])),_:1},8,["onChange","class","modelValue"])):(0,t.Q3)("",!0),o.state.ruleAt.type<4?((0,t.uX)(),(0,t.Wv)(c,{key:2,onChange:o.handleChange,class:(0,n.C4)({"mgl-1":o.state.ruleAt.type<3}),modelValue:o.state.ruleAt.hour,"onUpdate:modelValue":l[5]||(l[5]=e=>o.state.ruleAt.hour=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("时")])),_:1},8,["onChange","class","modelValue"])):(0,t.Q3)("",!0),o.state.ruleAt.type<5?((0,t.uX)(),(0,t.Wv)(c,{key:3,onChange:o.handleChange,class:(0,n.C4)({"mgl-1":o.state.ruleAt.type<4}),modelValue:o.state.ruleAt.min,"onUpdate:modelValue":l[6]||(l[6]=e=>o.state.ruleAt.min=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("分")])),_:1},8,["onChange","class","modelValue"])):(0,t.Q3)("",!0),(0,t.bF)(c,{onChange:o.handleChange,class:(0,n.C4)({"mgl-1":o.state.ruleAt.type<5}),modelValue:o.state.ruleAt.sec,"onUpdate:modelValue":l[7]||(l[7]=e=>o.state.ruleAt.sec=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("秒")])),_:1},8,["onChange","class","modelValue"])])])),_:1})):(0,t.Q3)("",!0),4==o.state.ruleForm.Method?((0,t.uX)(),(0,t.Wv)(i,{key:1,label:"每",prop:"Rule"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",jt,[(0,t.bF)(c,{onChange:o.handleChange,modelValue:o.state.ruleTimer.year,"onUpdate:modelValue":l[8]||(l[8]=e=>o.state.ruleTimer.year=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("年")])),_:1},8,["onChange","modelValue"]),(0,t.bF)(c,{onChange:o.handleChange,class:"mgl-1",modelValue:o.state.ruleTimer.month,"onUpdate:modelValue":l[9]||(l[9]=e=>o.state.ruleTimer.month=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("月")])),_:1},8,["onChange","modelValue"]),(0,t.bF)(c,{onChange:o.handleChange,class:"mgl-1",modelValue:o.state.ruleTimer.day,"onUpdate:modelValue":l[10]||(l[10]=e=>o.state.ruleTimer.day=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("日")])),_:1},8,["onChange","modelValue"])]),(0,t.Lk)("div",Kt,[(0,t.bF)(c,{onChange:o.handleChange,modelValue:o.state.ruleTimer.hour,"onUpdate:modelValue":l[11]||(l[11]=e=>o.state.ruleTimer.hour=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("时")])),_:1},8,["onChange","modelValue"]),(0,t.bF)(c,{onChange:o.handleChange,class:"mgl-1",modelValue:o.state.ruleTimer.min,"onUpdate:modelValue":l[12]||(l[12]=e=>o.state.ruleTimer.min=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("分")])),_:1},8,["onChange","modelValue"]),(0,t.bF)(c,{onChange:o.handleChange,class:"mgl-1",modelValue:o.state.ruleTimer.sec,"onUpdate:modelValue":l[13]||(l[13]=e=>o.state.ruleTimer.sec=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("秒")])),_:1},8,["onChange","modelValue"])])])),_:1})):(0,t.Q3)("",!0),8==o.state.ruleForm.Method?((0,t.uX)(),(0,t.Wv)(i,{key:2,label:"Cron",prop:"Rule"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",Gt,[(0,t.bF)(c,{onChange:o.handleChange,modelValue:o.state.ruleCron.sec,"onUpdate:modelValue":l[14]||(l[14]=e=>o.state.ruleCron.sec=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("秒")])),_:1},8,["onChange","modelValue"]),(0,t.bF)(c,{onChange:o.handleChange,class:"mgl-1",modelValue:o.state.ruleCron.min,"onUpdate:modelValue":l[15]||(l[15]=e=>o.state.ruleCron.min=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("分")])),_:1},8,["onChange","modelValue"]),(0,t.bF)(c,{onChange:o.handleChange,class:"mgl-1",modelValue:o.state.ruleCron.hour,"onUpdate:modelValue":l[16]||(l[16]=e=>o.state.ruleCron.hour=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("时")])),_:1},8,["onChange","modelValue"])]),(0,t.Lk)("div",qt,[(0,t.bF)(c,{onChange:o.handleChange,modelValue:o.state.ruleCron.day,"onUpdate:modelValue":l[17]||(l[17]=e=>o.state.ruleCron.day=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("日")])),_:1},8,["onChange","modelValue"]),(0,t.bF)(c,{onChange:o.handleChange,class:"mgl-1",modelValue:o.state.ruleCron.month,"onUpdate:modelValue":l[18]||(l[18]=e=>o.state.ruleCron.month=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("月")])),_:1},8,["onChange","modelValue"]),(0,t.bF)(c,{onChange:o.handleChange,class:"mgl-1",modelValue:o.state.ruleCron.week,"onUpdate:modelValue":l[19]||(l[19]=e=>o.state.ruleCron.week=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("周")])),_:1},8,["onChange","modelValue"])])])),_:1})):(0,t.Q3)("",!0),16==o.state.ruleForm.Method?((0,t.uX)(),(0,t.Wv)(i,{key:3,label:"在",prop:"Rule"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",Ht,[(0,t.bF)(u,{modelValue:o.state.ruleForm.TriggerHandle,"onUpdate:modelValue":l[20]||(l[20]=e=>o.state.ruleForm.TriggerHandle=e),style:{width:"10rem"},onChange:o.handleChange},{default:(0,t.k6)((()=>[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(o.plan.triggers,((e,l)=>((0,t.uX)(),(0,t.Wv)(d,{value:e.value,label:e.label},null,8,["value","label"])))),256))])),_:1},8,["modelValue","onChange"]),(0,t.eW)(),Jt]),(0,t.Lk)("div",Zt,[(0,t.bF)(c,{onChange:o.handleChange,modelValue:o.state.ruleTrigger.year,"onUpdate:modelValue":l[21]||(l[21]=e=>o.state.ruleTrigger.year=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("年")])),_:1},8,["onChange","modelValue"]),(0,t.bF)(c,{onChange:o.handleChange,class:"mgl-1",modelValue:o.state.ruleTrigger.month,"onUpdate:modelValue":l[22]||(l[22]=e=>o.state.ruleTrigger.month=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("月")])),_:1},8,["onChange","modelValue"]),(0,t.bF)(c,{onChange:o.handleChange,class:"mgl-1",modelValue:o.state.ruleTrigger.day,"onUpdate:modelValue":l[23]||(l[23]=e=>o.state.ruleTrigger.day=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("日")])),_:1},8,["onChange","modelValue"])]),(0,t.Lk)("div",Yt,[(0,t.bF)(c,{onChange:o.handleChange,modelValue:o.state.ruleTrigger.hour,"onUpdate:modelValue":l[24]||(l[24]=e=>o.state.ruleTrigger.hour=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("时")])),_:1},8,["onChange","modelValue"]),(0,t.bF)(c,{onChange:o.handleChange,class:"mgl-1",modelValue:o.state.ruleTrigger.min,"onUpdate:modelValue":l[25]||(l[25]=e=>o.state.ruleTrigger.min=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("分")])),_:1},8,["onChange","modelValue"]),(0,t.bF)(c,{onChange:o.handleChange,class:"mgl-1",modelValue:o.state.ruleTrigger.sec,"onUpdate:modelValue":l[26]||(l[26]=e=>o.state.ruleTrigger.sec=e),style:{width:"8rem"}},{append:(0,t.k6)((()=>[(0,t.eW)("秒")])),_:1},8,["onChange","modelValue"]),en])])),_:1})):(0,t.Q3)("",!0),(0,t.bF)(i,{label:"内容",prop:"Value"},{default:(0,t.k6)((()=>[(0,t.bF)(c,{type:"textarea",resize:"none",rows:"5",modelValue:o.state.ruleForm.Value,"onUpdate:modelValue":l[27]||(l[27]=e=>o.state.ruleForm.Value=e)},null,8,["modelValue"])])),_:1}),(0,t.bF)(i,{label:"禁用",prop:"Disabled"},{default:(0,t.k6)((()=>[(0,t.bF)(h,{modelValue:o.state.ruleForm.Disabled,"onUpdate:modelValue":l[28]||(l[28]=e=>o.state.ruleForm.Disabled=e)},null,8,["modelValue"])])),_:1}),(0,t.bF)(i,{label:"",prop:"Btns"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",ln,[(0,t.bF)(m,{onClick:l[29]||(l[29]=e=>o.state.show=!1)},{default:(0,t.k6)((()=>[(0,t.eW)("取消")])),_:1}),(0,t.bF)(m,{type:"primary",onClick:o.handleSave,loading:o.state.loading},{default:(0,t.k6)((()=>[(0,t.eW)("确认")])),_:1},8,["onClick","loading"])])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue"])}var tn={props:["data","modelValue"],emits:["change","update:modelValue"],setup(e,{emit:l}){const a=/(\d+|\*)-(\d+|\*)-(\d+|\*)\s+(\d+|\*):(\d+|\*):(\d+|\*)/,n=/(\d+)-(\d+)-(\d+)\s+(\d+):(\d+):(\d+)/,o=/(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)/,r=(0,u.KR)(null),s=(0,t.WQ)("plan");!s.value.current.TriggerHandle&&s.value.triggers.length>0&&(s.value.current.TriggerHandle=s.value.triggers[0].value);const d=(0,u.Kh)({show:!0,loading:!1,ruleCron:{week:"*",month:"*",day:"*",hour:"*",min:"*",sec:"30"},ruleAt:{type:3,month:"*",day:"*",hour:0,min:0,sec:0},ruleTimer:{year:0,month:0,day:0,hour:0,min:0,sec:30},ruleTrigger:{year:0,month:0,day:0,hour:0,min:0,sec:30},ruleForm:{Id:s.value.current.Id,Category:s.value.current.Category,Key:s.value.current.Key,Value:s.value.current.Value,Rule:s.value.current.Rule,Handle:s.value.current.Handle,Method:s.value.current.Method,Disabled:s.value.current.Disabled,TriggerHandle:s.value.current.TriggerHandle},rules:{}});(0,t.wB)((()=>d.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e)}),300)}));const i={2:e=>{if(e=e||"*-*-* 0:0:0",0==a.test(e))return;const[,l,t,n,o,r,s]=e.match(a);"*"==r?d.ruleAt.type=5:"*"==o?d.ruleAt.type=4:"*"==n?d.ruleAt.type=3:"*"==t&&(d.ruleAt.type=2),d.ruleAt.year=l,d.ruleAt.month=t,d.ruleAt.day=n,d.ruleAt.hour=o,d.ruleAt.min=r,d.ruleAt.sec=s},4:e=>{if(e=e||"0-0-0 0:0:30",0==n.test(e))return;const[,l,a,t,o,r,s]=e.match(n);d.ruleTimer.year=l,d.ruleTimer.month=a,d.ruleTimer.day=t,d.ruleTimer.hour=o,d.ruleTimer.min=r,d.ruleTimer.sec=s},8:e=>{if(e=e||"30 * * * * ?",0==o.test(e))return;const[,l,a,t,n,r,s]=e.match(o);d.ruleCron.sec=l,d.ruleCron.min=a,d.ruleCron.hour=t,d.ruleCron.day=n,d.ruleCron.month=r,d.ruleCron.week=s},16:e=>{if(e=e||"0-0-0 0:0:30",0==n.test(e))return;const[,l,a,t,o,r,s]=e.match(n);d.ruleTrigger.year=l,d.ruleTrigger.month=a,d.ruleTrigger.day=t,d.ruleTrigger.hour=o,d.ruleTrigger.min=r,d.ruleTrigger.sec=s}},c=()=>{d.ruleForm.Method in i&&i[d.ruleForm.Method](d.ruleForm.Rule)},h={2:()=>{switch(d.ruleAt.type){case 2:return`*-*-${d.ruleAt.day} ${d.ruleAt.hour}:${d.ruleAt.min}:${d.ruleAt.sec}`;case 3:return`*-*-* ${d.ruleAt.hour}:${d.ruleAt.min}:${d.ruleAt.sec}`;case 4:return`*-*-* *:${d.ruleAt.min}:${d.ruleAt.sec}`;case 5:return`*-*-* *:*:${d.ruleAt.sec}`}return""},4:()=>`${d.ruleTimer.year}-${d.ruleTimer.month}-${d.ruleTimer.day} ${d.ruleTimer.hour}:${d.ruleTimer.min}:${d.ruleTimer.sec}`,8:()=>`${d.ruleCron.sec} ${d.ruleCron.min} ${d.ruleCron.hour} ${d.ruleCron.day} ${d.ruleCron.month} ${d.ruleCron.week}`,16:()=>`${d.ruleTrigger.year}-${d.ruleTrigger.month}-${d.ruleTrigger.day} ${d.ruleTrigger.hour}:${d.ruleTrigger.min}:${d.ruleTrigger.sec}`},m=()=>{d.ruleForm.Method in h&&(d.ruleForm.Rule=h[d.ruleForm.Method]())},p=()=>{m()},g=()=>{const e=JSON.parse(JSON.stringify(d.ruleForm));d.loading=!0,Ut(s.value.machineid,e).then((e=>{d.loading=!1,d.show=!1})).catch((()=>{d.loading=!1}))};return(0,t.sV)((()=>{c(),p()})),{state:d,ruleFormRef:r,plan:s,handleChange:p,handleSave:g}}};const nn=(0,V.A)(tn,[["render",an]]);var on=nn,rn={components:{PlanEdit:on},props:["machineid","category","handles"],setup(e){const l=(0,u.KR)({machineid:e.machineid,timer:0,list:{},current:{},showEdit:!1,category:e.category||"",handles:e.handles||[],handleJson:(e.handles||[]).reduce(((e,l,a)=>(e[l.value]=l.label,e)),{}),triggers:[],methods:[{label:"手动",value:0},{label:"启动后",value:1},{label:"到点",value:2},{label:"定时",value:4},{label:"Cron",value:8},{label:"触发",value:16}]});(0,t.Gt)("plan",l);const a=()=>{clearTimeout(l.value.timer),Bt(l.value.machineid,e.category).then((e=>{l.value.list=e.reduce(((e,l,a)=>(e[`${l.Key}-${l.Handle}`]=l,e)),{}),l.value.timer=setTimeout(a,1e3)})).catch((()=>{l.value.timer=setTimeout(a,1e3)}))},n=(e,t)=>{const n=l.value.list[`${e}-${t}`];n&&$t(l.value.machineid,n.Id).then((()=>{a()}))};return(0,t.sV)((()=>{a()})),(0,t.hi)((()=>{clearTimeout(l.value.timer)})),{plan:l,remove:n}}};const sn=(0,V.A)(rn,[["render",Nt]]);var dn=sn;const un={key:0},cn={key:1};function hn(e,l,a,o,r,s){return(0,t.uX)(),(0,t.CE)("a",{href:"javascript:;",class:"a-line",onClick:l[0]||(l[0]=(...e)=>o.handleEdit&&o.handleEdit(...e))},[o.item?((0,t.uX)(),(0,t.CE)("span",un,(0,n.v_)(o.rule),1)):((0,t.uX)(),(0,t.CE)("span",cn,"未设置"))])}var mn={props:["keyid","handle"],setup(e){const l=/(\d+|\*)-(\d+|\*)-(\d+|\*)\s+(\d+|\*):(\d+|\*):(\d+|\*)/,a=/(\d+)-(\d+)-(\d+)\s+(\d+):(\d+):(\d+)/,n={0:()=>"手动",1:()=>"网络启动后",2:(e,a)=>{if(0==l.test(a))return a;const[,t,n,o,r,s,d]=a.match(l);return"*"==s?`每分钟的${d}秒`:"*"==r?`每小时的${s}分${d}秒`:"*"==o?`每天的${r}时${s}分${d}秒`:"*"==n?`每月的${o}日${r}时${s}分${d}秒`:"*"==t?`每年的${n}月${o}日${r}时${s}分${d}秒`:void 0},4:(e,l)=>{if(0==a.test(l))return l;const[,t,n,o,r,s,d]=l.match(a),u=[];return"0"!=t&&u.push(`${t}年`),"0"!=n&&u.push(`${n}月`),"0"!=o&&u.push(`${o}日`),"0"!=r&&u.push(`${r}时`),"0"!=s&&u.push(`${s}分`),"0"!=d&&u.push(`${d}秒`),`每${u.join("")}`},8:(e,l)=>`Cron : ${l}`,16:(e,l)=>{if(0==a.test(l))return l;const[,t,n,r,s,d,u]=l.match(a),i=[];return"0"!=t&&i.push(`${t}年`),"0"!=n&&i.push(`${n}月`),"0"!=r&&i.push(`${r}日`),"0"!=s&&i.push(`${s}时`),"0"!=d&&i.push(`${d}分`),"0"!=u&&i.push(`${u}秒`),`在【${o.value.handleJson[e.TriggerHandle]}】的${i.join("")}后`}},o=(0,t.WQ)("plan"),r=(0,t.EW)((()=>o.value.list[`${e.keyid}-${e.handle}`])),s=(0,t.EW)((()=>{if(!r.value)return"";const e=r.value.Method;return n[e]?n[e](r.value,r.value.Rule):r.value.Rule})),d=()=>{o.value.current=r.value||{Id:0,Category:o.value.category,Key:`${e.keyid}`,Handle:e.handle,Value:"",Disabled:!1,TriggerHandle:"",Method:2,Rule:""},o.value.triggers=JSON.parse(JSON.stringify(o.value.handles.filter((l=>l.value!=e.handle)))),o.value.showEdit=!0};return{item:r,rule:s,handleEdit:d}}};const pn=(0,V.A)(mn,[["render",hn]]);var gn=pn,wn={props:["data","modelValue"],emits:["update:modelValue"],components:{WarnTriangleFilled:F.DtC,Delete:F.epd,Select:F.l6P,CloseBold:F.QBJ,PlanList:dn,PlanShow:gn},setup(e,{emit:l}){const a=(0,u.KR)(null),n=(0,d.B)(),o=dt(),r=(0,u.Kh)({bufferSize:n.value.bufferSize,show:!0,data:[],timer:0,timer1:0,editing:!1,loading:!1,handles:[{label:"开启",value:"start"},{label:"关闭",value:"stop"}]});(0,t.wB)((()=>r.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e)}),300)}));const s=()=>{clearTimeout(r.timer),(0,ot.eX)(o.value.machineid).then((e=>{r.timer=setTimeout(s,1e3)})).catch((()=>{r.timer=setTimeout(s,1e3)}))},c=()=>{clearTimeout(r.timer1),0==r.editing?(0,ot.pY)(o.value.machineid).then((e=>{e.forEach((e=>{e.Temp=(e.Domain||e.RemotePort).toString(),e.RemotePort=0,e.Domain=""})),r.data=e,r.timer1=setTimeout(c,1e3)})).catch((()=>{r.timer1=setTimeout(c,1e3)})):r.timer1=setTimeout(c,1e3)},h=()=>{c()},m=(e,l)=>{w(e,l.property)},p=()=>{c(),i.nk.success("已刷新")},g=()=>{r.loading=!0;const e={Id:0,Name:"",RemotePort:0,LocalEP:"127.0.0.1:80",Domain:"",Temp:""};(0,ot.Qs)({machineid:o.value.machineid,data:e}).then((()=>{r.loading=!1,setTimeout((()=>{c()}),100)})).catch((e=>{r.loading=!1,i.nk.error(e)}))},w=(e,l)=>{e.Started?i.nk.error("请先停止运行"):(r.data.forEach((e=>{e["NameEditing"]=!1,e["RemotePortEditing"]=!1,e["LocalEPEditing"]=!1,e["DomainEditing"]=!1,e["TempEditing"]=!1})),e[`${l}Editing`]=!0,r.editing=!0)},k=(e,l)=>{e.Started?i.nk.error("请先停止运行"):(e[`${l}Editing`]=!1,r.editing=!1,b(e))},v=e=>{a.value.remove(e,"start"),a.value.remove(e,"stop"),(0,ot.DY)({machineid:o.value.machineid,id:e}).then((()=>{r.loading=!1,c()})).catch((e=>{r.loading=!1,i.nk.error(e)}))},f=e=>{r.loading=!0;const l=e.Started?(0,ot.JT)({machineid:o.value.machineid,id:e.Id}):(0,ot.nP)({machineid:o.value.machineid,id:e.Id});l.then((()=>{r.loading=!1,c()})).catch((e=>{r.loading=!1,i.nk.error(e)}))},b=e=>{e.Temp&&(/^\d+$/.test(e.Temp)?e.RemotePort=parseInt(e.Temp):e.Domain=e.Temp,r.loading=!0,(0,ot.Qs)({machineid:o.value.machineid,data:e}).then((e=>{r.loading=!1,0==e&&i.nk.error("操作失败,可能存在相同值"),c()})).catch((e=>{r.loading=!1,i.nk.error(e)})))};return(0,t.sV)((()=>{c(),s()})),(0,t.hi)((()=>{clearTimeout(r.timer),clearTimeout(r.timer1)})),{state:r,planDom:a,machineName:o.value.machineName,machineId:o.value.machineid,handleOnShowList:h,handleCellClick:m,handleRefresh:p,handleAdd:g,handleEdit:w,handleEditBlur:k,handleDel:v,handleStartChange:f}}};const kn=(0,V.A)(wn,[["render",Rt],["__scopeId","data-v-010bdab6"]]);var vn=kn;const fn=e=>((0,t.Qi)("data-v-0c4e4760"),e=e(),(0,t.jt)(),e),bn=fn((()=>(0,t.Lk)("span",null,"中继 : ",-1))),Cn={key:0,href:"javascript:;",class:"a-line"},Fn=fn((()=>(0,t.Lk)("span",null,"操作中.",-1))),yn=["onClick"],Vn=fn((()=>(0,t.Lk)("span",null,"打洞 : ",-1))),En={key:0,href:"javascript:;",class:"a-line"},_n=fn((()=>(0,t.Lk)("span",null,"操作中.",-1))),Ln=["onClick"],Pn=["href"],In={href:"javascript:;",class:"a-line"},Mn={key:0},Tn={key:1},Sn={key:0},Wn={key:1},An={key:0},Xn={key:1},Rn=fn((()=>(0,t.Lk)("span",null,"/",-1))),Nn={key:0},xn={key:1},Bn={class:"dropdown"};function Un(e,l,a,o,r,s){const d=(0,t.g2)("el-table-column"),u=(0,t.g2)("Loading"),i=(0,t.g2)("el-icon"),c=(0,t.g2)("Delete"),h=(0,t.g2)("el-button"),m=(0,t.g2)("el-popconfirm"),p=(0,t.g2)("el-table"),g=(0,t.g2)("el-dialog"),w=(0,t.g2)("el-switch"),k=(0,t.g2)("ArrowDown"),v=(0,t.g2)("el-dropdown-item"),f=(0,t.g2)("el-dropdown-menu"),b=(0,t.g2)("el-dropdown");return(0,t.uX)(),(0,t.CE)(t.FK,null,[(0,t.bF)(g,{modelValue:o.state.show,"onUpdate:modelValue":l[0]||(l[0]=e=>o.state.show=e),"append-to":".app-wrap",title:`与[${o.state.machineName}]的链接`,top:"1vh",width:"780"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(p,{data:o.state.data,size:"small",border:"",height:"500"},{default:(0,t.k6)((()=>[(0,t.bF)(d,{property:"RemoteMachineId",label:"目标/服务器"},{default:(0,t.k6)((e=>[(0,t.Lk)("div",{class:(0,n.C4)({green:e.row.Connected})},[(0,t.Lk)("p",null,(0,n.v_)(e.row.IPEndPoint),1),(0,t.Lk)("p",null,"ssl : "+(0,n.v_)(e.row.SSL),1)],2)])),_:1}),(0,t.bF)(d,{property:"TransactionId",label:"事务",width:"80"},{default:(0,t.k6)((e=>[(0,t.Lk)("span",null,(0,n.v_)(o.state.transactions[e.row.TransactionId]),1)])),_:1}),(0,t.bF)(d,{property:"TransportName",label:"协议",width:"120"},{default:(0,t.k6)((e=>[(0,t.Lk)("div",null,[(0,t.Lk)("p",null,(0,n.v_)(e.row.TransportName)+"("+(0,n.v_)(o.state.protocolTypes[e.row.ProtocolType])+")",1),(0,t.Lk)("p",null,(0,n.v_)(o.state.types[e.row.Type])+" - "+(0,n.v_)(1<[(0,t.Lk)("span",null,(0,n.v_)(e.row.Delay)+"ms",1)])),_:1}),(0,t.bF)(d,{property:"Bytes",label:"通信"},{default:(0,t.k6)((e=>[(0,t.Lk)("div",null,[(0,t.Lk)("p",null,"up : "+(0,n.v_)(e.row.SendBytesText),1),(0,t.Lk)("p",null,"down : "+(0,n.v_)(e.row.ReceiveBytesText),1)])])),_:1}),(0,t.bF)(d,{property:"relay",label:"中继节点"},{default:(0,t.k6)((e=>[(0,t.Lk)("div",null,[(0,t.Lk)("p",null,[bn,o.state.relayOperatings[e.row.RemoteMachineId]?((0,t.uX)(),(0,t.CE)("a",Cn,[Fn,(0,t.bF)(i,{size:"14",class:"loading"},{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handleNode(e.row)},(0,n.v_)(o.state.nodesDic[e.row.NodeId]||"选择节点"),9,yn))]),(0,t.Lk)("p",null,[Vn,o.state.p2pOperatings[e.row.RemoteMachineId]?((0,t.uX)(),(0,t.CE)("a",En,[_n,(0,t.bF)(i,{size:"14",class:"loading"},{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})])):((0,t.uX)(),(0,t.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:l=>o.handlep2p(e.row)},"尝试打洞",8,Ln))])])])),_:1}),(0,t.bF)(d,{label:"操作",width:"54"},{default:(0,t.k6)((e=>[(0,t.Lk)("div",null,[o.hasTunnelRemove?((0,t.uX)(),(0,t.Wv)(m,{key:0,"confirm-button-text":"确认","cancel-button-text":"取消",title:"确定关闭此连接?",onConfirm:l=>o.handleDel(e.row)},{reference:(0,t.k6)((()=>[(0,t.bF)(h,{type:"danger",size:"small"},{default:(0,t.k6)((()=>[(0,t.bF)(i,null,{default:(0,t.k6)((()=>[(0,t.bF)(c)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])):(0,t.Q3)("",!0)])])),_:1})])),_:1},8,["data"])])])),_:1},8,["modelValue","title"]),(0,t.bF)(g,{modelValue:o.state.showNodes,"onUpdate:modelValue":l[1]||(l[1]=e=>o.state.showNodes=e),title:e.$t("server.relayTitle"),width:"760",top:"2vh"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(p,{data:o.state.nodes,size:"small",border:"",height:"600"},{default:(0,t.k6)((()=>[(0,t.bF)(d,{property:"Name",label:e.$t("server.relayName")},{default:(0,t.k6)((e=>[(0,t.Lk)("div",null,[(0,t.Lk)("a",{href:e.row.Url,class:"a-line blue",target:"_blank"},(0,n.v_)(e.row.Name),9,Pn),(0,t.Lk)("a",In,[1==(1&e.row.AllowProtocol)?((0,t.uX)(),(0,t.CE)("span",Mn,",tcp")):(0,t.Q3)("",!0),2==(2&e.row.AllowProtocol)?((0,t.uX)(),(0,t.CE)("span",Tn,",udp")):(0,t.Q3)("",!0)])])])),_:1},8,["label"]),(0,t.bF)(d,{property:"MaxGbTotal",label:e.$t("server.relayFlow"),width:"140"},{default:(0,t.k6)((e=>[0==e.row.MaxGbTotal?((0,t.uX)(),(0,t.CE)("span",Sn,"--")):((0,t.uX)(),(0,t.CE)("span",Wn,(0,n.v_)((e.row.MaxGbTotalLastBytes/1024/1024/1024).toFixed(2))+"GB / "+(0,n.v_)(e.row.MaxGbTotal)+"GB ",1))])),_:1},8,["label"]),(0,t.bF)(d,{property:"MaxBandwidth",label:e.$t("server.relaySpeed"),width:"80"},{default:(0,t.k6)((e=>[0==e.row.MaxBandwidth?((0,t.uX)(),(0,t.CE)("span",An,"--")):((0,t.uX)(),(0,t.CE)("span",Xn,(0,n.v_)(e.row.MaxBandwidth)+"Mbps",1))])),_:1},8,["label"]),(0,t.bF)(d,{property:"MaxBandwidthTotal",label:`${e.$t("server.relaySpeed2")}/${e.$t("server.relaySpeed1")}`,width:"120"},{default:(0,t.k6)((e=>[(0,t.Lk)("span",null,[(0,t.Lk)("span",null,(0,n.v_)(e.row.BandwidthRatio)+"Mbps",1),Rn,0==e.row.MaxBandwidthTotal?((0,t.uX)(),(0,t.CE)("span",Nn,"--")):((0,t.uX)(),(0,t.CE)("span",xn,(0,n.v_)(e.row.MaxBandwidthTotal)+"Mbps",1))])])),_:1},8,["label"]),(0,t.bF)(d,{property:"ConnectionRatio",label:e.$t("server.relayConnection"),width:"80"},{default:(0,t.k6)((e=>[(0,t.Lk)("span",null,[(0,t.Lk)("strong",null,(0,n.v_)(e.row.ConnectionRatio),1),(0,t.eW)("/"+(0,n.v_)(e.row.MaxConnection),1)])])),_:1},8,["label"]),(0,t.bF)(d,{property:"Delay",label:e.$t("server.relayDelay"),width:"60"},{default:(0,t.k6)((e=>[(0,t.Lk)("span",null,(0,n.v_)(e.row.Delay)+"ms",1)])),_:1},8,["label"]),(0,t.bF)(d,{property:"Public",label:e.$t("server.relayPublic"),width:"50"},{default:(0,t.k6)((e=>[(0,t.bF)(w,{disabled:"",modelValue:e.row.Public,"onUpdate:modelValue":l=>e.row.Public=l,size:"small"},null,8,["modelValue","onUpdate:modelValue"])])),_:1},8,["label"]),(0,t.bF)(d,{property:"Oper",label:e.$t("server.relayOper"),width:"75"},{default:(0,t.k6)((l=>[(0,t.bF)(b,{size:"small"},{dropdown:(0,t.k6)((()=>[(0,t.bF)(f,null,{default:(0,t.k6)((()=>[1==(1&l.row.AllowProtocol)?((0,t.uX)(),(0,t.Wv)(v,{key:0,onClick:e=>o.handleConnect(l.row.Id,1)},{default:(0,t.k6)((()=>[(0,t.eW)((0,n.v_)(e.$t("common.relay"))+"TCP",1)])),_:2},1032,["onClick"])):(0,t.Q3)("",!0),2==(2&l.row.AllowProtocol)?((0,t.uX)(),(0,t.Wv)(v,{key:1,onClick:e=>o.handleConnect(l.row.Id,2)},{default:(0,t.k6)((()=>[(0,t.eW)((0,n.v_)(e.$t("common.relay"))+"UDP",1)])),_:2},1032,["onClick"])):(0,t.Q3)("",!0)])),_:2},1024)])),default:(0,t.k6)((()=>[(0,t.Lk)("div",Bn,[(0,t.Lk)("span",null,(0,n.v_)(e.$t("server.relayUse")),1),(0,t.bF)(i,{class:"el-icon--right"},{default:(0,t.k6)((()=>[(0,t.bF)(k)])),_:1})])])),_:2},1024)])),_:1},8,["label"])])),_:1},8,["data"])])])),_:1},8,["modelValue","title"])],64)}var $n=a(69232),Dn=a(35931),zn={props:["modelValue"],emits:["change","update:modelValue"],components:{Delete:F.epd,Select:F.l6P,ArrowDown:F.yd$,Loading:F.Rhj},setup(e,{emit:l}){const{t:a}=(0,Dn.s9)(),n=(0,d.B)(),o=(0,t.EW)((()=>n.value.hasAccess("TunnelRemove"))),r=(0,jl.ZY)(),s=(0,jl.mx)(),c=(0,jl.FG)(),h=(0,jl.bB)(),m=(0,Xa.e)(),p=(0,u.Kh)({show:!0,protocolTypes:{1:"tcp",2:"udp",4:"msquic"},types:{0:"打洞",1:"中继",2:"节点"},transactions:{forward:"端口转发",tuntap:"虚拟网卡",socks5:"代理转发"},machineName:r.value.currentName,currentRow:{},data:(0,t.EW)((()=>[s.value.list[r.value.current],c.value.list[r.value.current],h.value.list[r.value.current]].filter((e=>!!e)))),showNodes:!1,nodes:[],nodesDic:{},timer:0,relayOperatings:m.value.relayOperatings,p2pOperatings:m.value.p2pOperatings});(0,t.wB)((()=>p.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e),l("change")}),300)}));const g=e=>{o.value?e.removeFunc(e.RemoteMachineId).then((()=>{i.nk.success(a("common.oper"))})).catch((()=>{})):i.nk.success("无权限")},w=()=>{clearTimeout(p.timer),(0,$n.W4)().then((e=>{p.nodes=e,p.nodesDic=e.reduce(((e,l)=>(e[l.Id]=l.Name,e)),{}),p.timer=setTimeout(w,1e3)})).catch((()=>{p.timer=setTimeout(w,1e3)}))},k=e=>{(0,ja.xN)({ToMachineId:e.RemoteMachineId,TransactionId:e.TransactionId,DenyProtocols:"tuntap"==e.TransactionId?4:2}).then((()=>{i.nk.success(a("common.oper"))})).catch((()=>{i.nk.success(a("common.operFail"))}))},v=e=>{p.currentRow=e,p.showNodes=!0},f=(e,l)=>{const t={FromMachineId:n.value.config.Client.Id,TransactionId:p.currentRow.TransactionId,ToMachineId:p.currentRow.RemoteMachineId,NodeId:e,Protocol:l};(0,$n.uQ)(t).then((()=>{i.nk.success(a("common.oper"))})).catch((()=>{i.nk.success(a("common.operFail"))})),p.showNodes=!1};return(0,t.sV)((()=>{r.value.updateRealTime(!0),w()})),(0,t.hi)((()=>{r.value.updateRealTime(!1),clearTimeout(p.timer)})),{state:p,handleDel:g,hasTunnelRemove:o,handlep2p:k,handleNode:v,handleConnect:f}}};const On=(0,V.A)(zn,[["render",Un],["__scopeId","data-v-0c4e4760"]]);var Qn=On,jn=a(39383);const Kn={class:"updater-wrap t-c"},Gn={class:"t-l"},qn={class:"flex mgt-1"},Hn={class:"mgt-1 t-c"};function Jn(e,l,a,o,r,s){const d=(0,t.g2)("el-option"),u=(0,t.g2)("el-select"),i=(0,t.g2)("el-col"),c=(0,t.g2)("el-row"),h=(0,t.g2)("el-button"),m=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(m,{class:"options-center",title:"更新","destroy-on-close":"",modelValue:o.state.show,"onUpdate:modelValue":l[2]||(l[2]=e=>o.state.show=e),width:"40rem",top:"2vh"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",Kn,[(0,t.Lk)("div",Gn,[(0,t.Lk)("ul",null,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(o.state.msg,(e=>((0,t.uX)(),(0,t.CE)("li",null,(0,n.v_)(e),1)))),256))])]),(0,t.Lk)("div",qn,[(0,t.bF)(c,{class:"w-100"},{default:(0,t.k6)((()=>[(0,t.bF)(i,{span:10},{default:(0,t.k6)((()=>[(0,t.bF)(u,{modelValue:o.state.type,"onUpdate:modelValue":l[0]||(l[0]=e=>o.state.type=e),size:"large"},{default:(0,t.k6)((()=>[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(o.state.types,(e=>((0,t.uX)(),(0,t.Wv)(d,{key:e.value,label:e.label,value:e.value},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])])),_:1}),(0,t.bF)(i,{span:4},{default:(0,t.k6)((()=>[(0,t.eW)(" -> ")])),_:1}),(0,t.bF)(i,{span:10},{default:(0,t.k6)((()=>[(0,t.bF)(u,{modelValue:o.state.version,"onUpdate:modelValue":l[1]||(l[1]=e=>o.state.version=e),size:"large",filterable:"","allow-create":"","default-first-option":""},{default:(0,t.k6)((()=>[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(o.state.versions,(e=>((0,t.uX)(),(0,t.Wv)(d,{key:e.value,label:e.label,value:e.value},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])])),_:1})])),_:1})]),(0,t.Lk)("div",Hn,[(0,t.bF)(h,{type:"success",onClick:o.handleUpdate,plain:""},{default:(0,t.k6)((()=>[(0,t.eW)("确 定")])),_:1},8,["onClick"])])])])),_:1},8,["modelValue"])}var Zn=a(80920),Yn={props:["modelValue"],emits:["update:modelValue"],setup(e,{emit:l}){const a=(0,d.B)(),n=((0,t.EW)((()=>a.value.hasAccess("UpdateSelf"))),(0,t.EW)((()=>a.value.hasAccess("UpdateOther")))),o=(0,jn.T)(),r=(0,t.EW)((()=>a.value.signin.Version)),s=(0,t.EW)((()=>o.value.current.Version)),i=[{label:`仅【${o.value.device.MachineName}】`,value:o.value.device.MachineId},n.value?{label:"本组所有",value:"g-all"}:{},n.value?{label:"本服务器所有",value:"s-all"}:{}].filter((e=>e.value)),c=[{label:`${s.value}【最新版本】`,value:s.value},{label:`${r.value}【服务器版本】`,value:r.value}].filter((e=>e.value)),h=(0,u.Kh)({show:!0,type:i[0]||"",version:c[0]||"",types:i,versions:c,msg:[]});(0,t.wB)((()=>h.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e)}),300)}));const m=()=>{const e={MachineId:o.value.device.MachineId,Version:h.version.value||h.version,GroupAll:"g-all"==h.type,All:"s-all"==h.type};(e.All||e.GroupAll)&&(e.MachineId=""),(0,Zn.lJ)(e).then((()=>{})).catch((()=>{})),h.show=!1};return(0,t.sV)((()=>{(0,Zn.rL)().then((e=>{h.msg=e.Msg}))})),{state:h,updater:o,handleUpdate:m}}};const eo=(0,V.A)(Yn,[["render",Jn]]);var lo=eo;const ao=Symbol(),to=()=>{const e=(0,u.KR)({device:{},show:!1});return(0,t.Gt)(ao,e),{flow:e}},no=()=>(0,t.WQ)(ao);function oo(e,l,a,o,r,s){const d=(0,t.g2)("el-table-column"),u=(0,t.g2)("el-table"),i=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(i,{title:`${o.flow.device.name}->${e.$t("status.messengerName")}`,class:"options-center",top:"1vh","destroy-on-close":"",modelValue:o.state.show,"onUpdate:modelValue":l[0]||(l[0]=e=>o.state.show=e),width:"480"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(u,{data:o.state.list,stripe:"",border:"",size:"small",width:"100%",height:"60vh"},{default:(0,t.k6)((()=>[(0,t.bF)(d,{prop:"id",label:"id",width:"200"}),(0,t.bF)(d,{prop:"request",label:"request",sortable:""},{default:(0,t.k6)((e=>[(0,t.Lk)("span",null,(0,n.v_)(e.row.request)+"ms / "+(0,n.v_)(e.row.requestMax)+"ms",1)])),_:1}),(0,t.bF)(d,{prop:"response",label:"response",sortable:""},{default:(0,t.k6)((e=>[(0,t.Lk)("span",null,(0,n.v_)(e.row.response)+"ms / "+(0,n.v_)(e.row.responseMax)+"ms",1)])),_:1})])),_:1},8,["data"])])])),_:1},8,["title","modelValue"])}var ro=a(84921),so={props:["modelValue"],emits:["update:modelValue"],setup(e,{emit:l}){const{t:a}=(0,Dn.s9)(),n=no(),o=(0,u.Kh)({show:!0,timer:0,list:[]});(0,t.wB)((()=>o.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e)}),300)}));const r=()=>{clearTimeout(o.timer),(0,ro.iN)(n.value.device.id).then((e=>{o.list=Object.keys(e).map((l=>({id:`${a(`status.messenger${l}`)}(${l})`,request:(BigInt(e[l].SendtBytes)&BigInt(4294967295)).toString(),requestMax:(BigInt(e[l].SendtBytes)>>BigInt(32)).toString(),response:(BigInt(e[l].ReceiveBytes)&BigInt(4294967295)).toString(),responseMax:(BigInt(e[l].ReceiveBytes)>>BigInt(32)).toString()}))),o.timer=setTimeout(r,3e3)})).catch((e=>{o.timer=setTimeout(r,3e3)}))};return(0,t.sV)((()=>{r()})),(0,t.hi)((()=>{clearTimeout(o.timer)})),{state:o,flow:n}}};const uo=(0,V.A)(so,[["render",oo]]);var io=uo;const co=e=>((0,t.Qi)("data-v-8c55c3c4"),e=e(),(0,t.jt)(),e),ho={class:"dropdown"},mo=co((()=>(0,t.Lk)("span",null,"操作",-1)));function po(e,l,a,n,o,r){const s=(0,t.g2)("ArrowDown"),d=(0,t.g2)("el-icon"),u=(0,t.g2)("SwitchButton"),i=(0,t.g2)("el-dropdown-item"),c=(0,t.g2)("Delete"),h=(0,t.g2)("Flag"),m=(0,t.g2)("HelpFilled"),p=(0,t.g2)("Platform"),g=(0,t.g2)("Paperclip"),w=(0,t.g2)("CircleCheck"),k=(0,t.g2)("VideoPlay"),v=(0,t.g2)("el-dropdown-menu"),f=(0,t.g2)("el-dropdown"),b=(0,t.g2)("el-table-column");return(0,t.uX)(),(0,t.Wv)(b,{label:"操作",fixed:"right",width:"75"},{default:(0,t.k6)((a=>[(0,t.bF)(f,{size:"small"},{dropdown:(0,t.k6)((()=>[(0,t.bF)(v,null,{default:(0,t.k6)((()=>[a.row.showReboot&&n.hasReboot?((0,t.uX)(),(0,t.Wv)(i,{key:0,onClick:e=>n.handleExit(a.row.MachineId,a.row.MachineName)},{default:(0,t.k6)((()=>[(0,t.bF)(d,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1}),(0,t.eW)(" 重启")])),_:2},1032,["onClick"])):(0,t.Q3)("",!0),a.row.showDel&&n.hasRemove?((0,t.uX)(),(0,t.Wv)(i,{key:1,onClick:e=>n.handleDel(a.row.MachineId,a.row.MachineName)},{default:(0,t.k6)((()=>[(0,t.bF)(d,null,{default:(0,t.k6)((()=>[(0,t.bF)(c)])),_:1}),(0,t.eW)(" 删除")])),_:2},1032,["onClick"])):(0,t.Q3)("",!0),n.handleShowAccess(a.row,n.accessList[a.row.MachineId]||"0")?((0,t.uX)(),(0,t.Wv)(i,{key:2,onClick:e=>n.handleAccess(a.row)},{default:(0,t.k6)((()=>[(0,t.bF)(d,null,{default:(0,t.k6)((()=>[(0,t.bF)(h)])),_:1}),(0,t.eW)(" 权限")])),_:2},1032,["onClick"])):(0,t.Q3)("",!0),a.row.isSelf&&n.hasApiPassword?((0,t.uX)(),(0,t.Wv)(i,{key:3,onClick:e=>n.handleApiPassword(a.row)},{default:(0,t.k6)((()=>[(0,t.bF)(d,null,{default:(0,t.k6)((()=>[(0,t.bF)(m)])),_:1}),(0,t.eW)(" 管理接口")])),_:2},1032,["onClick"])):n.hasApiPasswordOther?((0,t.uX)(),(0,t.Wv)(i,{key:4,onClick:e=>n.handleApiPassword(a.row)},{default:(0,t.k6)((()=>[(0,t.bF)(d,null,{default:(0,t.k6)((()=>[(0,t.bF)(m)])),_:1}),(0,t.eW)(" 管理接口")])),_:2},1032,["onClick"])):(0,t.Q3)("",!0),(0,t.bF)(i,{onClick:e=>n.handleStopwatch(a.row.MachineId,a.row.MachineName)},{default:(0,t.k6)((()=>[(0,t.bF)(d,null,{default:(0,t.k6)((()=>[(0,t.bF)(p)])),_:1}),(0,t.eW)("它的信标")])),_:2},1032,["onClick"]),(0,t.bF)(i,{onClick:l[0]||(l[0]=l=>n.handleStopwatch("",e.$t("status.messenger")))},{default:(0,t.k6)((()=>[(0,t.bF)(d,null,{default:(0,t.k6)((()=>[(0,t.bF)(p)])),_:1}),(0,t.eW)("服务器信标")])),_:1}),(0,t.bF)(i,{onClick:e=>n.handleRoutes(a.row.MachineId,a.row.MachineName)},{default:(0,t.k6)((()=>[(0,t.bF)(d,null,{default:(0,t.k6)((()=>[(0,t.bF)(g)])),_:1}),(0,t.eW)("网卡路由")])),_:2},1032,["onClick"]),a.row.isSelf&&n.hasFirewallSelf?((0,t.uX)(),(0,t.Wv)(i,{key:5,onClick:e=>n.handleFirewall(a.row.MachineId,a.row.MachineName)},{default:(0,t.k6)((()=>[(0,t.bF)(d,null,{default:(0,t.k6)((()=>[(0,t.bF)(w)])),_:1}),(0,t.eW)("防火墙")])),_:2},1032,["onClick"])):n.hasFirewallOther?((0,t.uX)(),(0,t.Wv)(i,{key:6,onClick:e=>n.handleFirewall(a.row.MachineId,a.row.MachineName)},{default:(0,t.k6)((()=>[(0,t.bF)(d,null,{default:(0,t.k6)((()=>[(0,t.bF)(w)])),_:1}),(0,t.eW)("防火墙")])),_:2},1032,["onClick"])):(0,t.Q3)("",!0),a.row.isSelf&&n.hasWakeupSelf?((0,t.uX)(),(0,t.Wv)(i,{key:7,onClick:e=>n.handleWakeup(a.row.MachineId,a.row.MachineName)},{default:(0,t.k6)((()=>[(0,t.bF)(d,null,{default:(0,t.k6)((()=>[(0,t.bF)(k)])),_:1}),(0,t.eW)("唤醒")])),_:2},1032,["onClick"])):n.hasWakeupOther?((0,t.uX)(),(0,t.Wv)(i,{key:8,onClick:e=>n.handleWakeup(a.row.MachineId,a.row.MachineName)},{default:(0,t.k6)((()=>[(0,t.bF)(d,null,{default:(0,t.k6)((()=>[(0,t.bF)(k)])),_:1}),(0,t.eW)("唤醒")])),_:2},1032,["onClick"])):(0,t.Q3)("",!0)])),_:2},1024)])),default:(0,t.k6)((()=>[(0,t.Lk)("div",ho,[mo,(0,t.bF)(d,{class:"el-icon--right"},{default:(0,t.k6)((()=>[(0,t.bF)(s)])),_:1})])])),_:2},1024)])),_:1})}var go=a(12933);const wo=Symbol(),ko=()=>{const e=(0,u.KR)({device:{id:"",name:""},showRoutes:!1,showFirewall:!1,showWakeup:!1});return(0,t.Gt)(wo,e),{oper:e}},vo=()=>(0,t.WQ)(wo);var fo={emits:["refresh","access"],components:{Delete:F.epd,SwitchButton:F.L$q,ArrowDown:F.yd$,Flag:F.lNU,HelpFilled:F.adD,Platform:F.ODD,Paperclip:F.xv8,CircleCheck:F.rW7,VideoPlay:F.IOc},setup(e,{emit:l}){const a=(0,d.B)(),n=(0,ae.q)(),o=(0,t.EW)((()=>a.value.config.Client.AccessBits)),r=(0,t.EW)((()=>a.value.hasAccess("Access"))),s=(0,t.EW)((()=>n.value.list)),u=(0,t.EW)((()=>a.value.hasAccess("Reboot"))),c=(0,t.EW)((()=>a.value.hasAccess("Remove"))),h=(0,t.EW)((()=>a.value.hasAccess("SetApiPassword"))),m=(0,t.EW)((()=>a.value.hasAccess("SetApiPasswordOther"))),p=(0,t.EW)((()=>a.value.hasAccess("FirewallSelf"))),g=(0,t.EW)((()=>a.value.hasAccess("FirewallOther"))),w=(0,t.EW)((()=>a.value.hasAccess("WakeupSelf"))),k=(0,t.EW)((()=>a.value.hasAccess("WakeupOther"))),v=no(),f=vo(),b=(e,a)=>{go.s.confirm(`确认删除[${a}]?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,Q.Se)(e).then((()=>{l("refresh")}))})).catch((()=>{}))},C=(e,a)=>{go.s.confirm(`确认关闭[${a}]?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,Zn.NS)(e).then((()=>{l("refresh")}))})).catch((()=>{}))},F=(e,l)=>{let a=Math.max(o.value.length,l.length),t=o.value.padEnd(a,"0").split(""),n=l.padEnd(a,"0").split("");return e.showAccess&&r.value&&t.map(((e,l)=>"1"==n[l]&&"1"==e||"0"==n[l])).filter((e=>e)).length>0},y=e=>{l("access",e)},V=e=>{go.s.prompt("输入新的管理接口密码",`重置【${e.MachineName}】的接口密码`,{confirmButtonText:"确定",cancelButtonText:"取消",inputPattern:/^[0-9a-zA-Z]{1,32}$/,inputErrorMessage:"数字字母1-32位"}).then((({value:l})=>{(0,J.gv)({machineId:e.MachineId,password:l}).then((()=>{i.nk.success("操作成功,重启后生效~")})).catch((()=>{i.nk.error("操作失败~")}))})).catch((()=>{}))},E=(e,l)=>{v.value.device.id=e,v.value.device.name=l,v.value.show=!0},_=(e,l)=>{f.value.device.id=e,f.value.device.name=l,f.value.showRoutes=!0},L=(e,l)=>{f.value.device.id=e,f.value.device.name=l,f.value.showFirewall=!0},P=(e,l)=>{f.value.device.id=e,f.value.device.name=l,f.value.showWakeup=!0};return{accessList:s,handleDel:b,handleExit:C,hasReboot:u,hasRemove:c,hasAccess:r,handleShowAccess:F,handleAccess:y,hasApiPassword:h,hasApiPasswordOther:m,handleApiPassword:V,handleStopwatch:E,handleRoutes:_,hasFirewallSelf:p,hasFirewallOther:g,handleFirewall:L,hasWakeupSelf:w,hasWakeupOther:k,handleWakeup:P}}};const bo=(0,V.A)(fo,[["render",po],["__scopeId","data-v-8c55c3c4"]]);var Co=bo;function Fo(e,l,a,o,r,s){const d=(0,t.g2)("el-table-column"),u=(0,t.g2)("el-table"),i=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(i,{modelValue:o.state.show,"onUpdate:modelValue":l[0]||(l[0]=e=>o.state.show=e),"append-to":".app-wrap",title:`[${o.state.machineName}]上的路由`,top:"1vh"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(u,{data:o.state.data,size:"small",border:"",height:"500"},{default:(0,t.k6)((()=>[(0,t.bF)(d,{property:"Ip",label:"IP"}),(0,t.bF)(d,{property:"Id",label:"目标"},{default:(0,t.k6)((e=>[(0,t.Lk)("span",null,(0,n.v_)(o.state.names[e.row.Id]),1)])),_:1})])),_:1},8,["data"])])])),_:1},8,["modelValue","title"])}var yo={props:["modelValue"],emits:["update:modelValue"],setup(e,{emit:l}){const a=vo(),n=(0,u.Kh)({show:!0,machineId:a.value.device.id,machineName:a.value.device.name,data:[],names:{},timer:0});return(0,t.wB)((()=>n.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e),l("change")}),300)})),(0,t.sV)((()=>{(0,Q.NT)().then((e=>{n.names=e.reduce(((e,l)=>(e[l.MachineId]=l.MachineName,e)),{})})).catch((()=>{})),(0,ce.bP)(n.machineId).then((e=>{n.data=Object.keys(e).map((l=>({Ip:l,Id:e[l]})))})).catch((()=>{}))})),(0,t.hi)((()=>{})),{state:n}}};const Vo=(0,V.A)(yo,[["render",Fo]]);var Eo=Vo;function _o(e,l,a,n,o,r){const s=(0,t.g2)("Firewall"),d=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(d,{modelValue:n.state.show,"onUpdate:modelValue":l[0]||(l[0]=e=>n.state.show=e),"append-to":".app-wrap",title:`[${n.state.machineName}]上的防火墙`,top:"1vh",width:"760"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(s,{machineId:n.state.machineId},null,8,["machineId"])])])),_:1},8,["modelValue","title"])}var Lo=a(45036),Po={props:["modelValue"],emits:["update:modelValue"],components:{Firewall:Lo.A},setup(e,{emit:l}){const a=vo(),n=(0,u.Kh)({show:!0,machineId:a.value.device.id,machineName:a.value.device.name});return(0,t.wB)((()=>n.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e),l("change")}),300)})),{state:n}}};const Io=(0,V.A)(Po,[["render",_o]]);var Mo=Io;function To(e,l,a,n,o,r){const s=(0,t.g2)("Wakeup"),d=(0,t.g2)("el-dialog");return(0,t.uX)(),(0,t.Wv)(d,{modelValue:n.state.show,"onUpdate:modelValue":l[0]||(l[0]=e=>n.state.show=e),"append-to":".app-wrap",title:`[${n.state.machineName}]上的唤醒`,top:"1vh",width:"760"},{default:(0,t.k6)((()=>[(0,t.Lk)("div",null,[(0,t.bF)(s,{machineId:n.state.machineId},null,8,["machineId"])])])),_:1},8,["modelValue","title"])}var So=a(85746),Wo={props:["modelValue"],emits:["update:modelValue"],components:{Wakeup:So.A},setup(e,{emit:l}){const a=vo(),n=(0,u.Kh)({show:!0,machineId:a.value.device.id,machineName:a.value.device.name});return(0,t.wB)((()=>n.show),(e=>{e||setTimeout((()=>{l("update:modelValue",e),l("change")}),300)})),{state:n}}};const Ao=(0,V.A)(Wo,[["render",To]]);var Xo=Ao,Ro={components:{Sort:_,Device:$,DeviceEdit:G,AccessEdit:le,Tunnel:xa,TunnelEdit:qa,ConnectionsEdit:Qn,Tuntap:de,TuntapEdit:ml,TuntapLease:Al,Socks5:Yl,Socks5Edit:Ea,Forward:ct,ForwardEdit:Pt,SForwardEdit:vn,UpdaterConfirm:lo,Stopwatch:io,Oper:Co,OperRoutes:Eo,OperFirewall:Mo,OperWakeup:Xo},setup(e){const l=(0,d.B)(),a=(0,u.Kh)({height:(0,t.EW)((()=>l.value.height-90))}),{devices:n,machineId:o,_getSignList:r,_getSignList1:s,handleDeviceEdit:c,handleAccessEdit:h,handlePageChange:m,handlePageSizeChange:p,handleDel:w,clearDevicesTimeout:k,setSort:v}=(0,q.r)(),{tuntap:b,_getTuntapInfo:F,handleTuntapEdit:y,handleTuntapRefresh:V,clearTuntapTimeout:E,getTuntapMachines:_,sortTuntapIP:L}=(0,C.O)(),{socks5:P,_getSocks5Info:I,handleSocks5Edit:M,handleSocks5Refresh:T,clearSocks5Timeout:S,getSocks5Machines:W,sortSocks5:A}=f(),{tunnel:X,_getTunnelInfo:R,getTunnelOperating:N,getRelayOperating:x,handleTunnelEdit:B,handleTunnelRefresh:U,clearTunnelTimeout:$,sortTunnel:D}=(0,Xa.y)(),{forward:z,_getForwardCountInfo:O,handleForwardEdit:Q,clearForwardTimeout:j,handleForwardRefresh:K}=g(),{sforward:G,_getSForwardCountInfo:H,handleSForwardEdit:J,clearSForwardTimeout:Z,handleSForwardRefresh:Y}=st(),{connections:ee,forwardConnections:le,_getForwardConnections:te,tuntapConnections:ne,_getTuntapConnections:oe,socks5Connections:re,_getSocks5Connections:se,handleTunnelConnections:de,clearConnectionsTimeout:ue}=(0,jl.L2)(),{updater:ie,_getUpdater:ce,_subscribeUpdater:he,clearUpdaterTimeout:me}=(0,jn.d)(),{flow:pe}=to(),{_getAccessInfo:ge,clearAccessTimeout:we,handleAccesssRefresh:ke}=(0,ae.Y)(),{oper:ve}=ko(),fe=e=>{n.page.Request.Prop=e.prop,n.page.Request.Asc="ascending"==e.order;let l=new Promise(((e,l)=>{e()}));if("tunnel"==e.prop){const e=D(n.page.Request.Asc);e.length>0&&(l=v(e))}else if("tuntap"==e.prop){const e=L(n.page.Request.Asc);e.length>0&&(l=v(e))}else if("socks5"==e.prop){const e=A(n.page.Request.Asc);e.length>0&&(l=v(e))}l.then((()=>{m()})).catch((()=>{}))},be=e=>{n.page.Request.Name=e||"",n.page.Request.Name?n.page.Request.Ids=_(n.page.Request.Name).concat(W(n.page.Request.Name)).reduce(((e,l)=>(-1==e.indexOf(l)&&e.push(l),e)),[]):n.page.Request.Ids=[],m(),U(),V(),T(),K(),Y(),ke(),i.nk.success({message:"刷新成功",grouping:!0})},Ce=()=>{m(),U(),V(),T(),ke(),i.nk.success({message:"刷新成功",grouping:!0})};return(0,t.sV)((()=>{m(),U(),V(),T(),K(),Y(),ke(),r(),s(),F(),I(),R(),N(),x(),te(),oe(),se(),O(),H(),ce(),he(),ge()})),(0,t.hi)((()=>{k(),ue(),E(),S(),$(),j(),Z(),me(),we()})),{state:a,globalData:l,devices:n,machineId:o,handleSortChange:fe,handleDeviceEdit:c,handleAccessEdit:h,handlePageRefresh:be,handlePageSearch:Ce,handlePageChange:m,handlePageSizeChange:p,handleDel:w,tuntap:b,handleTuntapEdit:y,handleTuntapRefresh:V,socks5:P,handleSocks5Edit:M,handleSocks5Refresh:T,tunnel:X,connections:ee,handleTunnelEdit:B,handleTunnelRefresh:U,handleTunnelConnections:de,forward:z,handleForwardEdit:Q,sforward:G,handleSForwardEdit:J,updater:ie,flow:pe,oper:ve}}};const No=(0,V.A)(Ro,[["render",s],["__scopeId","data-v-0e366c4c"]]);var xo=No}}]); \ No newline at end of file diff --git a/src/linker.app/public/web/js/app.f81ec974.js b/src/linker.app/public/web/js/app.f81ec974.js new file mode 100644 index 00000000..4d2af7b0 --- /dev/null +++ b/src/linker.app/public/web/js/app.f81ec974.js @@ -0,0 +1 @@ +(function(){"use strict";var e={88835:function(e,r,t){t.d(r,{D3:function(){return l},P$:function(){return u},ai:function(){return a},om:function(){return c},ql:function(){return i},vZ:function(){return o},zj:function(){return n}});var s=t(10004);const n=()=>(0,s.zG)("config/get"),a=e=>(0,s.zG)("config/install",e),o=e=>(0,s.zG)("config/InstallCopy",e),l=e=>(0,s.zG)("config/InstallSave",e),u=e=>(0,s.zG)("config/export",e),c=e=>(0,s.zG)("config/copy",e),i=e=>(0,s.zG)("config/save",e)},10004:function(e,r,t){t.d(r,{a1:function(){return f},e3:function(){return w},jH:function(){return S},zG:function(){return k}});t(44114),t(16573),t(78100),t(77936);var s=t(51219);let n=0,a=null,o="",l=1,u="snltty";const c={},i={connected:!1,connecting:!1},d=()=>{const e=Date.now();for(let r in c){const t=c[r];e-t.time>t.timeout&&(t.reject(`超时:${JSON.stringify(t)}`),delete c[r])}setTimeout(d,1e3)};d();const p={subs:{},add:function(e,r){"function"==typeof r&&(this.subs[e]||(this.subs[e]=[]),this.subs[e].push(r))},remove(e,r){let t=this.subs[e]||[];for(let s=t.length-1;s>=0;s--)t[s]==r&&t.splice(s,1)},push(e,r){let t=this.subs[e]||[];for(let s=t.length-1;s>=0;s--)t[s](r)}},v=()=>{k("password",u||"snltty")},y=e=>{i.connected=!1,i.connecting=!1,p.push(h,i.connected),setTimeout((()=>{f()}),1e3)},m=e=>{if("string"!=typeof e.data)return void e.data.arrayBuffer().then((r=>{const t=new DataView(r).getInt8(),s=new FileReader;s.readAsText(e.data.slice(4,4+t),"utf8"),s.onload=()=>{let n=JSON.parse(s.result);n.Content={Name:n.Content,Img:e.data.slice(4+t,e.data.length),ArrayBuffer:r},g(n)}}));let r=JSON.parse(e.data);g(r)},g=e=>{let r=c[e.RequestId];delete c[e.RequestId],r?0==e.Code?"password"==e.Path&&"password ok"==e.Content?(i.connected=!0,i.connecting=!1,p.push(h,i.connected)):r.resolve(e.Content):1==e.Code?r.reject(e.Content):255==e.Code?(r.reject(e.Content),r.errHandle||s.nk.error(`${r.path}:${e.Content}`)):p.push(e.Path,e.Content):p.push(e.Path,e.Content)},f=(e=o,r=u)=>{u=r,o=e,i.connecting||i.connected||(null!=a&&a.close(),i.connecting=!0,a=new WebSocket(o),a.iddd=++l,a.onopen=v,a.onclose=y,a.onmessage=m,a.onerror=e=>{s.nk.error({message:"api接口连接失败,请检查接口地址或密码",grouping:!0})})},w=()=>{a&&a.close()},k=(e,r={},t=!1,s=15e3)=>new Promise(((o,l)=>{let u=++n;try{c[u]={resolve:o,reject:l,errHandle:t,path:e,time:Date.now(),timeout:s};let n=JSON.stringify({Path:e,RequestId:u,Content:"string"==typeof r?r:JSON.stringify(r)});1==a.readyState&&a.send(n)}catch(i){console.log(i),delete c[u]}})),h=Symbol(),S=e=>{p.add(h,e)}},69299:function(e,r,t){t.d(r,{BS:function(){return c},NT:function(){return v},SZ:function(){return o},Se:function(){return i},VN:function(){return l},gC:function(){return d},jU:function(){return a},nD:function(){return u},rd:function(){return n},wP:function(){return y},zp:function(){return p}});var s=t(10004);const n=e=>(0,s.zG)("signIn/set",e),a=e=>(0,s.zG)("signIn/setservers",e),o=()=>(0,s.zG)("signIn/info"),l=e=>(0,s.zG)("signIn/setorder",e),u=e=>(0,s.zG)("signIn/List",e),c=e=>(0,s.zG)("signIn/ids",e),i=e=>(0,s.zG)("signIn/del",e),d=e=>(0,s.zG)("signIn/setname",e),p=e=>(0,s.zG)("signIn/SetGroups",e),v=()=>(0,s.zG)("signIn/names"),y=e=>(0,s.zG)("signIn/checkkey",e)},49287:function(e,r,t){t.d(r,{Y:function(){return o},A:function(){return u}});var s=t(35931),n={"common.oper":"Operated","common.operFail":"Operation failed","common.confirm":"Confirm","common.cancel":"Cancel","common.setting":"Setting","common.operating":"In operation","common.tips":"Tips","common.option":"Option","common.access":"No access","common.relay":"Relay","common.p2p":"P2P","common.refresh":"Refresh","head.home":"Home","head.server":"Server","head.protocol":"Protocol","head.action":"Action","head.firewall":"Firewall","head.wakeup":"Wakeup","head.logger":"Logs","head.refresh":"Refresh","logger.list":"List","logger.setting":"Setting","logger.clear":"Clear","logger.refresh":"Refresh","logger.count":"Count","logger.level":"Level","logger.time":"Time","logger.content":"Content","action.text":"Set action static Json parameters","action.jsonError":"Json format error","server.messenger":"Messenger Server","server.group":"Group","server.sync":"Sync","server.messengerAddr":"Messenger Server","server.messengerText":"ip:port or domain:port","server.messengerSecretKey":"Messenger SecretKey","server.messengerSecretKeyText":"Messenger SecretKey","server.messengerUserId":"User Id","server.messengerUserIdText":"Your unique identifier,used to unlock something.","permission.closed":"Closed","permission.simple":"Simple","permission.full":"Full","permission.clear":"Clear connection","status.group":"Group manager","status.groupName":"Name","status.groupPassword":"Password","status.groupOper":"Oper","status.groupDelConfirm":"Are you sure to delete?","status.groupValidate":"Name or Id empty item has exists","status.support":"Support","status.website":"Website","status.doc":"Document","status.cdkey":"CDKEY store","status.export":"Export","status.exportText":"Export the configuration to run elsewhere","status.exportSingle":"Single","status.exportName":"Name","status.exportNamePlease":"Please input device name","status.exportApiPassword":"Api Pwd","status.exportApiPasswordPlease":"Please input api password","status.exportWebport":"Web Port","status.exportWebportPlease":"Please input web port","status.exportApiport":"Api port","status.exportApiportPlease":"Please input api port","status.exportDownload":"Download","status.exportCopy":"Copy","status.exportSave":"Save","status.exportRelay":"Relay secretKey","status.exportSForward":"SForward secretKey","status.exportUpdater":"Update secretKey","status.exportServer":"Messenger server","status.exportGroup":"Group","status.exportTunnel":"Tunnel config","status.api":"Manager api","status.apiClear":"Clear","status.apiAlter":"Alter","status.apiAlterConfirm":"Are you sure?","status.messenger":"Messenger server","status.messengerName":"Messenger","status.messengerChange":"change your messenger","status.messengerGroup":"Group","status.serverVersion":"Server version","status.serverNoUpdate":"No updates","status.serverNotNew":"Not latest version","status.serverNew":"Is latest version","status.serverDownloading":"Downloading","status.serverDownloaded":"Downloaded","status.serverUnZipIng":"In unzip","status.serverUnZip":"Unzip","status.serverConfirm":"Are you sure to update server?","status.serverCloseConfirm":"Are you sure to close server?","status.flowOnline":"Online","status.flowUpload":"Up","status.flowDownload":"Down","status.flowThisServer":"This Server","status.flowAllServer":"All Server","status.flowAllSend":"Send","status.flowAllReceive":"Receive","status.flowOnline7Day":"Within seven days","status.flowServer":"Server","status.flowType":"Type","status.flowOper":"Oper","status.flowDetail":"Detail","status.flowMessenger":"Messenger","status.flowRelay":"Relay","status.flowRelayNode":"Relay Node","status.flowWanPort":"Wan Port","status.flowServerForward":"Server Forward","status.flowSearchName":"Name","status.flowRelaySource":"Source","status.flowRelayTarget":"Target","status.flowSearchDomainPort":"Domain/Port","status.flowArea":"Area","status.flowNet":"Network","status.tunnelName":"Name","status.tunnelLabel":"Label","status.tunnelProtocol":"Proto","status.tunnelBuffer":"Buffer","status.tunnelReverse":"Reverse","status.tunnelSSL":"SSL","status.tunnelDisanbled":"Disable","status.tunnelSort":"Index","status.tunnelYes":"Y","status.tunnelNo":"N","server.relaySecretKey":"Relay SecretKey","server.relaySSL":"Use SSL","server.relayDisable":"Disable","server.relayUseCdkey":"Use CDKEY","server.relayUseCdkeyTitle":"If you have a relay SecretKey, ignore it\r\n Without a relay SecretKey, you can choose to use a cdkey or default relay node config","server.relayNodes":"Nodes","server.relayTitle":"Relay Nodes","server.relayName":"Name","server.relayFlow":"Traffic/Month","server.relaySpeed":"Total","server.relaySpeed1":"Single","server.relaySpeed2":"Rate","server.relayConnection":"Conn","server.relayDelay":"Delay","server.relayPublic":"Public","server.relayAllow":"Allow","server.relayUrl":"Url","server.relayOper":"Oper","server.relayUse":"Use","server.cdkeySecretKey":"Cdkey secretKey","server.cdkeyText":"The cdkey manager can be used when the key is correct","server.myCdkey":"My CDKEY","server.cdkey":"Manager CDKEY","server.addCdkey":"Add CDKEY","server.cdkeyUserId":"UserId","server.cdkeyBandwidth":"Bandwidth","server.cdkeyBytes":"Bytes","server.cdkeyPay":"Pay","server.cdkeyOrder":"Order","server.cdkeyPrice":"Price","server.cdkeyPayPrice":"Pay price","server.cdkeyCostPrice":"Cost price","server.cdkeyUserPrice":"User price","server.cdkeyOrderId":"OrderNo","server.cdkeyContact":"Email","server.cdkeyRemark":"Remark","server.cdkeyAddTime":"Add","server.cdkeyStartTime":"Start","server.cdkeyEndTime":"End Time","server.cdkeyUseTime":"Use Time","server.cdkeyYear":"Year","server.cdkeyMonth":"Month","server.cdkeyDay":"Day","server.cdkeyHour":"Hour","server.cdkeyMin":"Min","server.cdkeySec":"Sec","server.cdkeyDuration":"Duration","server.cdkeyOper":"Oper","server.cdkeyDelConfirm":"Are you sure to delete?","server.cdkeyFlagAll":"All","server.cdkeyFlagTimein":"In end time","server.cdkeyFlagTimeout":"Out end time","server.cdkeyFlagBytesin":"Has bytes","server.cdkeyFlagBytesout":"Not have bytes","server.cdkeyFlagDeleted":"Deleted","server.cdkeyFlagUnDeleted":"Not deleted","server.cdkeyTestTitle":"Test CDKEY","server.cdkeyTestKey":"CDKEY","server.cdkeyTestGB":"GB","server.cdkeyTestGBError":"Must > 0","server.cdkeyTestSpeed":"Mbps","server.cdkeyTestSpeedError":"Must > 0","server.cdkeyTestTime":"Time","server.cdkeyTestTimeError":"Format error","server.cdkeyTestUserId":"UserId","server.cdkeyTestUserIdError":"UserId error","server.cdkeyTestOrderId":"OrderNo","server.cdkeyTestOrderIdError":"OrderNo is empty","server.cdkeyTestContact":"Contact","server.cdkeyTestCostPrice":"Cost","server.cdkeyTestPrice":"Price","server.cdkeyTestUserPrice":"User price","server.cdkeyTestPayPrice":"Pay","server.cdkeyTestCount":"Count","server.cdkeyTestCountError":"Must > 0","server.cdkeyTestType":"Type","server.cdkeyTestTypeError":"Must be relay","server.cdkeyTestParseError":"decode fail","server.cdkeyImport":"Import CDKEY","server.cdkeyImportParse":"Decode fail","server.cdkeyImportField":"Field invalid","server.cdkeyImportNetwork":"Network error","server.cdkeyImportOrderId":"OrderNo has exists","server.sforwardSecretKey":"Server forward secretKey","server.sforwardText":"The server forward can be used when the key is correct","server.updaterSecretKey":"Server update secretKey","server.updaterText":"The server update can be used when the key is correct","server.updaterRate":"Update check interval","server.updaterY":"Year","server.updaterM":"Mmonth","server.updaterD":"Day","server.updaterH":"Hour","server.updaterMM":"Minute","server.updaterS":"Second","server.asyncText":"to group all clients","server.asyncSelect":"Please select","server.asyncCheckAll":"Check all","server.asyncSignInSecretKey":"Signin secretKey","server.asyncSignInServer":"Signin server","server.asyncGroupSecretKey":"Group secretKey","server.asyncRelaySecretKey":"Relay secretKey","server.asyncSForwardSecretKey":"Server forward secretKey","server.asyncUpdaterSecretKey":"Update secretKey","server.asyncTunnelTransports":"Tunnel transports","server.asyncSignInUserId":"User Id","firewall.rule":"Firewall rule","firewall.srcName":"Src Device","firewall.dstCidr":"Dst IP","firewall.dstPort":"Dst Port","firewall.protocol":"Protocol","firewall.protocolall":"Protocol all","firewall.actionall":"Action all","firewall.action":"Action","firewall.actionAllow":"Allow","firewall.actionAllowAll":"Allow all","firewall.actionDeny":"Deny","firewall.actionDenyAll":"Deny all","firewall.orderby":"Order","firewall.enabled":"Enable","firewall.disabled":"Disable","firewall.disabledAll":"All state","firewall.del":"Del","firewall.edit":"Edit","firewall.delConfirm":"Are you sure to delete this rule?","firewall.switch":"Firewall switch,open or close","firewall.remark":"Remark","firewall.unselect":"All","firewall.selected":"Selected","wakeup.rule":"Wakeup","wakeup.type":"Type","wakeup.typeall":"All type","wakeup.typeWol":"🎩WOL","wakeup.type1":"🎩WOL","wakeup.typeCom":"🚨COM","wakeup.type2":"🚨COM","wakeup.typeHid":"🚨HID","wakeup.type4":"🚨HID","wakeup.name":"Name","wakeup.value":"Value","wakeup.road":"Road","wakeup.valueMac":"MAC Addr","wakeup.valueCom":"COM","wakeup.valueComText":"LCUS COM,Baud Rate 9600,Data bits 8,Parity None,StopBits 1,","wakeup.valueHid":"HID","wakeup.valueHidText":"LCUS HID","wakeup.remark":"Remark","wakeup.del":"Del","wakeup.edit":"Edit","wakeup.delConfirm":"Deleted?","wakeup.runWolConfirm":"Are you sure send wol packet to","wakeup.runSwitchConfirm":"Are you sure send switch packet to","wakeup.runSwitchLong":"Long press","wakeup.runSwitchTouch":"Touch","wakeup.runSwitchCustom":"Custom ms"},a={"common.oper":"已操作","common.operFail":"操作失败","common.confirm":"确认","common.cancel":"取消","common.setting":"设置","common.operating":"正在操作","common.tips":"提示","common.option":"选项","common.access":"无权限","common.relay":"中继","common.p2p":"打洞","common.refresh":"刷新","head.home":"首页","head.server":"服务器","head.group":"分组","head.protocol":"打洞协议","head.action":"验证","head.firewall":"防火墙","head.wakeup":"唤醒","head.logger":"日志","head.refresh":"刷新","logger.list":"列表","logger.setting":"设置","logger.clear":"清空","logger.refresh":"刷新","logger.count":"数量","logger.level":"等级","logger.time":"时间","logger.content":"内容","action.text":"设置定义验证的静态Json参数","action.jsonError":"json格式错误","server.messenger":"信标服务器","server.group":"分组","server.sync":"同步","server.messengerAddr":"服务器地址","server.messengerText":"ip:端口 或者 域名:端口","server.messengerSecretKey":"信标密钥","server.messengerSecretKeyText":"密钥正确时可连接服务器","server.messengerUserId":"用户id","server.messengerUserIdText":"你的唯一标识,用于解锁一些限制","permission.closed":"禁止通行","permission.simple":"简单管理","permission.full":"专业管理","permission.clear":"清除连接","status.group":"管理分组","status.groupName":"名称","status.groupPassword":"密码","status.groupOper":"操作","status.groupDelConfirm":"确认删除吗?","status.groupValidate":"有名称或者id未设置的项","status.support":"为爱发电","status.website":"官网","status.doc":"文档","status.cdkey":"CDKEY商城","status.export":"导出配置","status.exportText":"导出配置,客户端覆盖配置文件,或粘贴配置信息,或在线加载","status.exportSingle":"单设备","status.exportName":"设备名","status.exportNamePlease":"请输入设备名","status.exportApiPassword":"管理密码","status.exportApiPasswordPlease":"请输入接口密码","status.exportWebport":"管理端口","status.exportWebportPlease":"请输入网页端口","status.exportApiport":"接口端口","status.exportApiportPlease":"请输入接口端口","status.exportDownload":"下载","status.exportCopy":"复制","status.exportSave":"保存","status.exportRelay":"中继密钥","status.exportSForward":"内网穿透密钥","status.exportUpdater":"更新密钥","status.exportServer":"信标服务器","status.exportGroup":"当前分组","status.exportTunnel":"打洞协议","status.api":"管理接口","status.apiClear":"清除","status.apiAlter":"更改","status.apiAlterConfirm":"确定你的操作?","status.messenger":"信标服务器","status.messengerChange":"更改你的连接设置","status.messengerName":"信标","status.messengerGroup":"分组名","status.messenger0":"登入信标","status.messenger1":"客户端列表","status.messenger2":"客户端删除","status.messenger4":"客户端改名(转发)","status.messenger7":"获取服务器版本","status.messenger8":"客户端搜索ids","status.messenger9":"客户端id列表","status.messenger10":"客户端排序","status.messenger11":"客户端在线","status.messenger12":"生成客户端id","status.messenger13":"登入信标V_1_3_1","status.messenger14":"名字列表","status.messenger2001":"外网端口(转发)","status.messenger2002":"外网端口(转发)","status.messenger2003":"开始打洞(转发)","status.messenger2004":"开始打洞(转发)","status.messenger2005":"打洞失败(转发)","status.messenger2006":"打洞失败(转发)","status.messenger2007":"打洞成功(转发)","status.messenger2008":"打洞成功(转发)","status.messenger2009":"隧道配置(转发)","status.messenger2010":"隧道配置(转发)","status.messenger2012":"隧道同步(转发)","status.messenger2101":"中继通知(转发)","status.messenger2102":"中继通知(转发)","status.messenger2103":"中继请求","status.messenger2105":"中继连通测试","status.messenger2201":"运行网卡(转发)","status.messenger2203":"停止网卡(转发)","status.messenger2204":"更新网卡","status.messenger2205":"更新网卡(转发)","status.messenger2208":"配置网卡网络","status.messenger2209":"获取网卡网络","status.messenger2210":"分配IP","status.messenger2211":"网卡变化","status.messenger2212":"网卡变化(转发)","status.messenger2213":"IP续约","status.messenger2214":"网卡端口转发检测","status.messenger2215":"网卡端口转发检测(转发)","status.messenger2301":"添加内网穿透","status.messenger2302":"移除内网穿透","status.messenger2303":"通知内网穿透(转发)","status.messenger2304":"通知内网穿透UDP(转发)","status.messenger2305":"获取穿透列表(转发)","status.messenger2401":"测试端口转发(转发)","status.messenger2403":"获取端口转发(转发)","status.messenger2507":"同步配置","status.messenger2508":"同步配置(转发)","status.messenger2601":"更新信息(转发)","status.messenger2602":"更新信息(转发)","status.messenger2603":"确认更新(转发)","status.messenger2604":"确认更新(转发)","status.messenger2605":"重启(转发)","status.messenger2606":"重启","status.messenger2607":"服务器更新信息","status.messenger2608":"确认服务器更新","status.messenger2609":"服务器重启","status.messenger2610":"订阅更新信息(转发)","status.messenger2611":"订阅更新信息(转发)","status.messenger2612":"检查更新","status.messenger2613":"检查更新(转发)","status.messenger2701":"服务器流量","status.messenger2702":"服务器信标流量","status.messenger2703":"服务器中继流量","status.messenger2704":"服务器内网穿透流量","status.messenger2807":"同步配置","status.messenger2808":"同步配置(转发)","status.messenger2812":"同步推送","status.messenger2813":"同步拉取","status.messenger2814":"同步通知","status.messenger2815":"同步分页拉取","status.messenger2900":"运行socks5","status.messenger2901":"运行socks5(转发)","status.messenger2902":"停止socks5","status.messenger2903":"停止socks5(转发)","status.messenger2904":"更新socks5","status.messenger2905":"更新socks5(转发)","status.messenger3003":"获取权限","status.messenger3004":"获取权限(转发)","status.messenger3005":"更新权限","status.messenger3006":"更新权限(转发)","status.serverVersion":"服务端的程序版本","status.serverNoUpdate":"未检测到更新","status.serverNotNew":"不是最新版本","status.serverNew":"是最新版本","status.serverDownloading":"正在下载","status.serverDownloaded":"已下载","status.serverUnZipIng":"正在解压","status.serverUnZip":"已解压","status.serverConfirm":"确定更新服务端吗?","status.serverCloseConfirm":"确定关闭服务端吗?","status.flowOnline":"在线","status.flowUpload":"上传","status.flowDownload":"下载","status.flowThisServer":"本服务器","status.flowAllServer":"所有服务器","status.flowAllSend":"发送","status.flowAllReceive":"接收","status.flowOnline7Day":"7天内上线","status.flowServer":"服务器","status.flowType":"类别","status.flowOper":"操作","status.flowDetail":"详情","status.flowMessenger":"信标","status.flowRelay":"中继","status.flowRelayNode":"中继节点","status.flowWanPort":"外网端口","status.flowServerForward":"内网穿透","status.flowSearchName":"名字搜索","status.flowRelaySource":"发起端","status.flowRelayTarget":"目标端","status.flowSearchDomainPort":"域名/端口","status.flowArea":"地区","status.flowNet":"网络","status.tunnelName":"名称","status.tunnelLabel":"说明","status.tunnelProtocol":"协议","status.tunnelBuffer":"缓冲区","status.tunnelReverse":"反向","status.tunnelSSL":"SSL","status.tunnelDisanbled":"禁用","status.tunnelSort":"排序","status.tunnelYes":"是","status.tunnelNo":"否","server.relaySecretKey":"中继密钥","server.relaySSL":"使用ssl","server.relayDisable":"禁用","server.relayUseCdkey":"消耗CDKEY","server.relayUseCdkeyTitle":"如果你有中继密钥,你没有任何限制,也不会消耗CDKEY,可以不管这个\r\n没有中继密钥,有CDKEY,但是不想使用CDKEY,只想使用中继节点默认的限制,就去掉勾选","server.relayNodes":"节点","server.relayTitle":"中继节点","server.relayName":"名称","server.relayFlow":"月流量","server.relayFlowLast":"剩余流量","server.relaySpeed":"带宽","server.relaySpeed1":"总带宽","server.relaySpeed2":"速率","server.relayConnection":"连接数","server.relayDelay":"延迟","server.relayPublic":"公开","server.relayAllow":"支持协议","server.relayUrl":"Url","server.relayOper":"操作","server.relayUse":"使用","server.cdkeySecretKey":"Cdkey密钥","server.cdkeyText":"密钥正确时可管理cdkey","server.myCdkey":"我的CDKEY","server.cdkey":"管理CDKEY","server.addCdkey":"添加CDKEY","server.cdkeyUserId":"用户标识","server.cdkeyBandwidth":"带宽","server.cdkeyBytes":"流量","server.cdkeyPay":"支付","server.cdkeyPrice":"原价","server.cdkeyPayPrice":"支付","server.cdkeyCostPrice":"成本","server.cdkeyUserPrice":"会员价","server.cdkeyOrder":"订单","server.cdkeyOrderId":"订单号","server.cdkeyContact":"邮箱","server.cdkeyRemark":"备注","server.cdkeyAddTime":"添加","server.cdkeyStartTime":"开始","server.cdkeyEndTime":"有效时间","server.cdkeyUseTime":"最后使用","server.cdkeyYear":"年","server.cdkeyMonth":"月","server.cdkeyDay":"日","server.cdkeyHour":"时","server.cdkeyMin":"分","server.cdkeySec":"秒","server.cdkeyDuration":"持续时间","server.cdkeyOper":"操作","server.cdkeyDelConfirm":"确认删除吗?","server.cdkeyFlagAll":"全部","server.cdkeyFlagTimein":"有效期内","server.cdkeyFlagTimeout":"有效期外","server.cdkeyFlagBytesin":"剩余","server.cdkeyFlagBytesout":"已用完","server.cdkeyFlagDeleted":"已删除","server.cdkeyFlagUnDeleted":"未删除","server.cdkeyTestTitle":"测试解密CDKEY","server.cdkeyTestKey":"CDKEY","server.cdkeyTestGB":"流量","server.cdkeyTestGBError":"流量要大于0","server.cdkeyTestSpeed":"带宽Mbps","server.cdkeyTestSpeedError":"带宽要大于0","server.cdkeyTestTime":"持续时间","server.cdkeyTestTimeError":"格式错误","server.cdkeyTestUserId":"用户标识","server.cdkeyTestUserIdError":"用户标识不正确","server.cdkeyTestOrderId":"订单","server.cdkeyTestOrderIdError":"订单号不能为空","server.cdkeyTestContact":"联系方式","server.cdkeyTestCostPrice":"成本","server.cdkeyTestPrice":"原价","server.cdkeyTestUserPrice":"会员价","server.cdkeyTestPayPrice":"支付","server.cdkeyTestCount":"数量","server.cdkeyTestCountError":"数量要大于0","server.cdkeyTestType":"类别","server.cdkeyTestTypeError":"类别应该是Relay","server.cdkeyTestParseError":"解密失败","server.cdkeyImport":"导入CDKEY","server.cdkeyImportParse":"解密失败","server.cdkeyImportField":"字段有误","server.cdkeyImportNetwork":"网络错误","server.cdkeyImportOrderId":"订单号已存在","server.sforwardSecretKey":"服务器穿透密钥","server.sforwardText":"当密钥正确是可用","server.updaterSecretKey":"服务器更新密钥","server.updaterText":"当密钥正确是可用","server.updaterRate":"检查更新频率","server.updaterY":"年","server.updaterM":"月","server.updaterD":"日","server.updaterH":"时","server.updaterMM":"分","server.updaterS":"秒","server.asyncText":"到本组所有客户端","server.asyncSelect":"请选择","server.asyncCheckAll":"全选","server.asyncSignInSecretKey":"信标密钥","server.asyncSignInServer":"信标服务器","server.asyncGroupSecretKey":"分组密钥","server.asyncRelaySecretKey":"中继密钥","server.asyncSForwardSecretKey":"服务器穿透密钥","server.asyncUpdaterSecretKey":"更新密钥","server.asyncTunnelTransports":"打洞协议","server.asyncSignInUserId":"用户唯一标识","firewall.rule":"防火墙协议","firewall.srcName":"源设备","firewall.dstCidr":"目标IP","firewall.dstPort":"目标端口","firewall.protocolall":"全部协议","firewall.protocol":"协议","firewall.actionall":"全部操作","firewall.action":"操作","firewall.actionAllow":"允许","firewall.actionAllowAll":"允许全部","firewall.actionDeny":"阻止","firewall.actionDenyAll":"阻止全部","firewall.orderby":"顺序","firewall.enabled":"启用","firewall.disabled":"禁用","firewall.disabledAll":"全部状态","firewall.del":"删除","firewall.edit":"修改","firewall.delConfirm":"确认删除规则?","firewall.switch":"防火墙开关,是否开启防火墙","firewall.remark":"备注","firewall.unselect":"未选择","firewall.selected":"已选择","wakeup.rule":"唤醒","wakeup.type":"类别","wakeup.typeall":"全部类别","wakeup.typeWol":"🎩魔术包","wakeup.type1":"🎩魔术包","wakeup.typeCom":"🚨COM","wakeup.type2":"🚨COM","wakeup.typeHid":"🚨HID","wakeup.type4":"🚨HID","wakeup.name":"名称","wakeup.value":"值","wakeup.road":"通道","wakeup.valueMac":"MAC地址","wakeup.valueCom":"COM","wakeup.valueComText":"LCUS COM,波特率9600,数据位长度8,奇偶校验无,停止位1,","wakeup.valueHid":"HID","wakeup.valueHidText":"LCUS HID","wakeup.content":"内容","wakeup.remark":"备注","wakeup.del":"删除","wakeup.edit":"修改","wakeup.delConfirm":"确认删除?","wakeup.runWolConfirm":"确认发送魔术包到","wakeup.runSwitchConfirm":"确认触发开关到","wakeup.runSwitchLong":"长按","wakeup.runSwitchTouch":"轻触","wakeup.runSwitchCustom":"自定义ms"};const o={"zh-CN":"简体中文","en-US":"English"},l=(0,s.hU)({locale:localStorage.getItem("locale-lang")||navigator.language||navigator.browserLanguage,fallbackLocale:"zh-CN",legacy:!1,allowComposition:!0,messages:{"en-US":n,"zh-CN":a}});var u=l},22773:function(e,r,t){t.d(r,{A:function(){return a}});var s=t(56768),n=t(35931);function a(){const e=(0,n.s9)(),r=(0,s.EW)((()=>e.locale.value)),t=r=>{e.locale.value!==r&&(e.locale.value=r,localStorage.setItem("locale-lang",r))};return{currentLocale:r,changeLocale:t}}},98929:function(e,r,t){var s=t(45130),n=t(56768),a=t(24232);function o(e,r,t,s,o,l){const u=(0,n.g2)("router-view"),c=(0,n.g2)("Api"),i=(0,n.g2)("el-config-provider"),d=(0,n.g2)("Refresh");return(0,n.uX)(),(0,n.CE)(n.FK,null,[(0,n.Lk)("div",{class:(0,a.C4)({phone:s.globalData.isPhone})},[(0,n.bF)(i,{locale:s.locale},{default:(0,n.k6)((()=>[s.configed?((0,n.uX)(),(0,n.Wv)(u,{key:0})):(0,n.Q3)("",!0),(0,n.bF)(c)])),_:1},8,["locale"])],2),(0,n.bF)(d)],64)}var l=t(53830);const u={class:"port-wrap t-c"},c={class:"pdt-10"};function i(e,r,t,a,o,l){const i=(0,n.g2)("el-input"),d=(0,n.g2)("el-checkbox"),p=(0,n.g2)("el-button"),v=(0,n.g2)("el-dialog");return(0,n.uX)(),(0,n.Wv)(v,{class:"options-center",title:"管理接口","destroy-on-close":"",modelValue:a.showPort,"onUpdate:modelValue":r[3]||(r[3]=e=>a.showPort=e),center:"","show-close":!1,"close-on-click-modal":!1,"align-center":"",width:"200"},{footer:(0,n.k6)((()=>[(0,n.bF)(p,{type:"success",onClick:a.handleConnect1,plain:""},{default:(0,n.k6)((()=>[(0,n.eW)("确 定")])),_:1},8,["onClick"])])),default:(0,n.k6)((()=>[(0,n.Lk)("div",u,[(0,n.Lk)("div",null,[(0,n.eW)(" 接口 : "),(0,n.bF)(i,{modelValue:a.state.api,"onUpdate:modelValue":r[0]||(r[0]=e=>a.state.api=e),style:{width:"70%"},onKeyup:(0,s.jR)(a.handleConnect1,["enter"])},null,8,["modelValue","onKeyup"])]),(0,n.Lk)("div",c,[(0,n.eW)(" 秘钥 : "),(0,n.bF)(i,{"show-password":"",type:"password",modelValue:a.state.psd,"onUpdate:modelValue":r[1]||(r[1]=e=>a.state.psd=e),style:{width:"70%"},onKeyup:(0,s.jR)(a.handleConnect1,["enter"])},null,8,["modelValue","onKeyup"])]),(0,n.Lk)("div",null,[(0,n.bF)(d,{modelValue:a.state.save,"onUpdate:modelValue":r[2]||(r[2]=e=>a.state.save=e)},{default:(0,n.k6)((()=>[(0,n.eW)("保存密码")])),_:1},8,["modelValue"])])])])),_:1},8,["modelValue"])}var d=t(81387),p=t(90144),v=t(10004),y=t(69299),m=t(88835),g=t(57477),f={components:{Tools:g.S0q},props:["config"],setup(e){const r=(0,l.B)(),t=(0,d.rd)(),s=(0,d.lq)(),a=window.location.host,o={api:a,psd:"snltty"},u=JSON.parse(sessionStorage.getItem("api-cache")||localStorage.getItem("api-cache")||JSON.stringify(o)),c=(0,p.Kh)({api:u.api,psd:u.psd,showPort:!1,save:u.save||!1}),i=(0,n.EW)((()=>0==r.value.api.connected&&c.showPort)),g=()=>{u.api=c.api,u.psd=c.psd,u.save=c.save,c.save?localStorage.setItem("api-cache",JSON.stringify(u)):localStorage.setItem("api-cache",""),sessionStorage.setItem("api-cache",JSON.stringify(u)),(0,v.e3)();const e=`ws${"https:"===window.location.protocol?"s":""}://${c.api}`;(0,v.a1)(e,c.psd)},f=()=>{g(),window.location.reload()},w=()=>{(0,m.zj)().then((e=>{r.value.config.Common=e.Common,r.value.config.Client=e.Client,r.value.config.Server=e.Server,r.value.config.Running=e.Running,r.value.config.configed=!0,setTimeout((()=>{w()}),1e3)})).catch((e=>{setTimeout((()=>{w()}),1e3)}))},k=()=>{(0,y.SZ)().then((e=>{r.value.signin.Connected=e.Connected,r.value.signin.Version=e.Version,setTimeout((()=>{k()}),1e3)})).catch((e=>{setTimeout((()=>{k()}),1e3)}))};return(0,n.sV)((()=>{setTimeout((()=>{c.showPort=!0}),500),(0,v.jH)((e=>{e&&(w(),k())})),t.isReady().then((()=>{c.api=s.query.api?`${window.location.hostname}:${s.query.api}`:c.api,c.psd=s.query.psd||c.psd,g()}))})),{state:c,showPort:i,handleConnect1:f}}},w=t(71241);const k=(0,w.A)(f,[["render",i],["__scopeId","data-v-678ec858"]]);var h=k,S=t(2721),C=t(86726),T=t(22773);const b={class:"percentage-value"};function P(e,r,t,s,o,l){const u=(0,n.g2)("el-progress");return s.state.show?((0,n.uX)(),(0,n.CE)("div",{key:0,class:"refresh-wrap",style:(0,a.Tr)({top:s.state.dy/4+"px"})},[(0,n.bF)(u,{type:"circle",percentage:s.state.percentage,width:"50"},{default:(0,n.k6)((({percentage:e})=>[(0,n.Lk)("span",b,(0,a.v_)(e)+"%",1)])),_:1},8,["percentage"])],4)):(0,n.Q3)("",!0)}var A={setup(){const e=(0,p.Kh)({percentage:50,show:!1,touchY:0,dy:0,start:0}),r=r=>{e.percentage=0;const t=r.touches[0];e.touchY=t.clientY,e.start=Date.now()},t=r=>{const t=r.touches[0],s=t.clientY;if(0==e.show&&Date.now()-e.start>300&&(e.show=!0,e.touchY=s),e.show){const r=parseInt(s-e.touchY);e.dy=r,e.percentage=r,e.percentage>100&&(e.percentage=100)}},s=r=>{e.percentage>=100&&e.show&&window.location.reload(),e.show=!1,e.dy=0};return(0,n.sV)((()=>{document.addEventListener("touchstart",r),document.addEventListener("touchmove",t),document.addEventListener("touchend",s),document.addEventListener("touchcancel",s)})),{state:e}}};const D=(0,w.A)(A,[["render",P],["__scopeId","data-v-dfc7a2f2"]]);var I=D,x={components:{Api:h,Refresh:I},setup(e){const r=(0,l.v)(),t=(0,n.EW)((()=>r.value.config.configed)),{currentLocale:s}=(0,T.A)(),a=(0,n.EW)((()=>"zh-CN"==s.value?S.A:C.A));return{configed:t,locale:a,globalData:r}}};const N=(0,w.A)(x,[["render",o]]);var K=N;const E=[{path:"/",name:"Full",component:()=>Promise.all([t.e(264),t.e(83),t.e(237)]).then(t.bind(t,61953)),redirect:"/full/index.html",children:[{path:"/full/index.html",name:"FullIndex",component:()=>Promise.all([t.e(264),t.e(159),t.e(677),t.e(36),t.e(377)]).then(t.bind(t,44477))},{path:"/full/servers.html",name:"FullServers",component:()=>t.e(118).then(t.bind(t,28118))},{path:"/full/transport.html",name:"FullTransport",component:()=>t.e(32).then(t.bind(t,94032))},{path:"/full/action.html",name:"FullAction",component:()=>t.e(340).then(t.bind(t,36340))},{path:"/full/firewall.html",name:"FullFirewall",component:()=>Promise.all([t.e(36),t.e(259)]).then(t.bind(t,91))},{path:"/full/wakeup.html",name:"FullWakeup",component:()=>Promise.all([t.e(677),t.e(826)]).then(t.bind(t,38440))},{path:"/full/logger.html",name:"FullLogger",component:()=>t.e(372).then(t.bind(t,88372))}]},{path:"/net/index.html",name:"Network",component:()=>Promise.all([t.e(264),t.e(83),t.e(159),t.e(655)]).then(t.bind(t,7332))},{path:"/no-permission.html",name:"NoPermission",component:()=>t.e(228).then(t.bind(t,96100))}],O=(0,d.aE)({history:(0,d.Bt)(),routes:E});var U=O,F=t(49287),R=t(66161);t(4188),t(42355),t(21862);const M=(0,s.Ef)(K);M.use(F.A),M.use(R.A,{size:"default"}).use(U).mount("#app");const L=["ResizeObserver loop completed with undelivered notifications","ResizeObserver loop limit exceeded"];window.addEventListener("error",(e=>{let r=e.message;L.forEach((t=>{if(r.startsWith(t)){console.error(r),e.error&&console.error(e.error.stack);const t=document.getElementById("webpack-dev-server-client-overlay-div"),s=document.getElementById("webpack-dev-server-client-overlay");s&&s.setAttribute("style","display: none"),t&&t.setAttribute("style","display: none")}}))}))},53830:function(e,r,t){t.d(r,{B:function(){return u},v:function(){return l}});var s=t(10004),n=t(90144),a=t(56768);const o=Symbol(),l=()=>{const e=(0,n.KR)({api:{connected:!1},width:0,height:0,isPhone:(0,a.EW)((()=>e.value.width<800)),isPc:(0,a.EW)((()=>e.value.width>=800)),config:{Common:{},Client:{Servers:[],Accesss:{},AccessBits:""},Server:{},Running:{Relay:{Servers:[]},Tuntap:{IP:"",PrefixLength:24},Client:{Servers:[]},AutoSyncs:{}},configed:!1},signin:{Connected:!1,Version:"v1.0.0.0"},bufferSize:["1KB","2KB","4KB","8KB","16KB","32KB","64KB","128KB","256KB","512KB","1024KB"],self:{},hasAccess(e){return!!this.config.Client.FullAccess||void 0!=this.config.Client.Accesss[e]&&"1"==this.config.Client.AccessBits[this.config.Client.Accesss[e].Value]}});return(0,s.jH)((r=>{e.value.api.connected=r})),(0,a.Gt)(o,e),e},u=()=>(0,a.WQ)(o)}},r={};function t(s){var n=r[s];if(void 0!==n)return n.exports;var a=r[s]={id:s,loaded:!1,exports:{}};return e[s].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}t.m=e,function(){var e=[];t.O=function(r,s,n,a){if(!s){var o=1/0;for(i=0;i=a)&&Object.keys(t.O).every((function(e){return t.O[e](s[u])}))?s.splice(u--,1):(l=!1,a0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[s,n,a]}}(),function(){t.n=function(e){var r=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(r,{a:r}),r}}(),function(){t.d=function(e,r){for(var s in r)t.o(r,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:r[s]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce((function(r,s){return t.f[s](e,r),r}),[]))}}(),function(){t.u=function(e){return"js/"+e+"."+{32:"2e5280dd",36:"880370aa",83:"18703c88",118:"16573c08",159:"d85691cc",228:"80f5807e",237:"9b10edd4",259:"e75ec9c9",264:"67a34995",340:"92699d42",372:"ee624bb3",377:"77b930b6",655:"e04d3c0f",677:"3ec7a3d5",826:"c39a1e03"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{32:"1374e89e",118:"be8a94f0",228:"b2a71eca",237:"04563f19",259:"453688d2",340:"f859e18d",372:"e4499fe6",377:"f1f2e77e",655:"26dc1c1a",826:"80810cee"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)}}(),function(){var e={},r="linker.web:";t.l=function(s,n,a,o){if(e[s])e[s].push(n);else{var l,u;if(void 0!==a)for(var c=document.getElementsByTagName("script"),i=0;iSecretKey`),在客户端中填写 - -![Docusaurus Plushie](./img/signin.png) -::: diff --git a/src/linker.doc.web/docs/2、安装运行/2.10、导出配置.md b/src/linker.doc.web/docs/2、安装运行/2.10、导出配置.md new file mode 100644 index 00000000..75ed23d7 --- /dev/null +++ b/src/linker.doc.web/docs/2、安装运行/2.10、导出配置.md @@ -0,0 +1,16 @@ +--- +sidebar_position: 10 +--- + +# 2.10、导出配置 + +:::tip[说明] +1. 首次运行手动初始化的客户端拥有完全管理权限,可导出配置,用以作为组网其它设备运行 +2. 可以指定导出的设备名,管理端口,管理密码,和本客户端的其它配置信息,比如设定好的中继密钥什么的 +3. 可以指定导出的配置拥有什么权限 +4. `下载`则导出压缩包,可以复制到其它电脑上直接运行 +5. `复制`导出的配置复制到剪贴板,对应初始化配置时的`粘贴配置` +6. `保存`导出的配置保存到服务器,对应初始化配置时的`在线导入` + +![](./img/export.jpg) +::: \ No newline at end of file diff --git a/src/linker.doc.web/docs/2、安装运行/2.1、安装方法(win).md b/src/linker.doc.web/docs/2、安装运行/2.1、安装方法(win).md index ab532789..8020a9b2 100644 --- a/src/linker.doc.web/docs/2、安装运行/2.1、安装方法(win).md +++ b/src/linker.doc.web/docs/2、安装运行/2.1、安装方法(win).md @@ -24,15 +24,3 @@ sc stop 服务名 sc delete 服务名 ``` ::: - -## 2、如果需要多开 - -:::tip[说明] - -1. 由于linker使用当前目录下的`configs`文件夹里的配置文件,所以不能使用同一程序多开,需要使用多份程序,**不要把`configs`文件夹也复制过去** -2. 客户端托盘无法多开,所以需要客户端多开时,**需要你手动安装服务**,不能使用托盘安装服务 -3. 客户端会监听`1804` 管理接口,所以,在初始化时,你需要各个客户端**使用不同的端口** - -#### 在初始化时,`接口端口`,和`网页端口`,需要各个客户端设置为不一样的端口 -![](./img/client.png) -::: \ No newline at end of file diff --git a/src/linker.doc.web/docs/2、安装运行/2.7、初始化配置2(服务端).md b/src/linker.doc.web/docs/2、安装运行/2.7、初始化配置2(服务端).md index 84233fb6..6c0eb1c3 100644 --- a/src/linker.doc.web/docs/2、安装运行/2.7、初始化配置2(服务端).md +++ b/src/linker.doc.web/docs/2、安装运行/2.7、初始化配置2(服务端).md @@ -6,7 +6,7 @@ sidebar_position: 7 ## 1、服务端手动修改配置文件 -这是自建服务器需要配置的,没有服务器则跳过,**`运行起来就可以了,没有配置,只有一个server.json,只需要把对应的密钥填到客户端即可`** +这是自建服务器需要配置的,没有服务器则跳过 :::tip[服务端运行流程] 1. 运行程序,在configs目录下会生成 common.json server.json @@ -18,47 +18,57 @@ sidebar_position: 7 server.json ``` { - //中继 - "Relay": { - //中继密钥,客户端密钥不准确时无法使用本中继 - "SecretKey": "", "Cdkey": { //cdkey 加密密钥 "SecretKey": "snltty" }, - }, - //信标服务器端口 - "ServicePort": 1802, - //内网穿透配置 - "SForward": { - //内网穿透密钥 - "SecretKey": "", - "BufferSize": 3, - //web端口,用于按域名穿透 - "WebPort": 0, - //隧道端口范围,用于按端口穿透 - "TunnelPortRange": [ - 10000, - 60000 - ] - }, - //登入信标密钥,默认为空,即为所有客户端均可登入本信标服务器 - "SignIn": { - "SecretKey": "", - "CleanDays": 7 //当一组内的所有设备都超过7天未上线则清理 - }, - //更新密钥,客户端密钥不正确时,只能更新自己本身 - "Updater": { - "SecretKey": "" - } + //中继 + "Relay": { + //中继密钥,客户端密钥不准确时无法使用本中继 + "SecretKey": "", + + }, + //信标服务器端口 + "ServicePort": 1802, + //内网穿透配置 + "SForward": { + //内网穿透密钥 + "SecretKey": "", + "BufferSize": 3, + //web端口,用于按域名穿透 + "WebPort": 0, + //隧道端口范围,用于按端口穿透 + "TunnelPortRange": [ + 10000, + 60000 + ] + }, + //登入信标密钥,默认为空,即为所有客户端均可登入本信标服务器 + "SignIn": { + "SecretKey": "", + "CleanDays": 7 //当一组内的所有设备都超过7天未上线则清理 + }, + //虚拟网卡 + "Tuntap": { + //自动分配IP + "Lease": { + "IPDays": 7, //ip租期 + "NetworkDays": 30 //网络租期 + } + }, + + //更新密钥,客户端密钥不正确时,只能更新自己本身 + "Updater": { + "SecretKey": "" + } } ``` action.json,这个可以不管,等用得上自定义验证的时候就知道了 ``` { - "SignInActionUrl": "", //登入信标的验证接口 - "RelayActionUrl": "", //中继验证接口 - "SForwardActionUrl": ""//服务器穿透的验证接口 + "SignInActionUrl": "", //登入信标的验证接口 + "RelayActionUrl": "", //中继验证接口 + "SForwardActionUrl": ""//服务器穿透的验证接口 } ``` ::: diff --git a/src/linker.doc.web/docs/2、安装运行/2.8、初始化配置3(客户端).md b/src/linker.doc.web/docs/2、安装运行/2.8、初始化配置3(客户端).md index 4f891ae7..3cd538e0 100644 --- a/src/linker.doc.web/docs/2、安装运行/2.8、初始化配置3(客户端).md +++ b/src/linker.doc.web/docs/2、安装运行/2.8、初始化配置3(客户端).md @@ -8,23 +8,34 @@ sidebar_position: 8 ## 1、客户端使用web初始化 :::tip[说明] -1. 运行程序后,浏览器打开http://127.0.0.1:1804 -2. 如果你自己部署了服务端,你可以勾选**我有服务器**,填写你部署的服务端的各种信息 +1. 运行程序后,浏览器打开http://127.0.0.1:1804填写信息进行初始化 +2. 只勾选客户端 +3. 你可以勾选**我有服务器**,填写你部署的服务端的各种信息,默认使用公共服务器`linker.snltty.com:1802` +4. 有一点很重要,当多个客户端的`分组名、分组密码`均一致时,相互可见,同一服务器可以任意多分组,不同分组之间互不干扰 -![](./img/mode.png) -![](./img/client.png) -![](./img/save.png) +![](./img/client1.jpg) +![](./img/client2.jpg) +![](./img/client3.jpg) 对应配置文件 client.json ``` { "Name": "A", //客户端名 - "AccessBits": '11111111111', //按下标,1有权限,0无权限,可以看`src/linker.messenger.api/Config.cs`里的`AccessValue`枚举 + //顶级满权限 + "FullAccess": true, + //按下标,1有权限,0无权限,可以看`src/linker.messenger.api/Config.cs`里的`AccessValue`枚举 + "AccessBits": "1111111111111111111111111111111111111111111111111111111111111111", + //管理接口 "CApi": { "ApiPassword": "snltty", //api密码 "WebPort": 1804, //web端口 "WebRoot": "./web/" //web根目录 }, + //cdkey + "Cdkey": { + "SecretKey": "snltty" + }, + //服务器 "Servers": [ { "Name": "Linker", //信标服务器名称 @@ -33,6 +44,7 @@ sidebar_position: 8 "UserId": "8225e9d4-0ac7-4d76-9946-c4fe04ad4696" //用户标识,多个客户端可相同 } ], + //分组 "Groups": [ { "Name": "snltty", //分组名 @@ -40,6 +52,7 @@ sidebar_position: 8 "Password": "snltty" //分组密码 } ], + //中继 "Relay": { "Servers": [ { @@ -49,12 +62,15 @@ sidebar_position: 8 } ] }, + //内网穿透 "SForward": { "SecretKey": "snltty" //服务器穿透密钥 }, + //更新 "Updater": { "SecretKey": "snltty" //更新密钥 }, + //自定义验证 "Action": { "Args": {} //自定义验证的参数 } diff --git a/src/linker.doc.web/docs/2、安装运行/2.11、特别说明(ikuai).md b/src/linker.doc.web/docs/2、安装运行/2.99、特别说明(ikuai).md similarity index 93% rename from src/linker.doc.web/docs/2、安装运行/2.11、特别说明(ikuai).md rename to src/linker.doc.web/docs/2、安装运行/2.99、特别说明(ikuai).md index fc1668f4..1cf279e1 100644 --- a/src/linker.doc.web/docs/2、安装运行/2.11、特别说明(ikuai).md +++ b/src/linker.doc.web/docs/2、安装运行/2.99、特别说明(ikuai).md @@ -1,8 +1,8 @@ --- -sidebar_position: 11 +sidebar_position: 99 --- -# 2.11、特别说明(ikuai) +# 2.99、特别说明(ikuai) :::tip[ikuai特别说明] diff --git a/src/linker.doc.web/docs/2、安装运行/img/client.png b/src/linker.doc.web/docs/2、安装运行/img/client.png deleted file mode 100644 index 19795cf4..00000000 Binary files a/src/linker.doc.web/docs/2、安装运行/img/client.png and /dev/null differ diff --git a/src/linker.doc.web/docs/2、安装运行/img/client1.jpg b/src/linker.doc.web/docs/2、安装运行/img/client1.jpg new file mode 100644 index 00000000..69cf5ff9 Binary files /dev/null and b/src/linker.doc.web/docs/2、安装运行/img/client1.jpg differ diff --git a/src/linker.doc.web/docs/2、安装运行/img/client2.jpg b/src/linker.doc.web/docs/2、安装运行/img/client2.jpg new file mode 100644 index 00000000..cd4b196a Binary files /dev/null and b/src/linker.doc.web/docs/2、安装运行/img/client2.jpg differ diff --git a/src/linker.doc.web/docs/2、安装运行/img/client3.jpg b/src/linker.doc.web/docs/2、安装运行/img/client3.jpg new file mode 100644 index 00000000..6cda758e Binary files /dev/null and b/src/linker.doc.web/docs/2、安装运行/img/client3.jpg differ diff --git a/src/linker.doc.web/docs/2、安装运行/img/export.jpg b/src/linker.doc.web/docs/2、安装运行/img/export.jpg new file mode 100644 index 00000000..74c68b42 Binary files /dev/null and b/src/linker.doc.web/docs/2、安装运行/img/export.jpg differ diff --git a/src/linker.doc.web/docs/2、安装运行/img/mode.png b/src/linker.doc.web/docs/2、安装运行/img/mode.png deleted file mode 100644 index a2bbf78f..00000000 Binary files a/src/linker.doc.web/docs/2、安装运行/img/mode.png and /dev/null differ diff --git a/src/linker.doc.web/docs/2、安装运行/img/save.png b/src/linker.doc.web/docs/2、安装运行/img/save.png deleted file mode 100644 index 1fab5c6d..00000000 Binary files a/src/linker.doc.web/docs/2、安装运行/img/save.png and /dev/null differ diff --git a/src/linker.doc.web/docs/2、安装运行/img/signin.png b/src/linker.doc.web/docs/2、安装运行/img/signin.png deleted file mode 100644 index 21e6511e..00000000 Binary files a/src/linker.doc.web/docs/2、安装运行/img/signin.png and /dev/null differ diff --git a/src/linker.doc.web/docs/3、打洞和中继/3.1、打洞.md b/src/linker.doc.web/docs/3、打洞和中继/3.1、打洞.md index c53aa83f..4bcb7f4b 100644 --- a/src/linker.doc.web/docs/3、打洞和中继/3.1、打洞.md +++ b/src/linker.doc.web/docs/3、打洞和中继/3.1、打洞.md @@ -19,23 +19,8 @@ sidebar_position: 1 :::tip[说明] 1. 按顺序打洞,你可以调整顺序,优先使用哪些打洞协议 -2. 能使用路由器端口映射时,优先`TcpPortMap`,`UdpPortMap` -3. 能使用TCP打洞时,优先`TcpP2PNAT`,`TcpNutssb` -4. 没有QOS限速时,优先`udp`,端口转发不支持`udp` -5. `msquic`永远作为最后的备选,网卡不支持`msquic` - -![Docusaurus Plushie](./img/transport.png) -::: - - -## 3、调整网关层级 - -:::danger[说明] - -1. TCP打洞,UDP打洞大都依赖于网关层级,默认网关层级是自动计算的,你也可以手动指定网关层级,这很有可能有助于打洞 -2. 如果你看到 `网关 : 1 + 0`,层级只有`1`,那大概率是你连接的服务器走了什么奇怪的线路,这会打洞失败 - -![Docusaurus Plushie](./img/tunnel.png) -::: - +2. 如果你不想打洞,可以禁用所有打洞协议 +3. `按喜好调整好即可,往后的所有通信都是自动的,无需其它操作` +![Docusaurus Plushie](./img/p2p.jpg) +::: \ No newline at end of file diff --git a/src/linker.doc.web/docs/3、打洞和中继/3.2、中继.md b/src/linker.doc.web/docs/3、打洞和中继/3.2、中继.md index ace79387..cec90a27 100644 --- a/src/linker.doc.web/docs/3、打洞和中继/3.2、中继.md +++ b/src/linker.doc.web/docs/3、打洞和中继/3.2、中继.md @@ -4,15 +4,15 @@ sidebar_position: 2 # 3.2、中继 -前提是你自建信标服务器,如果使用`linker.snltty.com:1802`服务器,这不需要这些操作,此服务器提供一些公开的中继服务 - ## 1、主服务器中继 :::tip[说明] -在服务端 `configs/server.json` 复制中继密钥(`Relay->SecretKey`),在客户端中填写 +1. 如果你自建信标服务器,在服务端 `configs/server.json` 复制中继密钥(`Relay->SecretKey`),在客户端中填写,如果密钥正确,则可以管理服务器的中继cdkey,发布cdkey给别人使用 +2. 如果你使用别人的服务器,你没有密钥可以不填写,则需要使用别人服务器的公开中继节点,或使用他提供的cdkey +3. `按喜好调整好即可,往后的所有通信都是自动的,无需其它操作` -![Docusaurus Plushie](./img/relay.png) +![Docusaurus Plushie](./img/relay.jpg) ::: diff --git a/src/linker.doc.web/docs/3、打洞和中继/3.3、端口映射.md b/src/linker.doc.web/docs/3、打洞和中继/3.3、端口映射.md deleted file mode 100644 index 7e4f3e01..00000000 --- a/src/linker.doc.web/docs/3、打洞和中继/3.3、端口映射.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -sidebar_position: 3 ---- - -# 3.3、端口映射 - -:::tip[说明] - -1. 当拥有外网IP时可使用`UPNP`、`NAT-PMP`进行P2P连接,`PCP`暂未支持 -2. 这与打洞效果是一致的,同样是P2P连接,唯一不同的是,打洞是随机端口,端口映射是固定端口 - -::: - -## 1、自动映射 -:::tip[说明] - -1. 默认情况下,linker会使用`18180`端口自动映射,这适用于家庭网络 -2. 当然也有可能映射失败,这时你可以手动配置,手动配置优先级高于自动映射 - -::: - - -## 2、手动配置 -:::tip[说明] -1. 在光猫或者路由器添加端口映射 -2. 在linker对应客户端上填写相应的内网端口和外网端口 -3. 打洞协议 `TcpPortMap`、`UdpPortMap` 用于端口映射连接,调整顺序可以让其优先使用端口映射连接 - -![Docusaurus Plushie](./img/portmap.png) -![Docusaurus Plushie](./img/portmap1.png) -::: \ No newline at end of file diff --git a/src/linker.doc.web/docs/3、打洞和中继/img/p2p.jpg b/src/linker.doc.web/docs/3、打洞和中继/img/p2p.jpg new file mode 100644 index 00000000..3e711364 Binary files /dev/null and b/src/linker.doc.web/docs/3、打洞和中继/img/p2p.jpg differ diff --git a/src/linker.doc.web/docs/3、打洞和中继/img/p2p.png b/src/linker.doc.web/docs/3、打洞和中继/img/p2p.png deleted file mode 100644 index aea5b2a4..00000000 Binary files a/src/linker.doc.web/docs/3、打洞和中继/img/p2p.png and /dev/null differ diff --git a/src/linker.doc.web/docs/3、打洞和中继/img/portmap.png b/src/linker.doc.web/docs/3、打洞和中继/img/portmap.png deleted file mode 100644 index 8a4d8e5c..00000000 Binary files a/src/linker.doc.web/docs/3、打洞和中继/img/portmap.png and /dev/null differ diff --git a/src/linker.doc.web/docs/3、打洞和中继/img/portmap1.png b/src/linker.doc.web/docs/3、打洞和中继/img/portmap1.png deleted file mode 100644 index 33bdcaf3..00000000 Binary files a/src/linker.doc.web/docs/3、打洞和中继/img/portmap1.png and /dev/null differ diff --git a/src/linker.doc.web/docs/3、打洞和中继/img/relay.jpg b/src/linker.doc.web/docs/3、打洞和中继/img/relay.jpg new file mode 100644 index 00000000..401eee3b Binary files /dev/null and b/src/linker.doc.web/docs/3、打洞和中继/img/relay.jpg differ diff --git a/src/linker.doc.web/docs/3、打洞和中继/img/relay.png b/src/linker.doc.web/docs/3、打洞和中继/img/relay.png deleted file mode 100644 index 82e7ae41..00000000 Binary files a/src/linker.doc.web/docs/3、打洞和中继/img/relay.png and /dev/null differ diff --git a/src/linker.doc.web/docs/3、打洞和中继/img/transport.png b/src/linker.doc.web/docs/3、打洞和中继/img/transport.png deleted file mode 100644 index 6c43bc2a..00000000 Binary files a/src/linker.doc.web/docs/3、打洞和中继/img/transport.png and /dev/null differ diff --git a/src/linker.doc.web/docs/3、打洞和中继/img/tunnel.png b/src/linker.doc.web/docs/3、打洞和中继/img/tunnel.png deleted file mode 100644 index 9472b196..00000000 Binary files a/src/linker.doc.web/docs/3、打洞和中继/img/tunnel.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/1.1、点对网.md b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/1.1、点对网.md index dedfa3a4..33963080 100644 --- a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/1.1、点对网.md +++ b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/1.1、点对网.md @@ -5,10 +5,8 @@ sidebar_position: 2 # 1.1、点对网 :::danger[重要] -1. 你要确定你知道你在搞什么,如果只是简单的P2P通信,上面的内容已经够了,以下的东西不要看,不要看,不要看 -2. 确定要搞,那么请看示意图(仅示例,以下绿色内容与此图无关) -![Docusaurus Plushie](./img/tuntap12n.jpg) +你要确定你知道你在搞什么,如果只是简单的P2P通信,上面的内容已经够了,以下的东西不要看,不要看,不要看 ::: @@ -23,27 +21,12 @@ sidebar_position: 2 BCDEDIT -SET TESTSIGNING ON ``` 3. 或者安装一个KB3033929补丁,然后重启系统 -3. macos,需要你自己在**被访问端**添加NAT转发 -``` -# 开启ip转发 -sudo sysctl -w net.ipv4.ip_forward=1 -# 配置NAT转发规则 -# 在/etc/pf.conf文件中添加以下规则,10.18.18.0/24是来源网段 -nat on en0 from 10.18.18.0/24 to any -> (en0) -# 加载规则 -sudo pfctl -f /etc/pf.conf -e -``` :::danger[重点] -1. 如图配置第一条配置,`目标IP`填写`0.0.0.0`,则`路由IP`就是真实内网网段,其它客户端可以通过`192.168.1.0/24`网段访问到`公司城中-linux`的`192.168.1.0/24`网段 -2. 如图配置第二条配置,`目标IP`填写`192.168.1.0/24`,则`路由IP`伪虚假网段,`目标IP`为真实内网网段,其它客户端可以通过一个`假的` `192.168.18.0/24`网段访问到`公司城中-linux`的`192.168.1.0/24`网段 -3. 注意,两条配置不能同时使用 -4. 网段映射其实就是 按`目标IP`,`目标掩码`计算出网络号,将网络号覆盖`路由IP`得到最终的访问IP -5. 当前网段映射仅支持,IPV4`ICMP`、`TCP`、`UDP`、如需更多协议,请联系作者添加 +1. 仅配置路由ip时,可以通过192.168.0.x访问对方的192.168.0.x +2. 如果你多个客户端之间的ip存在冲突,则路由ip可以配置一个虚假网段,然后目标IP填写真实网段,连接192.168.185.x时会被替换为 192.168.0.x,实际访问到192.168.0.x -![Docusaurus Plushie](./img/tuntap12n-1.jpg) -![Docusaurus Plushie](./img/tuntap12n-2.jpg) -![Docusaurus Plushie](./img/tuntap12n-3.jpg) +![Docusaurus Plushie](./img/tuntap3.jpg) ::: @@ -52,22 +35,8 @@ sudo pfctl -f /etc/pf.conf -e :::tip[2、情况2,你的设备无法使用NAT转发时] 1. 你的设备无法使用NAT转发(一般出现在低版本windows下,win10以下),那你只能使用端口转发功能来访问你当前设备局域网下的其它设备 -2. 按如下配置。当其它设备通过`10.18.18.18:33890` 访问`公司-linux`时,将访问到`公司-linux`局域网的`192.168.1.35:3389` -3. macos下需要你自己在**被访问端**添加端口转发 -``` -//编辑 pf 配置文件 -sudo nano /etc/pf.conf - -//添加转发规则 -rdr pass on en0 inet proto tcp from any to any port 33890 -> 192.168.1.35 port 3389 -rdr pass on en0 inet proto udp from any to any port 33890 -> 192.168.1.35 port 3389 - -//启用并重新加载 pf -sudo pfctl -f /etc/pf.conf -sudo pfctl -e -``` - -![Docusaurus Plushie](./img/tuntap-forward.jpg) +2. 按如下配置。当其它设备通过`10.18.18.18:33890` 访问`公司城中-debian`时,将访问到`公司城中-debianx`局域网的`192.168.1.35:3389` +![Docusaurus Plushie](./img/tuntap4.jpg) ::: diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/1、虚拟IP.md b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/1、虚拟IP.md index a9b14b6b..61c04280 100644 --- a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/1、虚拟IP.md +++ b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/1、虚拟IP.md @@ -21,7 +21,6 @@ sidebar_position: 1 3. 开启网卡成功后,使用对方ip 即可访问目标设备,首次访问时需要打洞或者中继操作,时间可能会比较久,耐心等待 4. 可以勾选`显示延迟`,`自动连接`(勾选此两项,网卡启动成功后将会自动连接各个客户端) -![Docusaurus Plushie](./img/tuntap1.png) -![Docusaurus Plushie](./img/tuntap2.png) -![Docusaurus Plushie](./img/tuntap3.png) +![Docusaurus Plushie](./img/tuntap1.jpg) +![Docusaurus Plushie](./img/tuntap2.jpg) ::: diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/ics1.png b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/ics1.png deleted file mode 100644 index fe684f21..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/ics1.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tun-gateway.png b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tun-gateway.png deleted file mode 100644 index d20a6830..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tun-gateway.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap-forward.jpg b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap-forward.jpg deleted file mode 100644 index b457b91c..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap-forward.jpg and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap1.jpg b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap1.jpg new file mode 100644 index 00000000..23aeb257 Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap1.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap1.png b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap1.png deleted file mode 100644 index 6ab22304..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap1.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap12n-1.jpg b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap12n-1.jpg deleted file mode 100644 index 67139950..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap12n-1.jpg and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap12n-2.jpg b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap12n-2.jpg deleted file mode 100644 index 6f2f1072..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap12n-2.jpg and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap12n-3.jpg b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap12n-3.jpg deleted file mode 100644 index 79f20a20..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap12n-3.jpg and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap12n.jpg b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap12n.jpg deleted file mode 100644 index 2abf2821..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap12n.jpg and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap2.jpg b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap2.jpg new file mode 100644 index 00000000..1de158c5 Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap2.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap2.png b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap2.png deleted file mode 100644 index 37eeefd0..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap2.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap3.jpg b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap3.jpg new file mode 100644 index 00000000..d3df3ae2 Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap3.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap3.png b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap3.png deleted file mode 100644 index d1d50848..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap3.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap4.jpg b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap4.jpg new file mode 100644 index 00000000..72b0df9b Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/4.1、虚拟网卡/img/tuntap4.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/4.2、端口转发.md b/src/linker.doc.web/docs/4、通信功能/4.2、端口转发.md index c3e4a2db..0f507684 100644 --- a/src/linker.doc.web/docs/4、通信功能/4.2、端口转发.md +++ b/src/linker.doc.web/docs/4、通信功能/4.2、端口转发.md @@ -14,14 +14,12 @@ sidebar_position: 2 :::tip[说明] 1. 当你拥有配置权限时,你可以配置任意一台设备的端口转发 -2. 关闭状态时,可双击栏目修改 +2. 关闭状态时,可修改配置 3. 当 **监听端口** 为 **0** 时,启动,会随机本地端口 3. **目标服务**为目标设备上的服务,可以是目标设备本机的服务,也可以是目标设备局域网内的服务 +4. 启动后,可以通过访问段的监听端口访问到目标设备的目标服务,本示例中,可以在`家中-win11`上访问`127.0.0.1:64787`最终访问到`家中-debian`的`127.0.0.1:80` -![Docusaurus Plushie](./img/forward1.png) -![Docusaurus Plushie](./img/forward2.png) -![Docusaurus Plushie](./img/forward3.png) - -通过本机的**55950**端口,访问到了对方的**80**端口,第一次访问时,会去打洞或者中继,请耐心等待 -![Docusaurus Plushie](./img/forward4.png) +![Docusaurus Plushie](./img/forward1.jpg) +![Docusaurus Plushie](./img/forward2.jpg) +![Docusaurus Plushie](./img/forward3.jpg) ::: diff --git a/src/linker.doc.web/docs/4、通信功能/4.3、socks5代理.md b/src/linker.doc.web/docs/4、通信功能/4.3、socks5代理.md index fa03953a..5baa7f6b 100644 --- a/src/linker.doc.web/docs/4、通信功能/4.3、socks5代理.md +++ b/src/linker.doc.web/docs/4、通信功能/4.3、socks5代理.md @@ -13,10 +13,19 @@ sidebar_position: 3 ## 1、配置IP :::tip[说明] -1. 访问端启动socks5,被访问端配置IP(被访问端可以不启动socks5) -2. 配置IP与虚拟网卡相似,目标端配置被访问的IP,让linker知道,当从socks5访问某个IP时,应该通过隧道转发到那个客户端 -3. 配置好后,你可以使用编程的方式通过socks5 去连接对端的`192.168.1.35/24`设备,或者配置系统代理 -![Docusaurus Plushie](./img/socks51.png) -![Docusaurus Plushie](./img/socks52.png) +访问端启动socks5 + +![Docusaurus Plushie](./img/socks51.jpg) + +被访问端端配置IP + +![Docusaurus Plushie](./img/socks52.jpg) + +有两种办法 +1. 仅配置路由ip,可以直接连接192.168.1.x +2. 如果你多个客户端之间的ip存在冲突,则路由ip可以配置一个虚假网段,然后目标IP填写真实网段,然后连接192.168.18.x,最后会被替换为 192.168.1.x,实际访问到192.168.1.x + +![Docusaurus Plushie](./img/socks53.jpg) +![Docusaurus Plushie](./img/socks54.jpg) ::: diff --git a/src/linker.doc.web/docs/4、通信功能/4.4、服务器穿透.md b/src/linker.doc.web/docs/4、通信功能/4.4、服务器穿透.md index 78634209..6ced00d4 100644 --- a/src/linker.doc.web/docs/4、通信功能/4.4、服务器穿透.md +++ b/src/linker.doc.web/docs/4、通信功能/4.4、服务器穿透.md @@ -18,15 +18,15 @@ sidebar_position: 4 3. `TunnelPortRange` 用于开放一个端口范围,提供给客户端动态添加端口监听,每个端口对应不同的TCP+UDP服务 4. `SecretKey` 为密钥,客户端填写此密钥,才能使用穿透 -![Docusaurus Plushie](./img/sforward2.png) +![Docusaurus Plushie](./img/sforward1.jpg) ::: ## 2、配置端口转发 :::tip[说明] 1. 当你拥有管理权限时,你可以管理任意一台设备的内网穿透映射 -2. 使用`WebPort`时,需要使用域名,比如我使用了`aaa.linker.snltty.com`,我已经将`*.linker.snltty.com`泛解析到我的服务器,那么通过`aaa.linker.snltty.com:8080`即可访问到我本机的`127.0.0.1:80` +2. 使用`WebPort`时,需要使用域名,比如我使用了`a.linker.snltty.com`,我已经将`*.linker.snltty.com`泛解析到我的服务器,那么通过`a.linker.snltty.com:8080`即可访问到我本机的`127.0.0.1:80` 3. 使用`TunnelPortRange`时,需要使用端口,比如我使用了`12345`,那么通过`服务器域名:12345`或者`服务器IP:12345`都可以访问到我本机的`127.0.0.1:80` -![Docusaurus Plushie](./img/sforward3.png) -![Docusaurus Plushie](./img/sforward4.png) +![Docusaurus Plushie](./img/sforward2.jpg) +![Docusaurus Plushie](./img/sforward3.jpg) ::: \ No newline at end of file diff --git a/src/linker.doc.web/docs/4、通信功能/img/forward1.jpg b/src/linker.doc.web/docs/4、通信功能/img/forward1.jpg new file mode 100644 index 00000000..9d5b0214 Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/img/forward1.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/forward1.png b/src/linker.doc.web/docs/4、通信功能/img/forward1.png deleted file mode 100644 index 032522a8..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/img/forward1.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/forward2.jpg b/src/linker.doc.web/docs/4、通信功能/img/forward2.jpg new file mode 100644 index 00000000..12d970e8 Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/img/forward2.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/forward2.png b/src/linker.doc.web/docs/4、通信功能/img/forward2.png deleted file mode 100644 index 1df69e0e..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/img/forward2.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/forward3.jpg b/src/linker.doc.web/docs/4、通信功能/img/forward3.jpg new file mode 100644 index 00000000..96d001cd Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/img/forward3.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/forward3.png b/src/linker.doc.web/docs/4、通信功能/img/forward3.png deleted file mode 100644 index d058f72c..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/img/forward3.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/forward4.png b/src/linker.doc.web/docs/4、通信功能/img/forward4.png deleted file mode 100644 index 83a13206..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/img/forward4.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/sforward1.jpg b/src/linker.doc.web/docs/4、通信功能/img/sforward1.jpg new file mode 100644 index 00000000..66a5be9f Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/img/sforward1.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/sforward2.jpg b/src/linker.doc.web/docs/4、通信功能/img/sforward2.jpg new file mode 100644 index 00000000..bb597b03 Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/img/sforward2.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/sforward2.png b/src/linker.doc.web/docs/4、通信功能/img/sforward2.png deleted file mode 100644 index 44482e42..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/img/sforward2.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/sforward3.jpg b/src/linker.doc.web/docs/4、通信功能/img/sforward3.jpg new file mode 100644 index 00000000..f0950c61 Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/img/sforward3.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/sforward3.png b/src/linker.doc.web/docs/4、通信功能/img/sforward3.png deleted file mode 100644 index 3629af37..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/img/sforward3.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/sforward4.png b/src/linker.doc.web/docs/4、通信功能/img/sforward4.png deleted file mode 100644 index a6832552..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/img/sforward4.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/socks51.jpg b/src/linker.doc.web/docs/4、通信功能/img/socks51.jpg new file mode 100644 index 00000000..25b59804 Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/img/socks51.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/socks51.png b/src/linker.doc.web/docs/4、通信功能/img/socks51.png deleted file mode 100644 index c9bfed56..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/img/socks51.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/socks52.jpg b/src/linker.doc.web/docs/4、通信功能/img/socks52.jpg new file mode 100644 index 00000000..e4df222b Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/img/socks52.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/socks52.png b/src/linker.doc.web/docs/4、通信功能/img/socks52.png deleted file mode 100644 index ed0e2bbd..00000000 Binary files a/src/linker.doc.web/docs/4、通信功能/img/socks52.png and /dev/null differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/socks53.jpg b/src/linker.doc.web/docs/4、通信功能/img/socks53.jpg new file mode 100644 index 00000000..b659e3e7 Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/img/socks53.jpg differ diff --git a/src/linker.doc.web/docs/4、通信功能/img/socks54.jpg b/src/linker.doc.web/docs/4、通信功能/img/socks54.jpg new file mode 100644 index 00000000..1aa7122a Binary files /dev/null and b/src/linker.doc.web/docs/4、通信功能/img/socks54.jpg differ diff --git a/src/linker.doc.web/docs/5、导出配置和管理权限.md b/src/linker.doc.web/docs/5、导出配置和管理权限.md deleted file mode 100644 index 4c67ecb2..00000000 --- a/src/linker.doc.web/docs/5、导出配置和管理权限.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -sidebar_position: 5 ---- - -# 5、导出配置和管理权限 - -:::tip[说明] -1. 按 首次运行,安装,此设备拥有完全管理权限,可导出配置,用以作为组网子设备运行 -2. 导出配置可指定设备名,以及其管理密码,建议使用与管理设备不同的管理密码,如果指定为`单设备`,则此配置仅可同时运行于一台设备,无法重复连接服务端(当相同配置的设备离线后,另外的设备可以连接) -3. 在运行中,拥有`配置权限`的设备,仍然可以实时修改其它设备的权限,但是有一个限制,仅当B是A的子集时,A可管理B的权限,表现为 `~A & B == 0` 时 -4. 对于拥有`导出配置`权限的子设备,可再次导出配置,但,不超过自身权限,无法指定管理密码,必须为单设备 -5. 导出配置得到一个`.zip`压缩包,可以直接解压运行,或者将`configs`复制到新下载程序的文件夹,然后运行程序 - -![Docusaurus Plushie](./img/access.png) -::: \ No newline at end of file diff --git a/src/linker.doc.web/docs/6、自定义验证.md b/src/linker.doc.web/docs/6、自定义验证.md index 0003fb1e..cd292082 100644 --- a/src/linker.doc.web/docs/6、自定义验证.md +++ b/src/linker.doc.web/docs/6、自定义验证.md @@ -12,7 +12,7 @@ sidebar_position: 6 ### 1.1、静态配置 -![Docusaurus Plushie](./img/action1.png) +![Docusaurus Plushie](./img/action1.jpg) ### 1.2、动态配置示例 以javascript 为例,设置参数方法: @@ -28,7 +28,7 @@ ws.onopen = () => { } ``` ### 1.3、结果示例 -![Docusaurus Plushie](./img/action.png) +![Docusaurus Plushie](./img/action2.jpg) ### 1.4、额外数据 diff --git a/src/linker.doc.web/docs/img/access.png b/src/linker.doc.web/docs/img/access.png deleted file mode 100644 index 1ddf7625..00000000 Binary files a/src/linker.doc.web/docs/img/access.png and /dev/null differ diff --git a/src/linker.doc.web/docs/img/action.png b/src/linker.doc.web/docs/img/action.png deleted file mode 100644 index be9e92bd..00000000 Binary files a/src/linker.doc.web/docs/img/action.png and /dev/null differ diff --git a/src/linker.doc.web/docs/img/action1.jpg b/src/linker.doc.web/docs/img/action1.jpg new file mode 100644 index 00000000..74e61ca4 Binary files /dev/null and b/src/linker.doc.web/docs/img/action1.jpg differ diff --git a/src/linker.doc.web/docs/img/action1.png b/src/linker.doc.web/docs/img/action1.png deleted file mode 100644 index 2a87866a..00000000 Binary files a/src/linker.doc.web/docs/img/action1.png and /dev/null differ diff --git a/src/linker.doc.web/docs/img/action2.jpg b/src/linker.doc.web/docs/img/action2.jpg new file mode 100644 index 00000000..5b7642b6 Binary files /dev/null and b/src/linker.doc.web/docs/img/action2.jpg differ diff --git a/src/linker.doc.web/docs/img/qr.jpg b/src/linker.doc.web/docs/img/qr.jpg deleted file mode 100644 index 3ab41219..00000000 Binary files a/src/linker.doc.web/docs/img/qr.jpg and /dev/null differ diff --git a/src/linker.tunnel/connection/TunnelConnectionUdp.cs b/src/linker.tunnel/connection/TunnelConnectionUdp.cs index 3d0b2c01..c455c42c 100644 --- a/src/linker.tunnel/connection/TunnelConnectionUdp.cs +++ b/src/linker.tunnel/connection/TunnelConnectionUdp.cs @@ -101,6 +101,8 @@ namespace linker.tunnel.connection SocketReceiveFromResult result = await UdpClient.ReceiveFromAsync(buffer.AsMemory(), ep, cancellationTokenSource.Token).ConfigureAwait(false); if (result.ReceivedBytes == 0) { + if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) + LoggerHelper.Instance.Error($"tunnel connection writer offline 0"); break; } await CallbackPacket(buffer, 0, result.ReceivedBytes).ConfigureAwait(false); @@ -115,6 +117,8 @@ namespace linker.tunnel.connection } finally { + if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) + LoggerHelper.Instance.Error($"tunnel connection writer offline {cancellationTokenSource.IsCancellationRequested}"); Dispose(); if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) LoggerHelper.Instance.Error($"tunnel connection writer offline {ToString()}"); @@ -301,8 +305,6 @@ namespace linker.tunnel.connection return false; } - - public void Dispose() { if (uUdpClient == null) return; diff --git a/src/linker.tunnel/transport/TransportMsQuic.cs b/src/linker.tunnel/transport/TransportMsQuic.cs index 8f81fab0..d3baba60 100644 --- a/src/linker.tunnel/transport/TransportMsQuic.cs +++ b/src/linker.tunnel/transport/TransportMsQuic.cs @@ -12,6 +12,7 @@ using System.Text; using linker.tunnel.wanport; using System.Security.Cryptography.X509Certificates; using linker.libs.timer; +using System; namespace linker.tunnel.transport { @@ -294,7 +295,7 @@ namespace linker.tunnel.transport socket.WindowsUdpBug(); socket.ReuseBind(new IPEndPoint(IPAddress.IPv6Any, local.Port)); socket.Ttl = 2; - _ = socket.SendToAsync(new byte[0], SocketFlags.None, ip); + _ = socket.SendToAsync(endBytes, SocketFlags.None, ip); socket.SafeClose(); } } @@ -488,9 +489,13 @@ namespace linker.tunnel.transport //是认证结束的消息,表示双方能通信了,接下来直接跟QUIC交换数据就可以了 if (memory.Length == endBytes.Length && memory.Span.SequenceEqual(endBytes)) { - token.RemoteEP = result.RemoteEndPoint as IPEndPoint; - tcs.TrySetResult(result.RemoteEndPoint.AddressFamily); - _ = Connect2Quic(bufferSize, token); + if (tcs != null && tcs.Task.IsCompleted == false) + { + token.RemoteEP = result.RemoteEndPoint as IPEndPoint; + tcs.TrySetResult(result.RemoteEndPoint.AddressFamily); + _ = Connect2Quic(bufferSize, token); + } + break; } else @@ -557,7 +562,7 @@ namespace linker.tunnel.transport /// /// /// - private static async Task CopyToAsync(byte bufferSize, Socket local, Socket remote, IPEndPoint remoteEp) + private async Task CopyToAsync(byte bufferSize, Socket local, Socket remote, IPEndPoint remoteEp) { byte[] buffer = new byte[(1 << bufferSize) * 1024]; IPEndPoint tempEp = new IPEndPoint(IPAddress.Any, IPEndPoint.MinPort); @@ -567,7 +572,14 @@ namespace linker.tunnel.transport { SocketReceiveFromResult result = await local.ReceiveFromAsync(buffer, tempEp).ConfigureAwait(false); if (result.ReceivedBytes == 0) break; - await remote.SendToAsync(buffer.AsMemory(0, result.ReceivedBytes), remoteEp).ConfigureAwait(false); + if (result.ReceivedBytes == endBytes.Length && buffer.AsMemory(0, result.ReceivedBytes).Span.SequenceEqual(endBytes)) + { + + } + else + { + await remote.SendToAsync(buffer.AsMemory(0, result.ReceivedBytes), remoteEp).ConfigureAwait(false); + } } } catch (Exception ex) diff --git a/src/linker.tunnel/transport/TransportUdp.cs b/src/linker.tunnel/transport/TransportUdp.cs index cebd5cdc..b375f3f8 100644 --- a/src/linker.tunnel/transport/TransportUdp.cs +++ b/src/linker.tunnel/transport/TransportUdp.cs @@ -337,7 +337,7 @@ namespace linker.tunnel.transport socket.WindowsUdpBug(); socket.ReuseBind(local); socket.Ttl = (short)(tunnelTransportInfo.Local.RouteLevel); - _ = socket.SendToAsync(Array.Empty(), SocketFlags.None, ip); + _ = socket.SendToAsync(endBytes, SocketFlags.None, ip); socket.SafeClose(); } catch (Exception ex) diff --git a/src/linker.web/src/views/full/install/Client.vue b/src/linker.web/src/views/full/install/Client.vue index 62e3e7a2..6d9cc309 100644 --- a/src/linker.web/src/views/full/install/Client.vue +++ b/src/linker.web/src/views/full/install/Client.vue @@ -1,11 +1,6 @@