mirror of
https://github.com/snltty/linker.git
synced 2025-12-18 17:36:45 +08:00
自定义更新检测频率
This commit is contained in:
8
.github/workflows/docker.yml
vendored
8
.github/workflows/docker.yml
vendored
@@ -57,9 +57,9 @@ jobs:
|
||||
docker tag snltty/linker-musl-x64:latest snltty/linker-musl:amd64 && \
|
||||
docker push snltty/linker-musl:amd64 && \
|
||||
docker manifest create snltty/linker-musl:latest snltty/linker-musl:amd64 snltty/linker-musl:arm64 snltty/linker-musl:arm && \
|
||||
docker manifest create snltty/linker-musl:v1.5.3 snltty/linker-musl:amd64 snltty/linker-musl:arm64 snltty/linker-musl:arm && \
|
||||
docker manifest create snltty/linker-musl:v1.5.4 snltty/linker-musl:amd64 snltty/linker-musl:arm64 snltty/linker-musl:arm && \
|
||||
docker manifest push snltty/linker-musl:latest && \
|
||||
docker manifest push snltty/linker-musl:v1.5.3 && \
|
||||
docker manifest push snltty/linker-musl:v1.5.4 && \
|
||||
docker pull --platform linux/arm/v7 snltty/linker-debian-arm:latest && \
|
||||
docker tag snltty/linker-debian-arm:latest snltty/linker-debian:arm && \
|
||||
docker push snltty/linker-debian:arm && \
|
||||
@@ -70,6 +70,6 @@ jobs:
|
||||
docker tag snltty/linker-debian-x64:latest snltty/linker-debian:amd64 && \
|
||||
docker push snltty/linker-debian:amd64 && \
|
||||
docker manifest create snltty/linker-debian:latest snltty/linker-debian:amd64 snltty/linker-debian:arm64 snltty/linker-debian:arm && \
|
||||
docker manifest create snltty/linker-debian:v1.5.3 snltty/linker-debian:amd64 snltty/linker-debian:arm64 snltty/linker-debian:arm && \
|
||||
docker manifest create snltty/linker-debian:v1.5.4 snltty/linker-debian:amd64 snltty/linker-debian:arm64 snltty/linker-debian:arm && \
|
||||
docker manifest push snltty/linker-debian:latest && \
|
||||
docker manifest push snltty/linker-debian:v1.5.3
|
||||
docker manifest push snltty/linker-debian:v1.5.4
|
||||
30
.github/workflows/dotnet.yml
vendored
30
.github/workflows/dotnet.yml
vendored
@@ -33,11 +33,11 @@ jobs:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACTIONS_TOKEN }}
|
||||
with:
|
||||
tag_name: v1.5.3
|
||||
release_name: v1.5.3.${{ steps.date.outputs.today }}
|
||||
tag_name: v1.5.4
|
||||
release_name: v1.5.4.${{ steps.date.outputs.today }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
body: "1. 增加连接中继节点的超时时间\r\n2. 增加网卡端口转发备注\r\n3. 已有多个公开中继服务器上线\r\n4. 自定义更新检测频率"
|
||||
body: "1. 手动检测更新\r\n2. 自定义更新检测频率"
|
||||
- name: upload-win-x86-oss
|
||||
id: upload-win-x86-oss
|
||||
uses: tvrcgo/oss-action@v0.1.1
|
||||
@@ -47,7 +47,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-win-x86.zip
|
||||
target-path: /downloads/linker/v1.5.3/linker-win-x86.zip
|
||||
target-path: /downloads/linker/v1.5.4/linker-win-x86.zip
|
||||
- name: upload-win-x86
|
||||
id: upload-win-x86
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -67,7 +67,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-win-x64.zip
|
||||
target-path: /downloads/linker/v1.5.3/linker-win-x64.zip
|
||||
target-path: /downloads/linker/v1.5.4/linker-win-x64.zip
|
||||
- name: upload-win-x64
|
||||
id: upload-win-x64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -87,7 +87,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-win-arm64.zip
|
||||
target-path: /downloads/linker/v1.5.3/linker-win-arm64.zip
|
||||
target-path: /downloads/linker/v1.5.4/linker-win-arm64.zip
|
||||
- name: upload-win-arm64
|
||||
id: upload-win-arm64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -107,7 +107,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-linux-x64.zip
|
||||
target-path: /downloads/linker/v1.5.3/linker-linux-x64.zip
|
||||
target-path: /downloads/linker/v1.5.4/linker-linux-x64.zip
|
||||
- name: upload-linux-x64
|
||||
id: upload-linux-x64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -127,7 +127,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-linux-arm.zip
|
||||
target-path: /downloads/linker/v1.5.3/linker-linux-arm.zip
|
||||
target-path: /downloads/linker/v1.5.4/linker-linux-arm.zip
|
||||
- name: upload-linux-arm
|
||||
id: upload-linux-arm
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -147,7 +147,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-linux-arm64.zip
|
||||
target-path: /downloads/linker/v1.5.3/linker-linux-arm64.zip
|
||||
target-path: /downloads/linker/v1.5.4/linker-linux-arm64.zip
|
||||
- name: upload-linux-arm64
|
||||
id: upload-linux-arm64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -167,7 +167,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-linux-musl-x64.zip
|
||||
target-path: /downloads/linker/v1.5.3/linker-linux-musl-x64.zip
|
||||
target-path: /downloads/linker/v1.5.4/linker-linux-musl-x64.zip
|
||||
- name: upload-linux-musl-x64
|
||||
id: upload-linux-musl-x64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -187,7 +187,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-linux-musl-arm.zip
|
||||
target-path: /downloads/linker/v1.5.3/linker-linux-musl-arm.zip
|
||||
target-path: /downloads/linker/v1.5.4/linker-linux-musl-arm.zip
|
||||
- name: upload-linux-musl-arm
|
||||
id: upload-linux-musl-arm
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -207,7 +207,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-linux-musl-arm64.zip
|
||||
target-path: /downloads/linker/v1.5.3/linker-linux-musl-arm64.zip
|
||||
target-path: /downloads/linker/v1.5.4/linker-linux-musl-arm64.zip
|
||||
- name: upload-linux-musl-arm64
|
||||
id: upload-linux-musl-arm64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -227,7 +227,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-osx-x64.zip
|
||||
target-path: /downloads/linker/v1.5.3/linker-osx-x64.zip
|
||||
target-path: /downloads/linker/v1.5.4/linker-osx-x64.zip
|
||||
- name: upload-osx-x64
|
||||
id: upload-osx-x64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -247,7 +247,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-osx-arm64.zip
|
||||
target-path: /downloads/linker/v1.5.3/linker-osx-arm64.zip
|
||||
target-path: /downloads/linker/v1.5.4/linker-osx-arm64.zip
|
||||
- name: upload-osx-arm64
|
||||
id: upload-osx-arm64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -277,7 +277,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-windows-route.zip
|
||||
target-path: /downloads/linker/v1.5.3/linker-windows-route.zip
|
||||
target-path: /downloads/linker/v1.5.4/linker-windows-route.zip
|
||||
- name: upload-windows-route
|
||||
id: upload-windows-route
|
||||
uses: actions/upload-release-asset@master
|
||||
|
||||
6
.github/workflows/nuget.yml
vendored
6
.github/workflows/nuget.yml
vendored
@@ -38,6 +38,6 @@ jobs:
|
||||
|
||||
- name: Push
|
||||
run: |
|
||||
nuget push ./linker.tunnel/bin/release/linker.tunnel.1.5.3.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.libs/bin/release/linker.libs.1.5.3.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.tun/bin/release/linker.tun.1.5.3.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.tunnel/bin/release/linker.tunnel.1.5.4.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.libs/bin/release/linker.libs.1.5.4.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.tun/bin/release/linker.tun.1.5.4.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
<Copyright>snltty</Copyright>
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<Version>1.5.3</Version>
|
||||
<AssemblyVersion>1.5.3</AssemblyVersion>
|
||||
<FileVersion>1.5.3</FileVersion>
|
||||
<Version>1.5.4</Version>
|
||||
<AssemblyVersion>1.5.4</AssemblyVersion>
|
||||
<FileVersion>1.5.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebugType>full</DebugType>
|
||||
|
||||
BIN
linker.tray.win/dist/linker.tray.win.exe
vendored
BIN
linker.tray.win/dist/linker.tray.win.exe
vendored
Binary file not shown.
@@ -1 +1 @@
|
||||
.delay[data-v-27bd6915]{margin-left:3rem}.servers-wrap[data-v-11926c68]{padding:1rem;font-size:1.3rem;color:#555}.servers-wrap a[data-v-11926c68]{color:#333}.el-checkbox[data-v-11926c68]{vertical-align:middle;margin-right:1rem}
|
||||
.delay[data-v-2dc931d2]{margin-left:3rem}.servers-wrap[data-v-11926c68]{padding:1rem;font-size:1.3rem;color:#555}.servers-wrap a[data-v-11926c68]{color:#333}.el-checkbox[data-v-11926c68]{vertical-align:middle;margin-right:1rem}
|
||||
File diff suppressed because one or more lines are too long
1
linker.tray.win/web/css/255.b8bf44f4.css
Normal file
1
linker.tray.win/web/css/255.b8bf44f4.css
Normal file
@@ -0,0 +1 @@
|
||||
.table-sort th[data-v-76d64500]{border-bottom:0}.dropdown[data-v-6638f97d]{border:1px solid #ddd;padding:.4rem;font-size:1.3rem;border-radius:.4rem;position:relative}.dropdown .el-icon[data-v-6638f97d]{vertical-align:middle}.dropdown .badge[data-v-6638f97d]{position:absolute;right:-1rem;top:-50%;border-radius:10px;background-color:#f1ae05;color:#fff;padding:.2rem .6rem;font-size:1.2rem}a[data-v-6653ef00]{color:#666;text-decoration:underline}a.green[data-v-6653ef00]{color:green;font-weight:700}a.download[data-v-6653ef00]{margin-left:.6rem}a.download .el-icon[data-v-6653ef00]{vertical-align:middle;font-weight:700;margin-left:.3rem}a.download .el-icon.loading[data-v-6653ef00]{animation:loading-6653ef00 1s linear infinite}a.download+a.download[data-v-6653ef00]{margin-left:.2rem}@keyframes loading-6653ef00{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}img.system[data-v-12103010]{height:1.6rem;vertical-align:middle;margin-right:.4rem}.self[data-v-12103010]{color:#d400ff}.self .el-icon[data-v-12103010]{vertical-align:text-bottom}.ipaddress span[data-v-5db71b03]{vertical-align:middle}.el-input[data-v-5db71b03]{width:12rem;margin-right:.6rem}.el-col[data-v-5d52ca48]{text-align:left}.el-icon.loading[data-v-1960cd79],a.loading[data-v-1960cd79]{vertical-align:middle;font-weight:700;animation:loading-1960cd79 1s linear infinite}.el-switch.is-disabled[data-v-1960cd79]{opacity:1}.el-input[data-v-1960cd79]{width:8rem}.delay[data-v-1960cd79]{position:absolute;right:0;bottom:0;line-height:normal}.switch-btn[data-v-1960cd79]{font-size:1.5rem}@keyframes loading-1960cd79{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.el-switch.is-disabled[data-v-29cf1b30]{opacity:1}.upgrade-wrap[data-v-29cf1b30]{border:1px solid #ddd;margin-bottom:2rem;padding:0 0 1rem 0}.el-switch.is-disabled[data-v-60d5fe5c]{opacity:1}.el-icon.loading[data-v-3a10697e],a.loading[data-v-3a10697e]{vertical-align:middle;font-weight:700;animation:loading-3a10697e 1s linear infinite}.el-switch.is-disabled[data-v-3a10697e]{opacity:1}.el-input[data-v-3a10697e]{width:8rem}.switch-btn[data-v-3a10697e]{font-size:1.5rem}@keyframes loading-3a10697e{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.el-switch.is-disabled[data-v-5abfef9c]{opacity:1}.upgrade-wrap[data-v-5abfef9c]{border:1px solid #ddd;margin-bottom:2rem;padding:1rem 0 1rem 0}.lan-item[data-v-5abfef9c]{margin-bottom:0}.el-switch.is-disabled[data-v-463c1a22]{opacity:1}.green[data-v-463c1a22]{font-weight:700}.el-switch.is-disabled[data-v-1f7f67a4]{opacity:1}a[data-v-bc0b64b8]{text-decoration:underline}a+a[data-v-bc0b64b8]{margin-left:1rem}a.green[data-v-bc0b64b8]{font-weight:700}.head[data-v-15b05a01]{padding-bottom:1rem}.green[data-v-15b05a01]{color:green;font-weight:700}.error[data-v-15b05a01]{font-weight:700}.error .el-icon[data-v-15b05a01]{vertical-align:text-bottom}.head[data-v-219c690c]{padding-bottom:1rem}.error[data-v-219c690c]{font-weight:700}.error .el-icon[data-v-219c690c]{vertical-align:text-bottom}.head[data-v-222ae82e]{padding-bottom:1rem}.table-sort.el-table th.el-table__cell.is-leaf{border-bottom:0}.table-sort.el-table .el-table__inner-wrapper:before{height:0}.home-list-wrap[data-v-3d1c480c]{padding:1rem}.home-list-wrap .page[data-v-3d1c480c]{padding-top:1rem}.home-list-wrap .page-wrap[data-v-3d1c480c]{display:inline-block}
|
||||
1
linker.tray.win/web/css/417.2cf30d33.css
Normal file
1
linker.tray.win/web/css/417.2cf30d33.css
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.table-sort th[data-v-76d64500]{border-bottom:0}.dropdown[data-v-6638f97d]{border:1px solid #ddd;padding:.4rem;font-size:1.3rem;border-radius:.4rem;position:relative}.dropdown .el-icon[data-v-6638f97d]{vertical-align:middle}.dropdown .badge[data-v-6638f97d]{position:absolute;right:-1rem;top:-50%;border-radius:10px;background-color:#f1ae05;color:#fff;padding:.2rem .6rem;font-size:1.2rem}a[data-v-7f8b7c63]{color:#666;text-decoration:underline}a.green[data-v-7f8b7c63]{color:green;font-weight:700}a.download[data-v-7f8b7c63]{margin-left:.6rem}a.download .el-icon[data-v-7f8b7c63]{vertical-align:middle;font-weight:700;margin-left:.3rem}a.download .el-icon.loading[data-v-7f8b7c63]{animation:loading-7f8b7c63 1s linear infinite}@keyframes loading-7f8b7c63{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}img.system[data-v-12103010]{height:1.6rem;vertical-align:middle;margin-right:.4rem}.self[data-v-12103010]{color:#d400ff}.self .el-icon[data-v-12103010]{vertical-align:text-bottom}.ipaddress span[data-v-f3d4d946]{vertical-align:middle}.el-input[data-v-f3d4d946]{width:12rem;margin-right:.6rem}.el-col[data-v-5d52ca48]{text-align:left}.el-icon.loading[data-v-1960cd79],a.loading[data-v-1960cd79]{vertical-align:middle;font-weight:700;animation:loading-1960cd79 1s linear infinite}.el-switch.is-disabled[data-v-1960cd79]{opacity:1}.el-input[data-v-1960cd79]{width:8rem}.delay[data-v-1960cd79]{position:absolute;right:0;bottom:0;line-height:normal}.switch-btn[data-v-1960cd79]{font-size:1.5rem}@keyframes loading-1960cd79{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.el-switch.is-disabled[data-v-29cf1b30]{opacity:1}.upgrade-wrap[data-v-29cf1b30]{border:1px solid #ddd;margin-bottom:2rem;padding:0 0 1rem 0}.el-switch.is-disabled[data-v-60d5fe5c]{opacity:1}.el-icon.loading[data-v-3a10697e],a.loading[data-v-3a10697e]{vertical-align:middle;font-weight:700;animation:loading-3a10697e 1s linear infinite}.el-switch.is-disabled[data-v-3a10697e]{opacity:1}.el-input[data-v-3a10697e]{width:8rem}.switch-btn[data-v-3a10697e]{font-size:1.5rem}@keyframes loading-3a10697e{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.el-switch.is-disabled[data-v-5abfef9c]{opacity:1}.upgrade-wrap[data-v-5abfef9c]{border:1px solid #ddd;margin-bottom:2rem;padding:1rem 0 1rem 0}.lan-item[data-v-5abfef9c]{margin-bottom:0}.el-switch.is-disabled[data-v-463c1a22]{opacity:1}.green[data-v-463c1a22]{font-weight:700}.el-switch.is-disabled[data-v-1f7f67a4]{opacity:1}a[data-v-bc0b64b8]{text-decoration:underline}a+a[data-v-bc0b64b8]{margin-left:1rem}a.green[data-v-bc0b64b8]{font-weight:700}.head[data-v-15b05a01]{padding-bottom:1rem}.green[data-v-15b05a01]{color:green;font-weight:700}.error[data-v-15b05a01]{font-weight:700}.error .el-icon[data-v-15b05a01]{vertical-align:text-bottom}.head[data-v-219c690c]{padding-bottom:1rem}.error[data-v-219c690c]{font-weight:700}.error .el-icon[data-v-219c690c]{vertical-align:text-bottom}.head[data-v-222ae82e]{padding-bottom:1rem}.table-sort.el-table th.el-table__cell.is-leaf{border-bottom:0}.table-sort.el-table .el-table__inner-wrapper:before{height:0}.home-list-wrap[data-v-3d1c480c]{padding:1rem}.home-list-wrap .page[data-v-3d1c480c]{padding-top:1rem}.home-list-wrap .page-wrap[data-v-3d1c480c]{display:inline-block}
|
||||
@@ -1 +1 @@
|
||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>linker.web</title><script defer="defer" src="/js/chunk-vendors.73d25b9a.js"></script><script defer="defer" src="/js/app.0e172b7a.js"></script><link href="/css/chunk-vendors.d8267b33.css" rel="stylesheet"><link href="/css/app.d3461143.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but linker.web doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>linker.web</title><script defer="defer" src="/js/chunk-vendors.73d25b9a.js"></script><script defer="defer" src="/js/app.e2b81913.js"></script><link href="/css/chunk-vendors.d8267b33.css" rel="stylesheet"><link href="/css/app.d3461143.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but linker.web doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
1
linker.tray.win/web/js/10.9895fad3.js
Normal file
1
linker.tray.win/web/js/10.9895fad3.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
linker.tray.win/web/js/255.5c495ac1.js
Normal file
1
linker.tray.win/web/js/255.5c495ac1.js
Normal file
File diff suppressed because one or more lines are too long
1
linker.tray.win/web/js/39.2f064ec9.js
Normal file
1
linker.tray.win/web/js/39.2f064ec9.js
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[511],{9256:function(e,a,t){t.r(a),t.d(a,{default:function(){return M}});var n=t(6768);const l={class:"net-wrap app-wrap"},s={class:"inner absolute flex flex-column flex-nowrap"},r={class:"head"},i={class:"body flex-1 relative"},u={class:"status"};function c(e,a,t,c,d,o){const g=(0,n.g2)("Head"),p=(0,n.g2)("List"),v=(0,n.g2)("Status");return(0,n.uX)(),(0,n.CE)("div",l,[(0,n.Lk)("div",s,[(0,n.Lk)("div",r,[(0,n.bF)(g)]),(0,n.Lk)("div",i,[(0,n.bF)(p)]),(0,n.Lk)("div",u,[(0,n.bF)(v,{config:!1})])])])}t(4114);const d=e=>((0,n.Qi)("data-v-213d85ba"),e=e(),(0,n.jt)(),e),o={class:"head-wrap"},g={class:"tools flex"},p=d((()=>(0,n.Lk)("span",{class:"label"},"服务器 ",-1))),v=d((()=>(0,n.Lk)("span",{class:"flex-1"},null,-1))),h={style:{"margin-left":"1rem"}};function f(e,a,t,l,s,r){const i=(0,n.g2)("el-option"),u=(0,n.g2)("el-select"),c=(0,n.g2)("Refresh"),d=(0,n.g2)("el-icon"),f=(0,n.g2)("el-button"),k=(0,n.g2)("Background");return(0,n.uX)(),(0,n.CE)("div",o,[(0,n.Lk)("div",g,[p,(0,n.bF)(u,{modelValue:l.state.server,"onUpdate:modelValue":a[0]||(a[0]=e=>l.state.server=e),placeholder:"服务器",style:{width:"16rem"},size:"small"},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(l.state.servers,(e=>((0,n.uX)(),(0,n.Wv)(i,{key:e.Host,label:e.Name,value:e.Host},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),v,(0,n.bF)(f,{size:"small",onClick:l.handleRefresh},{default:(0,n.k6)((()=>[(0,n.eW)(" 刷新(F5)"),(0,n.bF)(d,null,{default:(0,n.k6)((()=>[(0,n.bF)(c)])),_:1})])),_:1},8,["onClick"]),(0,n.Lk)("div",h,[(0,n.bF)(k,{name:"net"})])])])}var k=t(3830),m=t(144),b=t(7477),C=t(5096),L={components:{Edit:b.ffu,Refresh:b.C42,Background:C.A},setup(){const e=(0,k.B)(),a=(0,m.Kh)({server:"linker.snltty.com:1802",servers:[]});(0,n.wB)((()=>e.value.config.Client.Servers),(()=>{a.servers=(e.value.config.Client.Servers||[]).slice(0,1),a.server=e.value.config.Client.ServerInfo.Host}));const t=()=>{window.location.reload()};return{state:a,handleRefresh:t}}},w=t(1241);const S=(0,w.A)(L,[["render",f],["__scopeId","data-v-213d85ba"]]);var _=S;const F=e=>((0,n.Qi)("data-v-b6ab4f06"),e=e(),(0,n.jt)(),e),x={class:"net-list-wrap flex flex-column absolute"},z={class:"flex-1 scrollbar"},I={class:"flex"},E=F((()=>(0,n.Lk)("div",{class:"flex-1"},null,-1))),T={class:"tuntap"},A={class:"page t-c"},B={class:"page-wrap t-c"};function P(e,a,t,l,s,r){const i=(0,n.g2)("DeviceName"),u=(0,n.g2)("UpdaterBtn"),c=(0,n.g2)("TuntapShow"),d=(0,n.g2)("el-pagination");return(0,n.uX)(),(0,n.CE)("div",x,[(0,n.Lk)("div",z,[(0,n.Lk)("ul",null,[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(l.devices.page.List,((e,a)=>((0,n.uX)(),(0,n.CE)("li",{key:a},[(0,n.Lk)("dl",null,[(0,n.Lk)("dt",I,[(0,n.Lk)("div",null,[(0,n.bF)(i,{item:e},null,8,["item"])]),E,(0,n.Lk)("div",null,[(0,n.bF)(u,{config:!1,item:e},null,8,["item"])])]),(0,n.Lk)("dd",T,[l.tuntap.list[e.MachineId]?((0,n.uX)(),(0,n.Wv)(c,{key:0,item:e},null,8,["item"])):(0,n.Q3)("",!0)])])])))),128))])]),(0,n.Lk)("div",A,[(0,n.Lk)("div",B,[(0,n.bF)(d,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:l.devices.page.Count,"page-size":l.devices.page.Request.Size,"current-page":l.devices.page.Request.Page,onCurrentChange:l.handlePageChange,onSizeChange:l.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var y=t(8104),X=t(7985),R=t(9383),D=t(4831),U=t(8695),H=t(3460),N={components:{StarFilled:b.BQ2,UpdaterBtn:D.A,DeviceName:U.A,TuntapShow:H.A},setup(e){(0,k.B)();const a=(0,m.Kh)({}),{devices:t,machineId:l,_getSignList:s,_getSignList1:r,handleDeviceEdit:i,handlePageChange:u,handlePageSizeChange:c,handleDel:d,clearDevicesTimeout:o}=(0,X.r)(),{tuntap:g,_getTuntapInfo:p,handleTuntapRefresh:v,clearTuntapTimeout:h,handleTuntapEdit:f,sortTuntapIP:b}=(0,y.O)(),{_getUpdater:C,_subscribeUpdater:L,clearUpdaterTimeout:w}=(0,R.d)();return(0,n.sV)((()=>{u(),v(),s(),r(),p(),C(),L()})),(0,n.hi)((()=>{o(),h(),w()})),{state:a,devices:t,machineId:l,handlePageChange:u,handlePageSizeChange:c,tuntap:g}}};const V=(0,w.A)(N,[["render",P],["__scopeId","data-v-b6ab4f06"]]);var K=V,Q=t(1311),W=t(1387),j={components:{Head:_,List:K,Status:Q.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,k.B)(),a=(0,W.rd)();return(0,n.sV)((()=>{0==e.value.hasAccess("NetManager")&&a.push({name:"NoPermission"})})),{}}};const q=(0,w.A)(j,[["render",c],["__scopeId","data-v-6a3f3b43"]]);var M=q}}]);
|
||||
"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[417],{9256:function(e,a,t){t.r(a),t.d(a,{default:function(){return M}});var n=t(6768);const l={class:"net-wrap app-wrap"},s={class:"inner absolute flex flex-column flex-nowrap"},r={class:"head"},i={class:"body flex-1 relative"},u={class:"status"};function c(e,a,t,c,d,o){const g=(0,n.g2)("Head"),p=(0,n.g2)("List"),v=(0,n.g2)("Status");return(0,n.uX)(),(0,n.CE)("div",l,[(0,n.Lk)("div",s,[(0,n.Lk)("div",r,[(0,n.bF)(g)]),(0,n.Lk)("div",i,[(0,n.bF)(p)]),(0,n.Lk)("div",u,[(0,n.bF)(v,{config:!1})])])])}t(4114);const d=e=>((0,n.Qi)("data-v-213d85ba"),e=e(),(0,n.jt)(),e),o={class:"head-wrap"},g={class:"tools flex"},p=d((()=>(0,n.Lk)("span",{class:"label"},"服务器 ",-1))),v=d((()=>(0,n.Lk)("span",{class:"flex-1"},null,-1))),h={style:{"margin-left":"1rem"}};function f(e,a,t,l,s,r){const i=(0,n.g2)("el-option"),u=(0,n.g2)("el-select"),c=(0,n.g2)("Refresh"),d=(0,n.g2)("el-icon"),f=(0,n.g2)("el-button"),k=(0,n.g2)("Background");return(0,n.uX)(),(0,n.CE)("div",o,[(0,n.Lk)("div",g,[p,(0,n.bF)(u,{modelValue:l.state.server,"onUpdate:modelValue":a[0]||(a[0]=e=>l.state.server=e),placeholder:"服务器",style:{width:"16rem"},size:"small"},{default:(0,n.k6)((()=>[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(l.state.servers,(e=>((0,n.uX)(),(0,n.Wv)(i,{key:e.Host,label:e.Name,value:e.Host},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),v,(0,n.bF)(f,{size:"small",onClick:l.handleRefresh},{default:(0,n.k6)((()=>[(0,n.eW)(" 刷新(F5)"),(0,n.bF)(d,null,{default:(0,n.k6)((()=>[(0,n.bF)(c)])),_:1})])),_:1},8,["onClick"]),(0,n.Lk)("div",h,[(0,n.bF)(k,{name:"net"})])])])}var k=t(3830),m=t(144),b=t(7477),C=t(5096),L={components:{Edit:b.ffu,Refresh:b.C42,Background:C.A},setup(){const e=(0,k.B)(),a=(0,m.Kh)({server:"linker.snltty.com:1802",servers:[]});(0,n.wB)((()=>e.value.config.Client.Servers),(()=>{a.servers=(e.value.config.Client.Servers||[]).slice(0,1),a.server=e.value.config.Client.ServerInfo.Host}));const t=()=>{window.location.reload()};return{state:a,handleRefresh:t}}},w=t(1241);const S=(0,w.A)(L,[["render",f],["__scopeId","data-v-213d85ba"]]);var _=S;const F=e=>((0,n.Qi)("data-v-b6ab4f06"),e=e(),(0,n.jt)(),e),x={class:"net-list-wrap flex flex-column absolute"},z={class:"flex-1 scrollbar"},I={class:"flex"},E=F((()=>(0,n.Lk)("div",{class:"flex-1"},null,-1))),T={class:"tuntap"},A={class:"page t-c"},B={class:"page-wrap t-c"};function P(e,a,t,l,s,r){const i=(0,n.g2)("DeviceName"),u=(0,n.g2)("UpdaterBtn"),c=(0,n.g2)("TuntapShow"),d=(0,n.g2)("el-pagination");return(0,n.uX)(),(0,n.CE)("div",x,[(0,n.Lk)("div",z,[(0,n.Lk)("ul",null,[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(l.devices.page.List,((e,a)=>((0,n.uX)(),(0,n.CE)("li",{key:a},[(0,n.Lk)("dl",null,[(0,n.Lk)("dt",I,[(0,n.Lk)("div",null,[(0,n.bF)(i,{item:e},null,8,["item"])]),E,(0,n.Lk)("div",null,[(0,n.bF)(u,{config:!1,item:e},null,8,["item"])])]),(0,n.Lk)("dd",T,[l.tuntap.list[e.MachineId]?((0,n.uX)(),(0,n.Wv)(c,{key:0,item:e},null,8,["item"])):(0,n.Q3)("",!0)])])])))),128))])]),(0,n.Lk)("div",A,[(0,n.Lk)("div",B,[(0,n.bF)(d,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:l.devices.page.Count,"page-size":l.devices.page.Request.Size,"current-page":l.devices.page.Request.Page,onCurrentChange:l.handlePageChange,onSizeChange:l.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var y=t(8104),X=t(7985),R=t(9383),D=t(167),U=t(8695),H=t(3460),N={components:{StarFilled:b.BQ2,UpdaterBtn:D.A,DeviceName:U.A,TuntapShow:H.A},setup(e){(0,k.B)();const a=(0,m.Kh)({}),{devices:t,machineId:l,_getSignList:s,_getSignList1:r,handleDeviceEdit:i,handlePageChange:u,handlePageSizeChange:c,handleDel:d,clearDevicesTimeout:o}=(0,X.r)(),{tuntap:g,_getTuntapInfo:p,handleTuntapRefresh:v,clearTuntapTimeout:h,handleTuntapEdit:f,sortTuntapIP:b}=(0,y.O)(),{_getUpdater:C,_subscribeUpdater:L,clearUpdaterTimeout:w}=(0,R.d)();return(0,n.sV)((()=>{u(),v(),s(),r(),p(),C(),L()})),(0,n.hi)((()=>{o(),h(),w()})),{state:a,devices:t,machineId:l,handlePageChange:u,handlePageSizeChange:c,tuntap:g}}};const V=(0,w.A)(N,[["render",P],["__scopeId","data-v-b6ab4f06"]]);var K=V,Q=t(1908),W=t(1387),j={components:{Head:_,List:K,Status:Q.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,k.B)(),a=(0,W.rd)();return(0,n.sV)((()=>{0==e.value.hasAccess("NetManager")&&a.push({name:"NoPermission"})})),{}}};const q=(0,w.A)(j,[["render",c],["__scopeId","data-v-6a3f3b43"]]);var M=q}}]);
|
||||
1
linker.tray.win/web/js/447.9ef27582.js
Normal file
1
linker.tray.win/web/js/447.9ef27582.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
linker.tray.win/web/js/app.e2b81913.js
Normal file
1
linker.tray.win/web/js/app.e2b81913.js
Normal file
File diff suppressed because one or more lines are too long
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker tun</PackageReleaseNotes>
|
||||
<Version>1.5.3</Version>
|
||||
<AssemblyVersion>1.5.3</AssemblyVersion>
|
||||
<FileVersion>1.5.3</FileVersion>
|
||||
<Version>1.5.4</Version>
|
||||
<AssemblyVersion>1.5.4</AssemblyVersion>
|
||||
<FileVersion>1.5.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker tunnel</PackageReleaseNotes>
|
||||
<Version>1.5.3</Version>
|
||||
<AssemblyVersion>1.5.3</AssemblyVersion>
|
||||
<FileVersion>1.5.3</FileVersion>
|
||||
<Version>1.5.4</Version>
|
||||
<AssemblyVersion>1.5.4</AssemblyVersion>
|
||||
<FileVersion>1.5.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
||||
@@ -17,7 +17,9 @@ export const getSecretKey = () => {
|
||||
export const setSecretKey = (data) => {
|
||||
return sendWebsocketMsg('updaterclient/SetSecretKey', data);
|
||||
}
|
||||
|
||||
export const setUpdateInterval = (data) => {
|
||||
return sendWebsocketMsg('updaterclient/SetInterval', data);
|
||||
}
|
||||
|
||||
export const getUpdaterCurrent = () => {
|
||||
return sendWebsocketMsg('updaterclient/getcurrent');
|
||||
@@ -33,4 +35,7 @@ export const exitServer = () => {
|
||||
}
|
||||
export const subscribeUpdater = () => {
|
||||
return sendWebsocketMsg('updaterclient/Subscribe');
|
||||
}
|
||||
export const checkUpdater = (data) => {
|
||||
return sendWebsocketMsg('updaterclient/check', data);
|
||||
}
|
||||
@@ -22,7 +22,7 @@
|
||||
<span title="此设备的外网IP" class="ipaddress" @click="handleExternal(scope.row)"><span>😴㊙.㊙.㊙.㊙</span></span>
|
||||
</template>
|
||||
<span class="flex-1"></span>
|
||||
<UpdaterBtn :config="true" :item="scope.row"></UpdaterBtn>
|
||||
<UpdaterBtn v-if="scope.row.showip == false" :config="true" :item="scope.row"></UpdaterBtn>
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -23,19 +23,20 @@
|
||||
</template>
|
||||
</span>
|
||||
</a>
|
||||
<a href="javascript:;" class="download" title="检查更新" @click="handleCheck"><el-icon><Refresh /></el-icon></a>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { injectGlobalData } from '@/provide';
|
||||
import { computed, h, ref } from 'vue';
|
||||
import { ElMessage, ElMessageBox, ElOption, ElSelect } from 'element-plus';
|
||||
import { confirm } from '@/apis/updater';
|
||||
import {Download,Loading,CircleCheck} from '@element-plus/icons-vue'
|
||||
import { checkUpdater, confirm } from '@/apis/updater';
|
||||
import {Download,Loading,CircleCheck,Refresh} from '@element-plus/icons-vue'
|
||||
import { useUpdater } from './updater';
|
||||
|
||||
export default {
|
||||
props:['item','config'],
|
||||
components:{Download,Loading,CircleCheck},
|
||||
components:{Download,Loading,CircleCheck,Refresh},
|
||||
setup (props) {
|
||||
|
||||
const globalData = injectGlobalData();
|
||||
@@ -147,9 +148,31 @@ export default {
|
||||
}).catch(() => {});
|
||||
}
|
||||
}
|
||||
const handleCheck = ()=>{
|
||||
const selectedValue = ref(props.item.MachineId);
|
||||
const selectOptions = [
|
||||
h(ElOption, { label: `仅检查[${props.item.MachineName}]`, value: props.item.MachineId }),
|
||||
h(ElOption, { label: `仅检查[本组所有]`, value: 'g-all' }),
|
||||
];
|
||||
ElMessageBox({
|
||||
title: '选择检查对象',
|
||||
message: () => h(ElSelect, {
|
||||
modelValue: selectedValue.value,
|
||||
placeholder: '请选择',
|
||||
style:'width:20rem;',
|
||||
'onUpdate:modelValue': (val) => {
|
||||
selectedValue.value = val
|
||||
}
|
||||
}, selectOptions),
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消'
|
||||
}).then(() => {
|
||||
checkUpdater(selectedValue.value == props.item.MachineId ? selectedValue.value : '');
|
||||
}).catch(() => {});
|
||||
}
|
||||
|
||||
return {
|
||||
item:computed(()=>props.item),updater,updaterText,updaterColor,handleUpdate
|
||||
item:computed(()=>props.item),updater,updaterText,updaterColor,handleUpdate,handleCheck
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -175,5 +198,6 @@ a.download{
|
||||
|
||||
margin-left:.3rem
|
||||
}
|
||||
+a.download{margin-left:.2rem}
|
||||
}
|
||||
</style>
|
||||
@@ -117,7 +117,7 @@ export default {
|
||||
form: {
|
||||
name:step.value.form.client.name || globalData.value.config.Client.Name,
|
||||
groupid: step.value.form.client.groupid ||globalData.value.config.Client.Group.Id,
|
||||
groupPassword: step.value.form.client.groupPassword ||globalData.value.config.Client.GroupPassword,
|
||||
groupPassword: step.value.form.client.groupPassword ||globalData.value.config.Client.Group.Password,
|
||||
api: step.value.form.client.api ||globalData.value.config.Client.CApi.ApiPort,
|
||||
web: step.value.form.client.web ||globalData.value.config.Client.CApi.WebPort,
|
||||
password:step.value.form.client.password || globalData.value.config.Client.CApi.ApiPassword,
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
中继节点 : {{state.nodes.length}}
|
||||
</a>
|
||||
</el-form-item>
|
||||
|
||||
<el-dialog v-model="state.show" title="中继节点" width="760" top="2vh">
|
||||
<div>
|
||||
<el-table :data="state.nodes" size="small" border height="500">
|
||||
|
||||
@@ -5,15 +5,37 @@
|
||||
<span>密钥正确时可更新服务端</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户端更新检测频率">
|
||||
<div>
|
||||
<div>
|
||||
<el-input-number v-model="state.year" :min="0" :max="99" style="width:12rem" @change="handleSecChange" /> 年
|
||||
<el-input-number v-model="state.month" :min="0" :max="99" style="width:12rem" @change="handleSecChange" /> 月
|
||||
<el-input-number v-model="state.day" :min="0" :max="99" style="width:12rem" @change="handleSecChange" /> 日
|
||||
</div>
|
||||
<div>
|
||||
<el-input-number v-model="state.hour" :min="0" :max="99" style="width:12rem" @change="handleSecChange" /> 时
|
||||
<el-input-number v-model="state.min" :min="0" :max="99" style="width:12rem" @change="handleSecChange"/> 分
|
||||
<el-input-number v-model="state.sec" :min="0" :max="99" style="width:12rem" @change="handleSecChange"/> 秒
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<script>
|
||||
import { getSecretKey,setSecretKey } from '@/apis/updater';
|
||||
import { getSecretKey,setSecretKey, setUpdateInterval } from '@/apis/updater';
|
||||
import { injectGlobalData } from '@/provide';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { onMounted, reactive } from 'vue'
|
||||
export default {
|
||||
setup(props) {
|
||||
const globalData = injectGlobalData();
|
||||
const state = reactive({
|
||||
secretKey:''
|
||||
secretKey:'',
|
||||
year:0,
|
||||
month:0,
|
||||
day:0,
|
||||
hour:0,
|
||||
min:1,
|
||||
sec:0,
|
||||
});
|
||||
const _getSecretKey = ()=>{
|
||||
getSecretKey().then((res)=>{
|
||||
@@ -29,15 +51,45 @@ export default {
|
||||
ElMessage.error('操作失败');
|
||||
});
|
||||
}
|
||||
const _setUpdateInterval = ()=>{
|
||||
const seconds = state.year*31536000 + state.month*2592000 + state.day*86400 + state.hour*3600 + state.min*60 + state.sec;
|
||||
setUpdateInterval(seconds).then(()=>{
|
||||
ElMessage.success('已操作');
|
||||
}).catch(()=>{
|
||||
ElMessage.error('操作失败');
|
||||
});
|
||||
}
|
||||
const handleSecChange = ()=>{
|
||||
_setUpdateInterval();
|
||||
}
|
||||
|
||||
const handleChange = ()=>{
|
||||
_setSecretKey();
|
||||
}
|
||||
|
||||
onMounted(()=>{
|
||||
_getSecretKey();
|
||||
|
||||
let seconds = globalData.value.config.Common.UpdateIntervalSeconds;
|
||||
state. year = Math.floor(seconds / 31536000);
|
||||
seconds %= 31536000;
|
||||
|
||||
state. month = Math.floor(seconds / 2592000 );
|
||||
seconds %= 2592000 ;
|
||||
|
||||
state.day = Math.floor(seconds / 86400) ;
|
||||
seconds %= 86400;
|
||||
|
||||
state.hour =Math.floor( seconds / 3600);
|
||||
seconds %= 3600;
|
||||
|
||||
state.min = Math.floor(seconds / 60);
|
||||
seconds %= 60 ;
|
||||
|
||||
state.sec = seconds;
|
||||
});
|
||||
|
||||
return {state,handleChange}
|
||||
return {state,handleChange,handleSecChange}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -115,6 +115,8 @@ export default {
|
||||
'2609':'服务器重启',
|
||||
'2610':'订阅更新信息(转发)',
|
||||
'2611':'订阅更新信息(转发)',
|
||||
'2612':'检查更新',
|
||||
'2613':'检查更新(转发)',
|
||||
|
||||
'2701':'服务器流量',
|
||||
'2702':'服务器信标流量',
|
||||
|
||||
@@ -21,17 +21,15 @@
|
||||
<Title>linker</Title>
|
||||
<Authors>snltty</Authors>
|
||||
<Company>snltty</Company>
|
||||
<Description>1. 增加连接中继节点的超时时间
|
||||
2. 增加网卡端口转发备注
|
||||
3. 已有多个公开中继服务器上线
|
||||
4. 自定义更新检测频率</Description>
|
||||
<Description>1. 手动检测更新
|
||||
2. 自定义更新检测频率</Description>
|
||||
<Copyright>snltty</Copyright>
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker</PackageReleaseNotes>
|
||||
<Version>1.5.3</Version>
|
||||
<AssemblyVersion>1.5.3</AssemblyVersion>
|
||||
<FileVersion>1.5.3</FileVersion>
|
||||
<Version>1.5.4</Version>
|
||||
<AssemblyVersion>1.5.4</AssemblyVersion>
|
||||
<FileVersion>1.5.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@ namespace linker.plugins.relay.client
|
||||
_ = relayTransfer.ConnectAsync(relayConnectInfo.FromMachineId, relayConnectInfo.ToMachineId, relayConnectInfo.TransactionId, relayConnectInfo.NodeId);
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public sealed class RelayConnectInfo
|
||||
|
||||
@@ -117,7 +117,6 @@ namespace linker.config
|
||||
public IPEndPoint EndPoint { get; set; }
|
||||
|
||||
public long LastTicks { get; set; }
|
||||
|
||||
}
|
||||
|
||||
[MemoryPackable]
|
||||
|
||||
@@ -112,6 +112,11 @@ namespace linker.plugins.tuntap
|
||||
return;
|
||||
}
|
||||
|
||||
if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG)
|
||||
{
|
||||
LoggerHelper.Instance.Debug($"{NetworkHelper.Value2IP(ip)} connection not found");
|
||||
}
|
||||
|
||||
_ = ConnectTunnel(ip).ContinueWith((result, state) =>
|
||||
{
|
||||
//结束操作
|
||||
@@ -184,6 +189,10 @@ namespace linker.plugins.tuntap
|
||||
return await ConnectTunnel(machineId, TunnelProtocolType.Quic).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG)
|
||||
{
|
||||
LoggerHelper.Instance.Debug($"{NetworkHelper.Value2IP(ip)} to machine not found");
|
||||
}
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
@@ -42,6 +42,13 @@ namespace linker.plugins.updater
|
||||
updaterTransfer.SetSecretKey(param.Content);
|
||||
}
|
||||
|
||||
[ClientApiAccessAttribute(ClientApiAccess.Config)]
|
||||
public void SetInterval(ApiControllerParamsInfo param)
|
||||
{
|
||||
updaterTransfer.SetInterval(int.Parse(param.Content));
|
||||
}
|
||||
|
||||
|
||||
public async Task<UpdateInfo> GetServer(ApiControllerParamsInfo param)
|
||||
{
|
||||
MessageResponeInfo resp = await messengerSender.SendReply(new MessageRequestWrap
|
||||
@@ -163,6 +170,19 @@ namespace linker.plugins.updater
|
||||
MessengerId = (ushort)UpdaterMessengerIds.SubscribeForward
|
||||
});
|
||||
}
|
||||
public async Task Check(ApiControllerParamsInfo param)
|
||||
{
|
||||
await messengerSender.SendOnly(new MessageRequestWrap
|
||||
{
|
||||
Connection = clientSignInState.Connection,
|
||||
MessengerId = (ushort)UpdaterMessengerIds.CheckForward,
|
||||
Payload = string.IsNullOrWhiteSpace(param.Content) ? Helper.EmptyArray : MemoryPackSerializer.Serialize(param.Content)
|
||||
});
|
||||
if (string.IsNullOrWhiteSpace(param.Content) || param.Content == config.Data.Client.Id)
|
||||
{
|
||||
updaterTransfer.Check();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class UpdaterListInfo
|
||||
|
||||
@@ -50,6 +50,11 @@ namespace linker.plugins.updater
|
||||
fileConfig.Data.Client.Updater.SecretKey = key;
|
||||
fileConfig.Data.Update();
|
||||
}
|
||||
public void SetInterval(int sec)
|
||||
{
|
||||
fileConfig.Data.Common.UpdateIntervalSeconds = sec;
|
||||
fileConfig.Data.Update();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 所有客户端的更新信息
|
||||
@@ -100,6 +105,11 @@ namespace linker.plugins.updater
|
||||
}
|
||||
}
|
||||
|
||||
public void Check()
|
||||
{
|
||||
_ = updaterHelper.GetUpdateInfo(updateInfo);
|
||||
}
|
||||
|
||||
private void UpdateTask()
|
||||
{
|
||||
TimerHelper.SetInterval(async () =>
|
||||
|
||||
@@ -68,6 +68,16 @@ namespace linker.plugins.updater.messenger
|
||||
string machineId = MemoryPackSerializer.Deserialize<string>(connection.ReceiveRequestWrap.Payload.Span);
|
||||
updaterTransfer.Subscribe(machineId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查更新
|
||||
/// </summary>
|
||||
/// <param name="connection"></param>
|
||||
[MessengerId((ushort)UpdaterMessengerIds.Check)]
|
||||
public void Check(IConnection connection)
|
||||
{
|
||||
updaterTransfer.Check();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -236,5 +246,35 @@ namespace linker.plugins.updater.messenger
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查更新转发
|
||||
/// </summary>
|
||||
/// <param name="connection"></param>
|
||||
[MessengerId((ushort)UpdaterMessengerIds.CheckForward)]
|
||||
public void CheckForward(IConnection connection)
|
||||
{
|
||||
if (signCaching.TryGet(connection.Id, out SignCacheInfo cache))
|
||||
{
|
||||
string toMachineId = string.Empty;
|
||||
if (connection.ReceiveRequestWrap.Payload.Length > 0)
|
||||
{
|
||||
toMachineId = MemoryPackSerializer.Deserialize<string>(connection.ReceiveRequestWrap.Payload.Span);
|
||||
}
|
||||
|
||||
var clients = string.IsNullOrWhiteSpace(toMachineId)
|
||||
? signCaching.Get(cache.GroupId).Where(c => c.Connected && c.MachineId != connection.Id)
|
||||
: signCaching.Get(cache.GroupId).Where(c => c.Connected && c.MachineId == toMachineId);
|
||||
|
||||
foreach (var item in clients)
|
||||
{
|
||||
_ = messengerSender.SendOnly(new MessageRequestWrap
|
||||
{
|
||||
Connection = item.Connection,
|
||||
MessengerId = (ushort)UpdaterMessengerIds.Check,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
Subscribe = 2610,
|
||||
SubscribeForward = 2611,
|
||||
|
||||
Check = 2612,
|
||||
CheckForward = 2613,
|
||||
|
||||
Max = 2299
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,16 +33,16 @@ do
|
||||
fi
|
||||
done
|
||||
cd public/publish/docker/linux-${p}-x64/${f}
|
||||
docker buildx build -f ${target}/public/publish/docker/linux-${p}-x64/${f}/Dockerfile-${p} --platform="linux/x86_64" --force-rm -t "${image}-${p}-x64:latest" -t "${image}-${p}-x64:v1.5.3" . --push
|
||||
docker buildx build -f ${target}/public/publish/docker/linux-${p}-x64/${f}/Dockerfile-${p} --platform="linux/x86_64" --force-rm -t "${image}-${p}-x64:latest" -t "${image}-${p}-x64:v1.5.4" . --push
|
||||
cd ../../../../../
|
||||
|
||||
|
||||
cd public/publish/docker/linux-${p}-arm64/${f}
|
||||
docker buildx build -f ${target}/public/publish/docker/linux-${p}-arm64/${f}/Dockerfile-${p} --platform="linux/arm64" --force-rm -t "${image}-${p}-arm64:latest" -t "${image}-${p}-arm64:v1.5.3" . --push
|
||||
docker buildx build -f ${target}/public/publish/docker/linux-${p}-arm64/${f}/Dockerfile-${p} --platform="linux/arm64" --force-rm -t "${image}-${p}-arm64:latest" -t "${image}-${p}-arm64:v1.5.4" . --push
|
||||
cd ../../../../../
|
||||
|
||||
cd public/publish/docker/linux-${p}-arm/${f}
|
||||
docker buildx build -f ${target}/public/publish/docker/linux-${p}-arm/${f}/Dockerfile-${p} --platform="linux/arm/v7" --force-rm -t "${image}-${p}-arm:latest" -t "${image}-${p}-arm:v1.5.3" . --push
|
||||
docker buildx build -f ${target}/public/publish/docker/linux-${p}-arm/${f}/Dockerfile-${p} --platform="linux/arm/v7" --force-rm -t "${image}-${p}-arm:latest" -t "${image}-${p}-arm:v1.5.4" . --push
|
||||
cd ../../../../../
|
||||
done
|
||||
done
|
||||
10
version.txt
10
version.txt
@@ -1,6 +1,4 @@
|
||||
v1.5.3
|
||||
2024-11-11 10:38:17
|
||||
1. 增加连接中继节点的超时时间
|
||||
2. 增加网卡端口转发备注
|
||||
3. 已有多个公开中继服务器上线
|
||||
4. 自定义更新检测频率
|
||||
v1.5.4
|
||||
2024-11-11 17:15:15
|
||||
1. 手动检测更新
|
||||
2. 自定义更新检测频率
|
||||
Reference in New Issue
Block a user