From e809be2f1a47b3ccea3aaefe22bf6bfca30c99dc Mon Sep 17 00:00:00 2001 From: snltty <1069410172@qq.com> Date: Thu, 5 Jun 2025 17:13:06 +0800 Subject: [PATCH] 182 --- .github/workflows/dotnet.yml | 2 +- src/linker.app/MainPage.xaml.cs | 2 +- .../docs/2、安装运行/2.0、重要说明(必看).md | 2 +- .../docs/2、安装运行/2.1、安装方法(win).md | 2 +- .../2、安装运行/2.3、安装方法(docker).md | 76 ++++++- .../2、安装运行/2.8、初始化配置3(客户端).md | 3 +- src/linker.doc.web/docs/6、自定义验证.md | 2 +- src/linker.libs/api/ApiServer.cs | 202 ------------------ src/linker.libs/api/IApiServer.cs | 15 -- .../{api => web}/IApiController.cs | 7 +- src/linker.libs/web/IWebServer.cs | 7 +- src/linker.libs/web/WebServer.cs | 198 +++++++++++++++-- .../AccessApiController.cs | 10 +- .../AccessMessenger.cs | 6 +- src/linker.messenger.access/Entry.cs | 7 +- .../ActionApiController.cs | 4 +- src/linker.messenger.action/Entry.cs | 7 +- src/linker.messenger.api/ApiServer.cs | 62 ------ src/linker.messenger.api/Entry.cs | 12 +- src/linker.messenger.api/IApiController.cs | 10 - src/linker.messenger.api/IApiStore.cs | 11 - src/linker.messenger.api/WebServer.cs | 58 ++++- src/linker.messenger.firewall/Entry.cs | 6 +- .../FirewallApiController.cs | 4 +- src/linker.messenger.flow/Entry.cs | 7 +- .../FlowApiController.cs | 2 +- src/linker.messenger.forward/Entry.cs | 7 +- .../ForwardApiController.cs | 4 +- src/linker.messenger.logger/Entry.cs | 5 +- .../LoggerController.cs | 2 +- src/linker.messenger.plan/Entry.cs | 5 +- .../PlanApiController.cs | 2 +- src/linker.messenger.relay/Entry.cs | 6 +- .../client/RelayApiController.cs | 2 +- src/linker.messenger.sforward/Entry.cs | 7 +- .../client/SForwardApiController.cs | 4 +- src/linker.messenger.signin/Entry.cs | 4 +- .../SignInApiController.cs | 2 +- src/linker.messenger.socks5/Entry.cs | 7 +- .../Socks5ApiController.cs | 4 +- .../ConfigApiController.cs | 8 +- src/linker.messenger.store.file/Entry.cs | 5 +- .../api/ApiStore.cs | 6 - src/linker.messenger.sync/Entry.cs | 5 +- .../SyncApiController.cs | 4 +- src/linker.messenger.tunnel/Entry.cs | 5 +- .../TunnelApiController.cs | 2 +- src/linker.messenger.tuntap/Entry.cs | 5 +- .../TuntapApiController.cs | 4 +- src/linker.messenger.updater/Entry.cs | 6 +- .../UpdaterApiController.cs | 4 +- src/linker.messenger.wakeup/Entry.cs | 5 +- .../WakeupApiController.cs | 4 +- src/linker.tray.win/default.aproj | 3 +- src/linker.tray.win/dist/linker.tray.win.exe | Bin 6840320 -> 6839296 bytes src/linker.tray.win/full.aardio | 2 +- src/linker.tray.win/net.aardio | 2 +- .../{106.f841026b.css => 226.638ce524.css} | 2 +- .../{663.6fe624be.css => 519.298416a4.css} | 2 +- .../{app.bb3197c7.css => app.af897554.css} | 2 +- src/linker.tray.win/web/index.html | 2 +- src/linker.tray.win/web/js/106.7141ec35.js | 1 - src/linker.tray.win/web/js/226.e53f663b.js | 1 + .../js/{663.a5ad7ec9.js => 519.9618e424.js} | 2 +- .../js/{570.c09ba66d.js => 829.86c9d544.js} | 2 +- src/linker.tray.win/web/js/app.2201faad.js | 1 - src/linker.tray.win/web/js/app.ca5c5474.js | 1 + src/linker.web/src/apis/request.js | 27 +-- src/linker.web/src/lang/zh-cn.js | 4 +- src/linker.web/src/views/Api.vue | 5 +- .../src/views/full/install/Client.vue | 42 +--- .../src/views/full/status/Export.vue | 23 +- src/linker/Dockerfile-debian | 2 - src/linker/Dockerfile-kvm | 2 - src/linker/Dockerfile-musl | 2 - src/linker/linker.csproj | 5 +- version.txt | 7 +- 77 files changed, 460 insertions(+), 530 deletions(-) delete mode 100644 src/linker.libs/api/ApiServer.cs delete mode 100644 src/linker.libs/api/IApiServer.cs rename src/linker.libs/{api => web}/IApiController.cs (95%) delete mode 100644 src/linker.messenger.api/ApiServer.cs delete mode 100644 src/linker.messenger.api/IApiController.cs rename src/linker.tray.win/web/css/{106.f841026b.css => 226.638ce524.css} (92%) rename src/linker.tray.win/web/css/{663.6fe624be.css => 519.298416a4.css} (96%) rename src/linker.tray.win/web/css/{app.bb3197c7.css => app.af897554.css} (94%) delete mode 100644 src/linker.tray.win/web/js/106.7141ec35.js create mode 100644 src/linker.tray.win/web/js/226.e53f663b.js rename src/linker.tray.win/web/js/{663.a5ad7ec9.js => 519.9618e424.js} (97%) rename src/linker.tray.win/web/js/{570.c09ba66d.js => 829.86c9d544.js} (71%) delete mode 100644 src/linker.tray.win/web/js/app.2201faad.js create mode 100644 src/linker.tray.win/web/js/app.ca5c5474.js diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 9133f45b..19520901 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -37,7 +37,7 @@ jobs: release_name: v1.8.2.${{ steps.date.outputs.today }} draft: false prerelease: false - body: "1. 一些累计更新\r\n2. 测试发布,请使用1.8.2" + body: "1. 一些累计更新\r\n2. 重建权限存储,ulong改为BitArray,同组所有客户端需保持版本一致\r\n3. 增加唤醒功能,支持WOL,COM继电器,HID继电器\r\n4. 基于One-KVM包装docker镜像集成linker\r\n5. 管理端口改为1804,一个端口托管Web+Websocket" - name: publish projects run: ./publish.bat "C:\\Android\\android-sdk" - name: upload-win-x86-oss diff --git a/src/linker.app/MainPage.xaml.cs b/src/linker.app/MainPage.xaml.cs index a7570285..d8520f3d 100644 --- a/src/linker.app/MainPage.xaml.cs +++ b/src/linker.app/MainPage.xaml.cs @@ -20,7 +20,7 @@ namespace linker.app MainThread.BeginInvokeOnMainThread(() => { IApiStore apiStore = LinkerMessengerEntry.GetService(); - webview.Source = new Uri($"http://127.0.0.1:{apiStore.Info.WebPort}?t={DateTime.Now.Ticks}/#/?api={apiStore.Info.ApiPort}&psd={Helper.GlobalString}"); + webview.Source = new Uri($"http://127.0.0.1:{apiStore.Info.WebPort}?t={DateTime.Now.Ticks}/#/?api={apiStore.Info.WebPort}&psd={Helper.GlobalString}"); }); }; } diff --git a/src/linker.doc.web/docs/2、安装运行/2.0、重要说明(必看).md b/src/linker.doc.web/docs/2、安装运行/2.0、重要说明(必看).md index ec25b80e..66917fdd 100644 --- a/src/linker.doc.web/docs/2、安装运行/2.0、重要说明(必看).md +++ b/src/linker.doc.web/docs/2、安装运行/2.0、重要说明(必看).md @@ -9,7 +9,7 @@ sidebar_position: 0 ::: :::tip[客户端] -1. 客户端模式 监听端口 `1803(TCP)`websocket管理接口,`1804(TCP)`管理UI端口 +1. 客户端模式 管理接口`1804(TCP)` 2. 运行起来后可以使用`http://127.0.0.1:1804`打开管理页面,如果是windows,也可以在`linker.tray.win.exe`托盘程序里打开管理页面 ::: 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 d7c79ec4..ab532789 100644 --- a/src/linker.doc.web/docs/2、安装运行/2.1、安装方法(win).md +++ b/src/linker.doc.web/docs/2、安装运行/2.1、安装方法(win).md @@ -31,7 +31,7 @@ sc delete 服务名 1. 由于linker使用当前目录下的`configs`文件夹里的配置文件,所以不能使用同一程序多开,需要使用多份程序,**不要把`configs`文件夹也复制过去** 2. 客户端托盘无法多开,所以需要客户端多开时,**需要你手动安装服务**,不能使用托盘安装服务 -3. 客户端会监听两个端口,默认为`1803` 管理接口,`1804`网页服务,所以,在初始化时,你需要各个客户端**使用不同的端口** +3. 客户端会监听`1804` 管理接口,所以,在初始化时,你需要各个客户端**使用不同的端口** #### 在初始化时,`接口端口`,和`网页端口`,需要各个客户端设置为不一样的端口 ![](./img/client.png) diff --git a/src/linker.doc.web/docs/2、安装运行/2.3、安装方法(docker).md b/src/linker.doc.web/docs/2、安装运行/2.3、安装方法(docker).md index 3f810682..e20556fc 100644 --- a/src/linker.doc.web/docs/2、安装运行/2.3、安装方法(docker).md +++ b/src/linker.doc.web/docs/2、安装运行/2.3、安装方法(docker).md @@ -25,19 +25,16 @@ chmod +x linker-install.sh :::tip[说明] -1. 服务端端口 `1802` TCP+UDP -2. 客户端端口 `1804`、`1803` TCP -3. 配置文件夹 `./configs` -4. 日志文件夹 `./logs` -5. 镜像清单 `snltty/linker-debian`、`snltty/linker-musl`、`snltty/linker-kvm` -6. 特定平台 `snltty/linker-debian-{arch}`、`snltty/linker-musl-{arch}`、`snltty/linker-kvm-{arch}`,`{arch}`可以是`x64`、`arm64`、`arm` -7. `bridge`模式,需要映射一些端口比如`-p 18000-18010:18000-18010`,用于端口转发 -8. `host`模式,或者直接使用host`--network host`,**建议使用host,点对网,网对网,端口转发都方便** +1. 服务端端口 `1802` TCP+UDP、客户端端口 `1804` TCP +2. 配置文件夹 `./configs`、日志文件夹 `./logs` +3. 镜像清单 `snltty/linker-debian`、`snltty/linker-musl`、`snltty/linker-kvm` 或者 `snltty/linker-debian-{arch}`、`snltty/linker-musl-{arch}`、`snltty/linker-kvm-{arch}`,`{arch}`可以是`x64`、`arm64`、`arm` +4. `bridge`模式,需要映射一些端口比如`-p 18000-18010:18000-18010`,用于端口转发,或者直接使用host`--network host`,**建议使用host,点对网,网对网,端口转发都方便** +5. 如果你使用的是KVM镜像,那么会多需要几个端口`1806 http`、`1807 https`、`5900 VNC`、`623 ipmi` #### 客户端-bridge ``` docker run -it -d --name linker \ --p 1804:1804/tcp -p 1803:1803/tcp \ +-p 1804:1804/tcp \ -p 18000-18010:18000-18010/tcp \ -p 18000-18010:18000-18010/udp \ -v /usr/local/linker-docker/configs:/app/configs \ @@ -47,6 +44,41 @@ docker run -it -d --name linker \ --privileged=true \ snltty/linker-musl ``` +#### 客户端-bridge-kvm + +1. 基于[One-KVM](https://one-kvm.mofeng.run/start_install/docker_install/)的docker镜像包装,集成linker +2. 在linker参数的基础上,再加上KVM的参数,根据自己的需求修改一下参数即可 +3. 使用 1806 端口打开KVM管理页面 + +``` +docker run --name linker-kvm -itd \ +-p 1804:1804/tcp \ +-p 18000-18010:18000-18010/tcp \ +-p 18000-18010:18000-18010/udp \ +-v /usr/local/linker-docker/configs:/app/configs \ +-v /usr/local/linker-docker/logs:/app/logs \ +--device /dev/net/tun \ +--restart=always \ +--privileged=true \ +--network host \ +-p 1806:1806/tcp -p 1806:1806/udp \ #网页http端口 +-p 1807:1807/tcp -p 1807:1807/udp \ #网页https端口 +-p 5900:5900/tcp -p 5900:5900/udp \ #vnc端口 +-p 623:623/tcp -p 623:623/udp \ #ipmi端口 +--device /dev/video0:/dev/video0 \ #采集卡 +--device /dev/snd:/dev/snd -e AUDIONUM=0 \ #声卡 +--device /dev/hidraw1:/dev/hidraw1 -e ATX=USBRELAY_HID \ #HID继电器 +--device /dev/ttyUSB0:/dev/ttyUSB0 -e CH9329SPEED=9600 \ #CH9329键盘鼠标 +-v /usr/local/linker-docker/kvmd:/etc/kvmd \ #映射配置目录 +-e USERNAME=snltty -e PASSWORD=snltty -e NOAUTH=1 \ #账号密码,禁用认证 +-e NOVNC=1 \ #禁用vnc +-e NOIPMI=1 \ #禁用ipmi +-e NOWEBTERM=1 -e NOWEBTERMWRITE=1 \ #禁用webterm +-e NOSSL=1 \ #禁用ssl +snltty/linker-kvm +``` + + #### 客户端-host ``` docker run -it -d --name linker \ @@ -58,6 +90,32 @@ docker run -it -d --name linker \ --network host \ snltty/linker-musl ``` +#### 客户端-host-kvm + +1. 基于[One-KVM](https://one-kvm.mofeng.run/start_install/docker_install/)的docker镜像包装,集成linker +2. 在linker参数的基础上,再加上KVM的参数,根据自己的需求修改一下参数即可 +3. 使用 1806 端口打开KVM管理页面 + +``` +docker run --name linker-kvm -itd \ +-v /usr/local/linker-docker/configs:/app/configs \ +-v /usr/local/linker-docker/logs:/app/logs \ +--device /dev/net/tun \ +--restart=always \ +--privileged=true \ +--network host \ +--device /dev/video0:/dev/video0 \ #采集卡 +--device /dev/snd:/dev/snd -e AUDIONUM=0 \ #声卡 +--device /dev/hidraw1:/dev/hidraw1 -e ATX=USBRELAY_HID \ #HID继电器 +--device /dev/ttyUSB0:/dev/ttyUSB0 -e CH9329SPEED=9600 \ #CH9329键盘鼠标 +-v /usr/local/linker-docker/kvmd:/etc/kvmd \ #映射配置目录 +-e USERNAME=snltty -e PASSWORD=snltty -e NOAUTH=1 \ #账号密码,禁用认证 +-e NOVNC=1 \ #禁用vnc +-e NOIPMI=1 \ #禁用ipmi +-e NOWEBTERM=1 -e NOWEBTERMWRITE=1 \ #禁用webterm +-e NOSSL=1 \ #禁用ssl +snltty/linker-kvm +``` #### 服务端-bridge ``` 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 c1ef9c2d..4f891ae7 100644 --- a/src/linker.doc.web/docs/2、安装运行/2.8、初始化配置3(客户端).md +++ b/src/linker.doc.web/docs/2、安装运行/2.8、初始化配置3(客户端).md @@ -19,9 +19,8 @@ sidebar_position: 8 ``` { "Name": "A", //客户端名 - "Access": 4503599627370495, //权限值,可以看`src/linker.messenger.api/Config.cs`里的`AccessValue`枚举 + "AccessBits": '11111111111', //按下标,1有权限,0无权限,可以看`src/linker.messenger.api/Config.cs`里的`AccessValue`枚举 "CApi": { - "ApiPort": 1803, //api接口 "ApiPassword": "snltty", //api密码 "WebPort": 1804, //web端口 "WebRoot": "./web/" //web根目录 diff --git a/src/linker.doc.web/docs/6、自定义验证.md b/src/linker.doc.web/docs/6、自定义验证.md index 156651e6..0003fb1e 100644 --- a/src/linker.doc.web/docs/6、自定义验证.md +++ b/src/linker.doc.web/docs/6、自定义验证.md @@ -17,7 +17,7 @@ sidebar_position: 6 ### 1.2、动态配置示例 以javascript 为例,设置参数方法: ``` -const ws = new WebSocket(`ws://127.0.0.1:1803`, ['接口密钥']); +const ws = new WebSocket(`ws://127.0.0.1:1804`, ['接口密钥']); ws.onopen = () => { const json = {Key:'token',Value:'snltty'}; //你的参数内容,json格式,任意内容,将原样post到ActionUrl ws.send(JSON.stringify({ diff --git a/src/linker.libs/api/ApiServer.cs b/src/linker.libs/api/ApiServer.cs deleted file mode 100644 index 539d78ab..00000000 --- a/src/linker.libs/api/ApiServer.cs +++ /dev/null @@ -1,202 +0,0 @@ -using linker.libs.extends; -using linker.libs.websocket; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Reflection; -using System.Threading; -using System.Threading.Tasks; - -namespace linker.libs.api -{ - /// - /// 前段接口服务 - /// - public class ApiServer : IApiServer - { - protected readonly Dictionary plugins = new(); - protected readonly ConcurrentDictionary connectionTimes = new(); - public uint OnlineNum = 0; - private string password = string.Empty; - - private WebSocketServer server; - - public ApiServer() - { - } - - /// - /// 开启websockt - /// - public void Websocket(int port, string password = "") - { - this.password = password; - server = new WebSocketServer(); - try - { - server.Start(port); - } - catch (Exception ex) - { - LoggerHelper.Instance.Error(ex); - } - server.OnConnecting = (connection, header) => - { - bool res = string.IsNullOrWhiteSpace(this.password) || (header.TryGetHeaderValue(WebsocketHeaderKey.SecWebSocketProtocol, out string _password) && string.Equals(_password, this.password)); - if (res) - { - header.SetHeaderValue(WebsocketHeaderKey.SecWebSocketExtensions, string.Empty); - } - - if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) - { - header.TryGetHeaderValue(WebsocketHeaderKey.SecWebSocketProtocol, out string _password1); - LoggerHelper.Instance.Info($"websocket client password {_password1} eq {password}"); - } - - return res; - }; - server.OnOpen = (connection) => - { - Interlocked.Increment(ref OnlineNum); - connectionTimes.TryAdd(connection.Id, new ConnectionTimeInfo()); - }; - server.OnDisConnectd = (connection) => - { - Interlocked.Decrement(ref OnlineNum); - if (OnlineNum < 0) Interlocked.Exchange(ref OnlineNum, 0); - connectionTimes.TryRemove(connection.Id, out _); - }; - server.OnMessage = (connection, frame, message) => - { - if (connectionTimes.TryGetValue(connection.Id, out ConnectionTimeInfo timeInfo)) - { - timeInfo.DateTime = DateTime.Now; - } - var req = message.DeJson(); - req.Connection = connection; - OnMessage(req).ContinueWith((result) => - { - var resp = result.Result.ToJson().ToBytes(); - connection.SendFrameText(resp); - }); - }; - } - public void SetPassword(string password) - { - this.password = password; - } - - /// - /// 收到消息 - /// - /// - /// - public async Task OnMessage(ApiControllerRequestInfo model) - { - model.Path = model.Path.ToLower(); - if (plugins.TryGetValue(model.Path, out PluginPathCacheInfo plugin) == false) - { - return new ApiControllerResponseInfo - { - Content = $"{model.Path} not exists", - RequestId = model.RequestId, - Path = model.Path, - Code = ApiControllerResponseCodes.NotFound - }; - } - if (plugin.HasAccess(plugin.Access) == false) - { - return new ApiControllerResponseInfo - { - Content = "no permission", - RequestId = model.RequestId, - Path = model.Path, - Code = ApiControllerResponseCodes.Error - }; - } - - try - { - ApiControllerParamsInfo param = new ApiControllerParamsInfo - { - RequestId = model.RequestId, - Content = model.Content, - Connection = model.Connection - }; - dynamic resultAsync = plugin.Method.Invoke(plugin.Target, new object[] { param }); - object resultObject = null; - if (plugin.IsVoid == false) - { - if (plugin.IsTask) - { - await resultAsync.ConfigureAwait(false); - if (plugin.IsTaskResult) - { - resultObject = resultAsync.Result; - } - } - else - { - resultObject = resultAsync; - } - } - return new ApiControllerResponseInfo - { - Code = param.Code, - Content = param.Code != ApiControllerResponseCodes.Error ? resultObject : param.ErrorMessage, - RequestId = model.RequestId, - Path = model.Path, - }; - } - catch (Exception ex) - { - LoggerHelper.Instance.Error($"{model.Path} -> {ex.Message}"); - return new ApiControllerResponseInfo - { - Content = ex.Message, - RequestId = model.RequestId, - Path = model.Path, - Code = ApiControllerResponseCodes.Error - }; - } - } - - } - - public sealed class ConnectionTimeInfo - { - public DateTime DateTime { get; set; } = DateTime.Now; - } - - /// - /// 前段接口缓存 - /// - public struct PluginPathCacheInfo - { - /// - /// 对象 - /// - public object Target { get; set; } - /// - /// 方法 - /// - public MethodInfo Method { get; set; } - /// - /// 是否void - /// - public bool IsVoid { get; set; } - /// - /// 是否task - /// - public bool IsTask { get; set; } - /// - /// 是否task result - /// - public bool IsTaskResult { get; set; } - - public int Access { get; set; } - public Func HasAccess { get; set; } - } - -} diff --git a/src/linker.libs/api/IApiServer.cs b/src/linker.libs/api/IApiServer.cs deleted file mode 100644 index f2f82934..00000000 --- a/src/linker.libs/api/IApiServer.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace linker.libs.api -{ - /// - /// 前端接口服务 - /// - public interface IApiServer - { - /// - /// websocket - /// - public void Websocket(int port,string password); - public void SetPassword(string password); - } - -} diff --git a/src/linker.libs/api/IApiController.cs b/src/linker.libs/web/IApiController.cs similarity index 95% rename from src/linker.libs/api/IApiController.cs rename to src/linker.libs/web/IApiController.cs index 9a4553f5..a047c498 100644 --- a/src/linker.libs/api/IApiController.cs +++ b/src/linker.libs/web/IApiController.cs @@ -1,8 +1,9 @@ using linker.libs.websocket; using System; +using System.Net.WebSockets; using System.Text.Json.Serialization; -namespace linker.libs.api +namespace linker.libs.web { /// /// 前段接口 @@ -38,7 +39,7 @@ namespace linker.libs.api public sealed class ApiControllerRequestInfo { [JsonIgnore] - public WebsocketConnection Connection { get; set; } + public WebSocket Connection { get; set; } /// /// 路径 /// @@ -58,7 +59,7 @@ namespace linker.libs.api /// public sealed class ApiControllerParamsInfo { - public WebsocketConnection Connection { get; set; } + public WebSocket Connection { get; set; } /// /// 请求id /// diff --git a/src/linker.libs/web/IWebServer.cs b/src/linker.libs/web/IWebServer.cs index 9a586ea6..03807e59 100644 --- a/src/linker.libs/web/IWebServer.cs +++ b/src/linker.libs/web/IWebServer.cs @@ -1,4 +1,6 @@ -namespace linker.libs.web +using System.Collections.Generic; + +namespace linker.libs.web { /// /// web服务 @@ -8,7 +10,8 @@ /// /// 开始 /// - public void Start(int port, string root); + public void Start(int port, string root,string password); + public void SetPassword(string password); } } diff --git a/src/linker.libs/web/WebServer.cs b/src/linker.libs/web/WebServer.cs index 36905a0f..8dfafb86 100644 --- a/src/linker.libs/web/WebServer.cs +++ b/src/linker.libs/web/WebServer.cs @@ -1,7 +1,12 @@ -using System; +using linker.libs.extends; +using System; using System.Collections.Generic; using System.IO; using System.Net; +using System.Net.WebSockets; +using System.Reflection; +using System.Text; +using System.Threading; using System.Threading.Tasks; namespace linker.libs.web @@ -12,6 +17,8 @@ namespace linker.libs.web public class WebServer : IWebServer { private string root = ""; + private string password = Helper.GlobalString; + protected readonly Dictionary plugins = new(); private readonly IWebServerFileReader fileReader; public WebServer(IWebServerFileReader fileReader) @@ -22,10 +29,11 @@ namespace linker.libs.web /// /// 开启web /// - public void Start(int port, string root) + public void Start(int port, string root, string password) { this.root = root; - Task.Factory.StartNew(() => + this.password = password; + Task.Factory.StartNew(async () => { try { @@ -34,7 +42,25 @@ namespace linker.libs.web http.Prefixes.Add($"http://+:{port}/"); http.Start(); - http.BeginGetContext(Callback, http); + while (true) + { + try + { + HttpListenerContext context = await http.GetContextAsync(); + if (context.Request.IsWebSocketRequest) + { + HttpListenerWebSocketContext wsContext = await context.AcceptWebSocketAsync(null); + HandleWs(wsContext.WebSocket); + } + else + { + HandleWeb(context); + } + } + catch (Exception) + { + } + } } catch (Exception ex) { @@ -42,13 +68,11 @@ namespace linker.libs.web } }, TaskCreationOptions.LongRunning); } - private void Callback(IAsyncResult result) + + private void HandleWeb(HttpListenerContext context) { - HttpListener http = result.AsyncState as HttpListener; - HttpListenerContext context = http.EndGetContext(result); HttpListenerRequest request = context.Request; HttpListenerResponse response = context.Response; - try { response.Headers.Set("Server", Helper.GlobalString); @@ -99,11 +123,7 @@ namespace linker.libs.web } response.Close(); - - http.BeginGetContext(Callback, http); } - - private Dictionary types = new Dictionary { { ".webp","image/webp"}, { ".png","image/png"}, @@ -127,6 +147,133 @@ namespace linker.libs.web } return "application/octet-stream"; } + + public void SetPassword(string password) + { + this.password = password; + } + private async void HandleWs(WebSocket websocket) + { + byte[] buffer = new byte[8 * 1024]; + try + { + WebSocketReceiveResult result = await websocket.ReceiveAsync(buffer, CancellationToken.None); + if (result.MessageType != WebSocketMessageType.Text) + { + await websocket.CloseAsync(WebSocketCloseStatus.ProtocolError, "password fail", CancellationToken.None); + return; + } + ApiControllerRequestInfo req = Encoding.UTF8.GetString(buffer.AsMemory(0, result.Count).Span).DeJson(); + if (req.Path != "password" || req.Content != this.password) + { + await websocket.CloseAsync(WebSocketCloseStatus.ProtocolError, "password fail", CancellationToken.None); + return; + } + await websocket.SendAsync(new ApiControllerResponseInfo + { + Code = ApiControllerResponseCodes.Success, + Path = req.Path, + RequestId = req.RequestId, + Content = "password ok", + }.ToJson().ToBytes(), WebSocketMessageType.Text, true, CancellationToken.None); + + while (websocket.State == WebSocketState.Open) + { + result = await websocket.ReceiveAsync(buffer, CancellationToken.None); + switch (result.MessageType) + { + case WebSocketMessageType.Text: + { + req = Encoding.UTF8.GetString(buffer.AsMemory(0, result.Count).Span).DeJson(); + req.Connection = websocket; + ApiControllerResponseInfo resp = await OnMessage(req); + await websocket.SendAsync(resp.ToJson().ToBytes(), WebSocketMessageType.Text, true, CancellationToken.None); + } + break; + case WebSocketMessageType.Binary: + break; + case WebSocketMessageType.Close: + await websocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closed by client", CancellationToken.None); + break; + default: + break; + } + } + } + catch (Exception ex) + { + LoggerHelper.Instance.Error(ex); + } + } + private async Task OnMessage(ApiControllerRequestInfo model) + { + model.Path = model.Path.ToLower(); + if (plugins.TryGetValue(model.Path, out PluginPathCacheInfo plugin) == false) + { + return new ApiControllerResponseInfo + { + Content = $"{model.Path} not exists", + RequestId = model.RequestId, + Path = model.Path, + Code = ApiControllerResponseCodes.NotFound + }; + } + if (plugin.HasAccess(plugin.Access) == false) + { + return new ApiControllerResponseInfo + { + Content = "no permission", + RequestId = model.RequestId, + Path = model.Path, + Code = ApiControllerResponseCodes.Error + }; + } + + try + { + ApiControllerParamsInfo param = new ApiControllerParamsInfo + { + RequestId = model.RequestId, + Content = model.Content, + Connection = model.Connection + }; + dynamic resultAsync = plugin.Method.Invoke(plugin.Target, new object[] { param }); + object resultObject = null; + if (plugin.IsVoid == false) + { + if (plugin.IsTask) + { + await resultAsync.ConfigureAwait(false); + if (plugin.IsTaskResult) + { + resultObject = resultAsync.Result; + } + } + else + { + resultObject = resultAsync; + } + } + return new ApiControllerResponseInfo + { + Code = param.Code, + Content = param.Code != ApiControllerResponseCodes.Error ? resultObject : param.ErrorMessage, + RequestId = model.RequestId, + Path = model.Path, + }; + } + catch (Exception ex) + { + LoggerHelper.Instance.Error($"{model.Path} -> {ex.Message}"); + return new ApiControllerResponseInfo + { + Content = ex.Message, + RequestId = model.RequestId, + Path = model.Path, + Code = ApiControllerResponseCodes.Error + }; + } + } } @@ -143,4 +290,31 @@ namespace linker.libs.web return File.ReadAllBytes(fileName); } } + + public struct PluginPathCacheInfo + { + /// + /// 对象 + /// + public object Target { get; set; } + /// + /// 方法 + /// + public MethodInfo Method { get; set; } + /// + /// 是否void + /// + public bool IsVoid { get; set; } + /// + /// 是否task + /// + public bool IsTask { get; set; } + /// + /// 是否task result + /// + public bool IsTaskResult { get; set; } + + public int Access { get; set; } + public Func HasAccess { get; set; } + } } diff --git a/src/linker.messenger.access/AccessApiController.cs b/src/linker.messenger.access/AccessApiController.cs index 68e9faab..aafdb47c 100644 --- a/src/linker.messenger.access/AccessApiController.cs +++ b/src/linker.messenger.access/AccessApiController.cs @@ -1,11 +1,10 @@ -using linker.libs.api; -using linker.libs.extends; +using linker.libs.extends; using linker.libs; using linker.messenger.signin; using linker.messenger.api; -using IApiServer = linker.messenger.api.IApiServer; using System.Collections.Concurrent; using System.Collections; +using linker.libs.web; namespace linker.messenger.access { @@ -18,9 +17,10 @@ namespace linker.messenger.access private readonly ISerializer serializer; private readonly IAccessStore accessStore; private readonly IApiStore apiStore; - private readonly IApiServer apiServer; + private readonly linker.messenger.api.IWebServer apiServer; - public AccessApiController(IMessengerSender sender, SignInClientState signInClientState, AccessDecenter accessDecenter, ISignInClientStore signInClientStore, ISerializer serializer, IAccessStore accessStore, IApiStore apiStore, IApiServer apiServer) + public AccessApiController(IMessengerSender sender, SignInClientState signInClientState, AccessDecenter accessDecenter, + ISignInClientStore signInClientStore, ISerializer serializer, IAccessStore accessStore, IApiStore apiStore, linker.messenger.api.IWebServer apiServer) { this.sender = sender; this.signInClientState = signInClientState; diff --git a/src/linker.messenger.access/AccessMessenger.cs b/src/linker.messenger.access/AccessMessenger.cs index 64220ac8..c004ac4c 100644 --- a/src/linker.messenger.access/AccessMessenger.cs +++ b/src/linker.messenger.access/AccessMessenger.cs @@ -1,8 +1,6 @@ using linker.libs; -using linker.libs.api; using linker.messenger.api; using linker.messenger.signin; -using IApiServer = linker.messenger.api.IApiServer; namespace linker.messenger.access { @@ -96,8 +94,8 @@ namespace linker.messenger.access private readonly IAccessStore accessStore; private readonly ISerializer serializer; private readonly IApiStore apiStore; - private readonly IApiServer apiServer; - public AccessClientMessenger(IAccessStore accessStore, ISerializer serializer, IApiStore apiStore, IApiServer apiServer) + private readonly linker.messenger.api.IWebServer apiServer; + public AccessClientMessenger(IAccessStore accessStore, ISerializer serializer, IApiStore apiStore, linker.messenger.api.IWebServer apiServer) { this.accessStore = accessStore; this.serializer = serializer; diff --git a/src/linker.messenger.access/Entry.cs b/src/linker.messenger.access/Entry.cs index 76798076..b72dfbd9 100644 --- a/src/linker.messenger.access/Entry.cs +++ b/src/linker.messenger.access/Entry.cs @@ -1,4 +1,5 @@ -using linker.messenger.access; +using linker.libs.web; +using linker.messenger.access; using linker.messenger.decenter; using Microsoft.Extensions.DependencyInjection; namespace linker.messenger.api @@ -14,8 +15,8 @@ namespace linker.messenger.api } public static ServiceProvider UseAccessClient(this ServiceProvider serviceProvider) { - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); DecenterClientTransfer decenterClientTransfer = serviceProvider.GetService(); decenterClientTransfer.AddDecenters(new List { serviceProvider.GetService() }); diff --git a/src/linker.messenger.action/ActionApiController.cs b/src/linker.messenger.action/ActionApiController.cs index eeb618ea..820a17a2 100644 --- a/src/linker.messenger.action/ActionApiController.cs +++ b/src/linker.messenger.action/ActionApiController.cs @@ -1,5 +1,5 @@ -using linker.libs.api; -using linker.libs.extends; +using linker.libs.extends; +using linker.libs.web; using linker.messenger.api; namespace linker.messenger.action diff --git a/src/linker.messenger.action/Entry.cs b/src/linker.messenger.action/Entry.cs index 0e5e96b5..6cfad751 100644 --- a/src/linker.messenger.action/Entry.cs +++ b/src/linker.messenger.action/Entry.cs @@ -1,4 +1,5 @@ -using linker.messenger.action; +using linker.libs.web; +using linker.messenger.action; using linker.messenger.relay.server.validator; using linker.messenger.sforward.server.validator; using linker.messenger.signin.args; @@ -17,8 +18,8 @@ namespace linker.messenger.api } public static ServiceProvider UseActionClient(this ServiceProvider serviceProvider) { - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); SignInArgsTransfer signInArgsTransfer = serviceProvider.GetService(); signInArgsTransfer.AddArgs(new List { serviceProvider.GetService() }); diff --git a/src/linker.messenger.api/ApiServer.cs b/src/linker.messenger.api/ApiServer.cs deleted file mode 100644 index e78839ff..00000000 --- a/src/linker.messenger.api/ApiServer.cs +++ /dev/null @@ -1,62 +0,0 @@ -using linker.libs; -using linker.libs.api; -using System.Reflection; - -namespace linker.messenger.api -{ - /// - /// 前段接口服务 - /// - public sealed partial class ApiServer : libs.api.ApiServer, IApiServer - { - private readonly IAccessStore accessStore; - public ApiServer(IAccessStore accessStore) - { - this.accessStore = accessStore; - } - - /// - /// 加载插件 - /// - public void AddPlugins(List list) - { - Type voidType = typeof(void); - - if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) - LoggerHelper.Instance.Info($"add api {string.Join(",", list.Select(c => c.GetType().Name))}"); - - foreach (IApiController obj in list) - { - Type type = obj.GetType(); - string path = type.Name.Replace("ApiController", "").Replace("ApiController", ""); - foreach (MethodInfo method in type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly)) - { - string key = $"{path}/{method.Name}".ToLower(); - if (plugins.ContainsKey(key) == false) - { - bool istask = method.ReturnType.GetProperty("IsCompleted") != null && method.ReturnType.GetMethod("GetAwaiter") != null; - bool isTaskResult = method.ReturnType.GetProperty("Result") != null; - - AccessAttribute accessAttr = method.GetCustomAttribute(); - int access = (int)(accessAttr?.Value ?? 0); - - plugins.TryAdd(key, new PluginPathCacheInfo - { - IsVoid = method.ReturnType == voidType, - Method = method, - Target = obj, - IsTask = istask, - IsTaskResult = isTaskResult, - Access = access, - HasAccess = HasAccess, - }); - } - } - } - } - private bool HasAccess(int access) - { - return accessStore.HasAccess((AccessValue)access); - } - } -} diff --git a/src/linker.messenger.api/Entry.cs b/src/linker.messenger.api/Entry.cs index e953cb5b..4c2f53f5 100644 --- a/src/linker.messenger.api/Entry.cs +++ b/src/linker.messenger.api/Entry.cs @@ -7,7 +7,6 @@ namespace linker.messenger.api { public static ServiceCollection AddApiClient(this ServiceCollection serviceCollection) { - serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); @@ -18,21 +17,12 @@ namespace linker.messenger.api { IApiStore apiStore = serviceProvider.GetService(); IAccessStore accessStore = serviceProvider.GetService(); - if (apiStore.Info.ApiPort > 0 && accessStore.HasAccess(AccessValue.Api)) - { - LoggerHelper.Instance.Info($"start client api"); - IApiServer server = serviceProvider.GetService(); - server.Websocket(apiStore.Info.ApiPort, apiStore.Info.ApiPassword); - LoggerHelper.Instance.Warning($"client api listen:{apiStore.Info.ApiPort}"); - if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) - LoggerHelper.Instance.Warning($"client api password:{apiStore.Info.ApiPassword}"); - } if (apiStore.Info.WebPort > 0 && accessStore.HasAccess(AccessValue.Web)) { LoggerHelper.Instance.Info($"start client web"); IWebServer webServer = serviceProvider.GetService(); - webServer.Start(apiStore.Info.WebPort, apiStore.Info.WebRoot); + webServer.Start(apiStore.Info.WebPort, apiStore.Info.WebRoot, apiStore.Info.ApiPassword); LoggerHelper.Instance.Warning($"client web listen:{apiStore.Info.WebPort}"); } return serviceProvider; diff --git a/src/linker.messenger.api/IApiController.cs b/src/linker.messenger.api/IApiController.cs deleted file mode 100644 index 26753f0f..00000000 --- a/src/linker.messenger.api/IApiController.cs +++ /dev/null @@ -1,10 +0,0 @@ -using linker.libs.api; - -namespace linker.messenger.api -{ - public interface IApiServer : libs.api.IApiServer - { - public void AddPlugins(List list); - } - -} diff --git a/src/linker.messenger.api/IApiStore.cs b/src/linker.messenger.api/IApiStore.cs index 13e2743b..89ff9a43 100644 --- a/src/linker.messenger.api/IApiStore.cs +++ b/src/linker.messenger.api/IApiStore.cs @@ -3,15 +3,10 @@ namespace linker.messenger.api { public sealed class ApiClientInfo { - /// - /// 管理接口端口 - /// - public int ApiPort { get; set; } = 1803; /// /// 管理接口密码 /// public string ApiPassword { get; set; } = Helper.GlobalString; - /// /// 网站端口 /// @@ -33,12 +28,6 @@ namespace linker.messenger.api /// public bool Set(ApiClientInfo info); /// - /// 设置接口端口 - /// - /// - /// - public bool SetApiPort(int port); - /// /// 设置接口密码 /// /// diff --git a/src/linker.messenger.api/WebServer.cs b/src/linker.messenger.api/WebServer.cs index 99ca6d8c..aacc0a1e 100644 --- a/src/linker.messenger.api/WebServer.cs +++ b/src/linker.messenger.api/WebServer.cs @@ -1,15 +1,69 @@ -using linker.libs.web; +using linker.libs; +using linker.libs.web; +using System.Reflection; namespace linker.messenger.api { + public interface IWebServer : libs.web.IWebServer + { + /// + /// 加载插件 + /// + void AddPlugins(List list); + } /// /// 本地web管理端服务器 /// public sealed class WebServer : libs.web.WebServer, IWebServer { - public WebServer(IWebServerFileReader webServerFileReader) : base(webServerFileReader) + private readonly IAccessStore accessStore; + public WebServer(IWebServerFileReader webServerFileReader, IAccessStore accessStore) : base(webServerFileReader) { + this.accessStore = accessStore; + } + /// + /// 加载插件 + /// + public void AddPlugins(List list) + { + Type voidType = typeof(void); + + if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) + LoggerHelper.Instance.Info($"add api {string.Join(",", list.Select(c => c.GetType().Name))}"); + + foreach (IApiController obj in list) + { + Type type = obj.GetType(); + string path = type.Name.Replace("ApiController", "").Replace("ApiController", ""); + foreach (MethodInfo method in type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly)) + { + string key = $"{path}/{method.Name}".ToLower(); + if (plugins.ContainsKey(key) == false) + { + bool istask = method.ReturnType.GetProperty("IsCompleted") != null && method.ReturnType.GetMethod("GetAwaiter") != null; + bool isTaskResult = method.ReturnType.GetProperty("Result") != null; + + AccessAttribute accessAttr = method.GetCustomAttribute(); + int access = (int)(accessAttr?.Value ?? 0); + + plugins.TryAdd(key, new PluginPathCacheInfo + { + IsVoid = method.ReturnType == voidType, + Method = method, + Target = obj, + IsTask = istask, + IsTaskResult = isTaskResult, + Access = access, + HasAccess = HasAccess, + }); + } + } + } + } + private bool HasAccess(int access) + { + return accessStore.HasAccess(AccessValue.Api) && accessStore.HasAccess((AccessValue)access); } } diff --git a/src/linker.messenger.firewall/Entry.cs b/src/linker.messenger.firewall/Entry.cs index df810017..a6023302 100644 --- a/src/linker.messenger.firewall/Entry.cs +++ b/src/linker.messenger.firewall/Entry.cs @@ -1,5 +1,5 @@  -using linker.messenger.api; +using linker.libs.web; using linker.snat; using Microsoft.Extensions.DependencyInjection; @@ -23,8 +23,8 @@ namespace linker.messenger.firewall IMessengerResolver messengerResolver = serviceProvider.GetService(); messengerResolver.AddMessenger(new List { serviceProvider.GetService() }); - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); return serviceProvider; } diff --git a/src/linker.messenger.firewall/FirewallApiController.cs b/src/linker.messenger.firewall/FirewallApiController.cs index 064fdc55..20507b2d 100644 --- a/src/linker.messenger.firewall/FirewallApiController.cs +++ b/src/linker.messenger.firewall/FirewallApiController.cs @@ -1,8 +1,8 @@ -using linker.libs.api; -using linker.libs.extends; +using linker.libs.extends; using linker.libs; using linker.messenger.signin; using linker.messenger.api; +using linker.libs.web; namespace linker.messenger.firewall { diff --git a/src/linker.messenger.flow/Entry.cs b/src/linker.messenger.flow/Entry.cs index 6361a1f9..96e9beb0 100644 --- a/src/linker.messenger.flow/Entry.cs +++ b/src/linker.messenger.flow/Entry.cs @@ -1,4 +1,5 @@ -using linker.messenger.api; +using linker.libs.web; +using linker.messenger.api; using linker.messenger.flow.messenger; using linker.messenger.relay.server; using linker.messenger.tunnel; @@ -22,8 +23,8 @@ namespace linker.messenger.flow } public static ServiceProvider UseFlowClient(this ServiceProvider serviceProvider) { - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); FlowTransfer flowTransfer = serviceProvider.GetService(); flowTransfer.AddFlows(new List { serviceProvider.GetService() }); diff --git a/src/linker.messenger.flow/FlowApiController.cs b/src/linker.messenger.flow/FlowApiController.cs index f421c8f4..a613f406 100644 --- a/src/linker.messenger.flow/FlowApiController.cs +++ b/src/linker.messenger.flow/FlowApiController.cs @@ -1,6 +1,6 @@ using linker.libs; -using linker.libs.api; using linker.libs.extends; +using linker.libs.web; using linker.messenger.api; using linker.messenger.flow.messenger; using linker.messenger.relay.client; diff --git a/src/linker.messenger.forward/Entry.cs b/src/linker.messenger.forward/Entry.cs index a236cef9..9c09c36a 100644 --- a/src/linker.messenger.forward/Entry.cs +++ b/src/linker.messenger.forward/Entry.cs @@ -1,4 +1,5 @@ -using linker.messenger.api; +using linker.libs.web; +using linker.messenger.api; using linker.messenger.decenter; using linker.messenger.forward.proxy; using Microsoft.Extensions.DependencyInjection; @@ -23,8 +24,8 @@ namespace linker.messenger.forward } public static ServiceProvider UseForwardClient(this ServiceProvider serviceProvider) { - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); ForwardTransfer forwardTransfer = serviceProvider.GetService(); diff --git a/src/linker.messenger.forward/ForwardApiController.cs b/src/linker.messenger.forward/ForwardApiController.cs index 7e459422..6c157385 100644 --- a/src/linker.messenger.forward/ForwardApiController.cs +++ b/src/linker.messenger.forward/ForwardApiController.cs @@ -1,5 +1,4 @@ -using linker.libs.api; -using linker.libs.extends; +using linker.libs.extends; using System.Net; using linker.libs; using linker.tunnel.connection; @@ -7,6 +6,7 @@ using System.Collections.Concurrent; using linker.messenger.signin; using linker.messenger.forward.proxy; using linker.messenger.api; +using linker.libs.web; namespace linker.messenger.forward { diff --git a/src/linker.messenger.logger/Entry.cs b/src/linker.messenger.logger/Entry.cs index c79954db..c9f95843 100644 --- a/src/linker.messenger.logger/Entry.cs +++ b/src/linker.messenger.logger/Entry.cs @@ -1,5 +1,6 @@ using linker.libs; using linker.libs.timer; +using linker.libs.web; using linker.messenger.api; using Microsoft.Extensions.DependencyInjection; namespace linker.messenger.logger @@ -25,8 +26,8 @@ namespace linker.messenger.logger } public static ServiceProvider UseLoggerClient(this ServiceProvider serviceProvider) { - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); IAccessStore accessStore= serviceProvider.GetService(); ILoggerStore loggerStore= serviceProvider.GetService(); diff --git a/src/linker.messenger.logger/LoggerController.cs b/src/linker.messenger.logger/LoggerController.cs index 1f166be0..4045fbf9 100644 --- a/src/linker.messenger.logger/LoggerController.cs +++ b/src/linker.messenger.logger/LoggerController.cs @@ -1,7 +1,7 @@ using linker.libs.extends; -using linker.libs.api; using linker.libs; using linker.messenger.api; +using linker.libs.web; namespace linker.messenger.logger { diff --git a/src/linker.messenger.plan/Entry.cs b/src/linker.messenger.plan/Entry.cs index 92d8d4a4..19457261 100644 --- a/src/linker.messenger.plan/Entry.cs +++ b/src/linker.messenger.plan/Entry.cs @@ -1,4 +1,5 @@  +using linker.libs.web; using linker.messenger.api; using Microsoft.Extensions.DependencyInjection; @@ -21,8 +22,8 @@ namespace linker.messenger.plan IMessengerResolver messengerResolver = serviceProvider.GetService(); messengerResolver.AddMessenger(new List { serviceProvider.GetService() }); - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); return serviceProvider; } diff --git a/src/linker.messenger.plan/PlanApiController.cs b/src/linker.messenger.plan/PlanApiController.cs index 599d02fc..0a429011 100644 --- a/src/linker.messenger.plan/PlanApiController.cs +++ b/src/linker.messenger.plan/PlanApiController.cs @@ -1,6 +1,6 @@ using linker.libs; -using linker.libs.api; using linker.libs.extends; +using linker.libs.web; using linker.messenger.signin; namespace linker.messenger.plan diff --git a/src/linker.messenger.relay/Entry.cs b/src/linker.messenger.relay/Entry.cs index 5399b0fc..db878e98 100644 --- a/src/linker.messenger.relay/Entry.cs +++ b/src/linker.messenger.relay/Entry.cs @@ -1,4 +1,4 @@ -using linker.messenger.api; +using linker.libs.web; using linker.messenger.relay.client; using linker.messenger.relay.messenger; using linker.messenger.relay.server; @@ -31,8 +31,8 @@ namespace linker.messenger.relay SyncTreansfer syncTreansfer = serviceProvider.GetService(); syncTreansfer.AddSyncs(new List { serviceProvider.GetService() }); - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); RelayClientTestTransfer relayClientTestTransfer = serviceProvider.GetService(); diff --git a/src/linker.messenger.relay/client/RelayApiController.cs b/src/linker.messenger.relay/client/RelayApiController.cs index d409e7a6..cb04e585 100644 --- a/src/linker.messenger.relay/client/RelayApiController.cs +++ b/src/linker.messenger.relay/client/RelayApiController.cs @@ -1,6 +1,6 @@ using linker.libs; -using linker.libs.api; using linker.libs.extends; +using linker.libs.web; using linker.messenger.api; using linker.messenger.relay.client; using linker.messenger.relay.client.transport; diff --git a/src/linker.messenger.sforward/Entry.cs b/src/linker.messenger.sforward/Entry.cs index bd518b0b..0aeb9aae 100644 --- a/src/linker.messenger.sforward/Entry.cs +++ b/src/linker.messenger.sforward/Entry.cs @@ -1,4 +1,5 @@ -using linker.messenger.api; +using linker.libs.web; +using linker.messenger.api; using linker.messenger.decenter; using linker.messenger.plan; using linker.messenger.sforward.client; @@ -33,8 +34,8 @@ namespace linker.messenger.sforward } public static ServiceProvider UseSForwardClient(this ServiceProvider serviceProvider) { - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); SForwardClientTransfer sForwardClientTransfer = serviceProvider.GetService(); diff --git a/src/linker.messenger.sforward/client/SForwardApiController.cs b/src/linker.messenger.sforward/client/SForwardApiController.cs index 46a8e0a7..b333f18d 100644 --- a/src/linker.messenger.sforward/client/SForwardApiController.cs +++ b/src/linker.messenger.sforward/client/SForwardApiController.cs @@ -1,10 +1,10 @@ -using linker.libs.api; -using linker.libs.extends; +using linker.libs.extends; using linker.plugins.sforward.messenger; using System.Collections.Concurrent; using linker.messenger.signin; using linker.libs; using linker.messenger.api; +using linker.libs.web; namespace linker.messenger.sforward.client { diff --git a/src/linker.messenger.signin/Entry.cs b/src/linker.messenger.signin/Entry.cs index c53346fa..65b8ba6d 100644 --- a/src/linker.messenger.signin/Entry.cs +++ b/src/linker.messenger.signin/Entry.cs @@ -1,5 +1,5 @@ using linker.libs; -using linker.libs.api; +using linker.libs.web; using linker.messenger.exroute; using linker.messenger.signin.args; using Microsoft.Extensions.DependencyInjection; @@ -36,7 +36,7 @@ namespace linker.messenger.signin serviceProvider.GetService(), }); - linker.messenger.api.IApiServer apiServer = serviceProvider.GetService(); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); apiServer.AddPlugins(new List { serviceProvider.GetService() }); diff --git a/src/linker.messenger.signin/SignInApiController.cs b/src/linker.messenger.signin/SignInApiController.cs index 2b96f212..20003126 100644 --- a/src/linker.messenger.signin/SignInApiController.cs +++ b/src/linker.messenger.signin/SignInApiController.cs @@ -1,6 +1,6 @@ using linker.libs; -using linker.libs.api; using linker.libs.extends; +using linker.libs.web; using linker.messenger.api; namespace linker.messenger.signin diff --git a/src/linker.messenger.socks5/Entry.cs b/src/linker.messenger.socks5/Entry.cs index 1e2ef641..0e758d1c 100644 --- a/src/linker.messenger.socks5/Entry.cs +++ b/src/linker.messenger.socks5/Entry.cs @@ -1,4 +1,5 @@ -using linker.messenger.api; +using linker.libs.web; +using linker.messenger.api; using linker.messenger.decenter; using linker.messenger.exroute; using Microsoft.Extensions.DependencyInjection; @@ -28,8 +29,8 @@ namespace linker.messenger.socks5 IMessengerResolver messengerResolver = serviceProvider.GetService(); messengerResolver.AddMessenger(new List { serviceProvider.GetService() }); - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); DecenterClientTransfer decenterClientTransfer = serviceProvider.GetService(); decenterClientTransfer.AddDecenters(new List { serviceProvider.GetService() }); diff --git a/src/linker.messenger.socks5/Socks5ApiController.cs b/src/linker.messenger.socks5/Socks5ApiController.cs index e75c3e4b..706308c6 100644 --- a/src/linker.messenger.socks5/Socks5ApiController.cs +++ b/src/linker.messenger.socks5/Socks5ApiController.cs @@ -1,10 +1,10 @@ -using linker.libs.api; -using linker.libs.extends; +using linker.libs.extends; using System.Collections.Concurrent; using linker.tunnel.connection; using linker.messenger.signin; using linker.libs; using linker.messenger.api; +using linker.libs.web; namespace linker.messenger.socks5 { diff --git a/src/linker.messenger.store.file/ConfigApiController.cs b/src/linker.messenger.store.file/ConfigApiController.cs index 8f80c277..fbb76b66 100644 --- a/src/linker.messenger.store.file/ConfigApiController.cs +++ b/src/linker.messenger.store.file/ConfigApiController.cs @@ -1,5 +1,4 @@ -using linker.libs.api; -using linker.libs.extends; +using linker.libs.extends; using System.IO.Compression; using linker.libs; using linker.messenger.signin; @@ -8,6 +7,7 @@ using System.Text; using linker.messenger.relay.client.transport; using System.Text.Json; using System.Collections; +using linker.libs.web; namespace linker.messenger.store.file { public sealed class ConfigApiController : IApiController @@ -48,7 +48,6 @@ namespace linker.messenger.store.file config.Data.Client.Name = info.Client.Name; config.Data.Client.Groups = new SignInClientGroupInfo[] { new SignInClientGroupInfo { Id = info.Client.GroupId, Name = info.Client.GroupId, Password = info.Client.GroupPassword } }; config.Data.Client.CApi.WebPort = info.Client.Web; - config.Data.Client.CApi.ApiPort = info.Client.Api; config.Data.Client.CApi.ApiPassword = info.Client.Password; if (info.Client.HasServer) @@ -258,7 +257,6 @@ namespace linker.messenger.store.file client.CApi.ApiPassword = configExportInfo.ApiPassword; } client.CApi.WebPort = configExportInfo.WebPort; - client.CApi.ApiPort = configExportInfo.ApiPort; client.AccessBits = accessStore.AssignAccess(configExportInfo.Access); @@ -321,7 +319,6 @@ namespace linker.messenger.store.file public string GroupId { get; set; } public string GroupPassword { get; set; } - public int Api { get; set; } public int Web { get; set; } public string Password { get; set; } @@ -370,7 +367,6 @@ namespace linker.messenger.store.file public string Name { get; set; } public string ApiPassword { get; set; } public int WebPort { get; set; } - public int ApiPort { get; set; } public bool Single { get; set; } public BitArray Access { get; set; } diff --git a/src/linker.messenger.store.file/Entry.cs b/src/linker.messenger.store.file/Entry.cs index 09f119c2..a701ce60 100644 --- a/src/linker.messenger.store.file/Entry.cs +++ b/src/linker.messenger.store.file/Entry.cs @@ -1,4 +1,5 @@ using linker.libs; +using linker.libs.web; using linker.messenger.action; using linker.messenger.api; using linker.messenger.firewall; @@ -126,8 +127,8 @@ namespace linker.messenger.store.file fileConfig.Save(config); RunningConfig runningConfig = serviceProvider.GetService(); - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); SyncTreansfer syncTreansfer = serviceProvider.GetService(); syncTreansfer.AddSyncs(new List { diff --git a/src/linker.messenger.store.file/api/ApiStore.cs b/src/linker.messenger.store.file/api/ApiStore.cs index 0efc60d5..270fd75e 100644 --- a/src/linker.messenger.store.file/api/ApiStore.cs +++ b/src/linker.messenger.store.file/api/ApiStore.cs @@ -24,12 +24,6 @@ namespace linker.messenger.store.file.api return true; } - public bool SetApiPort(int port) - { - fileConfig.Data.Client.CApi.ApiPort = port; - return true; - } - public bool SetApiPassword(string password) { fileConfig.Data.Client.CApi.ApiPassword = password; diff --git a/src/linker.messenger.sync/Entry.cs b/src/linker.messenger.sync/Entry.cs index dca17234..fc3f66e6 100644 --- a/src/linker.messenger.sync/Entry.cs +++ b/src/linker.messenger.sync/Entry.cs @@ -1,6 +1,5 @@ -using linker.libs.api; +using linker.libs.web; using Microsoft.Extensions.DependencyInjection; -using IApiServer = linker.messenger.api.IApiServer; namespace linker.messenger.sync { public static class Entry @@ -17,7 +16,7 @@ namespace linker.messenger.sync IMessengerResolver messengerResolver= serviceProvider.GetService(); messengerResolver.AddMessenger(new List { serviceProvider.GetService() }); - IApiServer apiServer = serviceProvider.GetService(); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); apiServer.AddPlugins(new List { serviceProvider.GetService() }); return serviceProvider; diff --git a/src/linker.messenger.sync/SyncApiController.cs b/src/linker.messenger.sync/SyncApiController.cs index ca5e4aa8..a0599a6f 100644 --- a/src/linker.messenger.sync/SyncApiController.cs +++ b/src/linker.messenger.sync/SyncApiController.cs @@ -1,5 +1,5 @@ -using linker.libs.api; -using linker.libs.extends; +using linker.libs.extends; +using linker.libs.web; using linker.messenger.api; namespace linker.messenger.sync { diff --git a/src/linker.messenger.tunnel/Entry.cs b/src/linker.messenger.tunnel/Entry.cs index 31a361f9..faaab91c 100644 --- a/src/linker.messenger.tunnel/Entry.cs +++ b/src/linker.messenger.tunnel/Entry.cs @@ -8,6 +8,7 @@ using System.Text.Json; using linker.tunnel.connection; using linker.messenger.signin.args; using linker.messenger.sync; +using linker.libs.web; namespace linker.messenger.tunnel { public static class Entry @@ -55,8 +56,8 @@ namespace linker.messenger.tunnel DecenterClientTransfer decenterClientTransfer = serviceProvider.GetService(); decenterClientTransfer.AddDecenters(new List { serviceProvider.GetService() }); - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); ExRouteTransfer exRouteTransfer = serviceProvider.GetService(); diff --git a/src/linker.messenger.tunnel/TunnelApiController.cs b/src/linker.messenger.tunnel/TunnelApiController.cs index b3756868..70778705 100644 --- a/src/linker.messenger.tunnel/TunnelApiController.cs +++ b/src/linker.messenger.tunnel/TunnelApiController.cs @@ -1,5 +1,4 @@ using linker.tunnel.transport; -using linker.libs.api; using linker.libs.extends; using System.Collections.Concurrent; using linker.messenger.signin; @@ -7,6 +6,7 @@ using linker.libs; using linker.messenger.api; using linker.tunnel.connection; using linker.tunnel; +using linker.libs.web; namespace linker.messenger.tunnel { diff --git a/src/linker.messenger.tuntap/Entry.cs b/src/linker.messenger.tuntap/Entry.cs index eaab46b0..9f33b9e3 100644 --- a/src/linker.messenger.tuntap/Entry.cs +++ b/src/linker.messenger.tuntap/Entry.cs @@ -1,5 +1,6 @@ using linker.libs; using linker.libs.extends; +using linker.libs.web; using linker.messenger.api; using linker.messenger.decenter; using linker.messenger.exroute; @@ -61,8 +62,8 @@ namespace linker.messenger.tuntap IMessengerResolver messengerResolver = serviceProvider.GetService(); messengerResolver.AddMessenger(new List { serviceProvider.GetService() }); - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); ExRouteTransfer exRouteTransfer = serviceProvider.GetService(); exRouteTransfer.AddExRoutes(new List { serviceProvider.GetService() }); diff --git a/src/linker.messenger.tuntap/TuntapApiController.cs b/src/linker.messenger.tuntap/TuntapApiController.cs index 10e2dc4c..a919775a 100644 --- a/src/linker.messenger.tuntap/TuntapApiController.cs +++ b/src/linker.messenger.tuntap/TuntapApiController.cs @@ -1,5 +1,4 @@ -using linker.libs.api; -using linker.libs.extends; +using linker.libs.extends; using System.Collections.Concurrent; using linker.tunnel.connection; using System.Net; @@ -8,6 +7,7 @@ using linker.messenger.signin; using linker.messenger.tuntap.lease; using linker.messenger.api; using linker.messenger.tuntap.messenger; +using linker.libs.web; namespace linker.messenger.tuntap { diff --git a/src/linker.messenger.updater/Entry.cs b/src/linker.messenger.updater/Entry.cs index 8ab54acd..b4aab706 100644 --- a/src/linker.messenger.updater/Entry.cs +++ b/src/linker.messenger.updater/Entry.cs @@ -1,4 +1,4 @@ -using linker.messenger.api; +using linker.libs.web; using linker.messenger.sync; using Microsoft.Extensions.DependencyInjection; namespace linker.messenger.updater @@ -30,8 +30,8 @@ namespace linker.messenger.updater SyncTreansfer syncTransfer = serviceProvider.GetService(); syncTransfer.AddSyncs(new List { serviceProvider.GetService() }); - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); return serviceProvider; } diff --git a/src/linker.messenger.updater/UpdaterApiController.cs b/src/linker.messenger.updater/UpdaterApiController.cs index 13b66c90..15359c13 100644 --- a/src/linker.messenger.updater/UpdaterApiController.cs +++ b/src/linker.messenger.updater/UpdaterApiController.cs @@ -1,7 +1,7 @@ -using linker.libs.api; -using linker.libs.extends; +using linker.libs.extends; using linker.libs; using linker.messenger.signin; +using linker.libs.web; namespace linker.messenger.updater { diff --git a/src/linker.messenger.wakeup/Entry.cs b/src/linker.messenger.wakeup/Entry.cs index 83dd91b4..f4d7b653 100644 --- a/src/linker.messenger.wakeup/Entry.cs +++ b/src/linker.messenger.wakeup/Entry.cs @@ -1,4 +1,5 @@  +using linker.libs.web; using linker.messenger.api; using Microsoft.Extensions.DependencyInjection; namespace linker.messenger.wakeup @@ -21,8 +22,8 @@ namespace linker.messenger.wakeup IMessengerResolver messengerResolver = serviceProvider.GetService(); messengerResolver.AddMessenger(new List { serviceProvider.GetService() }); - IApiServer apiServer = serviceProvider.GetService(); - apiServer.AddPlugins(new List { serviceProvider.GetService() }); + linker.messenger.api.IWebServer apiServer = serviceProvider.GetService(); + apiServer.AddPlugins(new List { serviceProvider.GetService() }); return serviceProvider; } diff --git a/src/linker.messenger.wakeup/WakeupApiController.cs b/src/linker.messenger.wakeup/WakeupApiController.cs index 555d3c1e..201a8778 100644 --- a/src/linker.messenger.wakeup/WakeupApiController.cs +++ b/src/linker.messenger.wakeup/WakeupApiController.cs @@ -1,8 +1,8 @@ -using linker.libs.api; -using linker.libs; +using linker.libs; using linker.messenger.signin; using linker.messenger.api; using linker.libs.extends; +using linker.libs.web; namespace linker.messenger.wakeup { diff --git a/src/linker.tray.win/default.aproj b/src/linker.tray.win/default.aproj index ee694c2c..a35a9f72 100644 --- a/src/linker.tray.win/default.aproj +++ b/src/linker.tray.win/default.aproj @@ -1,5 +1,5 @@  - + @@ -51,5 +51,6 @@ + diff --git a/src/linker.tray.win/dist/linker.tray.win.exe b/src/linker.tray.win/dist/linker.tray.win.exe index dae231a46048f70b41c2948cef6c2a3f9e44d8d8..6a800b7769a6ef23ba03a83b7bac903dcf140cda 100644 GIT binary patch delta 7657 zcmbVRd3aM*+CMi<+jK8LnP=4Ne4>^amBj`0(a~9v5oUZ8LG&9%M&x^My4?7Q-ydI}=a+Nd zbKdQ|=e_Sa_qKoVNLc?1N5YO}FihgTS|*b@eD6ZW7WQW0YPhx}D*xV7%&}-B2&s=D zq9lfw6sMPlU>l)A4bSUH3|OJuQQUPA+%<_krbCH z^K*auL;9|N8_72)J0jnI!$@|9$j5$fB)bxo`TOHdBrRT{pPgjtBfk$3=t?({qBRP` z3!6;ji9UsH`rbrRx+6yoZVYgwG*X!#+{BT0qZNAp4vzdiM89u0N5ZBm^IgaKIP&y( zWk7$LBRL`TstYKtr4Bbr=tJVc;gn@j$BT|H{BaAF}jKTc6NDW{NJ4_R??Zs8BMaB=q! z>Aw9h7Lr35ih``a6_P)OE41e0Lh_d+g}(T8A@M{h^kP!1uT8M(nzp5Y$j*JSB!m2r>B4p3|YvvGVNW?x_ zIESR4XGRPVO*SP7A^hX>DQOwy$K>iSpu`oj;>#tJm|_)!ljc+MW=KdssiEZg5dOnU zDX9uEaCtQ){*d{mMoQNFU2*8u(kimGYFIzoCv$gJkuzS!VDhahk{hC6o|-46qaG8o zH-aagRE3{R=1E(GLc6B&b41SrZj{ZVykMHVo0SeRBN~o_rtjoL+y9ColX) z5jfUtC+B||J{r=!;Q}cRap+v6KyGmg|G8p;R2)?3$++zT+fgLKN0~>?HSuB9FC%F-l z)Q{b8lC}^Bl5aZ64q5*SR3iT!Ce0-6sN(VQqs`>QLkhjWyoKn?6#Dq~7NSGBk;3y4 z(&~_;y|_=>QXX?T79OgJ;gUFFB3Rf+9w{eth?Qg$3kX8YWa+({7!@1kmn?_N8p)L!i1AgQRah^IZP?i zpO#?1e-2Y}BAoOy5l9o&2PLn|?HJ~@enLLzf1N>saiKZ5wq_C%K-;VRq>6 z;?iOAb6f(bPI2QDri@eEoKdD@o49cU+fH$aTtprsA7MijAPNyhh+@QSLs%8A}l9r}1Zg@G(J`uju(q&8o@Kb3sG`?0f7N=jGN~huU zr&H-voQc=bL)bi_qjxava7IVp9ot>h)97+|y*91O)9lgqvUQMUpp)RtG-@1gFY0L% zyKPzQFpJYAb|K4BnPoDt)9C|nYdVdG52w=^a0Yu)+zd*Yp}_|I$ROzHX$FqZq{Z;S zOnL{@V~_DdrmSTAELuF#FAfd$L|w6jILI9o7RAw7iQ64;_CWXS{K*N)&?0HDh+x+#OG5pQwNicln=ABwXi3b zriF)0Ed_^(&V)O1XbOC5q&XNkqlq5JX1#@4VM->w3;P=jXg2(Ls4o;!3qThA8IEhs z^aX5gayT8AO`pZSY!JT6rbn=knsVS&4t)&!sP0eL1U2%RwY4A8BLCG z2je|D5Df!mbTaCCw2T@sh0d1IgXl+FIh~&1Wm_EH%GM4s;BdKYZa7>{@0rsbG-t6` za|{Jezq`@b>T##niF%QBu@2V9df3};ZI!#-?~^xm$b7$+PnLF8&~^su7t?46ucTRE zom-Uvf9;`(u(*=WfxTXwc({@tPO@V*4JT}i=x7Qi>{3eiMJuM@8l@>1naH{Hg?PId zk}Pg`Yc8e{uBnR7XO>F8tD;NQ35w*9L&C3XlHebEXh!_nf>gfd7uz>y|%Fhlz zJ8)zbZi%~^Mo0zK)EuVN!DH*`IM}(6J{0QN!98>WdRE;*t6}A@YhvKZMZuJEET(pJ zYoC{vLgS}3li*w)X6qL#F|++pxrCO%!M!vUvZ`q~JiLVNf~*EQ7BZJoJRsI zUMhr&Hsb>!iyjcMice~$gQ)&*%~;di(wG)1F<}9*0czIL6e)czZ3_#M8S7{!ytIzC zz@VF^VnzADP4`HC4}G3Nf?ZFklC(YR=`**_*MFlW%u)_|y!dbhH)uaL(|vT_sDn{( z)<+}ZeqXSf75J%rbSfN<_=EKnQ(Tri(HRoBa4-evQ$wRka5X?@hsfbnG%V^07U^N( zA4mPKDEyOQ4(19*eLd`2O{0->SPf=C&8VRWnBF_GFPJO8LAKijU&7$WMKWHAZl}{! z*sdGERbd#f-$iGkh;9dNi5o8Mpl2q^CDYyH5*LVFKAV4-Smfvwv3#ES8660XGZuu@ zk#d}Vx@sa^-b1zU>`pxXgJmZLKHiC^yIbntMQ!pSBh~Gr&)~`+VLzQ3>30=*U3mKD@5h^l zAL{ng?FnudTU)E`5Zz5;hZb)XU+t#_Ot+MIAAOC1MgFQ4Qr0U~mmXD_^QFIxw^t>E zTjUc$GU)Bg7+CDDS{|L3osV}OYgRr7eaUtf24_0LVen9uT3RIXGsA}jf>TVH^vqg* zOLT?~4>oJAB^M92E<6A{>)JhT(e3lvdKP;;F0V}o^Sr`z81&YKgZnZ+MLOi?S20W% zeA~&-W-1^*z|UZ+z!BiLA@$Dy{~ogt_N~K{=WG}Ms+uW<{k^;$KJVq@nFZ37UcNO# zRc(MVH;`l9Hh#HEwZH(sImD;K&3CFIr7L&xfv_~4No;RoYg~S`Z>n78V;6}ovC(JK zNt=Gg-w}pNf4Q6gkSUcq_wboayw23!q+?4v9X>|~^8EI0{v#%~)YQ>r(Dy8GtP^c; zLSs*rp4-P~G4Rimbi8!)9)6>R(ZPn3e3hz8l-*B%Xl$W(jZ@r*%0y54)}IW~3IjtYynvI~rYLd5hTCh9e!zaxs1#onl9&%M-9w zi!gXM?~ry~;vb7(s=<1h{}3+S!;hDyea?q5aQF%z1+%X3BJBK}k7YVx^XGgjEN5AD$Ao4%FAC})h zrZSV+gQuy(cwu5RO}LhZMhqc8j%*AXR6T|^djtwu9^UA6YU3>z^|AwcGZM#pPV9#O{E5XgD*7i zTfn?~?s(nEOSE?NYC}P%qa%Hhuc+I{*2%te+4)w^z?Q?ZB>VKSi+t>o_9h3u!<6~l zwmRAQ8n2*LDipk*WM36qsTeGWqGUU#F7p*tN`Yj1lo}YI_JKDHGUg%XBNia4r8f*U zS3Xobdsz{#eYr3h-cbo#BfM^x&({r$!-UO~>pyvZ`#<4%o34jnRK39D^>yH5*Xr!n z`wYGH(%-{`Iwq}LuWiS7!+@uwNz3{-ZqyDb&>EmHTxepP(vfh%z%b45Mud$HRfKRo-dUs5~M+ymc53K?Pe+`u%ApdE|%dbb!zUnVvz@-()IKD`Il zYlMT0L5htM4rWITUr3)S5LSi{-Azjig;aT;5@C0t5G5593ioBIEtae->HRjr9vRzQ zMliN-97A(9ntKWpbL3Y0hg;;NkCs5<*@YyoVtXDp;{U*8DxG}@rYharo z;1di5t)>w+)Yw?0mm?8WRMZ+&7gU9PS>cd860#b$75?HAIJMtku)zhNkO7=u;P7-^ z=NIg{pm1+}0eaYJa+ono*`N*#K1N+O(x``5tv8r_Euvem4{C3P%d zn~U^WmvB0KDqaF)Cq#XAHfLBp?1RtLfLp5fvB3`_(g&M_C1EL}oM!8=h!yV^rCWsZ zXt;NmFeQewX+>*}ljCw4;OSk$f{EsQn-;(PLSY%x|*dN0xEB1#gfc zH^-dYV9CwXvgmokJi1#bjzbGJZFYX1#mqS@(igjh2cxFrkU7XJ|K`bk zt2~lp$&!C_v+-AU>^Tq;)G2cM$^k0y7WquodN20%h66z74a_(sAQmDPAr>Q+AeJJQ zA(kUnAXXx35vvfZ5o-{2heCg6u#`EP=BiMEVWG1>Be TZD&h`e9I@JMAQ71rm_D6he>9} delta 7996 zcmbVQ3s_TEw%#WM2yak%SA`Tc(UVAcoIoVXOX5C9kt05+iV)xgkdQzU1V&VR6@1$| z?eak%*1kqt(YAW5wNu-%)w$Dl+PTxIy|-06eLrS&zUkcQZKuv%Nr1%Gx!?UR-}kfk z+Uv2`UTf{gN&lI{A^qnMhn&b{mBx>C{p_1MvNJxwKNqVfsj&h2@*VmOhtJy8lB|U;_Ltf8~f5MU3L3BUT-v-I|e9n<$sR8+{ z4GJUa3<}}?FeA|iDO^$+$+;kfEoviq|6AqQg!Sn~bWH2Dl<9(VRI}bE=azp&_Y_q#q|u^cUOA1)QitV03%{SQRqDoYsCugYvBTc`N=zWK@J zipE=Vtogi=yxtbb;WyP1iP;!1sC-8vn}-AR;1(O%krtpQJY*x^j0@1JXKbWC$l;df zY~({j{cWfjf$Y9E6Hga!Jkv{d6jl3FE1D?Oy$ag_S z-Eq@K+JYQ-pEQ$gUi){U5$|7%vYDhl9`Ja}(PnaaC_t~Yv=B{cfZnpLg=C@L=)vI?kZh8JbSa2p)I_jXMHRs1s;HZZ91iB97>9y$ z@qZ2qm%>6ZYBEGFit30fC8fwWkV0Z4WyC0NTNITUI%3+0<6hHqk&{dE;iY9!>2P#e zRD)bp6U8%$Mx0cSylm7iB_(Jbk5I2vYVzo`B_tmifTiwQG8l;nwGLezxm zAHd|ih9D(Mauj9M=Sg5}qknAcc_jfdmr*kPKADRs9)`C~aY-oo5_R6~pUadW{be!s z&(CFwnK05{5{5KUyxad8Nx%;CYCj?Go_~$;_U-W7SF=*VzGF%Z^su@NNYv_t3_MCm zd#i(}u;9FZH|8ku04E-2N4wMQAu34K>Fx#9bX^sEr_*^Leq&rbyroNuhv~`D(QqSO z6Ax8`Io{vJLlop3|-oW zx6hXi`r=c3!5^Rg+r;PP+r)@gWz} zyn*t^r}&~jK7=qV=_iw*zBqQ0H$*%BPtp01$p!JL#PRUU@1pWxwqAEgmxB@XMzOoq zVRO3Li3;yHELK9i8@juJs4_=rY{-CWrVgP;%tT}(42T>=E+P++FRNy99dl&O0JkPy zWs?fB4TXgqRPNxCVE8#M9QK^!5(DGcfXfXZkpl4)mkd9giTvmWOFvL|vjPhzBzPlhzRy@G1P{_RwZa76=`4AU7am?2L*9YhXE={gJ$b~6n z%S&8WxGKBAYBlEC3gE(P+{^%lYe|Ioi@3Zo0o_GzZGh@r&rOEkUgV~Rj|f2gAU6Tx zFL5~mp%a~4(m?$s4q-$TAPNyC#4JP+!i<=Wn1d)rlpsnGWr%XbT)F;IMcG_cPENML zX0v)>VxB+T%CDs zquuIuo78q^vs1l}?S&gv^bXj*fa+3~n%A~Ty{2q-M8sy7dQe30icEyB7tjacrAitL z`zz@**p5B zuraKp`EYe99mIZ7Bh7(>%Y6NWCYlG!YUp+x|6>h3gUySpkp0G8^f~N%CxmC0)5F+D zOSv$(fW|x)z0UMtW2O8)j*hkIZ zV}nXwj(187v(N zDKKi;2KiJAoxp^3`GN`wf15WR;#bp1__~!wLDp)tTKfw+f8n$Z=?4X*LkPQ$us8UXlL2F9F3k{xo;5apniD6-r^e=&Y3 zmeNSIwn)|{U$rJV={=EwdElgzCZhaBCp{CpR0^sTH|*-b8o~v2(glnl_jb~y%D8~0 zKTaDTs~Qi#+D|h>Y9tmi4$~=MT0;-29ISu0Ku14K1${RSlfPd>4I$wpM<3`H&=e4U zMjwe7GYQW>N7K<4$9}pHwm()C1^t6{q44Z}S_~)GQYXC7j`^70M@u2n;qU3-S~HD+ z>jx+cUky;5S0oD3*UHc) zyP;j8F>rko4TG5VbXvsd8d#{`Naw)LA>0;YlO*ka?2|o5K07vy|J7`V%h_R4TRU1| zV?E6pF&g5f@9C$xz78{l?iCNA-#0hmhVVKX>azh^{nUgib^TO;oe!eV7y9Xe|8025?x@g#&2%a}xD~Cxx0yb08|&Hdmo0P( z<~w;S9e}+9DA~6aWBc+}dSo;dhTDZA5>f_mi;cwFn`*#Rr^1a@^I~BAqZm>gi-5}0 zG!tIhfW2FS5DDr*JSKy+UmrxF&v&2+=fk+D%x*d!aO~))7df~0V)}MUNA2w1j=5TG zMF(Pcq60`KfOaPpe>`{Z4qAaa=XcN&sB4%P2dTSJJbfn}#z6dLC$;=2>+tE3fU`Ru zrSX10S2m(5F4gg)N`o7_>2$^|r|+RMjetR$7 z65^A1dLNw$13#xNO14{SfKhTio^4_G(cN*VY?|TGdmlb}?92P^L)*v{fLa32jDtXj zZ@aVp<}VH0MLIZm0MGcJZlxu@;)LN-G!zyeq~_6}K6Q{j?bmKRL`z3U&mW@O|CNzQ z_+luKlm!or>MI|-Wi%3857NPZZR97J9WC~sWcK(GT$b;c2+pjp>@lgG{`CKg75geN z5l%gV_sB>&Dvr?i{K5Ef-sKuB>~N+_wjHBW6xi;38t*?$L-Mfi9a1(-&!ZLP3Hop8 z-pjzzWS1(X9*@Z}LR4GVNO&=Pae@v6*eQzNcRNt=t<$)PRHtbtj{fX4o}iwOf%RwU);PDFU9m##k{nHvOO4N=aWBwWOr2c$0)3T% zy%%WBz`0BdVxD|1lYTl)cDzVGdMv`2?R}wT;}d!~Q($55LrWs$Jsy5~XsGY@^Nlh+ z@>jk5rpU}5ycF||c}Bd0v+%ldws$xklEdRRtzGPN+TEre*y|LhLPkh!C>;HspDbVA z!mnhQEXco`pTm?u*WLUyrW}}e`3!jRZoUbJ)C2tQ843y4`3yOEkUyhj7QtIPc>%P$ z_*h8Cf3k5GzcNfwsfC0vVS@aNeSD2Vu}}+#pPrWn#c$F$nZ2Ly3Q6tJOC3#YmAwo7 z&{r(;u+@@XYV??Tl}zIV64& zUh07qQol_(@)Q18L`Uy}>vSN_avLz#u}^@fsc>OXm9rD49HpI z<1jY3`U9WDwD_BD_^%&$Ez<@WH~DqpE@wBskJ@3+O+HCJdy~&sfNq?S1hw<3R1m`m zHTPW?(&c_e*cJlUfY(N_Yuz1Ihbboy4o3=8!5S)@h5F_A;8+kTO!kSu)G%QK(+-b^ z3C}}%m|%vF!-ZV9Vicpn5+Niat2RRDfb}XN5q=RNM8TgTgeCAB6^j&LR6g_6QNkrCI>{%( zE78KMuqqbEhGK+QATLfx26rs>Bt}S*g*ai5fpZgZ@XL7N`&iqkm)_5Uc3^&k7F6Se zDe&*{C|x#A2xlS+YWw;$o)v}yxq7@1!(d{p6NF4$woiKh1R)D*6NNPR!vtYYZ1-&p z79^rUemu_UNfew#4IVrP3JMBx^R;ZRx1Yxuv$M5qwddADp}NKDlCa#W?^?~4G&V~3 zwbm<7P7+N1`*mfqkTG_t)+7sCnAnk+nP#}W_a(fWBD|w$wZX|$OsY0bNQdSEF?P0A zJ4>>=rM0a#O{OMO@``#R-PhOZuC!Ka#s;)~ePjJ1bM^=YAEgS}@Ku5sD`%z&^BJZ= zcBBiD3RQzgUzMfRNWk2OC(FT!!u?Fc6NX8GBCXEjeL*kQmuNNB7@oiuZG*$f^HQ=# ze}+)k)@o<1vAQzKJmxwNTj7ljms6O}Y1vX3$PlK+m3i1D9ZgpJ{wwu3Ocj99$bxGb z!p7*OfjLT{JyYP6Js$H?`H4&+Lg_ocLpUy1u5RRMod0N+54-qf40L8%gn{p;crhQb z08xopD1Set>d%)$o7b^YF1-Ex;v`W1v#KAq|Fddig!=Q-TR(-<>(!?;VjTk?Fk&K{ zX2eRSSq@c*S_XIU%n&g%+@^79*ReKO79xI|&}`O7W+&@1cWKSDy|IT{rI@MGx+G7R z%P|W!Dn<45kps$OcJ=kC-446Q)2p84Fgv8~jAc?owX?BJ@@Smw3QsMZQi_LUF;qO1 z6aA_0asA2g-Jdz>=~`V zX6SH=lbL4k-BTI57K_0IbslkIqM;x=x1Q~AHK=QD+UuR*^)5?(W`znKFG)RF`{JH<4mQ>!)kNp>qA2cAwbhjGFaouV++XKY>l zEUdycdaD786!p<2W~b3VX_H3F!qwF@HJZgldEG!+8<<_<3mBUJc8S`F%^EE_Zjf@Z zLB;Mdv37m+awv9*NwCB%E`)DgVgbDG7N_BBL+KHxhN2?d4KqFBBpj*qh_e^?7w2=q z?ACX7Nv>Y6JAHlrm7+7=DKI2!-5xAt&S#*hxPuXlp`ms6_Jaq^E206>h-gAc2%B8DzxmX$h!p%W-20azPb_aqRxtRzxFlkZ?5Sw^e2f^PEluO# J+VYly{{h$8+|U33 diff --git a/src/linker.tray.win/full.aardio b/src/linker.tray.win/full.aardio index 0705beab..cd0e6c07 100644 --- a/src/linker.tray.win/full.aardio +++ b/src/linker.tray.win/full.aardio @@ -1,6 +1,6 @@ import win.ui; /*DSG{{*/ -var winform = win.form(text="linker 管理";right=849;bottom=739;max=false;min=1;topmost=1) +var winform = win.form(text="linker 管理";right=849;bottom=739;max=false;topmost=1) winform.add() /*}}*/ diff --git a/src/linker.tray.win/net.aardio b/src/linker.tray.win/net.aardio index 2c129715..28e00741 100644 --- a/src/linker.tray.win/net.aardio +++ b/src/linker.tray.win/net.aardio @@ -1,6 +1,6 @@ import win.ui; /*DSG{{*/ -var winform = win.form(text="linker 管理(简单)";right=399;bottom=639;border="thin";max=false;min=1;topmost=1) +var winform = win.form(text="linker 管理(简单)";right=399;bottom=639;border="thin";max=false;topmost=1) winform.add() /*}}*/ diff --git a/src/linker.tray.win/web/css/106.f841026b.css b/src/linker.tray.win/web/css/226.638ce524.css similarity index 92% rename from src/linker.tray.win/web/css/106.f841026b.css rename to src/linker.tray.win/web/css/226.638ce524.css index 8b9b4f4b..161d0855 100644 --- a/src/linker.tray.win/web/css/106.f841026b.css +++ b/src/linker.tray.win/web/css/226.638ce524.css @@ -1 +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-4f910b78]{opacity:0;position:absolute;z-index:-1}.head[data-v-4f910b78]{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-4f910b78]{padding:.5rem 0 0 1rem;height:4.5rem}.head .logo img[data-v-4f910b78]{vertical-align:top;height:4rem}.head .menu[data-v-4f910b78]{padding-left:1rem;font-size:1.4rem}.head .menu li[data-v-4f910b78]{box-sizing:border-box;padding:.5rem 0;margin-right:.2rem}.head .menu a[data-v-4f910b78]{display:block;color:#333;padding:0 1rem;line-height:4rem;height:4rem}.head .menu a.router-link-active[data-v-4f910b78],.head .menu a[data-v-4f910b78]:hover{background-color:rgba(0,0,0,.1);font-weight:700;border-radius:4px}.head .menu a img[data-v-4f910b78]{height:2rem;margin-right:.2rem;margin-top:1rem}.head .menu a span[data-v-4f910b78]{vertical-align:top}.head .select[data-v-4f910b78]{padding-right:1rem}.head .select .el-dropdown[data-v-4f910b78]{vertical-align:middle}.head .select .el-dropdown .el-icon[data-v-4f910b78]{vertical-align:bottom;font-size:2rem}.head .locale[data-v-4f910b78]{padding-right:1rem}.head .locale .el-dropdown[data-v-4f910b78]{vertical-align:middle}.head .locale .el-dropdown .el-icon[data-v-4f910b78]{vertical-align:bottom}.head .image[data-v-4f910b78]{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-a463299c]{text-align:left}.status-export-wrap[data-v-fe801996]{padding-right:1rem}.status-export-wrap a[data-v-fe801996]{color:#333}.status-export-wrap a .el-icon[data-v-fe801996]{vertical-align:sub}.status-export-wrap .el-col[data-v-fe801996]{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-646b1688]{padding:1rem 0 0 0}.footer[data-v-646b1688]{padding:1rem 0}.phone .el-dialog__body .el-col .el-form-item[data-v-646b1688]: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 +#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-4f910b78]{opacity:0;position:absolute;z-index:-1}.head[data-v-4f910b78]{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-4f910b78]{padding:.5rem 0 0 1rem;height:4.5rem}.head .logo img[data-v-4f910b78]{vertical-align:top;height:4rem}.head .menu[data-v-4f910b78]{padding-left:1rem;font-size:1.4rem}.head .menu li[data-v-4f910b78]{box-sizing:border-box;padding:.5rem 0;margin-right:.2rem}.head .menu a[data-v-4f910b78]{display:block;color:#333;padding:0 1rem;line-height:4rem;height:4rem}.head .menu a.router-link-active[data-v-4f910b78],.head .menu a[data-v-4f910b78]:hover{background-color:rgba(0,0,0,.1);font-weight:700;border-radius:4px}.head .menu a img[data-v-4f910b78]{height:2rem;margin-right:.2rem;margin-top:1rem}.head .menu a span[data-v-4f910b78]{vertical-align:top}.head .select[data-v-4f910b78]{padding-right:1rem}.head .select .el-dropdown[data-v-4f910b78]{vertical-align:middle}.head .select .el-dropdown .el-icon[data-v-4f910b78]{vertical-align:bottom;font-size:2rem}.head .locale[data-v-4f910b78]{padding-right:1rem}.head .locale .el-dropdown[data-v-4f910b78]{vertical-align:middle}.head .locale .el-dropdown .el-icon[data-v-4f910b78]{vertical-align:bottom}.head .image[data-v-4f910b78]{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-a463299c]{text-align:left}.status-export-wrap[data-v-5ab6aefb]{padding-right:1rem}.status-export-wrap a[data-v-5ab6aefb]{color:#333}.status-export-wrap a .el-icon[data-v-5ab6aefb]{vertical-align:sub}.status-export-wrap .el-col[data-v-5ab6aefb]{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-1a11279e]{padding:1rem 0 0 0}.footer[data-v-1a11279e]{padding:1rem 0}.phone .el-dialog__body .el-col .el-form-item[data-v-1a11279e]: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.tray.win/web/css/663.6fe624be.css b/src/linker.tray.win/web/css/519.298416a4.css similarity index 96% rename from src/linker.tray.win/web/css/663.6fe624be.css rename to src/linker.tray.win/web/css/519.298416a4.css index 0a595307..7f11a61a 100644 --- a/src/linker.tray.win/web/css/663.6fe624be.css +++ b/src/linker.tray.win/web/css/519.298416a4.css @@ -1 +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}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 .status-wrap{background-color:hsla(0,0%,100%,.5)}body.sunny .head-wrap{background-color:hsla(0,0%,100%,.7)}body.sunny .net-list-wrap ul li,body.sunny .net-wrap{background-color:hsla(0,0%,98%,.5)}.head-wrap[data-v-6bfe19a3]{background-color:#fafafa;padding:1rem;border-bottom:1px solid #ddd;box-shadow:1px 2px 3px rgba(0,0,0,.05);font-size:1.4rem}.head-wrap span.label[data-v-6bfe19a3]{line-height:2.4rem;margin-right:.6rem;color:#555}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}.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)}}.net-list-wrap ul[data-v-68d1c30a]{padding:2rem 2rem 1rem 2rem}.net-list-wrap ul li[data-v-68d1c30a]{margin-bottom:1rem;border:1px solid #ddd;background-color:#fff;font-size:1.3rem;border-radius:.4rem}.net-list-wrap ul li dt[data-v-68d1c30a]{padding:.6rem;border-bottom:1px solid #ddd}.net-list-wrap ul li dd.tuntap[data-v-68d1c30a]{padding:1rem;position:relative}.net-list-wrap .page[data-v-68d1c30a]{padding:.6rem 0;border-top:1px solid #ddd;background-color:hsla(0,0%,98%,.5);box-shadow:-1px -2px 3px rgba(0,0,0,.05)}.net-list-wrap .page-wrap[data-v-68d1c30a]{display:inline-block}.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-a463299c]{text-align:left}.status-export-wrap[data-v-fe801996]{padding-right:1rem}.status-export-wrap a[data-v-fe801996]{color:#333}.status-export-wrap a .el-icon[data-v-fe801996]{vertical-align:sub}.status-export-wrap .el-col[data-v-fe801996]{text-align:left}.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}.net-wrap[data-v-6a3f3b43]{box-sizing:border-box;background-color:#fafafa;border:1px solid #d0d7de;width:calc(100% - 40px);height:calc(100% - 40px);position:absolute;left:20px;top:20px} \ No newline at end of file +#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}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 .status-wrap{background-color:hsla(0,0%,100%,.5)}body.sunny .head-wrap{background-color:hsla(0,0%,100%,.7)}body.sunny .net-list-wrap ul li,body.sunny .net-wrap{background-color:hsla(0,0%,98%,.5)}.head-wrap[data-v-6bfe19a3]{background-color:#fafafa;padding:1rem;border-bottom:1px solid #ddd;box-shadow:1px 2px 3px rgba(0,0,0,.05);font-size:1.4rem}.head-wrap span.label[data-v-6bfe19a3]{line-height:2.4rem;margin-right:.6rem;color:#555}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}.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)}}.net-list-wrap ul[data-v-68d1c30a]{padding:2rem 2rem 1rem 2rem}.net-list-wrap ul li[data-v-68d1c30a]{margin-bottom:1rem;border:1px solid #ddd;background-color:#fff;font-size:1.3rem;border-radius:.4rem}.net-list-wrap ul li dt[data-v-68d1c30a]{padding:.6rem;border-bottom:1px solid #ddd}.net-list-wrap ul li dd.tuntap[data-v-68d1c30a]{padding:1rem;position:relative}.net-list-wrap .page[data-v-68d1c30a]{padding:.6rem 0;border-top:1px solid #ddd;background-color:hsla(0,0%,98%,.5);box-shadow:-1px -2px 3px rgba(0,0,0,.05)}.net-list-wrap .page-wrap[data-v-68d1c30a]{display:inline-block}.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-a463299c]{text-align:left}.status-export-wrap[data-v-5ab6aefb]{padding-right:1rem}.status-export-wrap a[data-v-5ab6aefb]{color:#333}.status-export-wrap a .el-icon[data-v-5ab6aefb]{vertical-align:sub}.status-export-wrap .el-col[data-v-5ab6aefb]{text-align:left}.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}.net-wrap[data-v-6a3f3b43]{box-sizing:border-box;background-color:#fafafa;border:1px solid #d0d7de;width:calc(100% - 40px);height:calc(100% - 40px);position:absolute;left:20px;top:20px} \ No newline at end of file diff --git a/src/linker.tray.win/web/css/app.bb3197c7.css b/src/linker.tray.win/web/css/app.af897554.css similarity index 94% rename from src/linker.tray.win/web/css/app.bb3197c7.css rename to src/linker.tray.win/web/css/app.af897554.css index 6665fada..408baf89 100644 --- a/src/linker.tray.win/web/css/app.bb3197c7.css +++ b/src/linker.tray.win/web/css/app.af897554.css @@ -1 +1 @@ -.status-api-wrap[data-v-08aa73f8]{padding-right:2rem}.status-api-wrap a[data-v-08aa73f8]{color:#333}.status-api-wrap span[data-v-08aa73f8]{border-radius:1rem;background-color:rgba(0,0,0,.1);padding:0 .6rem;margin-left:.2rem}.status-api-wrap.connected a[data-v-08aa73f8]{color:green;font-weight:700}.status-api-wrap.connected span[data-v-08aa73f8]{background-color:green;color:#fff}.status-api-wrap .el-icon[data-v-08aa73f8]{vertical-align:text-top}.refresh-wrap[data-v-dfc7a2f2]{position:fixed;left:50%;top:1rem;transform:translateX(-50%);border-radius:.4rem;background-color:#fff;padding:.4rem;border:1px solid #ddd;box-shadow:0 0 1rem rgba(0,0,0,.1);z-index:9999999}*{margin:0;padding:0;list-style:none}a{text-decoration:none;color:#666;background-image:linear-gradient(92deg,red,#ff9000,#ffdc00,#23bf08,#00ffb2,#0072ff,#fd00ff);background-size:0 2px;background-position:0 100%;background-repeat:no-repeat;transition:.3s}a:hover{background-size:100% 2px;background-position:100% 100%}:root{--foot-menu-dropdown-color:#f5f5f5}a.a-line{text-decoration:underline}.ellipsis{overflow:hidden;text-overflow:ellipsis;max-width:100%}.ellipsis,.nowrap{white-space:nowrap}.flex{display:flex;display:-ms-flex;display:-o-flex;flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.flex-1{flex:1 1 0%}.absolute{position:absolute;left:0;top:0;right:0;bottom:0}.relative{position:relative}.h-100{height:100%}.w-100{width:100%}.t-c{text-align:center}.t-r{text-align:right}.t-l{text-align:left!important}.pdl-6{padding-left:.6rem}.pdb-6{padding-bottom:.6rem}.pdl-10{padding-left:1rem}.pdl-20{padding-left:2rem}.pdt-10{padding-top:1rem}.pdr-10{padding-right:1rem}.mgr-1{margin-right:1rem!important}.mgl-1{margin-left:1rem}.mgl-2{margin-left:2rem}.mgl-3{margin-left:3rem}.mgb-0{margin-bottom:0!important}.mgb-3{margin-bottom:3rem}.mgt-1{margin-top:1rem}.mgt-2{margin-top:2rem}.mgt-3{margin-top:3rem}table{border-spacing:0;border-collapse:collapse}html{font-size:10px;background-color:#f4f4f4}body{overflow:hidden}span.split{width:.6rem}span.split-pad{padding:0 .3rem}span.split-pad10{padding:0 1rem}.middle{vertical-align:middle}.red{color:red!important}.green{color:green!important}.app-nat{color:#018a81!important}.yellow{color:#e68906!important}.disable{color:#ddd!important}.gateway{&.green{transition:.3s;&:hover{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)}}}.scrollbar,.scrollbar-1,.scrollbar-10,.scrollbar-4{overflow:auto}.scrollbar-1::-webkit-scrollbar{width:0;height:1px}.scrollbar-1::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}.scrollbar::-webkit-scrollbar{width:1px;height:1px}.scrollbar::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}.scrollbar-4::-webkit-scrollbar{width:4px;height:4px}.scrollbar-4::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}.scrollbar-10::-webkit-scrollbar{width:10px;height:1px}.scrollbar-10::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}:root{--el-color-primary:var(--el-color-success)!important;--el-color-primary-light-3:var(--el-color-success-light-3)!important;--el-color-primary-light-5:var(--el-color-success-light-5)!important;--el-color-primary-light-7:var(--el-color-success-light-7)!important;--el-color-primary-light-8:var(--el-color-success-light-8)!important;--el-color-primary-light-9:var(--el-color-success-light-9)!important;--el-color-primary-dark-2:var(--el-color-success-dark-2)!important}.el-table{--el-table-header-text-color:var(--el-text-color-regular)!important}.el-input-number--small{width:100%!important}.el-table .cell{overflow:visible!important}.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar{background:#f5f5f5}.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb{background:#ddd}.el-collapse-item__header{background-color:#fafafa!important;border-left:1px solid #ebeef5;border-right:1px solid #ebeef5;padding:0 2rem}.el-collapse-item__content{padding:1rem;border:1px solid #ebeef5;border-bottom:0}.el-input.w-search,.el-input.w-search .el-input__inner,.el-select.w-search{width:10rem}.el-form-item.w-search .el-form-item__label{font-size:1.2rem}.table-search .el-form--inline .el-form-item{margin-bottom:0}.el-dropdown,.el-dropdown-menu__item{font-size:1.3rem}.el-dropdown-menu__item a{color:#333}.el-input__inner:focus{border-color:var(--main-color)}.el-date-editor.el-input.w-auto,.el-date-editor.el-input__inner.w-auto{width:auto}.el-table .active-row{background:rgba(0,0,0,.15)}.el-table .table-green-row{background:rgba(0,255,0,.15)}.el-table .table-red-row{background:rgba(255,0,0,.15)}.el-table .table-green-row td,.el-table .table-red-row td{background:transparent!important}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:auto}.el-table .active-row td{background:transparent!important}.el-table--border th{background-color:#fafafa}.el-table thead.is-group th.el-table__cell{background:var(--el-table-header-bg-color)!important}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:var(--main-color)}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:var(--main-color)}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{width:inherit}.el-dialog{max-width:96%}.el-dialog__body .el-form-item:last-child{margin-bottom:0}.el-input-group__append,.el-input-group__prepend{padding:0 6px!important}.el-checkbox__label .el-icon{vertical-align:middle;margin-top:-2px}.el-color-picker{vertical-align:middle}.el-color-picker__trigger{border:0!important}.el-color-picker__color{border:0!important;border-radius:2px}.el-color-picker__color-inner{border-radius:2px}.el-message{min-width:10rem!important}.card-header{font-size:1.4rem}.forward-wrap .el-table--small.el-table .el-table__expanded-cell[class*=cell]{padding:20px 50px 20px 50px}h3.title{font-size:1.6rem;padding-bottom:.6rem;color:#555}.el-message-box{max-width:90%!important;width:-moz-fit-content!important;width:fit-content!important}.el-select-dropdown__item{padding-right:2rem!important}.el-form-item--default{--font-size:13px!important}.el-input__inner{font-size:13px}.el-input.success .el-input__wrapper{box-shadow:inset 0 0 0 1px green}.el-input.error .el-input__wrapper{box-shadow:inset 0 0 0 1px #f60}.el-dialog--center .el-dialog__body{padding-top:1rem!important;padding-bottom:1rem!important}@media screen and (max-width:1000px){body .phone-hide{display:none}} \ No newline at end of file +.status-api-wrap[data-v-96156712]{padding-right:2rem}.status-api-wrap a[data-v-96156712]{color:#333}.status-api-wrap span[data-v-96156712]{border-radius:1rem;background-color:rgba(0,0,0,.1);padding:0 .6rem;margin-left:.2rem}.status-api-wrap.connected a[data-v-96156712]{color:green;font-weight:700}.status-api-wrap.connected span[data-v-96156712]{background-color:green;color:#fff}.status-api-wrap .el-icon[data-v-96156712]{vertical-align:text-top}.refresh-wrap[data-v-dfc7a2f2]{position:fixed;left:50%;top:1rem;transform:translateX(-50%);border-radius:.4rem;background-color:#fff;padding:.4rem;border:1px solid #ddd;box-shadow:0 0 1rem rgba(0,0,0,.1);z-index:9999999}*{margin:0;padding:0;list-style:none}a{text-decoration:none;color:#666;background-image:linear-gradient(92deg,red,#ff9000,#ffdc00,#23bf08,#00ffb2,#0072ff,#fd00ff);background-size:0 2px;background-position:0 100%;background-repeat:no-repeat;transition:.3s}a:hover{background-size:100% 2px;background-position:100% 100%}:root{--foot-menu-dropdown-color:#f5f5f5}a.a-line{text-decoration:underline}.ellipsis{overflow:hidden;text-overflow:ellipsis;max-width:100%}.ellipsis,.nowrap{white-space:nowrap}.flex{display:flex;display:-ms-flex;display:-o-flex;flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.flex-1{flex:1 1 0%}.absolute{position:absolute;left:0;top:0;right:0;bottom:0}.relative{position:relative}.h-100{height:100%}.w-100{width:100%}.t-c{text-align:center}.t-r{text-align:right}.t-l{text-align:left!important}.pdl-6{padding-left:.6rem}.pdb-6{padding-bottom:.6rem}.pdl-10{padding-left:1rem}.pdl-20{padding-left:2rem}.pdt-10{padding-top:1rem}.pdr-10{padding-right:1rem}.mgr-1{margin-right:1rem!important}.mgl-1{margin-left:1rem}.mgl-2{margin-left:2rem}.mgl-3{margin-left:3rem}.mgb-0{margin-bottom:0!important}.mgb-3{margin-bottom:3rem}.mgt-1{margin-top:1rem}.mgt-2{margin-top:2rem}.mgt-3{margin-top:3rem}table{border-spacing:0;border-collapse:collapse}html{font-size:10px;background-color:#f4f4f4}body{overflow:hidden}span.split{width:.6rem}span.split-pad{padding:0 .3rem}span.split-pad10{padding:0 1rem}.middle{vertical-align:middle}.red{color:red!important}.green{color:green!important}.app-nat{color:#018a81!important}.yellow{color:#e68906!important}.disable{color:#ddd!important}.gateway{&.green{transition:.3s;&:hover{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)}}}.scrollbar,.scrollbar-1,.scrollbar-10,.scrollbar-4{overflow:auto}.scrollbar-1::-webkit-scrollbar{width:0;height:1px}.scrollbar-1::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}.scrollbar::-webkit-scrollbar{width:1px;height:1px}.scrollbar::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}.scrollbar-4::-webkit-scrollbar{width:4px;height:4px}.scrollbar-4::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}.scrollbar-10::-webkit-scrollbar{width:10px;height:1px}.scrollbar-10::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:10px}:root{--el-color-primary:var(--el-color-success)!important;--el-color-primary-light-3:var(--el-color-success-light-3)!important;--el-color-primary-light-5:var(--el-color-success-light-5)!important;--el-color-primary-light-7:var(--el-color-success-light-7)!important;--el-color-primary-light-8:var(--el-color-success-light-8)!important;--el-color-primary-light-9:var(--el-color-success-light-9)!important;--el-color-primary-dark-2:var(--el-color-success-dark-2)!important}.el-table{--el-table-header-text-color:var(--el-text-color-regular)!important}.el-input-number--small{width:100%!important}.el-table .cell{overflow:visible!important}.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar{background:#f5f5f5}.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb{background:#ddd}.el-collapse-item__header{background-color:#fafafa!important;border-left:1px solid #ebeef5;border-right:1px solid #ebeef5;padding:0 2rem}.el-collapse-item__content{padding:1rem;border:1px solid #ebeef5;border-bottom:0}.el-input.w-search,.el-input.w-search .el-input__inner,.el-select.w-search{width:10rem}.el-form-item.w-search .el-form-item__label{font-size:1.2rem}.table-search .el-form--inline .el-form-item{margin-bottom:0}.el-dropdown,.el-dropdown-menu__item{font-size:1.3rem}.el-dropdown-menu__item a{color:#333}.el-input__inner:focus{border-color:var(--main-color)}.el-date-editor.el-input.w-auto,.el-date-editor.el-input__inner.w-auto{width:auto}.el-table .active-row{background:rgba(0,0,0,.15)}.el-table .table-green-row{background:rgba(0,255,0,.15)}.el-table .table-red-row{background:rgba(255,0,0,.15)}.el-table .table-green-row td,.el-table .table-red-row td{background:transparent!important}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:auto}.el-table .active-row td{background:transparent!important}.el-table--border th{background-color:#fafafa}.el-table thead.is-group th.el-table__cell{background:var(--el-table-header-bg-color)!important}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:var(--main-color)}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:var(--main-color)}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{width:inherit}.el-dialog{max-width:96%}.el-dialog__body .el-form-item:last-child{margin-bottom:0}.el-input-group__append,.el-input-group__prepend{padding:0 6px!important}.el-checkbox__label .el-icon{vertical-align:middle;margin-top:-2px}.el-color-picker{vertical-align:middle}.el-color-picker__trigger{border:0!important}.el-color-picker__color{border:0!important;border-radius:2px}.el-color-picker__color-inner{border-radius:2px}.el-message{min-width:10rem!important}.card-header{font-size:1.4rem}.forward-wrap .el-table--small.el-table .el-table__expanded-cell[class*=cell]{padding:20px 50px 20px 50px}h3.title{font-size:1.6rem;padding-bottom:.6rem;color:#555}.el-message-box{max-width:90%!important;width:-moz-fit-content!important;width:fit-content!important}.el-select-dropdown__item{padding-right:2rem!important}.el-form-item--default{--font-size:13px!important}.el-input__inner{font-size:13px}.el-input.success .el-input__wrapper{box-shadow:inset 0 0 0 1px green}.el-input.error .el-input__wrapper{box-shadow:inset 0 0 0 1px #f60}.el-dialog--center .el-dialog__body{padding-top:1rem!important;padding-bottom:1rem!important}@media screen and (max-width:1000px){body .phone-hide{display:none}} \ No newline at end of file diff --git a/src/linker.tray.win/web/index.html b/src/linker.tray.win/web/index.html index f0493b72..a27e69fb 100644 --- a/src/linker.tray.win/web/index.html +++ b/src/linker.tray.win/web/index.html @@ -1 +1 @@ -linker.web
\ No newline at end of file +linker.web
\ No newline at end of file diff --git a/src/linker.tray.win/web/js/106.7141ec35.js b/src/linker.tray.win/web/js/106.7141ec35.js deleted file mode 100644 index ae5715b8..00000000 --- a/src/linker.tray.win/web/js/106.7141ec35.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[106],{55112:function(e,l,a){a.r(l),a.d(l,{default:function(){return fl}});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"},n={class:"home absolute"},s={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",n,[(0,r.bF)(f)])],512),(0,r.Lk)("div",s,[(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-4f910b78"),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"},V={key:0,class:"flex"},K=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},x=h((()=>(0,r.Lk)("img",{src:v},null,-1))),W={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},I=h((()=>(0,r.Lk)("img",{src:k},null,-1))),j={key:1,class:"flex"},$={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:k},null,-1))),M=h((()=>(0,r.Lk)("img",{src:F},null,-1))),Z={key:0,class:"select"},ee={class:"el-dropdown-link"},le=h((()=>(0,r.Lk)("img",{src:c,height:"20",style:{"vertical-align":"text-top"}},null,-1))),ae=h((()=>(0,r.Lk)("img",{src:f,height:"20",style:{"vertical-align":"text-top"}},null,-1))),re=h((()=>(0,r.Lk)("img",{src:v,height:"20",style:{"vertical-align":"text-top"}},null,-1))),te=h((()=>(0,r.Lk)("img",{src:p,height:"20",style:{"vertical-align":"text-top"}},null,-1))),oe=h((()=>(0,r.Lk)("img",{src:b,height:"20",style:{"vertical-align":"text-top"}},null,-1))),ue=h((()=>(0,r.Lk)("img",{src:k,height:"20",style:{"vertical-align":"text-top"}},null,-1))),ne={key:1,class:"locale"},se={class:"el-dropdown-link"},de={key:2,class:"image"};function me(e,l,a,t,o,u){const n=(0,r.g2)("router-link"),s=(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)(n,{to:{name:"FullIndex"}},{default:(0,r.k6)((()=>[y])),_:1})]),(0,r.Lk)("div",S,[t.globalData.isPc?((0,r.uX)(),(0,r.CE)("ul",V,[(0,r.Lk)("li",null,[(0,r.bF)(n,{to:{name:"FullIndex"}},{default:(0,r.k6)((()=>[K,(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)(n,{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)(n,{to:{name:"FullTransport"}},{default:(0,r.k6)((()=>[x,(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",W,[(0,r.bF)(n,{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)(n,{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.hasFirewall?((0,r.uX)(),(0,r.CE)("li",A,[(0,r.bF)(n,{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)(n,{to:{name:"FullLogger"}},{default:(0,r.k6)((()=>[I,(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",j,["FullIndex"==t.route.name?((0,r.uX)(),(0,r.CE)("li",$,[(0,r.bF)(n,{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)(n,{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)(n,{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)(n,{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)(n,{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.hasLogger&&"FullLogger"==t.route.name?((0,r.uX)(),(0,r.CE)("li",H,[(0,r.bF)(n,{to:{name:"FullLogger"}},{default:(0,r.k6)((()=>[Y,(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))},[M,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.refresh")),1)])])]))]),t.globalData.isPhone?((0,r.uX)(),(0,r.CE)("div",Z,[(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)(n,{to:{name:"FullIndex"}},{default:(0,r.k6)((()=>[le,(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)(n,{to:{name:"FullServers"}},{default:(0,r.k6)((()=>[ae,(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)(n,{to:{name:"FullTransport"}},{default:(0,r.k6)((()=>[re,(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)(n,{to:{name:"FullAction"}},{default:(0,r.k6)((()=>[te,(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)(n,{to:{name:"FullFirewall"}},{default:(0,r.k6)((()=>[oe,(0,r.eW)(" "+(0,m.v_)(e.$t("head.firewall")),1)])),_:1})])),_:1})):(0,r.Q3)("",!0),t.hasLogger?((0,r.uX)(),(0,r.Wv)(i,{key:4},{default:(0,r.k6)((()=>[(0,r.bF)(n,{to:{name:"FullLogger"}},{default:(0,r.k6)((()=>[ue,(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",ee,[(0,r.bF)(d,null,{default:(0,r.k6)((()=>[(0,r.bF)(s)])),_:1})])])),_:1})])):(0,r.Q3)("",!0),t.globalData.isPc?((0,r.uX)(),(0,r.CE)("div",ne,[(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",se,[(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",de,[(0,r.bF)(p,{name:"full"})])):(0,r.Q3)("",!0)])])}var ie=a(57477),ce=a(53830),fe=a(90144),ve=a(5096),pe=a(49287),be=a(22773),ge=a(81387),ke={components:{Background:ve.A,Operation:ie.IaS,ArrowDown:ie.yd$},setup(){const e=(0,ge.lq)(),l=(0,ce.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"))),n=(0,r.EW)((()=>l.value.hasAccess("Group"))),s=(0,r.EW)((()=>l.value.hasAccess("FirewallSelf"))),d=(0,fe.KR)(pe.Y),{changeLocale:m,currentLocale:i}=(0,be.A)(),c=(0,r.EW)({get(){return i.value},set(e){m(e)}}),f=e=>{c.value=e},v=()=>{window.location.reload()};return{route:e,globalData:l,hasConfig:a,hasGroup:n,hasLogger:t,hasTransport:o,hasAction:u,hasFirewall:s,localeOptions:d,locale:c,handleLocale:f,refresh:v}}},Fe=a(71241);const he=(0,Fe.A)(ke,[["render",me],["__scopeId","data-v-4f910b78"]]);var we=he,_e=a(24722);function ye(e,l,a,t,o,u){const n=(0,r.g2)("Input"),s=(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)(s,{label:"手动输入"},{default:(0,r.k6)((()=>[(0,r.bF)(n)])),_:1}),(0,r.bF)(s,{label:"粘贴配置"},{default:(0,r.k6)((()=>[(0,r.bF)(d)])),_:1}),(0,r.bF)(s,{label:"在线导入"},{default:(0,r.k6)((()=>[(0,r.bF)(m)])),_:1})])),_:1})])])),_:1},8,["modelValue"])])}const Se=e=>((0,r.Qi)("data-v-ce07310a"),e=e(),(0,r.jt)(),e),Ve={class:"head"},Ke={class:"body"},Ce=Se((()=>(0,r.Lk)("div",{class:"t-c"},"完成保存后,请重启软件",-1))),Le={class:"footer t-c"};function Pe(e,l,a,t,o,u){const n=(0,r.g2)("el-step"),s=(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",Ve,[(0,r.bF)(s,{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)(n,{title:e},null,8,["title"])))),256))])),_:1},8,["active"])]),(0,r.Lk)("div",Ke,[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)((()=>[Ce])),_:1})):(0,r.Q3)("",!0)]),(0,r.Lk)("div",Le,[(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 xe=a(88835),We=a(51219);const Xe={class:"t-c"};function Ee(e,l,a,t,o,u){const n=(0,r.g2)("el-checkbox");return(0,r.uX)(),(0,r.CE)("div",Xe,[(0,r.bF)(n,{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)(n,{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 Qe={name:"Common",setup(){const e=(0,ce.B)(),l=(0,r.WQ)("step"),a=(0,fe.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))}}):(We.nk.error("请选择客户端或服务端"),l())}));return{state:a,globalData:e,handleValidate:t}}};const Ae=(0,Fe.A)(Qe,[["render",Ee]]);var Ue=Ae;const De=e=>((0,r.Qi)("data-v-646b1688"),e=e(),(0,r.jt)(),e),Ie=De((()=>(0,r.Lk)("div",{class:"t-c w-100"},[(0,r.Lk)("p",null,"端口为0不监听,相同分组之间的客户端相互可见")],-1)));function je(e,l,a,t,o,u){const n=(0,r.g2)("el-form-item"),s=(0,r.g2)("el-input"),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)((()=>[Ie])),_:1}),(0,r.bF)(n,{label:"","label-width":"0"},{default:(0,r.k6)((()=>[(0,r.bF)(m,null,{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}),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)])),_: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,null,{default:(0,r.k6)((()=>[(0,r.bF)(d,{sm:12,xs:24},{default:(0,r.k6)((()=>[(0,r.bF)(n,{label:"接口端口",prop:"api"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{modelValue:t.state.form.api,"onUpdate:modelValue":l[2]||(l[2]=e=>t.state.form.api=e)},null,8,["modelValue"])])),_:1})])),_:1}),(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[3]||(l[3]=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,null,{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[4]||(l[4]=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[5]||(l[5]=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,null,{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[6]||(l[6]=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,null,{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[7]||(l[7]=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[8]||(l[8]=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,null,{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[9]||(l[9]=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[10]||(l[10]=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,null,{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[11]||(l[11]=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 $e={setup(e){const l=(0,r.WQ)("step"),a=(0,ce.B)(),t=(0,fe.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,api:l.value.form.client.api||a.value.config.Client.CApi.ApiPort,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"}],api:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}],web:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}]}}),o=(0,fe.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,api:+t.form.api,web:+t.form.web,password:t.form.password,hasServer:t.form.hasServer,server:t.form.server,serverSecretKey:t.form.serverSecretKey,sForwardSecretKey:t.form.sForwardSecretKey,relaySecretKey:t.form.relaySecretKey,updaterSecretKey:t.form.updaterSecretKey}},form:{client:JSON.parse(JSON.stringify(t.form))}}):l()}))}));return(0,r.sV)((()=>{0==l.value.json.Common.client&&(l.value.step+=l.value.increment)})),{state:t,globalData:a,handleValidate:u,formDom:o}}};const qe=(0,Fe.A)($e,[["render",je],["__scopeId","data-v-646b1688"]]);var Ne=qe;const Oe=e=>((0,r.Qi)("data-v-8d4253a6"),e=e(),(0,r.jt)(),e),Re=Oe((()=>(0,r.Lk)("div",{class:"t-c w-100"},"端口为0则不监听",-1)));function Te(e,l,a,t,o,u){const n=(0,r.g2)("el-form-item"),s=(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)(n,{label:"","label-width":"0"},{default:(0,r.k6)((()=>[Re])),_:1}),(0,r.bF)(n,{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)(n,{label:"服务端口",prop:"servicePort"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{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)(n,{label:"web穿透端口",prop:"webPort"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{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)(n,{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)(n,{label:"开放最小端口",prop:"tunnelPort1"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{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)(n,{label:"开放最大端口",prop:"tunnelPort2"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{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)(n,{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)(n,{label:"穿透密钥",prop:"sForwardSecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{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)(n,{label:"中继密钥",prop:"relaySecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{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)(n,{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)(n,{label:"信标密钥",prop:"signinSecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{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)(n,{label:"更新密钥",prop:"updaterSecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(s,{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 Be={setup(e){const l=(0,r.WQ)("step"),a=(0,ce.B)(),t=(0,fe.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,fe.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 Je=(0,Fe.A)(Be,[["render",Te],["__scopeId","data-v-8d4253a6"]]);var ze=Je,Ge={components:{Common:Ue,Client:Ne,Server:ze},setup(e){const l=(0,ce.B)(),a=(0,fe.Kh)({steps:(0,r.EW)((()=>["选择模式",l.value.isPc?"服务端":"","客户端","完成"]))}),t=(0,fe.KR)(null),o=(0,fe.KR)({step:1,increment:1,json:{},form:{server:{},client:{},common:{}}});(0,r.Gt)("step",o);const u=()=>{o.value.step--,o.value.increment=-1},n=()=>{o.value.increment=1,t.value.handleValidate().then((e=>{o.value.json=Object.assign(o.value.json,e.json),o.value.form=Object.assign(o.value.form,e.form),o.value.step++})).catch((()=>{}))},s=()=>{(0,xe.ai)(o.value.json).then((()=>{We.nk.success("保存成功"),window.location.reload()})).catch((()=>{We.nk.error("保存失败")}))};return{state:a,globalData:l,currentDom:t,step:o,handlePrev:u,handleNext:n,handleSave:s}}};const He=(0,Fe.A)(Ge,[["render",Pe],["__scopeId","data-v-ce07310a"]]);var Ye=He;const Me={class:"t-c mgt-1"};function Ze(e,l,a,t,o,u){const n=(0,r.g2)("el-input"),s=(0,r.g2)("el-button");return(0,r.uX)(),(0,r.CE)("div",null,[(0,r.Lk)("div",null,[(0,r.bF)(n,{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",Me,[(0,r.bF)(s,{type:"primary",onClick:t.handleSave},{default:(0,r.k6)((()=>[(0,r.eW)("确定")])),_:1},8,["onClick"])])])}var el={setup(){const e=(0,fe.Kh)({content:""}),l=()=>{e.content&&(0,xe.vZ)(e.content).then((e=>{e?(We.nk.success("保存成功"),window.location.reload()):We.nk.error("保存失败,可能格式有误,无法解析")})).catch((()=>{We.nk.error("保存失败")}))};return{state:e,handleSave:l}}};const ll=(0,Fe.A)(el,[["render",Ze]]);var al=ll;const rl={class:"t-c w-100"};function tl(e,l,a,t,o,u){const n=(0,r.g2)("el-input"),s=(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)(s,{label:"服务器",prop:"server"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{modelValue:t.state.ruleForm.server,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.ruleForm.server=e)},null,8,["modelValue"])])),_:1}),(0,r.bF)(s,{label:"密钥",prop:"value"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{modelValue:t.state.ruleForm.value,"onUpdate:modelValue":l[1]||(l[1]=e=>t.state.ruleForm.value=e)},null,8,["modelValue"])])),_:1}),(0,r.bF)(s,{label:"",prop:"Btns"},{default:(0,r.k6)((()=>[(0,r.Lk)("div",rl,[(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 ol={setup(){const e=(0,fe.Kh)({ruleForm:{server:"",value:""},rules:{server:[{required:!0,message:"必填",trigger:"blur"}],value:[{required:!0,message:"必填",trigger:"blur"}]}}),l=(0,fe.KR)(null),a=()=>{l.value.validate((l=>{l&&(0,xe.D3)(e.ruleForm).then((e=>{e?(We.nk.success("保存成功"),window.location.reload()):We.nk.error("保存失败,可能服务器或者密钥不正确,或者密钥已被使用")})).catch((()=>{We.nk.error("保存失败")}))}))};return{state:e,formDom:l,handleSave:a}}};const ul=(0,Fe.A)(ol,[["render",tl]]);var nl=ul,sl={components:{Input:Ye,Copy:al,Save:nl},setup(e){const l=(0,ce.B)(),a=(0,fe.Kh)({show:0==l.value.config.Common.Install});return{state:a,globalData:l}}};const dl=(0,Fe.A)(sl,[["render",ye]]);var ml=dl,il={name:"Index",components:{Head:we,Status:_e.A,Install:ml},setup(e){const l=(0,ce.B)(),a=(0,ge.rd)(),t=(0,fe.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 cl=(0,Fe.A)(il,[["render",d],["__scopeId","data-v-59076a44"]]);var fl=cl}}]); \ No newline at end of file diff --git a/src/linker.tray.win/web/js/226.e53f663b.js b/src/linker.tray.win/web/js/226.e53f663b.js new file mode 100644 index 00000000..7d936421 --- /dev/null +++ b/src/linker.tray.win/web/js/226.e53f663b.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[226],{37844:function(e,l,a){a.r(l),a.d(l,{default:function(){return fl}});var r=a(56768);const t={class:"app-wrap flex flex-column flex-nowrap",id:"app-wrap"},o={class:"head"},s={class:"body flex-1 relative",ref:"wrap"},u={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"),b=(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",s,[(0,r.Lk)("div",u,[(0,r.bF)(f)])],512),(0,r.Lk)("div",n,[(0,r.bF)(v,{config:!0}),(0,r.bF)(b)])])}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",b=a.p+"img/login.0201d499.svg",p=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-4f910b78"),e=e(),(0,r.jt)(),e),w={class:"head flex"},y={class:"logo"},_=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},x=h((()=>(0,r.Lk)("img",{src:v},null,-1))),W={key:2},X=h((()=>(0,r.Lk)("img",{src:b},null,-1))),E={key:3},Q=h((()=>(0,r.Lk)("img",{src:p},null,-1))),A={key:4},U=h((()=>(0,r.Lk)("img",{src:g},null,-1))),D={key:5},I=h((()=>(0,r.Lk)("img",{src:k},null,-1))),j={key:1,class:"flex"},$={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:b},null,-1))),z={key:4},G=h((()=>(0,r.Lk)("img",{src:p},null,-1))),H={key:5},Y=h((()=>(0,r.Lk)("img",{src:k},null,-1))),M=h((()=>(0,r.Lk)("img",{src:F},null,-1))),Z={key:0,class:"select"},ee={class:"el-dropdown-link"},le=h((()=>(0,r.Lk)("img",{src:c,height:"20",style:{"vertical-align":"text-top"}},null,-1))),ae=h((()=>(0,r.Lk)("img",{src:f,height:"20",style:{"vertical-align":"text-top"}},null,-1))),re=h((()=>(0,r.Lk)("img",{src:v,height:"20",style:{"vertical-align":"text-top"}},null,-1))),te=h((()=>(0,r.Lk)("img",{src:b,height:"20",style:{"vertical-align":"text-top"}},null,-1))),oe=h((()=>(0,r.Lk)("img",{src:p,height:"20",style:{"vertical-align":"text-top"}},null,-1))),se=h((()=>(0,r.Lk)("img",{src:k,height:"20",style:{"vertical-align":"text-top"}},null,-1))),ue={key:1,class:"locale"},ne={class:"el-dropdown-link"},de={key:2,class:"image"};function me(e,l,a,t,o,s){const u=(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"),b=(0,r.g2)("Background");return(0,r.uX)(),(0,r.CE)("div",null,[(0,r.Lk)("div",w,[(0,r.Lk)("div",y,[(0,r.bF)(u,{to:{name:"FullIndex"}},{default:(0,r.k6)((()=>[_])),_: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)(u,{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)(u,{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)(u,{to:{name:"FullTransport"}},{default:(0,r.k6)((()=>[x,(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",W,[(0,r.bF)(u,{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)(u,{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.hasFirewall?((0,r.uX)(),(0,r.CE)("li",A,[(0,r.bF)(u,{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)(u,{to:{name:"FullLogger"}},{default:(0,r.k6)((()=>[I,(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",j,["FullIndex"==t.route.name?((0,r.uX)(),(0,r.CE)("li",$,[(0,r.bF)(u,{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)(u,{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)(u,{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)(u,{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)(u,{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.hasLogger&&"FullLogger"==t.route.name?((0,r.uX)(),(0,r.CE)("li",H,[(0,r.bF)(u,{to:{name:"FullLogger"}},{default:(0,r.k6)((()=>[Y,(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))},[M,(0,r.Lk)("span",null,(0,m.v_)(e.$t("head.refresh")),1)])])]))]),t.globalData.isPhone?((0,r.uX)(),(0,r.CE)("div",Z,[(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)(u,{to:{name:"FullIndex"}},{default:(0,r.k6)((()=>[le,(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)(u,{to:{name:"FullServers"}},{default:(0,r.k6)((()=>[ae,(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)(u,{to:{name:"FullTransport"}},{default:(0,r.k6)((()=>[re,(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)(u,{to:{name:"FullAction"}},{default:(0,r.k6)((()=>[te,(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)(u,{to:{name:"FullFirewall"}},{default:(0,r.k6)((()=>[oe,(0,r.eW)(" "+(0,m.v_)(e.$t("head.firewall")),1)])),_:1})])),_:1})):(0,r.Q3)("",!0),t.hasLogger?((0,r.uX)(),(0,r.Wv)(i,{key:4},{default:(0,r.k6)((()=>[(0,r.bF)(u,{to:{name:"FullLogger"}},{default:(0,r.k6)((()=>[se,(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",ee,[(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",ue,[(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",ne,[(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",de,[(0,r.bF)(b,{name:"full"})])):(0,r.Q3)("",!0)])])}var ie=a(57477),ce=a(53830),fe=a(90144),ve=a(5096),be=a(49287),pe=a(22773),ge=a(81387),ke={components:{Background:ve.A,Operation:ie.IaS,ArrowDown:ie.yd$},setup(){const e=(0,ge.lq)(),l=(0,ce.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"))),s=(0,r.EW)((()=>l.value.hasAccess("Action"))),u=(0,r.EW)((()=>l.value.hasAccess("Group"))),n=(0,r.EW)((()=>l.value.hasAccess("FirewallSelf"))),d=(0,fe.KR)(be.Y),{changeLocale:m,currentLocale:i}=(0,pe.A)(),c=(0,r.EW)({get(){return i.value},set(e){m(e)}}),f=e=>{c.value=e},v=()=>{window.location.reload()};return{route:e,globalData:l,hasConfig:a,hasGroup:u,hasLogger:t,hasTransport:o,hasAction:s,hasFirewall:n,localeOptions:d,locale:c,handleLocale:f,refresh:v}}},Fe=a(71241);const he=(0,Fe.A)(ke,[["render",me],["__scopeId","data-v-4f910b78"]]);var we=he,ye=a(44453);function _e(e,l,a,t,o,s){const u=(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)(u)])),_: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 Se=e=>((0,r.Qi)("data-v-ce07310a"),e=e(),(0,r.jt)(),e),Ke={class:"head"},Ve={class:"body"},Ce=Se((()=>(0,r.Lk)("div",{class:"t-c"},"完成保存后,请重启软件",-1))),Le={class:"footer t-c"};function Pe(e,l,a,t,o,s){const u=(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",Ke,[(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)(u,{title:e},null,8,["title"])))),256))])),_:1},8,["active"])]),(0,r.Lk)("div",Ve,[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)((()=>[Ce])),_:1})):(0,r.Q3)("",!0)]),(0,r.Lk)("div",Le,[(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 xe=a(88835),We=a(51219);const Xe={class:"t-c"};function Ee(e,l,a,t,o,s){const u=(0,r.g2)("el-checkbox");return(0,r.uX)(),(0,r.CE)("div",Xe,[(0,r.bF)(u,{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)(u,{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 Qe={name:"Common",setup(){const e=(0,ce.B)(),l=(0,r.WQ)("step"),a=(0,fe.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))}}):(We.nk.error("请选择客户端或服务端"),l())}));return{state:a,globalData:e,handleValidate:t}}};const Ae=(0,Fe.A)(Qe,[["render",Ee]]);var Ue=Ae;const De=e=>((0,r.Qi)("data-v-1a11279e"),e=e(),(0,r.jt)(),e),Ie=De((()=>(0,r.Lk)("div",{class:"t-c w-100"},[(0,r.Lk)("p",null,"端口为0不监听,相同分组之间的客户端相互可见")],-1)));function je(e,l,a,t,o,s){const u=(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-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)(u,{label:"","label-width":"0"},{default:(0,r.k6)((()=>[Ie])),_:1}),(0,r.bF)(u,{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)(u,{label:"机器名",prop:"name"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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)(u,{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)(u,{label:"管理端口",prop:"web"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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)(u,{label:"管理密码",prop:"password"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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)(u,{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)(u,{label:"分组名",prop:"groupid"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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)(u,{label:"分组密码",prop:"groupPassword"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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)(u,{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)(u,{"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)(u,{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)(u,{label:"信标服务",prop:"server"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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)(u,{label:"信标密钥",prop:"serverSecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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)(u,{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)(u,{label:"穿透密钥",prop:"sForwardSecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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)(u,{label:"中继密钥",prop:"relaySecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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)(u,{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)(u,{label:"更新密钥",prop:"updaterSecretKey"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{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)(u,{label:"占位"},{default:(0,r.k6)((()=>[(0,r.bF)(n,{disabled:"",maxlength:"36","show-word-limit":""})])),_:1})])),_:1})):(0,r.Q3)("",!0)])),_:1})])),_:1})):(0,r.Q3)("",!0)])),_:1},8,["model","rules"])])}var $e={setup(e){const l=(0,r.WQ)("step"),a=(0,ce.B)(),t=(0,fe.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,fe.KR)(null),s=()=>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:s,formDom:o}}};const qe=(0,Fe.A)($e,[["render",je],["__scopeId","data-v-1a11279e"]]);var Ne=qe;const Oe=e=>((0,r.Qi)("data-v-8d4253a6"),e=e(),(0,r.jt)(),e),Re=Oe((()=>(0,r.Lk)("div",{class:"t-c w-100"},"端口为0则不监听",-1)));function Te(e,l,a,t,o,s){const u=(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)(u,{label:"","label-width":"0"},{default:(0,r.k6)((()=>[Re])),_:1}),(0,r.bF)(u,{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)(u,{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)(u,{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)(u,{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)(u,{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)(u,{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)(u,{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)(u,{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)(u,{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)(u,{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)(u,{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)(u,{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 Be={setup(e){const l=(0,r.WQ)("step"),a=(0,ce.B)(),t=(0,fe.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,fe.KR)(null),s=()=>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:s,formDom:o}}};const Je=(0,Fe.A)(Be,[["render",Te],["__scopeId","data-v-8d4253a6"]]);var ze=Je,Ge={components:{Common:Ue,Client:Ne,Server:ze},setup(e){const l=(0,ce.B)(),a=(0,fe.Kh)({steps:(0,r.EW)((()=>["选择模式",l.value.isPc?"服务端":"","客户端","完成"]))}),t=(0,fe.KR)(null),o=(0,fe.KR)({step:1,increment:1,json:{},form:{server:{},client:{},common:{}}});(0,r.Gt)("step",o);const s=()=>{o.value.step--,o.value.increment=-1},u=()=>{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,xe.ai)(o.value.json).then((()=>{We.nk.success("保存成功"),window.location.reload()})).catch((()=>{We.nk.error("保存失败")}))};return{state:a,globalData:l,currentDom:t,step:o,handlePrev:s,handleNext:u,handleSave:n}}};const He=(0,Fe.A)(Ge,[["render",Pe],["__scopeId","data-v-ce07310a"]]);var Ye=He;const Me={class:"t-c mgt-1"};function Ze(e,l,a,t,o,s){const u=(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)(u,{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",Me,[(0,r.bF)(n,{type:"primary",onClick:t.handleSave},{default:(0,r.k6)((()=>[(0,r.eW)("确定")])),_:1},8,["onClick"])])])}var el={setup(){const e=(0,fe.Kh)({content:""}),l=()=>{e.content&&(0,xe.vZ)(e.content).then((e=>{e?(We.nk.success("保存成功"),window.location.reload()):We.nk.error("保存失败,可能格式有误,无法解析")})).catch((()=>{We.nk.error("保存失败")}))};return{state:e,handleSave:l}}};const ll=(0,Fe.A)(el,[["render",Ze]]);var al=ll;const rl={class:"t-c w-100"};function tl(e,l,a,t,o,s){const u=(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)(u,{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)(u,{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",rl,[(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 ol={setup(){const e=(0,fe.Kh)({ruleForm:{server:"",value:""},rules:{server:[{required:!0,message:"必填",trigger:"blur"}],value:[{required:!0,message:"必填",trigger:"blur"}]}}),l=(0,fe.KR)(null),a=()=>{l.value.validate((l=>{l&&(0,xe.D3)(e.ruleForm).then((e=>{e?(We.nk.success("保存成功"),window.location.reload()):We.nk.error("保存失败,可能服务器或者密钥不正确,或者密钥已被使用")})).catch((()=>{We.nk.error("保存失败")}))}))};return{state:e,formDom:l,handleSave:a}}};const sl=(0,Fe.A)(ol,[["render",tl]]);var ul=sl,nl={components:{Input:Ye,Copy:al,Save:ul},setup(e){const l=(0,ce.B)(),a=(0,fe.Kh)({show:0==l.value.config.Common.Install});return{state:a,globalData:l}}};const dl=(0,Fe.A)(nl,[["render",_e]]);var ml=dl,il={name:"Index",components:{Head:we,Status:ye.A,Install:ml},setup(e){const l=(0,ce.B)(),a=(0,ge.rd)(),t=(0,fe.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 cl=(0,Fe.A)(il,[["render",d],["__scopeId","data-v-59076a44"]]);var fl=cl}}]); \ No newline at end of file diff --git a/src/linker.tray.win/web/js/663.a5ad7ec9.js b/src/linker.tray.win/web/js/519.9618e424.js similarity index 97% rename from src/linker.tray.win/web/js/663.a5ad7ec9.js rename to src/linker.tray.win/web/js/519.9618e424.js index cedab669..1d377f3c 100644 --- a/src/linker.tray.win/web/js/663.a5ad7ec9.js +++ b/src/linker.tray.win/web/js/519.9618e424.js @@ -1 +1 @@ -"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[663],{7332:function(e,n,a){a.r(n),a.d(n,{default:function(){return O}});var t=a(56768);const s={class:"net-wrap app-wrap"},l={class:"inner absolute flex flex-column flex-nowrap"},i={class:"head"},o={class:"body flex-1 relative"},c={class:"status"};function r(e,n,a,r,u,d){const g=(0,t.g2)("Head"),p=(0,t.g2)("List"),v=(0,t.g2)("Status");return(0,t.uX)(),(0,t.CE)("div",s,[(0,t.Lk)("div",l,[(0,t.Lk)("div",i,[(0,t.bF)(g)]),(0,t.Lk)("div",o,[(0,t.bF)(p)]),(0,t.Lk)("div",c,[(0,t.bF)(v,{config:!1})])])])}a(44114);var u=a(24232);const d=e=>((0,t.Qi)("data-v-6bfe19a3"),e=e(),(0,t.jt)(),e),g={class:"head-wrap"},p={class:"tools flex"},v={class:"label"},h=d((()=>(0,t.Lk)("span",{class:"flex-1"},null,-1))),f={style:{"margin-left":"1rem"}};function k(e,n,a,s,l,i){const o=(0,t.g2)("Refresh"),c=(0,t.g2)("el-icon"),r=(0,t.g2)("el-button"),d=(0,t.g2)("Background");return(0,t.uX)(),(0,t.CE)("div",g,[(0,t.Lk)("div",p,[(0,t.Lk)("span",v,"分组 : "+(0,u.v_)(s.state.group),1),h,(0,t.bF)(r,{size:"small",onClick:s.handleRefresh},{default:(0,t.k6)((()=>[(0,t.eW)(" 刷新(F5)"),(0,t.bF)(c,null,{default:(0,t.k6)((()=>[(0,t.bF)(o)])),_:1})])),_:1},8,["onClick"]),(0,t.Lk)("div",f,[(0,t.bF)(d,{name:"net"})])])])}var C=a(53830),m=a(90144),b=a(57477),L=a(5096),_={components:{Edit:b.ffu,Refresh:b.C42,Background:L.A},setup(){const e=(0,C.B)(),n=(0,m.Kh)({server:(0,t.EW)((()=>e.value.config.Client.Server.Host)),group:(0,t.EW)((()=>e.value.config.Client.Group.Name))}),a=()=>{window.location.reload()};return{state:n,handleRefresh:a}}},w=a(71241);const S=(0,w.A)(_,[["render",k],["__scopeId","data-v-6bfe19a3"]]);var F=S;const x=e=>((0,t.Qi)("data-v-68d1c30a"),e=e(),(0,t.jt)(),e),T={class:"net-list-wrap flex flex-column absolute"},z={class:"flex-1 scrollbar"},E={class:"flex"},A=x((()=>(0,t.Lk)("div",{class:"flex-1"},null,-1))),I={class:"tuntap"},P={class:"page t-c"},B={class:"page-wrap t-c"};function R(e,n,a,s,l,i){const o=(0,t.g2)("DeviceName"),c=(0,t.g2)("UpdaterBtn"),r=(0,t.g2)("TuntapShow"),u=(0,t.g2)("el-pagination");return(0,t.uX)(),(0,t.CE)("div",T,[(0,t.Lk)("div",z,[(0,t.Lk)("ul",null,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(s.devices.page.List,((e,n)=>((0,t.uX)(),(0,t.CE)("li",{key:n},[(0,t.Lk)("dl",null,[(0,t.Lk)("dt",E,[(0,t.Lk)("div",null,[(0,t.bF)(o,{item:e},null,8,["item"])]),A,(0,t.Lk)("div",null,[(0,t.bF)(c,{config:!1,item:e},null,8,["item"])])]),(0,t.Lk)("dd",I,[s.tuntap.list[e.MachineId]?((0,t.uX)(),(0,t.Wv)(r,{key:0,item:e},null,8,["item"])):(0,t.Q3)("",!0)])])])))),128))])]),(0,t.Lk)("div",P,[(0,t.Lk)("div",B,[(0,t.bF)(u,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:s.devices.page.Count,"page-size":s.devices.page.Request.Size,"current-page":s.devices.page.Request.Page,onCurrentChange:s.handlePageChange,onSizeChange:s.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var D=a(98104),X=a(27985),y=a(39383),N=a(62956),U=a(27569),Q=a(57671),W=a(99983),H={components:{StarFilled:b.BQ2,UpdaterBtn:N.A,DeviceName:U.A,TuntapShow:Q.A},setup(e){(0,C.B)();const n=(0,m.Kh)({}),{devices:a,machineId:s,_getSignList:l,_getSignList1:i,handleDeviceEdit:o,handlePageChange:c,handlePageSizeChange:r,handleDel:u,clearDevicesTimeout:d}=(0,X.r)(),{tuntap:g,_getTuntapInfo:p,handleTuntapRefresh:v,clearTuntapTimeout:h,handleTuntapEdit:f,sortTuntapIP:k}=(0,D.O)(),{_getUpdater:b,_subscribeUpdater:L,clearUpdaterTimeout:_}=(0,y.d)(),{connections:w,forwardConnections:S,_getForwardConnections:F,tuntapConnections:x,_getTuntapConnections:T,socks5Connections:z,_getSocks5Connections:E,handleTunnelConnections:A,clearConnectionsTimeout:I}=(0,W.L2)();return(0,t.sV)((()=>{c(),v(),l(),i(),p(),b(),L()})),(0,t.hi)((()=>{d(),h(),_()})),{state:n,devices:a,machineId:s,handlePageChange:c,handlePageSizeChange:r,tuntap:g}}};const K=(0,w.A)(H,[["render",R],["__scopeId","data-v-68d1c30a"]]);var j=K,q=a(24722),M=a(81387),V={components:{Head:F,List:j,Status:q.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,C.B)(),n=(0,M.rd)();return(0,t.sV)((()=>{0==e.value.hasAccess("NetManager")&&n.push({name:"NoPermission"})})),{}}};const G=(0,w.A)(V,[["render",r],["__scopeId","data-v-6a3f3b43"]]);var O=G}}]); \ No newline at end of file +"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[519],{7332:function(e,n,a){a.r(n),a.d(n,{default:function(){return O}});var t=a(56768);const s={class:"net-wrap app-wrap"},l={class:"inner absolute flex flex-column flex-nowrap"},i={class:"head"},o={class:"body flex-1 relative"},c={class:"status"};function r(e,n,a,r,u,d){const g=(0,t.g2)("Head"),p=(0,t.g2)("List"),v=(0,t.g2)("Status");return(0,t.uX)(),(0,t.CE)("div",s,[(0,t.Lk)("div",l,[(0,t.Lk)("div",i,[(0,t.bF)(g)]),(0,t.Lk)("div",o,[(0,t.bF)(p)]),(0,t.Lk)("div",c,[(0,t.bF)(v,{config:!1})])])])}a(44114);var u=a(24232);const d=e=>((0,t.Qi)("data-v-6bfe19a3"),e=e(),(0,t.jt)(),e),g={class:"head-wrap"},p={class:"tools flex"},v={class:"label"},h=d((()=>(0,t.Lk)("span",{class:"flex-1"},null,-1))),f={style:{"margin-left":"1rem"}};function k(e,n,a,s,l,i){const o=(0,t.g2)("Refresh"),c=(0,t.g2)("el-icon"),r=(0,t.g2)("el-button"),d=(0,t.g2)("Background");return(0,t.uX)(),(0,t.CE)("div",g,[(0,t.Lk)("div",p,[(0,t.Lk)("span",v,"分组 : "+(0,u.v_)(s.state.group),1),h,(0,t.bF)(r,{size:"small",onClick:s.handleRefresh},{default:(0,t.k6)((()=>[(0,t.eW)(" 刷新(F5)"),(0,t.bF)(c,null,{default:(0,t.k6)((()=>[(0,t.bF)(o)])),_:1})])),_:1},8,["onClick"]),(0,t.Lk)("div",f,[(0,t.bF)(d,{name:"net"})])])])}var C=a(53830),m=a(90144),b=a(57477),L=a(5096),_={components:{Edit:b.ffu,Refresh:b.C42,Background:L.A},setup(){const e=(0,C.B)(),n=(0,m.Kh)({server:(0,t.EW)((()=>e.value.config.Client.Server.Host)),group:(0,t.EW)((()=>e.value.config.Client.Group.Name))}),a=()=>{window.location.reload()};return{state:n,handleRefresh:a}}},w=a(71241);const S=(0,w.A)(_,[["render",k],["__scopeId","data-v-6bfe19a3"]]);var F=S;const x=e=>((0,t.Qi)("data-v-68d1c30a"),e=e(),(0,t.jt)(),e),T={class:"net-list-wrap flex flex-column absolute"},z={class:"flex-1 scrollbar"},E={class:"flex"},A=x((()=>(0,t.Lk)("div",{class:"flex-1"},null,-1))),I={class:"tuntap"},P={class:"page t-c"},B={class:"page-wrap t-c"};function R(e,n,a,s,l,i){const o=(0,t.g2)("DeviceName"),c=(0,t.g2)("UpdaterBtn"),r=(0,t.g2)("TuntapShow"),u=(0,t.g2)("el-pagination");return(0,t.uX)(),(0,t.CE)("div",T,[(0,t.Lk)("div",z,[(0,t.Lk)("ul",null,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(s.devices.page.List,((e,n)=>((0,t.uX)(),(0,t.CE)("li",{key:n},[(0,t.Lk)("dl",null,[(0,t.Lk)("dt",E,[(0,t.Lk)("div",null,[(0,t.bF)(o,{item:e},null,8,["item"])]),A,(0,t.Lk)("div",null,[(0,t.bF)(c,{config:!1,item:e},null,8,["item"])])]),(0,t.Lk)("dd",I,[s.tuntap.list[e.MachineId]?((0,t.uX)(),(0,t.Wv)(r,{key:0,item:e},null,8,["item"])):(0,t.Q3)("",!0)])])])))),128))])]),(0,t.Lk)("div",P,[(0,t.Lk)("div",B,[(0,t.bF)(u,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:s.devices.page.Count,"page-size":s.devices.page.Request.Size,"current-page":s.devices.page.Request.Page,onCurrentChange:s.handlePageChange,onSizeChange:s.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var D=a(98104),X=a(27985),y=a(39383),N=a(62956),U=a(27569),Q=a(57671),W=a(99983),H={components:{StarFilled:b.BQ2,UpdaterBtn:N.A,DeviceName:U.A,TuntapShow:Q.A},setup(e){(0,C.B)();const n=(0,m.Kh)({}),{devices:a,machineId:s,_getSignList:l,_getSignList1:i,handleDeviceEdit:o,handlePageChange:c,handlePageSizeChange:r,handleDel:u,clearDevicesTimeout:d}=(0,X.r)(),{tuntap:g,_getTuntapInfo:p,handleTuntapRefresh:v,clearTuntapTimeout:h,handleTuntapEdit:f,sortTuntapIP:k}=(0,D.O)(),{_getUpdater:b,_subscribeUpdater:L,clearUpdaterTimeout:_}=(0,y.d)(),{connections:w,forwardConnections:S,_getForwardConnections:F,tuntapConnections:x,_getTuntapConnections:T,socks5Connections:z,_getSocks5Connections:E,handleTunnelConnections:A,clearConnectionsTimeout:I}=(0,W.L2)();return(0,t.sV)((()=>{c(),v(),l(),i(),p(),b(),L()})),(0,t.hi)((()=>{d(),h(),_()})),{state:n,devices:a,machineId:s,handlePageChange:c,handlePageSizeChange:r,tuntap:g}}};const K=(0,w.A)(H,[["render",R],["__scopeId","data-v-68d1c30a"]]);var j=K,q=a(44453),M=a(81387),V={components:{Head:F,List:j,Status:q.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,C.B)(),n=(0,M.rd)();return(0,t.sV)((()=>{0==e.value.hasAccess("NetManager")&&n.push({name:"NoPermission"})})),{}}};const G=(0,w.A)(V,[["render",r],["__scopeId","data-v-6a3f3b43"]]);var O=G}}]); \ No newline at end of file diff --git a/src/linker.tray.win/web/js/570.c09ba66d.js b/src/linker.tray.win/web/js/829.86c9d544.js similarity index 71% rename from src/linker.tray.win/web/js/570.c09ba66d.js rename to src/linker.tray.win/web/js/829.86c9d544.js index ab8e5c2f..60bf2a13 100644 --- a/src/linker.tray.win/web/js/570.c09ba66d.js +++ b/src/linker.tray.win/web/js/829.86c9d544.js @@ -1 +1 @@ -"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[570],{5096:function(e,t,a){a.d(t,{A:function(){return p}});var l=a(56768);const o=e=>((0,l.Qi)("data-v-4892cd3c"),e=e(),(0,l.jt)(),e),s=o((()=>(0,l.Lk)("input",{type:"file",id:"file-input"},null,-1)));function n(e,t,a,o,n,r){const i=(0,l.g2)("PictureRounded"),d=(0,l.g2)("el-icon");return(0,l.uX)(),(0,l.CE)(l.FK,null,[(0,l.Lk)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>o.handleBg&&o.handleBg(...e))},[(0,l.bF)(d,null,{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1})]),s],64)}var r=a(57477),i=a(12933),d={components:{PictureRounded:r.syp},props:["name"],setup(e){const t=`bg-${e.name}`,a=()=>{localStorage.getItem(t)?i.s.confirm("清除背景?","Warning",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{s()})).catch((()=>{})):document.getElementById("file-input").click()},o=e=>{const t=e.target.files[0];if(t)try{const e=new FileReader;e.onload=function(e){s(e.target.result)},e.readAsDataURL(t)}catch(a){}e.target.value=""},s=e=>{e?(document.body.className="sunny",localStorage.setItem(t,e),document.body.style=`background-image:url(${e})`):(document.body.className="",document.body.style="",localStorage.setItem(t,""))};return(0,l.sV)((()=>{document.getElementById("file-input").addEventListener("change",o),s(localStorage.getItem(t))})),{handleBg:a}}},u=a(71241);const c=(0,u.A)(d,[["render",n],["__scopeId","data-v-4892cd3c"]]);var p=c},24722:function(e,t,a){a.d(t,{A:function(){return xt}});var l=a(56768),o=a(24232),s=a.p+"img/dianchi.2949547b.svg",n=a.p+"img/qr.a05c5f6e.jpg";const r=e=>((0,l.Qi)("data-v-ab734c72"),e=e(),(0,l.jt)(),e),i={class:"status-wrap flex"},d={class:"copy flex"},u=["title"],c=r((()=>(0,l.Lk)("img",{src:s,alt:"memory"},null,-1))),p={href:"javascript:;"},m={key:0,href:"https://github.com/snltty/linker",target:"_blank"},g={key:1,href:"https://linker.snltty.com",target:"_blank"},v={key:2,href:"https://linker-doc.snltty.com",target:"_blank"},f={key:3,href:"https://v.netzo123.com",target:"_blank"},h=r((()=>(0,l.Lk)("div",{class:"flex-1"},null,-1))),w={class:"export"},k={key:0,class:"api"},b={class:"server"},y=r((()=>(0,l.Lk)("div",{class:"pay"},[(0,l.Lk)("img",{src:n,alt:""})],-1)));function S(e,t,a,s,n,r){const S=(0,l.g2)("Export"),_=(0,l.g2)("Api"),C=(0,l.g2)("Server"),F=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.CE)("div",i,[(0,l.Lk)("div",d,[(0,l.Lk)("a",{href:"https://afdian.com/a/snltty",class:"memory",title:e.$t("status.support"),target:"_blank"},[c,(0,l.Lk)("span",null,(0,o.v_)(e.$t("status.support")),1)],8,u),(0,l.Lk)("a",p,"©linker "+(0,o.v_)(s.self.Version),1),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("a",m,"Github")):(0,l.Q3)("",!0),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("a",g,(0,o.v_)(e.$t("status.website")),1)):(0,l.Q3)("",!0),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("a",v,(0,o.v_)(e.$t("status.doc")),1)):(0,l.Q3)("",!0),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("a",f,(0,o.v_)(e.$t("status.cdkey")),1)):(0,l.Q3)("",!0)]),h,(0,l.Lk)("div",w,[(0,l.bF)(S,{config:s.config},null,8,["config"])]),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("div",k,[(0,l.bF)(_,{config:s.config},null,8,["config"])])):(0,l.Q3)("",!0),(0,l.Lk)("div",b,[(0,l.bF)(C,{config:s.config},null,8,["config"])]),(0,l.bF)(F,{modelValue:s.state.showPay,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.showPay=e),title:e.$t("status.support"),width:"400"},{default:(0,l.k6)((()=>[y])),_:1},8,["modelValue","title"])])}var _=a(90144);const C={href:"javascript:;"};function F(e,t,a,s,n,r){const i=(0,l.g2)("Tools"),d=(0,l.g2)("el-icon"),u=(0,l.g2)("el-popconfirm");return s.config?((0,l.uX)(),(0,l.CE)("div",{key:0,class:(0,o.C4)(["status-api-wrap",{connected:s.connected}])},[(0,l.bF)(u,{"confirm-button-text":e.$t("status.apiClear"),"cancel-button-text":e.$t("status.apiAlter"),title:e.$t("status.apiAlterConfirm"),onCancel:s.handleShow,onConfirm:s.handleResetConnect},{reference:(0,l.k6)((()=>[(0,l.Lk)("a",C,[(0,l.bF)(d,{size:"16"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1}),(0,l.Lk)("span",null,(0,o.v_)(e.$t("status.api")),1)])])),_:1},8,["confirm-button-text","cancel-button-text","title","onCancel","onConfirm"])],2)):(0,l.Q3)("",!0)}var B=a(53830),V=a(10004),x=a(57477),$={components:{Tools:x.S0q},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.api.connected)),o=()=>{localStorage.setItem("api-cache",""),sessionStorage.setItem("api-cache",""),window.location.reload()},s=()=>{(0,V.e3)(),(0,V.a1)(`ws${"https:"===window.location.protocol?"s":""}://${window.location.hostname}:12345`,"snltty")};return{config:e.config,connected:a,handleShow:s,handleResetConnect:o}}},T=a(71241);const P=(0,T.A)($,[["render",F],["__scopeId","data-v-52645186"]]);var E=P;const A={class:"status-server-wrap"};function D(e,t,a,o,s,n){const r=(0,l.g2)("ServerConfig"),i=(0,l.g2)("ServerVersion"),d=(0,l.g2)("ServerFlow");return(0,l.uX)(),(0,l.CE)("div",A,[(0,l.bF)(r,{config:o.config},null,8,["config"]),(0,l.bF)(i,{config:o.config},null,8,["config"]),o.config&&o.hasFlow?((0,l.uX)(),(0,l.Wv)(d,{key:0,config:o.config},null,8,["config"])):(0,l.Q3)("",!0)])}function I(e,t,a,s,n,r){const i=(0,l.g2)("Avatar"),d=(0,l.g2)("el-icon"),u=(0,l.g2)("ArrowDown"),c=(0,l.g2)("el-dropdown-item"),p=(0,l.g2)("el-dropdown-menu"),m=(0,l.g2)("el-dropdown"),g=(0,l.g2)("Groups");return(0,l.uX)(),(0,l.CE)(l.FK,null,[(0,l.bF)(m,null,{dropdown:(0,l.k6)((()=>[s.hasGroup?((0,l.uX)(),(0,l.Wv)(p,{key:0},{default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(s.state.groups,(e=>((0,l.uX)(),(0,l.Wv)(c,{onClick:t=>s.handleGroupChange(e.Id)},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.Name||"未知"),1)])),_:2},1032,["onClick"])))),256)),(0,l.bF)(c,{onClick:t[0]||(t[0]=e=>s.state.showGroups=!0)},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.group")),1)])),_:1})])),_:1})):(0,l.Q3)("",!0)])),default:(0,l.k6)((()=>[(0,l.Lk)("span",{class:(0,o.C4)(["el-dropdown-link",{connected:s.state.connected}])},[(0,l.bF)(d,{class:"left"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1}),(0,l.Lk)("span",null,(0,o.v_)(s.state.groupName||"未知"),1),(0,l.bF)(d,{class:"right"},{default:(0,l.k6)((()=>[(0,l.bF)(u)])),_:1})],2)])),_:1}),s.state.showGroups?((0,l.uX)(),(0,l.Wv)(g,{key:0,modelValue:s.state.showGroups,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.showGroups=e)},null,8,["modelValue"])):(0,l.Q3)("",!0)],64)}var R=a(69299),U=a(51219),z=a(35931);const W={class:"group-wrap"},X=["onClick"],N=["onClick"],O=["onClick"],K={key:0},M={key:1},G={class:"flex"},Q=(0,l.Lk)("span",{class:"flex-1"},null,-1);function j(e,t,a,s,n,r){const i=(0,l.g2)("el-input"),d=(0,l.g2)("el-table-column"),u=(0,l.g2)("Sync"),c=(0,l.g2)("Delete"),p=(0,l.g2)("el-icon"),m=(0,l.g2)("el-button"),g=(0,l.g2)("el-popconfirm"),v=(0,l.g2)("Plus"),f=(0,l.g2)("el-table"),h=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(h,{class:"options-center",title:e.$t("status.group"),"destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.show=e),width:"77rem",top:"2vh"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",W,[(0,l.bF)(f,{stripe:"",data:s.state.list,border:"",size:"small",width:"100%",height:"70vh",onCellDblclick:s.handleCellClick},{default:(0,l.k6)((()=>[(0,l.bF)(d,{prop:"Name",label:e.$t("status.groupName"),width:"100"},{default:(0,l.k6)((e=>[e.row.NameEditing?((0,l.uX)(),(0,l.Wv)(i,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":t=>e.row.Name=t,onBlur:t=>s.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:t=>s.handleEdit(e.row,"Name")},(0,o.v_)(e.row.Name||"未知"),9,X))])),_:1},8,["label"]),(0,l.bF)(d,{prop:"Id",label:"Id"},{default:(0,l.k6)((e=>[e.row.IdEditing?((0,l.uX)(),(0,l.Wv)(i,{key:0,autofocus:"",size:"small",modelValue:e.row.Id,"onUpdate:modelValue":t=>e.row.Id=t,onBlur:t=>s.handleEditBlur(e.row,"Id")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:t=>s.handleEdit(e.row,"Id")},(0,o.v_)(e.row.Id),9,N))])),_:1}),(0,l.bF)(d,{prop:"Password",label:e.$t("status.groupPassword")},{default:(0,l.k6)((e=>[e.row.PasswordEditing?((0,l.uX)(),(0,l.Wv)(i,{key:0,type:"password","show-password":"",size:"small",modelValue:e.row.Password,"onUpdate:modelValue":t=>e.row.Password=t,onBlur:t=>s.handleEditBlur(e.row,"Password")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:t=>s.handleEdit(e.row,"Password")},[s.globalData.isPhone?((0,l.uX)(),(0,l.CE)("span",K,"***")):((0,l.uX)(),(0,l.CE)("span",M,(0,o.v_)(e.row.Password.replace(/.{1}/g,"*")),1))],8,O))])),_:1},8,["label"]),(0,l.bF)(d,{prop:"Oper",label:e.$t("status.groupOper"),width:"110",fixed:"right"},{header:(0,l.k6)((()=>[(0,l.Lk)("div",G,[(0,l.Lk)("strong",null,(0,o.v_)(e.$t("status.groupOper")),1),Q,(0,l.bF)(u,{name:"GroupSecretKey"})])])),default:(0,l.k6)((t=>[(0,l.Lk)("div",null,[(0,l.bF)(g,{title:e.$t("status.groupDelConfirm"),onConfirm:e=>s.handleDel(t.$index)},{reference:(0,l.k6)((()=>[(0,l.bF)(m,{type:"danger",size:"small"},{default:(0,l.k6)((()=>[(0,l.bF)(p,null,{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1})])),_:1})])),_:2},1032,["title","onConfirm"]),(0,l.bF)(m,{size:"small",onClick:e=>s.handleAdd(t.$index)},{default:(0,l.k6)((()=>[(0,l.bF)(p,null,{default:(0,l.k6)((()=>[(0,l.bF)(v)])),_:1})])),_:2},1032,["onClick"])])])),_:1},8,["label"])])),_:1},8,["data","onCellDblclick"])])])),_:1},8,["title","modelValue"])}var Y=a(58734),q={props:["modelValue"],emits:["update:modelValue"],components:{Delete:x.epd,Plus:x.FWt,Select:x.l6P,Sync:Y.A},setup(e,{emit:t}){const{t:a}=(0,z.s9)(),o=(0,B.B)(),s=(0,_.Kh)({list:o.value.config.Client.Groups,show:!0});(0,l.wB)((()=>o.value.config.Client.Groups),(()=>{0==s.list.filter((e=>e["__editing"])).length&&(s.list=o.value.config.Client.Groups)})),(0,l.wB)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const n=(e,t)=>{r(e,t.property)},r=(e,t)=>{s.list.forEach((e=>{e["NameEditing"]=!1,e["IdEditing"]=!1,e["PasswordEditing"]=!1})),e[`${t}Editing`]=!0,e["__editing"]=!0},i=(e,t)=>{e[`${t}Editing`]=!1,e["__editing"]=!1,p()},d=e=>{s.list.splice(e,1),p()},u=e=>{s.list.filter((e=>""==e.Id||""==e.Name)).length>0?U.nk.error(a("status.groupValidate")):(s.list.splice(e+1,0,{Name:"",Id:"",Password:""}),p())},c=e=>{const t=s.list.slice(),l=t[e];t[e]=t[0],t[0]=l,(0,R.rd)({name:o.value.config.Client.Name,groups:t}).then((()=>{U.nk.success(a("common.oper")),setTimeout((()=>{window.location.reload()}),1e3)})).catch((e=>{console.log(e),U.nk.error(a("common.operFail"))}))},p=()=>{(0,R.zp)(s.list).then((()=>{U.nk.success(a("common.oper"))})).catch((e=>{console.log(e),U.nk.error(a("common.operFail"))}))};return{globalData:o,state:s,handleCellClick:n,handleEditBlur:i,handleEdit:r,handleDel:d,handleAdd:u,handleUse:c}}};const Z=(0,T.A)(q,[["render",j]]);var H=Z,J={components:{ArrowDown:x.yd$,Avatar:x.euF,Groups:H},props:["config"],setup(e){const{t:t}=(0,z.s9)(),a=(0,B.B)(),o=(0,l.EW)((()=>a.value.hasAccess("Group"))),s=(0,_.Kh)({loading:!1,connected:(0,l.EW)((()=>a.value.signin.Connected)),groupName:(0,l.EW)((()=>a.value.config.Client.Group.Name)),groups:(0,l.EW)((()=>a.value.config.Client.Groups)),showGroups:!1}),n=e=>{const t=a.value.config.Client.Groups,l=t.map(((e,t)=>(e.$index=t,e))).filter((t=>t.Id==e))[0].$index,o=t[l];t[l]=t[0],t[0]=o,r(t)},r=e=>{s.loading=!0,(0,R.rd)({Name:a.value.config.Client.Name,Groups:e}).then((()=>{s.loading=!1,s.show=!1,U.nk.success(t("common.oper")),setTimeout((()=>{window.location.reload()}),1e3)})).catch((e=>{console.log(e),s.loading=!1,U.nk.error(t("common.operFail"))}))};return{config:e.config,hasGroup:o,state:s,handleGroupChange:n}}};const ee=(0,T.A)(J,[["render",I],["__scopeId","data-v-33467232"]]);var te=ee;const ae={key:0,class:"flow-wrap"},le=["title"],oe=["title"],se=["title"],ne=["title"];function re(e,t,a,s,n,r){const i=(0,l.g2)("el-table-column"),d=(0,l.g2)("el-button"),u=(0,l.g2)("el-table"),c=(0,l.g2)("el-dialog"),p=(0,l.g2)("ServerFlowMessenger"),m=(0,l.g2)("ServerFlowSForward"),g=(0,l.g2)("ServerFlowRelay"),v=(0,l.g2)("OnlineMap"),f=(0,l.g2)("OnlineAllMap");return(0,l.uX)(),(0,l.CE)(l.FK,null,[s.config?((0,l.uX)(),(0,l.CE)("div",ae,[(0,l.Lk)("p",null,[(0,l.eW)((0,o.v_)(e.$t("status.flowOnline"))+" ",1),(0,l.Lk)("a",{href:"javascript:;",onClick:t[0]||(t[0]=e=>s.state.showMap=!0),title:`${e.$t("status.flowThisServer")}\r\n${e.$t("status.flowOnline")}/${e.$t("status.flowOnline7Day")}`},(0,o.v_)(s.state.overallOnline),9,le),(0,l.Lk)("a",{href:"javascript:;",onClick:t[1]||(t[1]=e=>s.state.showAllMap=!0),title:`${e.$t("status.flowAllServer")}\r\n${e.$t("status.flowOnline")}/${e.$t("status.flowOnline7Day")}/${e.$t("status.flowServer")}`},(0,o.v_)(s.state.serverOnline),9,oe)]),(0,l.Lk)("p",null,[(0,l.eW)((0,o.v_)(e.$t("status.flowUpload"))+" ",1),(0,l.Lk)("a",{href:"javascript:;",title:`${e.$t("status.flowThisServer")}\r\n${e.$t("status.flowAllSend")}`,onClick:t[2]||(t[2]=(...e)=>s.handleShow&&s.handleShow(...e))},(0,o.v_)(s.state.overallSendtSpeed)+"/s",9,se)]),(0,l.Lk)("p",null,[(0,l.eW)((0,o.v_)(e.$t("status.flowDownload"))+" ",1),(0,l.Lk)("a",{href:"javascript:;",title:`${e.$t("status.flowThisServer")}\r\n${e.$t("status.flowAllReceive")}`,onClick:t[3]||(t[3]=(...e)=>s.handleShow&&s.handleShow(...e))},(0,o.v_)(s.state.overallReceiveSpeed)+"/s",9,ne)])])):(0,l.Q3)("",!0),(0,l.bF)(c,{title:s.state.time,"destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[4]||(t[4]=e=>s.state.show=e),width:"640"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(u,{data:s.state.list,border:"",size:"small",width:"100%"},{default:(0,l.k6)((()=>[(0,l.bF)(i,{prop:"text",label:e.$t("status.flowType")},null,8,["label"]),(0,l.bF)(i,{prop:"sendtBytes",label:e.$t("status.flowUpload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.sendtBytesText),1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"sendtSpeed",label:e.$t("status.flowUpload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.sendtSpeedText)+"/s",1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"receiveBytes",label:e.$t("status.flowDownload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.receiveBytesText),1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"receiveSpeed",label:e.$t("status.flowDownload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.receiveSpeedText)+"/s",1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"oper",label:e.$t("status.flowOper"),width:"70"},{default:(0,l.k6)((t=>[t.row.detail?((0,l.uX)(),(0,l.Wv)(d,{key:0,size:"small",onClick:e=>s.handleShowDetail(t.row.id)},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.flowDetail")),1)])),_:2},1032,["onClick"])):(0,l.Q3)("",!0)])),_:1},8,["label"])])),_:1},8,["data"])])])),_:1},8,["title","modelValue"]),s.state.details.Messenger?((0,l.uX)(),(0,l.Wv)(p,{key:1,config:s.config,modelValue:s.state.details.Messenger,"onUpdate:modelValue":t[5]||(t[5]=e=>s.state.details.Messenger=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0),s.state.details.SForward?((0,l.uX)(),(0,l.Wv)(m,{key:2,config:s.config,modelValue:s.state.details.SForward,"onUpdate:modelValue":t[6]||(t[6]=e=>s.state.details.SForward=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0),s.state.details.Relay?((0,l.uX)(),(0,l.Wv)(g,{key:3,config:s.config,modelValue:s.state.details.Relay,"onUpdate:modelValue":t[7]||(t[7]=e=>s.state.details.Relay=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0),s.state.showMap?((0,l.uX)(),(0,l.Wv)(v,{key:4,config:s.config,modelValue:s.state.showMap,"onUpdate:modelValue":t[8]||(t[8]=e=>s.state.showMap=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0),s.state.showAllMap?((0,l.uX)(),(0,l.Wv)(f,{key:5,config:s.config,modelValue:s.state.showAllMap,"onUpdate:modelValue":t[9]||(t[9]=e=>s.state.showAllMap=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0)],64)}a(44114);var ie=a(84921);function de(e,t,a,s,n,r){const i=(0,l.g2)("el-table-column"),d=(0,l.g2)("el-table"),u=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(u,{title:e.$t("status.flowMessenger"),class:"options-center",top:"1vh","destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.show=e),width:"680"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(d,{data:s.state.list,stripe:"",border:"",size:"small",width:"100%",height:"60vh"},{default:(0,l.k6)((()=>[(0,l.bF)(i,{prop:"id",label:"id",width:"200"}),(0,l.bF)(i,{prop:"sendtBytes",label:e.$t("status.flowUpload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.sendtBytesText),1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"sendtSpeed",label:e.$t("status.flowUpload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.sendtSpeedText)+"/s",1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"receiveBytes",label:e.$t("status.flowDownload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.receiveBytesText),1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"receiveSpeed",label:e.$t("status.flowDownload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.receiveSpeedText)+"/s",1)])),_:1},8,["label"])])),_:1},8,["data"])])])),_:1},8,["title","modelValue"])}var ue={props:["modelValue","config"],emits:["update:modelValue"],setup(e,{emit:t}){const{t:a}=(0,z.s9)(),o=(0,_.Kh)({show:!0,timer:0,list:[],old:null});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const s=()=>{clearTimeout(o.timer),(0,ie.zq)().then((e=>{const t=o.old||e,l=[];for(let o in e){const s=e[o],r=t[o],i=`[${o}]${a(`status.messenger${o}`)||"unknown"}`;l.push({id:i,sendtBytes:s.SendtBytes,sendtBytesText:n(s.SendtBytes),sendtSpeed:s.SendtBytes-r.SendtBytes,sendtSpeedText:n(s.SendtBytes-r.SendtBytes),receiveBytes:s.ReceiveBytes,receiveBytesText:n(s.ReceiveBytes),receiveSpeed:s.ReceiveBytes-r.ReceiveBytes,receiveSpeedText:n(s.ReceiveBytes-r.ReceiveBytes)})}o.list=l.filter((e=>!!e.id)),o.old=e,o.timer=setTimeout(s,1e3)})).catch((e=>{o.timer=setTimeout(s,1e3)}))},n=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`};return(0,l.sV)((()=>{s()})),(0,l.hi)((()=>{clearTimeout(o.timer)})),{config:e.config,state:o}}};const ce=(0,T.A)(ue,[["render",de],["__scopeId","data-v-80718c08"]]);var pe=ce;const me={class:"head"},ge={class:"page t-c"},ve={class:"page-wrap"};function fe(e,t,a,s,n,r){const i=(0,l.g2)("el-input"),d=(0,l.g2)("el-table-column"),u=(0,l.g2)("el-table"),c=(0,l.g2)("el-pagination"),p=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(p,{title:e.$t("status.flowServerForward"),class:"options-center",top:"1vh","destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.show=e),width:"680"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",me,[(0,l.bF)(i,{modelValue:s.state.page.Key,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.page.Key=e),placeholder:e.$t("status.flowSearchDomainPort")},null,8,["modelValue","placeholder"])]),(0,l.bF)(u,{data:s.state.list,stripe:"",border:"",size:"small",width:"100%",height:"60vh",onSortChange:s.handleSort},{default:(0,l.k6)((()=>[(0,l.bF)(d,{prop:"Key",label:e.$t("status.flowSearchDomainPort"),width:"200"},null,8,["label"]),(0,l.bF)(d,{prop:"SendtBytes",label:e.$t("status.flowUpload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.SendtBytesText),1)])),_:1},8,["label"]),(0,l.bF)(d,{prop:"DiffSendtBytes",label:e.$t("status.flowUpload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.DiffSendtBytesText)+"/s",1)])),_:1},8,["label"]),(0,l.bF)(d,{prop:"ReceiveBytes",label:e.$t("status.flowDownload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.ReceiveBytesText),1)])),_:1},8,["label"]),(0,l.bF)(d,{prop:"DiffReceiveBytes",label:e.$t("status.flowDownload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.DiffReceiveBytesText)+"/s",1)])),_:1},8,["label"])])),_:1},8,["data","onSortChange"]),(0,l.Lk)("div",ge,[(0,l.Lk)("div",ve,[(0,l.bF)(c,{small:"",background:"",layout:"total,prev,pager, next",total:s.state.page.Count,"page-size":s.state.page.PageSize,"current-page":s.state.page.Page,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","onCurrentChange"])])])])])),_:1},8,["title","modelValue"])}var he={props:["modelValue","config"],emits:["update:modelValue"],setup(e,{emit:t}){const a=(0,_.Kh)({show:!0,timer:0,list:[],page:{Key:"",Page:1,PageSize:15,Count:0,Order:1,OrderType:0}});(0,l.wB)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=()=>{clearTimeout(a.timer),(0,ie.mb)({Key:a.page.Key,Page:a.page.Page,PageSize:a.page.PageSize,Order:a.page.Order,OrderType:a.page.OrderType}).then((e=>{try{a.page.Page=e.Page,a.page.PageSize=e.PageSize,a.page.Count=e.Count;const t=[];for(let a=0;a{a.timer=setTimeout(o,1e3)}))},s=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`},n=e=>{e&&(a.page.Page=e)},r=e=>{const t={ascending:1,descending:0}[e.order],l={SendtBytes:1,DiffSendtBytes:2,ReceiveBytes:3,DiffReceiveBytes:4}[e.prop];a.page.Order=l,a.page.OrderType=t};return(0,l.sV)((()=>{o()})),(0,l.hi)((()=>{clearTimeout(a.timer)})),{config:e.config,state:a,handlePageChange:n,handleSort:r}}};const we=(0,T.A)(he,[["render",fe],["__scopeId","data-v-f73b7458"]]);var ke=we;const be={class:"head"},ye={class:"page t-c"},Se={class:"page-wrap"};function _e(e,t,a,s,n,r){const i=(0,l.g2)("el-input"),d=(0,l.g2)("el-table-column"),u=(0,l.g2)("el-table"),c=(0,l.g2)("el-pagination"),p=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(p,{title:e.$t("status.flowRelay"),class:"options-center",top:"1vh","destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.show=e),width:"680"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",be,[(0,l.bF)(i,{modelValue:s.state.page.Key,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.page.Key=e),placeholder:"名字搜索"},null,8,["modelValue"])]),(0,l.bF)(u,{data:s.state.list,stripe:"",border:"",size:"small",width:"100%",height:"60vh",onSortChange:s.handleSort},{default:(0,l.k6)((()=>[(0,l.bF)(d,{prop:"FromName",label:e.$t("status.flowRelaySource"),width:"120"},null,8,["label"]),(0,l.bF)(d,{prop:"ToName",label:e.$t("status.flowRelayTarget"),width:"120"},null,8,["label"]),(0,l.bF)(d,{prop:"SendtBytes",label:e.$t("status.flowUpload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.SendtBytesText),1)])),_:1},8,["label"]),(0,l.bF)(d,{prop:"DiffSendtBytes",label:e.$t("status.flowUpload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.DiffSendtBytesText)+"/s",1)])),_:1},8,["label"]),(0,l.bF)(d,{prop:"ReceiveBytes",label:e.$t("status.flowDownload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.ReceiveBytesText),1)])),_:1},8,["label"]),(0,l.bF)(d,{prop:"DiffReceiveBytes",label:e.$t("status.flowDownload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.DiffReceiveBytesText)+"/s",1)])),_:1},8,["label"])])),_:1},8,["data","onSortChange"]),(0,l.Lk)("div",ye,[(0,l.Lk)("div",Se,[(0,l.bF)(c,{small:"",background:"",layout:"total,prev,pager, next",total:s.state.page.Count,"page-size":s.state.page.PageSize,"current-page":s.state.page.Page,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","onCurrentChange"])])])])])),_:1},8,["title","modelValue"])}var Ce={props:["modelValue","config"],emits:["update:modelValue"],setup(e,{emit:t}){const a=(0,_.Kh)({show:!0,timer:0,list:[],page:{Key:"",Page:1,PageSize:15,Count:0,Order:1,OrderType:0}});(0,l.wB)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=()=>{clearTimeout(a.timer),(0,ie.xy)({Key:a.page.Key,Page:a.page.Page,PageSize:a.page.PageSize,Order:a.page.Order,OrderType:a.page.OrderType}).then((e=>{try{a.page.Page=e.Page,a.page.PageSize=e.PageSize,a.page.Count=e.Count;const t=[];for(let a=0;a{a.timer=setTimeout(o,1e3)}))},s=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`},n=e=>{e&&(a.page.Page=e)},r=e=>{const t={ascending:1,descending:0}[e.order],l={SendtBytes:1,DiffSendtBytes:2,ReceiveBytes:3,DiffReceiveBytes:4}[e.prop];a.page.Order=l,a.page.OrderType=t};return(0,l.sV)((()=>{o()})),(0,l.hi)((()=>{clearTimeout(a.timer)})),{config:e.config,state:a,handlePageChange:n,handleSort:r}}};const Fe=(0,T.A)(Ce,[["render",_e],["__scopeId","data-v-019c1d95"]]);var Be=Fe;const Ve=e=>((0,l.Qi)("data-v-3c0782be"),e=e(),(0,l.jt)(),e),xe=Ve((()=>(0,l.Lk)("div",{class:"map-wrap",id:"map"},null,-1)));function $e(e,t,a,o,s,n){const r=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(r,{class:"options-center",title:e.$t("status.flowOnline"),"destroy-on-close":"",modelValue:o.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>o.state.show=e),width:"77rem",top:"2vh"},{default:(0,l.k6)((()=>[xe])),_:1},8,["title","modelValue"])}var Le=a(90083),Te={props:["modelValue"],emits:["update:modelValue"],setup(e,{emit:t}){const{t:a}=(0,z.s9)(),o=(0,_.Kh)({show:!0});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const s=(e,t)=>{const l=L.map("map").setView([38,105],4);L.tileLayer("https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}",{attribution:"linker",maxZoom:10}).addTo(l);for(let s=0;s\n

${o.MachineName}

\n
${a("status.flowArea")} : ${n.CountryCode}、${n.City}
\n
${a("status.flowNet")} : ${n.Isp}
\n \n `;new L.marker(new L.latLng([n.Lat+Math.random()/5,n.Lon+Math.random()/5]),{icon:r}).bindPopup(i,{}).on("mouseover",(function(e){this.openPopup()})).on("mouseout",(function(e){this.closePopup()})).addTo(l)}catch(o){console.log(o)}};return(0,l.sV)((()=>{(0,l.dY)((()=>{(0,Le.r7)().then((e=>{(0,R.NT)().then((t=>{s(e.List,t)})).catch((()=>{}))})).catch((()=>{}))}))})),{state:o}}};const Pe=(0,T.A)(Te,[["render",$e],["__scopeId","data-v-3c0782be"]]);var Ee=Pe;const Ae=e=>((0,l.Qi)("data-v-6f5477f6"),e=e(),(0,l.jt)(),e),De=Ae((()=>(0,l.Lk)("div",{class:"map-wrap",id:"map"},null,-1)));function Ie(e,t,a,o,s,n){const r=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(r,{class:"options-center",title:e.$t("status.flowOnline"),"destroy-on-close":"",modelValue:o.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>o.state.show=e),width:"77rem",top:"2vh"},{default:(0,l.k6)((()=>[De])),_:1},8,["title","modelValue"])}var Re={props:["modelValue"],emits:["update:modelValue"],setup(e,{emit:t}){const{t:a}=(0,z.s9)(),o=(0,_.Kh)({show:!0});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const s=e=>{const t=L.map("map").setView([38,105],4);L.tileLayer("https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}",{attribution:"linker",maxZoom:10}).addTo(t);for(let a=0;a\n

${l.City} ${l.Count}

\n \n `;new L.marker(new L.latLng([l.Lat,l.Lon]),{icon:o}).bindPopup(s,{}).on("mouseover",(function(e){this.openPopup()})).on("mouseout",(function(e){this.closePopup()})).addTo(t)}};return(0,l.sV)((()=>{(0,l.dY)((()=>{(0,ie.B8)().then((e=>{s(e)})).catch((()=>{}))}))})),{state:o}}};const Ue=(0,T.A)(Re,[["render",Ie],["__scopeId","data-v-6f5477f6"]]);var ze=Ue,We={props:["config"],components:{ServerFlowMessenger:pe,ServerFlowSForward:ke,ServerFlowRelay:Be,OnlineMap:Ee,OnlineAllMap:ze},setup(e){const{t:t}=(0,z.s9)(),a=(0,B.B)(),o=(0,l.EW)((()=>a.value.hasAccess("SForwardFlow"))),s=(0,l.EW)((()=>a.value.hasAccess("RelayFlow"))),n=(0,l.EW)((()=>a.value.hasAccess("SigninFlow"))),r=(0,_.Kh)({show:!1,timer:0,overallSendtSpeed:"0000.00KB",overallReceiveSpeed:"0000.00KB",overallOnline:"0/0",serverOnline:"",time:"",list:[],old:null,details:{Messenger:!1,SForward:!1,Relay:!1},showMap:!1,showAllMap:!1}),i=()=>{r.show=!0},d=e=>{r.details[e]=!0},u={External:{text:t("status.flowWanPort"),detail:!1},RelayReport:{text:t("status.flowRelayNode"),detail:!1},Relay:{text:t("status.flowRelay"),detail:s.value},Messenger:{text:t("status.flowMessenger"),detail:n.value},SForward:{text:t("status.flowServerForward"),detail:o.value},flow:{text:"",detail:!1}},c=()=>{clearTimeout(r.timer),(0,ie.Qj)().then((e=>{const t=r.old||e;if(e.Items["_"]&&(r.overallOnline=`${e.Items["_"].SendtBytes}/${e.Items["_"].ReceiveBytes}`,delete e.Items["_"]),e.Items["flow"]&&e.Items["flow"].ReceiveBytes>0){const t=(BigInt(e.Items["flow"].ReceiveBytes)>>BigInt(32)).toString(),a=(BigInt(e.Items["flow"].ReceiveBytes)&BigInt(4294967295)).toString(),l=e.Items["flow"].SendtBytes;r.serverOnline=`、${t}/${a}/${l}`,delete e.Items["flow"]}let a=0,l=0,o=0,s=0;for(let r in t.Items)a+=t.Items[r].ReceiveBytes,l+=t.Items[r].SendtBytes;for(let r in e.Items)o+=e.Items[r].ReceiveBytes,s+=e.Items[r].SendtBytes;r.overallSendtSpeed=p(s-l),r.overallReceiveSpeed=p(o-a),r.time=`${e.Start}`;const n=[];for(let r in e.Items){const a=e.Items[r],l=t.Items[r],o=u[`${r}`]||{text:`Unknow${r}`,detail:!1};n.push({id:r,text:o.text,detail:o.detail,sendtBytes:a.SendtBytes,sendtBytesText:p(a.SendtBytes),sendtSpeed:a.SendtBytes-l.SendtBytes,sendtSpeedText:p(a.SendtBytes-l.SendtBytes),receiveBytes:a.ReceiveBytes,receiveBytesText:p(a.ReceiveBytes),receiveSpeed:a.ReceiveBytes-l.ReceiveBytes,receiveSpeedText:p(a.ReceiveBytes-l.ReceiveBytes)})}r.list=n.filter((e=>!!e.id)),r.old=e,r.timer=setTimeout(c,1e3)})).catch((e=>{r.timer=setTimeout(c,1e3)}))},p=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`};return(0,l.sV)((()=>{c()})),(0,l.hi)((()=>{clearTimeout(r.timer)})),{hasSForwardFlow:o,config:e.config,state:r,handleShow:i,handleShowDetail:d}}};const Xe=(0,T.A)(We,[["render",re],["__scopeId","data-v-12cd5250"]]);var Ne=Xe;const Oe=["title"],Ke={key:0,class:"progress"},Me={key:1,class:"progress"};function Ge(e,t,a,s,n,r){const i=(0,l.g2)("Loading"),d=(0,l.g2)("el-icon"),u=(0,l.g2)("Download"),c=(0,l.g2)("CircleCheck");return(0,l.uX)(),(0,l.CE)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>s.handleUpdate&&s.handleUpdate(...e)),class:(0,o.C4)(["download",s.updateColor()]),title:s.updateText()},[(0,l.Lk)("span",null,(0,o.v_)(s.state.version),1),s.updaterServer.Version?((0,l.uX)(),(0,l.CE)(l.FK,{key:0},[1==s.updaterServer.Status?((0,l.uX)(),(0,l.Wv)(d,{key:0,size:"14",class:"loading"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1})):2==s.updaterServer.Status?((0,l.uX)(),(0,l.Wv)(d,{key:1,size:"14"},{default:(0,l.k6)((()=>[(0,l.bF)(u)])),_:1})):3==s.updaterServer.Status||5==s.updaterServer.Status?((0,l.uX)(),(0,l.CE)(l.FK,{key:2},[(0,l.bF)(d,{size:"14",class:"loading"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1}),0==s.updaterServer.Length?((0,l.uX)(),(0,l.CE)("span",Ke,"0%")):((0,l.uX)(),(0,l.CE)("span",Me,(0,o.v_)(parseInt(s.updaterServer.Current/s.updaterServer.Length*100))+"%",1))],64)):6==s.updaterServer.Status?((0,l.uX)(),(0,l.Wv)(d,{key:3,size:"14",class:"yellow"},{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1})):(0,l.Q3)("",!0)],64)):((0,l.uX)(),(0,l.Wv)(d,{key:1,size:"14"},{default:(0,l.k6)((()=>[(0,l.bF)(u)])),_:1}))],10,Oe)}var Qe=a(12933),je=a(80920),Ye={components:{Promotion:x.Yk4,Download:x.f5X,Loading:x.Rhj,CircleCheck:x.rW7,ServerFlow:Ne},props:["config"],setup(e){const{t:t}=(0,z.s9)(),a=(0,B.B)(),o=(0,l.EW)((()=>a.value.hasAccess("UpdateServer"))),s=(0,_.KR)({Version:"",Status:0,Length:0,Current:0,Msg:[],DateTime:""}),n=(0,_.Kh)({show:!1,loading:!1,connected:(0,l.EW)((()=>a.value.signin.Connected)),version:(0,l.EW)((()=>a.value.signin.Version)),timer:0}),r=()=>{clearTimeout(n.timer),(0,je.BJ)().then((e=>{s.value.Version=e.Version,s.value.Status=e.Status,s.value.Length=e.Length,s.value.Current=e.Current,s.value.Status>2&&s.value.Status<6&&(n.timer=setTimeout((()=>{r()}),1e3))})).catch((()=>{n.timer=setTimeout((()=>{r()}),1e3)}))},i=()=>s.value.Version?s.value.Status<=2?n.version!=s.value.Version?`${t("status.serverNotNew")}(${s.value.Version})`:`${t("status.serverNew")}`:{3:t("status.serverDownloading"),4:t("status.serverDownloaded"),5:t("status.serverUnZipIng"),6:t("status.serverUnZip")}[s.value.Status]:t("status.serverNoUpdate"),d=()=>n.version!=s.value.Version?"yellow":"green",u=()=>{e.config&&o.value&&([0,1,3,5].indexOf(s.value.Status)>=0?U.nk.error(t("common.operating")):6!=s.value.Status?2==s.value.Status&&Qe.s.confirm(t("status.serverConfirm"),t("common.tips"),{confirmButtonText:t("common.confirm"),cancelButtonText:t("common.cancel"),type:"warning"}).then((()=>{(0,je.y2)(s.value.Version||a.value.signin.Version).then((()=>{setTimeout((()=>{r()}),1e3)}))})).catch((()=>{})):Qe.s.confirm(t("status.serverCloseConfirm"),t("common.tips"),{confirmButtonText:t("common.confirm"),cancelButtonText:t("common.cancel"),type:"warning"}).then((()=>{(0,je.aP)()})).catch((()=>{})))};return(0,l.sV)((()=>{r()})),{config:e.config,state:n,updaterServer:s,handleUpdate:u,updateText:i,updateColor:d}}};const qe=(0,T.A)(Ye,[["render",Ge],["__scopeId","data-v-6baf133f"]]);var Ze=qe,He={components:{ServerConfig:te,ServerFlow:Ne,ServerVersion:Ze},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.hasAccess("Flow"))),o=(0,_.Kh)({show:!1,loading:!1});return{config:e.config,hasFlow:a,state:o}}};const Je=(0,T.A)(He,[["render",D],["__scopeId","data-v-2d85a782"]]);var et=Je;const tt={key:0,class:"status-export-wrap"},at=["title"],lt={key:0},ot={class:"port-wrap"},st={class:"text"},nt={class:"body"},rt={class:"card-header"},it={class:"flex flex-nowrap"},dt={style:{width:"11rem"}},ut={class:"flex flex-nowrap"},ct={style:{width:"11rem"}},pt={class:"flex flex-nowrap mgt-1"},mt={style:{width:"11rem"}},gt={class:"flex flex-nowrap mgt-1"},vt={style:{width:"11rem"}},ft={class:"port-wrap"},ht={class:"port-wrap"},wt={style:{"margin-top":"1rem"}};function kt(e,t,a,s,n,r){const i=(0,l.g2)("Share"),d=(0,l.g2)("el-icon"),u=(0,l.g2)("el-checkbox"),c=(0,l.g2)("el-col"),p=(0,l.g2)("el-row"),m=(0,l.g2)("el-input"),g=(0,l.g2)("Access"),v=(0,l.g2)("el-card"),f=(0,l.g2)("el-button"),h=(0,l.g2)("el-dialog");return s.config&&s.hasExport?((0,l.uX)(),(0,l.CE)("div",tt,[(0,l.Lk)("a",{href:"javascript:;",title:e.$t("status.export"),onClick:t[0]||(t[0]=e=>s.state.show=!0)},[(0,l.bF)(d,{size:"16"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1}),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("span",lt,(0,o.v_)(e.$t("status.export")),1)):(0,l.Q3)("",!0)],8,at),(0,l.bF)(h,{class:"options-center",title:e.$t("status.export"),"destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[13]||(t[13]=e=>s.state.show=e),center:"",width:"580",top:"1vh"},{footer:(0,l.k6)((()=>[(0,l.bF)(f,{plain:"",onClick:t[12]||(t[12]=e=>s.state.show=!1),loading:s.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("common.cancel")),1)])),_:1},8,["loading"]),(0,l.bF)(f,{type:"default",plain:"",onClick:s.handleExport,loading:s.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.exportDownload")),1)])),_:1},8,["onClick","loading"]),(0,l.bF)(f,{type:"info",plain:"",onClick:s.handleCopy,loading:s.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.exportCopy")),1)])),_:1},8,["onClick","loading"]),(0,l.bF)(f,{type:"success",plain:"",onClick:s.handleSave,loading:s.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.exportSave")),1)])),_:1},8,["onClick","loading"])])),default:(0,l.k6)((()=>[(0,l.Lk)("div",ot,[(0,l.Lk)("div",st,(0,o.v_)(e.$t("status.exportText")),1),(0,l.Lk)("div",nt,[(0,l.bF)(v,{shadow:"never"},{header:(0,l.k6)((()=>[(0,l.Lk)("div",rt,[(0,l.Lk)("div",null,[(0,l.bF)(p,null,{default:(0,l.k6)((()=>[(0,l.bF)(c,{span:24},{default:(0,l.k6)((()=>[(0,l.bF)(u,{disabled:s.onlyNode,modelValue:s.state.single,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.single=e),label:e.$t("status.exportSingle")},null,8,["disabled","modelValue","label"])])),_:1})])),_:1})]),(0,l.Lk)("div",null,[(0,l.bF)(p,null,{default:(0,l.k6)((()=>[(0,l.bF)(c,{span:12},{default:(0,l.k6)((()=>[(0,l.Lk)("div",it,[(0,l.Lk)("span",dt,(0,o.v_)(e.$t("status.exportName"))+" : ",1),(0,l.bF)(m,{disabled:!s.state.single,modelValue:s.state.name,"onUpdate:modelValue":t[2]||(t[2]=e=>s.state.name=e),maxlength:"32","show-word-limit":""},null,8,["disabled","modelValue"])])])),_:1}),(0,l.bF)(c,{span:12},{default:(0,l.k6)((()=>[(0,l.Lk)("div",ut,[(0,l.Lk)("span",ct,(0,o.v_)(e.$t("status.exportApiPassword"))+" : ",1),(0,l.bF)(m,{type:"password","show-password":"",disabled:s.onlyNode,modelValue:s.state.apipassword,"onUpdate:modelValue":t[3]||(t[3]=e=>s.state.apipassword=e),maxlength:"36","show-word-limit":""},null,8,["disabled","modelValue"])])])),_:1}),(0,l.bF)(c,{span:12},{default:(0,l.k6)((()=>[(0,l.Lk)("div",pt,[(0,l.Lk)("span",mt,(0,o.v_)(e.$t("status.exportWebport"))+" : ",1),(0,l.bF)(m,{disabled:s.onlyNode,modelValue:s.state.webport,"onUpdate:modelValue":t[4]||(t[4]=e=>s.state.webport=e)},null,8,["disabled","modelValue"])])])),_:1}),(0,l.bF)(c,{span:12},{default:(0,l.k6)((()=>[(0,l.Lk)("div",gt,[(0,l.Lk)("span",vt,(0,o.v_)(e.$t("status.exportApiport"))+" : ",1),(0,l.bF)(m,{disabled:s.onlyNode,modelValue:s.state.apiport,"onUpdate:modelValue":t[5]||(t[5]=e=>s.state.apiport=e)},null,8,["disabled","modelValue"])])])),_:1})])),_:1})]),(0,l.Lk)("div",null,[(0,l.bF)(p,null,{default:(0,l.k6)((()=>[(0,l.bF)(c,{xs:12,sm:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.relay,"onUpdate:modelValue":t[6]||(t[6]=e=>s.state.relay=e),label:e.$t("status.exportRelay")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(c,{xs:12,sm:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.sforward,"onUpdate:modelValue":t[7]||(t[7]=e=>s.state.sforward=e),label:e.$t("status.exportSForward")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(c,{xs:12,sm:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.updater,"onUpdate:modelValue":t[8]||(t[8]=e=>s.state.updater=e),label:e.$t("status.exportUpdater")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(c,{xs:12,sm:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.server,"onUpdate:modelValue":t[9]||(t[9]=e=>s.state.server=e),label:e.$t("status.exportServer")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(c,{xs:12,sm:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.group,"onUpdate:modelValue":t[10]||(t[10]=e=>s.state.group=e),label:e.$t("status.exportGroup")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(c,{xs:12,sm:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.tunnel,"onUpdate:modelValue":t[11]||(t[11]=e=>s.state.tunnel=e),label:e.$t("status.exportTunnel")},null,8,["modelValue","label"])])),_:1})])),_:1})])])])),default:(0,l.k6)((()=>[(0,l.bF)(g,{ref:"accessDom",machineid:s.machineId,height:30},null,8,["machineid"])])),_:1})])])])),_:1},8,["title","modelValue"]),(0,l.bF)(h,{class:"options-center",title:e.$t("status.export"),"destroy-on-close":"",modelValue:s.state.showCopy,"onUpdate:modelValue":t[15]||(t[15]=e=>s.state.showCopy=e),center:"",width:"580",top:"1vh"},{footer:(0,l.k6)((()=>[(0,l.bF)(f,{plain:"",onClick:s.copyToClipboard},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.exportCopy")),1)])),_:1},8,["onClick"])])),default:(0,l.k6)((()=>[(0,l.Lk)("div",ft,[(0,l.bF)(m,{modelValue:s.state.copyContent,"onUpdate:modelValue":t[14]||(t[14]=e=>s.state.copyContent=e),type:"textarea",rows:10,resize:"none",readonly:""},null,8,["modelValue"])])])),_:1},8,["title","modelValue"]),(0,l.bF)(h,{class:"options-center",title:e.$t("status.export"),"destroy-on-close":"",modelValue:s.state.showSave,"onUpdate:modelValue":t[18]||(t[18]=e=>s.state.showSave=e),center:"",width:"300",top:"1vh"},{footer:(0,l.k6)((()=>[(0,l.bF)(f,{plain:"",onClick:s.copySaveToClipboard},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.exportCopy")),1)])),_:1},8,["onClick"])])),default:(0,l.k6)((()=>[(0,l.Lk)("div",ht,[(0,l.Lk)("div",null,[(0,l.bF)(m,{modelValue:s.state.saveServer,"onUpdate:modelValue":t[16]||(t[16]=e=>s.state.saveServer=e),readonly:""},null,8,["modelValue"])]),(0,l.Lk)("div",wt,[(0,l.bF)(m,{modelValue:s.state.saveContent,"onUpdate:modelValue":t[17]||(t[17]=e=>s.state.saveContent=e),readonly:""},null,8,["modelValue"])])])])),_:1},8,["title","modelValue"])])):(0,l.Q3)("",!0)}var bt=a(88835),yt=a(46700),St={components:{Share:x.SYj,Access:yt.A},props:["config"],setup(e){const{t:t}=(0,z.s9)(),a=(0,B.B)(),o=(0,l.EW)((()=>a.value.hasAccess("Export"))),s=(0,l.EW)((()=>a.value.config.Client.OnlyNode)),n=(0,l.EW)((()=>a.value.config.Client.Id)),r=(0,_.Kh)({show:!1,loading:!1,single:!0,name:"",apipassword:s.value?a.value.config.Client.CApi.ApiPassword:"",apiport:a.value.config.Client.CApi.ApiPort,webport:a.value.config.Client.CApi.WebPort,relay:!0,sforward:!0,updater:!0,server:!0,group:!0,tunnel:!0,copyContent:"",showCopy:!1,saveServer:a.value.config.Client.Server.Host,saveContent:"",showSave:!1}),i=(0,_.KR)(null),d=()=>{if(!o.value)return void U.nk.success("无权限");const e={access:i.value.getValue(),single:r.single,name:r.name,apipassword:r.apipassword,webport:+r.webport,apiport:+r.apiport,relay:r.relay,sforward:r.sforward,updater:r.updater,server:r.server,group:r.group,tunnel:r.tunnel};if(e.single){if(!e.name)return void U.nk.error(t("status.exportNamePlease"))}else e.name="";if(e.apipassword)if(!e.webport||isNaN(e.webport)||e.webport<=0||e.webport>65535)U.nk.error(t("status.exportWebportPlease"));else{if(!(!e.apiport||isNaN(e.apiport)||e.apiport<=0||e.apiport>65535))return e;U.nk.error(t("status.exportApiportPlease"))}else U.nk.error(t("status.exportApiPasswordPlease"))},u=()=>{const e=document.createElement("a");r.single?e.download=`client-node-export-${r.name}.zip`:e.download="client-node-export.zip",e.href="/client-node-export.zip",document.body.appendChild(e),e.click(),document.body.removeChild(e)},c=()=>{const e=d();e&&(r.loading=!0,(0,bt.ql)(e).then((e=>{r.loading=!1,e?(r.show=!1,U.nk.success(t("common.oper")),r.saveContent=e,r.showSave=!0):U.nk.error(t("common.operFail"))})).catch((()=>{U.nk.error(t("common.operFail")),r.loading=!1})))},p=async()=>{try{return await navigator.clipboard.writeText(`在初始化linker客户端时,填写服务器和密钥,导入配置\n服务器: ${r.saveServer}\n密钥: ${r.saveContent}`),U.nk.success(t("common.oper")),!0}catch(e){return U.nk.error(t("common.operFail")),!1}},m=()=>{const e=d();e&&(r.loading=!0,(0,bt.P$)(e).then((()=>{r.loading=!1,r.show=!1,U.nk.success(t("common.oper")),u()})).catch((()=>{U.nk.error(t("common.operFail")),r.loading=!1})))},g=()=>{const e=d();e&&(r.loading=!0,(0,bt.om)(e).then((e=>{r.loading=!1,r.show=!1,U.nk.success(t("common.oper")),r.copyContent=e,r.showCopy=!0})).catch((()=>{U.nk.error(t("common.operFail")),r.loading=!1})))},v=async()=>{try{return await navigator.clipboard.writeText(r.copyContent),U.nk.success(t("common.oper")),!0}catch(e){return U.nk.error(t("common.operFail")),!1}};return{globalData:a,config:e.config,onlyNode:s,hasExport:o,machineId:n,state:r,accessDom:i,handleSave:c,handleExport:m,handleCopy:g,copyToClipboard:v,copySaveToClipboard:p}}};const _t=(0,T.A)(St,[["render",kt],["__scopeId","data-v-fe801996"]]);var Ct=_t,Ft=a(62956),Bt={components:{Api:E,Server:et,Export:Ct,UpdaterBtn:Ft.A},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.self)),o=(0,_.Kh)({showPay:!1});return{globalData:t,state:o,config:e.config,self:a}}};const Vt=(0,T.A)(Bt,[["render",S],["__scopeId","data-v-ab734c72"]]);var xt=Vt},58734:function(e,t,a){a.d(t,{A:function(){return v}});var l=a(56768);function o(e,t,a,o,s,n){const r=(0,l.g2)("Share"),i=(0,l.g2)("el-icon"),d=(0,l.g2)("el-button");return(0,l.uX)(),(0,l.CE)("div",null,[(0,l.bF)(d,{class:"btn",size:"small",onClick:o.handleSync},{default:(0,l.k6)((()=>[(0,l.bF)(i,null,{default:(0,l.k6)((()=>[(0,l.bF)(r)])),_:1})])),_:1},8,["onClick"])])}var s=a(10004);const n=e=>(0,s.zG)("sync/Sync",e);var r=a(53830),i=a(57477),d=a(51219),u=a(12933),c=a(35931),p={props:["name"],components:{Share:i.SYj},setup(e){const{t:t}=(0,c.s9)(),a=(0,r.B)(),o=(0,l.EW)((()=>a.value.hasAccess("Sync"))),s=()=>{o.value?u.s.confirm(`${t("server.sync")}【${t(`server.async${e.name}`)}】${t("server.asyncText")}? `,t("common.tips"),{confirmButtonText:t("common.confirm"),cancelButtonText:t("common.cancel"),type:"warning"}).then((()=>{n([e.name]).then((e=>{d.nk.success(t("common.oper"))}))})).catch((()=>{})):d.nk.success(t("common.access"))};return{handleSync:s}}},m=a(71241);const g=(0,m.A)(p,[["render",o]]);var v=g}}]); \ No newline at end of file +"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[829],{5096:function(e,t,a){a.d(t,{A:function(){return p}});var l=a(56768);const o=e=>((0,l.Qi)("data-v-4892cd3c"),e=e(),(0,l.jt)(),e),s=o((()=>(0,l.Lk)("input",{type:"file",id:"file-input"},null,-1)));function n(e,t,a,o,n,r){const i=(0,l.g2)("PictureRounded"),d=(0,l.g2)("el-icon");return(0,l.uX)(),(0,l.CE)(l.FK,null,[(0,l.Lk)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>o.handleBg&&o.handleBg(...e))},[(0,l.bF)(d,null,{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1})]),s],64)}var r=a(57477),i=a(12933),d={components:{PictureRounded:r.syp},props:["name"],setup(e){const t=`bg-${e.name}`,a=()=>{localStorage.getItem(t)?i.s.confirm("清除背景?","Warning",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{s()})).catch((()=>{})):document.getElementById("file-input").click()},o=e=>{const t=e.target.files[0];if(t)try{const e=new FileReader;e.onload=function(e){s(e.target.result)},e.readAsDataURL(t)}catch(a){}e.target.value=""},s=e=>{e?(document.body.className="sunny",localStorage.setItem(t,e),document.body.style=`background-image:url(${e})`):(document.body.className="",document.body.style="",localStorage.setItem(t,""))};return(0,l.sV)((()=>{document.getElementById("file-input").addEventListener("change",o),s(localStorage.getItem(t))})),{handleBg:a}}},u=a(71241);const c=(0,u.A)(d,[["render",n],["__scopeId","data-v-4892cd3c"]]);var p=c},44453:function(e,t,a){a.d(t,{A:function(){return Bt}});var l=a(56768),o=a(24232),s=a.p+"img/dianchi.2949547b.svg",n=a.p+"img/qr.a05c5f6e.jpg";const r=e=>((0,l.Qi)("data-v-ab734c72"),e=e(),(0,l.jt)(),e),i={class:"status-wrap flex"},d={class:"copy flex"},u=["title"],c=r((()=>(0,l.Lk)("img",{src:s,alt:"memory"},null,-1))),p={href:"javascript:;"},m={key:0,href:"https://github.com/snltty/linker",target:"_blank"},g={key:1,href:"https://linker.snltty.com",target:"_blank"},v={key:2,href:"https://linker-doc.snltty.com",target:"_blank"},f={key:3,href:"https://v.netzo123.com",target:"_blank"},h=r((()=>(0,l.Lk)("div",{class:"flex-1"},null,-1))),w={class:"export"},k={key:0,class:"api"},b={class:"server"},y=r((()=>(0,l.Lk)("div",{class:"pay"},[(0,l.Lk)("img",{src:n,alt:""})],-1)));function S(e,t,a,s,n,r){const S=(0,l.g2)("Export"),_=(0,l.g2)("Api"),C=(0,l.g2)("Server"),F=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.CE)("div",i,[(0,l.Lk)("div",d,[(0,l.Lk)("a",{href:"https://afdian.com/a/snltty",class:"memory",title:e.$t("status.support"),target:"_blank"},[c,(0,l.Lk)("span",null,(0,o.v_)(e.$t("status.support")),1)],8,u),(0,l.Lk)("a",p,"©linker "+(0,o.v_)(s.self.Version),1),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("a",m,"Github")):(0,l.Q3)("",!0),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("a",g,(0,o.v_)(e.$t("status.website")),1)):(0,l.Q3)("",!0),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("a",v,(0,o.v_)(e.$t("status.doc")),1)):(0,l.Q3)("",!0),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("a",f,(0,o.v_)(e.$t("status.cdkey")),1)):(0,l.Q3)("",!0)]),h,(0,l.Lk)("div",w,[(0,l.bF)(S,{config:s.config},null,8,["config"])]),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("div",k,[(0,l.bF)(_,{config:s.config},null,8,["config"])])):(0,l.Q3)("",!0),(0,l.Lk)("div",b,[(0,l.bF)(C,{config:s.config},null,8,["config"])]),(0,l.bF)(F,{modelValue:s.state.showPay,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.showPay=e),title:e.$t("status.support"),width:"400"},{default:(0,l.k6)((()=>[y])),_:1},8,["modelValue","title"])])}var _=a(90144);const C={href:"javascript:;"};function F(e,t,a,s,n,r){const i=(0,l.g2)("Tools"),d=(0,l.g2)("el-icon"),u=(0,l.g2)("el-popconfirm");return s.config?((0,l.uX)(),(0,l.CE)("div",{key:0,class:(0,o.C4)(["status-api-wrap",{connected:s.connected}])},[(0,l.bF)(u,{"confirm-button-text":e.$t("status.apiClear"),"cancel-button-text":e.$t("status.apiAlter"),title:e.$t("status.apiAlterConfirm"),onCancel:s.handleShow,onConfirm:s.handleResetConnect},{reference:(0,l.k6)((()=>[(0,l.Lk)("a",C,[(0,l.bF)(d,{size:"16"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1}),(0,l.Lk)("span",null,(0,o.v_)(e.$t("status.api")),1)])])),_:1},8,["confirm-button-text","cancel-button-text","title","onCancel","onConfirm"])],2)):(0,l.Q3)("",!0)}var B=a(53830),V=a(10004),$=a(57477),x={components:{Tools:$.S0q},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.api.connected)),o=()=>{localStorage.setItem("api-cache",""),sessionStorage.setItem("api-cache",""),window.location.reload()},s=()=>{(0,V.e3)(),(0,V.a1)(`ws${"https:"===window.location.protocol?"s":""}://${window.location.hostname}:12345`,"snltty")};return{config:e.config,connected:a,handleShow:s,handleResetConnect:o}}},T=a(71241);const P=(0,T.A)(x,[["render",F],["__scopeId","data-v-52645186"]]);var E=P;const D={class:"status-server-wrap"};function I(e,t,a,o,s,n){const r=(0,l.g2)("ServerConfig"),i=(0,l.g2)("ServerVersion"),d=(0,l.g2)("ServerFlow");return(0,l.uX)(),(0,l.CE)("div",D,[(0,l.bF)(r,{config:o.config},null,8,["config"]),(0,l.bF)(i,{config:o.config},null,8,["config"]),o.config&&o.hasFlow?((0,l.uX)(),(0,l.Wv)(d,{key:0,config:o.config},null,8,["config"])):(0,l.Q3)("",!0)])}function R(e,t,a,s,n,r){const i=(0,l.g2)("Avatar"),d=(0,l.g2)("el-icon"),u=(0,l.g2)("ArrowDown"),c=(0,l.g2)("el-dropdown-item"),p=(0,l.g2)("el-dropdown-menu"),m=(0,l.g2)("el-dropdown"),g=(0,l.g2)("Groups");return(0,l.uX)(),(0,l.CE)(l.FK,null,[(0,l.bF)(m,null,{dropdown:(0,l.k6)((()=>[s.hasGroup?((0,l.uX)(),(0,l.Wv)(p,{key:0},{default:(0,l.k6)((()=>[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(s.state.groups,(e=>((0,l.uX)(),(0,l.Wv)(c,{onClick:t=>s.handleGroupChange(e.Id)},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.Name||"未知"),1)])),_:2},1032,["onClick"])))),256)),(0,l.bF)(c,{onClick:t[0]||(t[0]=e=>s.state.showGroups=!0)},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.group")),1)])),_:1})])),_:1})):(0,l.Q3)("",!0)])),default:(0,l.k6)((()=>[(0,l.Lk)("span",{class:(0,o.C4)(["el-dropdown-link",{connected:s.state.connected}])},[(0,l.bF)(d,{class:"left"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1}),(0,l.Lk)("span",null,(0,o.v_)(s.state.groupName||"未知"),1),(0,l.bF)(d,{class:"right"},{default:(0,l.k6)((()=>[(0,l.bF)(u)])),_:1})],2)])),_:1}),s.state.showGroups?((0,l.uX)(),(0,l.Wv)(g,{key:0,modelValue:s.state.showGroups,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.showGroups=e)},null,8,["modelValue"])):(0,l.Q3)("",!0)],64)}var A=a(69299),U=a(51219),z=a(35931);const W={class:"group-wrap"},X=["onClick"],O=["onClick"],N=["onClick"],K={key:0},M={key:1},G={class:"flex"},Q=(0,l.Lk)("span",{class:"flex-1"},null,-1);function j(e,t,a,s,n,r){const i=(0,l.g2)("el-input"),d=(0,l.g2)("el-table-column"),u=(0,l.g2)("Sync"),c=(0,l.g2)("Delete"),p=(0,l.g2)("el-icon"),m=(0,l.g2)("el-button"),g=(0,l.g2)("el-popconfirm"),v=(0,l.g2)("Plus"),f=(0,l.g2)("el-table"),h=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(h,{class:"options-center",title:e.$t("status.group"),"destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.show=e),width:"77rem",top:"2vh"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",W,[(0,l.bF)(f,{stripe:"",data:s.state.list,border:"",size:"small",width:"100%",height:"70vh",onCellDblclick:s.handleCellClick},{default:(0,l.k6)((()=>[(0,l.bF)(d,{prop:"Name",label:e.$t("status.groupName"),width:"100"},{default:(0,l.k6)((e=>[e.row.NameEditing?((0,l.uX)(),(0,l.Wv)(i,{key:0,autofocus:"",size:"small",modelValue:e.row.Name,"onUpdate:modelValue":t=>e.row.Name=t,onBlur:t=>s.handleEditBlur(e.row,"Name")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:t=>s.handleEdit(e.row,"Name")},(0,o.v_)(e.row.Name||"未知"),9,X))])),_:1},8,["label"]),(0,l.bF)(d,{prop:"Id",label:"Id"},{default:(0,l.k6)((e=>[e.row.IdEditing?((0,l.uX)(),(0,l.Wv)(i,{key:0,autofocus:"",size:"small",modelValue:e.row.Id,"onUpdate:modelValue":t=>e.row.Id=t,onBlur:t=>s.handleEditBlur(e.row,"Id")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:t=>s.handleEdit(e.row,"Id")},(0,o.v_)(e.row.Id),9,O))])),_:1}),(0,l.bF)(d,{prop:"Password",label:e.$t("status.groupPassword")},{default:(0,l.k6)((e=>[e.row.PasswordEditing?((0,l.uX)(),(0,l.Wv)(i,{key:0,type:"password","show-password":"",size:"small",modelValue:e.row.Password,"onUpdate:modelValue":t=>e.row.Password=t,onBlur:t=>s.handleEditBlur(e.row,"Password")},null,8,["modelValue","onUpdate:modelValue","onBlur"])):((0,l.uX)(),(0,l.CE)("a",{key:1,href:"javascript:;",class:"a-line",onClick:t=>s.handleEdit(e.row,"Password")},[s.globalData.isPhone?((0,l.uX)(),(0,l.CE)("span",K,"***")):((0,l.uX)(),(0,l.CE)("span",M,(0,o.v_)(e.row.Password.replace(/.{1}/g,"*")),1))],8,N))])),_:1},8,["label"]),(0,l.bF)(d,{prop:"Oper",label:e.$t("status.groupOper"),width:"110",fixed:"right"},{header:(0,l.k6)((()=>[(0,l.Lk)("div",G,[(0,l.Lk)("strong",null,(0,o.v_)(e.$t("status.groupOper")),1),Q,(0,l.bF)(u,{name:"GroupSecretKey"})])])),default:(0,l.k6)((t=>[(0,l.Lk)("div",null,[(0,l.bF)(g,{title:e.$t("status.groupDelConfirm"),onConfirm:e=>s.handleDel(t.$index)},{reference:(0,l.k6)((()=>[(0,l.bF)(m,{type:"danger",size:"small"},{default:(0,l.k6)((()=>[(0,l.bF)(p,null,{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1})])),_:1})])),_:2},1032,["title","onConfirm"]),(0,l.bF)(m,{size:"small",onClick:e=>s.handleAdd(t.$index)},{default:(0,l.k6)((()=>[(0,l.bF)(p,null,{default:(0,l.k6)((()=>[(0,l.bF)(v)])),_:1})])),_:2},1032,["onClick"])])])),_:1},8,["label"])])),_:1},8,["data","onCellDblclick"])])])),_:1},8,["title","modelValue"])}var Y=a(58734),q={props:["modelValue"],emits:["update:modelValue"],components:{Delete:$.epd,Plus:$.FWt,Select:$.l6P,Sync:Y.A},setup(e,{emit:t}){const{t:a}=(0,z.s9)(),o=(0,B.B)(),s=(0,_.Kh)({list:o.value.config.Client.Groups,show:!0});(0,l.wB)((()=>o.value.config.Client.Groups),(()=>{0==s.list.filter((e=>e["__editing"])).length&&(s.list=o.value.config.Client.Groups)})),(0,l.wB)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const n=(e,t)=>{r(e,t.property)},r=(e,t)=>{s.list.forEach((e=>{e["NameEditing"]=!1,e["IdEditing"]=!1,e["PasswordEditing"]=!1})),e[`${t}Editing`]=!0,e["__editing"]=!0},i=(e,t)=>{e[`${t}Editing`]=!1,e["__editing"]=!1,p()},d=e=>{s.list.splice(e,1),p()},u=e=>{s.list.filter((e=>""==e.Id||""==e.Name)).length>0?U.nk.error(a("status.groupValidate")):(s.list.splice(e+1,0,{Name:"",Id:"",Password:""}),p())},c=e=>{const t=s.list.slice(),l=t[e];t[e]=t[0],t[0]=l,(0,A.rd)({name:o.value.config.Client.Name,groups:t}).then((()=>{U.nk.success(a("common.oper")),setTimeout((()=>{window.location.reload()}),1e3)})).catch((e=>{console.log(e),U.nk.error(a("common.operFail"))}))},p=()=>{(0,A.zp)(s.list).then((()=>{U.nk.success(a("common.oper"))})).catch((e=>{console.log(e),U.nk.error(a("common.operFail"))}))};return{globalData:o,state:s,handleCellClick:n,handleEditBlur:i,handleEdit:r,handleDel:d,handleAdd:u,handleUse:c}}};const Z=(0,T.A)(q,[["render",j]]);var H=Z,J={components:{ArrowDown:$.yd$,Avatar:$.euF,Groups:H},props:["config"],setup(e){const{t:t}=(0,z.s9)(),a=(0,B.B)(),o=(0,l.EW)((()=>a.value.hasAccess("Group"))),s=(0,_.Kh)({loading:!1,connected:(0,l.EW)((()=>a.value.signin.Connected)),groupName:(0,l.EW)((()=>a.value.config.Client.Group.Name)),groups:(0,l.EW)((()=>a.value.config.Client.Groups)),showGroups:!1}),n=e=>{const t=a.value.config.Client.Groups,l=t.map(((e,t)=>(e.$index=t,e))).filter((t=>t.Id==e))[0].$index,o=t[l];t[l]=t[0],t[0]=o,r(t)},r=e=>{s.loading=!0,(0,A.rd)({Name:a.value.config.Client.Name,Groups:e}).then((()=>{s.loading=!1,s.show=!1,U.nk.success(t("common.oper")),setTimeout((()=>{window.location.reload()}),1e3)})).catch((e=>{console.log(e),s.loading=!1,U.nk.error(t("common.operFail"))}))};return{config:e.config,hasGroup:o,state:s,handleGroupChange:n}}};const ee=(0,T.A)(J,[["render",R],["__scopeId","data-v-33467232"]]);var te=ee;const ae={key:0,class:"flow-wrap"},le=["title"],oe=["title"],se=["title"],ne=["title"];function re(e,t,a,s,n,r){const i=(0,l.g2)("el-table-column"),d=(0,l.g2)("el-button"),u=(0,l.g2)("el-table"),c=(0,l.g2)("el-dialog"),p=(0,l.g2)("ServerFlowMessenger"),m=(0,l.g2)("ServerFlowSForward"),g=(0,l.g2)("ServerFlowRelay"),v=(0,l.g2)("OnlineMap"),f=(0,l.g2)("OnlineAllMap");return(0,l.uX)(),(0,l.CE)(l.FK,null,[s.config?((0,l.uX)(),(0,l.CE)("div",ae,[(0,l.Lk)("p",null,[(0,l.eW)((0,o.v_)(e.$t("status.flowOnline"))+" ",1),(0,l.Lk)("a",{href:"javascript:;",onClick:t[0]||(t[0]=e=>s.state.showMap=!0),title:`${e.$t("status.flowThisServer")}\r\n${e.$t("status.flowOnline")}/${e.$t("status.flowOnline7Day")}`},(0,o.v_)(s.state.overallOnline),9,le),(0,l.Lk)("a",{href:"javascript:;",onClick:t[1]||(t[1]=e=>s.state.showAllMap=!0),title:`${e.$t("status.flowAllServer")}\r\n${e.$t("status.flowOnline")}/${e.$t("status.flowOnline7Day")}/${e.$t("status.flowServer")}`},(0,o.v_)(s.state.serverOnline),9,oe)]),(0,l.Lk)("p",null,[(0,l.eW)((0,o.v_)(e.$t("status.flowUpload"))+" ",1),(0,l.Lk)("a",{href:"javascript:;",title:`${e.$t("status.flowThisServer")}\r\n${e.$t("status.flowAllSend")}`,onClick:t[2]||(t[2]=(...e)=>s.handleShow&&s.handleShow(...e))},(0,o.v_)(s.state.overallSendtSpeed)+"/s",9,se)]),(0,l.Lk)("p",null,[(0,l.eW)((0,o.v_)(e.$t("status.flowDownload"))+" ",1),(0,l.Lk)("a",{href:"javascript:;",title:`${e.$t("status.flowThisServer")}\r\n${e.$t("status.flowAllReceive")}`,onClick:t[3]||(t[3]=(...e)=>s.handleShow&&s.handleShow(...e))},(0,o.v_)(s.state.overallReceiveSpeed)+"/s",9,ne)])])):(0,l.Q3)("",!0),(0,l.bF)(c,{title:s.state.time,"destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[4]||(t[4]=e=>s.state.show=e),width:"640"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(u,{data:s.state.list,border:"",size:"small",width:"100%"},{default:(0,l.k6)((()=>[(0,l.bF)(i,{prop:"text",label:e.$t("status.flowType")},null,8,["label"]),(0,l.bF)(i,{prop:"sendtBytes",label:e.$t("status.flowUpload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.sendtBytesText),1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"sendtSpeed",label:e.$t("status.flowUpload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.sendtSpeedText)+"/s",1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"receiveBytes",label:e.$t("status.flowDownload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.receiveBytesText),1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"receiveSpeed",label:e.$t("status.flowDownload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.receiveSpeedText)+"/s",1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"oper",label:e.$t("status.flowOper"),width:"70"},{default:(0,l.k6)((t=>[t.row.detail?((0,l.uX)(),(0,l.Wv)(d,{key:0,size:"small",onClick:e=>s.handleShowDetail(t.row.id)},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.flowDetail")),1)])),_:2},1032,["onClick"])):(0,l.Q3)("",!0)])),_:1},8,["label"])])),_:1},8,["data"])])])),_:1},8,["title","modelValue"]),s.state.details.Messenger?((0,l.uX)(),(0,l.Wv)(p,{key:1,config:s.config,modelValue:s.state.details.Messenger,"onUpdate:modelValue":t[5]||(t[5]=e=>s.state.details.Messenger=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0),s.state.details.SForward?((0,l.uX)(),(0,l.Wv)(m,{key:2,config:s.config,modelValue:s.state.details.SForward,"onUpdate:modelValue":t[6]||(t[6]=e=>s.state.details.SForward=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0),s.state.details.Relay?((0,l.uX)(),(0,l.Wv)(g,{key:3,config:s.config,modelValue:s.state.details.Relay,"onUpdate:modelValue":t[7]||(t[7]=e=>s.state.details.Relay=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0),s.state.showMap?((0,l.uX)(),(0,l.Wv)(v,{key:4,config:s.config,modelValue:s.state.showMap,"onUpdate:modelValue":t[8]||(t[8]=e=>s.state.showMap=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0),s.state.showAllMap?((0,l.uX)(),(0,l.Wv)(f,{key:5,config:s.config,modelValue:s.state.showAllMap,"onUpdate:modelValue":t[9]||(t[9]=e=>s.state.showAllMap=e)},null,8,["config","modelValue"])):(0,l.Q3)("",!0)],64)}a(44114);var ie=a(84921);function de(e,t,a,s,n,r){const i=(0,l.g2)("el-table-column"),d=(0,l.g2)("el-table"),u=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(u,{title:e.$t("status.flowMessenger"),class:"options-center",top:"1vh","destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.show=e),width:"680"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.bF)(d,{data:s.state.list,stripe:"",border:"",size:"small",width:"100%",height:"60vh"},{default:(0,l.k6)((()=>[(0,l.bF)(i,{prop:"id",label:"id",width:"200"}),(0,l.bF)(i,{prop:"sendtBytes",label:e.$t("status.flowUpload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.sendtBytesText),1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"sendtSpeed",label:e.$t("status.flowUpload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.sendtSpeedText)+"/s",1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"receiveBytes",label:e.$t("status.flowDownload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.receiveBytesText),1)])),_:1},8,["label"]),(0,l.bF)(i,{prop:"receiveSpeed",label:e.$t("status.flowDownload"),sortable:""},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.receiveSpeedText)+"/s",1)])),_:1},8,["label"])])),_:1},8,["data"])])])),_:1},8,["title","modelValue"])}var ue={props:["modelValue","config"],emits:["update:modelValue"],setup(e,{emit:t}){const{t:a}=(0,z.s9)(),o=(0,_.Kh)({show:!0,timer:0,list:[],old:null});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const s=()=>{clearTimeout(o.timer),(0,ie.zq)().then((e=>{const t=o.old||e,l=[];for(let o in e){const s=e[o],r=t[o],i=`[${o}]${a(`status.messenger${o}`)||"unknown"}`;l.push({id:i,sendtBytes:s.SendtBytes,sendtBytesText:n(s.SendtBytes),sendtSpeed:s.SendtBytes-r.SendtBytes,sendtSpeedText:n(s.SendtBytes-r.SendtBytes),receiveBytes:s.ReceiveBytes,receiveBytesText:n(s.ReceiveBytes),receiveSpeed:s.ReceiveBytes-r.ReceiveBytes,receiveSpeedText:n(s.ReceiveBytes-r.ReceiveBytes)})}o.list=l.filter((e=>!!e.id)),o.old=e,o.timer=setTimeout(s,1e3)})).catch((e=>{o.timer=setTimeout(s,1e3)}))},n=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`};return(0,l.sV)((()=>{s()})),(0,l.hi)((()=>{clearTimeout(o.timer)})),{config:e.config,state:o}}};const ce=(0,T.A)(ue,[["render",de],["__scopeId","data-v-80718c08"]]);var pe=ce;const me={class:"head"},ge={class:"page t-c"},ve={class:"page-wrap"};function fe(e,t,a,s,n,r){const i=(0,l.g2)("el-input"),d=(0,l.g2)("el-table-column"),u=(0,l.g2)("el-table"),c=(0,l.g2)("el-pagination"),p=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(p,{title:e.$t("status.flowServerForward"),class:"options-center",top:"1vh","destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.show=e),width:"680"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",me,[(0,l.bF)(i,{modelValue:s.state.page.Key,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.page.Key=e),placeholder:e.$t("status.flowSearchDomainPort")},null,8,["modelValue","placeholder"])]),(0,l.bF)(u,{data:s.state.list,stripe:"",border:"",size:"small",width:"100%",height:"60vh",onSortChange:s.handleSort},{default:(0,l.k6)((()=>[(0,l.bF)(d,{prop:"Key",label:e.$t("status.flowSearchDomainPort"),width:"200"},null,8,["label"]),(0,l.bF)(d,{prop:"SendtBytes",label:e.$t("status.flowUpload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.SendtBytesText),1)])),_:1},8,["label"]),(0,l.bF)(d,{prop:"DiffSendtBytes",label:e.$t("status.flowUpload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.DiffSendtBytesText)+"/s",1)])),_:1},8,["label"]),(0,l.bF)(d,{prop:"ReceiveBytes",label:e.$t("status.flowDownload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.ReceiveBytesText),1)])),_:1},8,["label"]),(0,l.bF)(d,{prop:"DiffReceiveBytes",label:e.$t("status.flowDownload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.DiffReceiveBytesText)+"/s",1)])),_:1},8,["label"])])),_:1},8,["data","onSortChange"]),(0,l.Lk)("div",ge,[(0,l.Lk)("div",ve,[(0,l.bF)(c,{small:"",background:"",layout:"total,prev,pager, next",total:s.state.page.Count,"page-size":s.state.page.PageSize,"current-page":s.state.page.Page,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","onCurrentChange"])])])])])),_:1},8,["title","modelValue"])}var he={props:["modelValue","config"],emits:["update:modelValue"],setup(e,{emit:t}){const a=(0,_.Kh)({show:!0,timer:0,list:[],page:{Key:"",Page:1,PageSize:15,Count:0,Order:1,OrderType:0}});(0,l.wB)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=()=>{clearTimeout(a.timer),(0,ie.mb)({Key:a.page.Key,Page:a.page.Page,PageSize:a.page.PageSize,Order:a.page.Order,OrderType:a.page.OrderType}).then((e=>{try{a.page.Page=e.Page,a.page.PageSize=e.PageSize,a.page.Count=e.Count;const t=[];for(let a=0;a{a.timer=setTimeout(o,1e3)}))},s=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`},n=e=>{e&&(a.page.Page=e)},r=e=>{const t={ascending:1,descending:0}[e.order],l={SendtBytes:1,DiffSendtBytes:2,ReceiveBytes:3,DiffReceiveBytes:4}[e.prop];a.page.Order=l,a.page.OrderType=t};return(0,l.sV)((()=>{o()})),(0,l.hi)((()=>{clearTimeout(a.timer)})),{config:e.config,state:a,handlePageChange:n,handleSort:r}}};const we=(0,T.A)(he,[["render",fe],["__scopeId","data-v-f73b7458"]]);var ke=we;const be={class:"head"},ye={class:"page t-c"},Se={class:"page-wrap"};function _e(e,t,a,s,n,r){const i=(0,l.g2)("el-input"),d=(0,l.g2)("el-table-column"),u=(0,l.g2)("el-table"),c=(0,l.g2)("el-pagination"),p=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(p,{title:e.$t("status.flowRelay"),class:"options-center",top:"1vh","destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.show=e),width:"680"},{default:(0,l.k6)((()=>[(0,l.Lk)("div",null,[(0,l.Lk)("div",be,[(0,l.bF)(i,{modelValue:s.state.page.Key,"onUpdate:modelValue":t[0]||(t[0]=e=>s.state.page.Key=e),placeholder:"名字搜索"},null,8,["modelValue"])]),(0,l.bF)(u,{data:s.state.list,stripe:"",border:"",size:"small",width:"100%",height:"60vh",onSortChange:s.handleSort},{default:(0,l.k6)((()=>[(0,l.bF)(d,{prop:"FromName",label:e.$t("status.flowRelaySource"),width:"120"},null,8,["label"]),(0,l.bF)(d,{prop:"ToName",label:e.$t("status.flowRelayTarget"),width:"120"},null,8,["label"]),(0,l.bF)(d,{prop:"SendtBytes",label:e.$t("status.flowUpload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.SendtBytesText),1)])),_:1},8,["label"]),(0,l.bF)(d,{prop:"DiffSendtBytes",label:e.$t("status.flowUpload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.DiffSendtBytesText)+"/s",1)])),_:1},8,["label"]),(0,l.bF)(d,{prop:"ReceiveBytes",label:e.$t("status.flowDownload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.ReceiveBytesText),1)])),_:1},8,["label"]),(0,l.bF)(d,{prop:"DiffReceiveBytes",label:e.$t("status.flowDownload"),sortable:"custom"},{default:(0,l.k6)((e=>[(0,l.Lk)("span",null,(0,o.v_)(e.row.DiffReceiveBytesText)+"/s",1)])),_:1},8,["label"])])),_:1},8,["data","onSortChange"]),(0,l.Lk)("div",ye,[(0,l.Lk)("div",Se,[(0,l.bF)(c,{small:"",background:"",layout:"total,prev,pager, next",total:s.state.page.Count,"page-size":s.state.page.PageSize,"current-page":s.state.page.Page,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","onCurrentChange"])])])])])),_:1},8,["title","modelValue"])}var Ce={props:["modelValue","config"],emits:["update:modelValue"],setup(e,{emit:t}){const a=(0,_.Kh)({show:!0,timer:0,list:[],page:{Key:"",Page:1,PageSize:15,Count:0,Order:1,OrderType:0}});(0,l.wB)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=()=>{clearTimeout(a.timer),(0,ie.xy)({Key:a.page.Key,Page:a.page.Page,PageSize:a.page.PageSize,Order:a.page.Order,OrderType:a.page.OrderType}).then((e=>{try{a.page.Page=e.Page,a.page.PageSize=e.PageSize,a.page.Count=e.Count;const t=[];for(let a=0;a{a.timer=setTimeout(o,1e3)}))},s=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`},n=e=>{e&&(a.page.Page=e)},r=e=>{const t={ascending:1,descending:0}[e.order],l={SendtBytes:1,DiffSendtBytes:2,ReceiveBytes:3,DiffReceiveBytes:4}[e.prop];a.page.Order=l,a.page.OrderType=t};return(0,l.sV)((()=>{o()})),(0,l.hi)((()=>{clearTimeout(a.timer)})),{config:e.config,state:a,handlePageChange:n,handleSort:r}}};const Fe=(0,T.A)(Ce,[["render",_e],["__scopeId","data-v-019c1d95"]]);var Be=Fe;const Ve=e=>((0,l.Qi)("data-v-3c0782be"),e=e(),(0,l.jt)(),e),$e=Ve((()=>(0,l.Lk)("div",{class:"map-wrap",id:"map"},null,-1)));function xe(e,t,a,o,s,n){const r=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(r,{class:"options-center",title:e.$t("status.flowOnline"),"destroy-on-close":"",modelValue:o.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>o.state.show=e),width:"77rem",top:"2vh"},{default:(0,l.k6)((()=>[$e])),_:1},8,["title","modelValue"])}var Le=a(90083),Te={props:["modelValue"],emits:["update:modelValue"],setup(e,{emit:t}){const{t:a}=(0,z.s9)(),o=(0,_.Kh)({show:!0});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const s=(e,t)=>{const l=L.map("map").setView([38,105],4);L.tileLayer("https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}",{attribution:"linker",maxZoom:10}).addTo(l);for(let s=0;s\n

${o.MachineName}

\n
${a("status.flowArea")} : ${n.CountryCode}、${n.City}
\n
${a("status.flowNet")} : ${n.Isp}
\n \n `;new L.marker(new L.latLng([n.Lat+Math.random()/5,n.Lon+Math.random()/5]),{icon:r}).bindPopup(i,{}).on("mouseover",(function(e){this.openPopup()})).on("mouseout",(function(e){this.closePopup()})).addTo(l)}catch(o){console.log(o)}};return(0,l.sV)((()=>{(0,l.dY)((()=>{(0,Le.r7)().then((e=>{(0,A.NT)().then((t=>{s(e.List,t)})).catch((()=>{}))})).catch((()=>{}))}))})),{state:o}}};const Pe=(0,T.A)(Te,[["render",xe],["__scopeId","data-v-3c0782be"]]);var Ee=Pe;const De=e=>((0,l.Qi)("data-v-6f5477f6"),e=e(),(0,l.jt)(),e),Ie=De((()=>(0,l.Lk)("div",{class:"map-wrap",id:"map"},null,-1)));function Re(e,t,a,o,s,n){const r=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.Wv)(r,{class:"options-center",title:e.$t("status.flowOnline"),"destroy-on-close":"",modelValue:o.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>o.state.show=e),width:"77rem",top:"2vh"},{default:(0,l.k6)((()=>[Ie])),_:1},8,["title","modelValue"])}var Ae={props:["modelValue"],emits:["update:modelValue"],setup(e,{emit:t}){const{t:a}=(0,z.s9)(),o=(0,_.Kh)({show:!0});(0,l.wB)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const s=e=>{const t=L.map("map").setView([38,105],4);L.tileLayer("https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}",{attribution:"linker",maxZoom:10}).addTo(t);for(let a=0;a\n

${l.City} ${l.Count}

\n \n `;new L.marker(new L.latLng([l.Lat,l.Lon]),{icon:o}).bindPopup(s,{}).on("mouseover",(function(e){this.openPopup()})).on("mouseout",(function(e){this.closePopup()})).addTo(t)}};return(0,l.sV)((()=>{(0,l.dY)((()=>{(0,ie.B8)().then((e=>{s(e)})).catch((()=>{}))}))})),{state:o}}};const Ue=(0,T.A)(Ae,[["render",Re],["__scopeId","data-v-6f5477f6"]]);var ze=Ue,We={props:["config"],components:{ServerFlowMessenger:pe,ServerFlowSForward:ke,ServerFlowRelay:Be,OnlineMap:Ee,OnlineAllMap:ze},setup(e){const{t:t}=(0,z.s9)(),a=(0,B.B)(),o=(0,l.EW)((()=>a.value.hasAccess("SForwardFlow"))),s=(0,l.EW)((()=>a.value.hasAccess("RelayFlow"))),n=(0,l.EW)((()=>a.value.hasAccess("SigninFlow"))),r=(0,_.Kh)({show:!1,timer:0,overallSendtSpeed:"0000.00KB",overallReceiveSpeed:"0000.00KB",overallOnline:"0/0",serverOnline:"",time:"",list:[],old:null,details:{Messenger:!1,SForward:!1,Relay:!1},showMap:!1,showAllMap:!1}),i=()=>{r.show=!0},d=e=>{r.details[e]=!0},u={External:{text:t("status.flowWanPort"),detail:!1},RelayReport:{text:t("status.flowRelayNode"),detail:!1},Relay:{text:t("status.flowRelay"),detail:s.value},Messenger:{text:t("status.flowMessenger"),detail:n.value},SForward:{text:t("status.flowServerForward"),detail:o.value},flow:{text:"",detail:!1}},c=()=>{clearTimeout(r.timer),(0,ie.Qj)().then((e=>{const t=r.old||e;if(e.Items["_"]&&(r.overallOnline=`${e.Items["_"].SendtBytes}/${e.Items["_"].ReceiveBytes}`,delete e.Items["_"]),e.Items["flow"]&&e.Items["flow"].ReceiveBytes>0){const t=(BigInt(e.Items["flow"].ReceiveBytes)>>BigInt(32)).toString(),a=(BigInt(e.Items["flow"].ReceiveBytes)&BigInt(4294967295)).toString(),l=e.Items["flow"].SendtBytes;r.serverOnline=`、${t}/${a}/${l}`,delete e.Items["flow"]}let a=0,l=0,o=0,s=0;for(let r in t.Items)a+=t.Items[r].ReceiveBytes,l+=t.Items[r].SendtBytes;for(let r in e.Items)o+=e.Items[r].ReceiveBytes,s+=e.Items[r].SendtBytes;r.overallSendtSpeed=p(s-l),r.overallReceiveSpeed=p(o-a),r.time=`${e.Start}`;const n=[];for(let r in e.Items){const a=e.Items[r],l=t.Items[r],o=u[`${r}`]||{text:`Unknow${r}`,detail:!1};n.push({id:r,text:o.text,detail:o.detail,sendtBytes:a.SendtBytes,sendtBytesText:p(a.SendtBytes),sendtSpeed:a.SendtBytes-l.SendtBytes,sendtSpeedText:p(a.SendtBytes-l.SendtBytes),receiveBytes:a.ReceiveBytes,receiveBytesText:p(a.ReceiveBytes),receiveSpeed:a.ReceiveBytes-l.ReceiveBytes,receiveSpeedText:p(a.ReceiveBytes-l.ReceiveBytes)})}r.list=n.filter((e=>!!e.id)),r.old=e,r.timer=setTimeout(c,1e3)})).catch((e=>{r.timer=setTimeout(c,1e3)}))},p=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B","KB","MB","GB","TB"][t]}`};return(0,l.sV)((()=>{c()})),(0,l.hi)((()=>{clearTimeout(r.timer)})),{hasSForwardFlow:o,config:e.config,state:r,handleShow:i,handleShowDetail:d}}};const Xe=(0,T.A)(We,[["render",re],["__scopeId","data-v-12cd5250"]]);var Oe=Xe;const Ne=["title"],Ke={key:0,class:"progress"},Me={key:1,class:"progress"};function Ge(e,t,a,s,n,r){const i=(0,l.g2)("Loading"),d=(0,l.g2)("el-icon"),u=(0,l.g2)("Download"),c=(0,l.g2)("CircleCheck");return(0,l.uX)(),(0,l.CE)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>s.handleUpdate&&s.handleUpdate(...e)),class:(0,o.C4)(["download",s.updateColor()]),title:s.updateText()},[(0,l.Lk)("span",null,(0,o.v_)(s.state.version),1),s.updaterServer.Version?((0,l.uX)(),(0,l.CE)(l.FK,{key:0},[1==s.updaterServer.Status?((0,l.uX)(),(0,l.Wv)(d,{key:0,size:"14",class:"loading"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1})):2==s.updaterServer.Status?((0,l.uX)(),(0,l.Wv)(d,{key:1,size:"14"},{default:(0,l.k6)((()=>[(0,l.bF)(u)])),_:1})):3==s.updaterServer.Status||5==s.updaterServer.Status?((0,l.uX)(),(0,l.CE)(l.FK,{key:2},[(0,l.bF)(d,{size:"14",class:"loading"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1}),0==s.updaterServer.Length?((0,l.uX)(),(0,l.CE)("span",Ke,"0%")):((0,l.uX)(),(0,l.CE)("span",Me,(0,o.v_)(parseInt(s.updaterServer.Current/s.updaterServer.Length*100))+"%",1))],64)):6==s.updaterServer.Status?((0,l.uX)(),(0,l.Wv)(d,{key:3,size:"14",class:"yellow"},{default:(0,l.k6)((()=>[(0,l.bF)(c)])),_:1})):(0,l.Q3)("",!0)],64)):((0,l.uX)(),(0,l.Wv)(d,{key:1,size:"14"},{default:(0,l.k6)((()=>[(0,l.bF)(u)])),_:1}))],10,Ne)}var Qe=a(12933),je=a(80920),Ye={components:{Promotion:$.Yk4,Download:$.f5X,Loading:$.Rhj,CircleCheck:$.rW7,ServerFlow:Oe},props:["config"],setup(e){const{t:t}=(0,z.s9)(),a=(0,B.B)(),o=(0,l.EW)((()=>a.value.hasAccess("UpdateServer"))),s=(0,_.KR)({Version:"",Status:0,Length:0,Current:0,Msg:[],DateTime:""}),n=(0,_.Kh)({show:!1,loading:!1,connected:(0,l.EW)((()=>a.value.signin.Connected)),version:(0,l.EW)((()=>a.value.signin.Version)),timer:0}),r=()=>{clearTimeout(n.timer),(0,je.BJ)().then((e=>{s.value.Version=e.Version,s.value.Status=e.Status,s.value.Length=e.Length,s.value.Current=e.Current,s.value.Status>2&&s.value.Status<6&&(n.timer=setTimeout((()=>{r()}),1e3))})).catch((()=>{n.timer=setTimeout((()=>{r()}),1e3)}))},i=()=>s.value.Version?s.value.Status<=2?n.version!=s.value.Version?`${t("status.serverNotNew")}(${s.value.Version})`:`${t("status.serverNew")}`:{3:t("status.serverDownloading"),4:t("status.serverDownloaded"),5:t("status.serverUnZipIng"),6:t("status.serverUnZip")}[s.value.Status]:t("status.serverNoUpdate"),d=()=>n.version!=s.value.Version?"yellow":"green",u=()=>{e.config&&o.value&&([0,1,3,5].indexOf(s.value.Status)>=0?U.nk.error(t("common.operating")):6!=s.value.Status?2==s.value.Status&&Qe.s.confirm(t("status.serverConfirm"),t("common.tips"),{confirmButtonText:t("common.confirm"),cancelButtonText:t("common.cancel"),type:"warning"}).then((()=>{(0,je.y2)(s.value.Version||a.value.signin.Version).then((()=>{setTimeout((()=>{r()}),1e3)}))})).catch((()=>{})):Qe.s.confirm(t("status.serverCloseConfirm"),t("common.tips"),{confirmButtonText:t("common.confirm"),cancelButtonText:t("common.cancel"),type:"warning"}).then((()=>{(0,je.aP)()})).catch((()=>{})))};return(0,l.sV)((()=>{r()})),{config:e.config,state:n,updaterServer:s,handleUpdate:u,updateText:i,updateColor:d}}};const qe=(0,T.A)(Ye,[["render",Ge],["__scopeId","data-v-6baf133f"]]);var Ze=qe,He={components:{ServerConfig:te,ServerFlow:Oe,ServerVersion:Ze},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.hasAccess("Flow"))),o=(0,_.Kh)({show:!1,loading:!1});return{config:e.config,hasFlow:a,state:o}}};const Je=(0,T.A)(He,[["render",I],["__scopeId","data-v-2d85a782"]]);var et=Je;const tt={key:0,class:"status-export-wrap"},at=["title"],lt={key:0},ot={class:"port-wrap"},st={class:"text"},nt={class:"body"},rt={class:"card-header"},it={class:"flex flex-nowrap"},dt={style:{width:"11rem"}},ut={class:"flex flex-nowrap mgt-1"},ct={style:{width:"11rem"}},pt={class:"flex flex-nowrap mgt-1"},mt={style:{width:"11rem"}},gt={class:"port-wrap"},vt={class:"port-wrap"},ft={style:{"margin-top":"1rem"}};function ht(e,t,a,s,n,r){const i=(0,l.g2)("Share"),d=(0,l.g2)("el-icon"),u=(0,l.g2)("el-checkbox"),c=(0,l.g2)("el-col"),p=(0,l.g2)("el-input"),m=(0,l.g2)("el-row"),g=(0,l.g2)("Access"),v=(0,l.g2)("el-card"),f=(0,l.g2)("el-button"),h=(0,l.g2)("el-dialog");return s.config&&s.hasExport?((0,l.uX)(),(0,l.CE)("div",tt,[(0,l.Lk)("a",{href:"javascript:;",title:e.$t("status.export"),onClick:t[0]||(t[0]=e=>s.state.show=!0)},[(0,l.bF)(d,{size:"16"},{default:(0,l.k6)((()=>[(0,l.bF)(i)])),_:1}),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("span",lt,(0,o.v_)(e.$t("status.export")),1)):(0,l.Q3)("",!0)],8,at),(0,l.bF)(h,{class:"options-center",title:e.$t("status.export"),"destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[12]||(t[12]=e=>s.state.show=e),center:"",width:"580",top:"1vh"},{footer:(0,l.k6)((()=>[(0,l.bF)(f,{plain:"",onClick:t[11]||(t[11]=e=>s.state.show=!1),loading:s.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("common.cancel")),1)])),_:1},8,["loading"]),(0,l.bF)(f,{type:"default",plain:"",onClick:s.handleExport,loading:s.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.exportDownload")),1)])),_:1},8,["onClick","loading"]),(0,l.bF)(f,{type:"info",plain:"",onClick:s.handleCopy,loading:s.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.exportCopy")),1)])),_:1},8,["onClick","loading"]),(0,l.bF)(f,{type:"success",plain:"",onClick:s.handleSave,loading:s.state.loading},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.exportSave")),1)])),_:1},8,["onClick","loading"])])),default:(0,l.k6)((()=>[(0,l.Lk)("div",ot,[(0,l.Lk)("div",st,(0,o.v_)(e.$t("status.exportText")),1),(0,l.Lk)("div",nt,[(0,l.bF)(v,{shadow:"never"},{header:(0,l.k6)((()=>[(0,l.Lk)("div",rt,[(0,l.Lk)("div",null,[(0,l.bF)(m,null,{default:(0,l.k6)((()=>[(0,l.bF)(c,{span:12},{default:(0,l.k6)((()=>[(0,l.bF)(u,{disabled:s.onlyNode,modelValue:s.state.single,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.single=e),label:e.$t("status.exportSingle")},null,8,["disabled","modelValue","label"])])),_:1}),(0,l.bF)(c,{span:12},{default:(0,l.k6)((()=>[(0,l.Lk)("div",it,[(0,l.Lk)("span",dt,(0,o.v_)(e.$t("status.exportName"))+" : ",1),(0,l.bF)(p,{disabled:!s.state.single,modelValue:s.state.name,"onUpdate:modelValue":t[2]||(t[2]=e=>s.state.name=e),maxlength:"32","show-word-limit":""},null,8,["disabled","modelValue"])])])),_:1})])),_:1})]),(0,l.Lk)("div",null,[(0,l.bF)(m,null,{default:(0,l.k6)((()=>[(0,l.bF)(c,{span:12},{default:(0,l.k6)((()=>[(0,l.Lk)("div",ut,[(0,l.Lk)("span",ct,(0,o.v_)(e.$t("status.exportWebport"))+" : ",1),(0,l.bF)(p,{disabled:s.onlyNode,modelValue:s.state.webport,"onUpdate:modelValue":t[3]||(t[3]=e=>s.state.webport=e)},null,8,["disabled","modelValue"])])])),_:1}),(0,l.bF)(c,{span:12},{default:(0,l.k6)((()=>[(0,l.Lk)("div",pt,[(0,l.Lk)("span",mt,(0,o.v_)(e.$t("status.exportApiPassword"))+" : ",1),(0,l.bF)(p,{type:"password","show-password":"",disabled:s.onlyNode,modelValue:s.state.apipassword,"onUpdate:modelValue":t[4]||(t[4]=e=>s.state.apipassword=e),maxlength:"36","show-word-limit":""},null,8,["disabled","modelValue"])])])),_:1})])),_:1})]),(0,l.Lk)("div",null,[(0,l.bF)(m,null,{default:(0,l.k6)((()=>[(0,l.bF)(c,{xs:12,sm:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.relay,"onUpdate:modelValue":t[5]||(t[5]=e=>s.state.relay=e),label:e.$t("status.exportRelay")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(c,{xs:12,sm:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.sforward,"onUpdate:modelValue":t[6]||(t[6]=e=>s.state.sforward=e),label:e.$t("status.exportSForward")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(c,{xs:12,sm:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.updater,"onUpdate:modelValue":t[7]||(t[7]=e=>s.state.updater=e),label:e.$t("status.exportUpdater")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(c,{xs:12,sm:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.server,"onUpdate:modelValue":t[8]||(t[8]=e=>s.state.server=e),label:e.$t("status.exportServer")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(c,{xs:12,sm:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.group,"onUpdate:modelValue":t[9]||(t[9]=e=>s.state.group=e),label:e.$t("status.exportGroup")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(c,{xs:12,sm:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.tunnel,"onUpdate:modelValue":t[10]||(t[10]=e=>s.state.tunnel=e),label:e.$t("status.exportTunnel")},null,8,["modelValue","label"])])),_:1})])),_:1})])])])),default:(0,l.k6)((()=>[(0,l.bF)(g,{ref:"accessDom",machineid:s.machineId,height:30},null,8,["machineid"])])),_:1})])])])),_:1},8,["title","modelValue"]),(0,l.bF)(h,{class:"options-center",title:e.$t("status.export"),"destroy-on-close":"",modelValue:s.state.showCopy,"onUpdate:modelValue":t[14]||(t[14]=e=>s.state.showCopy=e),center:"",width:"580",top:"1vh"},{footer:(0,l.k6)((()=>[(0,l.bF)(f,{plain:"",onClick:s.copyToClipboard},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.exportCopy")),1)])),_:1},8,["onClick"])])),default:(0,l.k6)((()=>[(0,l.Lk)("div",gt,[(0,l.bF)(p,{modelValue:s.state.copyContent,"onUpdate:modelValue":t[13]||(t[13]=e=>s.state.copyContent=e),type:"textarea",rows:10,resize:"none",readonly:""},null,8,["modelValue"])])])),_:1},8,["title","modelValue"]),(0,l.bF)(h,{class:"options-center",title:e.$t("status.export"),"destroy-on-close":"",modelValue:s.state.showSave,"onUpdate:modelValue":t[17]||(t[17]=e=>s.state.showSave=e),center:"",width:"300",top:"1vh"},{footer:(0,l.k6)((()=>[(0,l.bF)(f,{plain:"",onClick:s.copySaveToClipboard},{default:(0,l.k6)((()=>[(0,l.eW)((0,o.v_)(e.$t("status.exportCopy")),1)])),_:1},8,["onClick"])])),default:(0,l.k6)((()=>[(0,l.Lk)("div",vt,[(0,l.Lk)("div",null,[(0,l.bF)(p,{modelValue:s.state.saveServer,"onUpdate:modelValue":t[15]||(t[15]=e=>s.state.saveServer=e),readonly:""},null,8,["modelValue"])]),(0,l.Lk)("div",ft,[(0,l.bF)(p,{modelValue:s.state.saveContent,"onUpdate:modelValue":t[16]||(t[16]=e=>s.state.saveContent=e),readonly:""},null,8,["modelValue"])])])])),_:1},8,["title","modelValue"])])):(0,l.Q3)("",!0)}var wt=a(88835),kt=a(46700),bt={components:{Share:$.SYj,Access:kt.A},props:["config"],setup(e){const{t:t}=(0,z.s9)(),a=(0,B.B)(),o=(0,l.EW)((()=>a.value.hasAccess("Export"))),s=(0,l.EW)((()=>a.value.config.Client.OnlyNode)),n=(0,l.EW)((()=>a.value.config.Client.Id)),r=(0,_.Kh)({show:!1,loading:!1,single:!0,name:"",apipassword:s.value?a.value.config.Client.CApi.ApiPassword:"",webport:a.value.config.Client.CApi.WebPort,relay:!0,sforward:!0,updater:!0,server:!0,group:!0,tunnel:!0,copyContent:"",showCopy:!1,saveServer:a.value.config.Client.Server.Host,saveContent:"",showSave:!1}),i=(0,_.KR)(null),d=()=>{if(!o.value)return void U.nk.success("无权限");const e={access:i.value.getValue(),single:r.single,name:r.name,apipassword:r.apipassword,webport:+r.webport,relay:r.relay,sforward:r.sforward,updater:r.updater,server:r.server,group:r.group,tunnel:r.tunnel};if(e.single){if(!e.name)return void U.nk.error(t("status.exportNamePlease"))}else e.name="";if(e.apipassword){if(!(!e.webport||isNaN(e.webport)||e.webport<=0||e.webport>65535))return e;U.nk.error(t("status.exportWebportPlease"))}else U.nk.error(t("status.exportApiPasswordPlease"))},u=()=>{const e=document.createElement("a");r.single?e.download=`client-node-export-${r.name}.zip`:e.download="client-node-export.zip",e.href="/client-node-export.zip",document.body.appendChild(e),e.click(),document.body.removeChild(e)},c=()=>{const e=d();e&&(r.loading=!0,(0,wt.ql)(e).then((e=>{r.loading=!1,e?(r.show=!1,U.nk.success(t("common.oper")),r.saveContent=e,r.showSave=!0):U.nk.error(t("common.operFail"))})).catch((()=>{U.nk.error(t("common.operFail")),r.loading=!1})))},p=async()=>{try{return await navigator.clipboard.writeText(`在初始化linker客户端时,填写服务器和密钥,导入配置\n服务器: ${r.saveServer}\n密钥: ${r.saveContent}`),U.nk.success(t("common.oper")),!0}catch(e){return U.nk.error(t("common.operFail")),!1}},m=()=>{const e=d();e&&(r.loading=!0,(0,wt.P$)(e).then((()=>{r.loading=!1,r.show=!1,U.nk.success(t("common.oper")),u()})).catch((()=>{U.nk.error(t("common.operFail")),r.loading=!1})))},g=()=>{const e=d();e&&(r.loading=!0,(0,wt.om)(e).then((e=>{r.loading=!1,r.show=!1,U.nk.success(t("common.oper")),r.copyContent=e,r.showCopy=!0})).catch((()=>{U.nk.error(t("common.operFail")),r.loading=!1})))},v=async()=>{try{return await navigator.clipboard.writeText(r.copyContent),U.nk.success(t("common.oper")),!0}catch(e){return U.nk.error(t("common.operFail")),!1}};return{globalData:a,config:e.config,onlyNode:s,hasExport:o,machineId:n,state:r,accessDom:i,handleSave:c,handleExport:m,handleCopy:g,copyToClipboard:v,copySaveToClipboard:p}}};const yt=(0,T.A)(bt,[["render",ht],["__scopeId","data-v-5ab6aefb"]]);var St=yt,_t=a(62956),Ct={components:{Api:E,Server:et,Export:St,UpdaterBtn:_t.A},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.self)),o=(0,_.Kh)({showPay:!1});return{globalData:t,state:o,config:e.config,self:a}}};const Ft=(0,T.A)(Ct,[["render",S],["__scopeId","data-v-ab734c72"]]);var Bt=Ft},58734:function(e,t,a){a.d(t,{A:function(){return v}});var l=a(56768);function o(e,t,a,o,s,n){const r=(0,l.g2)("Share"),i=(0,l.g2)("el-icon"),d=(0,l.g2)("el-button");return(0,l.uX)(),(0,l.CE)("div",null,[(0,l.bF)(d,{class:"btn",size:"small",onClick:o.handleSync},{default:(0,l.k6)((()=>[(0,l.bF)(i,null,{default:(0,l.k6)((()=>[(0,l.bF)(r)])),_:1})])),_:1},8,["onClick"])])}var s=a(10004);const n=e=>(0,s.zG)("sync/Sync",e);var r=a(53830),i=a(57477),d=a(51219),u=a(12933),c=a(35931),p={props:["name"],components:{Share:i.SYj},setup(e){const{t:t}=(0,c.s9)(),a=(0,r.B)(),o=(0,l.EW)((()=>a.value.hasAccess("Sync"))),s=()=>{o.value?u.s.confirm(`${t("server.sync")}【${t(`server.async${e.name}`)}】${t("server.asyncText")}? `,t("common.tips"),{confirmButtonText:t("common.confirm"),cancelButtonText:t("common.cancel"),type:"warning"}).then((()=>{n([e.name]).then((e=>{d.nk.success(t("common.oper"))}))})).catch((()=>{})):d.nk.success(t("common.access"))};return{handleSync:s}}},m=a(71241);const g=(0,m.A)(p,[["render",o]]);var v=g}}]); \ No newline at end of file diff --git a/src/linker.tray.win/web/js/app.2201faad.js b/src/linker.tray.win/web/js/app.2201faad.js deleted file mode 100644 index 61482299..00000000 --- a/src/linker.tray.win/web/js/app.2201faad.js +++ /dev/null @@ -1 +0,0 @@ -(function(){"use strict";var e={88835:function(e,r,t){t.d(r,{D3:function(){return l},P$:function(){return u},ai:function(){return n},om:function(){return i},ql:function(){return d},vZ:function(){return o},zj:function(){return a}});var s=t(10004);const a=()=>(0,s.zG)("config/get"),n=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),i=e=>(0,s.zG)("config/copy",e),d=e=>(0,s.zG)("config/save",e)},10004:function(e,r,t){t.d(r,{a1:function(){return g},e3:function(){return w},jH:function(){return h},zG:function(){return C}});t(44114),t(16573),t(78100),t(77936);var s=t(51219);let a=0,n=null,o="",l=1,u="";const i={},d={connected:!1,connecting:!1},c=()=>{const e=Date.now();for(let r in i){const t=i[r];e-t.time>t.timeout&&(t.reject("超时~"),delete i[r])}setTimeout(c,1e3)};c();const y={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)}},p=()=>{d.connected=!0,d.connecting=!1,y.push(k,d.connected)},v=e=>{d.connected=!1,d.connecting=!1,y.push(k,d.connected),setTimeout((()=>{g()}),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 a=JSON.parse(s.result);a.Content={Name:a.Content,Img:e.data.slice(4+t,e.data.length),ArrayBuffer:r},f(a)}}));let r=JSON.parse(e.data);f(r)},f=e=>{let r=i[e.RequestId];r?(0==e.Code?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}`)):y.push(e.Path,e.Content),delete i[e.RequestId]):y.push(e.Path,e.Content)},g=(e=o,r=u)=>{if(u=r,o=e,d.connecting||d.connected)return;null!=n&&n.close(),d.connecting=!0;const t=r||"snltty";n=new WebSocket(o,[t]),n.iddd=++l,n.onopen=p,n.onclose=v,n.onmessage=m,n.onerror=e=>{s.nk.error({message:"api接口连接失败,请检查接口地址或密码",grouping:!0})}},w=()=>{n&&n.close()},C=(e,r={},t=!1,s=15e3)=>new Promise(((o,l)=>{let u=++a;try{i[u]={resolve:o,reject:l,errHandle:t,path:e,time:Date.now(),timeout:s};let a=JSON.stringify({Path:e,RequestId:u,Content:"string"==typeof r?r:JSON.stringify(r)});d.connected&&1==n.readyState?n.send(a):l("网络错误~")}catch(c){console.log(c),l("网络错误~"),delete i[u]}})),k=Symbol(),h=e=>{y.add(k,e)}},69299:function(e,r,t){t.d(r,{BS:function(){return i},NT:function(){return p},SZ:function(){return o},Se:function(){return d},VN:function(){return l},gC:function(){return c},jU:function(){return n},nD:function(){return u},rd:function(){return a},wP:function(){return v},zp:function(){return y}});var s=t(10004);const a=e=>(0,s.zG)("signIn/set",e),n=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),i=e=>(0,s.zG)("signIn/ids",e),d=e=>(0,s.zG)("signIn/del",e),c=e=>(0,s.zG)("signIn/setname",e),y=e=>(0,s.zG)("signIn/SetGroups",e),p=()=>(0,s.zG)("signIn/names"),v=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),a={"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.relayMyCdkey":"My CDKEY","server.relayCdkey":"Manager CDKEY","server.relayAddCdkey":"Add CDKEY","server.relayCdkeyUserId":"UserId","server.relayCdkeyBandwidth":"Bandwidth","server.relayCdkeyBytes":"Bytes","server.relayCdkeyPay":"Pay","server.relayCdkeyOrder":"Order","server.relayCdkeyPrice":"Price","server.relayCdkeyPayPrice":"Pay price","server.relayCdkeyCostPrice":"Cost price","server.relayCdkeyUserPrice":"User price","server.relayCdkeyOrderId":"OrderNo","server.relayCdkeyContact":"Email","server.relayCdkeyRemark":"Remark","server.relayCdkeyAddTime":"Add","server.relayCdkeyStartTime":"Start","server.relayCdkeyEndTime":"End Time","server.relayCdkeyUseTime":"Use Time","server.relayCdkeyYear":"Year","server.relayCdkeyMonth":"Month","server.relayCdkeyDay":"Day","server.relayCdkeyHour":"Hour","server.relayCdkeyMin":"Min","server.relayCdkeySec":"Sec","server.relayCdkeyDuration":"Duration","server.relayCdkeyOper":"Oper","server.relayCdkeyDelConfirm":"Are you sure to delete?","server.relayCdkeyFlagAll":"All","server.relayCdkeyFlagTimein":"In end time","server.relayCdkeyFlagTimeout":"Out end time","server.relayCdkeyFlagBytesin":"Has bytes","server.relayCdkeyFlagBytesout":"Not have bytes","server.relayCdkeyFlagDeleted":"Deleted","server.relayCdkeyFlagUnDeleted":"Not deleted","server.relayCdkeyTestTitle":"Test CDKEY","server.relayCdkeyTestKey":"CDKEY","server.relayCdkeyTestGB":"GB","server.relayCdkeyTestGBError":"Must > 0","server.relayCdkeyTestSpeed":"Mbps","server.relayCdkeyTestSpeedError":"Must > 0","server.relayCdkeyTestTime":"Time","server.relayCdkeyTestTimeError":"Format error","server.relayCdkeyTestUserId":"UserId","server.relayCdkeyTestUserIdError":"UserId error","server.relayCdkeyTestOrderId":"OrderNo","server.relayCdkeyTestOrderIdError":"OrderNo is empty","server.relayCdkeyTestContact":"Contact","server.relayCdkeyTestCostPrice":"Cost","server.relayCdkeyTestPrice":"Price","server.relayCdkeyTestUserPrice":"User price","server.relayCdkeyTestPayPrice":"Pay","server.relayCdkeyTestCount":"Count","server.relayCdkeyTestCountError":"Must > 0","server.relayCdkeyTestType":"Type","server.relayCdkeyTestTypeError":"Must be relay","server.relayCdkeyTestParseError":"decode fail","server.relayCdkeyImport":"Import CDKEY","server.relayCdkeyImportParse":"Decode fail","server.relayCdkeyImportField":"Field invalid","server.relayCdkeyImportNetwork":"Network error","server.relayCdkeyImportOrderId":"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"},n={"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.relayMyCdkey":"我的CDKEY","server.relayCdkey":"管理CDKEY","server.relayAddCdkey":"添加CDKEY","server.relayCdkeyUserId":"用户标识","server.relayCdkeyBandwidth":"带宽","server.relayCdkeyBytes":"流量","server.relayCdkeyPay":"支付","server.relayCdkeyPrice":"原价","server.relayCdkeyPayPrice":"支付","server.relayCdkeyCostPrice":"成本","server.relayCdkeyUserPrice":"会员价","server.relayCdkeyOrder":"订单","server.relayCdkeyOrderId":"订单号","server.relayCdkeyContact":"邮箱","server.relayCdkeyRemark":"备注","server.relayCdkeyAddTime":"添加","server.relayCdkeyStartTime":"开始","server.relayCdkeyEndTime":"有效时间","server.relayCdkeyUseTime":"最后使用","server.relayCdkeyYear":"年","server.relayCdkeyMonth":"月","server.relayCdkeyDay":"日","server.relayCdkeyHour":"时","server.relayCdkeyMin":"分","server.relayCdkeySec":"秒","server.relayCdkeyDuration":"持续时间","server.relayCdkeyOper":"操作","server.relayCdkeyDelConfirm":"确认删除吗?","server.relayCdkeyFlagAll":"全部","server.relayCdkeyFlagTimein":"有效期内","server.relayCdkeyFlagTimeout":"有效期外","server.relayCdkeyFlagBytesin":"剩余","server.relayCdkeyFlagBytesout":"已用完","server.relayCdkeyFlagDeleted":"已删除","server.relayCdkeyFlagUnDeleted":"未删除","server.relayCdkeyTestTitle":"测试解密CDKEY","server.relayCdkeyTestKey":"CDKEY","server.relayCdkeyTestGB":"流量","server.relayCdkeyTestGBError":"流量要大于0","server.relayCdkeyTestSpeed":"带宽Mbps","server.relayCdkeyTestSpeedError":"带宽要大于0","server.relayCdkeyTestTime":"持续时间","server.relayCdkeyTestTimeError":"格式错误","server.relayCdkeyTestUserId":"用户标识","server.relayCdkeyTestUserIdError":"用户标识不正确","server.relayCdkeyTestOrderId":"订单","server.relayCdkeyTestOrderIdError":"订单号不能为空","server.relayCdkeyTestContact":"联系方式","server.relayCdkeyTestCostPrice":"成本","server.relayCdkeyTestPrice":"原价","server.relayCdkeyTestUserPrice":"会员价","server.relayCdkeyTestPayPrice":"支付","server.relayCdkeyTestCount":"数量","server.relayCdkeyTestCountError":"数量要大于0","server.relayCdkeyTestType":"类别","server.relayCdkeyTestTypeError":"类别应该是Relay","server.relayCdkeyTestParseError":"解密失败","server.relayCdkeyImport":"导入CDKEY","server.relayCdkeyImportParse":"解密失败","server.relayCdkeyImportField":"字段有误","server.relayCdkeyImportNetwork":"网络错误","server.relayCdkeyImportOrderId":"订单号已存在","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":a,"zh-CN":n}});var u=l},22773:function(e,r,t){t.d(r,{A:function(){return n}});var s=t(56768),a=t(35931);function n(){const e=(0,a.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}}},92441:function(e,r,t){var s=t(45130),a=t(56768),n=t(24232);function o(e,r,t,s,o,l){const u=(0,a.g2)("router-view"),i=(0,a.g2)("Api"),d=(0,a.g2)("el-config-provider"),c=(0,a.g2)("Refresh");return(0,a.uX)(),(0,a.CE)(a.FK,null,[(0,a.Lk)("div",{class:(0,n.C4)({phone:s.globalData.isPhone})},[(0,a.bF)(d,{locale:s.locale},{default:(0,a.k6)((()=>[s.configed?((0,a.uX)(),(0,a.Wv)(u,{key:0})):(0,a.Q3)("",!0),(0,a.bF)(i)])),_:1},8,["locale"])],2),(0,a.bF)(c)],64)}var l=t(53830);const u={class:"port-wrap t-c"},i={class:"pdt-10"},d={class:"pdt-10"};function c(e,r,t,n,o,l){const c=(0,a.g2)("el-input"),y=(0,a.g2)("el-checkbox"),p=(0,a.g2)("el-button"),v=(0,a.g2)("el-dialog");return(0,a.uX)(),(0,a.Wv)(v,{class:"options-center",title:"管理接口","destroy-on-close":"",modelValue:n.showPort,"onUpdate:modelValue":r[3]||(r[3]=e=>n.showPort=e),center:"","show-close":!1,"close-on-click-modal":!1,"align-center":"",width:"200"},{footer:(0,a.k6)((()=>[(0,a.bF)(p,{type:"success",onClick:n.handleConnect1,plain:""},{default:(0,a.k6)((()=>[(0,a.eW)("确 定")])),_:1},8,["onClick"])])),default:(0,a.k6)((()=>[(0,a.Lk)("div",u,[(0,a.Lk)("div",null,[(0,a.eW)(" 接口 : "),(0,a.bF)(c,{modelValue:n.state.api,"onUpdate:modelValue":r[0]||(r[0]=e=>n.state.api=e),style:{width:"70%"},onKeyup:(0,s.jR)(n.handleConnect1,["enter"])},null,8,["modelValue","onKeyup"])]),(0,a.Lk)("div",i,[(0,a.eW)(" 秘钥 : "),(0,a.bF)(c,{"show-password":"",type:"password",modelValue:n.state.psd,"onUpdate:modelValue":r[1]||(r[1]=e=>n.state.psd=e),style:{width:"70%"},onKeyup:(0,s.jR)(n.handleConnect1,["enter"])},null,8,["modelValue","onKeyup"])]),(0,a.Lk)("div",d,[(0,a.bF)(y,{modelValue:n.state.save,"onUpdate:modelValue":r[2]||(r[2]=e=>n.state.save=e)},{default:(0,a.k6)((()=>[(0,a.eW)("保存密码")])),_:1},8,["modelValue"])])])])),_:1},8,["modelValue"])}var y=t(81387),p=t(90144),v=t(10004),m=t(69299),f=t(88835),g=t(57477),w={components:{Tools:g.S0q},props:["config"],setup(e){const r=(0,l.B)(),t=(0,y.rd)(),s=(0,y.lq)(),n={api:`${window.location.hostname}:1803`,psd:"snltty"},o=JSON.parse(sessionStorage.getItem("api-cache")||localStorage.getItem("api-cache")||JSON.stringify(n)),u=(0,p.Kh)({api:o.api,psd:o.psd,showPort:!1,save:o.save||!1}),i=(0,a.EW)((()=>0==r.value.api.connected&&u.showPort)),d=()=>{o.api=u.api,o.psd=u.psd,o.save=u.save,u.save?localStorage.setItem("api-cache",JSON.stringify(o)):localStorage.setItem("api-cache",""),sessionStorage.setItem("api-cache",JSON.stringify(o)),(0,v.e3)();const e=`ws${"https:"===window.location.protocol?"s":""}://${u.api}`;(0,v.a1)(e,u.psd)},c=()=>{d(),window.location.reload()},g=()=>{(0,f.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((()=>{g()}),1e3)})).catch((e=>{setTimeout((()=>{g()}),1e3)}))},w=()=>{(0,m.SZ)().then((e=>{r.value.signin.Connected=e.Connected,r.value.signin.Version=e.Version,setTimeout((()=>{w()}),1e3)})).catch((e=>{setTimeout((()=>{w()}),1e3)}))};return(0,a.sV)((()=>{setTimeout((()=>{u.showPort=!0}),500),(0,v.jH)((e=>{e&&(g(),w())})),t.isReady().then((()=>{u.api=s.query.api?`${window.location.hostname}:${s.query.api}`:u.api,u.psd=s.query.psd||u.psd,d()}))})),{state:u,showPort:i,handleConnect1:c}}},C=t(71241);const k=(0,C.A)(w,[["render",c],["__scopeId","data-v-08aa73f8"]]);var h=k,S=t(2721),T=t(86726),b=t(22773);const P={class:"percentage-value"};function A(e,r,t,s,o,l){const u=(0,a.g2)("el-progress");return s.state.show?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"refresh-wrap",style:(0,n.Tr)({top:s.state.dy/4+"px"})},[(0,a.bF)(u,{type:"circle",percentage:s.state.percentage,width:"50"},{default:(0,a.k6)((({percentage:e})=>[(0,a.Lk)("span",P,(0,n.v_)(e)+"%",1)])),_:1},8,["percentage"])],4)):(0,a.Q3)("",!0)}var D={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,a.sV)((()=>{document.addEventListener("touchstart",r),document.addEventListener("touchmove",t),document.addEventListener("touchend",s),document.addEventListener("touchcancel",s)})),{state:e}}};const I=(0,C.A)(D,[["render",A],["__scopeId","data-v-dfc7a2f2"]]);var N=I,x={components:{Api:h,Refresh:N},setup(e){const r=(0,l.v)(),t=(0,a.EW)((()=>r.value.config.configed)),{currentLocale:s}=(0,b.A)(),n=(0,a.EW)((()=>"zh-CN"==s.value?S.A:T.A));return{configed:t,locale:n,globalData:r}}};const E=(0,C.A)(x,[["render",o]]);var K=E;const O=[{path:"/",name:"Full",component:()=>Promise.all([t.e(375),t.e(570),t.e(106)]).then(t.bind(t,55112)),redirect:"/full/index.html",children:[{path:"/full/index.html",name:"FullIndex",component:()=>Promise.all([t.e(375),t.e(159),t.e(94),t.e(36),t.e(119)]).then(t.bind(t,93238))},{path:"/full/servers.html",name:"FullServers",component:()=>t.e(855).then(t.bind(t,37855))},{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(94),t.e(926)]).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(375),t.e(570),t.e(159),t.e(663)]).then(t.bind(t,7332))},{path:"/no-permission.html",name:"NoPermission",component:()=>t.e(228).then(t.bind(t,96100))}],U=(0,y.aE)({history:(0,y.Bt)(),routes:O});var F=U,R=t(49287),M=t(66161);t(4188),t(42355),t(21862);const L=(0,s.Ef)(K);L.use(R.A),L.use(M.A,{size:"default"}).use(F).mount("#app");const B=["ResizeObserver loop completed with undelivered notifications","ResizeObserver loop limit exceeded"];window.addEventListener("error",(e=>{let r=e.message;B.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),a=t(90144),n=t(56768);const o=Symbol(),l=()=>{const e=(0,a.KR)({api:{connected:!1},width:0,height:0,isPhone:(0,n.EW)((()=>e.value.width<800)),isPc:(0,n.EW)((()=>e.value.width>=800)),config:{Common:{},Client:{Servers:[],Accesss:{}},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){if(void 0==this.config.Client.Accesss[e])return!1;const r=this.config.Client.Accesss[e].Value,t=this.config.Client.AccessBits||"";return"1"==t[r]}});return(0,s.jH)((r=>{e.value.api.connected=r})),(0,n.Gt)(o,e),e},u=()=>(0,n.WQ)(o)}},r={};function t(s){var a=r[s];if(void 0!==a)return a.exports;var n=r[s]={id:s,loaded:!1,exports:{}};return e[s].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}t.m=e,function(){var e=[];t.O=function(r,s,a,n){if(!s){var o=1/0;for(d=0;d=n)&&Object.keys(t.O).every((function(e){return t.O[e](s[u])}))?s.splice(u--,1):(l=!1,n0&&e[d-1][2]>n;d--)e[d]=e[d-1];e[d]=[s,a,n]}}(),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",94:"e6ced1cb",106:"7141ec35",119:"fc297451",159:"90f4524d",228:"80f5807e",259:"e75ec9c9",340:"92699d42",372:"ee624bb3",375:"bf6c9a3c",570:"c09ba66d",663:"a5ad7ec9",855:"1c3d2b9d",926:"1b6dcf67"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{32:"1374e89e",106:"f841026b",119:"7317b478",228:"b2a71eca",259:"453688d2",340:"f859e18d",372:"e4499fe6",663:"6fe624be",855:"ebb7f022",926:"63d4d106"}[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,a,n,o){if(e[s])e[s].push(a);else{var l,u;if(void 0!==n)for(var i=document.getElementsByTagName("script"),d=0;d(0,s.zG)("config/get"),n=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),i=e=>(0,s.zG)("config/copy",e),d=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 h},zG:function(){return C}});t(44114),t(16573),t(78100),t(77936);var s=t(51219);let a=0,n=null,o="",l=1,u="snltty";const i={},d={connected:!1,connecting:!1},c=()=>{const e=Date.now();for(let r in i){const t=i[r];e-t.time>t.timeout&&(t.reject(`超时:${JSON.stringify(t)}`),delete i[r])}setTimeout(c,1e3)};c();const y={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)}},p=()=>{d.connected=!0,d.connecting=!1,C("password",u||"snltty"),y.push(k,d.connected)},v=e=>{d.connected=!1,d.connecting=!1,y.push(k,d.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 a=JSON.parse(s.result);a.Content={Name:a.Content,Img:e.data.slice(4+t,e.data.length),ArrayBuffer:r},g(a)}}));let r=JSON.parse(e.data);g(r)},g=e=>{let r=i[e.RequestId];r?(0==e.Code?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}`)):y.push(e.Path,e.Content),delete i[e.RequestId]):y.push(e.Path,e.Content)},f=(e=o,r=u)=>{u=r,o=e,d.connecting||d.connected||(null!=n&&n.close(),d.connecting=!0,n=new WebSocket(o),n.iddd=++l,n.onopen=p,n.onclose=v,n.onmessage=m,n.onerror=e=>{s.nk.error({message:"api接口连接失败,请检查接口地址或密码",grouping:!0})})},w=()=>{n&&n.close()},C=(e,r={},t=!1,s=15e3)=>new Promise(((o,l)=>{let u=++a;try{i[u]={resolve:o,reject:l,errHandle:t,path:e,time:Date.now(),timeout:s};let a=JSON.stringify({Path:e,RequestId:u,Content:"string"==typeof r?r:JSON.stringify(r)});d.connected&&1==n.readyState?n.send(a):l("网络错误~")}catch(c){console.log(c),l("网络错误~"),delete i[u]}})),k=Symbol(),h=e=>{y.add(k,e)}},69299:function(e,r,t){t.d(r,{BS:function(){return i},NT:function(){return p},SZ:function(){return o},Se:function(){return d},VN:function(){return l},gC:function(){return c},jU:function(){return n},nD:function(){return u},rd:function(){return a},wP:function(){return v},zp:function(){return y}});var s=t(10004);const a=e=>(0,s.zG)("signIn/set",e),n=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),i=e=>(0,s.zG)("signIn/ids",e),d=e=>(0,s.zG)("signIn/del",e),c=e=>(0,s.zG)("signIn/setname",e),y=e=>(0,s.zG)("signIn/SetGroups",e),p=()=>(0,s.zG)("signIn/names"),v=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),a={"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.relayMyCdkey":"My CDKEY","server.relayCdkey":"Manager CDKEY","server.relayAddCdkey":"Add CDKEY","server.relayCdkeyUserId":"UserId","server.relayCdkeyBandwidth":"Bandwidth","server.relayCdkeyBytes":"Bytes","server.relayCdkeyPay":"Pay","server.relayCdkeyOrder":"Order","server.relayCdkeyPrice":"Price","server.relayCdkeyPayPrice":"Pay price","server.relayCdkeyCostPrice":"Cost price","server.relayCdkeyUserPrice":"User price","server.relayCdkeyOrderId":"OrderNo","server.relayCdkeyContact":"Email","server.relayCdkeyRemark":"Remark","server.relayCdkeyAddTime":"Add","server.relayCdkeyStartTime":"Start","server.relayCdkeyEndTime":"End Time","server.relayCdkeyUseTime":"Use Time","server.relayCdkeyYear":"Year","server.relayCdkeyMonth":"Month","server.relayCdkeyDay":"Day","server.relayCdkeyHour":"Hour","server.relayCdkeyMin":"Min","server.relayCdkeySec":"Sec","server.relayCdkeyDuration":"Duration","server.relayCdkeyOper":"Oper","server.relayCdkeyDelConfirm":"Are you sure to delete?","server.relayCdkeyFlagAll":"All","server.relayCdkeyFlagTimein":"In end time","server.relayCdkeyFlagTimeout":"Out end time","server.relayCdkeyFlagBytesin":"Has bytes","server.relayCdkeyFlagBytesout":"Not have bytes","server.relayCdkeyFlagDeleted":"Deleted","server.relayCdkeyFlagUnDeleted":"Not deleted","server.relayCdkeyTestTitle":"Test CDKEY","server.relayCdkeyTestKey":"CDKEY","server.relayCdkeyTestGB":"GB","server.relayCdkeyTestGBError":"Must > 0","server.relayCdkeyTestSpeed":"Mbps","server.relayCdkeyTestSpeedError":"Must > 0","server.relayCdkeyTestTime":"Time","server.relayCdkeyTestTimeError":"Format error","server.relayCdkeyTestUserId":"UserId","server.relayCdkeyTestUserIdError":"UserId error","server.relayCdkeyTestOrderId":"OrderNo","server.relayCdkeyTestOrderIdError":"OrderNo is empty","server.relayCdkeyTestContact":"Contact","server.relayCdkeyTestCostPrice":"Cost","server.relayCdkeyTestPrice":"Price","server.relayCdkeyTestUserPrice":"User price","server.relayCdkeyTestPayPrice":"Pay","server.relayCdkeyTestCount":"Count","server.relayCdkeyTestCountError":"Must > 0","server.relayCdkeyTestType":"Type","server.relayCdkeyTestTypeError":"Must be relay","server.relayCdkeyTestParseError":"decode fail","server.relayCdkeyImport":"Import CDKEY","server.relayCdkeyImportParse":"Decode fail","server.relayCdkeyImportField":"Field invalid","server.relayCdkeyImportNetwork":"Network error","server.relayCdkeyImportOrderId":"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"},n={"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.relayMyCdkey":"我的CDKEY","server.relayCdkey":"管理CDKEY","server.relayAddCdkey":"添加CDKEY","server.relayCdkeyUserId":"用户标识","server.relayCdkeyBandwidth":"带宽","server.relayCdkeyBytes":"流量","server.relayCdkeyPay":"支付","server.relayCdkeyPrice":"原价","server.relayCdkeyPayPrice":"支付","server.relayCdkeyCostPrice":"成本","server.relayCdkeyUserPrice":"会员价","server.relayCdkeyOrder":"订单","server.relayCdkeyOrderId":"订单号","server.relayCdkeyContact":"邮箱","server.relayCdkeyRemark":"备注","server.relayCdkeyAddTime":"添加","server.relayCdkeyStartTime":"开始","server.relayCdkeyEndTime":"有效时间","server.relayCdkeyUseTime":"最后使用","server.relayCdkeyYear":"年","server.relayCdkeyMonth":"月","server.relayCdkeyDay":"日","server.relayCdkeyHour":"时","server.relayCdkeyMin":"分","server.relayCdkeySec":"秒","server.relayCdkeyDuration":"持续时间","server.relayCdkeyOper":"操作","server.relayCdkeyDelConfirm":"确认删除吗?","server.relayCdkeyFlagAll":"全部","server.relayCdkeyFlagTimein":"有效期内","server.relayCdkeyFlagTimeout":"有效期外","server.relayCdkeyFlagBytesin":"剩余","server.relayCdkeyFlagBytesout":"已用完","server.relayCdkeyFlagDeleted":"已删除","server.relayCdkeyFlagUnDeleted":"未删除","server.relayCdkeyTestTitle":"测试解密CDKEY","server.relayCdkeyTestKey":"CDKEY","server.relayCdkeyTestGB":"流量","server.relayCdkeyTestGBError":"流量要大于0","server.relayCdkeyTestSpeed":"带宽Mbps","server.relayCdkeyTestSpeedError":"带宽要大于0","server.relayCdkeyTestTime":"持续时间","server.relayCdkeyTestTimeError":"格式错误","server.relayCdkeyTestUserId":"用户标识","server.relayCdkeyTestUserIdError":"用户标识不正确","server.relayCdkeyTestOrderId":"订单","server.relayCdkeyTestOrderIdError":"订单号不能为空","server.relayCdkeyTestContact":"联系方式","server.relayCdkeyTestCostPrice":"成本","server.relayCdkeyTestPrice":"原价","server.relayCdkeyTestUserPrice":"会员价","server.relayCdkeyTestPayPrice":"支付","server.relayCdkeyTestCount":"数量","server.relayCdkeyTestCountError":"数量要大于0","server.relayCdkeyTestType":"类别","server.relayCdkeyTestTypeError":"类别应该是Relay","server.relayCdkeyTestParseError":"解密失败","server.relayCdkeyImport":"导入CDKEY","server.relayCdkeyImportParse":"解密失败","server.relayCdkeyImportField":"字段有误","server.relayCdkeyImportNetwork":"网络错误","server.relayCdkeyImportOrderId":"订单号已存在","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":a,"zh-CN":n}});var u=l},22773:function(e,r,t){t.d(r,{A:function(){return n}});var s=t(56768),a=t(35931);function n(){const e=(0,a.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}}},4400:function(e,r,t){var s=t(45130),a=t(56768),n=t(24232);function o(e,r,t,s,o,l){const u=(0,a.g2)("router-view"),i=(0,a.g2)("Api"),d=(0,a.g2)("el-config-provider"),c=(0,a.g2)("Refresh");return(0,a.uX)(),(0,a.CE)(a.FK,null,[(0,a.Lk)("div",{class:(0,n.C4)({phone:s.globalData.isPhone})},[(0,a.bF)(d,{locale:s.locale},{default:(0,a.k6)((()=>[s.configed?((0,a.uX)(),(0,a.Wv)(u,{key:0})):(0,a.Q3)("",!0),(0,a.bF)(i)])),_:1},8,["locale"])],2),(0,a.bF)(c)],64)}var l=t(53830);const u={class:"port-wrap t-c"},i={class:"pdt-10"},d={class:"pdt-10"};function c(e,r,t,n,o,l){const c=(0,a.g2)("el-input"),y=(0,a.g2)("el-checkbox"),p=(0,a.g2)("el-button"),v=(0,a.g2)("el-dialog");return(0,a.uX)(),(0,a.Wv)(v,{class:"options-center",title:"管理接口","destroy-on-close":"",modelValue:n.showPort,"onUpdate:modelValue":r[3]||(r[3]=e=>n.showPort=e),center:"","show-close":!1,"close-on-click-modal":!1,"align-center":"",width:"200"},{footer:(0,a.k6)((()=>[(0,a.bF)(p,{type:"success",onClick:n.handleConnect1,plain:""},{default:(0,a.k6)((()=>[(0,a.eW)("确 定")])),_:1},8,["onClick"])])),default:(0,a.k6)((()=>[(0,a.Lk)("div",u,[(0,a.Lk)("div",null,[(0,a.eW)(" 接口 : "),(0,a.bF)(c,{modelValue:n.state.api,"onUpdate:modelValue":r[0]||(r[0]=e=>n.state.api=e),style:{width:"70%"},onKeyup:(0,s.jR)(n.handleConnect1,["enter"])},null,8,["modelValue","onKeyup"])]),(0,a.Lk)("div",i,[(0,a.eW)(" 秘钥 : "),(0,a.bF)(c,{"show-password":"",type:"password",modelValue:n.state.psd,"onUpdate:modelValue":r[1]||(r[1]=e=>n.state.psd=e),style:{width:"70%"},onKeyup:(0,s.jR)(n.handleConnect1,["enter"])},null,8,["modelValue","onKeyup"])]),(0,a.Lk)("div",d,[(0,a.bF)(y,{modelValue:n.state.save,"onUpdate:modelValue":r[2]||(r[2]=e=>n.state.save=e)},{default:(0,a.k6)((()=>[(0,a.eW)("保存密码")])),_:1},8,["modelValue"])])])])),_:1},8,["modelValue"])}var y=t(81387),p=t(90144),v=t(10004),m=t(69299),g=t(88835),f=t(57477),w={components:{Tools:f.S0q},props:["config"],setup(e){const r=(0,l.B)(),t=(0,y.rd)(),s=(0,y.lq)(),n=window.location.host,o={api:n,psd:"snltty"},u=JSON.parse(sessionStorage.getItem("api-cache")||localStorage.getItem("api-cache")||JSON.stringify(o)),i=(0,p.Kh)({api:u.api,psd:u.psd,showPort:!1,save:u.save||!1}),d=(0,a.EW)((()=>0==r.value.api.connected&&i.showPort)),c=()=>{u.api=i.api,u.psd=i.psd,u.save=i.save,i.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":""}://${i.api}`;(0,v.a1)(e,i.psd)},f=()=>{c(),window.location.reload()},w=()=>{(0,g.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)}))},C=()=>{(0,m.SZ)().then((e=>{r.value.signin.Connected=e.Connected,r.value.signin.Version=e.Version,setTimeout((()=>{C()}),1e3)})).catch((e=>{setTimeout((()=>{C()}),1e3)}))};return(0,a.sV)((()=>{setTimeout((()=>{i.showPort=!0}),500),(0,v.jH)((e=>{e&&(w(),C())})),t.isReady().then((()=>{i.api=s.query.api?`${window.location.hostname}:${s.query.api}`:i.api,i.psd=s.query.psd||i.psd,c()}))})),{state:i,showPort:d,handleConnect1:f}}},C=t(71241);const k=(0,C.A)(w,[["render",c],["__scopeId","data-v-96156712"]]);var h=k,S=t(2721),T=t(86726),b=t(22773);const P={class:"percentage-value"};function A(e,r,t,s,o,l){const u=(0,a.g2)("el-progress");return s.state.show?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"refresh-wrap",style:(0,n.Tr)({top:s.state.dy/4+"px"})},[(0,a.bF)(u,{type:"circle",percentage:s.state.percentage,width:"50"},{default:(0,a.k6)((({percentage:e})=>[(0,a.Lk)("span",P,(0,n.v_)(e)+"%",1)])),_:1},8,["percentage"])],4)):(0,a.Q3)("",!0)}var D={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,a.sV)((()=>{document.addEventListener("touchstart",r),document.addEventListener("touchmove",t),document.addEventListener("touchend",s),document.addEventListener("touchcancel",s)})),{state:e}}};const I=(0,C.A)(D,[["render",A],["__scopeId","data-v-dfc7a2f2"]]);var N=I,x={components:{Api:h,Refresh:N},setup(e){const r=(0,l.v)(),t=(0,a.EW)((()=>r.value.config.configed)),{currentLocale:s}=(0,b.A)(),n=(0,a.EW)((()=>"zh-CN"==s.value?S.A:T.A));return{configed:t,locale:n,globalData:r}}};const E=(0,C.A)(x,[["render",o]]);var K=E;const O=[{path:"/",name:"Full",component:()=>Promise.all([t.e(375),t.e(829),t.e(226)]).then(t.bind(t,37844)),redirect:"/full/index.html",children:[{path:"/full/index.html",name:"FullIndex",component:()=>Promise.all([t.e(375),t.e(159),t.e(94),t.e(36),t.e(119)]).then(t.bind(t,93238))},{path:"/full/servers.html",name:"FullServers",component:()=>t.e(855).then(t.bind(t,37855))},{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(94),t.e(926)]).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(375),t.e(829),t.e(159),t.e(519)]).then(t.bind(t,7332))},{path:"/no-permission.html",name:"NoPermission",component:()=>t.e(228).then(t.bind(t,96100))}],U=(0,y.aE)({history:(0,y.Bt)(),routes:O});var F=U,R=t(49287),M=t(66161);t(4188),t(42355),t(21862);const L=(0,s.Ef)(K);L.use(R.A),L.use(M.A,{size:"default"}).use(F).mount("#app");const B=["ResizeObserver loop completed with undelivered notifications","ResizeObserver loop limit exceeded"];window.addEventListener("error",(e=>{let r=e.message;B.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),a=t(90144),n=t(56768);const o=Symbol(),l=()=>{const e=(0,a.KR)({api:{connected:!1},width:0,height:0,isPhone:(0,n.EW)((()=>e.value.width<800)),isPc:(0,n.EW)((()=>e.value.width>=800)),config:{Common:{},Client:{Servers:[],Accesss:{}},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){if(void 0==this.config.Client.Accesss[e])return!1;const r=this.config.Client.Accesss[e].Value,t=this.config.Client.AccessBits||"";return"1"==t[r]}});return(0,s.jH)((r=>{e.value.api.connected=r})),(0,n.Gt)(o,e),e},u=()=>(0,n.WQ)(o)}},r={};function t(s){var a=r[s];if(void 0!==a)return a.exports;var n=r[s]={id:s,loaded:!1,exports:{}};return e[s].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}t.m=e,function(){var e=[];t.O=function(r,s,a,n){if(!s){var o=1/0;for(d=0;d=n)&&Object.keys(t.O).every((function(e){return t.O[e](s[u])}))?s.splice(u--,1):(l=!1,n0&&e[d-1][2]>n;d--)e[d]=e[d-1];e[d]=[s,a,n]}}(),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",94:"e6ced1cb",119:"fc297451",159:"90f4524d",226:"e53f663b",228:"80f5807e",259:"e75ec9c9",340:"92699d42",372:"ee624bb3",375:"bf6c9a3c",519:"9618e424",829:"86c9d544",855:"1c3d2b9d",926:"1b6dcf67"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{32:"1374e89e",119:"7317b478",226:"638ce524",228:"b2a71eca",259:"453688d2",340:"f859e18d",372:"e4499fe6",519:"298416a4",855:"ebb7f022",926:"63d4d106"}[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,a,n,o){if(e[s])e[s].push(a);else{var l,u;if(void 0!==n)for(var i=document.getElementsByTagName("script"),d=0;d { - if (queues.length > 0 && websocketState.connected && ws && ws.readyState == 1) { - try { - ws.send(queues.shift()); - } catch (e) { } - } - setTimeout(sendQueueMsg, 1000 / 60); -} -//sendQueueMsg(); - - const sendTimeout = () => { const time = Date.now(); for (let j in requests) { const item = requests[j]; if (time - item.time > item.timeout) { - item.reject('超时~'); + item.reject(`超时:${JSON.stringify(item)}`); delete requests[j]; } } @@ -30,8 +17,6 @@ const sendTimeout = () => { } sendTimeout(); - -//发布订阅 export const pushListener = { subs: { }, @@ -59,10 +44,10 @@ export const pushListener = { } } -//消息处理 const onWebsocketOpen = () => { websocketState.connected = true; websocketState.connecting = false; + sendWebsocketMsg('password',apiPassword || 'snltty'); pushListener.push(websocketStateChangeKey, websocketState.connected); } const onWebsocketClose = (e) => { @@ -125,8 +110,7 @@ export const initWebsocket = (url = wsUrl, password = apiPassword) => { ws.close(); } websocketState.connecting = true; - const protocol = password || 'snltty'; - ws = new WebSocket(wsUrl, [protocol]); + ws = new WebSocket(wsUrl); ws.iddd = ++index; ws.onopen = onWebsocketOpen; ws.onclose = onWebsocketClose @@ -140,8 +124,6 @@ export const closeWebsocket = () => { ws.close(); } } - -//发送消息 export const sendWebsocketMsg = (path, msg = {}, errHandle = false, timeout = 15000) => { return new Promise((resolve, reject) => { let id = ++requestId; @@ -165,7 +147,6 @@ export const sendWebsocketMsg = (path, msg = {}, errHandle = false, timeout = 15 }); } - const websocketStateChangeKey = Symbol(); export const subWebsocketState = (callback) => { pushListener.add(websocketStateChangeKey, callback); diff --git a/src/linker.web/src/lang/zh-cn.js b/src/linker.web/src/lang/zh-cn.js index 24d8cec0..725aea5d 100644 --- a/src/linker.web/src/lang/zh-cn.js +++ b/src/linker.web/src/lang/zh-cn.js @@ -66,9 +66,9 @@ export default { 'status.exportSingle': '单设备', 'status.exportName': '设备名', 'status.exportNamePlease': '请输入设备名', - 'status.exportApiPassword': '接口密码', + 'status.exportApiPassword': '管理密码', 'status.exportApiPasswordPlease': '请输入接口密码', - 'status.exportWebport': '网页端口', + 'status.exportWebport': '管理端口', 'status.exportWebportPlease': '请输入网页端口', 'status.exportApiport': '接口端口', 'status.exportApiportPlease': '请输入接口端口', diff --git a/src/linker.web/src/views/Api.vue b/src/linker.web/src/views/Api.vue index 695853e9..f91d1fa9 100644 --- a/src/linker.web/src/views/Api.vue +++ b/src/linker.web/src/views/Api.vue @@ -32,8 +32,9 @@ export default { const globalData = injectGlobalData(); const router = useRouter(); const route = useRoute(); - - const defaultInfo = {api:`${window.location.hostname}:1803`,psd:'snltty'}; + + const api = process.env.NODE_ENV == 'development' ? `${window.location.hostname}:1804` : window.location.host; + const defaultInfo = {api:api,psd:'snltty'}; const queryCache = JSON.parse(sessionStorage.getItem('api-cache') || localStorage.getItem('api-cache') || JSON.stringify(defaultInfo)); const state = reactive({ api:queryCache.api, diff --git a/src/linker.web/src/views/full/install/Client.vue b/src/linker.web/src/views/full/install/Client.vue index 6ddfac14..62e3e7a2 100644 --- a/src/linker.web/src/views/full/install/Client.vue +++ b/src/linker.web/src/views/full/install/Client.vue @@ -7,35 +7,30 @@ - + - - - - - - - - - + + + + - + - + @@ -49,7 +44,7 @@ - + @@ -59,7 +54,7 @@ - + @@ -74,7 +69,7 @@ - + @@ -88,7 +83,7 @@ - + @@ -118,7 +113,6 @@ export default { name:step.value.form.client.name || globalData.value.config.Client.Name, groupid: step.value.form.client.groupid ||globalData.value.config.Client.Group.Id, groupPassword: step.value.form.client.groupPassword ||globalData.value.config.Client.Group.Password, - api: step.value.form.client.api ||globalData.value.config.Client.CApi.ApiPort, web: step.value.form.client.web ||globalData.value.config.Client.CApi.WebPort, password:step.value.form.client.password || globalData.value.config.Client.CApi.ApiPassword, @@ -134,19 +128,6 @@ export default { groupid: [{ required: true, message: "必填", trigger: "blur" }], groupPassword: [{ required: true, message: "必填", trigger: "blur" }], password: [{ required: true, message: "必填", trigger: "blur" }], - api: [ - { required: true, message: "必填", trigger: "blur" }, - { - type: "number", - min: 0, - max: 65535, - message: "数字 0-65535", - trigger: "blur", - transform(value) { - return Number(value); - }, - }, - ], web: [ { required: true, message: "必填", trigger: "blur" }, { @@ -173,7 +154,6 @@ export default { name: state.form.name, groupid: state.form.groupid, groupPassword: state.form.groupPassword, - api: +state.form.api, web: +state.form.web, password: state.form.password, diff --git a/src/linker.web/src/views/full/status/Export.vue b/src/linker.web/src/views/full/status/Export.vue index 2c30924e..3e0e4a99 100644 --- a/src/linker.web/src/views/full/status/Export.vue +++ b/src/linker.web/src/views/full/status/Export.vue @@ -15,21 +15,16 @@
- - -
-
- +
{{$t('status.exportName')}} :
- -
- {{$t('status.exportApiPassword')}} : -
-
+
+
+
+
{{$t('status.exportWebport')}} : @@ -37,7 +32,7 @@
- {{$t('status.exportApiport')}} : + {{$t('status.exportApiPassword')}} :
@@ -112,7 +107,6 @@ export default { single:true, name:'', apipassword:onlyNode.value? globalData.value.config.Client.CApi.ApiPassword :'', - apiport: globalData.value.config.Client.CApi.ApiPort, webport: globalData.value.config.Client.CApi.WebPort, relay:true, @@ -143,7 +137,6 @@ export default { name:state.name, apipassword:state.apipassword, webport:+state.webport, - apiport:+state.apiport, relay:state.relay, sforward:state.sforward, updater:state.updater, @@ -168,10 +161,6 @@ export default { ElMessage.error(t('status.exportWebportPlease')); return; } - if(!json.apiport || isNaN(json.apiport) || json.apiport<=0 || json.apiport>65535){ - ElMessage.error(t('status.exportApiportPlease')); - return; - } return json; } const download = ()=>{ diff --git a/src/linker/Dockerfile-debian b/src/linker/Dockerfile-debian index 1fe76594..e05c0b1f 100644 --- a/src/linker/Dockerfile-debian +++ b/src/linker/Dockerfile-debian @@ -20,8 +20,6 @@ RUN apt update \ EXPOSE 1802/tcp EXPOSE 1802/udp -EXPOSE 1803/tcp -EXPOSE 1803/udp EXPOSE 1804/tcp EXPOSE 1804/udp diff --git a/src/linker/Dockerfile-kvm b/src/linker/Dockerfile-kvm index 8ecaad9c..52ef190c 100644 --- a/src/linker/Dockerfile-kvm +++ b/src/linker/Dockerfile-kvm @@ -20,8 +20,6 @@ RUN apt update \ EXPOSE 1802/tcp EXPOSE 1802/udp -EXPOSE 1803/tcp -EXPOSE 1803/udp EXPOSE 1804/tcp EXPOSE 1804/udp EXPOSE 1806/tcp diff --git a/src/linker/Dockerfile-musl b/src/linker/Dockerfile-musl index 1bd84aa9..84815bb8 100644 --- a/src/linker/Dockerfile-musl +++ b/src/linker/Dockerfile-musl @@ -10,8 +10,6 @@ RUN echo "https://mirrors.ustc.edu.cn/alpine/latest-stable/main/" > /etc/apk/rep EXPOSE 1802/tcp EXPOSE 1802/udp -EXPOSE 1803/tcp -EXPOSE 1803/udp EXPOSE 1804/tcp EXPOSE 1804/udp diff --git a/src/linker/linker.csproj b/src/linker/linker.csproj index 46029f56..8716fcce 100644 --- a/src/linker/linker.csproj +++ b/src/linker/linker.csproj @@ -21,7 +21,10 @@ snltty snltty 1. 一些累计更新 -2. 测试发布,请使用1.8.2 +2. 重建权限存储,ulong改为BitArray,同组所有客户端需保持版本一致 +3. 增加唤醒功能,支持WOL,COM继电器,HID继电器 +4. 基于One-KVM包装docker镜像集成linker +5. 管理端口改为1804,一个端口托管Web+Websocket snltty https://github.com/snltty/linker https://github.com/snltty/linker diff --git a/version.txt b/version.txt index 2754b137..878b6695 100644 --- a/version.txt +++ b/version.txt @@ -1,4 +1,7 @@ v1.8.2 -2025-06-05 10:48:49 +2025-06-05 17:13:06 1. 一些累计更新 -2. 测试发布,请使用1.8.2 \ No newline at end of file +2. 重建权限存储,ulong改为BitArray,同组所有客户端需保持版本一致 +3. 增加唤醒功能,支持WOL,COM继电器,HID继电器 +4. 基于One-KVM包装docker镜像集成linker +5. 管理端口改为1804,一个端口托管Web+Websocket \ No newline at end of file