From 595d921864c95c132276f3687eb2433aeab3263b Mon Sep 17 00:00:00 2001 From: snltty <1069410172@qq.com> Date: Sat, 26 Apr 2025 19:35:50 +0800 Subject: [PATCH] app --- publish.bat | 12 +- .../Platforms/Android/AndroidManifest.xml | 3 + .../Platforms/Android/MainActivity.cs | 34 ++- src/linker.app/linker.app.csproj.user | 4 +- src/linker.app/public/web/css/61.e315a424.css | 1 + src/linker.app/public/web/css/70.7b662b32.css | 1 + src/linker.app/public/web/index.html | 2 +- src/linker.app/public/web/iphone.svg | 1 + src/linker.app/public/web/js/175.7664b060.js | 1 + src/linker.app/public/web/js/61.7bf0abba.js | 1 + src/linker.app/public/web/js/70.a68c1d97.js | 1 + src/linker.app/public/web/js/736.fdd066e8.js | 1 + src/linker.app/public/web/js/app.79eba13b.js | 1 + src/linker.app/public/web/oppo.svg | 1 + src/linker.app/public/web/samsung.svg | 1 + src/linker.app/public/web/vivo.svg | 1 + src/linker.messenger.updater/Entry.cs | 15 +- .../IUpdaterInstaller.cs | 201 ++++++++++++++++++ src/linker.messenger.updater/UpdaterHelper.cs | 156 +++----------- src/linker.share.win/default.aproj | 9 + src/linker.share.win/lib/config.aardio | 17 ++ src/linker.share.win/main.aardio | 21 ++ src/linker.share.win/res/connect.aardio | 9 + src/linker.share.win/res/favicon.ico | Bin 0 -> 16958 bytes src/linker.share.win/res/favicon1.ico | Bin 0 -> 16958 bytes src/linker.share.win/res/share.aardio | 13 ++ version.txt | 2 +- 27 files changed, 369 insertions(+), 140 deletions(-) create mode 100644 src/linker.app/public/web/css/61.e315a424.css create mode 100644 src/linker.app/public/web/css/70.7b662b32.css create mode 100644 src/linker.app/public/web/iphone.svg create mode 100644 src/linker.app/public/web/js/175.7664b060.js create mode 100644 src/linker.app/public/web/js/61.7bf0abba.js create mode 100644 src/linker.app/public/web/js/70.a68c1d97.js create mode 100644 src/linker.app/public/web/js/736.fdd066e8.js create mode 100644 src/linker.app/public/web/js/app.79eba13b.js create mode 100644 src/linker.app/public/web/oppo.svg create mode 100644 src/linker.app/public/web/samsung.svg create mode 100644 src/linker.app/public/web/vivo.svg create mode 100644 src/linker.messenger.updater/IUpdaterInstaller.cs create mode 100644 src/linker.share.win/default.aproj create mode 100644 src/linker.share.win/lib/config.aardio create mode 100644 src/linker.share.win/main.aardio create mode 100644 src/linker.share.win/res/connect.aardio create mode 100644 src/linker.share.win/res/favicon.ico create mode 100644 src/linker.share.win/res/favicon1.ico create mode 100644 src/linker.share.win/res/share.aardio diff --git a/publish.bat b/publish.bat index 721ea950..4652a309 100644 --- a/publish.bat +++ b/publish.bat @@ -34,12 +34,12 @@ for %%r in (win-x86,win-x64,win-arm64) do ( echo F|xcopy "src\\linker\\WinDivert64-%%r.sys" "public\\extends\\%%r\\linker-%%r\\WinDivert64.sys" /s /f /h /y ) -msbuild "src\\linker.ics\\linker.ics.csproj" -p:Configuration=Release -p:OutputPath=../../public/extends/win-x64/linker-win-x64 -del /f .\public\extends\win-x64\linker-win-x64\linker.ics.pdb -msbuild "src\\linker.ics\\linker.ics.csproj" -p:Configuration=Release -p:OutputPath=../../public/extends/win-arm64/linker-win-arm64 -del /f .\public\extends\win-arm64\linker-win-arm64\linker.ics.pdb -msbuild "src\\linker.ics\\linker.ics.csproj" -p:Configuration=Release -p:OutputPath=../../public/extends/win-x86/linker-win-x86 -del /f .\public\extends\win-x86\linker-win-x86\linker.ics.pdb +rem msbuild "src\\linker.ics\\linker.ics.csproj" -p:Configuration=Release -p:OutputPath=../../public/extends/win-x64/linker-win-x64 +rem del /f .\public\extends\win-x64\linker-win-x64\linker.ics.pdb +rem msbuild "src\\linker.ics\\linker.ics.csproj" -p:Configuration=Release -p:OutputPath=../../public/extends/win-arm64/linker-win-arm64 +rem del /f .\public\extends\win-arm64\linker-win-arm64\linker.ics.pdb +rem msbuild "src\\linker.ics\\linker.ics.csproj" -p:Configuration=Release -p:OutputPath=../../public/extends/win-x86/linker-win-x86 +rem del /f .\public\extends\win-x86\linker-win-x86\linker.ics.pdb for %%r in (win-x86,win-x64,win-arm64,linux-x64,linux-arm,linux-arm64,linux-musl-x64,linux-musl-arm,linux-musl-arm64) do ( diff --git a/src/linker.app/Platforms/Android/AndroidManifest.xml b/src/linker.app/Platforms/Android/AndroidManifest.xml index 689cc5d9..c36fe351 100644 --- a/src/linker.app/Platforms/Android/AndroidManifest.xml +++ b/src/linker.app/Platforms/Android/AndroidManifest.xml @@ -8,6 +8,9 @@ + + + (); LinkerMessengerEntry.AddService(); + LinkerMessengerEntry.AddService(); + LinkerMessengerEntry.Build(); LinkerMessengerEntry.Setup(ExcludeModule.Logger, config); IPlatformApplication.Current.Services.GetService().SendOnInitialized(); @@ -367,7 +370,7 @@ namespace linker.app { length.ToBytes(buffer); length += 4; - + return buffer; } WaitForTun(); @@ -375,6 +378,7 @@ namespace linker.app } catch (Exception ex) { + fd = 0; System.Console.WriteLine($"vpn read {ex.ToString()}"); } return Helper.EmptyArray; @@ -396,6 +400,7 @@ namespace linker.app } catch (Exception ex) { + fd = 0; System.Console.WriteLine($"vpn write {ex.ToString()}"); } return false; @@ -510,5 +515,32 @@ namespace linker.app return $"{deviceInfo.Manufacturer} {deviceInfo.Name} {deviceInfo.VersionString} {deviceInfo.Platform} {deviceInfo.Idiom.ToString()}"; } } + + + /// + /// 更新 + /// + public sealed class UpdaterInstaller : messenger.updater.UpdaterInstaller + { + private readonly IUpdaterCommonStore updaterCommonTransfer; + public UpdaterInstaller(IUpdaterCommonStore updaterCommonTransfer) : base(updaterCommonTransfer) + { + this.updaterCommonTransfer = updaterCommonTransfer; + } + public override (string, string) DownloadUrlAndSavePath(string version) + { + return ($"{updaterCommonTransfer.UpdateUrl}/{version}/linker.apk", Path.Join(FileSystem.Current.AppDataDirectory, "linker.apk")); + } + + public override async Task Install(Action processs) + { + processs(100, 100); + await Task.CompletedTask; + } + + public override void Clear() + { + } + } } diff --git a/src/linker.app/linker.app.csproj.user b/src/linker.app/linker.app.csproj.user index e7b861b5..db9d1351 100644 --- a/src/linker.app/linker.app.csproj.user +++ b/src/linker.app/linker.app.csproj.user @@ -3,8 +3,8 @@ False net8.0-android - OPPO PFDM00 (Android 12.0 - API 31) - PhysicalDevice + Pixel 5 - API 34 (Android 14.0 - API 34) + Emulator pixel_5_-_api_34 diff --git a/src/linker.app/public/web/css/61.e315a424.css b/src/linker.app/public/web/css/61.e315a424.css new file mode 100644 index 00000000..76ee1749 --- /dev/null +++ b/src/linker.app/public/web/css/61.e315a424.css @@ -0,0 +1 @@ +#file-input[data-v-4892cd3c]{opacity:0;position:absolute;z-index:-1}.el-icon[data-v-4892cd3c]{font-size:1.6rem;vertical-align:middle;color:#555}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-56c0e8be]{color:#666;text-decoration:underline}a.green[data-v-56c0e8be]{color:green;font-weight:700}a.download[data-v-56c0e8be]{margin-left:.6rem}a.download .el-icon[data-v-56c0e8be]{vertical-align:middle;font-weight:700;margin-left:.3rem}a.download .el-icon.loading[data-v-56c0e8be]{animation:loading-56c0e8be 1s linear infinite}a.download+a.download[data-v-56c0e8be]{margin-left:.2rem}@keyframes loading-56c0e8be{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}img.system[data-v-4931fbdc]{height:1.6rem;vertical-align:middle;margin-left:.4rem}.self[data-v-4931fbdc]{color:#d400ff}.self .el-icon[data-v-4931fbdc]{vertical-align:text-bottom}div.point[data-v-41d1beca]{margin:-.2rem .3rem 0 -1.3rem;position:absolute}span.point[data-v-41d1beca]{width:.8rem;height:.8rem;border-radius:50%;display:inline-block;vertical-align:middle;background-color:#eee;border:1px solid #ddd;cursor:pointer;transition:.3s}span.point[data-v-41d1beca]:hover{transform:scale(2)}span.point.p2p[data-v-41d1beca]{background-color:#01c901;border:1px solid #049538}span.point.relay[data-v-41d1beca]{background-color:#e3e811;border:1px solid #b3c410}span.point.node[data-v-41d1beca]{background-color:#09dda9;border:1px solid #0cac90}.el-icon.loading[data-v-0f71f9a6],a.loading[data-v-0f71f9a6]{vertical-align:middle;font-weight:700;animation:loading-0f71f9a6 1s linear infinite}.el-switch.is-disabled[data-v-0f71f9a6]{opacity:1}.el-input[data-v-0f71f9a6]{width:8rem}.delay[data-v-0f71f9a6]{position:absolute;right:0;bottom:0;line-height:normal}.switch-btn[data-v-0f71f9a6]{font-size:1.5rem}.any[data-v-0f71f9a6]{position:absolute;left:-7px;top:-2px;line-height:normal}.any.green[data-v-0f71f9a6]{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-0f71f9a6{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-64720365]{padding-right:2rem}.status-api-wrap.connected a[data-v-64720365]{color:green;font-weight:700}.status-api-wrap a[data-v-64720365]{color:#333}.status-api-wrap a .el-icon[data-v-64720365]{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-2e8ef3fe]{text-align:left}.access-wrap[data-v-2e8ef3fe]{height:40rem}.status-export-wrap[data-v-0c4e4f2c]{padding-right:2rem}.status-export-wrap a[data-v-0c4e4f2c]{color:#333}.status-export-wrap a .el-icon[data-v-0c4e4f2c]{vertical-align:sub}.status-export-wrap .el-col[data-v-0c4e4f2c]{text-align:left}.status-wrap[data-v-2c07ece3]{border-top:1px solid #ddd;background-color:#f5f5f5;height:3rem;line-height:3rem;font-size:1.2rem;color:#555}.status-wrap .pay[data-v-2c07ece3]{font-size:xxx-large}.status-wrap .pay img[data-v-2c07ece3]{width:100%;margin:0}.status-wrap .copy[data-v-2c07ece3]{padding-left:.5rem}.status-wrap .copy a[data-v-2c07ece3]{color:#555;margin-right:1rem}.status-wrap a.memory[data-v-2c07ece3]{margin-right:.6rem}.status-wrap a.memory img[data-v-2c07ece3]{height:3rem;vertical-align:bottom;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.app/public/web/css/70.7b662b32.css b/src/linker.app/public/web/css/70.7b662b32.css new file mode 100644 index 00000000..bb386710 --- /dev/null +++ b/src/linker.app/public/web/css/70.7b662b32.css @@ -0,0 +1 @@ +#file-input[data-v-4892cd3c]{opacity:0;position:absolute;z-index:-1}.el-icon[data-v-4892cd3c]{font-size:1.6rem;vertical-align:middle;color:#555}#file-input[data-v-ffc7e254]{opacity:0;position:absolute;z-index:-1}.head[data-v-ffc7e254]{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-ffc7e254]{padding:.5rem 0 0 1rem;height:4.5rem}.head .logo img[data-v-ffc7e254]{vertical-align:top;height:4rem}.head .menu[data-v-ffc7e254]{padding-left:1rem;font-size:1.4rem}.head .menu li[data-v-ffc7e254]{box-sizing:border-box;padding:.5rem 0;margin-right:.5rem}.head .menu a[data-v-ffc7e254]{display:block;color:#333;padding:0 1rem;line-height:4rem;height:4rem}.head .menu a.router-link-active[data-v-ffc7e254],.head .menu a[data-v-ffc7e254]:hover{background-color:rgba(0,0,0,.1);font-weight:700;border-radius:4px}.head .menu a img[data-v-ffc7e254]{height:2rem;margin-right:.2rem;margin-top:1rem}.head .menu a span[data-v-ffc7e254]{vertical-align:top}.head .select[data-v-ffc7e254]{padding-right:1rem}.head .select .el-dropdown[data-v-ffc7e254]{vertical-align:middle}.head .select .el-dropdown .el-icon[data-v-ffc7e254]{vertical-align:bottom;font-size:2rem}.head .locale[data-v-ffc7e254]{padding-right:1rem}.head .locale .el-dropdown[data-v-ffc7e254]{vertical-align:middle}.head .locale .el-dropdown .el-icon[data-v-ffc7e254]{vertical-align:bottom}.head .image[data-v-ffc7e254]{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-64720365]{padding-right:2rem}.status-api-wrap.connected a[data-v-64720365]{color:green;font-weight:700}.status-api-wrap a[data-v-64720365]{color:#333}.status-api-wrap a .el-icon[data-v-64720365]{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-2e8ef3fe]{text-align:left}.access-wrap[data-v-2e8ef3fe]{height:40rem}.status-export-wrap[data-v-0c4e4f2c]{padding-right:2rem}.status-export-wrap a[data-v-0c4e4f2c]{color:#333}.status-export-wrap a .el-icon[data-v-0c4e4f2c]{vertical-align:sub}.status-export-wrap .el-col[data-v-0c4e4f2c]{text-align:left}a[data-v-56c0e8be]{color:#666;text-decoration:underline}a.green[data-v-56c0e8be]{color:green;font-weight:700}a.download[data-v-56c0e8be]{margin-left:.6rem}a.download .el-icon[data-v-56c0e8be]{vertical-align:middle;font-weight:700;margin-left:.3rem}a.download .el-icon.loading[data-v-56c0e8be]{animation:loading-56c0e8be 1s linear infinite}a.download+a.download[data-v-56c0e8be]{margin-left:.2rem}@keyframes loading-56c0e8be{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.status-wrap[data-v-2c07ece3]{border-top:1px solid #ddd;background-color:#f5f5f5;height:3rem;line-height:3rem;font-size:1.2rem;color:#555}.status-wrap .pay[data-v-2c07ece3]{font-size:xxx-large}.status-wrap .pay img[data-v-2c07ece3]{width:100%;margin:0}.status-wrap .copy[data-v-2c07ece3]{padding-left:.5rem}.status-wrap .copy a[data-v-2c07ece3]{color:#555;margin-right:1rem}.status-wrap a.memory[data-v-2c07ece3]{margin-right:.6rem}.status-wrap a.memory img[data-v-2c07ece3]{height:3rem;vertical-align:bottom;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-8f3e22aa]{padding:1rem 0 0 0}.footer[data-v-8f3e22aa]{padding:1rem 0}.body[data-v-ce07310a],.el-card+.el-card[data-v-8f3e22aa]{margin-top:1rem}.footer[data-v-ce07310a]{margin-top:2rem}@media screen and (max-width:1000px){body .app-wrap[data-v-17a9c872]{width:100%;height:100%;position:absolute;left:0;top:0;right:0;bottom:0;transform:none;max-width:100%;border:0}}.app-wrap[data-v-17a9c872]{box-sizing:border-box;background-color:#fff;border:1px solid #d0d7de;width:81rem;max-width:80%;height:90%;position:absolute;left:50%;top:50%;transform:translateX(-50%) translateY(-50%)} \ No newline at end of file diff --git a/src/linker.app/public/web/index.html b/src/linker.app/public/web/index.html index 172fd605..080bd033 100644 --- a/src/linker.app/public/web/index.html +++ b/src/linker.app/public/web/index.html @@ -1 +1 @@ -linker.web
\ No newline at end of file +linker.web
\ No newline at end of file diff --git a/src/linker.app/public/web/iphone.svg b/src/linker.app/public/web/iphone.svg new file mode 100644 index 00000000..fab91bb6 --- /dev/null +++ b/src/linker.app/public/web/iphone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/linker.app/public/web/js/175.7664b060.js b/src/linker.app/public/web/js/175.7664b060.js new file mode 100644 index 00000000..6b50d75b --- /dev/null +++ b/src/linker.app/public/web/js/175.7664b060.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[175],{5096:function(e,t,a){a.d(t,{A:function(){return p}});var l=a(6768);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(7477),i=a(2933),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(1241);const c=(0,u.A)(d,[["render",n],["__scopeId","data-v-4892cd3c"]]);var p=c},718:function(e,t,a){a.d(t,{A:function(){return yt}});var l=a(6768),o=a(4232),s=a.p+"img/coin.6431311b.svg",n=a.p+"img/qr.a05c5f6e.jpg";const r=e=>((0,l.Qi)("data-v-2c07ece3"),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={key:0,href:"https://github.com/snltty/linker",target:"_blank"},m={key:1,href:"https://linker.snltty.com",target:"_blank"},g={key:2,href:"https://linker-doc.snltty.com",target:"_blank"},v={key:3,href:"https://v.netzo123.com",target:"_blank"},f=r((()=>(0,l.Lk)("div",{class:"flex-1"},null,-1))),h={key:0,class:"export"},w={key:1,class:"api"},k={class:"server"},y=r((()=>(0,l.Lk)("div",{class:"pay"},[(0,l.Lk)("img",{src:n,alt:""})],-1)));function b(e,t,a,s,n,r){const b=(0,l.g2)("Export"),S=(0,l.g2)("Api"),C=(0,l.g2)("Server"),_=(0,l.g2)("el-dialog");return(0,l.uX)(),(0,l.CE)("div",i,[(0,l.Lk)("div",d,[(0,l.Lk)("a",{href:"javascript:;",class:"memory",title:e.$t("status.support"),onClick:t[0]||(t[0]=e=>s.state.showPay=!0)},[c,(0,l.Lk)("span",null,(0,o.v_)(e.$t("status.support")),1)],8,u),(0,l.Lk)("span",null,"©linker "+(0,o.v_)(s.self.Version),1),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("a",p,"Github")):(0,l.Q3)("",!0),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("a",m,(0,o.v_)(e.$t("status.website")),1)):(0,l.Q3)("",!0),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("a",g,(0,o.v_)(e.$t("status.doc")),1)):(0,l.Q3)("",!0),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("a",v,(0,o.v_)(e.$t("status.cdkey")),1)):(0,l.Q3)("",!0)]),f,s.globalData.isPc?((0,l.uX)(),(0,l.CE)("div",h,[(0,l.bF)(b,{config:s.config},null,8,["config"])])):(0,l.Q3)("",!0),s.globalData.isPc?((0,l.uX)(),(0,l.CE)("div",w,[(0,l.bF)(S,{config:s.config},null,8,["config"])])):(0,l.Q3)("",!0),(0,l.Lk)("div",k,[(0,l.bF)(C,{config:s.config},null,8,["config"])]),(0,l.bF)(_,{modelValue:s.state.showPay,"onUpdate:modelValue":t[1]||(t[1]=e=>s.state.showPay=e),title:e.$t("status.support"),width:"400"},{default:(0,l.k6)((()=>[y])),_:1},8,["modelValue","title"])])}var S=a(144);const C={href:"javascript:;"};function _(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(3830),F=a(4),V=a(7477),$={components:{Tools:V.S0q},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.api.connected)),o=()=>{localStorage.setItem("api-cache",""),sessionStorage.setItem("api-cache",""),window.location.reload()},s=()=>{(0,F.e3)(),(0,F.a1)(`ws${"https:"===window.location.protocol?"s":""}://${window.location.hostname}:12345`,"snltty")};return{config:e.config,connected:a,handleShow:s,handleResetConnect:o}}},x=a(1241);const T=(0,x.A)($,[["render",_],["__scopeId","data-v-64720365"]]);var P=T;const E={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",E,[(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 D(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(9299),A=a(1219),U=a(5931);const z={class:"group-wrap"},W=["onClick"],X=["onClick"],O=["onClick"],K={key:0},N={key:1},M={class:"flex"},G=(0,l.Lk)("span",{class:"flex-1"},null,-1);function Q(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",z,[(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,W))])),_: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,X))])),_: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",N,(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",M,[(0,l.Lk)("strong",null,(0,o.v_)(e.$t("status.groupOper")),1),G,(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 j=a(8734),Y={props:["modelValue"],emits:["update:modelValue"],components:{Delete:V.epd,Plus:V.FWt,Select:V.l6P,Sync:j.A},setup(e,{emit:t}){const{t:a}=(0,U.s9)(),o=(0,B.B)(),s=(0,S.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?A.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((()=>{A.nk.success(a("common.oper")),setTimeout((()=>{window.location.reload()}),1e3)})).catch((e=>{console.log(e),A.nk.error(a("common.operFail"))}))},p=()=>{(0,R.zp)(s.list).then((()=>{A.nk.success(a("common.oper"))})).catch((e=>{console.log(e),A.nk.error(a("common.operFail"))}))};return{globalData:o,state:s,handleCellClick:n,handleEditBlur:i,handleEdit:r,handleDel:d,handleAdd:u,handleUse:c}}};const q=(0,x.A)(Y,[["render",Q]]);var Z=q,H={components:{ArrowDown:V.yd$,Avatar:V.euF,Groups:Z},props:["config"],setup(e){const{t:t}=(0,U.s9)(),a=(0,B.B)(),o=(0,l.EW)((()=>a.value.hasAccess("Group"))),s=(0,S.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,A.nk.success(t("common.oper")),setTimeout((()=>{window.location.reload()}),1e3)})).catch((e=>{console.log(e),s.loading=!1,A.nk.error(t("common.operFail"))}))};return{config:e.config,hasGroup:o,state:s,handleGroupChange:n}}};const J=(0,x.A)(H,[["render",D],["__scopeId","data-v-33467232"]]);var ee=J;const te={key:0,class:"flow-wrap"},ae=["title"],le=["title"],oe=["title"],se=["title"];function ne(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",te,[(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,ae),(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,le)]),(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,oe)]),(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,se)])])):(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(4114);var re=a(4921);function ie(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 de={props:["modelValue","config"],emits:["update:modelValue"],setup(e,{emit:t}){const{t:a}=(0,U.s9)(),o=(0,S.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,re.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 ue=(0,x.A)(de,[["render",ie],["__scopeId","data-v-80718c08"]]);var ce=ue;const pe={class:"head"},me={class:"page t-c"},ge={class:"page-wrap"};function ve(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",pe,[(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",me,[(0,l.Lk)("div",ge,[(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 fe={props:["modelValue","config"],emits:["update:modelValue"],setup(e,{emit:t}){const a=(0,S.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,re.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 he=(0,x.A)(fe,[["render",ve],["__scopeId","data-v-f73b7458"]]);var we=he;const ke={class:"head"},ye={class:"page t-c"},be={class:"page-wrap"};function Se(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",ke,[(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",be,[(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,S.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,re.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 _e=(0,x.A)(Ce,[["render",Se],["__scopeId","data-v-019c1d95"]]);var Be=_e;const Fe=e=>((0,l.Qi)("data-v-3c0782be"),e=e(),(0,l.jt)(),e),Ve=Fe((()=>(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)((()=>[Ve])),_:1},8,["title","modelValue"])}var xe=a(83),Te={props:["modelValue"],emits:["update:modelValue"],setup(e,{emit:t}){const{t:a}=(0,U.s9)(),o=(0,S.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,xe.r7)().then((e=>{(0,R.NT)().then((t=>{s(e.List,t)})).catch((()=>{}))})).catch((()=>{}))}))})),{state:o}}};const Le=(0,x.A)(Te,[["render",$e],["__scopeId","data-v-3c0782be"]]);var Pe=Le;const Ee=e=>((0,l.Qi)("data-v-6f5477f6"),e=e(),(0,l.jt)(),e),Ie=Ee((()=>(0,l.Lk)("div",{class:"map-wrap",id:"map"},null,-1)));function De(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 Re={props:["modelValue"],emits:["update:modelValue"],setup(e,{emit:t}){const{t:a}=(0,U.s9)(),o=(0,S.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,re.B8)().then((e=>{s(e)})).catch((()=>{}))}))})),{state:o}}};const Ae=(0,x.A)(Re,[["render",De],["__scopeId","data-v-6f5477f6"]]);var Ue=Ae,ze={props:["config"],components:{ServerFlowMessenger:ce,ServerFlowSForward:we,ServerFlowRelay:Be,OnlineMap:Pe,OnlineAllMap:Ue},setup(e){const{t:t}=(0,U.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,S.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,re.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 We=(0,x.A)(ze,[["render",ne],["__scopeId","data-v-12cd5250"]]);var Xe=We;const Oe=["title"],Ke={key:0,class:"progress"},Ne={key:1,class:"progress"};function Me(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",Ne,(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 Ge=a(2933),Qe=a(920),je={components:{Promotion:V.Yk4,Download:V.f5X,Loading:V.Rhj,CircleCheck:V.rW7,ServerFlow:Xe},props:["config"],setup(e){const{t:t}=(0,U.s9)(),a=(0,B.B)(),o=(0,l.EW)((()=>a.value.hasAccess("UpdateServer"))),s=(0,S.KR)({Version:"",Status:0,Length:0,Current:0,Msg:[],DateTime:""}),n=(0,S.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,Qe.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?A.nk.error(t("common.operating")):6!=s.value.Status?2==s.value.Status&&Ge.s.confirm(t("status.serverConfirm"),t("common.tips"),{confirmButtonText:t("common.confirm"),cancelButtonText:t("common.cancel"),type:"warning"}).then((()=>{(0,Qe.y2)(s.value.Version||a.value.signin.Version).then((()=>{setTimeout((()=>{r()}),1e3)}))})).catch((()=>{})):Ge.s.confirm(t("status.serverCloseConfirm"),t("common.tips"),{confirmButtonText:t("common.confirm"),cancelButtonText:t("common.cancel"),type:"warning"}).then((()=>{(0,Qe.aP)()})).catch((()=>{})))};return(0,l.sV)((()=>{r()})),{config:e.config,state:n,updaterServer:s,handleUpdate:u,updateText:i,updateColor:d}}};const Ye=(0,x.A)(je,[["render",Me],["__scopeId","data-v-6baf133f"]]);var qe=Ye,Ze={components:{ServerConfig:ee,ServerFlow:Xe,ServerVersion:qe},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.hasAccess("Flow"))),o=(0,S.Kh)({show:!1,loading:!1});return{config:e.config,hasFlow:a,state:o}}};const He=(0,x.A)(Ze,[["render",I],["__scopeId","data-v-2d85a782"]]);var Je=He;const et={key:0,class:"status-export-wrap"},tt=["title"],at={class:"port-wrap"},lt={class:"text"},ot={class:"body"},st={class:"card-header"},nt={class:"flex"},rt={style:{"margin-left":"2rem"}},it={class:"port-wrap"},dt={class:"port-wrap"},ut={style:{"margin-top":"1rem"}};function ct(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-input"),p=(0,l.g2)("el-col"),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",et,[(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}),(0,l.Lk)("span",null,(0,o.v_)(e.$t("status.export")),1)],8,tt),(0,l.bF)(h,{class:"options-center",title:e.$t("status.export"),"destroy-on-close":"",modelValue:s.state.show,"onUpdate:modelValue":t[11]||(t[11]=e=>s.state.show=e),center:"",width:"580",top:"1vh"},{footer:(0,l.k6)((()=>[(0,l.bF)(f,{plain:"",onClick:t[10]||(t[10]=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",at,[(0,l.Lk)("div",lt,(0,o.v_)(e.$t("status.exportText")),1),(0,l.Lk)("div",ot,[(0,l.bF)(v,{shadow:"never"},{header:(0,l.k6)((()=>[(0,l.Lk)("div",st,[(0,l.Lk)("div",nt,[(0,l.Lk)("div",null,[(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"])]),(0,l.Lk)("div",rt,[(0,l.Lk)("span",null,(0,o.v_)(e.$t("status.exportName"))+" : ",1),(0,l.bF)(c,{disabled:!s.state.single,modelValue:s.state.name,"onUpdate:modelValue":t[2]||(t[2]=e=>s.state.name=e),maxlength:"32","show-word-limit":"",style:{width:"15rem"}},null,8,["disabled","modelValue"])]),(0,l.Lk)("div",null,[(0,l.Lk)("span",null,(0,o.v_)(e.$t("status.exportApiPassword"))+" : ",1),(0,l.bF)(c,{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":"",style:{width:"15rem"}},null,8,["disabled","modelValue"])])]),(0,l.Lk)("div",null,[(0,l.bF)(m,null,{default:(0,l.k6)((()=>[(0,l.bF)(p,{span:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.relay,"onUpdate:modelValue":t[4]||(t[4]=e=>s.state.relay=e),label:e.$t("status.exportRelay")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(p,{span:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.sforward,"onUpdate:modelValue":t[5]||(t[5]=e=>s.state.sforward=e),label:e.$t("status.exportSForward")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(p,{span:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.updater,"onUpdate:modelValue":t[6]||(t[6]=e=>s.state.updater=e),label:e.$t("status.exportUpdater")},null,8,["modelValue","label"])])),_:1})])),_:1})]),(0,l.Lk)("div",null,[(0,l.bF)(m,null,{default:(0,l.k6)((()=>[(0,l.bF)(p,{span:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.server,"onUpdate:modelValue":t[7]||(t[7]=e=>s.state.server=e),label:e.$t("status.exportServer")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(p,{span:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.group,"onUpdate:modelValue":t[8]||(t[8]=e=>s.state.group=e),label:e.$t("status.exportGroup")},null,8,["modelValue","label"])])),_:1}),(0,l.bF)(p,{span:8},{default:(0,l.k6)((()=>[(0,l.bF)(u,{modelValue:s.state.tunnel,"onUpdate:modelValue":t[9]||(t[9]=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},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[13]||(t[13]=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",it,[(0,l.bF)(c,{modelValue:s.state.copyContent,"onUpdate:modelValue":t[12]||(t[12]=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[16]||(t[16]=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",dt,[(0,l.Lk)("div",null,[(0,l.bF)(c,{modelValue:s.state.saveServer,"onUpdate:modelValue":t[14]||(t[14]=e=>s.state.saveServer=e),readonly:""},null,8,["modelValue"])]),(0,l.Lk)("div",ut,[(0,l.bF)(c,{modelValue:s.state.saveContent,"onUpdate:modelValue":t[15]||(t[15]=e=>s.state.saveContent=e),readonly:""},null,8,["modelValue"])])])])),_:1},8,["title","modelValue"])])):(0,l.Q3)("",!0)}var pt=a(8835),mt=a(6206),gt={components:{Share:V.SYj,Access:mt.A},props:["config"],setup(e){const{t:t}=(0,U.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,S.Kh)({show:!1,loading:!1,single:!0,name:"",apipassword:s.value?a.value.config.Client.CApi.ApiPassword:"",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,S.KR)(null),d=()=>{if(!o.value)return;const e={access:i.value.getValue(),single:r.single,name:r.name,apipassword:r.apipassword,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 A.nk.error(t("status.exportNamePlease"))}else e.name="";if(r.apipassword)return e;A.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,pt.ql)(e).then((e=>{r.loading=!1,e?(r.show=!1,A.nk.success(t("common.oper")),r.saveContent=e,r.showSave=!0):A.nk.error(t("common.operFail"))})).catch((()=>{A.nk.error(t("common.operFail")),r.loading=!1})))},p=async()=>{try{return await navigator.clipboard.writeText(`在初始化linker客户端时,填写服务器和密钥,导入配置\n服务器: ${r.saveServer}\n密钥: ${r.saveContent}`),A.nk.success(t("common.oper")),!0}catch(e){return A.nk.error(t("common.operFail")),!1}},m=()=>{const e=d();e&&(r.loading=!0,(0,pt.P$)(e).then((()=>{r.loading=!1,r.show=!1,A.nk.success(t("common.oper")),u()})).catch((()=>{A.nk.error(t("common.operFail")),r.loading=!1})))},g=()=>{const e=d();e&&(r.loading=!0,(0,pt.om)(e).then((e=>{r.loading=!1,r.show=!1,A.nk.success(t("common.oper")),r.copyContent=e,r.showCopy=!0})).catch((()=>{A.nk.error(t("common.operFail")),r.loading=!1})))},v=async()=>{try{return await navigator.clipboard.writeText(r.copyContent),A.nk.success(t("common.oper")),!0}catch(e){return A.nk.error(t("common.operFail")),!1}};return{config:e.config,onlyNode:s,hasExport:o,machineId:n,state:r,accessDom:i,handleSave:c,handleExport:m,handleCopy:g,copyToClipboard:v,copySaveToClipboard:p}}};const vt=(0,x.A)(gt,[["render",ct],["__scopeId","data-v-0c4e4f2c"]]);var ft=vt,ht=a(7115),wt={components:{Api:P,Server:Je,Export:ft,UpdaterBtn:ht.A},props:["config"],setup(e){const t=(0,B.B)(),a=(0,l.EW)((()=>t.value.self)),o=(0,S.Kh)({showPay:!1});return{globalData:t,state:o,config:e.config,self:a}}};const kt=(0,x.A)(wt,[["render",b],["__scopeId","data-v-2c07ece3"]]);var yt=kt},8734:function(e,t,a){a.d(t,{A:function(){return v}});var l=a(6768);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(4);const n=e=>(0,s.zG)("sync/Sync",e);var r=a(3830),i=a(7477),d=a(1219),u=a(2933),c=a(5931),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(1241);const g=(0,m.A)(p,[["render",o]]);var v=g}}]); \ No newline at end of file diff --git a/src/linker.app/public/web/js/61.7bf0abba.js b/src/linker.app/public/web/js/61.7bf0abba.js new file mode 100644 index 00000000..5d95e86d --- /dev/null +++ b/src/linker.app/public/web/js/61.7bf0abba.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[61],{7332:function(e,n,a){a.r(n),a.d(n,{default:function(){return O}});var t=a(6768);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(4114);var u=a(4232);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(3830),m=a(144),b=a(7477),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(1241);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(8104),X=a(7985),y=a(9383),N=a(7115),U=a(263),Q=a(3694),W=a(9983),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(718),M=a(1387),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.app/public/web/js/70.a68c1d97.js b/src/linker.app/public/web/js/70.a68c1d97.js new file mode 100644 index 00000000..6c66e972 --- /dev/null +++ b/src/linker.app/public/web/js/70.a68c1d97.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[70],{4150:function(e,l,r){r.r(l),r.d(l,{default:function(){return tl}});var a=r(6768);const t={class:"app-wrap flex flex-column flex-nowrap"},o={class:"head"},u={class:"body flex-1 relative",ref:"wrap"},n={class:"home absolute"},s={class:"status"};function d(e,l,r,d,m,i){const c=(0,a.g2)("Head"),f=(0,a.g2)("router-view"),v=(0,a.g2)("Status"),b=(0,a.g2)("Install");return(0,a.uX)(),(0,a.CE)("div",t,[(0,a.Lk)("div",o,[(0,a.bF)(c)]),(0,a.Lk)("div",u,[(0,a.Lk)("div",n,[(0,a.bF)(f)])],512),(0,a.Lk)("div",s,[(0,a.bF)(v,{config:!0}),(0,a.bF)(b)])])}r(4114);var m=r(4232),i=r.p+"img/logo.c20f799b.png",c=r.p+"img/shouye.4c820c0e.svg",f=r.p+"img/fuwuqi.247f2561.svg",v=r.p+"img/dadong.e6fd78bf.svg",b=r.p+"img/anquan.5f8d5e47.svg",p=r.p+"img/rizhi.c3ca751b.svg",g=r.p+"img/shuaxin2.b46145e2.svg";const k=e=>((0,a.Qi)("data-v-ffc7e254"),e=e(),(0,a.jt)(),e),F={class:"head flex"},h={class:"logo"},w=k((()=>(0,a.Lk)("img",{src:i,alt:""},null,-1))),_={class:"menu flex-1"},y={key:0,class:"flex"},S=k((()=>(0,a.Lk)("img",{src:c},null,-1))),V={key:0},K=k((()=>(0,a.Lk)("img",{src:f},null,-1))),C={key:1},L=k((()=>(0,a.Lk)("img",{src:v},null,-1))),P={key:2},x=k((()=>(0,a.Lk)("img",{src:b},null,-1))),W={key:3},X=k((()=>(0,a.Lk)("img",{src:p},null,-1))),E={key:1,class:"flex"},A={key:0},Q=k((()=>(0,a.Lk)("img",{src:c},null,-1))),U={key:1},D=k((()=>(0,a.Lk)("img",{src:f},null,-1))),I={key:2},j=k((()=>(0,a.Lk)("img",{src:v},null,-1))),q={key:3},N=k((()=>(0,a.Lk)("img",{src:b},null,-1))),$={key:4},O=k((()=>(0,a.Lk)("img",{src:p},null,-1))),R=k((()=>(0,a.Lk)("img",{src:g},null,-1))),T={key:0,class:"select"},B={class:"el-dropdown-link"},J=k((()=>(0,a.Lk)("img",{src:c,height:"20",style:{"vertical-align":"text-top"}},null,-1))),z=k((()=>(0,a.Lk)("img",{src:f,height:"20",style:{"vertical-align":"text-top"}},null,-1))),G=k((()=>(0,a.Lk)("img",{src:v,height:"20",style:{"vertical-align":"text-top"}},null,-1))),H=k((()=>(0,a.Lk)("img",{src:b,height:"20",style:{"vertical-align":"text-top"}},null,-1))),Y=k((()=>(0,a.Lk)("img",{src:p,height:"20",style:{"vertical-align":"text-top"}},null,-1))),M={key:1,class:"locale"},Z={class:"el-dropdown-link"},ee={key:2,class:"image"};function le(e,l,r,t,o,u){const n=(0,a.g2)("router-link"),s=(0,a.g2)("Operation"),d=(0,a.g2)("el-icon"),i=(0,a.g2)("el-dropdown-item"),c=(0,a.g2)("el-dropdown-menu"),f=(0,a.g2)("el-dropdown"),v=(0,a.g2)("arrow-down"),b=(0,a.g2)("Background");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.Lk)("div",F,[(0,a.Lk)("div",h,[(0,a.bF)(n,{to:{name:"FullIndex"}},{default:(0,a.k6)((()=>[w])),_:1})]),(0,a.Lk)("div",_,[t.globalData.isPc?((0,a.uX)(),(0,a.CE)("ul",y,[(0,a.Lk)("li",null,[(0,a.bF)(n,{to:{name:"FullIndex"}},{default:(0,a.k6)((()=>[S,(0,a.Lk)("span",null,(0,m.v_)(e.$t("head.home")),1)])),_:1})]),t.hasConfig?((0,a.uX)(),(0,a.CE)("li",V,[(0,a.bF)(n,{to:{name:"FullServers"}},{default:(0,a.k6)((()=>[K,(0,a.Lk)("span",null,(0,m.v_)(e.$t("head.server")),1)])),_:1})])):(0,a.Q3)("",!0),t.hasTransport?((0,a.uX)(),(0,a.CE)("li",C,[(0,a.bF)(n,{to:{name:"FullTransport"}},{default:(0,a.k6)((()=>[L,(0,a.Lk)("span",null,(0,m.v_)(e.$t("head.protocol")),1)])),_:1})])):(0,a.Q3)("",!0),t.hasAction?((0,a.uX)(),(0,a.CE)("li",P,[(0,a.bF)(n,{to:{name:"FullAction"}},{default:(0,a.k6)((()=>[x,(0,a.Lk)("span",null,(0,m.v_)(e.$t("head.action")),1)])),_:1})])):(0,a.Q3)("",!0),t.hasLogger?((0,a.uX)(),(0,a.CE)("li",W,[(0,a.bF)(n,{to:{name:"FullLogger"}},{default:(0,a.k6)((()=>[X,(0,a.Lk)("span",null,(0,m.v_)(e.$t("head.logger")),1)])),_:1})])):(0,a.Q3)("",!0)])):((0,a.uX)(),(0,a.CE)("ul",E,["FullIndex"==t.route.name?((0,a.uX)(),(0,a.CE)("li",A,[(0,a.bF)(n,{to:{name:"FullIndex"}},{default:(0,a.k6)((()=>[Q,(0,a.Lk)("span",null,(0,m.v_)(e.$t("head.home")),1)])),_:1})])):(0,a.Q3)("",!0),t.hasConfig&&"FullServers"==t.route.name?((0,a.uX)(),(0,a.CE)("li",U,[(0,a.bF)(n,{to:{name:"FullServers"}},{default:(0,a.k6)((()=>[D,(0,a.Lk)("span",null,(0,m.v_)(e.$t("head.server")),1)])),_:1})])):(0,a.Q3)("",!0),t.hasTransport&&"FullTransport"==t.route.name?((0,a.uX)(),(0,a.CE)("li",I,[(0,a.bF)(n,{to:{name:"FullTransport"}},{default:(0,a.k6)((()=>[j,(0,a.Lk)("span",null,(0,m.v_)(e.$t("head.protocol")),1)])),_:1})])):(0,a.Q3)("",!0),t.hasAction&&"FullAction"==t.route.name?((0,a.uX)(),(0,a.CE)("li",q,[(0,a.bF)(n,{to:{name:"FullAction"}},{default:(0,a.k6)((()=>[N,(0,a.Lk)("span",null,(0,m.v_)(e.$t("head.action")),1)])),_:1})])):(0,a.Q3)("",!0),t.hasLogger&&"FullLogger"==t.route.name?((0,a.uX)(),(0,a.CE)("li",$,[(0,a.bF)(n,{to:{name:"FullLogger"}},{default:(0,a.k6)((()=>[O,(0,a.eW)(),(0,a.Lk)("span",null,(0,m.v_)(e.$t("head.logger")),1)])),_:1})])):(0,a.Q3)("",!0),(0,a.Lk)("li",null,[(0,a.Lk)("a",{href:"javascript:void(0);",onClick:l[0]||(l[0]=(...e)=>t.refresh&&t.refresh(...e))},[R,(0,a.Lk)("span",null,(0,m.v_)(e.$t("head.refresh")),1)])])]))]),t.globalData.isPhone?((0,a.uX)(),(0,a.CE)("div",T,[(0,a.bF)(f,null,{dropdown:(0,a.k6)((()=>[(0,a.bF)(c,{class:"select-menu"},{default:(0,a.k6)((()=>[(0,a.bF)(i,null,{default:(0,a.k6)((()=>[(0,a.bF)(n,{to:{name:"FullIndex"}},{default:(0,a.k6)((()=>[J,(0,a.eW)(" "+(0,m.v_)(e.$t("head.home")),1)])),_:1})])),_:1}),(0,a.bF)(i,null,{default:(0,a.k6)((()=>[(0,a.bF)(n,{to:{name:"FullServers"}},{default:(0,a.k6)((()=>[z,(0,a.eW)(" "+(0,m.v_)(e.$t("head.server")),1)])),_:1})])),_:1}),(0,a.bF)(i,null,{default:(0,a.k6)((()=>[(0,a.bF)(n,{to:{name:"FullTransport"}},{default:(0,a.k6)((()=>[G,(0,a.eW)(" "+(0,m.v_)(e.$t("head.protocol")),1)])),_:1})])),_:1}),(0,a.bF)(i,null,{default:(0,a.k6)((()=>[(0,a.bF)(n,{to:{name:"FullAction"}},{default:(0,a.k6)((()=>[H,(0,a.eW)(" "+(0,m.v_)(e.$t("head.action")),1)])),_:1})])),_:1}),(0,a.bF)(i,null,{default:(0,a.k6)((()=>[(0,a.bF)(n,{to:{name:"FullLogger"}},{default:(0,a.k6)((()=>[Y,(0,a.eW)(" "+(0,m.v_)(e.$t("head.logger")),1)])),_:1})])),_:1})])),_:1})])),default:(0,a.k6)((()=>[(0,a.Lk)("span",B,[(0,a.bF)(d,null,{default:(0,a.k6)((()=>[(0,a.bF)(s)])),_:1})])])),_:1})])):(0,a.Q3)("",!0),t.globalData.isPc?((0,a.uX)(),(0,a.CE)("div",M,[(0,a.bF)(f,null,{dropdown:(0,a.k6)((()=>[(0,a.bF)(c,null,{default:(0,a.k6)((()=>[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(t.localeOptions,((e,l)=>((0,a.uX)(),(0,a.Wv)(i,{onClick:e=>t.handleLocale(l)},{default:(0,a.k6)((()=>[(0,a.eW)((0,m.v_)(e),1)])),_:2},1032,["onClick"])))),256))])),_:1})])),default:(0,a.k6)((()=>[(0,a.Lk)("span",Z,[(0,a.eW)((0,m.v_)(t.localeOptions[t.locale])+" ",1),(0,a.bF)(d,{class:"el-icon--right"},{default:(0,a.k6)((()=>[(0,a.bF)(v)])),_:1})])])),_:1})])):(0,a.Q3)("",!0),t.globalData.isPc?((0,a.uX)(),(0,a.CE)("div",ee,[(0,a.bF)(b,{name:"full"})])):(0,a.Q3)("",!0)])])}var re=r(7477),ae=r(3830),te=r(144),oe=r(5096),ue=r(9287),ne=r(2773),se=r(1387),de={components:{Background:oe.A,Operation:re.IaS},setup(){const e=(0,se.lq)(),l=(0,ae.B)(),r=(0,a.EW)((()=>l.value.hasAccess("Config"))),t=(0,a.EW)((()=>l.value.hasAccess("LoggerShow"))),o=(0,a.EW)((()=>l.value.hasAccess("Transport"))),u=(0,a.EW)((()=>l.value.hasAccess("Action"))),n=(0,a.EW)((()=>l.value.hasAccess("Group"))),s=(0,te.KR)(ue.Y),{changeLocale:d,currentLocale:m}=(0,ne.A)(),i=(0,a.EW)({get(){return m.value},set(e){d(e)}}),c=e=>{i.value=e},f=()=>{window.location.reload()};return{route:e,globalData:l,hasConfig:r,hasGroup:n,hasLogger:t,hasTransport:o,hasAction:u,localeOptions:s,locale:i,handleLocale:c,refresh:f}}},me=r(1241);const ie=(0,me.A)(de,[["render",le],["__scopeId","data-v-ffc7e254"]]);var ce=ie,fe=r(718);function ve(e,l,r,t,o,u){const n=(0,a.g2)("Input"),s=(0,a.g2)("el-tab-pane"),d=(0,a.g2)("Copy"),m=(0,a.g2)("Save"),i=(0,a.g2)("el-tabs"),c=(0,a.g2)("el-dialog");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.bF)(c,{modelValue:t.state.show,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.show=e),title:"初始化配置",width:"600",top:"2vh"},{default:(0,a.k6)((()=>[(0,a.Lk)("div",null,[(0,a.bF)(i,{type:"border-card"},{default:(0,a.k6)((()=>[(0,a.bF)(s,{label:"手动输入"},{default:(0,a.k6)((()=>[(0,a.bF)(n)])),_:1}),(0,a.bF)(s,{label:"粘贴配置"},{default:(0,a.k6)((()=>[(0,a.bF)(d)])),_:1}),(0,a.bF)(s,{label:"在线导入"},{default:(0,a.k6)((()=>[(0,a.bF)(m)])),_:1})])),_:1})])])),_:1},8,["modelValue"])])}const be=e=>((0,a.Qi)("data-v-ce07310a"),e=e(),(0,a.jt)(),e),pe={class:"head"},ge={class:"body"},ke=be((()=>(0,a.Lk)("div",{class:"t-c"},"完成保存后,请重启软件",-1))),Fe={class:"footer t-c"};function he(e,l,r,t,o,u){const n=(0,a.g2)("el-step"),s=(0,a.g2)("el-steps"),d=(0,a.g2)("Common"),m=(0,a.g2)("el-card"),i=(0,a.g2)("Server"),c=(0,a.g2)("Client"),f=(0,a.g2)("el-button");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.Lk)("div",pe,[(0,a.bF)(s,{active:t.step.step,"finish-status":"success"},{default:(0,a.k6)((()=>[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(t.state.steps,((e,l)=>((0,a.uX)(),(0,a.Wv)(n,{title:e},null,8,["title"])))),256))])),_:1},8,["active"])]),(0,a.Lk)("div",ge,[1==t.step.step?((0,a.uX)(),(0,a.Wv)(m,{key:0,shadow:"never"},{default:(0,a.k6)((()=>[(0,a.bF)(d,{ref:"currentDom"},null,512)])),_:1})):(0,a.Q3)("",!0),2==t.step.step?((0,a.uX)(),(0,a.Wv)(m,{key:1,shadow:"never"},{default:(0,a.k6)((()=>[(0,a.bF)(i,{ref:"currentDom"},null,512)])),_:1})):(0,a.Q3)("",!0),3==t.step.step?((0,a.uX)(),(0,a.Wv)(m,{key:2,shadow:"never"},{default:(0,a.k6)((()=>[(0,a.bF)(c,{ref:"currentDom"},null,512)])),_:1})):(0,a.Q3)("",!0),4==t.step.step?((0,a.uX)(),(0,a.Wv)(m,{key:3,shadow:"never"},{default:(0,a.k6)((()=>[ke])),_:1})):(0,a.Q3)("",!0)]),(0,a.Lk)("div",Fe,[(0,a.bF)(f,{disabled:t.step.step<=1,onClick:t.handlePrev},{default:(0,a.k6)((()=>[(0,a.eW)("上一步")])),_:1},8,["disabled","onClick"]),t.step.step[(0,a.eW)("下一步")])),_:1},8,["onClick"])):((0,a.uX)(),(0,a.Wv)(f,{key:1,type:"primary",onClick:t.handleSave},{default:(0,a.k6)((()=>[(0,a.eW)("完成")])),_:1},8,["onClick"]))])])}var we=r(8835),_e=r(1219);const ye={class:"t-c"};function Se(e,l,r,t,o,u){const n=(0,a.g2)("el-checkbox");return(0,a.uX)(),(0,a.CE)("div",ye,[(0,a.bF)(n,{modelValue:t.state.form.client,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.form.client=e),label:"作为客户端"},null,8,["modelValue"]),t.globalData.isPc?((0,a.uX)(),(0,a.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,a.Q3)("",!0)])}var Ve={name:"Common",setup(){const e=(0,ae.B)(),l=(0,a.WQ)("step"),r=(0,te.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)=>{r.form.client||r.form.server?e({json:{Common:{client:r.form.client,server:r.form.server,modes:[r.form.client?"client":"",r.form.server?"server":""].filter((e=>!!e))}},form:{common:JSON.parse(JSON.stringify(r.form))}}):(_e.nk.error("请选择客户端或服务端"),l())}));return{state:r,globalData:e,handleValidate:t}}};const Ke=(0,me.A)(Ve,[["render",Se]]);var Ce=Ke;const Le=e=>((0,a.Qi)("data-v-646b1688"),e=e(),(0,a.jt)(),e),Pe=Le((()=>(0,a.Lk)("div",{class:"t-c w-100"},[(0,a.Lk)("p",null,"端口为0不监听,相同分组之间的客户端相互可见")],-1)));function xe(e,l,r,t,o,u){const n=(0,a.g2)("el-form-item"),s=(0,a.g2)("el-input"),d=(0,a.g2)("el-col"),m=(0,a.g2)("el-row"),i=(0,a.g2)("el-checkbox"),c=(0,a.g2)("el-form");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.bF)(c,{ref:"formDom",model:t.state.form,rules:t.state.rules,"label-width":"8rem"},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[Pe])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{sm:12,xs:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"机器名",prop:"name"},{default:(0,a.k6)((()=>[(0,a.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,a.uX)(),(0,a.Wv)(d,{key:0,sm:12,xs:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"网页端口",prop:"web"},{default:(0,a.k6)((()=>[(0,a.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,a.Q3)("",!0)])),_:1})])),_:1}),t.globalData.isPc?((0,a.uX)(),(0,a.Wv)(n,{key:0,label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{sm:12,xs:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"接口端口",prop:"api"},{default:(0,a.k6)((()=>[(0,a.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,a.bF)(d,{sm:12,xs:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"接口密码",prop:"password"},{default:(0,a.k6)((()=>[(0,a.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,a.Q3)("",!0),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{sm:12,xs:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"分组名",prop:"groupid"},{default:(0,a.k6)((()=>[(0,a.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,a.bF)(d,{sm:12,xs:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"分组密码",prop:"groupPassword"},{default:(0,a.k6)((()=>[(0,a.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,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{"label-width":"8rem",prop:"hasServer"},{default:(0,a.k6)((()=>[(0,a.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,a.uX)(),(0,a.Wv)(n,{key:1,label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{sm:12,xs:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"信标服务",prop:"server"},{default:(0,a.k6)((()=>[(0,a.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,a.bF)(d,{sm:12,xs:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"信标密钥",prop:"serverSecretKey"},{default:(0,a.k6)((()=>[(0,a.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,a.Q3)("",!0),t.state.form.hasServer?((0,a.uX)(),(0,a.Wv)(n,{key:2,label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{sm:12,xs:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"穿透密钥",prop:"sForwardSecretKey"},{default:(0,a.k6)((()=>[(0,a.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,a.bF)(d,{sm:12,xs:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"中继密钥",prop:"relaySecretKey"},{default:(0,a.k6)((()=>[(0,a.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,a.Q3)("",!0),t.state.form.hasServer?((0,a.uX)(),(0,a.Wv)(n,{key:3,label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{sm:12,xs:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"更新密钥",prop:"updaterSecretKey"},{default:(0,a.k6)((()=>[(0,a.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,a.uX)(),(0,a.Wv)(d,{key:0,sm:12,xs:24},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"占位"},{default:(0,a.k6)((()=>[(0,a.bF)(s,{disabled:"",maxlength:"36","show-word-limit":""})])),_:1})])),_:1})):(0,a.Q3)("",!0)])),_:1})])),_:1})):(0,a.Q3)("",!0)])),_:1},8,["model","rules"])])}var We={setup(e){const l=(0,a.WQ)("step"),r=(0,ae.B)(),t=(0,te.Kh)({form:{name:l.value.form.client.name||r.value.config.Client.Name,groupid:l.value.form.client.groupid||r.value.config.Client.Group.Id,groupPassword:l.value.form.client.groupPassword||r.value.config.Client.Group.Password,api:l.value.form.client.api||r.value.config.Client.CApi.ApiPort,web:l.value.form.client.web||r.value.config.Client.CApi.WebPort,password:l.value.form.client.password||r.value.config.Client.CApi.ApiPassword,hasServer:l.value.form.client.hasServer||!1,server:l.value.form.client.server||r.value.config.Client.Server.Host,serverSecretKey:l.value.form.client.serverSecretKey||r.value.config.Client.ServerSecretKey,sForwardSecretKey:l.value.form.client.sForwardSecretKey||r.value.config.Client.SForward.SecretKey,relaySecretKey:l.value.form.client.relaySecretKey||(r.value.config.Client.Relay.Servers[0]||{SecretKey:"snltty"}).SecretKey,updaterSecretKey:l.value.form.client.updaterSecretKey||r.value.config.Client.Updater.SecretKey},rules:{name:[{required:!0,message:"必填",trigger:"blur"}],groupid:[{required:!0,message:"必填",trigger:"blur"}],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,te.KR)(null),u=()=>new Promise(((e,l)=>{o.value.validate((r=>{r?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,a.sV)((()=>{0==l.value.json.Common.client&&(l.value.step+=l.value.increment)})),{state:t,globalData:r,handleValidate:u,formDom:o}}};const Xe=(0,me.A)(We,[["render",xe],["__scopeId","data-v-646b1688"]]);var Ee=Xe;const Ae=e=>((0,a.Qi)("data-v-8f3e22aa"),e=e(),(0,a.jt)(),e),Qe=Ae((()=>(0,a.Lk)("div",{class:"t-c w-100"},"端口为0则不监听",-1)));function Ue(e,l,r,t,o,u){const n=(0,a.g2)("el-form-item"),s=(0,a.g2)("el-input"),d=(0,a.g2)("el-col"),m=(0,a.g2)("el-row"),i=(0,a.g2)("el-form");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.bF)(i,{ref:"formDom",model:t.state.form,rules:t.state.rules,"label-width":"10rem"},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[Qe])),_:1}),(0,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"服务端口",prop:"servicePort"},{default:(0,a.k6)((()=>[(0,a.bF)(s,{modelValue:t.state.form.servicePort,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.form.servicePort=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"web穿透端口",prop:"webPort"},{default:(0,a.k6)((()=>[(0,a.bF)(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,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"开放最小端口",prop:"tunnelPort1"},{default:(0,a.k6)((()=>[(0,a.bF)(s,{modelValue:t.state.form.tunnelPort1,"onUpdate:modelValue":l[2]||(l[2]=e=>t.state.form.tunnelPort1=e)},null,8,["modelValue"])])),_:1})])),_:1}),(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"开放最大端口",prop:"tunnelPort2"},{default:(0,a.k6)((()=>[(0,a.bF)(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,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"穿透密钥",prop:"sForwardSecretKey"},{default:(0,a.k6)((()=>[(0,a.bF)(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,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"中继密钥",prop:"relaySecretKey"},{default:(0,a.k6)((()=>[(0,a.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,a.bF)(n,{label:"","label-width":"0"},{default:(0,a.k6)((()=>[(0,a.bF)(m,null,{default:(0,a.k6)((()=>[(0,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"信标密钥",prop:"signinSecretKey"},{default:(0,a.k6)((()=>[(0,a.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,a.bF)(d,{span:12},{default:(0,a.k6)((()=>[(0,a.bF)(n,{label:"更新密钥",prop:"updaterSecretKey"},{default:(0,a.k6)((()=>[(0,a.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 De={setup(e){const l=(0,a.WQ)("step"),r=(0,ae.B)(),t=(0,te.Kh)({show:!1,form:{signinSecretKey:l.value.form.server.signinSecretKey||r.value.config.Server.SignIn.SecretKey,relaySecretKey:l.value.form.server.relaySecretKey||r.value.config.Server.Relay.SecretKey,sForwardSecretKey:l.value.form.server.sForwardSecretKey||r.value.config.Server.SForward.SecretKey,servicePort:l.value.form.server.servicePort||r.value.config.Server.ServicePort,webPort:l.value.form.server.webPort||r.value.config.Server.SForward.WebPort,tunnelPort1:l.value.form.server.tunnelPort1||r.value.config.Server.SForward.TunnelPortRange[0],tunnelPort2:l.value.form.server.tunnelPort2||r.value.config.Server.SForward.TunnelPortRange[1],updaterSecretKey:l.value.form.server.updaterSecretKey||r.value.config.Server.Updater.SecretKey},rules:{relaySecretKey:[{required:!0,message:"必填",trigger:"blur"}],sForwardSecretKey:[{required:!0,message:"必填",trigger:"blur"}],servicePort:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}],webPort:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}],tunnelPort1:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}],tunnelPort2:[{required:!0,message:"必填",trigger:"blur"},{type:"number",min:0,max:65535,message:"数字 0-65535",trigger:"blur",transform(e){return Number(e)}}]}}),o=(0,te.KR)(null),u=()=>new Promise(((e,l)=>{o.value.validate((r=>{0==r?l():e({json:{Server:{ServicePort:+t.form.servicePort,Relay:{SecretKey:t.form.relaySecretKey},SForward:{SecretKey:t.form.sForwardSecretKey,WebPort:+t.form.webPort,TunnelPortRange:[+t.form.tunnelPort1,+t.form.tunnelPort2]},Updater:{SecretKey:t.form.updaterSecretKey},SignIn:{SecretKey:t.form.signinSecretKey}}},form:{server:JSON.parse(JSON.stringify(t.form))}})}))}));return(0,a.sV)((()=>{0!=l.value.json.Common.server&&0!=r.value.isPC||(l.value.step+=l.value.increment)})),{state:t,handleValidate:u,formDom:o}}};const Ie=(0,me.A)(De,[["render",Ue],["__scopeId","data-v-8f3e22aa"]]);var je=Ie,qe={components:{Common:Ce,Client:Ee,Server:je},setup(e){const l=(0,ae.B)(),r=(0,te.Kh)({steps:(0,a.EW)((()=>["选择模式",l.value.isPc?"服务端":"","客户端","完成"]))}),t=(0,te.KR)(null),o=(0,te.KR)({step:1,increment:1,json:{},form:{server:{},client:{},common:{}}});(0,a.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,we.ai)(o.value.json).then((()=>{_e.nk.success("保存成功"),window.location.reload()})).catch((()=>{_e.nk.error("保存失败")}))};return{state:r,globalData:l,currentDom:t,step:o,handlePrev:u,handleNext:n,handleSave:s}}};const Ne=(0,me.A)(qe,[["render",he],["__scopeId","data-v-ce07310a"]]);var $e=Ne;const Oe={class:"t-c mgt-1"};function Re(e,l,r,t,o,u){const n=(0,a.g2)("el-input"),s=(0,a.g2)("el-button");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.Lk)("div",null,[(0,a.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,a.Lk)("div",Oe,[(0,a.bF)(s,{type:"primary",onClick:t.handleSave},{default:(0,a.k6)((()=>[(0,a.eW)("确定")])),_:1},8,["onClick"])])])}var Te={setup(){const e=(0,te.Kh)({content:""}),l=()=>{e.content&&(0,we.vZ)(e.content).then((e=>{e?(_e.nk.success("保存成功"),window.location.reload()):_e.nk.error("保存失败,可能格式有误,无法解析")})).catch((()=>{_e.nk.error("保存失败")}))};return{state:e,handleSave:l}}};const Be=(0,me.A)(Te,[["render",Re]]);var Je=Be;const ze={class:"t-c w-100"};function Ge(e,l,r,t,o,u){const n=(0,a.g2)("el-input"),s=(0,a.g2)("el-form-item"),d=(0,a.g2)("el-button"),m=(0,a.g2)("el-form");return(0,a.uX)(),(0,a.CE)("div",null,[(0,a.bF)(m,{ref:"formDom",model:t.state.ruleForm,rules:t.state.rules,"label-width":"auto"},{default:(0,a.k6)((()=>[(0,a.bF)(s,{label:"服务器",prop:"server"},{default:(0,a.k6)((()=>[(0,a.bF)(n,{modelValue:t.state.ruleForm.server,"onUpdate:modelValue":l[0]||(l[0]=e=>t.state.ruleForm.server=e)},null,8,["modelValue"])])),_:1}),(0,a.bF)(s,{label:"密钥",prop:"value"},{default:(0,a.k6)((()=>[(0,a.bF)(n,{modelValue:t.state.ruleForm.value,"onUpdate:modelValue":l[1]||(l[1]=e=>t.state.ruleForm.value=e)},null,8,["modelValue"])])),_:1}),(0,a.bF)(s,{label:"",prop:"Btns"},{default:(0,a.k6)((()=>[(0,a.Lk)("div",ze,[(0,a.bF)(d,{type:"primary",onClick:t.handleSave},{default:(0,a.k6)((()=>[(0,a.eW)("确认")])),_:1},8,["onClick"])])])),_:1})])),_:1},8,["model","rules"])])}var He={setup(){const e=(0,te.Kh)({ruleForm:{server:"",value:""},rules:{server:[{required:!0,message:"必填",trigger:"blur"}],value:[{required:!0,message:"必填",trigger:"blur"}]}}),l=(0,te.KR)(null),r=()=>{l.value.validate((l=>{l&&(0,we.D3)(e.ruleForm).then((e=>{e?(_e.nk.success("保存成功"),window.location.reload()):_e.nk.error("保存失败,可能服务器或者密钥不正确,或者密钥已被使用")})).catch((()=>{_e.nk.error("保存失败")}))}))};return{state:e,formDom:l,handleSave:r}}};const Ye=(0,me.A)(He,[["render",Ge]]);var Me=Ye,Ze={components:{Input:$e,Copy:Je,Save:Me},setup(e){const l=(0,ae.B)(),r=(0,te.Kh)({show:0==l.value.config.Common.Install});return{state:r,globalData:l}}};const el=(0,me.A)(Ze,[["render",ve]]);var ll=el,rl={name:"Index",components:{Head:ce,Status:fe.A,Install:ll},setup(e){const l=(0,ae.B)(),r=(0,se.rd)(),t=(0,te.KR)(null),o=()=>{(0,a.dY)((()=>{l.value.height=t.value.offsetHeight,l.value.width=window.innerWidth}))};return(0,a.sV)((()=>{0==l.value.hasAccess("FullManager")&&r.push({name:"NoPermission"}),window.addEventListener("resize",o),o()})),(0,a.hi)((()=>{window.removeEventListener("resize",o)})),{wrap:t}}};const al=(0,me.A)(rl,[["render",d],["__scopeId","data-v-17a9c872"]]);var tl=al}}]); \ No newline at end of file diff --git a/src/linker.app/public/web/js/736.fdd066e8.js b/src/linker.app/public/web/js/736.fdd066e8.js new file mode 100644 index 00000000..b0e29f6a --- /dev/null +++ b/src/linker.app/public/web/js/736.fdd066e8.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[736],{7716:function(e,t,n){n.d(t,{H1:function(){return a},Oy:function(){return o},V1:function(){return u},dS:function(){return d},lE:function(){return h},nH:function(){return l},o2:function(){return s},we:function(){return r},xD:function(){return c}});var i=n(4);const a=(e="0")=>(0,i.zG)("forward/connections",e),s=e=>(0,i.zG)("forward/removeconnection",e),u=(e="0")=>(0,i.zG)("forward/getcount",e),o=(e="0")=>(0,i.zG)("forward/get",e),c=()=>(0,i.zG)("forward/bindips"),r=e=>(0,i.zG)("forward/remove",e),l=e=>(0,i.zG)("forward/add",e),d=()=>(0,i.zG)("forward/refresh"),h=e=>(0,i.zG)("forward/Test",e)},2173:function(e,t,n){n.d(t,{$y:function(){return u},L1:function(){return s},QP:function(){return l},R2:function(){return c},_Q:function(){return r},im:function(){return a},qH:function(){return o}});var i=n(4);const a=(e="0")=>(0,i.zG)("socks5/connections",e),s=e=>(0,i.zG)("socks5/removeconnection",e),u=(e="0")=>(0,i.zG)("socks5/get",e),o=e=>(0,i.zG)("socks5/run",e),c=e=>(0,i.zG)("socks5/stop",e),r=e=>(0,i.zG)("socks5/update",e),l=()=>(0,i.zG)("socks5/refresh")},5241:function(e,t,n){n.d(t,{AE:function(){return p},Jd:function(){return d},Nj:function(){return v},PR:function(){return c},Yh:function(){return l},_:function(){return h},ac:function(){return r},en:function(){return o},kl:function(){return a},vB:function(){return s},w0:function(){return m},zi:function(){return u}});var i=n(4);const a=(e="0")=>(0,i.zG)("tuntap/connections",e),s=e=>(0,i.zG)("tuntap/removeconnection",e),u=(e="0")=>(0,i.zG)("tuntap/get",e),o=e=>(0,i.zG)("tuntap/run",e),c=e=>(0,i.zG)("tuntap/stop",e),r=e=>(0,i.zG)("tuntap/update",e),l=()=>(0,i.zG)("tuntap/refresh"),d=()=>(0,i.zG)("tuntap/SubscribePing"),h=e=>(0,i.zG)("tuntap/SubscribeForwardTest",e),m=e=>(0,i.zG)("tuntap/CalcNetwork",e),v=()=>(0,i.zG)("tuntap/GetNetwork"),p=e=>(0,i.zG)("tuntap/AddNetwork",e)},9983:function(e,t,n){n.d(t,{FG:function(){return p},L2:function(){return h},ZY:function(){return m},bB:function(){return f},mx:function(){return v}});var i=n(7716),a=n(5241),s=n(2173),u=n(144),o=n(6768);const c=Symbol(),r=Symbol(),l=Symbol(),d=Symbol(),h=()=>{const e=(0,u.KR)({showEdit:!1,speedCache:{},current:"",currentName:"",hashcode:0,hashcode1:0,_updateRealTime:!1,updateRealTime:t=>{e.value.hashcode=0,e.value.hashcode1=0,e.value._updateRealTime=t}});(0,o.Gt)(c,e);const t=(0,u.KR)({timer:0,list:{}});(0,o.Gt)(r,t);const n=()=>{clearTimeout(t.value.timer),(0,i.H1)(e.value.hashcode.toString()).then((a=>{0==e.value._updateRealTime&&(e.value.hashcode=a.HashCode),a.List&&(f(a.List,i.o2),t.value.list=a.List),t.value.timer=setTimeout(n,1e3)})).catch((e=>{t.value.timer=setTimeout(n,1e3)}))},h=(0,u.KR)({timer:0,list:{}});(0,o.Gt)(l,h);const m=()=>{clearTimeout(h.value.timer),(0,a.kl)(e.value.hashcode1.toString()).then((t=>{0==e.value._updateRealTime&&(e.value.hashcode1=t.HashCode),t.List&&(f(t.List,a.vB),h.value.list=t.List),h.value.timer=setTimeout(m,1e3)})).catch((e=>{h.value.timer=setTimeout(m,1e3)}))},v=(0,u.KR)({timer:0,list:{}});(0,o.Gt)(d,v);const p=()=>{clearTimeout(v.value.timer),(0,s.im)(e.value.hashcode1.toString()).then((t=>{0==e.value._updateRealTime&&(e.value.hashcode1=t.HashCode),t.List&&(f(t.List,s.L1),v.value.list=t.List),v.value.timer=setTimeout(p,1e3)})).catch((e=>{v.value.timer=setTimeout(p,1e3)}))},f=(t,n)=>{const i=e.value.speedCache;for(let e in t){const a=t[e];a.removeFunc=n;const s=`${a.RemoteMachineId}-${a.TransactionId}`,u=i[s]||{SendBytes:0,ReceiveBytes:0};a.SendBytesText=g(a.SendBytes-u.SendBytes),a.ReceiveBytesText=g(a.ReceiveBytes-u.ReceiveBytes),u.SendBytes=a.SendBytes,u.ReceiveBytes=a.ReceiveBytes,i[s]=u}},g=e=>{let t=0;while(e>=1024)e/=1024,t++;return`${e.toFixed(2)}${["B/s","KB/s","MB/s","GB/s","TB/s"][t]}`},I=t=>{e.value.current=t.MachineId,e.value.currentName=t.MachineName,e.value.showEdit=!0},C=()=>{clearTimeout(t.value.timer),clearTimeout(h.value.timer),clearTimeout(v.value.timer)};return{connections:e,forwardConnections:t,_getForwardConnections:n,tuntapConnections:h,_getTuntapConnections:m,socks5Connections:v,_getSocks5Connections:p,handleTunnelConnections:I,clearConnectionsTimeout:C}},m=()=>(0,o.WQ)(c),v=()=>(0,o.WQ)(r),p=()=>(0,o.WQ)(l),f=()=>(0,o.WQ)(d)},7985:function(e,t,n){n.d(t,{r:function(){return r}});n(4114);var i=n(9299),a=n(3830),s=n(6768),u=n(144);const o=[],c=Symbol(),r=()=>{const e=(0,a.B)(),t=(0,s.EW)((()=>e.value.config.Client.Id)),n=(0,u.Kh)({timer:0,page:{Request:{Page:1,Size:+(localStorage.getItem("ps")||"10"),Name:"",Ids:[],Prop:"",Asc:!0},Count:0,List:[]},showDeviceEdit:!1,showAccessEdit:!1,deviceInfo:null});(0,s.Gt)(c,n);const r=()=>{(0,i.nD)(n.page.Request).then((i=>{n.page.Request=i.Request,n.page.Count=i.Count;for(let n in i.List)Object.assign(i.List[n],{showDel:t.value!=i.List[n].MachineId&&0==i.List[n].Connected,showAccess:t.value!=i.List[n].MachineId&&i.List[n].Connected,showReboot:i.List[n].Connected,isSelf:t.value==i.List[n].MachineId,showip:!1}),i.List[n].isSelf&&(e.value.self=i.List[n]);n.page.List=i.List;for(let e=0;e{}))},l=()=>{clearTimeout(n.timer),(0,i.nD)(n.page.Request).then((i=>{for(let a in i.List){const s=n.page.List.filter((e=>e.MachineId==i.List[a].MachineId))[0];s&&(Object.assign(s,{Connected:i.List[a].Connected,Version:i.List[a].Version,LastSignIn:i.List[a].LastSignIn,Args:i.List[a].Args,showDel:t.value!=i.List[a].MachineId&&0==i.List[a].Connected,showAccess:t.value!=i.List[a].MachineId&&i.List[a].Connected,showReboot:i.List[a].Connected,isSelf:t.value==i.List[a].MachineId}),s.isSelf&&(e.value.self=s))}n.timer=setTimeout(l,5e3)})).catch((e=>{n.timer=setTimeout(l,5e3)}))},d=e=>{n.deviceInfo=e,n.showDeviceEdit=!0},h=e=>{n.deviceInfo=e,n.showAccessEdit=!0},m=e=>{e&&(n.page.Request.Page=e),r()},v=e=>{e&&(n.page.Request.Size=e,localStorage.setItem("ps",e)),r()},p=e=>{(0,i.Se)(e).then((()=>{r()}))},f=()=>{clearTimeout(n.timer),n.timer=0},g=e=>(0,i.VN)(e);return{devices:n,machineId:t,_getSignList:r,_getSignList1:l,handleDeviceEdit:d,handleAccessEdit:h,handlePageChange:m,handlePageSizeChange:v,handleDel:p,clearDevicesTimeout:f,setSort:g}}},8104:function(e,t,n){n.d(t,{O:function(){return o},W:function(){return c}});n(3375),n(9225),n(3972),n(9209),n(5714),n(7561),n(6197);var i=n(144),a=n(6768),s=n(5241);const u=Symbol(),o=()=>{const e=(0,i.KR)({show:!0,timer:0,showEdit:!1,current:null,list:{},hashcode:0,showLease:!1});(0,a.Gt)(u,e);const t=/iphone|samsung|vivo|oppo|google|huawei|xiaomi|ios|android|windows|ubuntu|openwrt|armbian|archlinux|fedora|centos|rocky|alpine|debian|linux|docker/g,n=()=>{clearTimeout(e.value.timer),(0,s.zi)(e.value.hashcode.toString()).then((i=>{if(e.value.hashcode=i.HashCode,i.List){for(let e in i.List){const n=i.List[e].SystemInfo.toLowerCase(),a=[...new Set(n.match(t))];Object.assign(i.List[e],{running:2==i.List[e].Status,loading:1==i.List[e].Status,systems:a})}e.value.list=i.List}e.value.timer=setTimeout(n,1100),(0,s.Jd)()})).catch((t=>{e.value.timer=setTimeout(n,1100)}))},o=t=>{e.value.current=t,e.value.showEdit=!0},c=()=>{(0,s.Yh)()},r=()=>{clearTimeout(e.value.timer),e.value.timer=0},l=t=>Object.values(e.value.list).filter((e=>e.IP.indexOf(t)>=0||e.Lans.filter((e=>e.IP.indexOf(t)>=0)).length>0)).map((e=>e.MachineId)),d=t=>{const n=Object.values(e.value.list).filter((e=>e.IP)).sort(((e,t)=>{const n=e.IP.split(".").map((e=>Number(e))),i=t.IP.split(".").map((e=>Number(e)));for(let a=0;ae.MachineId))};return{tuntap:e,_getTuntapInfo:n,handleTuntapEdit:o,handleTuntapRefresh:c,clearTuntapTimeout:r,getTuntapMachines:l,sortTuntapIP:d}},c=()=>(0,a.WQ)(u)},2109:function(e,t,n){n.d(t,{A:function(){return v}});var i=n(6768);const a={key:0,class:"point p2p",title:"打洞直连"},s={key:1,class:"point relay",title:"中继连接"},u={key:2,class:"point node",title:"节点连接"},o={key:1,class:"point",title:"未连接"};function c(e,t,n,c,r,l){return(0,i.uX)(),(0,i.CE)("div",{class:"point",onClick:t[0]||(t[0]=(...e)=>c.handleShow&&c.handleShow(...e))},[c.state.connection&&c.state.connection.Connected?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[0==c.state.connection.Type?((0,i.uX)(),(0,i.CE)("span",a)):1==c.state.connection.Type?((0,i.uX)(),(0,i.CE)("span",s)):2==c.state.connection.Type?((0,i.uX)(),(0,i.CE)("span",u)):(0,i.Q3)("",!0)],64)):((0,i.uX)(),(0,i.CE)("span",o))])}var r=n(144),l=n(9983),d={props:["data","row"],setup(e){const t=(0,l.ZY)(),n=(0,r.Kh)({connection:e.data});(0,i.wB)((()=>e.data),(()=>{n.connection=e.data}));const a=()=>{t.value.current=e.row.MachineId,t.value.currentName=e.row.MachineName,t.value.showEdit=!0};return{state:n,handleShow:a}}},h=n(1241);const m=(0,h.A)(d,[["render",c],["__scopeId","data-v-41d1beca"]]);var v=m},263:function(e,t,n){n.d(t,{A:function(){return p}});var i=n(6768),a=n(4232);const s={key:0,class:"self gateway"},u=["title"],o=["src"];function c(e,t,n,c,r,l){const d=(0,i.g2)("StarFilled"),h=(0,i.g2)("el-icon");return(0,i.uX)(),(0,i.CE)("div",null,[(0,i.Lk)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>c.handleEdit&&c.handleEdit(...e)),title:"此客户端的设备名",class:"a-line"},[(0,i.Lk)("strong",{class:(0,a.C4)(["gateway",{green:c.item.Connected}])},(0,a.v_)(c.item.MachineName||"null"),3)]),c.item.isSelf?((0,i.uX)(),(0,i.CE)("strong",s,[(0,i.eW)("("),(0,i.bF)(h,{size:"16"},{default:(0,i.k6)((()=>[(0,i.bF)(d)])),_:1}),(0,i.eW)(") ")])):(0,i.Q3)("",!0),c.tuntap.list[c.item.MachineId]&&c.tuntap.list[c.item.MachineId].systems?((0,i.uX)(!0),(0,i.CE)(i.FK,{key:1},(0,i.pI)(c.tuntap.list[c.item.MachineId].systems,(e=>((0,i.uX)(),(0,i.CE)("span",{title:c.tuntap.list[c.item.MachineId].SystemInfo},[(0,i.Lk)("img",{class:"system",src:`./${e}.svg`},null,8,o)],8,u)))),256)):(0,i.Q3)("",!0)])}var r=n(3830),l=n(8104),d=n(7477),h={props:["item","config"],emits:["edit","refresh"],components:{StarFilled:d.BQ2},setup(e,{emit:t}){const n=(0,l.W)(),a=(0,r.B)(),s=(0,i.EW)((()=>a.value.hasAccess("RenameSelf"))),u=(0,i.EW)((()=>a.value.hasAccess("RenameOther"))),o=(0,i.EW)((()=>a.value.config.Client.Id)),c=()=>{if(e.config){if(o.value===e.item.MachineId){if(!s.value)return}else if(!u.value)return;t("edit",e.item)}};return{item:(0,i.EW)((()=>e.item)),tuntap:n,handleEdit:c}}},m=n(1241);const v=(0,m.A)(h,[["render",c],["__scopeId","data-v-4931fbdc"]]);var p=v},3694:function(e,t,n){n.d(t,{A:function(){return _}});var i=n(6768),a=n(4232);const s={class:"flex"},u={class:"flex-1"},o=["title"],c=["title"],r={key:2,class:"app-nat",title:"虚拟网卡IP\r\n应用层SNAT\r\n如果无法使用点对网,请重启一次系统"},l={key:3,class:"green gateway",title:"虚拟网卡IP\r\n系统NAT"},d={key:4},h={key:0},m={key:0,class:"flex disable",title:"已禁用"},v={key:1,class:"flex yellow",title:"与其它设备填写IP、或本机局域网IP有冲突"},p={key:2,class:"flex green",title:"正常使用"},f={key:0,class:"any green"},g={key:0,class:"delay green"},I={class:"delay yellow"};function C(e,t,n,C,L,w){const y=(0,i.g2)("ConnectionShow"),k=(0,i.g2)("Loading"),S=(0,i.g2)("el-icon"),E=(0,i.g2)("el-switch"),T=(0,i.g2)("Share");return(0,i.uX)(),(0,i.CE)("div",null,[(0,i.Lk)("div",s,[(0,i.Lk)("div",u,[(0,i.bF)(y,{data:C.connections.list[C.item.MachineId],row:C.item},null,8,["data","row"]),(0,i.Lk)("a",{href:"javascript:;",class:"a-line",onClick:t[0]||(t[0]=e=>C.handleTuntapIP(C.tuntap.list[C.item.MachineId])),title:"虚拟网卡IP"},[C.tuntap.list[C.item.MachineId].SetupError?((0,i.uX)(),(0,i.CE)("strong",{key:0,class:"red",title:C.tuntap.list[C.item.MachineId].SetupError},(0,a.v_)(C.tuntap.list[C.item.MachineId].IP),9,o)):C.tuntap.list[C.item.MachineId].Upgrade&&C.tuntap.list[C.item.MachineId].NatError?((0,i.uX)(),(0,i.CE)("strong",{key:1,class:"yellow",title:C.tuntap.list[C.item.MachineId].NatError},(0,a.v_)(C.tuntap.list[C.item.MachineId].IP),9,c)):C.tuntap.list[C.item.MachineId].AppNat&&C.tuntap.list[C.item.MachineId].running?((0,i.uX)(),(0,i.CE)("strong",r,(0,a.v_)(C.tuntap.list[C.item.MachineId].IP),1)):C.item.Connected&&C.tuntap.list[C.item.MachineId].running?((0,i.uX)(),(0,i.CE)("strong",l,(0,a.v_)(C.tuntap.list[C.item.MachineId].IP),1)):((0,i.uX)(),(0,i.CE)("strong",d,(0,a.v_)(C.tuntap.list[C.item.MachineId].IP),1))])]),C.tuntap.list[C.item.MachineId].loading?((0,i.uX)(),(0,i.CE)("div",h,[(0,i.bF)(S,{size:"14",class:"loading"},{default:(0,i.k6)((()=>[(0,i.bF)(k)])),_:1})])):((0,i.uX)(),(0,i.Wv)(E,{key:1,"model-value":C.item.Connected&&C.tuntap.list[C.item.MachineId].running,loading:C.tuntap.list[C.item.MachineId].loading,disabled:"",onClick:t[1]||(t[1]=e=>C.handleTuntap(C.tuntap.list[C.item.MachineId])),size:"small","inline-prompt":"","active-text":"😀","inactive-text":"😣"},null,8,["model-value","loading"]))]),(0,i.Lk)("div",null,[(0,i.Lk)("div",null,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(C.tuntap.list[C.item.MachineId].Lans,((e,t)=>((0,i.uX)(),(0,i.CE)(i.FK,{key:t},[e.Disabled?((0,i.uX)(),(0,i.CE)("div",m,(0,a.v_)(e.IP)+" / "+(0,a.v_)(e.PrefixLength),1)):e.Exists?((0,i.uX)(),(0,i.CE)("div",v,(0,a.v_)(e.IP)+" / "+(0,a.v_)(e.PrefixLength),1)):((0,i.uX)(),(0,i.CE)("div",p,(0,a.v_)(e.IP)+" / "+(0,a.v_)(e.PrefixLength),1))],64)))),128))]),C.tuntap.list[C.item.MachineId].Any?((0,i.uX)(),(0,i.CE)("div",f,[(0,i.bF)(S,null,{default:(0,i.k6)((()=>[(0,i.bF)(T)])),_:1})])):(0,i.Q3)("",!0),C.showDelay?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[C.tuntap.list[C.item.MachineId].Delay>=0&&C.tuntap.list[C.item.MachineId].Delay<=100?((0,i.uX)(),(0,i.CE)("div",g,(0,a.v_)(C.tuntap.list[C.item.MachineId].Delay)+"ms",1)):(0,i.Q3)("",!0),(0,i.Lk)("template",null,[(0,i.Lk)("div",I,(0,a.v_)(C.tuntap.list[C.item.MachineId].Delay)+"ms",1)])],64)):(0,i.Q3)("",!0)])])}var L=n(5241),w=n(1219),y=n(8104),k=n(7477),S=n(3830),E=n(9983),T=n(2109),M={props:["item","config"],emits:["edit","refresh"],components:{Loading:k.Rhj,Share:k.SYj,ConnectionShow:T.A},setup(e,{emit:t}){const n=(0,y.W)(),a=(0,S.B)(),s=(0,i.EW)((()=>a.value.config.Client.Id)),u=(0,i.EW)((()=>a.value.hasAccess("TuntapChangeSelf"))),o=(0,i.EW)((()=>a.value.hasAccess("TuntapChangeOther"))),c=(0,i.EW)((()=>a.value.hasAccess("TuntapStatusSelf"))),r=(0,i.EW)((()=>a.value.hasAccess("TuntapStatusOther"))),l=(0,E.FG)(),d=(0,i.EW)((()=>2==(2&(a.value.config.Running.Tuntap||{Switch:0}).Switch))),h=t=>{if(!e.config)return;if(s.value===t.MachineId){if(!c.value)return}else if(!r.value)return;const n=e.item.Connected&&t.running?(0,L.PR)(t.MachineId):(0,L.en)(t.MachineId);t.loading=!0,n.then((()=>{w.nk.success("操作成功!")})).catch((e=>{console.log(e),w.nk.error("操作失败!")}))},m=n=>{if(e.config||s.value==n.MachineId){if(s.value===n.MachineId){if(!u.value)return}else if(!o.value)return;n.device=e.item,t("edit",n)}},v=()=>{t("refresh")};return{item:(0,i.EW)((()=>e.item)),tuntap:n,showDelay:d,connections:l,handleTuntap:h,handleTuntapIP:m,handleTuntapRefresh:v}}},b=n(1241);const G=(0,b.A)(M,[["render",C],["__scopeId","data-v-0f71f9a6"]]);var _=G}}]); \ No newline at end of file diff --git a/src/linker.app/public/web/js/app.79eba13b.js b/src/linker.app/public/web/js/app.79eba13b.js new file mode 100644 index 00000000..7fe3b18a --- /dev/null +++ b/src/linker.app/public/web/js/app.79eba13b.js @@ -0,0 +1 @@ +(function(){"use strict";var e={8835:function(e,r,s){s.d(r,{D3:function(){return l},P$:function(){return u},ai:function(){return a},om:function(){return i},ql:function(){return d},vZ:function(){return o},zj:function(){return n}});var t=s(4);const n=()=>(0,t.zG)("config/get"),a=e=>(0,t.zG)("config/install",e),o=e=>(0,t.zG)("config/InstallCopy",e),l=e=>(0,t.zG)("config/InstallSave",e),u=e=>(0,t.zG)("config/export",e),i=e=>(0,t.zG)("config/copy",e),d=e=>(0,t.zG)("config/save",e)},4:function(e,r,s){s.d(r,{a1:function(){return f},e3:function(){return C},jH:function(){return S},zG:function(){return h}});s(4114),s(6573),s(8100),s(7936);var t=s(1219);let n=0,a=null,o="",l=1,u="";const i={},d={connected:!1,connecting:!1},c=()=>{const e=Date.now();for(let r in i){const s=i[r];e-s.time>s.timeout&&(s.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 s=this.subs[e]||[];for(let t=s.length-1;t>=0;t--)s[t]==r&&s.splice(t,1)},push(e,r){let s=this.subs[e]||[];for(let t=s.length-1;t>=0;t--)s[t](r)}},v=()=>{d.connected=!0,d.connecting=!1,y.push(k,d.connected)},p=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 s=new DataView(r).getInt8(),t=new FileReader;t.readAsText(e.data.slice(4,4+s),"utf8"),t.onload=()=>{let n=JSON.parse(t.result);n.Content={Name:n.Content,Img:e.data.slice(4+s,e.data.length),ArrayBuffer:r},g(n)}}));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||t.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)=>{if(u=r,o=e,d.connecting||d.connected)return;null!=a&&a.close(),d.connecting=!0;const s=r||"snltty";a=new WebSocket(o,[s]),a.iddd=++l,a.onopen=v,a.onclose=p,a.onmessage=m,a.onerror=e=>{t.nk.error({message:"api接口连接失败,请检查接口地址或密码",grouping:!0})}},C=()=>{a&&a.close()},h=(e,r={},s=!1,t=15e3)=>new Promise(((o,l)=>{let u=++n;try{i[u]={resolve:o,reject:l,errHandle:s,path:e,time:Date.now(),timeout:t};let n=JSON.stringify({Path:e,RequestId:u,Content:"string"==typeof r?r:JSON.stringify(r)});d.connected&&1==a.readyState?a.send(n):l("网络错误~")}catch(c){console.log(c),l("网络错误~"),delete i[u]}})),k=Symbol(),S=e=>{y.add(k,e)}},9299:function(e,r,s){s.d(r,{BS:function(){return i},NT:function(){return v},SZ:function(){return o},Se:function(){return d},VN:function(){return l},gC:function(){return c},jU:function(){return a},nD:function(){return u},rd:function(){return n},zp:function(){return y}});var t=s(4);const n=e=>(0,t.zG)("signIn/set",e),a=e=>(0,t.zG)("signIn/setservers",e),o=()=>(0,t.zG)("signIn/info"),l=e=>(0,t.zG)("signIn/setorder",e),u=e=>(0,t.zG)("signIn/List",e),i=e=>(0,t.zG)("signIn/ids",e),d=e=>(0,t.zG)("signIn/del",e),c=e=>(0,t.zG)("signIn/setname",e),y=e=>(0,t.zG)("signIn/SetGroups",e),v=()=>(0,t.zG)("signIn/names")},9287:function(e,r,s){s.d(r,{Y:function(){return o},A:function(){return u}});var t=s(5931),n={"common.oper":"Operated","common.operFail":"Operation failed","common.confirm":"Confirm","common.cancel":"Cancel","common.setting":"Setting","common.operating":"In operation","common.tips":"Tips","common.option":"Option","common.access":"No access","head.home":"Home","head.server":"Server","head.protocol":"P2P Protocol","head.action":"Action","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.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"},a={"common.oper":"已操作","common.operFail":"操作失败","common.confirm":"确认","common.cancel":"取消","common.setting":"设置","common.operating":"正在操作","common.tips":"提示","common.option":"选项","common.access":"无权限","head.home":"首页","head.server":"服务器","head.group":"分组","head.protocol":"打洞协议","head.action":"自定义验证","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.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":"用户唯一标识"};const o={"zh-CN":"简体中文","en-US":"English"},l=(0,t.hU)({locale:localStorage.getItem("locale-lang")||navigator.language||navigator.browserLanguage,fallbackLocale:"zh-CN",legacy:!1,allowComposition:!0,messages:{"en-US":n,"zh-CN":a}});var u=l},2773:function(e,r,s){s.d(r,{A:function(){return a}});var t=s(6768),n=s(5931);function a(){const e=(0,n.s9)(),r=(0,t.EW)((()=>e.locale.value)),s=r=>{e.locale.value!==r&&(e.locale.value=r,localStorage.setItem("locale-lang",r))};return{currentLocale:r,changeLocale:s}}},6122:function(e,r,s){var t=s(5130),n=s(6768),a=s(4232);function o(e,r,s,t,o,l){const u=(0,n.g2)("router-view"),i=(0,n.g2)("Api"),d=(0,n.g2)("el-config-provider");return(0,n.uX)(),(0,n.CE)("div",{class:(0,a.C4)({phone:t.globalData.isPhone})},[(0,n.bF)(d,{locale:t.locale},{default:(0,n.k6)((()=>[t.configed?((0,n.uX)(),(0,n.Wv)(u,{key:0})):(0,n.Q3)("",!0),(0,n.bF)(i)])),_:1},8,["locale"])],2)}var l=s(3830);const u={class:"port-wrap t-c"},i={class:"pdt-10"},d={class:"pdt-10"};function c(e,r,s,a,o,l){const c=(0,n.g2)("el-input"),y=(0,n.g2)("el-checkbox"),v=(0,n.g2)("el-button"),p=(0,n.g2)("el-dialog");return(0,n.uX)(),(0,n.Wv)(p,{class:"options-center",title:"管理接口","destroy-on-close":"",modelValue:a.showPort,"onUpdate:modelValue":r[3]||(r[3]=e=>a.showPort=e),center:"","show-close":!1,"close-on-click-modal":!1,"align-center":"",width:"200"},{footer:(0,n.k6)((()=>[(0,n.bF)(v,{type:"success",onClick:a.handleConnect1,plain:""},{default:(0,n.k6)((()=>[(0,n.eW)("确 定")])),_:1},8,["onClick"])])),default:(0,n.k6)((()=>[(0,n.Lk)("div",u,[(0,n.Lk)("div",null,[(0,n.eW)(" 接口 : "),(0,n.bF)(c,{modelValue:a.state.api,"onUpdate:modelValue":r[0]||(r[0]=e=>a.state.api=e),style:{width:"70%"},onKeyup:(0,t.jR)(a.handleConnect1,["enter"])},null,8,["modelValue","onKeyup"])]),(0,n.Lk)("div",i,[(0,n.eW)(" 秘钥 : "),(0,n.bF)(c,{"show-password":"",type:"password",modelValue:a.state.psd,"onUpdate:modelValue":r[1]||(r[1]=e=>a.state.psd=e),style:{width:"70%"},onKeyup:(0,t.jR)(a.handleConnect1,["enter"])},null,8,["modelValue","onKeyup"])]),(0,n.Lk)("div",d,[(0,n.bF)(y,{modelValue:a.state.save,"onUpdate:modelValue":r[2]||(r[2]=e=>a.state.save=e)},{default:(0,n.k6)((()=>[(0,n.eW)("保存密码")])),_:1},8,["modelValue"])])])])),_:1},8,["modelValue"])}var y=s(1387),v=s(144),p=s(4),m=s(9299),g=s(8835),f=s(7477),C={components:{Tools:f.S0q},props:["config"],setup(e){const r=(0,l.B)(),s=(0,y.rd)(),t=(0,y.lq)(),a={api:`${window.location.hostname}:1803`,psd:"snltty"},o=JSON.parse(sessionStorage.getItem("api-cache")||localStorage.getItem("api-cache")||JSON.stringify(a)),u=(0,v.Kh)({api:o.api,psd:o.psd,showPort:!1,save:o.save||!1}),i=(0,n.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,p.e3)();const e=`ws${"https:"===window.location.protocol?"s":""}://${u.api}`;(0,p.a1)(e,u.psd)},c=()=>{d(),window.location.reload()},f=()=>{(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((()=>{f()}),1e3)})).catch((e=>{setTimeout((()=>{f()}),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,n.sV)((()=>{setTimeout((()=>{u.showPort=!0}),500),(0,p.jH)((e=>{e&&(f(),C())})),s.isReady().then((()=>{u.api=t.query.api?`${window.location.hostname}:${t.query.api}`:u.api,u.psd=t.query.psd||u.psd,d()}))})),{state:u,showPort:i,handleConnect1:c}}},h=s(1241);const k=(0,h.A)(C,[["render",c],["__scopeId","data-v-08aa73f8"]]);var S=k,w=s(2721),T=s(6726),b=s(2773),P={components:{Api:S},setup(e){const r=(0,l.v)(),s=(0,n.EW)((()=>r.value.config.configed)),{currentLocale:t}=(0,b.A)(),a=(0,n.EW)((()=>"zh-CN"==t.value?w.A:T.A));return{configed:s,locale:a,globalData:r}}};const I=(0,h.A)(P,[["render",o]]);var N=I;const D=[{path:"/",name:"Full",component:()=>Promise.all([s.e(754),s.e(175),s.e(70)]).then(s.bind(s,4150)),redirect:"/full/index.html",children:[{path:"/full/index.html",name:"FullIndex",component:()=>Promise.all([s.e(754),s.e(736),s.e(353)]).then(s.bind(s,7488))},{path:"/full/servers.html",name:"FullServers",component:()=>s.e(123).then(s.bind(s,6123))},{path:"/full/transport.html",name:"FullTransport",component:()=>s.e(32).then(s.bind(s,4032))},{path:"/full/action.html",name:"FullAction",component:()=>s.e(340).then(s.bind(s,3959))},{path:"/full/logger.html",name:"FullLogger",component:()=>s.e(372).then(s.bind(s,8372))}]},{path:"/net/index.html",name:"Network",component:()=>Promise.all([s.e(754),s.e(175),s.e(736),s.e(61)]).then(s.bind(s,7332))},{path:"/no-permission.html",name:"NoPermission",component:()=>s.e(228).then(s.bind(s,6100))}],K=(0,y.aE)({history:(0,y.Bt)(),routes:D});var A=K,x=s(9287),U=s(6161);s(4188),s(2355),s(1862);const E=(0,t.Ef)(N);E.use(x.A),E.use(U.A,{size:"default"}).use(A).mount("#app")},3830:function(e,r,s){s.d(r,{B:function(){return u},v:function(){return l}});var t=s(4),n=s(144),a=s(6768);const o=Symbol(),l=()=>{const e=(0,n.KR)({api:{connected:!1},width:0,height:0,isPhone:(0,a.EW)((()=>e.value.width<800)),isPc:(0,a.EW)((()=>e.value.width>=800)),config:{Common:{},Client:{Servers:[],Accesss:{}},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||-1,s=this.config.Client.Access||-1;return s>=0&&(0==s||+(BigInt(s)&BigInt(r)).toString()==r)}});return(0,t.jH)((r=>{e.value.api.connected=r})),(0,a.Gt)(o,e),e},u=()=>(0,a.WQ)(o)}},r={};function s(t){var n=r[t];if(void 0!==n)return n.exports;var a=r[t]={id:t,loaded:!1,exports:{}};return e[t].call(a.exports,a,a.exports,s),a.loaded=!0,a.exports}s.m=e,function(){var e=[];s.O=function(r,t,n,a){if(!t){var o=1/0;for(d=0;d=a)&&Object.keys(s.O).every((function(e){return s.O[e](t[u])}))?t.splice(u--,1):(l=!1,a0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[t,n,a]}}(),function(){s.n=function(e){var r=e&&e.__esModule?function(){return e["default"]}:function(){return e};return s.d(r,{a:r}),r}}(),function(){s.d=function(e,r){for(var t in r)s.o(r,t)&&!s.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})}}(),function(){s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce((function(r,t){return s.f[t](e,r),r}),[]))}}(),function(){s.u=function(e){return"js/"+e+"."+{32:"c86fd9ce",61:"7bf0abba",70:"a68c1d97",123:"2a29c16a",175:"7664b060",228:"45b76490",340:"9d567527",353:"eaaf2d3e",372:"b76e2e4d",736:"fdd066e8",754:"f9bdb301"}[e]+".js"}}(),function(){s.miniCssF=function(e){return"css/"+e+"."+{32:"1374e89e",61:"e315a424",70:"7b662b32",123:"10316aa2",228:"b2a71eca",340:"f859e18d",353:"753df2fe",372:"e4499fe6"}[e]+".css"}}(),function(){s.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){s.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)}}(),function(){var e={},r="linker.web:";s.l=function(t,n,a,o){if(e[t])e[t].push(n);else{var l,u;if(void 0!==a)for(var i=document.getElementsByTagName("script"),d=0;d \ No newline at end of file diff --git a/src/linker.app/public/web/samsung.svg b/src/linker.app/public/web/samsung.svg new file mode 100644 index 00000000..e73dc253 --- /dev/null +++ b/src/linker.app/public/web/samsung.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/linker.app/public/web/vivo.svg b/src/linker.app/public/web/vivo.svg new file mode 100644 index 00000000..60cadb53 --- /dev/null +++ b/src/linker.app/public/web/vivo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/linker.messenger.updater/Entry.cs b/src/linker.messenger.updater/Entry.cs index 5604f2a4..d4f2ef48 100644 --- a/src/linker.messenger.updater/Entry.cs +++ b/src/linker.messenger.updater/Entry.cs @@ -5,6 +5,8 @@ namespace linker.messenger.updater { public static class Entry { + static bool added = false; + static bool used = false; public static ServiceCollection AddUpdaterClient(this ServiceCollection serviceCollection) { serviceCollection.AddSingleton(); @@ -16,6 +18,8 @@ namespace linker.messenger.updater serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); + return serviceCollection; } public static ServiceProvider UseUpdaterClient(this ServiceProvider serviceProvider) @@ -40,15 +44,24 @@ namespace linker.messenger.updater serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); + + serviceCollection.AddSingleton(); + return serviceCollection; } public static ServiceProvider UseUpdaterServer(this ServiceProvider serviceProvider) { - UpdaterServerTransfer updaterServerTransfer= serviceProvider.GetService(); + UpdaterServerTransfer updaterServerTransfer = serviceProvider.GetService(); IMessengerResolver messengerResolver = serviceProvider.GetService(); messengerResolver.AddMessenger(new List { serviceProvider.GetService() }); + if (used == false) + { + used = true; + IUpdaterInstaller updaterInstaller = serviceProvider.GetService(); + } + return serviceProvider; } } diff --git a/src/linker.messenger.updater/IUpdaterInstaller.cs b/src/linker.messenger.updater/IUpdaterInstaller.cs new file mode 100644 index 00000000..9c5d6778 --- /dev/null +++ b/src/linker.messenger.updater/IUpdaterInstaller.cs @@ -0,0 +1,201 @@ +using linker.libs; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Text; + +namespace linker.messenger.updater +{ + public interface IUpdaterInstaller + { + /// + /// 检查更新,时间,更新信息,版本 + /// + /// + public Task<(string, string[], string)> Check(); + /// + /// 获取地址。下载地址,保存地址 + /// + /// + /// + public (string, string) DownloadUrlAndSavePath(string version); + /// + /// 安装 + /// + /// 安装进度回调,总长度,当前进度 + /// + public Task Install(Action processs); + /// + /// 清理文件 + /// + public void Clear(); + } + + public class UpdaterInstaller : IUpdaterInstaller + { + private readonly IUpdaterCommonStore updaterCommonTransfer; + public UpdaterInstaller(IUpdaterCommonStore updaterCommonTransfer) + { + this.updaterCommonTransfer = updaterCommonTransfer; + } + + public virtual async Task<(string, string[], string)> Check() + { + try + { + using HttpClientHandler handler = new HttpClientHandler(); + handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; + using HttpClient httpClient = new HttpClient(handler); + string str = await httpClient.GetStringAsync($"{updaterCommonTransfer.UpdateUrl}/version.txt").WaitAsync(TimeSpan.FromSeconds(15)).ConfigureAwait(false); + + string[] arr = str.Split(Environment.NewLine).Select(c => c.Trim('\r').Trim('\n')).ToArray(); + + string version = arr[0]; + string datetime = DateTime.Parse(arr[1]).ToString("yyyy-MM-dd HH:mm:ss"); + string[] msg = arr.Skip(2).ToArray(); + + return (datetime, msg, version); + } + catch (Exception ex) + { + LoggerHelper.Instance.Error(ex); + } + + return (string.Empty, [], string.Empty); + } + public virtual (string, string) DownloadUrlAndSavePath(string version) + { + if (OperatingSystem.IsWindows() || OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) + { + StringBuilder sb = new StringBuilder("linker-"); + sb.Append($"{(OperatingSystem.IsWindows() ? "win" : OperatingSystem.IsLinux() ? "linux" : "osx")}-"); + if (OperatingSystem.IsLinux() && Directory.GetFiles("/lib", "*musl*").Length > 0) + { + sb.Append($"musl-"); + } + sb.Append(RuntimeInformation.ProcessArchitecture.ToString().ToLower()); + return ($"{updaterCommonTransfer.UpdateUrl}/{version}/{sb.ToString()}.zip", "updater.zip"); + } + return (string.Empty, string.Empty); + } + public virtual async Task Install(Action processs) + { + if (OperatingSystem.IsWindows() == false && OperatingSystem.IsLinux() == false && OperatingSystem.IsMacOS() == false) + { + processs(100, 100); + return; + } + + using ZipArchive archive = ZipFile.OpenRead("updater.zip"); + + long total = archive.Entries.Sum(c => c.Length); + processs(total, 0); + + string[] extractExcludeFiles = []; + + foreach (ZipArchiveEntry entry in archive.Entries) + { + string entryPath = Path.GetFullPath(Path.Join(Helper.currentDirectory, entry.FullName.Substring(entry.FullName.IndexOf('/')))); + if (entryPath.EndsWith('\\') || entryPath.EndsWith('/')) + { + continue; + } + if (extractExcludeFiles.Contains(Path.GetFileName(entryPath))) + { + continue; + } + + if (Directory.Exists(Path.GetDirectoryName(entryPath)) == false) + { + Directory.CreateDirectory(Path.GetDirectoryName(entryPath)); + } + if (File.Exists(entryPath)) + { + try + { + File.Move(entryPath, $"{entryPath}.temp", true); + } + catch (Exception) + { + continue; + } + } + + using Stream entryStream = entry.Open(); + using FileStream fileStream = File.Create(entryPath); + byte[] buffer = new byte[4096]; + int bytesRead; + while ((bytesRead = await entryStream.ReadAsync(buffer).ConfigureAwait(false)) != 0) + { + await fileStream.WriteAsync(buffer.AsMemory(0, bytesRead)); + processs(total, bytesRead); + } + + entryStream.Dispose(); + fileStream.Flush(); + fileStream.Dispose(); + } + + archive.Dispose(); + + try + { + File.Delete("updater.zip"); + } + catch (Exception) + { + } + + if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) + { + try + { + File.SetUnixFileMode("./linker", UnixFileMode.GroupExecute | UnixFileMode.OtherExecute | UnixFileMode.UserExecute); + } + catch (Exception) + { + } + } + try + { + File.Delete("./linker.service.exe"); + } + catch (Exception) + { + } + try + { + File.Delete("./linker.ics.exe"); + } + catch (Exception) + { + } + Environment.Exit(1); + } + + public virtual void Clear() + { + ClearTempFiles(); + } + private void ClearTempFiles(string path = "./") + { + string fullPath = Path.Join(Helper.currentDirectory, path); + if (Directory.Exists(fullPath)) + { + foreach (var item in Directory.GetFiles(fullPath).Where(c => c.EndsWith(".temp"))) + { + try + { + File.Delete(item); + } + catch (Exception) + { + } + } + foreach (var item in Directory.GetDirectories(fullPath)) + { + ClearTempFiles(item); + } + } + } + } +} diff --git a/src/linker.messenger.updater/UpdaterHelper.cs b/src/linker.messenger.updater/UpdaterHelper.cs index 390c4b5c..887f707d 100644 --- a/src/linker.messenger.updater/UpdaterHelper.cs +++ b/src/linker.messenger.updater/UpdaterHelper.cs @@ -1,21 +1,18 @@ using linker.libs; using linker.libs.timer; -using System.Diagnostics; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Text; namespace linker.messenger.updater { public sealed class UpdaterHelper { - private string[] extractExcludeFiles = []; - private readonly IUpdaterCommonStore updaterCommonTransfer; - public UpdaterHelper(IUpdaterCommonStore updaterCommonTransfer) + private readonly IUpdaterInstaller updaterInstaller; + public UpdaterHelper(IUpdaterCommonStore updaterCommonTransfer, IUpdaterInstaller updaterInstaller) { this.updaterCommonTransfer = updaterCommonTransfer; - ClearFiles(); + this.updaterInstaller = updaterInstaller; + + updaterInstaller.Clear(); } /// @@ -34,21 +31,17 @@ namespace linker.messenger.updater try { updateInfo.Status = UpdaterStatus.Checking; - using HttpClientHandler handler = new HttpClientHandler(); - handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; - using HttpClient httpClient = new HttpClient(handler); - string str = await httpClient.GetStringAsync($"{updaterCommonTransfer.UpdateUrl}/version.txt").WaitAsync(TimeSpan.FromSeconds(15)).ConfigureAwait(false); - string[] arr = str.Split(Environment.NewLine).Select(c => c.Trim('\r').Trim('\n')).ToArray(); - - string datetime = DateTime.Parse(arr[1]).ToString("yyyy-MM-dd HH:mm:ss"); - string tag = arr[0]; - string[] msg = arr.Skip(2).ToArray(); + (string datetime, string[] msg, string version) = await updaterInstaller.Check(); + if (string.IsNullOrWhiteSpace(datetime)) + { + updateInfo.Status = status; + return; + } updateInfo.DateTime = datetime; updateInfo.Msg = msg; - updateInfo.Version = tag; - + updateInfo.Version = version; updateInfo.Status = UpdaterStatus.Checked; } catch (Exception ex) @@ -56,6 +49,7 @@ namespace linker.messenger.updater LoggerHelper.Instance.Error(ex); updateInfo.Status = status; } + } /// /// 下载更新 @@ -63,24 +57,23 @@ namespace linker.messenger.updater /// /// /// - public async Task DownloadUpdate(UpdaterInfo updateInfo, string version) + public async Task Download(UpdaterInfo updateInfo, string version) { UpdaterStatus status = updateInfo.Status; + + (string url, string savePath) = updaterInstaller.DownloadUrlAndSavePath(version); try { updateInfo.Status = UpdaterStatus.Downloading; updateInfo.Current = 0; updateInfo.Length = 0; - StringBuilder sb = new StringBuilder("linker-"); - sb.Append($"{(OperatingSystem.IsWindows() ? "win" : OperatingSystem.IsLinux() ? "linux" : "osx")}-"); - if (OperatingSystem.IsLinux() && Directory.GetFiles("/lib", "*musl*").Length > 0) + if (string.IsNullOrWhiteSpace(url) ) { - sb.Append($"musl-"); + updateInfo.Status = status; + return; } - sb.Append(RuntimeInformation.ProcessArchitecture.ToString().ToLower()); - string url = $"{updaterCommonTransfer.UpdateUrl}/{version}/{sb.ToString()}.zip"; LoggerHelper.Instance.Warning($"updater {url}"); using HttpClient httpClient = new HttpClient(); @@ -90,7 +83,7 @@ namespace linker.messenger.updater using Stream contentStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); - using FileStream fileStream = new FileStream("updater.zip", FileMode.OpenOrCreate, FileAccess.ReadWrite); + using FileStream fileStream = new FileStream(savePath, FileMode.OpenOrCreate, FileAccess.ReadWrite); byte[] buffer = new byte[4096]; int readBytes = 0; while ((readBytes = await contentStream.ReadAsync(buffer).ConfigureAwait(false)) != 0) @@ -106,7 +99,7 @@ namespace linker.messenger.updater LoggerHelper.Instance.Error(ex); try { - File.Delete("updater.zip"); + File.Delete(savePath); } catch (Exception) { @@ -119,14 +112,13 @@ namespace linker.messenger.updater /// /// /// - public async Task ExtractUpdate(UpdaterInfo updateInfo) + public async Task Install(UpdaterInfo updateInfo) { //没下载完成 if (updateInfo.Status != UpdaterStatus.Downloaded) { return; } - string fileName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName); UpdaterStatus status = updateInfo.Status; try { @@ -134,55 +126,11 @@ namespace linker.messenger.updater updateInfo.Current = 0; updateInfo.Length = 0; - using ZipArchive archive = ZipFile.OpenRead("updater.zip"); - updateInfo.Length = archive.Entries.Sum(c => c.Length); - - - foreach (ZipArchiveEntry entry in archive.Entries) + await updaterInstaller.Install((total, length) => { - string entryPath = Path.GetFullPath(Path.Join(Helper.currentDirectory, entry.FullName.Substring(entry.FullName.IndexOf('/')))); - if (entryPath.EndsWith('\\') || entryPath.EndsWith('/')) - { - continue; - } - if (extractExcludeFiles.Contains(Path.GetFileName(entryPath))) - { - continue; - } - - if (Directory.Exists(Path.GetDirectoryName(entryPath)) == false) - { - Directory.CreateDirectory(Path.GetDirectoryName(entryPath)); - } - if (File.Exists(entryPath)) - { - try - { - File.Move(entryPath, $"{entryPath}.temp", true); - } - catch (Exception) - { - continue; - } - } - - using Stream entryStream = entry.Open(); - using FileStream fileStream = File.Create(entryPath); - byte[] buffer = new byte[4096]; - int bytesRead; - while ((bytesRead = await entryStream.ReadAsync(buffer).ConfigureAwait(false)) != 0) - { - await fileStream.WriteAsync(buffer.AsMemory(0, bytesRead)); - updateInfo.Current += bytesRead; - } - - entryStream.Dispose(); - fileStream.Flush(); - fileStream.Dispose(); - } - - archive.Dispose(); - File.Delete("updater.zip"); + updateInfo.Length = total; + updateInfo.Current += length; + }); updateInfo.Status = UpdaterStatus.Extracted; } @@ -204,57 +152,9 @@ namespace linker.messenger.updater TimerHelper.Async(async () => { - await DownloadUpdate(updateInfo, version).ConfigureAwait(false); - await ExtractUpdate(updateInfo).ConfigureAwait(false); - - if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) - { - try - { - File.SetUnixFileMode("./linker", UnixFileMode.GroupExecute | UnixFileMode.OtherExecute | UnixFileMode.UserExecute); - } - catch (Exception) - { - } - } - try - { - File.Delete("./linker.service.exe"); - } - catch (Exception) - { - } - Environment.Exit(1); + await Download(updateInfo, version).ConfigureAwait(false); + await Install(updateInfo).ConfigureAwait(false); }); } - - /// - /// 清理旧文件 - /// - private void ClearFiles() - { - ClearTempFiles(); - } - private void ClearTempFiles(string path = "./") - { - string fullPath = Path.Join(Helper.currentDirectory,path); - if (Directory.Exists(fullPath)) - { - foreach (var item in Directory.GetFiles(fullPath).Where(c => c.EndsWith(".temp"))) - { - try - { - File.Delete(item); - } - catch (Exception) - { - } - } - foreach (var item in Directory.GetDirectories(fullPath)) - { - ClearTempFiles(item); - } - } - } } } diff --git a/src/linker.share.win/default.aproj b/src/linker.share.win/default.aproj new file mode 100644 index 00000000..d01633e3 --- /dev/null +++ b/src/linker.share.win/default.aproj @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/linker.share.win/lib/config.aardio b/src/linker.share.win/lib/config.aardio new file mode 100644 index 00000000..5da06a0a --- /dev/null +++ b/src/linker.share.win/lib/config.aardio @@ -0,0 +1,17 @@ +//config 配置文件 +import fsys.config; +config = fsys.config("/config/"); +//config = fsys.config( io.appData("/软件作者/应用程序名/") ); + +//不需要序列化的配置名字前请添加下划线 +namespace config { + __appName = "应用程序名"; + __website = "http://www.aardio.com/"; +} + +/**intellisense(config) +__appName = 应用程序名 +__website = 官方网站 +saveAll() = 写入所有配置到文件 +? = 获取值时指定不以下划线开始的配置表名称,\n返回一个可自动序列化到同名配置文件的表对象。\n如果此对象名以下划线开始,则可以正常读写值不会序列化为配置文件。\n否则不能对此对象直接赋值,只能对配置表对象的成员赋值。\n\n配置表可自动自文件加载,退出线程前自动序列化并存入文件。\n仅序列化以字符串、数值为键的元素,\n仅序列化值为字符串、数值、buffer 以及定义了 _serialize 元方法的成员。\n循环引用的值转换为 null,序列化时忽略成员函数\n!fsys_table. +end intellisense**/ \ No newline at end of file diff --git a/src/linker.share.win/main.aardio b/src/linker.share.win/main.aardio new file mode 100644 index 00000000..ebcc58d8 --- /dev/null +++ b/src/linker.share.win/main.aardio @@ -0,0 +1,21 @@ +//RUNAS// +import win.ui; +/*DSG{{*/ +mainForm = win.form(text="linker.share.win";right=250;bottom=291;border="thin";max=false;topmost=1) +mainForm.add( +mainTab={cls="tab";left=1;top=-2;right=250;bottom=254;aw=1;edge=1;z=1} +) +/*}}*/ + +import win.ui.atom; +import win.ui.atom +var atom,hwndConflict = mainForm.atom("CC31CBD7-B5B5-4709-A6B2-6126B611B8C2"); +if(!atom){ + win.quitMessage(); return; +}; + +mainForm.mainTab.loadForm("\res\connect.aardio"); +mainForm.mainTab.loadForm("\res\share.aardio"); + +mainForm.show(); +return win.loopMessage(); \ No newline at end of file diff --git a/src/linker.share.win/res/connect.aardio b/src/linker.share.win/res/connect.aardio new file mode 100644 index 00000000..5b08b614 --- /dev/null +++ b/src/linker.share.win/res/connect.aardio @@ -0,0 +1,9 @@ +import win.ui; +/*DSG{{*/ +var winform = win.form(text="连接共享";right=759;bottom=469) +winform.add() +/*}}*/ + +winform.show(); +win.loopMessage(); +return winform; diff --git a/src/linker.share.win/res/favicon.ico b/src/linker.share.win/res/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2a0e4e36b7277467b613b911c2901b447c2c4233 GIT binary patch literal 16958 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 literal 0 HcmV?d00001 diff --git a/src/linker.share.win/res/favicon1.ico b/src/linker.share.win/res/favicon1.ico new file mode 100644 index 0000000000000000000000000000000000000000..b0ed7927f68ca2b7d6aecabc6f0b03fb9b1012ce GIT binary patch literal 16958 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 MT6N6x+@JUV0s~qF)&Kwi literal 0 HcmV?d00001 diff --git a/src/linker.share.win/res/share.aardio b/src/linker.share.win/res/share.aardio new file mode 100644 index 00000000..34dcc2a6 --- /dev/null +++ b/src/linker.share.win/res/share.aardio @@ -0,0 +1,13 @@ +import win.ui; +/*DSG{{*/ +var winform = win.form(text="发出共享";right=243;bottom=254) +winform.add( +button={cls="button";text="生成";left=195;top=12;right=234;bottom=35;z=3}; +edit={cls="edit";text="Edit";left=44;top=14;right=189;bottom=35;edge=1;z=1}; +static={cls="static";text="密钥";left=11;top=16;right=48;bottom=35;transparent=1;z=2} +) +/*}}*/ + +winform.show(); +win.loopMessage(); +return winform; diff --git a/version.txt b/version.txt index 96e3d4e7..d8b5a579 100644 --- a/version.txt +++ b/version.txt @@ -1,5 +1,5 @@ v1.7.5 -2025-04-26 11:39:08 +2025-04-26 19:35:50 1. 一些优化 2. 安卓APP勉强能用 3. 如果你设备很多,请尝试升级其中一个成功重启后再升级其它 \ No newline at end of file