diff --git a/.editorconfig b/.editorconfig
index 6006ccb8..68b7fb84 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -6,6 +6,7 @@ dotnet_diagnostic.CA1416.severity = none
[*.cs]
#### 命名样式 ####
+
# 命名规则
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
@@ -127,6 +128,7 @@ dotnet_naming_style.帕斯卡拼写法.word_separator =
dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case
[*.{cs,vb}]
+dotnet_diagnostic.CA1838.severity = none
dotnet_style_qualification_for_field = false:silent
dotnet_style_qualification_for_property = false:silent
dotnet_style_qualification_for_method = false:silent
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index 2eef23bb..22ba253f 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -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.8.2 snltty/linker-musl:amd64 snltty/linker-musl:arm64 snltty/linker-musl:arm && \
+ docker manifest create snltty/linker-musl:v1.8.3 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.8.2 && \
+ docker manifest push snltty/linker-musl:v1.8.3 && \
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,9 +70,9 @@ 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.8.2 snltty/linker-debian:amd64 snltty/linker-debian:arm64 snltty/linker-debian:arm && \
+ docker manifest create snltty/linker-debian:v1.8.3 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.8.2 && \
+ docker manifest push snltty/linker-debian:v1.8.3 && \
docker pull --platform linux/arm/v7 snltty/linker-kvm-arm:latest && \
docker tag snltty/linker-kvm-arm:latest snltty/linker-kvm:arm && \
docker push snltty/linker-kvm:arm && \
@@ -83,6 +83,6 @@ jobs:
docker tag snltty/linker-kvm-x64:latest snltty/linker-kvm:amd64 && \
docker push snltty/linker-kvm:amd64 && \
docker manifest create snltty/linker-kvm:latest snltty/linker-kvm:amd64 snltty/linker-kvm:arm64 snltty/linker-kvm:arm && \
- docker manifest create snltty/linker-kvm:v1.8.2 snltty/linker-kvm:amd64 snltty/linker-kvm:arm64 snltty/linker-kvm:arm && \
+ docker manifest create snltty/linker-kvm:v1.8.3 snltty/linker-kvm:amd64 snltty/linker-kvm:arm64 snltty/linker-kvm:arm && \
docker manifest push snltty/linker-kvm:latest && \
- docker manifest push snltty/linker-kvm:v1.8.2
\ No newline at end of file
+ docker manifest push snltty/linker-kvm:v1.8.3
\ No newline at end of file
diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml
index 8fa3c409..26f87510 100644
--- a/.github/workflows/dotnet.yml
+++ b/.github/workflows/dotnet.yml
@@ -33,11 +33,11 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.ACTIONS_TOKEN }}
with:
- tag_name: v1.8.2
- release_name: v1.8.2.${{ steps.date.outputs.today }}
+ tag_name: v1.8.3
+ release_name: v1.8.3.${{ steps.date.outputs.today }}
draft: false
prerelease: false
- body: "1. 一些累计更新\r\n2. 重建权限存储,ulong改为BitArray,同组所有客户端需保持版本一致\r\n3. 增加唤醒功能,支持WOL,COM继电器,HID继电器\r\n4. 基于One-KVM包装docker镜像集成linker\r\n5. 管理端口改为1804,一个端口托管Web+Websocket"
+ body: "1. 一些累计更新\r\n2. 修复socks5,解决CPU爆满问题,增加域名解析和HTTP代理\r\n3. 优化唤醒模块\r\n5. 管理端口改为1804,一个端口托管Web+Websocket"
- name: publish projects
run: ./publish.bat "C:\\Android\\android-sdk"
- name: upload-win-x86-oss
@@ -49,7 +49,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.8.2/linker-win-x86.zip
+ target-path: /downloads/linker/v1.8.3/linker-win-x86.zip
- name: upload-win-x86
id: upload-win-x86
uses: actions/upload-release-asset@master
@@ -69,7 +69,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.8.2/linker-win-x64.zip
+ target-path: /downloads/linker/v1.8.3/linker-win-x64.zip
- name: upload-win-x64
id: upload-win-x64
uses: actions/upload-release-asset@master
@@ -89,7 +89,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.8.2/linker-win-arm64.zip
+ target-path: /downloads/linker/v1.8.3/linker-win-arm64.zip
- name: upload-win-arm64
id: upload-win-arm64
uses: actions/upload-release-asset@master
@@ -109,7 +109,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.8.2/linker-linux-x64.zip
+ target-path: /downloads/linker/v1.8.3/linker-linux-x64.zip
- name: upload-linux-x64
id: upload-linux-x64
uses: actions/upload-release-asset@master
@@ -129,7 +129,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.8.2/linker-linux-arm.zip
+ target-path: /downloads/linker/v1.8.3/linker-linux-arm.zip
- name: upload-linux-arm
id: upload-linux-arm
uses: actions/upload-release-asset@master
@@ -149,7 +149,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.8.2/linker-linux-arm64.zip
+ target-path: /downloads/linker/v1.8.3/linker-linux-arm64.zip
- name: upload-linux-arm64
id: upload-linux-arm64
uses: actions/upload-release-asset@master
@@ -169,7 +169,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.8.2/linker-linux-musl-x64.zip
+ target-path: /downloads/linker/v1.8.3/linker-linux-musl-x64.zip
- name: upload-linux-musl-x64
id: upload-linux-musl-x64
uses: actions/upload-release-asset@master
@@ -189,7 +189,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.8.2/linker-linux-musl-arm.zip
+ target-path: /downloads/linker/v1.8.3/linker-linux-musl-arm.zip
- name: upload-linux-musl-arm
id: upload-linux-musl-arm
uses: actions/upload-release-asset@master
@@ -209,7 +209,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.8.2/linker-linux-musl-arm64.zip
+ target-path: /downloads/linker/v1.8.3/linker-linux-musl-arm64.zip
- name: upload-linux-musl-arm64
id: upload-linux-musl-arm64
uses: actions/upload-release-asset@master
@@ -259,7 +259,7 @@ jobs:
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
bucket: ide-qbcode
asset-path: ./public/publish-zip/linker.apk
- target-path: /downloads/linker/v1.8.2/linker.apk
+ target-path: /downloads/linker/v1.8.3/linker.apk
- name: upload-apk
id: upload-apk
uses: actions/upload-release-asset@master
diff --git a/.github/workflows/ipk.yml b/.github/workflows/ipk.yml
index a1859cb3..800e04b0 100644
--- a/.github/workflows/ipk.yml
+++ b/.github/workflows/ipk.yml
@@ -44,7 +44,7 @@ jobs:
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
bucket: ide-qbcode
asset-path: ./public/publish-ipk/x64/linker-x64.ipk
- target-path: /downloads/linker/v1.8.2/linker-x64.ipk
+ target-path: /downloads/linker/v1.8.3/linker-x64.ipk
- name: upload-x64
id: upload-x64
uses: actions/upload-release-asset@master
@@ -64,7 +64,7 @@ jobs:
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
bucket: ide-qbcode
asset-path: ./public/publish-ipk/arm/linker-arm.ipk
- target-path: /downloads/linker/v1.8.2/linker-arm.ipk
+ target-path: /downloads/linker/v1.8.3/linker-arm.ipk
- name: upload-arm
id: upload-arm
uses: actions/upload-release-asset@master
@@ -84,7 +84,7 @@ jobs:
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
bucket: ide-qbcode
asset-path: ./public/publish-ipk/arm64/linker-arm64.ipk
- target-path: /downloads/linker/v1.8.2/linker-arm64.ipk
+ target-path: /downloads/linker/v1.8.3/linker-arm64.ipk
- name: upload-arm64
id: upload-arm64
uses: actions/upload-release-asset@master
diff --git a/.github/workflows/nuget.yml b/.github/workflows/nuget.yml
index 492f6e17..e64e9a03 100644
--- a/.github/workflows/nuget.yml
+++ b/.github/workflows/nuget.yml
@@ -37,6 +37,7 @@ jobs:
dotnet build ./src/linker.messenger.pcp -c release
dotnet build ./src/linker.messenger.plan -c release
dotnet build ./src/linker.messenger.relay -c release
+ dotnet build ./src/linker.messenger.cdkey -c release
dotnet build ./src/linker.messenger.serializer.memorypack -c release
dotnet build ./src/linker.messenger.sforward -c release
dotnet build ./src/linker.messenger.signin -c release
@@ -70,6 +71,7 @@ jobs:
dotnet pack ./src/linker.messenger.pcp -c release
dotnet pack ./src/linker.messenger.plan -c release
dotnet pack ./src/linker.messenger.relay -c release
+ dotnet pack ./src/linker.messenger.cdkey -c release
dotnet pack ./src/linker.messenger.serializer.memorypack -c release
dotnet pack ./src/linker.messenger.sforward -c release
dotnet pack ./src/linker.messenger.signin -c release
@@ -87,33 +89,34 @@ jobs:
- name: Push
run: |
- dotnet nuget push ./src/linker.libs/bin/release/linker.libs.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger/bin/release/linker.messenger.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.access/bin/release/linker.messenger.access.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.action/bin/release/linker.messenger.action.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.api/bin/release/linker.messenger.api.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.channel/bin/release/linker.messenger.channel.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.decenter/bin/release/linker.messenger.decenter.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.entry/bin/release/linker.messenger.entry.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.exroute/bin/release/linker.messenger.exroute.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.flow/bin/release/linker.messenger.flow.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.forward/bin/release/linker.messenger.forward.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.listen/bin/release/linker.messenger.listen.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.logger/bin/release/linker.messenger.logger.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.pcp/bin/release/linker.messenger.pcp.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.plan/bin/release/linker.messenger.plan.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.relay/bin/release/linker.messenger.relay.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.serializer.memorypack/bin/release/linker.messenger.serializer.memorypack.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.sforward/bin/release/linker.messenger.sforward.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.signin/bin/release/linker.messenger.signin.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.socks5/bin/release/linker.messenger.socks5.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.store.file/bin/release/linker.messenger.store.file.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.sync/bin/release/linker.messenger.sync.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.tunnel/bin/release/linker.messenger.tunnel.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.tuntap/bin/release/linker.messenger.tuntap.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.updater/bin/release/linker.messenger.updater.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.firewall/bin/release/linker.messenger.firewall.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.messenger.wakeup/bin/release/linker.messenger.wakeup.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.tun/bin/release/linker.tun.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.snat/bin/release/linker.snat.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
- dotnet nuget push ./src/linker.tunnel/bin/release/linker.tunnel.1.8.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.libs/bin/release/linker.libs.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger/bin/release/linker.messenger.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.access/bin/release/linker.messenger.access.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.action/bin/release/linker.messenger.action.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.api/bin/release/linker.messenger.api.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.channel/bin/release/linker.messenger.channel.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.decenter/bin/release/linker.messenger.decenter.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.entry/bin/release/linker.messenger.entry.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.exroute/bin/release/linker.messenger.exroute.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.flow/bin/release/linker.messenger.flow.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.forward/bin/release/linker.messenger.forward.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.listen/bin/release/linker.messenger.listen.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.logger/bin/release/linker.messenger.logger.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.pcp/bin/release/linker.messenger.pcp.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.plan/bin/release/linker.messenger.plan.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.relay/bin/release/linker.messenger.relay.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.cdkey/bin/release/linker.messenger.cdkey.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.serializer.memorypack/bin/release/linker.messenger.serializer.memorypack.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.sforward/bin/release/linker.messenger.sforward.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.signin/bin/release/linker.messenger.signin.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.socks5/bin/release/linker.messenger.socks5.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.store.file/bin/release/linker.messenger.store.file.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.sync/bin/release/linker.messenger.sync.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.tunnel/bin/release/linker.messenger.tunnel.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.tuntap/bin/release/linker.messenger.tuntap.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.updater/bin/release/linker.messenger.updater.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.firewall/bin/release/linker.messenger.firewall.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.wakeup/bin/release/linker.messenger.wakeup.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.tun/bin/release/linker.tun.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.snat/bin/release/linker.snat.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.tunnel/bin/release/linker.tunnel.1.8.3.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
diff --git a/linker.sln b/linker.sln
index 6b7b154d..f41d15c6 100644
--- a/linker.sln
+++ b/linker.sln
@@ -67,7 +67,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "linker.snat", "src\linker.s
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "linker.messenger.firewall", "src\linker.messenger.firewall\linker.messenger.firewall.csproj", "{F97DB5A9-3807-4441-A520-7B1211C1CE8A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "linker.messenger.wakeup", "src\linker.messenger.wakeup\linker.messenger.wakeup.csproj", "{FF0F6D11-6FD5-4CB1-9121-14623B226319}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "linker.messenger.wakeup", "src\linker.messenger.wakeup\linker.messenger.wakeup.csproj", "{FF0F6D11-6FD5-4CB1-9121-14623B226319}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "linker.messenger.cdkey", "src\linker.messenger.cdkey\linker.messenger.cdkey.csproj", "{B03C0E46-1C0F-46C2-B026-8F02F5C643D4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -481,6 +483,18 @@ Global
{FF0F6D11-6FD5-4CB1-9121-14623B226319}.Release|x64.Build.0 = Release|Any CPU
{FF0F6D11-6FD5-4CB1-9121-14623B226319}.Release|x86.ActiveCfg = Release|Any CPU
{FF0F6D11-6FD5-4CB1-9121-14623B226319}.Release|x86.Build.0 = Release|Any CPU
+ {B03C0E46-1C0F-46C2-B026-8F02F5C643D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B03C0E46-1C0F-46C2-B026-8F02F5C643D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B03C0E46-1C0F-46C2-B026-8F02F5C643D4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B03C0E46-1C0F-46C2-B026-8F02F5C643D4}.Debug|x64.Build.0 = Debug|Any CPU
+ {B03C0E46-1C0F-46C2-B026-8F02F5C643D4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B03C0E46-1C0F-46C2-B026-8F02F5C643D4}.Debug|x86.Build.0 = Debug|Any CPU
+ {B03C0E46-1C0F-46C2-B026-8F02F5C643D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B03C0E46-1C0F-46C2-B026-8F02F5C643D4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B03C0E46-1C0F-46C2-B026-8F02F5C643D4}.Release|x64.ActiveCfg = Release|Any CPU
+ {B03C0E46-1C0F-46C2-B026-8F02F5C643D4}.Release|x64.Build.0 = Release|Any CPU
+ {B03C0E46-1C0F-46C2-B026-8F02F5C643D4}.Release|x86.ActiveCfg = Release|Any CPU
+ {B03C0E46-1C0F-46C2-B026-8F02F5C643D4}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/publish-docker.sh b/publish-docker.sh
index 132181d0..b4e6e02e 100644
--- a/publish-docker.sh
+++ b/publish-docker.sh
@@ -41,16 +41,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.8.2" . --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.8.3" . --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.8.2" . --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.8.3" . --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.8.2" . --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.8.3" . --push
cd ../../../../../
done
done
\ No newline at end of file
diff --git a/publish-ipk.sh b/publish-ipk.sh
index 9d2e15ca..27fe9f19 100644
--- a/publish-ipk.sh
+++ b/publish-ipk.sh
@@ -22,7 +22,7 @@ do
mkdir -p public/publish-ipk/${r}/data/usr/bin/linker
cp -rf public/publish/${r}/* public/publish-ipk/${r}/data/usr/bin/linker/
- sed -i "s|{version}|1.8.2|g" public/publish-ipk/${r}/control/control
+ sed -i "s|{version}|1.8.3|g" public/publish-ipk/${r}/control/control
sed -i 's/\r$//' public/publish-ipk/${r}/data/etc/init.d/linker
sed -i 's/\r$//' public/publish-ipk/${r}/control/control
sed -i 's/\r$//' public/publish-ipk/${r}/control/postinst
diff --git a/src/linker.app/Platforms/Android/MainActivity.cs b/src/linker.app/Platforms/Android/MainActivity.cs
index 0bb99485..f3b5c312 100644
--- a/src/linker.app/Platforms/Android/MainActivity.cs
+++ b/src/linker.app/Platforms/Android/MainActivity.cs
@@ -189,7 +189,7 @@ namespace linker.app
private void RunLinker()
{
- Helper.currentDirectory = FileSystem.Current.AppDataDirectory;
+ Helper.SetCurrentDirectory(FileSystem.Current.AppDataDirectory);
InitLogger();
diff --git a/src/linker.app/linker.app.csproj b/src/linker.app/linker.app.csproj
index 457199c0..a79c944f 100644
--- a/src/linker.app/linker.app.csproj
+++ b/src/linker.app/linker.app.csproj
@@ -28,7 +28,7 @@
com.snltty.linker.app
linker.app
- 1.8.2
+ 1.8.3
snltty
snltty
snltty
@@ -38,7 +38,7 @@
linker
- 1.8.2
+ 1.8.3
1
11.0
diff --git a/src/linker.libs/CommandHelper.cs b/src/linker.libs/CommandHelper.cs
index de7b3d10..4184dcab 100644
--- a/src/linker.libs/CommandHelper.cs
+++ b/src/linker.libs/CommandHelper.cs
@@ -58,7 +58,7 @@ namespace linker.libs
public static string Execute(string fileName, string arg, string[] commands, out string error)
{
using Process proc = new Process();
- proc.StartInfo.WorkingDirectory = Path.GetFullPath(Path.Join(Helper.currentDirectory,"./"));
+ proc.StartInfo.WorkingDirectory = Path.GetFullPath(Path.Join(Helper.CurrentDirectory, "./"));
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.FileName = fileName;
proc.StartInfo.UseShellExecute = false;
diff --git a/src/linker.libs/Crypto.cs b/src/linker.libs/Crypto.cs
index 84e7e1d4..67574c85 100644
--- a/src/linker.libs/Crypto.cs
+++ b/src/linker.libs/Crypto.cs
@@ -70,13 +70,11 @@ namespace linker.libs
encryptoTransform.Dispose();
decryptoTransform.Dispose();
}
- private (byte[] Key, byte[] IV) GenerateKeyAndIV(string password)
+ private static (byte[] Key, byte[] IV) GenerateKeyAndIV(string password)
{
byte[] key = new byte[16];
byte[] iv = new byte[16];
-
- using SHA384 sha = SHA384.Create();
- byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(password));
+ byte[] hash = SHA384.HashData(Encoding.UTF8.GetBytes(password));
Array.Copy(hash, 0, key, 0, key.Length);
Array.Copy(hash, key.Length, iv, 0, iv.Length);
diff --git a/src/linker.libs/GCHelper.cs b/src/linker.libs/GCHelper.cs
index fe1427a2..9707aafd 100644
--- a/src/linker.libs/GCHelper.cs
+++ b/src/linker.libs/GCHelper.cs
@@ -24,7 +24,9 @@ namespace linker.libs
GC.Collect();
GC.Collect(2, GCCollectionMode.Aggressive);
+#pragma warning disable CA1816 // Dispose 方法应调用 SuppressFinalize
GC.SuppressFinalize(true);
+#pragma warning restore CA1816 // Dispose 方法应调用 SuppressFinalize
GC.WaitForPendingFinalizers();
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
diff --git a/src/linker.libs/Helper.cs b/src/linker.libs/Helper.cs
index db5835b3..ecf8c0b6 100644
--- a/src/linker.libs/Helper.cs
+++ b/src/linker.libs/Helper.cs
@@ -6,16 +6,26 @@ namespace linker.libs
{
public static class Helper
{
- public static byte[] EmptyArray = Array.Empty();
- public static byte[] TrueArray = new byte[] { 1 };
- public static byte[] FalseArray = new byte[] { 0 };
+ static byte[] emptyArray = [];
+ public static byte[] EmptyArray => emptyArray;
+ static byte[] trueArray => [1];
+ public static byte[] TrueArray => trueArray;
+ static byte[] falseArray => [0];
+ public static byte[] FalseArray => falseArray;
public const string GlobalString = "snltty";
- public static string currentDirectory = "./";
+
+
+ private static string currentDirectory = "./";
+ public static string CurrentDirectory => currentDirectory;
+ public static void SetCurrentDirectory(string path)
+ {
+ currentDirectory = path;
+ }
public static event EventHandler OnAppExit;
- public static CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
+ static CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
public static void AppExit(int code)
{
OnAppExit?.Invoke(null, EventArgs.Empty);
diff --git a/src/linker.libs/LoggerHelper.cs b/src/linker.libs/LoggerHelper.cs
index 4b657070..4eb2dc7a 100644
--- a/src/linker.libs/LoggerHelper.cs
+++ b/src/linker.libs/LoggerHelper.cs
@@ -26,7 +26,7 @@ namespace linker.libs
{
while (true)
{
- while (queue.Count > 0)
+ while (queue.IsEmpty == false)
{
if (queue.TryDequeue(out LoggerModel model))
{
@@ -39,7 +39,7 @@ namespace linker.libs
}
- public int lockNum = 0;
+ public int lockNum;
public void Lock()
{
Interlocked.Increment(ref lockNum);
diff --git a/src/linker.libs/NetworkHelper.cs b/src/linker.libs/NetworkHelper.cs
index 439818ef..b8dcaa64 100644
--- a/src/linker.libs/NetworkHelper.cs
+++ b/src/linker.libs/NetworkHelper.cs
@@ -40,7 +40,7 @@ namespace linker.libs
}
}
- public static class NetworkHelper
+ public static partial class NetworkHelper
{
public static IPEndPoint TransEndpointFamily(IPEndPoint ep)
{
@@ -132,8 +132,7 @@ namespace linker.libs
return null;
}
-
- static List starts = new() { "10.", "100.", "192.168.", "172." };
+ private readonly static List starts = ["10.", "100.", "192.168.", "172."];
public static ushort GetRouteLevel(string server, out List result)
{
result = new List();
@@ -159,7 +158,7 @@ namespace linker.libs
string str = CommandHelper.Linux(string.Empty, new string[] { $"traceroute {server} -4 -m 5 -w 1" });
string[] lines = str.Split(Environment.NewLine);
- Regex regex = new Regex(@"(\d+\.\d+\.\d+\.\d+)");
+ Regex regex = MyRegex();
for (ushort i = 1; i < lines.Length; i++)
{
string ip = regex.Match(lines[i]).Groups[1].Value;
@@ -186,7 +185,7 @@ namespace linker.libs
{
using Ping pinger = new();
PingReply reply = pinger.Send(target, 100, Encoding.ASCII.GetBytes(Helper.GlobalString), new PingOptions { Ttl = i, DontFragment = true });
- if(reply.Status != IPStatus.Success)
+ if (reply.Status != IPStatus.Success)
{
continue;
}
@@ -208,7 +207,7 @@ namespace linker.libs
}
- private static byte[] ipv6LocalBytes = new byte[] { 254, 128, 0, 0, 0, 0, 0, 0 };
+ private readonly static byte[] ipv6LocalBytes = [254, 128, 0, 0, 0, 0, 0, 0];
private static IPAddress[] GetIP()
{
@@ -223,7 +222,7 @@ namespace linker.libs
{
}
}
-
+
try
{
return NetworkInterface.GetAllNetworkInterfaces()
@@ -245,9 +244,9 @@ namespace linker.libs
.Where(c => c.Equals(IPAddress.IPv6Loopback) == false)
.Where(c =>
{
- byte[] addressBytes = c.GetAddressBytes();
+ byte[] addressBytes = c.GetAddressBytes();
return (
- addressBytes[0] == 0xFD
+ addressBytes[0] == 0xFD
|| (addressBytes[0] == 0xFE && (addressBytes[1] == 0x80 || addressBytes[1] == 0xC0))
) == false;
})
@@ -359,7 +358,10 @@ namespace linker.libs
#pragma warning restore 618
#else
- public static bool IPv6Support = Socket.OSSupportsIPv6;
+ public static bool IPv6Support => Socket.OSSupportsIPv6;
+
+ [GeneratedRegex(@"(\d+\.\d+\.\d+\.\d+)")]
+ private static partial Regex MyRegex();
#endif
}
}
diff --git a/src/linker.libs/NumberSpace.cs b/src/linker.libs/NumberSpace.cs
index b362632c..7a2a9a96 100644
--- a/src/linker.libs/NumberSpace.cs
+++ b/src/linker.libs/NumberSpace.cs
@@ -21,7 +21,7 @@ namespace linker.libs
public sealed class NumberSpaceUInt32
{
- private uint num = 0;
+ private uint num;
public NumberSpaceUInt32(uint defaultVal = 0)
{
diff --git a/src/linker.libs/OperatingManager.cs b/src/linker.libs/OperatingManager.cs
index 4fc23c61..f931bdf0 100644
--- a/src/linker.libs/OperatingManager.cs
+++ b/src/linker.libs/OperatingManager.cs
@@ -5,7 +5,7 @@ namespace linker.libs
{
public sealed class OperatingManager
{
- private uint operating = 0;
+ private uint operating;
public bool Operating => operating == 1;
public bool StartOperation()
diff --git a/src/linker.libs/ReceiveDataBuffer.cs b/src/linker.libs/ReceiveDataBuffer.cs
index 6af47e73..611703a6 100644
--- a/src/linker.libs/ReceiveDataBuffer.cs
+++ b/src/linker.libs/ReceiveDataBuffer.cs
@@ -5,7 +5,7 @@ namespace linker.libs
public sealed class ReceiveDataBuffer
{
private Memory items { get; set; }
- private int size = 0;
+ private int size ;
public int Size
{
get
diff --git a/src/linker.libs/SystemIdHelper.cs b/src/linker.libs/SystemIdHelper.cs
index e2b00020..3ca19d67 100644
--- a/src/linker.libs/SystemIdHelper.cs
+++ b/src/linker.libs/SystemIdHelper.cs
@@ -17,7 +17,7 @@ namespace linker.libs
private static string GetSystemIdAndroid()
{
- string localAppDataPath = Path.Join(Helper.currentDirectory, "machine-id.txt");
+ string localAppDataPath = Path.Join(Helper.CurrentDirectory, "machine-id.txt");
if (Directory.Exists(Path.GetDirectoryName(localAppDataPath)) == false)
{
Directory.CreateDirectory(Path.GetDirectoryName(localAppDataPath));
diff --git a/src/linker.libs/VersionHelper.cs b/src/linker.libs/VersionHelper.cs
index deecac06..e9499fbf 100644
--- a/src/linker.libs/VersionHelper.cs
+++ b/src/linker.libs/VersionHelper.cs
@@ -6,7 +6,8 @@ namespace linker.libs
{
public static class VersionHelper
{
- public static string version = $"v{string.Join(".", Assembly.GetExecutingAssembly().GetName().Version.ToString().Split('.').Take(3))}";
+ static string version = $"v{string.Join(".", Assembly.GetExecutingAssembly().GetName().Version.ToString().Split('.').Take(3))}";
+ public static string Version => version;
///
/// 比较版本,相差多少
@@ -24,7 +25,7 @@ namespace linker.libs
if (v2Span[0] == 'v') v2Span = v2Span.Slice(1);
- return Compare(Version.Parse(v1Span), Version.Parse(v2Span), abs);
+ return Compare(System.Version.Parse(v1Span), System.Version.Parse(v2Span), abs);
}
///
/// 比较版本,相差多少
diff --git a/src/linker.libs/VersionManager.cs b/src/linker.libs/VersionManager.cs
index d9617a56..c5618626 100644
--- a/src/linker.libs/VersionManager.cs
+++ b/src/linker.libs/VersionManager.cs
@@ -6,7 +6,7 @@ namespace linker.libs
{
public sealed class VersionManager
{
- private ulong version = 0;
+ private ulong version;
public ulong Value => version;
diff --git a/src/linker.libs/extends/StringExtends.cs b/src/linker.libs/extends/StringExtends.cs
index ca8ddbc0..a7a35a2b 100644
--- a/src/linker.libs/extends/StringExtends.cs
+++ b/src/linker.libs/extends/StringExtends.cs
@@ -47,8 +47,7 @@ namespace linker.libs.extends
///
public static string Md5(this string input)
{
- MD5 md5Hasher = MD5.Create();
- byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
+ byte[] data = SHA256.HashData(Encoding.Default.GetBytes(input));
StringBuilder sBuilder = new();
for (int i = 0; i < data.Length; i++)
{
@@ -361,7 +360,7 @@ namespace linker.libs.extends
public static string GetUTF16String(this Memory memory, int strLength)
{
if (memory.Length == 0)
- return string.Empty;
+ return string.Empty;
return ReadUtf16(memory.Span, strLength);
}
///
diff --git a/src/linker.libs/linker.libs.csproj b/src/linker.libs/linker.libs.csproj
index 0b2004ed..34d895ea 100644
--- a/src/linker.libs/linker.libs.csproj
+++ b/src/linker.libs/linker.libs.csproj
@@ -14,9 +14,9 @@
snltty
https://github.com/snltty/linker
https://github.com/snltty/linker
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
full
diff --git a/src/linker.libs/timer/HashedWheelTimer.cs b/src/linker.libs/timer/HashedWheelTimer.cs
index 21c95574..1e4242f0 100644
--- a/src/linker.libs/timer/HashedWheelTimer.cs
+++ b/src/linker.libs/timer/HashedWheelTimer.cs
@@ -58,7 +58,7 @@ namespace linker.libs.timer
private /*volatile*/ long _startTime;
- private long _pendingTimeouts = 0;
+ private long _pendingTimeouts;
private long GetCurrentMs() { return DateTime.UtcNow.Ticks / 10000 - _base; }
@@ -186,10 +186,7 @@ namespace linker.libs.timer
/// a handle which is associated with the specified task
public Timeout NewTimeout(TimerTask task, TimeSpan span)
{
- if (task == null)
- {
- throw new ArgumentNullException(nameof(task));
- }
+ ArgumentNullException.ThrowIfNull(task);
if (_workerState == WORKER_STATE_SHUTDOWN)
return null;
@@ -247,7 +244,7 @@ namespace linker.libs.timer
- private readonly ISet _unprocessedTimeouts = new HashSet();
+ private readonly HashSet _unprocessedTimeouts = [];
private long _tick;
private void Run()
diff --git a/src/linker.libs/web/IApiController.cs b/src/linker.libs/web/IApiController.cs
index a047c498..5f750fae 100644
--- a/src/linker.libs/web/IApiController.cs
+++ b/src/linker.libs/web/IApiController.cs
@@ -22,7 +22,7 @@ namespace linker.libs.web
///
/// 请求id
///
- public long RequestId { get; set; } = 0;
+ public long RequestId { get; set; }
///
/// 状态码
///
@@ -47,7 +47,7 @@ namespace linker.libs.web
///
/// 请求id
///
- public uint RequestId { get; set; } = 0;
+ public uint RequestId { get; set; }
///
/// 数据
///
@@ -63,7 +63,7 @@ namespace linker.libs.web
///
/// 请求id
///
- public uint RequestId { get; set; } = 0;
+ public uint RequestId { get; set; }
///
/// 数据
///
diff --git a/src/linker.libs/web/WebServer.cs b/src/linker.libs/web/WebServer.cs
index 8dfafb86..3e5872ef 100644
--- a/src/linker.libs/web/WebServer.cs
+++ b/src/linker.libs/web/WebServer.cs
@@ -141,9 +141,9 @@ namespace linker.libs.web
private string GetContentType(string path)
{
string ext = Path.GetExtension(path);
- if (types.ContainsKey(ext))
+ if (types.TryGetValue(ext,out string value))
{
- return types[ext];
+ return value;
}
return "application/octet-stream";
}
diff --git a/src/linker.libs/websocket/WebSocketClient.cs b/src/linker.libs/websocket/WebSocketClient.cs
index 2184cd35..468b934b 100644
--- a/src/linker.libs/websocket/WebSocketClient.cs
+++ b/src/linker.libs/websocket/WebSocketClient.cs
@@ -13,8 +13,8 @@ namespace linker.libs.websocket
{
private int bufferSize = 4 * 1024;
private SocketAsyncEventArgs readEventArgs;
- private bool connected = false;
- private bool connecSuccess = false;
+ private bool connected ;
+ private bool connecSuccess;
///
@@ -93,7 +93,7 @@ namespace linker.libs.websocket
{
if (connected)
{
- throw new Exception("connected");
+ return;
}
var socket = new Socket(ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
@@ -457,11 +457,11 @@ namespace linker.libs.websocket
///
/// 当前帧数据
///
- public WebSocketFrameInfo FrameInfo = null;
+ public WebSocketFrameInfo FrameInfo;
///
/// 当前帧的数据下标
///
- public int FrameIndex { get; set; } = 0;
+ public int FrameIndex { get; set; }
///
/// 数据帧缓存
///
diff --git a/src/linker.libs/websocket/WebSocketParser.cs b/src/linker.libs/websocket/WebSocketParser.cs
index 4f33eea4..9d3df12c 100644
--- a/src/linker.libs/websocket/WebSocketParser.cs
+++ b/src/linker.libs/websocket/WebSocketParser.cs
@@ -13,7 +13,6 @@ namespace linker.libs.websocket
///
public static class WebSocketParser
{
- private readonly static SHA1 sha1 = SHA1.Create();
private readonly static Memory magicCode = Encoding.UTF8.GetBytes("258EAFA5-E914-47DA-95CA-C5AB0DC85B11");
///
/// 构建连接数据
@@ -124,7 +123,7 @@ namespace linker.libs.websocket
Encoding.UTF8.GetBytes(key).AsMemory().CopyTo(acceptBytes);
magicCode.CopyTo(acceptBytes.AsMemory(key.Length));
- string acceptStr = Convert.ToBase64String(sha1.ComputeHash(acceptBytes, 0, keyLength));
+ string acceptStr = Convert.ToBase64String(SHA256.HashData(acceptBytes.AsSpan(0, keyLength)));
return acceptStr;
}
@@ -174,7 +173,7 @@ namespace linker.libs.websocket
{
if (remark.Mask > 0 && remark.MaskData.Length != 4)
{
- throw new Exception("mask data just 4byte");
+ throw new ArgumentException("mask data just 4byte");
}
length = 1 + 1 + remark.Data.Length;
@@ -634,13 +633,13 @@ namespace linker.libs.websocket
}
public sealed class WebsocketHeaderKey
{
- public static string Connection = "connection";
- public static string Upgrade = "upgrade";
- public static string Origin = "origin";
- public static string SecWebSocketVersion = "sec-websocket-version";
- public static string SecWebSocketKey = "sec-websocket-key";
- public static string SecWebSocketExtensions = "sec-websocket-extensions";
- public static string SecWebSocketProtocol = "sec-websocket-protocol";
- public static string SecWebSocketAccept = "sec-websocket-accept";
+ public const string Connection = "connection";
+ public const string Upgrade = "upgrade";
+ public const string Origin = "origin";
+ public const string SecWebSocketVersion = "sec-websocket-version";
+ public const string SecWebSocketKey = "sec-websocket-key";
+ public const string SecWebSocketExtensions = "sec-websocket-extensions";
+ public const string SecWebSocketProtocol = "sec-websocket-protocol";
+ public const string SecWebSocketAccept = "sec-websocket-accept";
}
}
diff --git a/src/linker.libs/websocket/WebSocketServer.cs b/src/linker.libs/websocket/WebSocketServer.cs
index f77630ae..a9f2bfaf 100644
--- a/src/linker.libs/websocket/WebSocketServer.cs
+++ b/src/linker.libs/websocket/WebSocketServer.cs
@@ -385,10 +385,10 @@ namespace linker.libs.websocket
{
public uint Id { get; set; }
public Socket Socket { get; init; }
- public bool Connected { get; set; } = false;
+ public bool Connected { get; set; }
public bool SocketConnected => Socket != null && Socket.Connected;
- private bool Closed = false;
+ private bool Closed;
public int ConnectResponse(WebsocketHeaderInfo header)
{
var data = WebSocketParser.BuildConnectResponseData(header);
@@ -466,11 +466,11 @@ namespace linker.libs.websocket
///
/// 当前帧数据
///
- public WebSocketFrameInfo FrameInfo = null;
+ public WebSocketFrameInfo FrameInfo;
///
/// 当前帧的数据下标
///
- public int FrameIndex { get; set; } = 0;
+ public int FrameIndex { get; set; }
///
/// 数据帧缓存
///
@@ -480,7 +480,7 @@ namespace linker.libs.websocket
///
public WebSocketFrameInfo.EnumOpcode Opcode { get; set; }
public byte[] PoolBuffer { get; set; }
- public bool Disposabled { get; private set; } = false;
+ public bool Disposabled { get; private set; }
public void Clear()
{
Disposabled = true;
diff --git a/src/linker.libs/winapis/ADVAPI32.cs b/src/linker.libs/winapis/ADVAPI32.cs
index e67d065a..48935e03 100644
--- a/src/linker.libs/winapis/ADVAPI32.cs
+++ b/src/linker.libs/winapis/ADVAPI32.cs
@@ -27,9 +27,9 @@ public static unsafe class ADVAPI32
}
public class USEROBJECTFLAGS
{
- public int fInherit = 0;
- public int fReserved = 0;
- public int dwFlags = 0;
+ public int fInherit ;
+ public int fReserved;
+ public int dwFlags;
}
[StructLayout(LayoutKind.Sequential)]
public struct SECURITY_ATTRIBUTES
diff --git a/src/linker.libs/winapis/MouseHelper.cs b/src/linker.libs/winapis/MouseHelper.cs
index 9ab6d612..80838223 100644
--- a/src/linker.libs/winapis/MouseHelper.cs
+++ b/src/linker.libs/winapis/MouseHelper.cs
@@ -3,7 +3,7 @@ using static linker.libs.winapis.User32;
namespace linker.libs.winapis
{
- internal class MouseHelper
+ internal sealed class MouseHelper
{
public static bool MouseMove(int x, int y)
{
diff --git a/src/linker.libs/winapis/Powrprof.cs b/src/linker.libs/winapis/Powrprof.cs
index 09f05679..782d4ef9 100644
--- a/src/linker.libs/winapis/Powrprof.cs
+++ b/src/linker.libs/winapis/Powrprof.cs
@@ -3,7 +3,7 @@ using System.Runtime.InteropServices;
namespace linker.libs.winapis
{
- internal class Powrprof
+ internal sealed class Powrprof
{
[DllImport("powrprof.dll")]
diff --git a/src/linker.libs/winapis/WTSAPI32.cs b/src/linker.libs/winapis/WTSAPI32.cs
index 0e84dff5..983af909 100644
--- a/src/linker.libs/winapis/WTSAPI32.cs
+++ b/src/linker.libs/winapis/WTSAPI32.cs
@@ -1,12 +1,11 @@
using System;
using System.Runtime.InteropServices;
-using System.Security;
namespace linker.libs.winapis;
public static class WTSAPI32
{
- public static nint WTS_CURRENT_SERVER_HANDLE = nint.Zero;
+ public static nint WTS_CURRENT_SERVER_HANDLE => nint.Zero;
public enum WTS_CONNECTSTATE_CLASS
{
diff --git a/src/linker.libs/winapis/Win32Interop.cs b/src/linker.libs/winapis/Win32Interop.cs
index 68904223..b395f04e 100644
--- a/src/linker.libs/winapis/Win32Interop.cs
+++ b/src/linker.libs/winapis/Win32Interop.cs
@@ -358,7 +358,7 @@ namespace linker.libs.winapis
{
users.Add(new WindowUserInfo { LastLogon = info.LastLogon, Sid = stringSid });
}
- NetApiBufferFree(bufptr);
+ int value = NetApiBufferFree(bufptr);
}
}
catch (Exception)
@@ -366,7 +366,7 @@ namespace linker.libs.winapis
}
finally
{
- NetApiBufferFree(bufPtr);
+ int _ = NetApiBufferFree(bufPtr);
}
}
diff --git a/src/linker.libs/winapis/Wininet.cs b/src/linker.libs/winapis/Wininet.cs
index 50ef56e5..de2bc77c 100644
--- a/src/linker.libs/winapis/Wininet.cs
+++ b/src/linker.libs/winapis/Wininet.cs
@@ -133,7 +133,7 @@ namespace linker.libs.winapis
}
MIB_TCPTABLE_OWNER_PID tcpTable = (MIB_TCPTABLE_OWNER_PID)Marshal.PtrToStructure(tcpTablePtr, typeof(MIB_TCPTABLE_OWNER_PID));
- IntPtr rowPtr = (IntPtr)((long)tcpTablePtr + Marshal.SizeOf(tcpTable.dwNumEntries));
+ IntPtr rowPtr = (nint)((long)tcpTablePtr + Marshal.SizeOf(tcpTable.dwNumEntries));
for (int i = 0; i < tcpTable.dwNumEntries; i++)
{
MIB_TCPROW_OWNER_PID row = (MIB_TCPROW_OWNER_PID)Marshal.PtrToStructure(rowPtr, typeof(MIB_TCPROW_OWNER_PID));
@@ -148,7 +148,7 @@ namespace linker.libs.winapis
connections.Add(new ConnectionInfo { LocalEndPoint = localEndPoint, RemoteEndPoint = remoteEndPoint, Pid = row.owningPid });
- rowPtr = (IntPtr)((long)rowPtr + Marshal.SizeOf(row));
+ rowPtr = (nint)((long)rowPtr + Marshal.SizeOf(row));
}
}
finally
@@ -165,7 +165,7 @@ namespace linker.libs.winapis
MIB_UDPTABLE_OWNER_PID udpTable;
uint udpTableSize = 0;
// 获取 UDP 表格大小
- GetExtendedUdpTable(IntPtr.Zero, ref udpTableSize, true, AF_INET, 5, 0);
+ uint value = GetExtendedUdpTable(IntPtr.Zero, ref udpTableSize, true, AF_INET, 5, 0);
// 分配内存
IntPtr udpTablePtr = Marshal.AllocHGlobal((int)udpTableSize);
diff --git a/src/linker.messenger.access/AccessMessenger.cs b/src/linker.messenger.access/AccessMessenger.cs
index c004ac4c..67323473 100644
--- a/src/linker.messenger.access/AccessMessenger.cs
+++ b/src/linker.messenger.access/AccessMessenger.cs
@@ -21,13 +21,13 @@ namespace linker.messenger.access
{
AccessUpdateInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
info.FromMachineId = connection.Id;
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) && signCaching.TryGet(info.ToMachineId, out SignCacheInfo cache1) && cache1.GroupId == cache.GroupId)
+ if (signCaching.TryGet(connection.Id, info.ToMachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requiestid = connection.ReceiveRequestWrap.RequestId;
sender.SendReply(new MessageRequestWrap
{
- Connection = cache1.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)AccessMessengerIds.AccessUpdate,
Payload = serializer.Serialize(info),
Timeout = 3000,
@@ -47,13 +47,13 @@ namespace linker.messenger.access
{
AccessBitsUpdateInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
info.FromMachineId = connection.Id;
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) && signCaching.TryGet(info.ToMachineId, out SignCacheInfo cache1) && cache1.GroupId == cache.GroupId)
+ if (signCaching.TryGet(connection.Id, info.ToMachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requiestid = connection.ReceiveRequestWrap.RequestId;
sender.SendReply(new MessageRequestWrap
{
- Connection = cache1.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)AccessMessengerIds.AccessStrUpdate,
Payload = serializer.Serialize(info),
Timeout = 3000,
@@ -73,11 +73,11 @@ namespace linker.messenger.access
public void SetApiPasswordForward(IConnection connection)
{
ApiPasswordUpdateInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) && signCaching.TryGet(info.MachineId, out SignCacheInfo cache1) && cache1.GroupId == cache.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
sender.SendOnly(new MessageRequestWrap
{
- Connection = cache1.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)AccessMessengerIds.SetApiPassword,
Payload = serializer.Serialize(info.Password)
});
diff --git a/src/linker.messenger.access/linker.messenger.access.csproj b/src/linker.messenger.access/linker.messenger.access.csproj
index 1ef2c49f..d94b2cbc 100644
--- a/src/linker.messenger.access/linker.messenger.access.csproj
+++ b/src/linker.messenger.access/linker.messenger.access.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger api access
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.action/linker.messenger.action.csproj b/src/linker.messenger.action/linker.messenger.action.csproj
index 17054108..724f127d 100644
--- a/src/linker.messenger.action/linker.messenger.action.csproj
+++ b/src/linker.messenger.action/linker.messenger.action.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger api action
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.api/Config.cs b/src/linker.messenger.api/Config.cs
index 17fb39f5..2b4c423c 100644
--- a/src/linker.messenger.api/Config.cs
+++ b/src/linker.messenger.api/Config.cs
@@ -137,8 +137,8 @@ namespace linker.messenger.api
[AccessDisplay("重置所有接口密码")]
SetApiPasswordOther = 42,
- [AccessDisplay("管理中继CDKEY")]
- RelayCdkey = 43,
+ [AccessDisplay("管理CDKEY")]
+ Cdkey = 43,
[AccessDisplay("管理本机防火墙")]
FirewallSelf = 44,
diff --git a/src/linker.messenger.api/linker.messenger.api.csproj b/src/linker.messenger.api/linker.messenger.api.csproj
index 3c686040..61ac5e50 100644
--- a/src/linker.messenger.api/linker.messenger.api.csproj
+++ b/src/linker.messenger.api/linker.messenger.api.csproj
@@ -17,9 +17,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger api
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.cdkey/CdkeyConfigSync.cs b/src/linker.messenger.cdkey/CdkeyConfigSync.cs
new file mode 100644
index 00000000..ee0f9f13
--- /dev/null
+++ b/src/linker.messenger.cdkey/CdkeyConfigSync.cs
@@ -0,0 +1,27 @@
+using linker.libs;
+using linker.messenger.sync;
+
+namespace linker.messenger.cdkey
+{
+ public sealed class CdkeyConfigSyncSecretKey : ISync
+ {
+ public string Name => "CdkeySecretKey";
+
+ private readonly ISerializer serializer;
+ private readonly ICdkeyClientStore cdkeyClientStore;
+ public CdkeyConfigSyncSecretKey( ISerializer serializer, ICdkeyClientStore cdkeyClientStore)
+ {
+ this.serializer = serializer;
+ this.cdkeyClientStore = cdkeyClientStore;
+ }
+ public Memory GetData()
+ {
+ return serializer.Serialize(cdkeyClientStore.SecretKey);
+ }
+
+ public void SetData(Memory data)
+ {
+ cdkeyClientStore.SetSecretKey(serializer.Deserialize(data.Span));
+ }
+ }
+}
diff --git a/src/linker.messenger.cdkey/CdkeyMessengerIds.cs b/src/linker.messenger.cdkey/CdkeyMessengerIds.cs
new file mode 100644
index 00000000..4d8f0a25
--- /dev/null
+++ b/src/linker.messenger.cdkey/CdkeyMessengerIds.cs
@@ -0,0 +1,16 @@
+namespace linker.messenger.cdkey
+{
+ public enum CdkeyMessengerIds : ushort
+ {
+ Min = 3500,
+
+ AddCdkey = 3501,
+ PageCdkey = 3502,
+ DelCdkey = 3503,
+ AccessCdkey = 3504,
+ TestCdkey = 3505,
+ ImportCdkey = 3506,
+
+ Max = 3599
+ }
+}
diff --git a/src/linker.messenger.cdkey/Entry.cs b/src/linker.messenger.cdkey/Entry.cs
new file mode 100644
index 00000000..85ea601f
--- /dev/null
+++ b/src/linker.messenger.cdkey/Entry.cs
@@ -0,0 +1,41 @@
+using linker.libs.web;
+using linker.messenger.sync;
+using Microsoft.Extensions.DependencyInjection;
+namespace linker.messenger.cdkey
+{
+ public static class Entry
+ {
+ public static ServiceCollection AddCdkeyClient(this ServiceCollection serviceCollection)
+ {
+ serviceCollection.AddSingleton();
+
+ serviceCollection.AddSingleton();
+
+ return serviceCollection;
+ }
+ public static ServiceProvider UseCdkeyClient(this ServiceProvider serviceProvider)
+ {
+ SyncTreansfer syncTransfer = serviceProvider.GetService();
+ syncTransfer.AddSyncs(new List { serviceProvider.GetService() });
+
+ linker.messenger.api.IWebServer apiServer = serviceProvider.GetService();
+ apiServer.AddPlugins(new List { serviceProvider.GetService() });
+
+ return serviceProvider;
+ }
+
+
+ public static ServiceCollection AddCdkeyServer(this ServiceCollection serviceCollection)
+ {
+ serviceCollection.AddSingleton();
+ return serviceCollection;
+ }
+ public static ServiceProvider UseCdkeyServer(this ServiceProvider serviceProvider)
+ {
+ IMessengerResolver messengerResolver = serviceProvider.GetService();
+ messengerResolver.AddMessenger(new List { serviceProvider.GetService() });
+
+ return serviceProvider;
+ }
+ }
+}
diff --git a/src/linker.messenger.cdkey/ICdkeyClientStore.cs b/src/linker.messenger.cdkey/ICdkeyClientStore.cs
new file mode 100644
index 00000000..a62b4071
--- /dev/null
+++ b/src/linker.messenger.cdkey/ICdkeyClientStore.cs
@@ -0,0 +1,15 @@
+namespace linker.messenger.cdkey
+{
+ public interface ICdkeyClientStore
+ {
+ public string SecretKey { get; }
+
+ ///
+ /// 设置密钥
+ ///
+ ///
+ ///
+ public bool SetSecretKey(string secretKey);
+ }
+
+}
diff --git a/src/linker.messenger.relay/server/IRelayServerCdkeyStore.cs b/src/linker.messenger.cdkey/ICdkeyServerStore.cs
similarity index 72%
rename from src/linker.messenger.relay/server/IRelayServerCdkeyStore.cs
rename to src/linker.messenger.cdkey/ICdkeyServerStore.cs
index ebbf27d8..0ee712f2 100644
--- a/src/linker.messenger.relay/server/IRelayServerCdkeyStore.cs
+++ b/src/linker.messenger.cdkey/ICdkeyServerStore.cs
@@ -1,16 +1,21 @@
using linker.libs;
-using System.Net;
-namespace linker.messenger.relay.server
+namespace linker.messenger.cdkey
{
- public interface IRelayServerCdkeyStore
+ public interface ICdkeyServerStore
{
+ ///
+ /// 验证密钥
+ ///
+ ///
+ ///
+ public bool ValidateSecretKey(string secretKey);
///
/// 添加
///
///
///
- public Task Add(RelayServerCdkeyStoreInfo info);
+ public Task Add(CdkeyStoreInfo info);
///
/// 删除
///
@@ -30,26 +35,26 @@ namespace linker.messenger.relay.server
///
///
///
- public Task Test(RelayServerCdkeyImportInfo info);
+ public Task Test(CdkeyImportInfo info);
///
/// 导入卡密
///
///
///
- public Task Import(RelayServerCdkeyImportInfo info);
+ public Task Import(CdkeyImportInfo info);
///
/// 获取有效的CDKEY
///
///
///
- public Task> GetAvailable(string userid);
+ public Task> GetAvailable(string userid, string type);
///
/// 获取CDKEY列表
///
///
///
- public Task> Get(List ids);
+ public Task> Get(List ids);
///
/// 消耗流量
///
@@ -65,12 +70,12 @@ namespace linker.messenger.relay.server
///
/// 分页
///
- ///
+ ///
///
- public Task Page(RelayServerCdkeyPageRequestInfo relayServerCdkeyPageRequestInfo);
+ public Task Page(CdkeyPageRequestInfo info);
}
- public sealed class RelayServerCdkeyConfigInfo
+ public sealed class CdkeyConfigInfo
{
///
/// 加解密密钥
@@ -82,7 +87,10 @@ namespace linker.messenger.relay.server
#endif
}
- public sealed partial class RelayServerCdkeyPageRequestInfo
+ ///
+ /// 搜索CDKEY分页请求信息
+ ///
+ public sealed partial class CdkeyPageRequestInfo
{
public int Page { get; set; }
public int Size { get; set; }
@@ -93,10 +101,11 @@ namespace linker.messenger.relay.server
public string OrderId { get; set; }
public string Contact { get; set; }
public string SecretKey { get; set; }
- public RelayServerCdkeyPageRequestFlag Flag { get; set; }
+ public string Type { get; set; }
+ public CdkeyPageRequestFlag Flag { get; set; }
}
[Flags]
- public enum RelayServerCdkeyPageRequestFlag
+ public enum CdkeyPageRequestFlag
{
All = 0,
TimeIn = 1,
@@ -107,21 +116,29 @@ namespace linker.messenger.relay.server
Deleted = 32,
}
-
- public sealed partial class RelayServerCdkeyPageResultInfo
+ ///
+ /// 搜索结果
+ ///
+ public sealed partial class CdkeyPageResultInfo
{
public int Page { get; set; }
public int Size { get; set; }
public int Count { get; set; }
- public List List { get; set; }
+ public List List { get; set; }
}
- public sealed partial class RelayServerCdkeyAddInfo
+ ///
+ /// 添加cdkey
+ ///
+ public sealed partial class CdkeyAddInfo
{
public string SecretKey { get; set; }
- public RelayServerCdkeyStoreInfo Data { get; set; }
+ public CdkeyStoreInfo Data { get; set; }
}
- public sealed partial class RelayServerCdkeyDelInfo
+ ///
+ /// 删除cdkey
+ ///
+ public sealed partial class CdkeyDelInfo
{
public string SecretKey { get; set; }
public string UserId { get; set; }
@@ -129,10 +146,29 @@ namespace linker.messenger.relay.server
}
///
- /// 中继CDKEY存储
+ /// cdkey
///
- public sealed partial class RelayServerCdkeyStoreInfo : RelayServerCdkeyInfo
+ public partial class CdkeyInfo
{
+ public int Id { get; set; }
+ ///
+ /// 带宽Mbps
+ ///
+ public double Bandwidth { get; set; }
+ ///
+ /// 剩余流量
+ ///
+ public long LastBytes { get; set; }
+ }
+ ///
+ /// CDKEY存储
+ ///
+ public sealed partial class CdkeyStoreInfo : CdkeyInfo
+ {
+ ///
+ /// 类别
+ ///
+ public string Type { get; set; }
///
/// 用户标识
///
@@ -194,25 +230,28 @@ namespace linker.messenger.relay.server
public bool Deleted { get; set; }
}
- public sealed partial class RelayServerCdkeyTestResultInfo
+ ///
+ /// cdkey测试结果
+ ///
+ public sealed partial class CdkeyTestResultInfo
{
- public RelayServerCdkeyOrderInfo Order { get; set; }
+ public CdkeyOrderInfo Order { get; set; }
public string Cdkey { get; set; }
public List Field { get; set; } = new List();
}
///
- /// 导入中继cdkey
+ /// 导入cdkey
///
- public sealed partial class RelayServerCdkeyImportInfo
+ public sealed partial class CdkeyImportInfo
{
public string SecretKey { get; set; }
public string UserId { get; set; }
public string Base64 { get; set; }
}
///
- /// 导入中继cdkey
+ /// cdkey订单
///
- public sealed partial class RelayServerCdkeyOrderInfo
+ public sealed partial class CdkeyOrderInfo
{
///
/// 总流量
diff --git a/src/linker.messenger.cdkey/RelayApiController.cs b/src/linker.messenger.cdkey/RelayApiController.cs
new file mode 100644
index 00000000..0937da32
--- /dev/null
+++ b/src/linker.messenger.cdkey/RelayApiController.cs
@@ -0,0 +1,160 @@
+using linker.libs;
+using linker.libs.extends;
+using linker.libs.web;
+using linker.messenger.api;
+using linker.messenger.signin;
+
+namespace linker.messenger.cdkey
+{
+ ///
+ /// 中继管理接口
+ ///
+ public sealed class CdkeyApiController : IApiController
+ {
+ private readonly SignInClientState signInClientState;
+ private readonly IMessengerSender messengerSender;
+ private readonly ISerializer serializer;
+ private readonly ISignInClientStore signInClientStore;
+ private readonly ICdkeyClientStore cdkeyClientStore;
+
+
+ public CdkeyApiController(SignInClientState signInClientState, IMessengerSender messengerSender, ISerializer serializer, ISignInClientStore signInClientStore, ICdkeyClientStore cdkeyClientStore)
+ {
+ this.signInClientState = signInClientState;
+ this.messengerSender = messengerSender;
+ this.serializer = serializer;
+ this.signInClientStore = signInClientStore;
+ this.cdkeyClientStore = cdkeyClientStore;
+ }
+
+ public string GetSecretKey(ApiControllerParamsInfo param)
+ {
+ return cdkeyClientStore.SecretKey;
+ }
+ public void SetSecretKey(ApiControllerParamsInfo param)
+ {
+ cdkeyClientStore.SetSecretKey(param.Content);
+ }
+
+
+ public async Task AccessCdkey(ApiControllerParamsInfo param)
+ {
+ var resp = await messengerSender.SendReply(new MessageRequestWrap
+ {
+ Connection = signInClientState.Connection,
+ MessengerId = (ushort)CdkeyMessengerIds.AccessCdkey,
+ Payload = serializer.Serialize(cdkeyClientStore.SecretKey)
+ }).ConfigureAwait(false);
+ return resp.Code == MessageResponeCodes.OK && resp.Data.Span.SequenceEqual(Helper.TrueArray);
+ }
+
+ [Access(AccessValue.Cdkey)]
+ public async Task AddCdkey(ApiControllerParamsInfo param)
+ {
+ CdkeyStoreInfo info = param.Content.DeJson();
+ var resp = await messengerSender.SendReply(new MessageRequestWrap
+ {
+ Connection = signInClientState.Connection,
+ MessengerId = (ushort)CdkeyMessengerIds.AddCdkey,
+ Payload = serializer.Serialize(new CdkeyAddInfo
+ {
+ Data = info,
+ SecretKey = cdkeyClientStore.SecretKey
+ })
+ }).ConfigureAwait(false);
+
+ return resp.Code == MessageResponeCodes.OK && resp.Data.Span.SequenceEqual(Helper.TrueArray);
+ }
+
+ [Access(AccessValue.Cdkey)]
+ public async Task DelCdkey(ApiControllerParamsInfo param)
+ {
+ var resp = await messengerSender.SendReply(new MessageRequestWrap
+ {
+ Connection = signInClientState.Connection,
+ MessengerId = (ushort)CdkeyMessengerIds.DelCdkey,
+ Payload = serializer.Serialize(new CdkeyDelInfo
+ {
+ Id = int.Parse(param.Content),
+ UserId = signInClientStore.Server.UserId,
+ SecretKey = cdkeyClientStore.SecretKey
+ })
+ }).ConfigureAwait(false);
+
+ return resp.Code == MessageResponeCodes.OK && resp.Data.Span.SequenceEqual(Helper.TrueArray);
+ }
+
+ [Access(AccessValue.Cdkey)]
+ public async Task PageCdkey(ApiControllerParamsInfo param)
+ {
+ CdkeyPageRequestInfo info = param.Content.DeJson();
+ info.SecretKey = cdkeyClientStore.SecretKey;
+ var resp = await messengerSender.SendReply(new MessageRequestWrap
+ {
+ Connection = signInClientState.Connection,
+ MessengerId = (ushort)CdkeyMessengerIds.PageCdkey,
+ Payload = serializer.Serialize(info)
+ }).ConfigureAwait(false);
+ if (resp.Code == MessageResponeCodes.OK)
+ {
+ return serializer.Deserialize(resp.Data.Span);
+ }
+
+ return new CdkeyPageResultInfo();
+ }
+ public async Task MyCdkey(ApiControllerParamsInfo param)
+ {
+ CdkeyPageRequestInfo info = param.Content.DeJson();
+ info.SecretKey = cdkeyClientStore.SecretKey;
+ info.UserId = signInClientStore.Server.UserId;
+ var resp = await messengerSender.SendReply(new MessageRequestWrap
+ {
+ Connection = signInClientState.Connection,
+ MessengerId = (ushort)CdkeyMessengerIds.PageCdkey,
+ Payload = serializer.Serialize(info)
+ }).ConfigureAwait(false);
+ if (resp.Code == MessageResponeCodes.OK)
+ {
+ return serializer.Deserialize(resp.Data.Span);
+ }
+
+ return new CdkeyPageResultInfo();
+ }
+ public async Task TestCdkey(ApiControllerParamsInfo param)
+ {
+ CdkeyImportInfo info = param.Content.DeJson();
+ info.SecretKey = cdkeyClientStore.SecretKey;
+ info.UserId = signInClientStore.Server.UserId;
+ var resp = await messengerSender.SendReply(new MessageRequestWrap
+ {
+ Connection = signInClientState.Connection,
+ MessengerId = (ushort)CdkeyMessengerIds.TestCdkey,
+ Payload = serializer.Serialize(info)
+ }).ConfigureAwait(false);
+ if (resp.Code == MessageResponeCodes.OK)
+ {
+ return serializer.Deserialize(resp.Data.Span);
+ }
+
+ return new CdkeyTestResultInfo();
+ }
+
+ public async Task ImportCdkey(ApiControllerParamsInfo param)
+ {
+ CdkeyImportInfo info = param.Content.DeJson();
+ info.SecretKey = cdkeyClientStore.SecretKey;
+ info.UserId = signInClientStore.Server.UserId;
+ var resp = await messengerSender.SendReply(new MessageRequestWrap
+ {
+ Connection = signInClientState.Connection,
+ MessengerId = (ushort)CdkeyMessengerIds.ImportCdkey,
+ Payload = serializer.Serialize(info)
+ }).ConfigureAwait(false);
+ if (resp.Code == MessageResponeCodes.OK)
+ {
+ return serializer.Deserialize(resp.Data.Span);
+ }
+ return "Network";
+ }
+ }
+}
diff --git a/src/linker.messenger.cdkey/RelayMessenger.cs b/src/linker.messenger.cdkey/RelayMessenger.cs
new file mode 100644
index 00000000..ffaba740
--- /dev/null
+++ b/src/linker.messenger.cdkey/RelayMessenger.cs
@@ -0,0 +1,146 @@
+using linker.libs;
+using linker.messenger.signin;
+
+namespace linker.messenger.cdkey
+{
+ ///
+ /// 中继服务端
+ ///
+ public class CdkeyServerMessenger : IMessenger
+ {
+ private readonly IMessengerSender messengerSender;
+ private readonly SignInServerCaching signCaching;
+ private readonly ISerializer serializer;
+ private readonly ICdkeyServerStore cdkeyStore;
+
+ public CdkeyServerMessenger(IMessengerSender messengerSender, SignInServerCaching signCaching, ISerializer serializer, ICdkeyServerStore cdkeyStore)
+ {
+ this.messengerSender = messengerSender;
+ this.signCaching = signCaching;
+ this.serializer = serializer;
+ this.cdkeyStore = cdkeyStore;
+ }
+ ///
+ /// 添加CDKEY
+ ///
+ ///
+ [MessengerId((ushort)CdkeyMessengerIds.AddCdkey)]
+ public async Task AddCdkey(IConnection connection)
+ {
+ CdkeyAddInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) == false)
+ {
+ connection.Write(Helper.FalseArray);
+ return;
+ }
+ if (cdkeyStore.ValidateSecretKey(info.SecretKey) == false)
+ {
+ connection.Write(Helper.FalseArray);
+ return;
+ }
+
+ await cdkeyStore.Add(info.Data).ConfigureAwait(false);
+ connection.Write(Helper.TrueArray);
+ }
+
+ ///
+ /// 删除Cdkey
+ ///
+ ///
+ ///
+ [MessengerId((ushort)CdkeyMessengerIds.DelCdkey)]
+ public async Task DelCdkey(IConnection connection)
+ {
+ CdkeyDelInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) == false)
+ {
+ connection.Write(Helper.FalseArray);
+ return;
+ }
+ if (cdkeyStore.ValidateSecretKey(info.SecretKey))
+ {
+ await cdkeyStore.Del(info.Id).ConfigureAwait(false);
+ }
+ else
+ {
+ await cdkeyStore.Del(info.Id, info.UserId).ConfigureAwait(false);
+ }
+ connection.Write(Helper.TrueArray);
+ }
+
+ ///
+ /// 查询CDKEY
+ ///
+ ///
+ ///
+ [MessengerId((ushort)CdkeyMessengerIds.PageCdkey)]
+ public async Task PageCdkey(IConnection connection)
+ {
+ CdkeyPageRequestInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) == false)
+ {
+ connection.Write(serializer.Serialize(new CdkeyPageResultInfo { }));
+ return;
+ }
+ if (cdkeyStore.ValidateSecretKey(info.SecretKey) == false && string.IsNullOrWhiteSpace(info.UserId))
+ {
+ connection.Write(serializer.Serialize(new CdkeyPageResultInfo { }));
+ return;
+ }
+
+ var page = await cdkeyStore.Page(info).ConfigureAwait(false);
+
+ connection.Write(serializer.Serialize(page));
+ }
+
+
+ ///
+ /// 测试cdkey
+ ///
+ ///
+ ///
+ [MessengerId((ushort)CdkeyMessengerIds.TestCdkey)]
+ public async Task TestCdkey(IConnection connection)
+ {
+ CdkeyImportInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) == false)
+ {
+ connection.Write(serializer.Serialize(new CdkeyTestResultInfo { }));
+ return;
+ }
+ if (cdkeyStore.ValidateSecretKey(info.SecretKey) == false)
+ {
+ connection.Write(serializer.Serialize(new CdkeyTestResultInfo { }));
+ return;
+ }
+ CdkeyTestResultInfo test = await cdkeyStore.Test(info).ConfigureAwait(false);
+ connection.Write(serializer.Serialize(test));
+ }
+
+ ///
+ /// 导入cdkey
+ ///
+ ///
+ ///
+ [MessengerId((ushort)CdkeyMessengerIds.ImportCdkey)]
+ public async Task ImportCdkey(IConnection connection)
+ {
+ CdkeyImportInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) == false)
+ {
+ connection.Write(Helper.FalseArray);
+ return;
+ }
+ string result = await cdkeyStore.Import(info).ConfigureAwait(false);
+ connection.Write(serializer.Serialize(result));
+ }
+
+
+ [MessengerId((ushort)CdkeyMessengerIds.AccessCdkey)]
+ public void AccessCdkey(IConnection connection)
+ {
+ string key = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ connection.Write(cdkeyStore.ValidateSecretKey(key) ? Helper.TrueArray : Helper.FalseArray);
+ }
+ }
+}
diff --git a/src/linker.messenger.cdkey/linker.messenger.cdkey.csproj b/src/linker.messenger.cdkey/linker.messenger.cdkey.csproj
new file mode 100644
index 00000000..069f4ecb
--- /dev/null
+++ b/src/linker.messenger.cdkey/linker.messenger.cdkey.csproj
@@ -0,0 +1,47 @@
+
+
+
+
+ net8.0
+ enable
+ disable
+ true
+ false
+ true
+ True
+ linker messenger cdkey
+ snltty
+ snltty
+ linker messenger cdkey
+ snltty
+ https://github.com/snltty/linker
+ https://github.com/snltty/linker
+ linker messenger cdkey
+ 1.8.3
+ 1.8.3
+ 1.8.3
+
+
+
+ full
+ true
+
+
+ full
+ true
+ True
+
+
+ embedded
+
+
+ embedded
+
+
+
+
+
+
+
+
+
diff --git a/src/linker.messenger.channel/linker.messenger.channel.csproj b/src/linker.messenger.channel/linker.messenger.channel.csproj
index 98284d29..c9a64e39 100644
--- a/src/linker.messenger.channel/linker.messenger.channel.csproj
+++ b/src/linker.messenger.channel/linker.messenger.channel.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger channel
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.decenter/linker.messenger.decenter.csproj b/src/linker.messenger.decenter/linker.messenger.decenter.csproj
index 78374b79..b22c6225 100644
--- a/src/linker.messenger.decenter/linker.messenger.decenter.csproj
+++ b/src/linker.messenger.decenter/linker.messenger.decenter.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger decenter
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.decenter/messenger/DecenterMessenger.cs b/src/linker.messenger.decenter/messenger/DecenterMessenger.cs
index 7ff68bef..dc89ec71 100644
--- a/src/linker.messenger.decenter/messenger/DecenterMessenger.cs
+++ b/src/linker.messenger.decenter/messenger/DecenterMessenger.cs
@@ -48,7 +48,7 @@ namespace linker.messenger.decenter
}
Memory memory = serializer.Serialize(info);
- List caches = signCaching.Get(signin.GroupId).Where(c => c.MachineId != connection.Id && c.Connected).ToList();
+ List caches = signCaching.Get(signin).Where(c => c.MachineId != connection.Id && c.Connected).ToList();
List> tasks = caches.Select(c => sender.SendOnly(new MessageRequestWrap
{
Connection = c.Connection,
@@ -69,7 +69,7 @@ namespace linker.messenger.decenter
return;
}
- IEnumerable> data = dic.Where(c => c.Key != connection.Id && c.Value.SignIn.GroupId == signin.GroupId).Select(c => c.Value.Data);
+ IEnumerable> data = dic.Where(c => c.Key != connection.Id && c.Value.SignIn.SameGroup(signin)).Select(c => c.Value.Data);
connection.Write(serializer.Serialize(data));
}
@@ -85,7 +85,7 @@ namespace linker.messenger.decenter
return;
}
- IEnumerable> data = dic.Where(c => c.Key != connection.Id && c.Value.SignIn.GroupId == signin.GroupId).Select(c => c.Value.Data);
+ IEnumerable> data = dic.Where(c => c.Key != connection.Id && c.Value.SignIn.SameGroup(signin)).Select(c => c.Value.Data);
connection.Write(serializer.Serialize(new DecenterPullPageResultInfo
{
Count = data.Count(),
@@ -103,7 +103,7 @@ namespace linker.messenger.decenter
{
uint requiestid = connection.ReceiveRequestWrap.RequestId;
- List caches = signCaching.Get(cache.GroupId).Where(c => c.MachineId != connection.Id && c.Connected).ToList();
+ List caches = signCaching.Get(cache).Where(c => c.MachineId != connection.Id && c.Connected).ToList();
List> tasks = new List>();
foreach (SignCacheInfo item in caches)
{
diff --git a/src/linker.messenger.entry/LinkerMessengerEntry.cs b/src/linker.messenger.entry/LinkerMessengerEntry.cs
index f12f1aed..2187a9a5 100644
--- a/src/linker.messenger.entry/LinkerMessengerEntry.cs
+++ b/src/linker.messenger.entry/LinkerMessengerEntry.cs
@@ -22,6 +22,7 @@ using linker.messenger.plan;
using System.Text.Json;
using linker.messenger.firewall;
using linker.messenger.wakeup;
+using linker.messenger.cdkey;
namespace linker.messenger.entry
{
@@ -67,6 +68,8 @@ namespace linker.messenger.entry
.AddPcpClient().AddPcpServer()
//中继
.AddRelayClient().AddRelayServer()
+ //cdkey
+ .AddCdkeyClient().AddCdkeyServer()
//服务器穿透
.AddSForwardClient().AddSForwardServer()
//登录
@@ -97,11 +100,11 @@ namespace linker.messenger.entry
//防火墙
.AddFirewallClient().AddFirewallServer()
-
+
//唤醒
.AddWakeupClient().AddWakeupServer();
-
+
}
///
/// 注入
@@ -182,7 +185,8 @@ namespace linker.messenger.entry
if ((modules & ExcludeModule.Wakeup) != ExcludeModule.Wakeup)
serviceProvider.UseWakeupServer();
- serviceProvider.UseAccessServer().UseDecenterServer().UsePcpServer().UseRelayServer()
+ serviceProvider.UseAccessServer().UseDecenterServer().UsePcpServer()
+ .UseRelayServer().UseCdkeyServer()
.UseSignInServer().UseSyncServer().UseTunnelServer().UseFlowServer();
serviceProvider.UseListen();
@@ -214,7 +218,9 @@ namespace linker.messenger.entry
serviceProvider.UseWakeupClient();
- serviceProvider.UseExRoute().UseAccessClient().UseDecenterClient().UsePcpClient().UseRelayClient().UseSyncClient().UseTunnelClient().UseFlowClient();
+ serviceProvider.UseExRoute().UseAccessClient().UseDecenterClient().UsePcpClient()
+ .UseRelayClient().UseCdkeyClient()
+ .UseSyncClient().UseTunnelClient().UseFlowClient();
serviceProvider.UseSignInClient();
diff --git a/src/linker.messenger.entry/linker.messenger.entry.csproj b/src/linker.messenger.entry/linker.messenger.entry.csproj
index 0e56536d..f475336b 100644
--- a/src/linker.messenger.entry/linker.messenger.entry.csproj
+++ b/src/linker.messenger.entry/linker.messenger.entry.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger entry
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
@@ -40,6 +40,7 @@
+
diff --git a/src/linker.messenger.exroute/linker.messenger.exroute.csproj b/src/linker.messenger.exroute/linker.messenger.exroute.csproj
index 73974f31..09fd7a9a 100644
--- a/src/linker.messenger.exroute/linker.messenger.exroute.csproj
+++ b/src/linker.messenger.exroute/linker.messenger.exroute.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger exroute
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.firewall/FirewallMessenger.cs b/src/linker.messenger.firewall/FirewallMessenger.cs
index e9d81399..b2905bcb 100644
--- a/src/linker.messenger.firewall/FirewallMessenger.cs
+++ b/src/linker.messenger.firewall/FirewallMessenger.cs
@@ -25,12 +25,12 @@ namespace linker.messenger.firewall
public void GetForward(IConnection connection)
{
FirewallSearchForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
sender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)FirewallMessengerIds.Get,
Payload = serializer.Serialize(info.Data)
}).ContinueWith(async (result) =>
@@ -60,12 +60,12 @@ namespace linker.messenger.firewall
public async Task AddForward(IConnection connection)
{
FirewallAddForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await sender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)FirewallMessengerIds.Add,
Payload = serializer.Serialize(info.Data)
}).ConfigureAwait(false);
@@ -79,12 +79,12 @@ namespace linker.messenger.firewall
public async Task RemoveForward(IConnection connection)
{
FirewallRemoveForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await sender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)FirewallMessengerIds.Remove,
Payload = serializer.Serialize(info.Id)
}).ConfigureAwait(false);
@@ -100,12 +100,12 @@ namespace linker.messenger.firewall
public async Task StateForward(IConnection connection)
{
FirewallStateForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await sender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)FirewallMessengerIds.State,
Payload = serializer.Serialize(info.State)
}).ConfigureAwait(false);
diff --git a/src/linker.messenger.firewall/linker.messenger.firewall.csproj b/src/linker.messenger.firewall/linker.messenger.firewall.csproj
index 9494af72..2ef2df19 100644
--- a/src/linker.messenger.firewall/linker.messenger.firewall.csproj
+++ b/src/linker.messenger.firewall/linker.messenger.firewall.csproj
@@ -17,9 +17,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger firewall
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.flow/linker.messenger.flow.csproj b/src/linker.messenger.flow/linker.messenger.flow.csproj
index 5cae9fbd..4dd91875 100644
--- a/src/linker.messenger.flow/linker.messenger.flow.csproj
+++ b/src/linker.messenger.flow/linker.messenger.flow.csproj
@@ -17,9 +17,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger flow
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.flow/messenger/FlowMessenger.cs b/src/linker.messenger.flow/messenger/FlowMessenger.cs
index e5b301fd..2bee7a0a 100644
--- a/src/linker.messenger.flow/messenger/FlowMessenger.cs
+++ b/src/linker.messenger.flow/messenger/FlowMessenger.cs
@@ -121,12 +121,12 @@ namespace linker.messenger.flow.messenger
public void StopwatchForward(IConnection connection)
{
string machineid = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(machineid, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheTo.GroupId == cacheFrom.GroupId)
+ if (signCaching.TryGet(connection.Id,machineid, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
_ = messengerSender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)FlowMessengerIds.Stopwatch
}).ContinueWith(async (result) =>
{
diff --git a/src/linker.messenger.forward/ForwardMessenger.cs b/src/linker.messenger.forward/ForwardMessenger.cs
index 43ac6233..25f4f807 100644
--- a/src/linker.messenger.forward/ForwardMessenger.cs
+++ b/src/linker.messenger.forward/ForwardMessenger.cs
@@ -24,12 +24,12 @@ namespace linker.messenger.forward
public void GetForward(IConnection connection)
{
string machineId = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(machineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id,machineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
sender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)ForwardMessengerIds.Get,
Payload = connection.ReceiveRequestWrap.Payload
}).ContinueWith(async (result) =>
@@ -55,12 +55,12 @@ namespace linker.messenger.forward
public async Task AddForward(IConnection connection)
{
ForwardAddForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await sender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)ForwardMessengerIds.Add,
Payload = serializer.Serialize(info.Data)
}).ConfigureAwait(false);
@@ -74,12 +74,12 @@ namespace linker.messenger.forward
public async Task RemoveForward(IConnection connection)
{
ForwardRemoveForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await sender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)ForwardMessengerIds.Remove,
Payload = serializer.Serialize(info.Id)
}).ConfigureAwait(false);
@@ -91,11 +91,11 @@ namespace linker.messenger.forward
public async Task SubTestForward(IConnection connection)
{
string machineid = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(machineid, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id,machineid, out SignCacheInfo from, out SignCacheInfo to))
{
await sender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)ForwardMessengerIds.SubTest
}).ConfigureAwait(false);
}
@@ -106,20 +106,23 @@ namespace linker.messenger.forward
{
Dictionary> tests = serializer.Deserialize>>(connection.ReceiveRequestWrap.Payload.Span);
- var from = signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom);
+ if(signCaching.TryGet(connection.Id, out SignCacheInfo from) == false)
+ {
+ return;
+ }
uint requiestid = connection.ReceiveRequestWrap.RequestId;
var tasks = new List();
foreach (var item in tests)
{
- if (signCaching.TryGet(item.Key, out SignCacheInfo cacheTo) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(item.Key, out SignCacheInfo to) && from.SameGroup(to))
{
tasks.Add(new TaskInfo
{
MachineId = item.Key,
Task = sender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)ForwardMessengerIds.Test,
Payload = serializer.Serialize(item.Value),
Timeout = 3000
diff --git a/src/linker.messenger.forward/linker.messenger.forward.csproj b/src/linker.messenger.forward/linker.messenger.forward.csproj
index 88fe4971..25d46b73 100644
--- a/src/linker.messenger.forward/linker.messenger.forward.csproj
+++ b/src/linker.messenger.forward/linker.messenger.forward.csproj
@@ -17,9 +17,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger forward
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.listen/linker.messenger.listen.csproj b/src/linker.messenger.listen/linker.messenger.listen.csproj
index 1e91c034..140b4210 100644
--- a/src/linker.messenger.listen/linker.messenger.listen.csproj
+++ b/src/linker.messenger.listen/linker.messenger.listen.csproj
@@ -17,9 +17,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger listen
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.logger/Entry.cs b/src/linker.messenger.logger/Entry.cs
index c9f95843..9afc75ed 100644
--- a/src/linker.messenger.logger/Entry.cs
+++ b/src/linker.messenger.logger/Entry.cs
@@ -43,9 +43,9 @@ namespace linker.messenger.logger
private static void LoggerConsole()
{
- if (Directory.Exists(Path.Join(Helper.currentDirectory, "logs")) == false)
+ if (Directory.Exists(Path.Join(Helper.CurrentDirectory, "logs")) == false)
{
- Directory.CreateDirectory(Path.Join(Helper.currentDirectory, "logs"));
+ Directory.CreateDirectory(Path.Join(Helper.CurrentDirectory, "logs"));
}
LoggerHelper.Instance.OnLogger += (model) =>
{
@@ -72,7 +72,7 @@ namespace linker.messenger.logger
Console.ForegroundColor = currentForeColor;
try
{
- using StreamWriter sw = File.AppendText(Path.Join(Helper.currentDirectory, "logs", $"{DateTime.Now:yyyy-MM-dd}.log"));
+ using StreamWriter sw = File.AppendText(Path.Join(Helper.CurrentDirectory, "logs", $"{DateTime.Now:yyyy-MM-dd}.log"));
sw.WriteLine(line);
sw.Flush();
sw.Close();
@@ -84,7 +84,7 @@ namespace linker.messenger.logger
};
TimerHelper.SetIntervalLong(() =>
{
- string[] files = Directory.GetFiles(Path.Combine(Helper.currentDirectory, "logs")).OrderBy(c => c).ToArray();
+ string[] files = Directory.GetFiles(Path.Combine(Helper.CurrentDirectory, "logs")).OrderBy(c => c).ToArray();
for (int i = 0; i < files.Length - 180; i++)
{
try
diff --git a/src/linker.messenger.logger/linker.messenger.logger.csproj b/src/linker.messenger.logger/linker.messenger.logger.csproj
index 606110f5..66fddd3d 100644
--- a/src/linker.messenger.logger/linker.messenger.logger.csproj
+++ b/src/linker.messenger.logger/linker.messenger.logger.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger logger
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.pcp/PcpMessenger.cs b/src/linker.messenger.pcp/PcpMessenger.cs
index e583966c..3982a0e9 100644
--- a/src/linker.messenger.pcp/PcpMessenger.cs
+++ b/src/linker.messenger.pcp/PcpMessenger.cs
@@ -50,18 +50,18 @@ namespace linker.messenger.pcp
[MessengerId((ushort)PcpMessengerIds.BeginForward)]
public async Task BeginForward(IConnection connection)
{
- TunnelTransportInfo tunnelTransportInfo = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ TunnelTransportInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(tunnelTransportInfo.Remote.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.Remote.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
- tunnelTransportInfo.Local.MachineName = cacheFrom.MachineName;
- tunnelTransportInfo.Remote.MachineName = cacheTo.MachineName;
+ info.Local.MachineName = from.MachineName;
+ info.Remote.MachineName = to.MachineName;
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)PcpMessengerIds.Begin,
- Payload = serializer.Serialize(tunnelTransportInfo)
+ Payload = serializer.Serialize(info)
}).ConfigureAwait(false);
connection.Write(Helper.TrueArray);
}
@@ -71,16 +71,16 @@ namespace linker.messenger.pcp
[MessengerId((ushort)PcpMessengerIds.FailForward)]
public async Task FailForward(IConnection connection)
{
- TunnelTransportInfo tunnelTransportInfo = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(tunnelTransportInfo.Remote.MachineId, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ TunnelTransportInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, info.Remote.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
- tunnelTransportInfo.Local.MachineName = cache1.MachineName;
- tunnelTransportInfo.Remote.MachineName = cache.MachineName;
+ info.Local.MachineName = from.MachineName;
+ info.Remote.MachineName = to.MachineName;
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)PcpMessengerIds.Fail,
- Payload = serializer.Serialize(tunnelTransportInfo)
+ Payload = serializer.Serialize(info)
}).ConfigureAwait(false);
}
}
@@ -89,16 +89,16 @@ namespace linker.messenger.pcp
[MessengerId((ushort)PcpMessengerIds.SuccessForward)]
public async Task SuccessForward(IConnection connection)
{
- TunnelTransportInfo tunnelTransportInfo = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(tunnelTransportInfo.Remote.MachineId, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ TunnelTransportInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, info.Remote.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
- tunnelTransportInfo.Local.MachineName = cache1.MachineName;
- tunnelTransportInfo.Remote.MachineName = cache.MachineName;
+ info.Local.MachineName = from.MachineName;
+ info.Remote.MachineName = to.MachineName;
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)PcpMessengerIds.Success,
- Payload = serializer.Serialize(tunnelTransportInfo)
+ Payload = serializer.Serialize(info)
}).ConfigureAwait(false);
}
}
diff --git a/src/linker.messenger.pcp/linker.messenger.pcp.csproj b/src/linker.messenger.pcp/linker.messenger.pcp.csproj
index 8378ae66..d0b2b3a4 100644
--- a/src/linker.messenger.pcp/linker.messenger.pcp.csproj
+++ b/src/linker.messenger.pcp/linker.messenger.pcp.csproj
@@ -17,9 +17,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger pcp
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.plan/PlanMessenger.cs b/src/linker.messenger.plan/PlanMessenger.cs
index 39088eb8..49de7e33 100644
--- a/src/linker.messenger.plan/PlanMessenger.cs
+++ b/src/linker.messenger.plan/PlanMessenger.cs
@@ -70,12 +70,12 @@ namespace linker.messenger.plan
public async Task GetForward(IConnection connection)
{
PlanGetInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
- {
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
+ {
uint requestid = connection.ReceiveRequestWrap.RequestId;
await messengerSender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)PlanMessengerIds.Get,
Payload = connection.ReceiveRequestWrap.Payload
}).ContinueWith(async (result) =>
@@ -97,12 +97,12 @@ namespace linker.messenger.plan
public async Task AddForward(IConnection connection)
{
PlanAddInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await messengerSender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)PlanMessengerIds.Add,
Payload = connection.ReceiveRequestWrap.Payload
}).ContinueWith(async (result) =>
@@ -124,12 +124,12 @@ namespace linker.messenger.plan
public async Task RemoveForward(IConnection connection)
{
PlanRemoveInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await messengerSender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)PlanMessengerIds.Remove,
Payload = connection.ReceiveRequestWrap.Payload
}).ContinueWith(async (result) =>
diff --git a/src/linker.messenger.plan/linker.messenger.plan.csproj b/src/linker.messenger.plan/linker.messenger.plan.csproj
index 3c14c8c7..0ac0cf37 100644
--- a/src/linker.messenger.plan/linker.messenger.plan.csproj
+++ b/src/linker.messenger.plan/linker.messenger.plan.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger plan
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.relay/client/RelayApiController.cs b/src/linker.messenger.relay/client/RelayApiController.cs
index cb04e585..c2fe4a5c 100644
--- a/src/linker.messenger.relay/client/RelayApiController.cs
+++ b/src/linker.messenger.relay/client/RelayApiController.cs
@@ -77,126 +77,6 @@ namespace linker.messenger.relay
return true;
}
-
- public async Task AccessCdkey(ApiControllerParamsInfo param)
- {
- var resp = await messengerSender.SendReply(new MessageRequestWrap
- {
- Connection = signInClientState.Connection,
- MessengerId = (ushort)RelayMessengerIds.AccessCdkey,
- Payload = serializer.Serialize(relayClientStore.Server.SecretKey)
- }).ConfigureAwait(false);
- return resp.Code == MessageResponeCodes.OK && resp.Data.Span.SequenceEqual(Helper.TrueArray);
- }
-
- [Access(AccessValue.RelayCdkey)]
- public async Task AddCdkey(ApiControllerParamsInfo param)
- {
- RelayServerCdkeyStoreInfo info = param.Content.DeJson();
- var resp = await messengerSender.SendReply(new MessageRequestWrap
- {
- Connection = signInClientState.Connection,
- MessengerId = (ushort)RelayMessengerIds.AddCdkey,
- Payload = serializer.Serialize(new RelayServerCdkeyAddInfo
- {
- Data = info,
- SecretKey = relayClientStore.Server.SecretKey
- })
- }).ConfigureAwait(false);
-
- return resp.Code == MessageResponeCodes.OK && resp.Data.Span.SequenceEqual(Helper.TrueArray);
- }
-
- [Access(AccessValue.RelayCdkey)]
- public async Task DelCdkey(ApiControllerParamsInfo param)
- {
- var resp = await messengerSender.SendReply(new MessageRequestWrap
- {
- Connection = signInClientState.Connection,
- MessengerId = (ushort)RelayMessengerIds.DelCdkey,
- Payload = serializer.Serialize(new RelayServerCdkeyDelInfo
- {
- Id = int.Parse(param.Content),
- UserId = signInClientStore.Server.UserId,
- SecretKey = relayClientStore.Server.SecretKey
- })
- }).ConfigureAwait(false);
-
- return resp.Code == MessageResponeCodes.OK && resp.Data.Span.SequenceEqual(Helper.TrueArray);
- }
-
- [Access(AccessValue.RelayCdkey)]
- public async Task PageCdkey(ApiControllerParamsInfo param)
- {
- RelayServerCdkeyPageRequestInfo info = param.Content.DeJson();
- info.SecretKey = relayClientStore.Server.SecretKey;
- var resp = await messengerSender.SendReply(new MessageRequestWrap
- {
- Connection = signInClientState.Connection,
- MessengerId = (ushort)RelayMessengerIds.PageCdkey,
- Payload = serializer.Serialize(info)
- }).ConfigureAwait(false);
- if (resp.Code == MessageResponeCodes.OK)
- {
- return serializer.Deserialize(resp.Data.Span);
- }
-
- return new RelayServerCdkeyPageResultInfo();
- }
- public async Task MyCdkey(ApiControllerParamsInfo param)
- {
- RelayServerCdkeyPageRequestInfo info = param.Content.DeJson();
- info.SecretKey = relayClientStore.Server.SecretKey;
- info.UserId = signInClientStore.Server.UserId;
- var resp = await messengerSender.SendReply(new MessageRequestWrap
- {
- Connection = signInClientState.Connection,
- MessengerId = (ushort)RelayMessengerIds.PageCdkey,
- Payload = serializer.Serialize(info)
- }).ConfigureAwait(false);
- if (resp.Code == MessageResponeCodes.OK)
- {
- return serializer.Deserialize(resp.Data.Span);
- }
-
- return new RelayServerCdkeyPageResultInfo();
- }
- public async Task TestCdkey(ApiControllerParamsInfo param)
- {
- RelayServerCdkeyImportInfo info = param.Content.DeJson();
- info.SecretKey = relayClientStore.Server.SecretKey;
- info.UserId = signInClientStore.Server.UserId;
- var resp = await messengerSender.SendReply(new MessageRequestWrap
- {
- Connection = signInClientState.Connection,
- MessengerId = (ushort)RelayMessengerIds.TestCdkey,
- Payload = serializer.Serialize(info)
- }).ConfigureAwait(false);
- if (resp.Code == MessageResponeCodes.OK)
- {
- return serializer.Deserialize(resp.Data.Span);
- }
-
- return new RelayServerCdkeyTestResultInfo();
- }
-
- public async Task ImportCdkey(ApiControllerParamsInfo param)
- {
- RelayServerCdkeyImportInfo info = param.Content.DeJson();
- info.SecretKey = relayClientStore.Server.SecretKey;
- info.UserId = signInClientStore.Server.UserId;
- var resp = await messengerSender.SendReply(new MessageRequestWrap
- {
- Connection = signInClientState.Connection,
- MessengerId = (ushort)RelayMessengerIds.ImportCdkey,
- Payload = serializer.Serialize(info)
- }).ConfigureAwait(false);
- if (resp.Code == MessageResponeCodes.OK)
- {
- return serializer.Deserialize(resp.Data.Span);
- }
- return "Network";
- }
public async Task UpdateNode(ApiControllerParamsInfo param)
{
RelayServerNodeUpdateInfo info = param.Content.DeJson();
diff --git a/src/linker.messenger.relay/linker.messenger.relay.csproj b/src/linker.messenger.relay/linker.messenger.relay.csproj
index 0f8a483b..547558e9 100644
--- a/src/linker.messenger.relay/linker.messenger.relay.csproj
+++ b/src/linker.messenger.relay/linker.messenger.relay.csproj
@@ -18,9 +18,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger relay
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
@@ -43,6 +43,7 @@
+
diff --git a/src/linker.messenger.relay/messenger/RelayMessenger.cs b/src/linker.messenger.relay/messenger/RelayMessenger.cs
index 8bce3e11..265422af 100644
--- a/src/linker.messenger.relay/messenger/RelayMessenger.cs
+++ b/src/linker.messenger.relay/messenger/RelayMessenger.cs
@@ -5,7 +5,7 @@ using linker.messenger.relay.client;
using linker.messenger.relay.server;
using linker.messenger.signin;
using linker.messenger.relay.server.validator;
-using System.Reflection;
+using linker.messenger.cdkey;
namespace linker.messenger.relay.messenger
{
@@ -46,18 +46,18 @@ namespace linker.messenger.relay.messenger
private readonly RelayServerMasterTransfer relayServerTransfer;
private readonly RelayServerValidatorTransfer relayValidatorTransfer;
private readonly ISerializer serializer;
- private readonly IRelayServerCdkeyStore relayServerCdkeyStore;
+ private readonly ICdkeyServerStore cdkeyStore;
private readonly IRelayServerStore relayServerStore;
private readonly RelayServerNodeTransfer relayServerNodeTransfer;
- public RelayServerMessenger(IMessengerSender messengerSender, SignInServerCaching signCaching, ISerializer serializer, RelayServerMasterTransfer relayServerTransfer, RelayServerValidatorTransfer relayValidatorTransfer, IRelayServerCdkeyStore relayServerCdkeyStore, IRelayServerStore relayServerStore, RelayServerNodeTransfer relayServerNodeTransfer)
+ public RelayServerMessenger(IMessengerSender messengerSender, SignInServerCaching signCaching, ISerializer serializer, RelayServerMasterTransfer relayServerTransfer, RelayServerValidatorTransfer relayValidatorTransfer, ICdkeyServerStore cdkeyStore, IRelayServerStore relayServerStore, RelayServerNodeTransfer relayServerNodeTransfer)
{
this.messengerSender = messengerSender;
this.signCaching = signCaching;
this.relayServerTransfer = relayServerTransfer;
this.relayValidatorTransfer = relayValidatorTransfer;
this.serializer = serializer;
- this.relayServerCdkeyStore = relayServerCdkeyStore;
+ this.cdkeyStore = cdkeyStore;
this.relayServerStore = relayServerStore;
this.relayServerNodeTransfer = relayServerNodeTransfer;
}
@@ -113,25 +113,25 @@ namespace linker.messenger.relay.messenger
public async Task RelayAsk(IConnection connection)
{
RelayInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) == false || signCaching.TryGet(info.RemoteMachineId, out SignCacheInfo cacheTo) == false || cacheFrom.GroupId != cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.RemoteMachineId, out SignCacheInfo from, out SignCacheInfo to))
{
connection.Write(serializer.Serialize(new RelayAskResultInfo { }));
return;
}
- info.RemoteMachineId = cacheTo.MachineId;
- info.FromMachineId = cacheFrom.MachineId;
- info.RemoteMachineName = cacheTo.MachineName;
- info.FromMachineName = cacheFrom.MachineName;
+ info.RemoteMachineId = to.MachineId;
+ info.FromMachineId = from.MachineId;
+ info.RemoteMachineName = to.MachineName;
+ info.FromMachineName = from.MachineName;
RelayAskResultInfo result = new RelayAskResultInfo();
- string error = await relayValidatorTransfer.Validate(info, cacheFrom, cacheTo).ConfigureAwait(false);
+ string error = await relayValidatorTransfer.Validate(info, from, to).ConfigureAwait(false);
bool validated = string.IsNullOrWhiteSpace(error);
result.Nodes = relayServerTransfer.GetNodes(validated).Select(c => (RelayServerNodeReportInfo)c).ToList();
if (result.Nodes.Count > 0)
{
- result.FlowingId = relayServerTransfer.AddRelay(cacheFrom.MachineId, cacheFrom.MachineName, cacheTo.MachineId, cacheTo.MachineName, cacheFrom.GroupId, validated, new List());
+ result.FlowingId = relayServerTransfer.AddRelay(from.MachineId, from.MachineName, to.MachineId, to.MachineName, from.GroupId, validated, []);
}
connection.Write(serializer.Serialize(result));
@@ -140,29 +140,29 @@ namespace linker.messenger.relay.messenger
public async Task RelayAsk170(IConnection connection)
{
RelayInfo170 info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) == false || signCaching.TryGet(info.RemoteMachineId, out SignCacheInfo cacheTo) == false || cacheFrom.GroupId != cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.RemoteMachineId, out SignCacheInfo from, out SignCacheInfo to))
{
connection.Write(serializer.Serialize(new RelayAskResultInfo170 { }));
return;
}
- info.RemoteMachineId = cacheTo.MachineId;
- info.FromMachineId = cacheFrom.MachineId;
- info.RemoteMachineName = cacheTo.MachineName;
- info.FromMachineName = cacheFrom.MachineName;
+ info.RemoteMachineId = to.MachineId;
+ info.FromMachineId = from.MachineId;
+ info.RemoteMachineName = to.MachineName;
+ info.FromMachineName = from.MachineName;
RelayAskResultInfo170 result = new RelayAskResultInfo170();
- string error = await relayValidatorTransfer.Validate(info, cacheFrom, cacheTo).ConfigureAwait(false);
+ string error = await relayValidatorTransfer.Validate(info, from, to).ConfigureAwait(false);
bool validated = string.IsNullOrWhiteSpace(error);
result.Nodes = relayServerTransfer.GetNodes(validated);
if (result.Nodes.Count > 0)
{
- List cdkeys = info.UseCdkey
- ? (await relayServerCdkeyStore.GetAvailable(info.UserId).ConfigureAwait(false)).Select(c => new RelayServerCdkeyInfo { Bandwidth = c.Bandwidth, Id = c.Id, LastBytes = c.LastBytes }).ToList()
- : new List();
+ List cdkeys = info.UseCdkey
+ ? (await cdkeyStore.GetAvailable(info.UserId, "Relay").ConfigureAwait(false)).Select(c => new CdkeyInfo { Bandwidth = c.Bandwidth, Id = c.Id, LastBytes = c.LastBytes }).ToList()
+ : [];
- result.FlowingId = relayServerTransfer.AddRelay(cacheFrom.MachineId, cacheFrom.MachineName, cacheTo.MachineId, cacheTo.MachineName, cacheFrom.GroupId, validated, cdkeys);
+ result.FlowingId = relayServerTransfer.AddRelay(from.MachineId, from.MachineName, to.MachineId, to.MachineName, from.GroupId, validated, cdkeys);
}
connection.Write(serializer.Serialize(result));
@@ -193,7 +193,7 @@ namespace linker.messenger.relay.messenger
}
public async Task RelayForward(IConnection connection, RelayInfo info, ushort id, Func data)
{
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) == false || signCaching.TryGet(info.RemoteMachineId, out SignCacheInfo cacheTo) == false || cacheFrom.GroupId != cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.RemoteMachineId, out SignCacheInfo from, out SignCacheInfo to))
{
connection.Write(Helper.FalseArray);
return;
@@ -202,11 +202,11 @@ namespace linker.messenger.relay.messenger
//需要验证
if (relayServerTransfer.NodeValidate(info.NodeId))
{
- info.RemoteMachineId = cacheTo.MachineId;
- info.FromMachineId = cacheFrom.MachineId;
- info.RemoteMachineName = cacheTo.MachineName;
- info.FromMachineName = cacheFrom.MachineName;
- string result = await relayValidatorTransfer.Validate(info, cacheFrom, cacheTo).ConfigureAwait(false);
+ info.RemoteMachineId = to.MachineId;
+ info.FromMachineId = from.MachineId;
+ info.RemoteMachineName = to.MachineName;
+ info.FromMachineName = from.MachineName;
+ string result = await relayValidatorTransfer.Validate(info, from, to).ConfigureAwait(false);
if (string.IsNullOrWhiteSpace(result) == false)
{
connection.Write(Helper.FalseArray);
@@ -214,16 +214,16 @@ namespace linker.messenger.relay.messenger
}
}
- info.RemoteMachineId = cacheFrom.MachineId;
- info.FromMachineId = cacheTo.MachineId;
- info.RemoteMachineName = cacheFrom.MachineName;
- info.FromMachineName = cacheTo.MachineName;
+ info.RemoteMachineId = from.MachineId;
+ info.FromMachineId = to.MachineId;
+ info.RemoteMachineName = from.MachineName;
+ info.FromMachineName = to.MachineName;
try
{
uint requiestid = connection.ReceiveRequestWrap.RequestId;
_ = messengerSender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)RelayMessengerIds.Relay,
Payload = data()
}).ContinueWith(async (result) =>
@@ -326,135 +326,6 @@ namespace linker.messenger.relay.messenger
relayServerNodeTransfer.UpdateLastBytes(info);
}
-
-
- ///
- /// 检查权限
- ///
- ///
- ///
- [MessengerId((ushort)RelayMessengerIds.AccessCdkey)]
- public void AccessCdkey(IConnection connection)
- {
- string secretKey = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- connection.Write(relayServerStore.ValidateSecretKey(secretKey) ? Helper.TrueArray : Helper.FalseArray);
- }
- ///
- /// 添加CDKEY
- ///
- ///
- [MessengerId((ushort)RelayMessengerIds.AddCdkey)]
- public async Task AddCdkey(IConnection connection)
- {
- RelayServerCdkeyAddInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) == false)
- {
- connection.Write(Helper.FalseArray);
- return;
- }
- if (relayServerStore.ValidateSecretKey(info.SecretKey)==false)
- {
- connection.Write(Helper.FalseArray);
- return;
- }
-
- await relayServerCdkeyStore.Add(info.Data).ConfigureAwait(false);
- connection.Write(Helper.TrueArray);
- }
-
- ///
- /// 删除Cdkey
- ///
- ///
- ///
- [MessengerId((ushort)RelayMessengerIds.DelCdkey)]
- public async Task DelCdkey(IConnection connection)
- {
- RelayServerCdkeyDelInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) == false)
- {
- connection.Write(Helper.FalseArray);
- return;
- }
- if (relayServerStore.ValidateSecretKey(info.SecretKey))
- {
- await relayServerCdkeyStore.Del(info.Id).ConfigureAwait(false);
- }
- else
- {
- await relayServerCdkeyStore.Del(info.Id, info.UserId).ConfigureAwait(false);
- }
- connection.Write(Helper.TrueArray);
- }
-
- ///
- /// 查询CDKEY
- ///
- ///
- ///
- [MessengerId((ushort)RelayMessengerIds.PageCdkey)]
- public async Task PageCdkey(IConnection connection)
- {
- RelayServerCdkeyPageRequestInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) == false)
- {
- connection.Write(serializer.Serialize(new RelayServerCdkeyPageResultInfo { }));
- return;
- }
- if (relayServerStore.ValidateSecretKey(info.SecretKey)==false && string.IsNullOrWhiteSpace(info.UserId))
- {
- connection.Write(serializer.Serialize(new RelayServerCdkeyPageResultInfo { }));
- return;
- }
-
- var page = await relayServerCdkeyStore.Page(info).ConfigureAwait(false);
-
- connection.Write(serializer.Serialize(page));
- }
-
-
- ///
- /// 测试cdkey
- ///
- ///
- ///
- [MessengerId((ushort)RelayMessengerIds.TestCdkey)]
- public async Task TestCdkey(IConnection connection)
- {
- RelayServerCdkeyImportInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) == false)
- {
- connection.Write(serializer.Serialize(new RelayServerCdkeyTestResultInfo { }));
- return;
- }
- if (relayServerStore.ValidateSecretKey(info.SecretKey) == false)
- {
- connection.Write(serializer.Serialize(new RelayServerCdkeyTestResultInfo { }));
- return;
- }
- RelayServerCdkeyTestResultInfo test = await relayServerCdkeyStore.Test(info).ConfigureAwait(false);
- connection.Write(serializer.Serialize(test));
- }
-
- ///
- /// 导入cdkey
- ///
- ///
- ///
- [MessengerId((ushort)RelayMessengerIds.ImportCdkey)]
- public async Task ImportCdkey(IConnection connection)
- {
- RelayServerCdkeyImportInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) == false)
- {
- connection.Write(Helper.FalseArray);
- return;
- }
- string result = await relayServerCdkeyStore.Import(info).ConfigureAwait(false);
- connection.Write(serializer.Serialize(result));
- }
-
-
[MessengerId((ushort)RelayMessengerIds.CheckKey)]
public void CheckKey(IConnection connection)
{
diff --git a/src/linker.messenger.relay/messenger/RelayMessengerIds.cs b/src/linker.messenger.relay/messenger/RelayMessengerIds.cs
index 168db1ca..c2fec99f 100644
--- a/src/linker.messenger.relay/messenger/RelayMessengerIds.cs
+++ b/src/linker.messenger.relay/messenger/RelayMessengerIds.cs
@@ -15,19 +15,11 @@
NodeDelay = 2106,
NodeDelayForward = 2107,
- AddCdkey = 2108,
- PageCdkey = 2109,
- DelCdkey = 2110,
- AccessCdkey = 2111,
-
NodeGetCache = 2112,
NodeReport = 2113,
TrafficReport = 2114,
- TestCdkey = 2115,
- ImportCdkey = 2116,
-
UpdateNode = 2117,
UpdateNodeForward = 2118,
diff --git a/src/linker.messenger.relay/server/RelayServerMasterTransfer.cs b/src/linker.messenger.relay/server/RelayServerMasterTransfer.cs
index dd237c76..4f66adbb 100644
--- a/src/linker.messenger.relay/server/RelayServerMasterTransfer.cs
+++ b/src/linker.messenger.relay/server/RelayServerMasterTransfer.cs
@@ -1,6 +1,6 @@
using linker.libs;
-using linker.libs.extends;
using linker.libs.timer;
+using linker.messenger.cdkey;
using linker.messenger.relay.messenger;
using linker.messenger.relay.server.caching;
using System.Collections.Concurrent;
@@ -22,11 +22,11 @@ namespace linker.messenger.relay.server
private readonly IRelayServerCaching relayCaching;
private readonly ISerializer serializer;
private readonly IRelayServerMasterStore relayServerMasterStore;
- private readonly IRelayServerCdkeyStore relayServerCdkeyStore;
+ private readonly ICdkeyServerStore relayServerCdkeyStore;
private readonly IMessengerSender messengerSender;
- public RelayServerMasterTransfer(IRelayServerCaching relayCaching, ISerializer serializer, IRelayServerMasterStore relayServerMasterStore, IRelayServerCdkeyStore relayServerCdkeyStore, IMessengerSender messengerSender)
+ public RelayServerMasterTransfer(IRelayServerCaching relayCaching, ISerializer serializer, IRelayServerMasterStore relayServerMasterStore, ICdkeyServerStore relayServerCdkeyStore, IMessengerSender messengerSender)
{
this.relayCaching = relayCaching;
this.serializer = serializer;
@@ -37,7 +37,7 @@ namespace linker.messenger.relay.server
}
- public ulong AddRelay(string fromid, string fromName, string toid, string toName, string groupid, bool validated, List cdkeys)
+ public ulong AddRelay(string fromid, string fromName, string toid, string toName, string groupid, bool validated, List cdkeys)
{
ulong flowingId = Interlocked.Increment(ref relayFlowingId);
diff --git a/src/linker.messenger.relay/server/RelayServerNodeTransfer.cs b/src/linker.messenger.relay/server/RelayServerNodeTransfer.cs
index d47479d2..71055919 100644
--- a/src/linker.messenger.relay/server/RelayServerNodeTransfer.cs
+++ b/src/linker.messenger.relay/server/RelayServerNodeTransfer.cs
@@ -1,6 +1,7 @@
using linker.libs;
using linker.libs.extends;
using linker.libs.timer;
+using linker.messenger.cdkey;
using linker.messenger.relay.messenger;
using linker.tunnel.connection;
using System.Buffers;
@@ -239,7 +240,7 @@ namespace linker.messenger.relay.server
return;
}
- RelayServerCdkeyInfo currentCdkey = relayCache.Cache.Cdkey.Where(c => c.LastBytes > 0).OrderByDescending(c => c.Bandwidth).FirstOrDefault();
+ CdkeyInfo currentCdkey = relayCache.Cache.Cdkey.Where(c => c.LastBytes > 0).OrderByDescending(c => c.Bandwidth).FirstOrDefault();
//有cdkey,且带宽大于节点带宽,就用cdkey的带宽
if (currentCdkey != null && (currentCdkey.Bandwidth == 0 || currentCdkey.Bandwidth >= node.MaxBandwidth || node.MaxGbTotalLastBytes == 0))
{
@@ -259,11 +260,11 @@ namespace linker.messenger.relay.server
{
if (dic.Count == 0) return;
- Dictionary cdkeys = trafficDict.Values.SelectMany(c => c.Cache.Cdkey).ToDictionary(c => c.Id, c => c);
+ Dictionary cdkeys = trafficDict.Values.SelectMany(c => c.Cache.Cdkey).ToDictionary(c => c.Id, c => c);
//更新剩余流量
foreach (KeyValuePair item in dic)
{
- if (cdkeys.TryGetValue(item.Key, out RelayServerCdkeyInfo info))
+ if (cdkeys.TryGetValue(item.Key, out CdkeyInfo info))
{
info.LastBytes = item.Value;
}
diff --git a/src/linker.messenger.relay/server/RelayServerResolver.cs b/src/linker.messenger.relay/server/RelayServerResolver.cs
index eb62f4cd..ee298f96 100644
--- a/src/linker.messenger.relay/server/RelayServerResolver.cs
+++ b/src/linker.messenger.relay/server/RelayServerResolver.cs
@@ -7,6 +7,7 @@ using linker.libs;
using System;
using System.Text;
using linker.libs.timer;
+using linker.messenger.cdkey;
namespace linker.messenger.relay.server
{
@@ -207,7 +208,7 @@ namespace linker.messenger.relay.server
{
await socket.SendAsync(new byte[] { 0 }).ConfigureAwait(false);
-
+
relayDic.TryAdd(relayCache.FlowId, tcs);
Socket answerSocket = await tcs.Task.WaitAsync(TimeSpan.FromMilliseconds(15000)).ConfigureAwait(false);
@@ -418,7 +419,7 @@ namespace linker.messenger.relay.server
public string GroupId { get; set; }
public bool Validated { get; set; }
- public List Cdkey { get; set; }
+ public List Cdkey { get; set; }
}
public sealed class RelayTrafficCacheInfo
{
@@ -426,19 +427,7 @@ namespace linker.messenger.relay.server
public long SendtCache;
public RelaySpeedLimit Limit { get; set; }
public RelayCacheInfo Cache { get; set; }
- public RelayServerCdkeyInfo CurrentCdkey { get; set; }
- }
- public partial class RelayServerCdkeyInfo
- {
- public int Id { get; set; }
- ///
- /// 带宽Mbps
- ///
- public double Bandwidth { get; set; }
- ///
- /// 剩余流量
- ///
- public long LastBytes { get; set; }
+ public CdkeyInfo CurrentCdkey { get; set; }
}
public sealed partial class RelayMessageInfo
diff --git a/src/linker.messenger.serializer.memorypack/CdkeySerializer.cs b/src/linker.messenger.serializer.memorypack/CdkeySerializer.cs
new file mode 100644
index 00000000..51b94786
--- /dev/null
+++ b/src/linker.messenger.serializer.memorypack/CdkeySerializer.cs
@@ -0,0 +1,635 @@
+using linker.messenger.cdkey;
+using MemoryPack;
+
+namespace linker.messenger.serializer.memorypack
+{
+
+ [MemoryPackable]
+ public readonly partial struct SerializableCdkeyInfo
+ {
+ [MemoryPackIgnore]
+ public readonly CdkeyInfo info;
+
+ [MemoryPackInclude]
+ int Id => info.Id;
+
+ [MemoryPackInclude]
+ double Bandwidth => info.Bandwidth;
+ [MemoryPackInclude]
+ long LastBytes => info.LastBytes;
+
+ [MemoryPackConstructor]
+ SerializableCdkeyInfo(int id, double bandwidth, long lastBytes)
+ {
+ var info = new CdkeyInfo
+ {
+ Id = id,
+ Bandwidth = bandwidth,
+ LastBytes = lastBytes
+ };
+ this.info = info;
+ }
+
+ public SerializableCdkeyInfo(CdkeyInfo info)
+ {
+ this.info = info;
+ }
+ }
+ public class CdkeyInfoFormatter : MemoryPackFormatter
+ {
+ public override void Serialize(ref MemoryPackWriter writer, scoped ref CdkeyInfo value)
+ {
+ if (value == null)
+ {
+ writer.WriteNullObjectHeader();
+ return;
+ }
+
+ writer.WritePackable(new SerializableCdkeyInfo(value));
+ }
+
+ public override void Deserialize(ref MemoryPackReader reader, scoped ref CdkeyInfo value)
+ {
+ if (reader.PeekIsNull())
+ {
+ reader.Advance(1); // skip null block
+ value = null;
+ return;
+ }
+
+ var wrapped = reader.ReadPackable();
+ value = wrapped.info;
+ }
+ }
+
+
+ [MemoryPackable]
+ public readonly partial struct SerializableCdkeyStoreInfo
+ {
+ [MemoryPackIgnore]
+ public readonly CdkeyStoreInfo info;
+
+ [MemoryPackInclude]
+ double Bandwidth => info.Bandwidth;
+ [MemoryPackInclude]
+ long LastBytes => info.LastBytes;
+
+ [MemoryPackInclude]
+ int Id => info.Id;
+ [MemoryPackInclude]
+ string UserId => info.UserId;
+
+ [MemoryPackInclude]
+ DateTime AddTime => info.AddTime;
+ [MemoryPackInclude]
+ DateTime StartTime => info.StartTime;
+ [MemoryPackInclude]
+ DateTime EndTime => info.EndTime;
+ [MemoryPackInclude]
+ DateTime UseTime => info.UseTime;
+
+ [MemoryPackInclude]
+ long MaxBytes => info.MaxBytes;
+
+ [MemoryPackInclude]
+ double CostPrice => info.CostPrice;
+ [MemoryPackInclude]
+ double Price => info.Price;
+ [MemoryPackInclude]
+ double UserPrice => info.UserPrice;
+ [MemoryPackInclude]
+ double PayPrice => info.PayPrice;
+ [MemoryPackInclude]
+ string Remark => info.Remark;
+ [MemoryPackInclude]
+ string OrderId => info.OrderId;
+ [MemoryPackInclude]
+ string Contact => info.Contact;
+ [MemoryPackInclude]
+ bool Deleted => info.Deleted;
+
+ [MemoryPackInclude]
+ string Type => info.Type;
+
+ [MemoryPackConstructor]
+ SerializableCdkeyStoreInfo(double bandwidth, long lastBytes, int id, string userid, DateTime addTime, DateTime startTime, DateTime endTime, DateTime useTime, long maxBytes, double costPrice, double price, double userPrice, double payPrice, string remark, string orderId, string contact, bool deleted, string type)
+ {
+ var info = new CdkeyStoreInfo
+ {
+ Bandwidth = bandwidth,
+ LastBytes = lastBytes,
+ Id = id,
+ UserId = userid,
+ AddTime = addTime,
+ StartTime = startTime,
+ EndTime = endTime,
+ UseTime = useTime,
+ MaxBytes = maxBytes,
+ CostPrice = costPrice,
+ Price = price,
+ UserPrice = userPrice,
+ PayPrice = payPrice,
+ Remark = remark,
+ OrderId = orderId,
+ Contact = contact,
+ Deleted = deleted,
+ Type = type
+ };
+ this.info = info;
+ }
+
+ public SerializableCdkeyStoreInfo(CdkeyStoreInfo info)
+ {
+ this.info = info;
+ }
+ }
+ public class CdkeyStoreInfoFormatter : MemoryPackFormatter
+ {
+ public override void Serialize(ref MemoryPackWriter writer, scoped ref CdkeyStoreInfo value)
+ {
+ if (value == null)
+ {
+ writer.WriteNullObjectHeader();
+ return;
+ }
+
+ writer.WritePackable(new SerializableCdkeyStoreInfo(value));
+ }
+
+ public override void Deserialize(ref MemoryPackReader reader, scoped ref CdkeyStoreInfo value)
+ {
+ if (reader.PeekIsNull())
+ {
+ reader.Advance(1); // skip null block
+ value = null;
+ return;
+ }
+
+ var wrapped = reader.ReadPackable();
+ value = wrapped.info;
+ }
+ }
+
+
+
+ [MemoryPackable]
+ public readonly partial struct SerializableCdkeyAddInfo
+ {
+ [MemoryPackIgnore]
+ public readonly CdkeyAddInfo info;
+
+ [MemoryPackInclude]
+ string SecretKey => info.SecretKey;
+ [MemoryPackInclude, MemoryPackAllowSerialize]
+ CdkeyStoreInfo Data => info.Data;
+
+ [MemoryPackConstructor]
+ SerializableCdkeyAddInfo(string secretKey, CdkeyStoreInfo data)
+ {
+ var info = new CdkeyAddInfo
+ {
+ SecretKey = secretKey,
+ Data = data
+ };
+ this.info = info;
+ }
+
+ public SerializableCdkeyAddInfo(CdkeyAddInfo info)
+ {
+ this.info = info;
+ }
+ }
+ public class CdkeyAddInfoFormatter : MemoryPackFormatter
+ {
+ public override void Serialize(ref MemoryPackWriter writer, scoped ref CdkeyAddInfo value)
+ {
+ if (value == null)
+ {
+ writer.WriteNullObjectHeader();
+ return;
+ }
+
+ writer.WritePackable(new SerializableCdkeyAddInfo(value));
+ }
+
+ public override void Deserialize(ref MemoryPackReader reader, scoped ref CdkeyAddInfo value)
+ {
+ if (reader.PeekIsNull())
+ {
+ reader.Advance(1); // skip null block
+ value = null;
+ return;
+ }
+
+ var wrapped = reader.ReadPackable();
+ value = wrapped.info;
+ }
+ }
+
+
+ [MemoryPackable]
+ public readonly partial struct SerializableCdkeyDelInfo
+ {
+ [MemoryPackIgnore]
+ public readonly CdkeyDelInfo info;
+
+ [MemoryPackInclude]
+ string SecretKey => info.SecretKey;
+ [MemoryPackInclude]
+ string UserId => info.UserId;
+ [MemoryPackInclude]
+ int Id => info.Id;
+
+ [MemoryPackConstructor]
+ SerializableCdkeyDelInfo(string secretKey, string userid, int id)
+ {
+ var info = new CdkeyDelInfo
+ {
+ SecretKey = secretKey,
+ UserId = userid,
+ Id = id
+ };
+ this.info = info;
+ }
+
+ public SerializableCdkeyDelInfo(CdkeyDelInfo info)
+ {
+ this.info = info;
+ }
+ }
+ public class CdkeyDelInfoFormatter : MemoryPackFormatter
+ {
+ public override void Serialize(ref MemoryPackWriter writer, scoped ref CdkeyDelInfo value)
+ {
+ if (value == null)
+ {
+ writer.WriteNullObjectHeader();
+ return;
+ }
+
+ writer.WritePackable(new SerializableCdkeyDelInfo(value));
+ }
+
+ public override void Deserialize(ref MemoryPackReader reader, scoped ref CdkeyDelInfo value)
+ {
+ if (reader.PeekIsNull())
+ {
+ reader.Advance(1); // skip null block
+ value = null;
+ return;
+ }
+
+ var wrapped = reader.ReadPackable();
+ value = wrapped.info;
+ }
+ }
+
+
+ [MemoryPackable]
+ public readonly partial struct SerializableCdkeyPageRequestInfo
+ {
+ [MemoryPackIgnore]
+ public readonly CdkeyPageRequestInfo info;
+
+ [MemoryPackInclude]
+ int Page => info.Page;
+ [MemoryPackInclude]
+ int Size => info.Size;
+ [MemoryPackInclude]
+ string Order => info.Order;
+ [MemoryPackInclude]
+ string Sort => info.Sort;
+
+ [MemoryPackInclude]
+ string UserId => info.UserId;
+ [MemoryPackInclude]
+ string Remark => info.Remark;
+ [MemoryPackInclude]
+ string OrderId => info.OrderId;
+ [MemoryPackInclude]
+ string Contact => info.Contact;
+ [MemoryPackInclude]
+ string SecretKey => info.SecretKey;
+ [MemoryPackInclude]
+ CdkeyPageRequestFlag Flag => info.Flag;
+
+ [MemoryPackInclude]
+ string Type => info.Type;
+
+ [MemoryPackConstructor]
+ SerializableCdkeyPageRequestInfo(int page, int size, string order, string sort, string userid, string remark, string orderid, string contact, string secretKey, CdkeyPageRequestFlag flag, string type)
+ {
+ var info = new CdkeyPageRequestInfo
+ {
+ Sort = sort,
+ Order = order,
+ Size = size,
+ Page = page,
+ UserId = userid,
+ Remark = remark,
+ OrderId = orderid,
+ Contact = contact,
+ SecretKey = secretKey,
+ Flag = flag,
+ Type = type
+ };
+ this.info = info;
+ }
+
+ public SerializableCdkeyPageRequestInfo(CdkeyPageRequestInfo info)
+ {
+ this.info = info;
+ }
+ }
+ public class CdkeyPageRequestInfoFormatter : MemoryPackFormatter
+ {
+ public override void Serialize(ref MemoryPackWriter writer, scoped ref CdkeyPageRequestInfo value)
+ {
+ if (value == null)
+ {
+ writer.WriteNullObjectHeader();
+ return;
+ }
+
+ writer.WritePackable(new SerializableCdkeyPageRequestInfo(value));
+ }
+
+ public override void Deserialize(ref MemoryPackReader reader, scoped ref CdkeyPageRequestInfo value)
+ {
+ if (reader.PeekIsNull())
+ {
+ reader.Advance(1); // skip null block
+ value = null;
+ return;
+ }
+
+ var wrapped = reader.ReadPackable();
+ value = wrapped.info;
+ }
+ }
+
+
+
+ [MemoryPackable]
+ public readonly partial struct SerializableCdkeyPageResultInfo
+ {
+ [MemoryPackIgnore]
+ public readonly CdkeyPageResultInfo info;
+
+ [MemoryPackInclude]
+ int Page => info.Page;
+ [MemoryPackInclude]
+ int Size => info.Size;
+ [MemoryPackInclude]
+ int Count => info.Count;
+ [MemoryPackInclude]
+ List List => info.List;
+
+ [MemoryPackConstructor]
+ SerializableCdkeyPageResultInfo(int page, int size, int count, List list)
+ {
+ var info = new CdkeyPageResultInfo
+ {
+ Count = count,
+ List = list,
+ Size = size,
+ Page = page
+ };
+ this.info = info;
+ }
+
+ public SerializableCdkeyPageResultInfo(CdkeyPageResultInfo info)
+ {
+ this.info = info;
+ }
+ }
+ public class CdkeyPageResultInfoFormatter : MemoryPackFormatter
+ {
+ public override void Serialize(ref MemoryPackWriter writer, scoped ref CdkeyPageResultInfo value)
+ {
+ if (value == null)
+ {
+ writer.WriteNullObjectHeader();
+ return;
+ }
+
+ writer.WritePackable(new SerializableCdkeyPageResultInfo(value));
+ }
+
+ public override void Deserialize(ref MemoryPackReader reader, scoped ref CdkeyPageResultInfo value)
+ {
+ if (reader.PeekIsNull())
+ {
+ reader.Advance(1); // skip null block
+ value = null;
+ return;
+ }
+
+ var wrapped = reader.ReadPackable();
+ value = wrapped.info;
+ }
+ }
+
+
+
+ [MemoryPackable]
+ public readonly partial struct SerializableCdkeyImportInfo
+ {
+ [MemoryPackIgnore]
+ public readonly CdkeyImportInfo info;
+
+ [MemoryPackInclude]
+ string SecretKey => info.SecretKey;
+ [MemoryPackInclude]
+ string UserId => info.UserId;
+ [MemoryPackInclude]
+ string Base64 => info.Base64;
+
+ [MemoryPackConstructor]
+ SerializableCdkeyImportInfo(string secretKey, string userid, string base64)
+ {
+ var info = new CdkeyImportInfo
+ {
+ SecretKey = secretKey,
+ UserId = userid,
+ Base64 = base64
+ };
+ this.info = info;
+ }
+
+ public SerializableCdkeyImportInfo(CdkeyImportInfo info)
+ {
+ this.info = info;
+ }
+ }
+ public class CdkeyImportInfoFormatter : MemoryPackFormatter
+ {
+ public override void Serialize(ref MemoryPackWriter writer, scoped ref CdkeyImportInfo value)
+ {
+ if (value == null)
+ {
+ writer.WriteNullObjectHeader();
+ return;
+ }
+
+ writer.WritePackable(new SerializableCdkeyImportInfo(value));
+ }
+
+ public override void Deserialize(ref MemoryPackReader reader, scoped ref CdkeyImportInfo value)
+ {
+ if (reader.PeekIsNull())
+ {
+ reader.Advance(1); // skip null block
+ value = null;
+ return;
+ }
+
+ var wrapped = reader.ReadPackable();
+ value = wrapped.info;
+ }
+ }
+
+
+ [MemoryPackable]
+ public readonly partial struct SerializableCdkeyTestResultInfo
+ {
+ [MemoryPackIgnore]
+ public readonly CdkeyTestResultInfo info;
+
+ [MemoryPackInclude, MemoryPackAllowSerialize]
+ CdkeyOrderInfo Order => info.Order;
+ [MemoryPackInclude]
+ string Cdkey => info.Cdkey;
+ [MemoryPackInclude]
+ List Field => info.Field;
+
+ [MemoryPackConstructor]
+ SerializableCdkeyTestResultInfo(CdkeyOrderInfo order, string cdkey, List field)
+ {
+ var info = new CdkeyTestResultInfo
+ {
+ Order = order,
+ Cdkey = cdkey,
+ Field = field
+ };
+ this.info = info;
+ }
+
+ public SerializableCdkeyTestResultInfo(CdkeyTestResultInfo info)
+ {
+ this.info = info;
+ }
+ }
+ public class CdkeyTestResultInfoFormatter : MemoryPackFormatter
+ {
+ public override void Serialize(ref MemoryPackWriter writer, scoped ref CdkeyTestResultInfo value)
+ {
+ if (value == null)
+ {
+ writer.WriteNullObjectHeader();
+ return;
+ }
+
+ writer.WritePackable(new SerializableCdkeyTestResultInfo(value));
+ }
+
+ public override void Deserialize(ref MemoryPackReader reader, scoped ref CdkeyTestResultInfo value)
+ {
+ if (reader.PeekIsNull())
+ {
+ reader.Advance(1); // skip null block
+ value = null;
+ return;
+ }
+
+ var wrapped = reader.ReadPackable();
+ value = wrapped.info;
+ }
+ }
+
+ [MemoryPackable]
+ public readonly partial struct SerializableCdkeyOrderInfo
+ {
+ [MemoryPackIgnore]
+ public readonly CdkeyOrderInfo info;
+
+ [MemoryPackInclude]
+ int GB => info.GB;
+ [MemoryPackInclude]
+ int Speed => info.Speed;
+ [MemoryPackInclude]
+ string Time => info.Time;
+ [MemoryPackInclude]
+ string WidgetUserId => info.WidgetUserId;
+ [MemoryPackInclude]
+ string OrderId => info.OrderId;
+ [MemoryPackInclude]
+ string Contact => info.Contact;
+
+ [MemoryPackInclude]
+ double CostPrice => info.CostPrice;
+ [MemoryPackInclude]
+ double Price => info.Price;
+ [MemoryPackInclude]
+ double UserPrice => info.UserPrice;
+ [MemoryPackInclude]
+ double PayPrice => info.PayPrice;
+ [MemoryPackInclude]
+ int Count => info.Count;
+ [MemoryPackInclude]
+ string Type => info.Type;
+
+
+ [MemoryPackConstructor]
+ SerializableCdkeyOrderInfo(int gb, int speed, string time, string widgetUserId, string orderId, string contact, double costPrice, double price, double userPrice, double payPrice, int count, string type)
+ {
+ var info = new CdkeyOrderInfo
+ {
+ GB = gb,
+ Speed = speed,
+ Time = time,
+ WidgetUserId = widgetUserId,
+ OrderId = orderId,
+ Contact = contact,
+ CostPrice = costPrice,
+ Price = price,
+ UserPrice = userPrice,
+ PayPrice = payPrice,
+ Count = count,
+ Type = type
+ };
+ this.info = info;
+ }
+
+ public SerializableCdkeyOrderInfo(CdkeyOrderInfo info)
+ {
+ this.info = info;
+ }
+ }
+ public class CdkeyOrderInfoFormatter : MemoryPackFormatter
+ {
+ public override void Serialize(ref MemoryPackWriter writer, scoped ref CdkeyOrderInfo value)
+ {
+ if (value == null)
+ {
+ writer.WriteNullObjectHeader();
+ return;
+ }
+
+ writer.WritePackable(new SerializableCdkeyOrderInfo(value));
+ }
+
+ public override void Deserialize(ref MemoryPackReader reader, scoped ref CdkeyOrderInfo value)
+ {
+ if (reader.PeekIsNull())
+ {
+ reader.Advance(1); // skip null block
+ value = null;
+ return;
+ }
+
+ var wrapped = reader.ReadPackable();
+ value = wrapped.info;
+ }
+ }
+}
diff --git a/src/linker.messenger.serializer.memorypack/Entry.cs b/src/linker.messenger.serializer.memorypack/Entry.cs
index c0697abf..12ba8e39 100644
--- a/src/linker.messenger.serializer.memorypack/Entry.cs
+++ b/src/linker.messenger.serializer.memorypack/Entry.cs
@@ -66,20 +66,21 @@ namespace linker.messenger.serializer.memorypack
MemoryPackFormatterProvider.Register(new RelayAskResultInfo170Formatter());
MemoryPackFormatterProvider.Register(new RelayCacheInfoFormatter());
MemoryPackFormatterProvider.Register(new RelayMessageInfoFormatter());
- MemoryPackFormatterProvider.Register(new RelayServerCdkeyInfoFormatter());
- MemoryPackFormatterProvider.Register(new RelayServerCdkeyStoreInfoFormatter());
- MemoryPackFormatterProvider.Register(new RelayServerCdkeyPageRequestInfoFormatter());
- MemoryPackFormatterProvider.Register(new RelayServerCdkeyPageResultInfoFormatter());
- MemoryPackFormatterProvider.Register(new RelayServerCdkeyAddInfoFormatter());
- MemoryPackFormatterProvider.Register(new RelayServerCdkeyDelInfoFormatter());
+
MemoryPackFormatterProvider.Register(new RelayTrafficUpdateInfoFormatter());
- MemoryPackFormatterProvider.Register(new RelayServerCdkeyImportInfoFormatter());
- MemoryPackFormatterProvider.Register(new RelayServerCdkeyTestResultInfoFormatter());
- MemoryPackFormatterProvider.Register(new RelayServerCdkeyOrderInfoFormatter());
-
MemoryPackFormatterProvider.Register(new RelayServerNodeUpdateInfoFormatter());
MemoryPackFormatterProvider.Register(new RelayServerNodeUpdateWrapInfoFormatter());
+ MemoryPackFormatterProvider.Register(new CdkeyInfoFormatter());
+ MemoryPackFormatterProvider.Register(new CdkeyStoreInfoFormatter());
+ MemoryPackFormatterProvider.Register(new CdkeyPageRequestInfoFormatter());
+ MemoryPackFormatterProvider.Register(new CdkeyPageResultInfoFormatter());
+ MemoryPackFormatterProvider.Register(new CdkeyAddInfoFormatter());
+ MemoryPackFormatterProvider.Register(new CdkeyDelInfoFormatter());
+ MemoryPackFormatterProvider.Register(new CdkeyImportInfoFormatter());
+ MemoryPackFormatterProvider.Register(new CdkeyTestResultInfoFormatter());
+ MemoryPackFormatterProvider.Register(new CdkeyOrderInfoFormatter());
+
MemoryPackFormatterProvider.Register(new AccessUpdateInfoFormatter());
MemoryPackFormatterProvider.Register(new AccessBitsUpdateInfoFormatter());
diff --git a/src/linker.messenger.serializer.memorypack/RelaySerializer.cs b/src/linker.messenger.serializer.memorypack/RelaySerializer.cs
index 12b5a261..1e9cf2b3 100644
--- a/src/linker.messenger.serializer.memorypack/RelaySerializer.cs
+++ b/src/linker.messenger.serializer.memorypack/RelaySerializer.cs
@@ -1,9 +1,9 @@
-using linker.messenger.relay.client.transport;
+using linker.messenger.cdkey;
+using linker.messenger.relay.client.transport;
using linker.messenger.relay.server;
using linker.tunnel.connection;
using MemoryPack;
using System.Net;
-using System.Xml.Linq;
namespace linker.messenger.serializer.memorypack
{
@@ -761,10 +761,10 @@ namespace linker.messenger.serializer.memorypack
[MemoryPackInclude, MemoryPackAllowSerialize]
- List Cdkey => info.Cdkey;
+ List Cdkey => info.Cdkey;
[MemoryPackConstructor]
- SerializableRelayCacheInfo(ulong flowId, string fromId, string fromName, string toId, string toName, string groupId, bool validated, List cdkey)
+ SerializableRelayCacheInfo(ulong flowId, string fromId, string fromName, string toId, string toName, string groupId, bool validated, List cdkey)
{
var info = new RelayCacheInfo
{
@@ -878,424 +878,6 @@ namespace linker.messenger.serializer.memorypack
}
}
- [MemoryPackable]
- public readonly partial struct SerializableRelayServerCdkeyInfo
- {
- [MemoryPackIgnore]
- public readonly RelayServerCdkeyInfo info;
-
- [MemoryPackInclude]
- int Id => info.Id;
-
- [MemoryPackInclude]
- double Bandwidth => info.Bandwidth;
- [MemoryPackInclude]
- long LastBytes => info.LastBytes;
-
- [MemoryPackConstructor]
- SerializableRelayServerCdkeyInfo(int id, double bandwidth, long lastBytes)
- {
- var info = new RelayServerCdkeyInfo
- {
- Id = id,
- Bandwidth = bandwidth,
- LastBytes = lastBytes
- };
- this.info = info;
- }
-
- public SerializableRelayServerCdkeyInfo(RelayServerCdkeyInfo info)
- {
- this.info = info;
- }
- }
- public class RelayServerCdkeyInfoFormatter : MemoryPackFormatter
- {
- public override void Serialize(ref MemoryPackWriter writer, scoped ref RelayServerCdkeyInfo value)
- {
- if (value == null)
- {
- writer.WriteNullObjectHeader();
- return;
- }
-
- writer.WritePackable(new SerializableRelayServerCdkeyInfo(value));
- }
-
- public override void Deserialize(ref MemoryPackReader reader, scoped ref RelayServerCdkeyInfo value)
- {
- if (reader.PeekIsNull())
- {
- reader.Advance(1); // skip null block
- value = null;
- return;
- }
-
- var wrapped = reader.ReadPackable();
- value = wrapped.info;
- }
- }
-
-
- [MemoryPackable]
- public readonly partial struct SerializableRelayServerCdkeyStoreInfo
- {
- [MemoryPackIgnore]
- public readonly RelayServerCdkeyStoreInfo info;
-
- [MemoryPackInclude]
- double Bandwidth => info.Bandwidth;
- [MemoryPackInclude]
- long LastBytes => info.LastBytes;
-
- [MemoryPackInclude]
- int Id => info.Id;
- [MemoryPackInclude]
- string UserId => info.UserId;
-
- [MemoryPackInclude]
- DateTime AddTime => info.AddTime;
- [MemoryPackInclude]
- DateTime StartTime => info.StartTime;
- [MemoryPackInclude]
- DateTime EndTime => info.EndTime;
- [MemoryPackInclude]
- DateTime UseTime => info.UseTime;
-
- [MemoryPackInclude]
- long MaxBytes => info.MaxBytes;
-
- [MemoryPackInclude]
- double CostPrice => info.CostPrice;
- [MemoryPackInclude]
- double Price => info.Price;
- [MemoryPackInclude]
- double UserPrice => info.UserPrice;
- [MemoryPackInclude]
- double PayPrice => info.PayPrice;
- [MemoryPackInclude]
- string Remark => info.Remark;
- [MemoryPackInclude]
- string OrderId => info.OrderId;
- [MemoryPackInclude]
- string Contact => info.Contact;
- [MemoryPackInclude]
- bool Deleted => info.Deleted;
-
- [MemoryPackConstructor]
- SerializableRelayServerCdkeyStoreInfo(double bandwidth, long lastBytes, int id, string userid, DateTime addTime, DateTime startTime, DateTime endTime, DateTime useTime, long maxBytes, double costPrice, double price, double userPrice, double payPrice, string remark, string orderId, string contact, bool deleted)
- {
- var info = new RelayServerCdkeyStoreInfo
- {
- Bandwidth = bandwidth,
- LastBytes = lastBytes,
- Id = id,
- UserId = userid,
- AddTime = addTime,
- StartTime = startTime,
- EndTime = endTime,
- UseTime = useTime,
- MaxBytes = maxBytes,
- CostPrice = costPrice,
- Price = price,
- UserPrice = userPrice,
- PayPrice = payPrice,
- Remark = remark,
- OrderId = orderId,
- Contact = contact,
- Deleted = deleted
- };
- this.info = info;
- }
-
- public SerializableRelayServerCdkeyStoreInfo(RelayServerCdkeyStoreInfo info)
- {
- this.info = info;
- }
- }
- public class RelayServerCdkeyStoreInfoFormatter : MemoryPackFormatter
- {
- public override void Serialize(ref MemoryPackWriter writer, scoped ref RelayServerCdkeyStoreInfo value)
- {
- if (value == null)
- {
- writer.WriteNullObjectHeader();
- return;
- }
-
- writer.WritePackable(new SerializableRelayServerCdkeyStoreInfo(value));
- }
-
- public override void Deserialize(ref MemoryPackReader reader, scoped ref RelayServerCdkeyStoreInfo value)
- {
- if (reader.PeekIsNull())
- {
- reader.Advance(1); // skip null block
- value = null;
- return;
- }
-
- var wrapped = reader.ReadPackable();
- value = wrapped.info;
- }
- }
-
-
-
- [MemoryPackable]
- public readonly partial struct SerializableRelayServerCdkeyAddInfo
- {
- [MemoryPackIgnore]
- public readonly RelayServerCdkeyAddInfo info;
-
- [MemoryPackInclude]
- string SecretKey => info.SecretKey;
- [MemoryPackInclude, MemoryPackAllowSerialize]
- RelayServerCdkeyStoreInfo Data => info.Data;
-
- [MemoryPackConstructor]
- SerializableRelayServerCdkeyAddInfo(string secretKey, RelayServerCdkeyStoreInfo data)
- {
- var info = new RelayServerCdkeyAddInfo
- {
- SecretKey = secretKey,
- Data = data
- };
- this.info = info;
- }
-
- public SerializableRelayServerCdkeyAddInfo(RelayServerCdkeyAddInfo info)
- {
- this.info = info;
- }
- }
- public class RelayServerCdkeyAddInfoFormatter : MemoryPackFormatter
- {
- public override void Serialize(ref MemoryPackWriter writer, scoped ref RelayServerCdkeyAddInfo value)
- {
- if (value == null)
- {
- writer.WriteNullObjectHeader();
- return;
- }
-
- writer.WritePackable(new SerializableRelayServerCdkeyAddInfo(value));
- }
-
- public override void Deserialize(ref MemoryPackReader reader, scoped ref RelayServerCdkeyAddInfo value)
- {
- if (reader.PeekIsNull())
- {
- reader.Advance(1); // skip null block
- value = null;
- return;
- }
-
- var wrapped = reader.ReadPackable();
- value = wrapped.info;
- }
- }
-
-
- [MemoryPackable]
- public readonly partial struct SerializableRelayServerCdkeyDelInfo
- {
- [MemoryPackIgnore]
- public readonly RelayServerCdkeyDelInfo info;
-
- [MemoryPackInclude]
- string SecretKey => info.SecretKey;
- [MemoryPackInclude]
- string UserId => info.UserId;
- [MemoryPackInclude]
- int Id => info.Id;
-
- [MemoryPackConstructor]
- SerializableRelayServerCdkeyDelInfo(string secretKey, string userid, int id)
- {
- var info = new RelayServerCdkeyDelInfo
- {
- SecretKey = secretKey,
- UserId = userid,
- Id = id
- };
- this.info = info;
- }
-
- public SerializableRelayServerCdkeyDelInfo(RelayServerCdkeyDelInfo info)
- {
- this.info = info;
- }
- }
- public class RelayServerCdkeyDelInfoFormatter : MemoryPackFormatter
- {
- public override void Serialize(ref MemoryPackWriter writer, scoped ref RelayServerCdkeyDelInfo value)
- {
- if (value == null)
- {
- writer.WriteNullObjectHeader();
- return;
- }
-
- writer.WritePackable(new SerializableRelayServerCdkeyDelInfo(value));
- }
-
- public override void Deserialize(ref MemoryPackReader reader, scoped ref RelayServerCdkeyDelInfo value)
- {
- if (reader.PeekIsNull())
- {
- reader.Advance(1); // skip null block
- value = null;
- return;
- }
-
- var wrapped = reader.ReadPackable();
- value = wrapped.info;
- }
- }
-
-
- [MemoryPackable]
- public readonly partial struct SerializableRelayServerCdkeyPageRequestInfo
- {
- [MemoryPackIgnore]
- public readonly RelayServerCdkeyPageRequestInfo info;
-
- [MemoryPackInclude]
- int Page => info.Page;
- [MemoryPackInclude]
- int Size => info.Size;
- [MemoryPackInclude]
- string Order => info.Order;
- [MemoryPackInclude]
- string Sort => info.Sort;
-
- [MemoryPackInclude]
- string UserId => info.UserId;
- [MemoryPackInclude]
- string Remark => info.Remark;
- [MemoryPackInclude]
- string OrderId => info.OrderId;
- [MemoryPackInclude]
- string Contact => info.Contact;
- [MemoryPackInclude]
- string SecretKey => info.SecretKey;
- [MemoryPackInclude]
- RelayServerCdkeyPageRequestFlag Flag => info.Flag;
-
- [MemoryPackConstructor]
- SerializableRelayServerCdkeyPageRequestInfo(int page, int size, string order, string sort, string userid, string remark, string orderid, string contact, string secretKey, RelayServerCdkeyPageRequestFlag flag)
- {
- var info = new RelayServerCdkeyPageRequestInfo
- {
- Sort = sort,
- Order = order,
- Size = size,
- Page = page,
- UserId = userid,
- Remark = remark,
- OrderId = orderid,
- Contact = contact,
- SecretKey = secretKey,
- Flag = flag
- };
- this.info = info;
- }
-
- public SerializableRelayServerCdkeyPageRequestInfo(RelayServerCdkeyPageRequestInfo info)
- {
- this.info = info;
- }
- }
- public class RelayServerCdkeyPageRequestInfoFormatter : MemoryPackFormatter
- {
- public override void Serialize(ref MemoryPackWriter writer, scoped ref RelayServerCdkeyPageRequestInfo value)
- {
- if (value == null)
- {
- writer.WriteNullObjectHeader();
- return;
- }
-
- writer.WritePackable(new SerializableRelayServerCdkeyPageRequestInfo(value));
- }
-
- public override void Deserialize(ref MemoryPackReader reader, scoped ref RelayServerCdkeyPageRequestInfo value)
- {
- if (reader.PeekIsNull())
- {
- reader.Advance(1); // skip null block
- value = null;
- return;
- }
-
- var wrapped = reader.ReadPackable();
- value = wrapped.info;
- }
- }
-
-
-
- [MemoryPackable]
- public readonly partial struct SerializableRelayServerCdkeyPageResultInfo
- {
- [MemoryPackIgnore]
- public readonly RelayServerCdkeyPageResultInfo info;
-
- [MemoryPackInclude]
- int Page => info.Page;
- [MemoryPackInclude]
- int Size => info.Size;
- [MemoryPackInclude]
- int Count => info.Count;
- [MemoryPackInclude]
- List List => info.List;
-
- [MemoryPackConstructor]
- SerializableRelayServerCdkeyPageResultInfo(int page, int size, int count, List list)
- {
- var info = new RelayServerCdkeyPageResultInfo
- {
- Count = count,
- List = list,
- Size = size,
- Page = page
- };
- this.info = info;
- }
-
- public SerializableRelayServerCdkeyPageResultInfo(RelayServerCdkeyPageResultInfo info)
- {
- this.info = info;
- }
- }
- public class RelayServerCdkeyPageResultInfoFormatter : MemoryPackFormatter
- {
- public override void Serialize(ref MemoryPackWriter writer, scoped ref RelayServerCdkeyPageResultInfo value)
- {
- if (value == null)
- {
- writer.WriteNullObjectHeader();
- return;
- }
-
- writer.WritePackable(new SerializableRelayServerCdkeyPageResultInfo(value));
- }
-
- public override void Deserialize(ref MemoryPackReader reader, scoped ref RelayServerCdkeyPageResultInfo value)
- {
- if (reader.PeekIsNull())
- {
- reader.Advance(1); // skip null block
- value = null;
- return;
- }
-
- var wrapped = reader.ReadPackable();
- value = wrapped.info;
- }
- }
-
[MemoryPackable]
@@ -1352,206 +934,4 @@ namespace linker.messenger.serializer.memorypack
}
}
-
-
- [MemoryPackable]
- public readonly partial struct SerializableRelayServerCdkeyImportInfo
- {
- [MemoryPackIgnore]
- public readonly RelayServerCdkeyImportInfo info;
-
- [MemoryPackInclude]
- string SecretKey => info.SecretKey;
- [MemoryPackInclude]
- string UserId => info.UserId;
- [MemoryPackInclude]
- string Base64 => info.Base64;
-
- [MemoryPackConstructor]
- SerializableRelayServerCdkeyImportInfo(string secretKey, string userid, string base64)
- {
- var info = new RelayServerCdkeyImportInfo
- {
- SecretKey = secretKey,
- UserId = userid,
- Base64 = base64
- };
- this.info = info;
- }
-
- public SerializableRelayServerCdkeyImportInfo(RelayServerCdkeyImportInfo info)
- {
- this.info = info;
- }
- }
- public class RelayServerCdkeyImportInfoFormatter : MemoryPackFormatter
- {
- public override void Serialize(ref MemoryPackWriter writer, scoped ref RelayServerCdkeyImportInfo value)
- {
- if (value == null)
- {
- writer.WriteNullObjectHeader();
- return;
- }
-
- writer.WritePackable(new SerializableRelayServerCdkeyImportInfo(value));
- }
-
- public override void Deserialize(ref MemoryPackReader reader, scoped ref RelayServerCdkeyImportInfo value)
- {
- if (reader.PeekIsNull())
- {
- reader.Advance(1); // skip null block
- value = null;
- return;
- }
-
- var wrapped = reader.ReadPackable();
- value = wrapped.info;
- }
- }
-
-
- [MemoryPackable]
- public readonly partial struct SerializableRelayServerCdkeyTestResultInfo
- {
- [MemoryPackIgnore]
- public readonly RelayServerCdkeyTestResultInfo info;
-
- [MemoryPackInclude, MemoryPackAllowSerialize]
- RelayServerCdkeyOrderInfo Order => info.Order;
- [MemoryPackInclude]
- string Cdkey => info.Cdkey;
- [MemoryPackInclude]
- List Field => info.Field;
-
- [MemoryPackConstructor]
- SerializableRelayServerCdkeyTestResultInfo(RelayServerCdkeyOrderInfo order, string cdkey, List field)
- {
- var info = new RelayServerCdkeyTestResultInfo
- {
- Order = order,
- Cdkey = cdkey,
- Field = field
- };
- this.info = info;
- }
-
- public SerializableRelayServerCdkeyTestResultInfo(RelayServerCdkeyTestResultInfo info)
- {
- this.info = info;
- }
- }
- public class RelayServerCdkeyTestResultInfoFormatter : MemoryPackFormatter
- {
- public override void Serialize(ref MemoryPackWriter writer, scoped ref RelayServerCdkeyTestResultInfo value)
- {
- if (value == null)
- {
- writer.WriteNullObjectHeader();
- return;
- }
-
- writer.WritePackable(new SerializableRelayServerCdkeyTestResultInfo(value));
- }
-
- public override void Deserialize(ref MemoryPackReader reader, scoped ref RelayServerCdkeyTestResultInfo value)
- {
- if (reader.PeekIsNull())
- {
- reader.Advance(1); // skip null block
- value = null;
- return;
- }
-
- var wrapped = reader.ReadPackable();
- value = wrapped.info;
- }
- }
-
- [MemoryPackable]
- public readonly partial struct SerializableRelayServerCdkeyOrderInfo
- {
- [MemoryPackIgnore]
- public readonly RelayServerCdkeyOrderInfo info;
-
- [MemoryPackInclude]
- int GB => info.GB;
- [MemoryPackInclude]
- int Speed => info.Speed;
- [MemoryPackInclude]
- string Time => info.Time;
- [MemoryPackInclude]
- string WidgetUserId => info.WidgetUserId;
- [MemoryPackInclude]
- string OrderId => info.OrderId;
- [MemoryPackInclude]
- string Contact => info.Contact;
-
- [MemoryPackInclude]
- double CostPrice => info.CostPrice;
- [MemoryPackInclude]
- double Price => info.Price;
- [MemoryPackInclude]
- double UserPrice => info.UserPrice;
- [MemoryPackInclude]
- double PayPrice => info.PayPrice;
- [MemoryPackInclude]
- int Count => info.Count;
- [MemoryPackInclude]
- string Type => info.Type;
-
-
- [MemoryPackConstructor]
- SerializableRelayServerCdkeyOrderInfo(int gb, int speed, string time, string widgetUserId, string orderId, string contact, double costPrice, double price, double userPrice, double payPrice, int count, string type)
- {
- var info = new RelayServerCdkeyOrderInfo
- {
- GB = gb,
- Speed = speed,
- Time = time,
- WidgetUserId = widgetUserId,
- OrderId = orderId,
- Contact = contact,
- CostPrice = costPrice,
- Price = price,
- UserPrice = userPrice,
- PayPrice = payPrice,
- Count = count,
- Type = type
- };
- this.info = info;
- }
-
- public SerializableRelayServerCdkeyOrderInfo(RelayServerCdkeyOrderInfo info)
- {
- this.info = info;
- }
- }
- public class RelayServerCdkeyOrderInfoFormatter : MemoryPackFormatter
- {
- public override void Serialize(ref MemoryPackWriter writer, scoped ref RelayServerCdkeyOrderInfo value)
- {
- if (value == null)
- {
- writer.WriteNullObjectHeader();
- return;
- }
-
- writer.WritePackable(new SerializableRelayServerCdkeyOrderInfo(value));
- }
-
- public override void Deserialize(ref MemoryPackReader reader, scoped ref RelayServerCdkeyOrderInfo value)
- {
- if (reader.PeekIsNull())
- {
- reader.Advance(1); // skip null block
- value = null;
- return;
- }
-
- var wrapped = reader.ReadPackable();
- value = wrapped.info;
- }
- }
}
diff --git a/src/linker.messenger.serializer.memorypack/linker.messenger.serializer.memorypack.csproj b/src/linker.messenger.serializer.memorypack/linker.messenger.serializer.memorypack.csproj
index 8e0fd9fd..ebf3dd6e 100644
--- a/src/linker.messenger.serializer.memorypack/linker.messenger.serializer.memorypack.csproj
+++ b/src/linker.messenger.serializer.memorypack/linker.messenger.serializer.memorypack.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger serializer memorypack
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
@@ -42,6 +42,7 @@
+
diff --git a/src/linker.messenger.sforward/linker.messenger.sforward.csproj b/src/linker.messenger.sforward/linker.messenger.sforward.csproj
index a57e4da9..4c304a40 100644
--- a/src/linker.messenger.sforward/linker.messenger.sforward.csproj
+++ b/src/linker.messenger.sforward/linker.messenger.sforward.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger sforward
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.sforward/messenger/SForwardMessenger.cs b/src/linker.messenger.sforward/messenger/SForwardMessenger.cs
index 4b05050a..f34fded8 100644
--- a/src/linker.messenger.sforward/messenger/SForwardMessenger.cs
+++ b/src/linker.messenger.sforward/messenger/SForwardMessenger.cs
@@ -217,12 +217,12 @@ namespace linker.plugins.sforward.messenger
public void GetForward(IConnection connection)
{
string machineId = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(machineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id,machineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
sender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)SForwardMessengerIds.Get,
Payload = connection.ReceiveRequestWrap.Payload
}).ContinueWith(async (result) =>
@@ -248,12 +248,12 @@ namespace linker.plugins.sforward.messenger
public async Task AddClientForward(IConnection connection)
{
SForwardAddForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await sender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)SForwardMessengerIds.AddClient,
Payload = serializer.Serialize(info.Data)
}).ContinueWith(async (result) =>
@@ -279,12 +279,12 @@ namespace linker.plugins.sforward.messenger
public async Task RemoveClientForward(IConnection connection)
{
SForwardRemoveForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await sender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)SForwardMessengerIds.RemoveClient,
Payload = serializer.Serialize(info.Id)
}).ContinueWith(async (result) =>
@@ -307,11 +307,11 @@ namespace linker.plugins.sforward.messenger
public async Task StartClientForward(IConnection connection)
{
SForwardRemoveForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
await sender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)SForwardMessengerIds.StartClient,
Payload = serializer.Serialize(info.Id)
}).ConfigureAwait(false);
@@ -321,11 +321,11 @@ namespace linker.plugins.sforward.messenger
public async Task StopClientForward(IConnection connection)
{
SForwardRemoveForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
await sender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)SForwardMessengerIds.StopClient,
Payload = serializer.Serialize(info.Id)
}).ConfigureAwait(false);
@@ -340,12 +340,12 @@ namespace linker.plugins.sforward.messenger
public async Task TestClientForward(IConnection connection)
{
string machineid = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(machineid, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, machineid, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await sender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)SForwardMessengerIds.TestClient
}).ConfigureAwait(false);
}
diff --git a/src/linker.messenger.signin/SignInClientTransfer.cs b/src/linker.messenger.signin/SignInClientTransfer.cs
index 138cb8c5..9cd31499 100644
--- a/src/linker.messenger.signin/SignInClientTransfer.cs
+++ b/src/linker.messenger.signin/SignInClientTransfer.cs
@@ -181,7 +181,7 @@ namespace linker.messenger.signin
{
MachineName = signInClientStore.Name,
MachineId = signInClientStore.Id,
- Version = VersionHelper.version,
+ Version = VersionHelper.Version,
Args = args,
GroupId = signInClientStore.Group.Id,
})
diff --git a/src/linker.messenger.signin/SignInMessenger.cs b/src/linker.messenger.signin/SignInMessenger.cs
index 996460c0..e77db9a1 100644
--- a/src/linker.messenger.signin/SignInMessenger.cs
+++ b/src/linker.messenger.signin/SignInMessenger.cs
@@ -48,7 +48,9 @@ namespace linker.messenger.signin
}
[MessengerId((ushort)SignInMessengerIds.SignIn)]
+#pragma warning disable CA1822 // 将成员标记为 static
public void SignIn(IConnection connection)
+#pragma warning restore CA1822 // 将成员标记为 static
{
connection.Disponse();
return;
@@ -87,7 +89,7 @@ namespace linker.messenger.signin
string[] ids = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
if (signCaching.TryGet(connection.Id, out SignCacheInfo cache))
{
- IEnumerable list = signCaching.Get(cache.GroupId);
+ IEnumerable list = signCaching.Get(cache);
foreach (var item in list)
{
item.Order = uint.MaxValue;
@@ -111,7 +113,7 @@ namespace linker.messenger.signin
SignInListRequestInfo request = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
if (signCaching.TryGet(connection.Id, out SignCacheInfo cache))
{
- IEnumerable list = signCaching.Get(cache.GroupId).Where(c => c.MachineId != cache.MachineId);
+ IEnumerable list = signCaching.Get(cache).Where(c => c.MachineId != cache.MachineId);
if (string.IsNullOrWhiteSpace(request.Name) == false)
{
list = list.Where(c => c.Version.Contains(request.Name) || c.IP.ToString().Contains(request.Name) || c.MachineName.Contains(request.Name) || request.Ids.Contains(c.MachineId));
@@ -164,17 +166,17 @@ namespace linker.messenger.signin
[MessengerId((ushort)SignInMessengerIds.Delete)]
public void Delete(IConnection connection)
{
- string name = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(name, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ string machineid = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, machineid, out SignCacheInfo from, out SignCacheInfo to))
{
- signCaching.TryRemove(name, out _);
+ signCaching.TryRemove(machineid, out _);
}
}
[MessengerId((ushort)SignInMessengerIds.Version)]
public void Version(IConnection connection)
{
- connection.Write(serializer.Serialize(VersionHelper.version));
+ connection.Write(serializer.Serialize(VersionHelper.Version));
}
@@ -184,7 +186,7 @@ namespace linker.messenger.signin
SignInIdsRequestInfo request = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
if (signCaching.TryGet(connection.Id, out SignCacheInfo cache))
{
- IEnumerable list = signCaching.Get(cache.GroupId).OrderByDescending(c => c.MachineName).OrderByDescending(c => c.LastSignIn).OrderByDescending(c => c.Version).ToList();
+ IEnumerable list = signCaching.Get(cache).OrderByDescending(c => c.MachineName).OrderByDescending(c => c.LastSignIn).OrderByDescending(c => c.Version).ToList();
if (string.IsNullOrWhiteSpace(request.Name) == false)
{
list = list.Where(c => c.MachineName.Contains(request.Name));
@@ -208,7 +210,7 @@ namespace linker.messenger.signin
{
if (signCaching.TryGet(connection.Id, out SignCacheInfo cache))
{
- List list = signCaching.Get(cache.GroupId).Select(c => new SignInNamesResponseItemInfo { MachineId = c.MachineId, MachineName = c.MachineName, Online = c.Connected }).ToList();
+ List list = signCaching.Get(cache).Select(c => new SignInNamesResponseItemInfo { MachineId = c.MachineId, MachineName = c.MachineName, Online = c.Connected }).ToList();
connection.Write(serializer.Serialize(list));
}
@@ -220,7 +222,7 @@ namespace linker.messenger.signin
{
if (signCaching.TryGet(connection.Id, out SignCacheInfo cache))
{
- IEnumerable list = signCaching.Get(cache.GroupId).Select(c => c.MachineId);
+ IEnumerable list = signCaching.Get(cache).Select(c => c.MachineId);
connection.Write(serializer.Serialize(list));
}
}
@@ -230,7 +232,7 @@ namespace linker.messenger.signin
{
string machineId = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) && signCaching.TryGet(machineId, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId && cache1.Connected)
+ if (signCaching.TryGet(connection.Id, machineId, out SignCacheInfo from, out SignCacheInfo to) && to.Connected)
{
connection.Write(Helper.TrueArray);
}
@@ -250,13 +252,13 @@ namespace linker.messenger.signin
public async Task SetNameForward(IConnection connection)
{
SignInConfigSetNameInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.Id, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ if (signCaching.TryGet(connection.Id, info.Id, out SignCacheInfo from, out SignCacheInfo to))
{
if (info.Id != connection.Id)
{
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)SignInMessengerIds.SetName,
Payload = connection.ReceiveRequestWrap.Payload,
}).ConfigureAwait(false);
@@ -281,7 +283,7 @@ namespace linker.messenger.signin
List machineIds = serializer.Deserialize>(connection.ReceiveRequestWrap.Payload.Span);
if (signCaching.TryGet(connection.Id, out SignCacheInfo cache))
{
- List offlines = signCaching.Get(cache.GroupId).Where(c => c.Connected == false).Select(c => c.MachineId).Intersect(machineIds).ToList();
+ List offlines = signCaching.Get(cache).Where(c => c.Connected == false).Select(c => c.MachineId).Intersect(machineIds).ToList();
connection.Write(serializer.Serialize(offlines));
return;
}
diff --git a/src/linker.messenger.signin/SignInServerCaching.cs b/src/linker.messenger.signin/SignInServerCaching.cs
index 524e59cc..afefa205 100644
--- a/src/linker.messenger.signin/SignInServerCaching.cs
+++ b/src/linker.messenger.signin/SignInServerCaching.cs
@@ -3,7 +3,6 @@ using linker.libs.timer;
using linker.messenger.signin.args;
using System.Collections.Concurrent;
using System.Net;
-using System.Text.RegularExpressions;
namespace linker.messenger.signin
{
@@ -86,20 +85,25 @@ namespace linker.messenger.signin
}
return Clients.TryGetValue(machineId, out cache);
}
+ public bool TryGet(string from, string to, out SignCacheInfo fromValue, out SignCacheInfo toValue)
+ {
+ fromValue = null;
+ toValue = null;
+ if (from == null || to == null)
+ {
+ return false;
+ }
+ return Clients.TryGetValue(from, out fromValue) && Clients.TryGetValue(to, out toValue) && fromValue.SameGroup(toValue);
+ }
public List Get()
{
return Clients.Values.ToList();
}
- public List Get(string groupId)
+ public List Get(SignCacheInfo other)
{
- return Clients.Values.Where(c => c.GroupId == groupId).ToList();
+ return Clients.Values.Where(c => c.GroupId == other.GroupId).ToList();
}
- public IEnumerable GetOnlines()
- {
- return Clients.Values.Where(c => c.Connected == true).Select(c => c.Id);
- }
-
public bool GetOnline(string machineId)
{
@@ -120,13 +124,11 @@ namespace linker.messenger.signin
}
return true;
}
-
public string NewId()
{
return signInStore.NewId();
}
-
public bool Exp(string machineId)
{
return signInStore.Exp(machineId);
@@ -218,7 +220,7 @@ namespace linker.messenger.signin
}
}
- private bool connected = false;
+ private bool connected;
public bool Connected
{
get
@@ -241,6 +243,11 @@ namespace linker.messenger.signin
public IConnection Connection { get; set; }
public uint Order { get; set; } = int.MaxValue;
+
+ public bool SameGroup(SignCacheInfo other)
+ {
+ return this.GroupId == other.GroupId;
+ }
}
///
diff --git a/src/linker.messenger.signin/args/SignInArgsVersion.cs b/src/linker.messenger.signin/args/SignInArgsVersion.cs
index 8b23443d..5d70973b 100644
--- a/src/linker.messenger.signin/args/SignInArgsVersion.cs
+++ b/src/linker.messenger.signin/args/SignInArgsVersion.cs
@@ -10,7 +10,7 @@ namespace linker.messenger.signin.args
public string Name => "version";
public async Task Invoke(string host, Dictionary args)
{
- args.TryAdd("version", VersionHelper.version);
+ args.TryAdd("version", VersionHelper.Version);
await Task.CompletedTask.ConfigureAwait(false);
diff --git a/src/linker.messenger.signin/linker.messenger.signin.csproj b/src/linker.messenger.signin/linker.messenger.signin.csproj
index 7f1c776b..19139408 100644
--- a/src/linker.messenger.signin/linker.messenger.signin.csproj
+++ b/src/linker.messenger.signin/linker.messenger.signin.csproj
@@ -17,9 +17,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger signin
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.socks5/Socks5Messenger.cs b/src/linker.messenger.socks5/Socks5Messenger.cs
index 204847a6..d68c0598 100644
--- a/src/linker.messenger.socks5/Socks5Messenger.cs
+++ b/src/linker.messenger.socks5/Socks5Messenger.cs
@@ -69,12 +69,12 @@ namespace linker.messenger.socks5
[MessengerId((ushort)Socks5MessengerIds.RunForward)]
public async Task RunForward(IConnection connection)
{
- string name = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(name, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ string machineid = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, machineid, out SignCacheInfo from, out SignCacheInfo to))
{
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
Timeout = 3000,
MessengerId = (ushort)Socks5MessengerIds.Run
}).ConfigureAwait(false);
@@ -89,12 +89,12 @@ namespace linker.messenger.socks5
[MessengerId((ushort)Socks5MessengerIds.StopForward)]
public async Task StopForward(IConnection connection)
{
- string name = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(name, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ string machineid = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id,machineid, out SignCacheInfo from, out SignCacheInfo to))
{
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
Timeout = 3000,
MessengerId = (ushort)Socks5MessengerIds.Stop
}).ConfigureAwait(false);
@@ -110,11 +110,11 @@ namespace linker.messenger.socks5
public async Task UpdateForward(IConnection connection)
{
Socks5Info info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
Timeout = 3000,
MessengerId = (ushort)Socks5MessengerIds.Update,
Payload = connection.ReceiveRequestWrap.Payload
diff --git a/src/linker.messenger.socks5/linker.messenger.socks5.csproj b/src/linker.messenger.socks5/linker.messenger.socks5.csproj
index a0fe6819..7924b875 100644
--- a/src/linker.messenger.socks5/linker.messenger.socks5.csproj
+++ b/src/linker.messenger.socks5/linker.messenger.socks5.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger socks5
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.store.file/Entry.cs b/src/linker.messenger.store.file/Entry.cs
index a701ce60..189277ac 100644
--- a/src/linker.messenger.store.file/Entry.cs
+++ b/src/linker.messenger.store.file/Entry.cs
@@ -2,6 +2,7 @@
using linker.libs.web;
using linker.messenger.action;
using linker.messenger.api;
+using linker.messenger.cdkey;
using linker.messenger.firewall;
using linker.messenger.forward;
using linker.messenger.listen;
@@ -16,6 +17,7 @@ using linker.messenger.signin;
using linker.messenger.socks5;
using linker.messenger.store.file.action;
using linker.messenger.store.file.api;
+using linker.messenger.store.file.cekey;
using linker.messenger.store.file.common;
using linker.messenger.store.file.firewall;
using linker.messenger.store.file.forward;
@@ -68,7 +70,9 @@ namespace linker.messenger.store.file
serviceCollection.AddSingleton();
serviceCollection.AddSingleton();
serviceCollection.AddSingleton();
- serviceCollection.AddSingleton();
+
+ serviceCollection.AddSingleton();
+ serviceCollection.AddSingleton();
serviceCollection.AddSingleton();
@@ -114,7 +118,7 @@ namespace linker.messenger.store.file
serviceCollection.AddSingleton();
-
+
return serviceCollection;
}
diff --git a/src/linker.messenger.store.file/FileConfig.cs b/src/linker.messenger.store.file/FileConfig.cs
index ee16a831..1a66d75f 100644
--- a/src/linker.messenger.store.file/FileConfig.cs
+++ b/src/linker.messenger.store.file/FileConfig.cs
@@ -74,9 +74,9 @@ namespace linker.messenger.store.file
}
}
}
- if (Directory.Exists(Path.Combine(Helper.currentDirectory, configPath)) == false)
+ if (Directory.Exists(Path.Combine(Helper.CurrentDirectory, configPath)) == false)
{
- Directory.CreateDirectory(Path.Combine(Helper.currentDirectory, configPath));
+ Directory.CreateDirectory(Path.Combine(Helper.CurrentDirectory, configPath));
}
Type type = Data.GetType();
@@ -86,7 +86,7 @@ namespace linker.messenger.store.file
object property = item.GetValue(Data);
fsDic.Add(item.Name.ToLower(), new FileReadWrite
{
- Path = Path.Combine(Helper.currentDirectory, configPath, $"{item.Name.ToLower()}.json"),
+ Path = Path.Combine(Helper.CurrentDirectory, configPath, $"{item.Name.ToLower()}.json"),
Property = item,
PropertyObject = property,
PropertyMethod = (IConfig)property,
diff --git a/src/linker.messenger.store.file/Storefactory.cs b/src/linker.messenger.store.file/Storefactory.cs
index 6dae49e3..8abc12f4 100644
--- a/src/linker.messenger.store.file/Storefactory.cs
+++ b/src/linker.messenger.store.file/Storefactory.cs
@@ -30,7 +30,7 @@ namespace linker.messenger.store.file
bsonMapper.RegisterType(serialize: (a) => string.Empty, deserialize: (a) => null);
bsonMapper.RegisterType(serialize: (a) => string.Empty, deserialize: (a) => null);
- string db = Path.Join(Helper.currentDirectory, "./configs/db.db");
+ string db = Path.Join(Helper.CurrentDirectory, "./configs/db.db");
if (Directory.Exists(Path.GetDirectoryName(db)) == false)
{
Directory.CreateDirectory(Path.GetDirectoryName(db));
diff --git a/src/linker.messenger.store.file/cekey/CdkeyClientStore.cs b/src/linker.messenger.store.file/cekey/CdkeyClientStore.cs
new file mode 100644
index 00000000..9af1d1eb
--- /dev/null
+++ b/src/linker.messenger.store.file/cekey/CdkeyClientStore.cs
@@ -0,0 +1,22 @@
+using linker.messenger.cdkey;
+
+namespace linker.messenger.store.file.cekey
+{
+ public sealed class CdkeyClientStore : ICdkeyClientStore
+ {
+ public string SecretKey => fileConfig.Data.Client.Cdkey.SecretKey;
+
+ private readonly FileConfig fileConfig;
+ public CdkeyClientStore(FileConfig fileConfig)
+ {
+ this.fileConfig = fileConfig;
+ }
+
+ public bool SetSecretKey(string secretKey)
+ {
+ fileConfig.Data.Client.Cdkey.SecretKey = secretKey;
+ fileConfig.Data.Update();
+ return true;
+ }
+ }
+}
diff --git a/src/linker.messenger.store.file/relay/RelayServerCdkeyStore.cs b/src/linker.messenger.store.file/cekey/CdkeyServerStore.cs
similarity index 73%
rename from src/linker.messenger.store.file/relay/RelayServerCdkeyStore.cs
rename to src/linker.messenger.store.file/cekey/CdkeyServerStore.cs
index 9049282f..e404101d 100644
--- a/src/linker.messenger.store.file/relay/RelayServerCdkeyStore.cs
+++ b/src/linker.messenger.store.file/cekey/CdkeyServerStore.cs
@@ -1,28 +1,35 @@
using linker.libs;
using linker.libs.extends;
-using linker.messenger.relay.server;
+using linker.messenger.cdkey;
using LiteDB;
using System.Text;
using System.Text.RegularExpressions;
namespace linker.messenger.store.file.relay
{
- public sealed class RelayServerCdkeyStore : IRelayServerCdkeyStore
+ public sealed class CdkeyServerStore : ICdkeyServerStore
{
private string regex = @"([0-9]+|\?)-([0-9]+|\?)-([0-9]+|\?)\s+([0-9]+|\?):([0-9]+|\?):([0-9]+|\?)";
private int index = 0;
private readonly Storefactory dBfactory;
- private readonly ILiteCollection liteCollection;
+ private readonly ILiteCollection liteCollection;
private readonly ICrypto crypto;
- public RelayServerCdkeyStore(Storefactory dBfactory, FileConfig fileConfig)
+ private readonly FileConfig fileConfig;
+ public CdkeyServerStore(Storefactory dBfactory, FileConfig fileConfig)
{
this.dBfactory = dBfactory;
- liteCollection = dBfactory.GetCollection("relayCdkey");
+ liteCollection = dBfactory.GetCollection("relayCdkey");
this.crypto = CryptoFactory.CreateSymmetric(fileConfig.Data.Server.Relay.Cdkey.SecretKey, System.Security.Cryptography.PaddingMode.PKCS7);
+ this.fileConfig = fileConfig;
}
- public async Task Add(RelayServerCdkeyStoreInfo info)
+ public bool ValidateSecretKey(string secretKey)
+ {
+ return secretKey == fileConfig.Data.Server.Cdkey.SecretKey;
+ }
+
+ public async Task Add(CdkeyStoreInfo info)
{
if (info.Id == 0)
{
@@ -44,27 +51,27 @@ namespace linker.messenger.store.file.relay
}
public async Task Del(int id)
{
- return await Task.FromResult(liteCollection.UpdateMany(c => new RelayServerCdkeyStoreInfo { Deleted = true }, c => c.Id == id) > 0).ConfigureAwait(false);
+ return await Task.FromResult(liteCollection.UpdateMany(c => new CdkeyStoreInfo { Deleted = true }, c => c.Id == id) > 0).ConfigureAwait(false);
}
public async Task Del(int id, string userid)
{
- return await Task.FromResult(liteCollection.UpdateMany(c => new RelayServerCdkeyStoreInfo { Deleted = true }, c => c.Id == id && c.UserId == userid) > 0).ConfigureAwait(false);
+ return await Task.FromResult(liteCollection.UpdateMany(c => new CdkeyStoreInfo { Deleted = true }, c => c.Id == id && c.UserId == userid) > 0).ConfigureAwait(false);
}
- public async Task Test(RelayServerCdkeyImportInfo info)
+ public async Task Test(CdkeyImportInfo info)
{
List error = new List();
- RelayServerCdkeyTestResultInfo result = new RelayServerCdkeyTestResultInfo();
+ CdkeyTestResultInfo result = new CdkeyTestResultInfo();
try
{
result.Cdkey = Encoding.UTF8.GetString(crypto.Decode(Convert.FromBase64String(info.Base64)).Span);
- RelayServerCdkeyOrderInfo order = result.Cdkey.DeJson();
+ CdkeyOrderInfo order = result.Cdkey.DeJson();
result.Order = order;
- if(order.Type != "Relay" || string.IsNullOrWhiteSpace(order.Type))
+ if (string.IsNullOrWhiteSpace(order.Type))
{
- error.Add("Relay");
+ error.Add("Type");
}
if (order.WidgetUserId != info.UserId || string.IsNullOrWhiteSpace(order.WidgetUserId))
@@ -104,9 +111,9 @@ namespace linker.messenger.store.file.relay
return await Task.FromResult(result).ConfigureAwait(false);
}
- public async Task Import(RelayServerCdkeyImportInfo info)
+ public async Task Import(CdkeyImportInfo info)
{
- RelayServerCdkeyTestResultInfo test = await Test(info).ConfigureAwait(false);
+ CdkeyTestResultInfo test = await Test(info).ConfigureAwait(false);
if (test.Field.Count > 0)
{
@@ -124,10 +131,11 @@ namespace linker.messenger.store.file.relay
return "OrderId";
}
- RelayServerCdkeyOrderInfo order = test.Order;
+ CdkeyOrderInfo order = test.Order;
var time = Regex.Match(order.Time, regex).Groups;
- RelayServerCdkeyStoreInfo store = new RelayServerCdkeyStoreInfo
+ CdkeyStoreInfo store = new CdkeyStoreInfo
{
+ Type = order.Type,
UseTime = DateTime.Now,
AddTime = DateTime.Now,
Bandwidth = order.Speed,
@@ -162,7 +170,7 @@ namespace linker.messenger.store.file.relay
if (info != null)
{
long bytes = info.LastBytes >= item.Value ? info.LastBytes - item.Value : 0;
- liteCollection.UpdateMany(x => new RelayServerCdkeyStoreInfo { LastBytes = bytes, UseTime = DateTime.Now }, c => c.Id == item.Key);
+ liteCollection.UpdateMany(x => new CdkeyStoreInfo { LastBytes = bytes, UseTime = DateTime.Now }, c => c.Id == item.Key);
}
}
return await Task.FromResult(true).ConfigureAwait(false);
@@ -172,44 +180,48 @@ namespace linker.messenger.store.file.relay
return await Task.FromResult(liteCollection.Find(c => ids.Contains(c.Id)).ToDictionary(c => c.Id, c => c.LastBytes)).ConfigureAwait(false);
}
- public async Task> GetAvailable(string userid)
+ public async Task> GetAvailable(string userid, string type)
{
- return await Task.FromResult(liteCollection.Find(x => x.UserId == userid && x.LastBytes > 0 && x.StartTime <= DateTime.Now && x.EndTime >= DateTime.Now && x.Deleted == false).ToList()).ConfigureAwait(false);
+ return await Task.FromResult(liteCollection.Find(x => x.UserId == userid && x.Type == type && x.LastBytes > 0 && x.StartTime <= DateTime.Now && x.EndTime >= DateTime.Now && x.Deleted == false).ToList()).ConfigureAwait(false);
}
- public async Task> Get(List ids)
+ public async Task> Get(List ids)
{
return await Task.FromResult(liteCollection.Find(x => ids.Contains(x.Id)).ToList()).ConfigureAwait(false);
}
- public async Task Page(RelayServerCdkeyPageRequestInfo info)
+ public async Task Page(CdkeyPageRequestInfo info)
{
- ILiteQueryable query = liteCollection.Query();
+ ILiteQueryable query = liteCollection.Query();
- if (info.Flag.HasFlag(RelayServerCdkeyPageRequestFlag.TimeIn))
+ if (info.Flag.HasFlag(CdkeyPageRequestFlag.TimeIn))
{
query = query.Where(x => x.StartTime <= DateTime.Now && x.EndTime >= DateTime.Now);
}
- if (info.Flag.HasFlag(RelayServerCdkeyPageRequestFlag.TimeOut))
+ if (info.Flag.HasFlag(CdkeyPageRequestFlag.TimeOut))
{
- query = query.Where(x =>x.StartTime > DateTime.Now || x.EndTime < DateTime.Now);
+ query = query.Where(x => x.StartTime > DateTime.Now || x.EndTime < DateTime.Now);
}
- if (info.Flag.HasFlag(RelayServerCdkeyPageRequestFlag.BytesIn))
+ if (info.Flag.HasFlag(CdkeyPageRequestFlag.BytesIn))
{
query = query.Where(x => x.LastBytes > 0);
}
- if (info.Flag.HasFlag(RelayServerCdkeyPageRequestFlag.BytesOut))
+ if (info.Flag.HasFlag(CdkeyPageRequestFlag.BytesOut))
{
query = query.Where(x => x.LastBytes <= 0);
}
- if (info.Flag.HasFlag(RelayServerCdkeyPageRequestFlag.Deleted))
+ if (info.Flag.HasFlag(CdkeyPageRequestFlag.Deleted))
{
query = query.Where(x => x.Deleted == true);
}
- if (info.Flag.HasFlag(RelayServerCdkeyPageRequestFlag.UnDeleted))
+ if (info.Flag.HasFlag(CdkeyPageRequestFlag.UnDeleted))
{
query = query.Where(x => x.Deleted == false);
}
+ if (string.IsNullOrWhiteSpace(info.Type) == false)
+ {
+ query = query.Where(x => x.Type == info.Type);
+ }
if (string.IsNullOrWhiteSpace(info.UserId) == false)
{
query = query.Where(x => x.UserId == info.UserId);
@@ -235,7 +247,7 @@ namespace linker.messenger.store.file.relay
query = query.OrderBy(c => c.Id, Query.Descending);
}
- return await Task.FromResult(new RelayServerCdkeyPageResultInfo
+ return await Task.FromResult(new CdkeyPageResultInfo
{
Page = info.Page,
Size = info.Size,
diff --git a/src/linker.messenger.store.file/cekey/Config.cs b/src/linker.messenger.store.file/cekey/Config.cs
new file mode 100644
index 00000000..99fa3b64
--- /dev/null
+++ b/src/linker.messenger.store.file/cekey/Config.cs
@@ -0,0 +1,19 @@
+using linker.messenger.cdkey;
+
+namespace linker.messenger.store.file
+{
+ public sealed partial class ConfigClientInfo
+ {
+ ///
+ /// cdkey配置
+ ///
+ public CdkeyConfigInfo Cdkey { get; set; } = new CdkeyConfigInfo();
+ }
+ public partial class ConfigServerInfo
+ {
+ ///
+ /// cdkey配置
+ ///
+ public CdkeyConfigInfo Cdkey { get; set; } = new CdkeyConfigInfo();
+ }
+}
diff --git a/src/linker.messenger.store.file/linker.messenger.store.file.csproj b/src/linker.messenger.store.file/linker.messenger.store.file.csproj
index 2ff174a5..f2349e18 100644
--- a/src/linker.messenger.store.file/linker.messenger.store.file.csproj
+++ b/src/linker.messenger.store.file/linker.messenger.store.file.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger store file
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
@@ -52,6 +52,7 @@
+
diff --git a/src/linker.messenger.store.file/relay/Config.cs b/src/linker.messenger.store.file/relay/Config.cs
index c16e5065..d6c38c43 100644
--- a/src/linker.messenger.store.file/relay/Config.cs
+++ b/src/linker.messenger.store.file/relay/Config.cs
@@ -1,4 +1,5 @@
using linker.libs;
+using linker.messenger.cdkey;
using linker.messenger.relay.client.transport;
using linker.messenger.relay.server;
using linker.tunnel.connection;
@@ -48,7 +49,7 @@ namespace linker.messenger.store.file
#else
public string SecretKey { get; set; } = Guid.NewGuid().ToString().ToUpper();
#endif
- public RelayServerCdkeyConfigInfo Cdkey { get; set; } = new RelayServerCdkeyConfigInfo();
+ public CdkeyConfigInfo Cdkey { get; set; } = new CdkeyConfigInfo();
public DistributedInfo Distributed { get; set; } = new DistributedInfo { };
}
diff --git a/src/linker.messenger.sync/SyncMessenger.cs b/src/linker.messenger.sync/SyncMessenger.cs
index 53db2240..1d6e5593 100644
--- a/src/linker.messenger.sync/SyncMessenger.cs
+++ b/src/linker.messenger.sync/SyncMessenger.cs
@@ -23,7 +23,7 @@ namespace linker.messenger.sync
SyncInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
if (signCaching.TryGet(connection.Id, out SignCacheInfo cache))
{
- List caches = signCaching.Get(cache.GroupId);
+ List caches = signCaching.Get(cache);
List tasks = new List();
foreach (SignCacheInfo item in caches.Where(c => c.MachineId != connection.Id && c.Connected))
{
diff --git a/src/linker.messenger.sync/linker.messenger.sync.csproj b/src/linker.messenger.sync/linker.messenger.sync.csproj
index c050802d..5ed4f704 100644
--- a/src/linker.messenger.sync/linker.messenger.sync.csproj
+++ b/src/linker.messenger.sync/linker.messenger.sync.csproj
@@ -18,9 +18,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger sync
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.tunnel/TunnelMessenger.cs b/src/linker.messenger.tunnel/TunnelMessenger.cs
index e423a38d..f244dab2 100644
--- a/src/linker.messenger.tunnel/TunnelMessenger.cs
+++ b/src/linker.messenger.tunnel/TunnelMessenger.cs
@@ -126,12 +126,12 @@ namespace linker.messenger.tunnel
public void InfoForward(IConnection connection)
{
TunnelWanPortProtocolInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
_ = messengerSender.SendReply(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)TunnelMessengerIds.Info,
Payload = connection.ReceiveRequestWrap.Payload,
}).ContinueWith(async (result) =>
@@ -153,18 +153,18 @@ namespace linker.messenger.tunnel
[MessengerId((ushort)TunnelMessengerIds.BeginForward)]
public async Task BeginForward(IConnection connection)
{
- TunnelTransportInfo tunnelTransportInfo = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ TunnelTransportInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(tunnelTransportInfo.Remote.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.Remote.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
- tunnelTransportInfo.Local.MachineName = cacheFrom.MachineName;
- tunnelTransportInfo.Remote.MachineName = cacheTo.MachineName;
+ info.Local.MachineName = from.MachineName;
+ info.Remote.MachineName = to.MachineName;
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)TunnelMessengerIds.Begin,
- Payload = serializer.Serialize(tunnelTransportInfo)
+ Payload = serializer.Serialize(info)
}).ConfigureAwait(false);
connection.Write(Helper.TrueArray);
}
@@ -174,16 +174,16 @@ namespace linker.messenger.tunnel
[MessengerId((ushort)TunnelMessengerIds.FailForward)]
public async Task FailForward(IConnection connection)
{
- TunnelTransportInfo tunnelTransportInfo = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(tunnelTransportInfo.Remote.MachineId, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ TunnelTransportInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, info.Remote.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
- tunnelTransportInfo.Local.MachineName = cache1.MachineName;
- tunnelTransportInfo.Remote.MachineName = cache.MachineName;
+ info.Local.MachineName = from.MachineName;
+ info.Remote.MachineName = to.MachineName;
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)TunnelMessengerIds.Fail,
- Payload = serializer.Serialize(tunnelTransportInfo)
+ Payload = serializer.Serialize(info)
}).ConfigureAwait(false);
}
}
@@ -192,16 +192,16 @@ namespace linker.messenger.tunnel
[MessengerId((ushort)TunnelMessengerIds.SuccessForward)]
public async Task SuccessForward(IConnection connection)
{
- TunnelTransportInfo tunnelTransportInfo = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(tunnelTransportInfo.Remote.MachineId, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ TunnelTransportInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, info.Remote.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
- tunnelTransportInfo.Local.MachineName = cache1.MachineName;
- tunnelTransportInfo.Remote.MachineName = cache.MachineName;
+ info.Local.MachineName = from.MachineName;
+ info.Remote.MachineName = to.MachineName;
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)TunnelMessengerIds.Success,
- Payload = serializer.Serialize(tunnelTransportInfo)
+ Payload = serializer.Serialize(info)
}).ConfigureAwait(false);
}
}
@@ -210,12 +210,12 @@ namespace linker.messenger.tunnel
[MessengerId((ushort)TunnelMessengerIds.RouteLevelForward)]
public async Task RouteLevelForward(IConnection connection)
{
- TunnelSetRouteLevelInfo tunnelTransportInfo = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(tunnelTransportInfo.MachineId, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ TunnelSetRouteLevelInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)TunnelMessengerIds.RouteLevel,
Payload = connection.ReceiveRequestWrap.Payload
}).ConfigureAwait(false);
@@ -226,12 +226,12 @@ namespace linker.messenger.tunnel
public void NetworkForward(IConnection connection)
{
string machineid = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(machineid, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheTo.GroupId == cacheFrom.GroupId)
+ if (signCaching.TryGet(connection.Id, machineid, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
_ = messengerSender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)TunnelMessengerIds.Network
}).ContinueWith(async (result) =>
{
diff --git a/src/linker.messenger.tunnel/linker.messenger.tunnel.csproj b/src/linker.messenger.tunnel/linker.messenger.tunnel.csproj
index cc929988..39e0e82f 100644
--- a/src/linker.messenger.tunnel/linker.messenger.tunnel.csproj
+++ b/src/linker.messenger.tunnel/linker.messenger.tunnel.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger tunnel
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.tuntap/linker.messenger.tuntap.csproj b/src/linker.messenger.tuntap/linker.messenger.tuntap.csproj
index 945a5c44..3e01c9ee 100644
--- a/src/linker.messenger.tuntap/linker.messenger.tuntap.csproj
+++ b/src/linker.messenger.tuntap/linker.messenger.tuntap.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger tuntap
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.tuntap/messenger/TuntapMessenger.cs b/src/linker.messenger.tuntap/messenger/TuntapMessenger.cs
index 8f33bfc9..b26e6d5c 100644
--- a/src/linker.messenger.tuntap/messenger/TuntapMessenger.cs
+++ b/src/linker.messenger.tuntap/messenger/TuntapMessenger.cs
@@ -122,12 +122,12 @@ namespace linker.messenger.tuntap.messenger
[MessengerId((ushort)TuntapMessengerIds.RunForward)]
public async Task RunForward(IConnection connection)
{
- string name = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(name, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ string machineid = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, machineid, out SignCacheInfo from, out SignCacheInfo to))
{
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
Timeout = 3000,
MessengerId = (ushort)TuntapMessengerIds.Run
}).ConfigureAwait(false);
@@ -142,12 +142,12 @@ namespace linker.messenger.tuntap.messenger
[MessengerId((ushort)TuntapMessengerIds.StopForward)]
public async Task StopForward(IConnection connection)
{
- string name = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(name, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ string machineid = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, machineid, out SignCacheInfo from, out SignCacheInfo to))
{
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
Timeout = 3000,
MessengerId = (ushort)TuntapMessengerIds.Stop
}).ConfigureAwait(false);
@@ -163,11 +163,11 @@ namespace linker.messenger.tuntap.messenger
public async Task UpdateForward(IConnection connection)
{
TuntapInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
Timeout = 3000,
MessengerId = (ushort)TuntapMessengerIds.Update,
Payload = connection.ReceiveRequestWrap.Payload
@@ -228,7 +228,7 @@ namespace linker.messenger.tuntap.messenger
{
uint requiestid = connection.ReceiveRequestWrap.RequestId;
- List caches = signCaching.Get(cache.GroupId);
+ List caches = signCaching.Get(cache);
IEnumerable> tasks = caches.Where(c => c.MachineId != connection.Id && c.Connected).Select(c => messengerSender.SendOnly(new MessageRequestWrap
{
Connection = c.Connection,
@@ -260,13 +260,13 @@ namespace linker.messenger.tuntap.messenger
public void SubscribeForwardTestForward(IConnection connection)
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
- TuntapForwardTestWrapInfo tuntapForwardTestWrapInfo = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(tuntapForwardTestWrapInfo.MachineId, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ TuntapForwardTestWrapInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
messengerSender.SendReply(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)TuntapMessengerIds.SubscribeForwardTest,
Payload = connection.ReceiveRequestWrap.Payload
}).ContinueWith((result) =>
@@ -299,12 +299,12 @@ namespace linker.messenger.tuntap.messenger
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
string machineid = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(machineid, out SignCacheInfo cache) && signCaching.TryGet(connection.Id, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ if (signCaching.TryGet(connection.Id, machineid, out SignCacheInfo from, out SignCacheInfo to))
{
messengerSender.SendReply(new MessageRequestWrap
{
- Connection = cache.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)TuntapMessengerIds.Routes,
}).ContinueWith((result) =>
{
diff --git a/src/linker.messenger.updater/IUpdaterInstaller.cs b/src/linker.messenger.updater/IUpdaterInstaller.cs
index 084d935f..451ca2d2 100644
--- a/src/linker.messenger.updater/IUpdaterInstaller.cs
+++ b/src/linker.messenger.updater/IUpdaterInstaller.cs
@@ -94,7 +94,7 @@ namespace linker.messenger.updater
foreach (ZipArchiveEntry entry in archive.Entries)
{
- string entryPath = Path.GetFullPath(Path.Join(Helper.currentDirectory, entry.FullName.Substring(entry.FullName.IndexOf('/'))));
+ string entryPath = Path.GetFullPath(Path.Join(Helper.CurrentDirectory, entry.FullName.Substring(entry.FullName.IndexOf('/'))));
if (entryPath.EndsWith('\\') || entryPath.EndsWith('/'))
{
continue;
@@ -178,7 +178,7 @@ namespace linker.messenger.updater
}
private void ClearTempFiles(string path = "./")
{
- string fullPath = Path.Join(Helper.currentDirectory, path);
+ string fullPath = Path.Join(Helper.CurrentDirectory, path);
if (Directory.Exists(fullPath))
{
foreach (var item in Directory.GetFiles(fullPath).Where(c => c.EndsWith(".temp")))
diff --git a/src/linker.messenger.updater/UpdaterApiController.cs b/src/linker.messenger.updater/UpdaterApiController.cs
index 15359c13..4659d9b2 100644
--- a/src/linker.messenger.updater/UpdaterApiController.cs
+++ b/src/linker.messenger.updater/UpdaterApiController.cs
@@ -184,7 +184,7 @@ namespace linker.messenger.updater
{
Connection = signInClientState.Connection,
MessengerId = (ushort)UpdaterMessengerIds.CheckKey,
- Payload = serializer.Serialize(param.Content)
+ Payload = serializer.Serialize(updaterClientStore.SecretKey)
}).ConfigureAwait(false);
return resp.Code == MessageResponeCodes.OK && resp.Data.Span.SequenceEqual(Helper.TrueArray);
}
diff --git a/src/linker.messenger.updater/UpdaterMessenger.cs b/src/linker.messenger.updater/UpdaterMessenger.cs
index 2f5fe06c..72ac5e66 100644
--- a/src/linker.messenger.updater/UpdaterMessenger.cs
+++ b/src/linker.messenger.updater/UpdaterMessenger.cs
@@ -207,9 +207,9 @@ namespace linker.messenger.updater
//本服务器所有
if (confirm.All) machines = signCaching.Get().Where(c => c.MachineId != connection.Id);
//本组所有
- else if (confirm.GroupAll) machines = signCaching.Get(cache.GroupId).Where(c => c.MachineId != connection.Id);
+ else if (confirm.GroupAll) machines = signCaching.Get(cache).Where(c => c.MachineId != connection.Id);
//某一个
- else machines = signCaching.Get(cache.GroupId).Where(c => c.MachineId == confirm.MachineId && c.GroupId == cache.GroupId);
+ else machines = signCaching.Get(cache).Where(c => c.MachineId == confirm.MachineId);
confirm.SecretKey = string.Empty;
if (string.IsNullOrWhiteSpace(confirm.Version))
@@ -246,7 +246,7 @@ namespace linker.messenger.updater
if (signCaching.TryGet(connection.Id, out SignCacheInfo cache))
{
byte[] payload = serializer.Serialize(info.Info);
- foreach (var item in signCaching.Get(cache.GroupId).Where(c => info.ToMachines.Contains(c.MachineId)).Where(c => c.Connected && c.MachineId != connection.Id))
+ foreach (var item in signCaching.Get(cache).Where(c => info.ToMachines.Contains(c.MachineId)).Where(c => c.Connected && c.MachineId != connection.Id))
{
_ = messengerSender.SendOnly(new MessageRequestWrap
{
@@ -265,7 +265,7 @@ namespace linker.messenger.updater
if (signCaching.TryGet(connection.Id, out SignCacheInfo cache))
{
byte[] payload = serializer.Serialize(info.Info);
- foreach (var item in signCaching.Get(cache.GroupId).Where(c => info.ToMachines.Contains(c.MachineId)).Where(c => c.Connected && c.MachineId != connection.Id))
+ foreach (var item in signCaching.Get(cache).Where(c => info.ToMachines.Contains(c.MachineId)).Where(c => c.Connected && c.MachineId != connection.Id))
{
_ = messengerSender.SendOnly(new MessageRequestWrap
{
@@ -286,11 +286,11 @@ namespace linker.messenger.updater
public async Task ExitForward(IConnection connection)
{
string machineId = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(connection.Id, out SignCacheInfo cache) && signCaching.TryGet(machineId, out SignCacheInfo cache1) && cache.GroupId == cache1.GroupId)
+ if (signCaching.TryGet(connection.Id, machineId, out SignCacheInfo from, out SignCacheInfo to))
{
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cache1.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)UpdaterMessengerIds.Exit
}).ConfigureAwait(false);
}
@@ -308,7 +308,7 @@ namespace linker.messenger.updater
if (signCaching.TryGet(connection.Id, out SignCacheInfo cache))
{
byte[] mechineId = serializer.Serialize(connection.Id);
- foreach (var item in signCaching.Get(cache.GroupId).Where(c => c.Connected && c.MachineId != connection.Id))
+ foreach (var item in signCaching.Get(cache).Where(c => c.Connected && c.MachineId != connection.Id))
{
_ = messengerSender.SendOnly(new MessageRequestWrap
{
@@ -337,8 +337,8 @@ namespace linker.messenger.updater
}
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 && c.MachineId != connection.Id);
+ ? signCaching.Get(cache).Where(c => c.Connected && c.MachineId != connection.Id)
+ : signCaching.Get(cache).Where(c => c.Connected && c.MachineId == toMachineId && c.MachineId != connection.Id);
foreach (var item in clients)
{
diff --git a/src/linker.messenger.updater/linker.messenger.updater.csproj b/src/linker.messenger.updater/linker.messenger.updater.csproj
index 95ff8749..f10676ad 100644
--- a/src/linker.messenger.updater/linker.messenger.updater.csproj
+++ b/src/linker.messenger.updater/linker.messenger.updater.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger updater
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger.wakeup/WakeupMessenger.cs b/src/linker.messenger.wakeup/WakeupMessenger.cs
index a760822a..36649a2f 100644
--- a/src/linker.messenger.wakeup/WakeupMessenger.cs
+++ b/src/linker.messenger.wakeup/WakeupMessenger.cs
@@ -99,12 +99,12 @@ namespace linker.messenger.wakeup
public void GetForward(IConnection connection)
{
WakeupSearchForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
messengerSender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)WakeupMessengerIds.Get,
Payload = serializer.Serialize(info.Data)
}).ContinueWith(async (result) =>
@@ -134,12 +134,12 @@ namespace linker.messenger.wakeup
public async Task AddForward(IConnection connection)
{
WakeupAddForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)WakeupMessengerIds.Add,
Payload = serializer.Serialize(info.Data)
}).ConfigureAwait(false);
@@ -153,12 +153,12 @@ namespace linker.messenger.wakeup
public async Task RemoveForward(IConnection connection)
{
WakeupRemoveForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)WakeupMessengerIds.Remove,
Payload = serializer.Serialize(info.Id)
}).ConfigureAwait(false);
@@ -174,12 +174,12 @@ namespace linker.messenger.wakeup
public async Task SendForward(IConnection connection)
{
WakeupSendForwardInfo info = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(info.MachineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, info.MachineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
await messengerSender.SendOnly(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)WakeupMessengerIds.Send,
Payload = serializer.Serialize(info.Data)
}).ConfigureAwait(false);
@@ -195,12 +195,12 @@ namespace linker.messenger.wakeup
public void ComsForward(IConnection connection)
{
string machineId = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(machineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, machineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
messengerSender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)WakeupMessengerIds.Coms,
}).ContinueWith(async (result) =>
{
@@ -230,12 +230,12 @@ namespace linker.messenger.wakeup
public void HidsForward(IConnection connection)
{
string machineId = serializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span);
- if (signCaching.TryGet(machineId, out SignCacheInfo cacheTo) && signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) && cacheFrom.GroupId == cacheTo.GroupId)
+ if (signCaching.TryGet(connection.Id, machineId, out SignCacheInfo from, out SignCacheInfo to))
{
uint requestid = connection.ReceiveRequestWrap.RequestId;
messengerSender.SendReply(new MessageRequestWrap
{
- Connection = cacheTo.Connection,
+ Connection = to.Connection,
MessengerId = (ushort)WakeupMessengerIds.Hids,
}).ContinueWith(async (result) =>
{
diff --git a/src/linker.messenger.wakeup/linker.messenger.wakeup.csproj b/src/linker.messenger.wakeup/linker.messenger.wakeup.csproj
index 8547ef25..08fb6069 100644
--- a/src/linker.messenger.wakeup/linker.messenger.wakeup.csproj
+++ b/src/linker.messenger.wakeup/linker.messenger.wakeup.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger wakeup
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.messenger/IConnection.cs b/src/linker.messenger/IConnection.cs
index 4ddc3108..94654eb0 100644
--- a/src/linker.messenger/IConnection.cs
+++ b/src/linker.messenger/IConnection.cs
@@ -165,7 +165,7 @@ namespace linker.messenger
#region 回复数据
public Memory ResponseData { get; private set; }
private byte[] responseData;
- private int length = 0;
+ private int length;
public void Write(Memory data)
{
diff --git a/src/linker.messenger/MessengerResolver.cs b/src/linker.messenger/MessengerResolver.cs
index c1499748..36663d54 100644
--- a/src/linker.messenger/MessengerResolver.cs
+++ b/src/linker.messenger/MessengerResolver.cs
@@ -176,7 +176,7 @@ namespace linker.messenger
{
return true;
}
- private IConnection CreateConnection(SslStream stream, NetworkStream networkStream, Socket socket, IPEndPoint local, IPEndPoint remote)
+ private static TcpConnection CreateConnection(SslStream stream, NetworkStream networkStream, Socket socket, IPEndPoint local, IPEndPoint remote)
{
return new TcpConnection(stream, networkStream, socket, local, remote)
{
diff --git a/src/linker.messenger/MessengerSender.cs b/src/linker.messenger/MessengerSender.cs
index 0c072af7..35217238 100644
--- a/src/linker.messenger/MessengerSender.cs
+++ b/src/linker.messenger/MessengerSender.cs
@@ -40,8 +40,8 @@ namespace linker.messenger
///
public class MessengerSender : IMessengerSender
{
- public NumberSpaceUInt32 requestIdNumberSpace = new NumberSpaceUInt32(0);
- private ConcurrentDictionary sends = new ConcurrentDictionary();
+ public readonly NumberSpaceUInt32 requestIdNumberSpace = new NumberSpaceUInt32(0);
+ private readonly ConcurrentDictionary sends = new ConcurrentDictionary();
public MessengerSender()
{
diff --git a/src/linker.messenger/linker.messenger.csproj b/src/linker.messenger/linker.messenger.csproj
index c906cec9..bcbcb72e 100644
--- a/src/linker.messenger/linker.messenger.csproj
+++ b/src/linker.messenger/linker.messenger.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker messenger
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.snat/LinkerSrcNat.cs b/src/linker.snat/LinkerSrcNat.cs
index 1740a919..b2902145 100644
--- a/src/linker.snat/LinkerSrcNat.cs
+++ b/src/linker.snat/LinkerSrcNat.cs
@@ -122,7 +122,7 @@ namespace linker.snat
}
return false;
}
- private IPAddress GetDefaultInterface()
+ private static IPAddress GetDefaultInterface()
{
string[] lines = CommandHelper.Windows(string.Empty, new string[] { $"route print" }).Split(Environment.NewLine);
foreach (var item in lines)
@@ -135,7 +135,7 @@ namespace linker.snat
}
return null;
}
- private HashSet GetInterfaces()
+ private static HashSet GetInterfaces()
{
return NetworkInterface.GetAllNetworkInterfaces().Select(c =>
{
@@ -155,7 +155,7 @@ namespace linker.snat
/// 过滤条件,只过滤一定的数据包
///
///
- private string BuildFilter(AddrInfo[] dsts)
+ private static string BuildFilter(AddrInfo[] dsts)
{
IEnumerable ipRanges = dsts.Select(c => $"(ip.SrcAddr >= {c.NetworkIP} and ip.SrcAddr <= {c.BroadcastIP})");
return $"inbound and ({string.Join(" or ", ipRanges)})";
@@ -460,7 +460,7 @@ namespace linker.snat
/// 申请一个新的端口
///
///
- private ushort ApplyNewPort()
+ private static ushort ApplyNewPort()
{
using Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
diff --git a/src/linker.snat/WinDivert.cs b/src/linker.snat/WinDivert.cs
index b2958f5d..69e18e2e 100644
--- a/src/linker.snat/WinDivert.cs
+++ b/src/linker.snat/WinDivert.cs
@@ -421,7 +421,7 @@ namespace linker.snat
}
}
- internal class SafeWinDivertHandle : SafeHandleZeroOrMinusOneIsInvalid
+ internal sealed class SafeWinDivertHandle : SafeHandleZeroOrMinusOneIsInvalid
{
internal SafeWinDivertHandle(IntPtr existingHandle, bool ownsHandle) : base(ownsHandle) => SetHandle(existingHandle);
protected override bool ReleaseHandle() => NativeMethods.WinDivertClose(handle);
diff --git a/src/linker.snat/linker.snat.csproj b/src/linker.snat/linker.snat.csproj
index 004a2742..fe551573 100644
--- a/src/linker.snat/linker.snat.csproj
+++ b/src/linker.snat/linker.snat.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker snat
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.tun/linker.tun.csproj b/src/linker.tun/linker.tun.csproj
index 3d054d91..76ac9ba0 100644
--- a/src/linker.tun/linker.tun.csproj
+++ b/src/linker.tun/linker.tun.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker tun
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.tunnel/TunnelTransfer.cs b/src/linker.tunnel/TunnelTransfer.cs
index 42cb1f48..6cbe3739 100644
--- a/src/linker.tunnel/TunnelTransfer.cs
+++ b/src/linker.tunnel/TunnelTransfer.cs
@@ -21,7 +21,7 @@ namespace linker.tunnel
public ConcurrentDictionary Operating => operating.StringKeyValue;
private OperatingMultipleManager operating = new OperatingMultipleManager();
private uint flowid = 1;
- private Dictionary>> OnConnected { get; } = new Dictionary>>();
+ private Dictionary>> OnConnectedDic { get; } = new Dictionary>>();
private readonly ITunnelMessengerAdapter tunnelMessengerAdapter;
@@ -44,7 +44,7 @@ namespace linker.tunnel
foreach (var item in transports)
{
- item.OnConnected = _OnConnected;
+ item.OnConnected = OnConnected;
}
_ = RebuildTransports();
}
@@ -169,10 +169,10 @@ namespace linker.tunnel
///
public void SetConnectedCallback(string transactionId, Action callback)
{
- if (OnConnected.TryGetValue(transactionId, out List> callbacks) == false)
+ if (OnConnectedDic.TryGetValue(transactionId, out List> callbacks) == false)
{
callbacks = new List>();
- OnConnected[transactionId] = callbacks;
+ OnConnectedDic[transactionId] = callbacks;
}
callbacks.Add(callback);
}
@@ -183,7 +183,7 @@ namespace linker.tunnel
///
public void RemoveConnectedCallback(string transactionId, Action callback)
{
- if (OnConnected.TryGetValue(transactionId, out List> callbacks))
+ if (OnConnectedDic.TryGetValue(transactionId, out List> callbacks))
{
callbacks.Remove(callback);
}
@@ -289,7 +289,7 @@ namespace linker.tunnel
ITunnelConnection connection = await transport.ConnectAsync(tunnelTransportInfo).ConfigureAwait(false);
if (connection != null)
{
- _OnConnected(connection);
+ OnConnected(connection);
return connection;
}
}
@@ -429,12 +429,12 @@ namespace linker.tunnel
}
- private void OnConnecting(TunnelTransportInfo tunnelTransportInfo)
+ private static void OnConnecting(TunnelTransportInfo tunnelTransportInfo)
{
if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG)
LoggerHelper.Instance.Info($"tunnel connecting {tunnelTransportInfo.Remote.MachineId}->{tunnelTransportInfo.Remote.MachineName}");
}
- private void OnConnectBegin(TunnelTransportInfo tunnelTransportInfo)
+ private static void OnConnectBegin(TunnelTransportInfo tunnelTransportInfo)
{
if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG)
LoggerHelper.Instance.Info($"tunnel connecting from {tunnelTransportInfo.Remote.MachineId}->{tunnelTransportInfo.Remote.MachineName}");
@@ -443,21 +443,21 @@ namespace linker.tunnel
/// 连接成功
///
///
- private void _OnConnected(ITunnelConnection connection)
+ private void OnConnected(ITunnelConnection connection)
{
if (connection == null) return;
if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG)
LoggerHelper.Instance.Debug($"tunnel connect {connection.RemoteMachineId}->{connection.RemoteMachineName} success->{connection.IPEndPoint}");
//调用以下别人注册的回调
- if (OnConnected.TryGetValue(Helper.GlobalString, out List> callbacks))
+ if (OnConnectedDic.TryGetValue(Helper.GlobalString, out List> callbacks))
{
foreach (var item in callbacks)
{
item(connection);
}
}
- if (OnConnected.TryGetValue(connection.TransactionId, out callbacks))
+ if (OnConnectedDic.TryGetValue(connection.TransactionId, out callbacks))
{
foreach (var item in callbacks)
{
@@ -465,7 +465,7 @@ namespace linker.tunnel
}
}
}
- private void OnConnectFail(TunnelTransportInfo tunnelTransportInfo)
+ private static void OnConnectFail(TunnelTransportInfo tunnelTransportInfo)
{
if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG)
LoggerHelper.Instance.Error($"tunnel connect {tunnelTransportInfo.Remote.MachineId} fail");
@@ -520,7 +520,7 @@ namespace linker.tunnel
tunnelTransportInfo.RemoteEndPoints = eps;
}
- private string BuildKey(string remoteMachineId, string transactionId)
+ private static string BuildKey(string remoteMachineId, string transactionId)
{
return $"{remoteMachineId}@{transactionId}";
}
@@ -589,7 +589,7 @@ namespace linker.tunnel
{
return backgroundDic.ContainsKey(GetBackgroundKey(remoteMachineId, transactionId));
}
- private string GetBackgroundKey(string remoteMachineId, string transactionId)
+ private static string GetBackgroundKey(string remoteMachineId, string transactionId)
{
return $"{remoteMachineId}@{transactionId}";
}
diff --git a/src/linker.tunnel/TunnelUpnpTransfer.cs b/src/linker.tunnel/TunnelUpnpTransfer.cs
index 94d1eaec..90f7eea3 100644
--- a/src/linker.tunnel/TunnelUpnpTransfer.cs
+++ b/src/linker.tunnel/TunnelUpnpTransfer.cs
@@ -32,7 +32,7 @@ namespace linker.tunnel
}
- private void LoopDiscovery()
+ private static void LoopDiscovery()
{
TimerHelper.SetIntervalLong(() =>
{
@@ -50,7 +50,7 @@ namespace linker.tunnel
}
private void AddMap()
{
- if (natDevices.Count == 0 || MapInfo == null) return;
+ if (natDevices.IsEmpty || MapInfo == null) return;
TimerHelper.Async(async () =>
{
diff --git a/src/linker.tunnel/linker.tunnel.csproj b/src/linker.tunnel/linker.tunnel.csproj
index 2451a6bf..3d657b94 100644
--- a/src/linker.tunnel/linker.tunnel.csproj
+++ b/src/linker.tunnel/linker.tunnel.csproj
@@ -16,9 +16,9 @@
https://github.com/snltty/linker
https://github.com/snltty/linker
linker tunnel
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
diff --git a/src/linker.tunnel/transport/ITunnelTransport.cs b/src/linker.tunnel/transport/ITunnelTransport.cs
index 6d99b328..2ab0c794 100644
--- a/src/linker.tunnel/transport/ITunnelTransport.cs
+++ b/src/linker.tunnel/transport/ITunnelTransport.cs
@@ -136,7 +136,7 @@ namespace linker.tunnel.transport
///
/// 是否禁用
///
- public bool Disabled { get; set; } = false;
+ public bool Disabled { get; set; }
///
/// 是否反向打洞
///
@@ -144,7 +144,7 @@ namespace linker.tunnel.transport
///
/// 禁止修改反向打洞配置
///
- public bool DisableReverse { get; set; } = false;
+ public bool DisableReverse { get; set; }
///
/// 是否开启ssl
///
@@ -152,7 +152,7 @@ namespace linker.tunnel.transport
///
/// 禁止修改ssl配置
///
- public bool DisableSSL { get; set; } = false;
+ public bool DisableSSL { get; set; }
///
/// 缓冲区大小
///
diff --git a/src/linker.tunnel/transport/TransportMsQuic.cs b/src/linker.tunnel/transport/TransportMsQuic.cs
index a39d040f..8f81fab0 100644
--- a/src/linker.tunnel/transport/TransportMsQuic.cs
+++ b/src/linker.tunnel/transport/TransportMsQuic.cs
@@ -42,7 +42,7 @@ namespace linker.tunnel.transport
private ConcurrentDictionary stateDic = new ConcurrentDictionary();
private byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.ttl");
private byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.end");
- private IPEndPoint quicListenEP = null;
+ private IPEndPoint quicListenEP;
private readonly ITunnelMessengerAdapter tunnelMessengerAdapter;
public TransportMsQuic(ITunnelMessengerAdapter tunnelMessengerAdapter)
@@ -285,7 +285,7 @@ namespace linker.tunnel.transport
socket.WindowsUdpBug();
socket.ReuseBind(local);
socket.Ttl = (short)(tunnelTransportInfo.Local.RouteLevel);
- _ = socket.SendToAsync(new byte[0], SocketFlags.None, ip);
+ _ = socket.SendToAsync(Array.Empty(), SocketFlags.None, ip);
socket.SafeClose();
}
else
@@ -557,7 +557,7 @@ namespace linker.tunnel.transport
///
///
///
- private async Task CopyToAsync(byte bufferSize, Socket local, Socket remote, IPEndPoint remoteEp)
+ private static async Task CopyToAsync(byte bufferSize, Socket local, Socket remote, IPEndPoint remoteEp)
{
byte[] buffer = new byte[(1 << bufferSize) * 1024];
IPEndPoint tempEp = new IPEndPoint(IPAddress.Any, IPEndPoint.MinPort);
diff --git a/src/linker.tunnel/transport/TransportTcpNutssb.cs b/src/linker.tunnel/transport/TransportTcpNutssb.cs
index fc5f862b..82ff1973 100644
--- a/src/linker.tunnel/transport/TransportTcpNutssb.cs
+++ b/src/linker.tunnel/transport/TransportTcpNutssb.cs
@@ -215,7 +215,7 @@ namespace linker.tunnel.transport
{
return true;
}
- private void BindAndTTL(TunnelTransportInfo tunnelTransportInfo)
+ private static void BindAndTTL(TunnelTransportInfo tunnelTransportInfo)
{
IEnumerable sockets = tunnelTransportInfo.RemoteEndPoints.Select(ip =>
{
diff --git a/src/linker.tunnel/transport/TransportUdp.cs b/src/linker.tunnel/transport/TransportUdp.cs
index 58ef56d3..cebd5cdc 100644
--- a/src/linker.tunnel/transport/TransportUdp.cs
+++ b/src/linker.tunnel/transport/TransportUdp.cs
@@ -337,7 +337,7 @@ namespace linker.tunnel.transport
socket.WindowsUdpBug();
socket.ReuseBind(local);
socket.Ttl = (short)(tunnelTransportInfo.Local.RouteLevel);
- _ = socket.SendToAsync(new byte[0], SocketFlags.None, ip);
+ _ = socket.SendToAsync(Array.Empty(), SocketFlags.None, ip);
socket.SafeClose();
}
catch (Exception ex)
diff --git a/src/linker.tunnel/wanport/TunnelWanPortProtocolLinker.cs b/src/linker.tunnel/wanport/TunnelWanPortProtocolLinker.cs
index c4948097..5711b881 100644
--- a/src/linker.tunnel/wanport/TunnelWanPortProtocolLinker.cs
+++ b/src/linker.tunnel/wanport/TunnelWanPortProtocolLinker.cs
@@ -73,7 +73,7 @@ namespace linker.tunnel.wanport
return null;
}
- private Memory BuildSendData(byte[] buffer, byte i)
+ private static Memory BuildSendData(byte[] buffer, byte i)
{
byte[] temp = Encoding.UTF8.GetBytes(Environment.TickCount64.ToString().Md5().SubStr(0, new Random().Next(16, 32)));
temp.AsMemory().CopyTo(buffer);
@@ -139,7 +139,7 @@ namespace linker.tunnel.wanport
return null;
}
- private Memory BuildSendData(byte[] buffer, byte i)
+ private static Memory BuildSendData(byte[] buffer, byte i)
{
byte[] temp = Encoding.UTF8.GetBytes(Environment.TickCount64.ToString().Md5().SubStr(0, new Random().Next(16, 32)));
temp.AsMemory().CopyTo(buffer);
diff --git a/src/linker.web/src/apis/cdkey.js b/src/linker.web/src/apis/cdkey.js
new file mode 100644
index 00000000..8855d160
--- /dev/null
+++ b/src/linker.web/src/apis/cdkey.js
@@ -0,0 +1,29 @@
+import { sendWebsocketMsg } from './request'
+
+export const getSecretKey = () => {
+ return sendWebsocketMsg('cdkey/GetSecretKey');
+}
+export const setSecretKey = (data) => {
+ return sendWebsocketMsg('cdkey/SetSecretKey', data);
+}
+export const cdkeyAccess = () => {
+ return sendWebsocketMsg('cdkey/AccessCdkey');
+}
+export const cdkeyPage = (data) => {
+ return sendWebsocketMsg('cdkey/PageCdkey', data);
+}
+export const cdkeyAdd = (data) => {
+ return sendWebsocketMsg('cdkey/AddCdkey', data);
+}
+export const cdkeyDel = (data) => {
+ return sendWebsocketMsg('cdkey/DelCdkey', data);
+}
+export const cdkeyMy = (data) => {
+ return sendWebsocketMsg('cdkey/MyCdkey', data);
+}
+export const cdkeyTest = (data) => {
+ return sendWebsocketMsg('cdkey/TestCdkey', data);
+}
+export const cdkeyImport = (data) => {
+ return sendWebsocketMsg('cdkey/ImportCdkey', data);
+}
\ No newline at end of file
diff --git a/src/linker.web/src/apis/relay.js b/src/linker.web/src/apis/relay.js
index ad1d5f52..05d40283 100644
--- a/src/linker.web/src/apis/relay.js
+++ b/src/linker.web/src/apis/relay.js
@@ -12,27 +12,6 @@ export const relayOperating = () => {
export const relayConnect = (data) => {
return sendWebsocketMsg('relay/Connect', data);
}
-export const relayCdkeyAccess = () => {
- return sendWebsocketMsg('relay/AccessCdkey');
-}
-export const relayCdkeyPage = (data) => {
- return sendWebsocketMsg('relay/PageCdkey', data);
-}
-export const relayCdkeyAdd = (data) => {
- return sendWebsocketMsg('relay/AddCdkey', data);
-}
-export const relayCdkeyDel = (data) => {
- return sendWebsocketMsg('relay/DelCdkey', data);
-}
-export const relayCdkeyMy = (data) => {
- return sendWebsocketMsg('relay/MyCdkey', data);
-}
-export const relayCdkeyTest = (data) => {
- return sendWebsocketMsg('relay/TestCdkey', data);
-}
-export const relayCdkeyImport = (data) => {
- return sendWebsocketMsg('relay/ImportCdkey', data);
-}
export const relayUpdateNode = (data) => {
return sendWebsocketMsg('relay/UpdateNode', data);
}
diff --git a/src/linker.web/src/lang/en-us.js b/src/linker.web/src/lang/en-us.js
index d323bafd..55fb5052 100644
--- a/src/linker.web/src/lang/en-us.js
+++ b/src/linker.web/src/lang/en-us.js
@@ -156,75 +156,78 @@ export default {
'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.cdkeySecretKey': 'Cdkey secretKey',
+ 'server.cdkeyText': 'The cdkey manager can be used when the key is correct',
+ 'server.myCdkey': 'My CDKEY',
+ 'server.cdkey': 'Manager CDKEY',
+ 'server.addCdkey': 'Add CDKEY',
- 'server.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.cdkeyUserId': 'UserId',
+ 'server.cdkeyBandwidth': 'Bandwidth',
+ 'server.cdkeyBytes': 'Bytes',
+ 'server.cdkeyPay': 'Pay',
+ 'server.cdkeyOrder': 'Order',
+ 'server.cdkeyPrice': 'Price',
+ 'server.cdkeyPayPrice': 'Pay price',
+ 'server.cdkeyCostPrice': 'Cost price',
+ 'server.cdkeyUserPrice': 'User price',
+ 'server.cdkeyOrderId': 'OrderNo',
+ 'server.cdkeyContact': 'Email',
+ 'server.cdkeyRemark': 'Remark',
- 'server.relayCdkeyDuration': 'Duration',
+ 'server.cdkeyAddTime': 'Add',
+ 'server.cdkeyStartTime': 'Start',
+ 'server.cdkeyEndTime': 'End Time',
+ 'server.cdkeyUseTime': 'Use Time',
+ 'server.cdkeyYear': 'Year',
+ 'server.cdkeyMonth': 'Month',
+ 'server.cdkeyDay': 'Day',
+ 'server.cdkeyHour': 'Hour',
+ 'server.cdkeyMin': 'Min',
+ 'server.cdkeySec': 'Sec',
- 'server.relayCdkeyOper': 'Oper',
- 'server.relayCdkeyDelConfirm': 'Are you sure to delete?',
+ 'server.cdkeyDuration': 'Duration',
- '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.cdkeyOper': 'Oper',
+ 'server.cdkeyDelConfirm': 'Are you sure to delete?',
- '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.cdkeyFlagAll': 'All',
+ 'server.cdkeyFlagTimein': 'In end time',
+ 'server.cdkeyFlagTimeout': 'Out end time',
+ 'server.cdkeyFlagBytesin': 'Has bytes',
+ 'server.cdkeyFlagBytesout': 'Not have bytes',
+ 'server.cdkeyFlagDeleted': 'Deleted',
+ 'server.cdkeyFlagUnDeleted': 'Not deleted',
- 'server.relayCdkeyImport': 'Import CDKEY',
- 'server.relayCdkeyImportParse': 'Decode fail',
- 'server.relayCdkeyImportField': 'Field invalid',
- 'server.relayCdkeyImportNetwork': 'Network error',
- 'server.relayCdkeyImportOrderId': 'OrderNo has exists',
+ 'server.cdkeyTestTitle': 'Test CDKEY',
+ 'server.cdkeyTestKey': 'CDKEY',
+ 'server.cdkeyTestGB': 'GB',
+ 'server.cdkeyTestGBError': 'Must > 0',
+ 'server.cdkeyTestSpeed': 'Mbps',
+ 'server.cdkeyTestSpeedError': 'Must > 0',
+ 'server.cdkeyTestTime': 'Time',
+ 'server.cdkeyTestTimeError': 'Format error',
+ 'server.cdkeyTestUserId': 'UserId',
+ 'server.cdkeyTestUserIdError': 'UserId error',
+ 'server.cdkeyTestOrderId': 'OrderNo',
+ 'server.cdkeyTestOrderIdError': 'OrderNo is empty',
+ 'server.cdkeyTestContact': 'Contact',
+ 'server.cdkeyTestCostPrice': 'Cost',
+ 'server.cdkeyTestPrice': 'Price',
+ 'server.cdkeyTestUserPrice': 'User price',
+ 'server.cdkeyTestPayPrice': 'Pay',
+ 'server.cdkeyTestCount': 'Count',
+ 'server.cdkeyTestCountError': 'Must > 0',
+ 'server.cdkeyTestType': 'Type',
+ 'server.cdkeyTestTypeError': 'Must be relay',
+ 'server.cdkeyTestParseError': 'decode fail',
+
+ 'server.cdkeyImport': 'Import CDKEY',
+ 'server.cdkeyImportParse': 'Decode fail',
+ 'server.cdkeyImportField': 'Field invalid',
+ 'server.cdkeyImportNetwork': 'Network error',
+ 'server.cdkeyImportOrderId': 'OrderNo has exists',
'server.sforwardSecretKey': 'Server forward secretKey',
diff --git a/src/linker.web/src/lang/zh-cn.js b/src/linker.web/src/lang/zh-cn.js
index 725aea5d..d14d6a46 100644
--- a/src/linker.web/src/lang/zh-cn.js
+++ b/src/linker.web/src/lang/zh-cn.js
@@ -251,75 +251,74 @@ export default {
'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.cdkeySecretKey': 'Cdkey密钥',
+ 'server.cdkeyText': '密钥正确时可管理cdkey',
+ 'server.myCdkey': '我的CDKEY',
+ 'server.cdkey': '管理CDKEY',
+ 'server.addCdkey': '添加CDKEY',
+ 'server.cdkeyUserId': '用户标识',
+ 'server.cdkeyBandwidth': '带宽',
+ 'server.cdkeyBytes': '流量',
+ 'server.cdkeyPay': '支付',
+ 'server.cdkeyPrice': '原价',
+ 'server.cdkeyPayPrice': '支付',
+ 'server.cdkeyCostPrice': '成本',
+ 'server.cdkeyUserPrice': '会员价',
+ 'server.cdkeyOrder': '订单',
+ 'server.cdkeyOrderId': '订单号',
+ 'server.cdkeyContact': '邮箱',
+ 'server.cdkeyRemark': '备注',
- 'server.relayCdkeyAddTime': '添加',
- 'server.relayCdkeyStartTime': '开始',
- 'server.relayCdkeyEndTime': '有效时间',
- 'server.relayCdkeyUseTime': '最后使用',
- 'server.relayCdkeyYear': '年',
- 'server.relayCdkeyMonth': '月',
- 'server.relayCdkeyDay': '日',
- 'server.relayCdkeyHour': '时',
- 'server.relayCdkeyMin': '分',
- 'server.relayCdkeySec': '秒',
+ 'server.cdkeyAddTime': '添加',
+ 'server.cdkeyStartTime': '开始',
+ 'server.cdkeyEndTime': '有效时间',
+ 'server.cdkeyUseTime': '最后使用',
+ 'server.cdkeyYear': '年',
+ 'server.cdkeyMonth': '月',
+ 'server.cdkeyDay': '日',
+ 'server.cdkeyHour': '时',
+ 'server.cdkeyMin': '分',
+ 'server.cdkeySec': '秒',
+ 'server.cdkeyDuration': '持续时间',
+ 'server.cdkeyOper': '操作',
+ 'server.cdkeyDelConfirm': '确认删除吗?',
+ 'server.cdkeyFlagAll': '全部',
+ 'server.cdkeyFlagTimein': '有效期内',
+ 'server.cdkeyFlagTimeout': '有效期外',
+ 'server.cdkeyFlagBytesin': '剩余',
+ 'server.cdkeyFlagBytesout': '已用完',
+ 'server.cdkeyFlagDeleted': '已删除',
+ 'server.cdkeyFlagUnDeleted': '未删除',
- 'server.relayCdkeyDuration': '持续时间',
+ 'server.cdkeyTestTitle': '测试解密CDKEY',
+ 'server.cdkeyTestKey': 'CDKEY',
+ 'server.cdkeyTestGB': '流量',
+ 'server.cdkeyTestGBError': '流量要大于0',
+ 'server.cdkeyTestSpeed': '带宽Mbps',
+ 'server.cdkeyTestSpeedError': '带宽要大于0',
+ 'server.cdkeyTestTime': '持续时间',
+ 'server.cdkeyTestTimeError': '格式错误',
+ 'server.cdkeyTestUserId': '用户标识',
+ 'server.cdkeyTestUserIdError': '用户标识不正确',
+ 'server.cdkeyTestOrderId': '订单',
+ 'server.cdkeyTestOrderIdError': '订单号不能为空',
+ 'server.cdkeyTestContact': '联系方式',
+ 'server.cdkeyTestCostPrice': '成本',
+ 'server.cdkeyTestPrice': '原价',
+ 'server.cdkeyTestUserPrice': '会员价',
+ 'server.cdkeyTestPayPrice': '支付',
+ 'server.cdkeyTestCount': '数量',
+ 'server.cdkeyTestCountError': '数量要大于0',
+ 'server.cdkeyTestType': '类别',
+ 'server.cdkeyTestTypeError': '类别应该是Relay',
+ 'server.cdkeyTestParseError': '解密失败',
- 'server.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.cdkeyImport': '导入CDKEY',
+ 'server.cdkeyImportParse': '解密失败',
+ 'server.cdkeyImportField': '字段有误',
+ 'server.cdkeyImportNetwork': '网络错误',
+ 'server.cdkeyImportOrderId': '订单号已存在',
'server.sforwardSecretKey': '服务器穿透密钥',
'server.sforwardText': '当密钥正确是可用',
diff --git a/src/linker.web/src/views/full/server/Cdkey.vue b/src/linker.web/src/views/full/server/Cdkey.vue
new file mode 100644
index 00000000..0cf016cc
--- /dev/null
+++ b/src/linker.web/src/views/full/server/Cdkey.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+ {{$t('server.cdkeyText')}}
+
+
+
+
+
\ No newline at end of file
diff --git a/src/linker.web/src/views/full/server/RelayServers.vue b/src/linker.web/src/views/full/server/RelayServers.vue
index 62d4dbca..e655f035 100644
--- a/src/linker.web/src/views/full/server/RelayServers.vue
+++ b/src/linker.web/src/views/full/server/RelayServers.vue
@@ -10,13 +10,13 @@
-
+
{{$t('server.relayNodes')}} : {{state.nodes.length}}
-
@@ -28,7 +28,7 @@
{{ scope.row.Name }}
-
+
,tcp
,udp
@@ -79,17 +79,17 @@
+
+
\ No newline at end of file
diff --git a/src/linker.web/src/views/full/server/relayCdkey/Manager.vue b/src/linker.web/src/views/full/server/cdkey/Manager.vue
similarity index 73%
rename from src/linker.web/src/views/full/server/relayCdkey/Manager.vue
rename to src/linker.web/src/views/full/server/cdkey/Manager.vue
index 2b7ca4e3..deeccf52 100644
--- a/src/linker.web/src/views/full/server/relayCdkey/Manager.vue
+++ b/src/linker.web/src/views/full/server/cdkey/Manager.vue
@@ -1,12 +1,12 @@
-
+
-
{{$t('server.relayCdkeyUserId')}}
-
{{$t('server.relayCdkeyOrderId')}}
-
{{$t('server.relayCdkeyContact')}}
-
{{$t('server.relayCdkeyRemark')}}
+
{{$t('server.cdkeyUserId')}}
+
{{$t('server.cdkeyOrderId')}}
+
{{$t('server.cdkeyContact')}}
+
{{$t('server.cdkeyRemark')}}
@@ -26,38 +26,38 @@
-
+
{{ scope.row.Bandwidth }}Mbps
-
+
{{ parseSpeed(scope.row.LastBytes) }}
{{ parseSpeed(scope.row.MaxBytes) }}
-
+
- {{$t('server.relayCdkeyPayPrice')}}.{{ scope.row.PayPrice }}/{{$t('server.relayCdkeyPrice')}}.{{ scope.row.Price }}
- {{$t('server.relayCdkeyUserPrice')}}.{{ scope.row.UserPrice }}/{{$t('server.relayCdkeyCostPrice')}}.{{ scope.row.CostPrice }}
+ {{$t('server.cdkeyPayPrice')}}.{{ scope.row.PayPrice }}/{{$t('server.cdkeyPrice')}}.{{ scope.row.Price }}
+ {{$t('server.cdkeyUserPrice')}}.{{ scope.row.UserPrice }}/{{$t('server.cdkeyCostPrice')}}.{{ scope.row.CostPrice }}
-
+
{{ scope.row.OrderId }}
{{ scope.row.Contact }}
-
-
+
+
-
+
-
+
-
+
-
+
@@ -79,7 +79,7 @@
-
+
@@ -88,12 +88,12 @@ import { injectGlobalData } from '@/provide';
import { onMounted, reactive, watch } from 'vue'
import { Delete,Plus,Search,Warning } from '@element-plus/icons-vue';
import { useI18n } from 'vue-i18n';
-import { relayCdkeyDel,relayCdkeyPage } from '@/apis/relay';
+import { cdkeyDel,cdkeyPage } from '@/apis/cdkey';
import Flags from './Flags.vue';
import Add from './Add.vue';
import Test from './Test.vue';
export default {
- props: ['modelValue'],
+ props: ['modelValue','type'],
emits: ['update:modelValue'],
components:{Delete,Plus,Search ,Flags,Add,Test,Warning},
setup(props,{emit}) {
@@ -109,6 +109,7 @@ export default {
OrderId:'',
Contact:'',
Remark:'',
+ Type:props.type,
Flag:0
},
list:{
@@ -142,7 +143,7 @@ export default {
handleSearch();
}
const handleSearch = ()=>{
- relayCdkeyPage(state.page).then((res)=>{
+ cdkeyPage(state.page).then((res)=>{
state.list = res;
}).catch(()=>{})
}
@@ -157,7 +158,7 @@ export default {
}
const handleDel = (row)=>{
- relayCdkeyDel(row.Id).then((res)=>{
+ cdkeyDel(row.Id).then((res)=>{
handleSearch();
}).catch(()=>{})
}
diff --git a/src/linker.web/src/views/full/server/relayCdkey/My.vue b/src/linker.web/src/views/full/server/cdkey/My.vue
similarity index 74%
rename from src/linker.web/src/views/full/server/relayCdkey/My.vue
rename to src/linker.web/src/views/full/server/cdkey/My.vue
index a3e142ea..b7feefd2 100644
--- a/src/linker.web/src/views/full/server/relayCdkey/My.vue
+++ b/src/linker.web/src/views/full/server/cdkey/My.vue
@@ -1,11 +1,11 @@
-
+
-
{{$t('server.relayCdkeyOrderId')}}
-
{{$t('server.relayCdkeyContact')}}
-
{{$t('server.relayCdkeyRemark')}}
+
{{$t('server.cdkeyOrderId')}}
+
{{$t('server.cdkeyContact')}}
+
{{$t('server.cdkeyRemark')}}
@@ -20,39 +20,39 @@
-
+
{{ scope.row.Bandwidth }}Mbps
-
+
{{ parseSpeed(scope.row.LastBytes) }}
{{ parseSpeed(scope.row.MaxBytes) }}
-
+
- {{$t('server.relayCdkeyPayPrice')}}.{{ scope.row.PayPrice }}/{{$t('server.relayCdkeyPrice')}}.{{ scope.row.Price }}
- {{$t('server.relayCdkeyUserPrice')}}.{{ scope.row.UserPrice }}/{{$t('server.relayCdkeyCostPrice')}}.{{ scope.row.CostPrice }}
+ {{$t('server.cdkeyPayPrice')}}.{{ scope.row.PayPrice }}/{{$t('server.cdkeyPrice')}}.{{ scope.row.Price }}
+ {{$t('server.cdkeyUserPrice')}}.{{ scope.row.UserPrice }}/{{$t('server.cdkeyCostPrice')}}.{{ scope.row.CostPrice }}
-
+
{{ scope.row.OrderId }}
{{ scope.row.Contact }}
-
+
-
+
-
+
-
+
-
+
-
+
@@ -82,11 +82,11 @@ import { injectGlobalData } from '@/provide';
import { onMounted, reactive, watch } from 'vue'
import { Delete,Plus,Search } from '@element-plus/icons-vue';
import { useI18n } from 'vue-i18n';
-import {relayCdkeyMy,relayCdkeyDel, relayCdkeyImport } from '@/apis/relay';
+import {cdkeyMy,cdkeyDel, cdkeyImport } from '@/apis/cdkey';
import Flags from './Flags.vue';
import { ElMessage, ElMessageBox } from 'element-plus';
export default {
- props: ['modelValue'],
+ props: ['modelValue','type'],
emits: ['update:modelValue'],
components:{Delete,Plus,Search,Flags },
setup(props,{emit}) {
@@ -101,6 +101,7 @@ export default {
OrderId:'',
Contact:'',
Remark:'',
+ Type:props.type,
Flag:0
},
list:{
@@ -132,7 +133,7 @@ export default {
handleSearch();
}
const handleSearch = ()=>{
- relayCdkeyMy(state.page).then((res)=>{
+ cdkeyMy(state.page).then((res)=>{
state.list = res;
}).catch(()=>{})
}
@@ -146,13 +147,13 @@ export default {
handleSearch();
}
const handleDel = (row)=>{
- relayCdkeyDel(row.Id).then((res)=>{
+ cdkeyDel(row.Id).then((res)=>{
handleSearch();
}).catch(()=>{})
}
const handleImport = ()=>{
- ElMessageBox.prompt(t('server.relayCdkeyImport'), t('common.tips'), {
+ ElMessageBox.prompt(t('server.cdkeyImport'), t('common.tips'), {
confirmButtonText: t('common.confirm'),
cancelButtonText: t('common.cancel')
}).then(({ value }) => {
@@ -161,9 +162,9 @@ export default {
return;
}
- relayCdkeyImport({Base64:value}).then((res)=>{
+ cdkeyImport({Base64:value}).then((res)=>{
if(res){
- ElMessage.error(t(`server.relayCdkeyImport${res}`));
+ ElMessage.error(t(`server.cdkeyImport${res}`));
handleImport();
}else{
ElMessage.success(t('common.oper'));
diff --git a/src/linker.web/src/views/full/server/relayCdkey/Test.vue b/src/linker.web/src/views/full/server/cdkey/Test.vue
similarity index 75%
rename from src/linker.web/src/views/full/server/relayCdkey/Test.vue
rename to src/linker.web/src/views/full/server/cdkey/Test.vue
index c235f7f8..df3911f8 100644
--- a/src/linker.web/src/views/full/server/relayCdkey/Test.vue
+++ b/src/linker.web/src/views/full/server/cdkey/Test.vue
@@ -1,143 +1,143 @@
-
+
-
+
- {{$t('server.relayCdkeyTestParseError')}}
+ {{$t('server.cdkeyTestParseError')}}
-
+
- {{$t('server.relayCdkeyTestGBError')}}
+ {{$t('server.cdkeyTestGBError')}}
success
-
+
- {{$t('server.relayCdkeyTestSpeedError')}}
+ {{$t('server.cdkeyTestSpeedError')}}
success
-
+
- {{$t('server.relayCdkeyTestTimeError')}}
+ {{$t('server.cdkeyTestTimeError')}}
success
-
+
- {{$t('server.relayCdkeyTestUserIdError')}}
+ {{$t('server.cdkeyTestUserIdError')}}
success
-
+
- {{$t('server.relayCdkeyTestOrderIdError')}}
+ {{$t('server.cdkeyTestOrderIdError')}}
success
-
+
- {{$t('server.relayCdkeyTestContactError')}}
+ {{$t('server.cdkeyTestContactError')}}
success
-
+
- {{$t('server.relayCdkeyTestCostPriceError')}}
+ {{$t('server.cdkeyTestCostPriceError')}}
success
-
+
- {{$t('server.relayCdkeyTestPriceError')}}
+ {{$t('server.cdkeyTestPriceError')}}
success
-
+
- {{$t('server.relayCdkeyTestUserPriceError')}}
+ {{$t('server.cdkeyTestUserPriceError')}}
success
-
+
- {{$t('server.relayCdkeyTestPayPriceError')}}
+ {{$t('server.cdkeyTestPayPriceError')}}
success
-
+
- {{$t('server.relayCdkeyTestCountError')}}
+ {{$t('server.cdkeyTestCountError')}}
success
-
+
- {{$t('server.relayCdkeyTestTypeError')}}
+ {{$t('server.cdkeyTestTypeError')}}
success
@@ -157,9 +157,9 @@
import { reactive, watch } from 'vue'
import { Search } from '@element-plus/icons-vue';
import { useI18n } from 'vue-i18n';
-import { relayCdkeyTest } from '@/apis/relay';
+import { cdkeyTest } from '@/apis/cdkey';
export default {
- props: ['modelValue'],
+ props: ['modelValue','type'],
emits: ['update:modelValue'],
components:{Search},
setup(props,{emit}) {
@@ -171,6 +171,7 @@ export default {
Order:{},
Cdkey:'',
Field:[],
+ Type:props.type
},
rules:{}
});
@@ -183,7 +184,7 @@ export default {
});
const handleChange = ()=>{
- relayCdkeyTest({Base64:state.Base64}).then(res=>{
+ cdkeyTest({Base64:state.Base64}).then(res=>{
if(res.Cdkey) state.ruleForm.Cdkey = res.Cdkey;
if(res.Field) state.ruleForm.Field = res.Field;
if(res.Order) state.ruleForm.Order = res.Order;
diff --git a/src/linker.web/src/views/full/server/relayCdkey/Index.vue b/src/linker.web/src/views/full/server/relayCdkey/Index.vue
deleted file mode 100644
index 9aa0e022..00000000
--- a/src/linker.web/src/views/full/server/relayCdkey/Index.vue
+++ /dev/null
@@ -1,39 +0,0 @@
-
- {{$t('server.relayMyCdkey')}}
- {{$t('server.relayCdkey')}}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/linker/Program.cs b/src/linker/Program.cs
index d3a7d8fb..8957ef86 100644
--- a/src/linker/Program.cs
+++ b/src/linker/Program.cs
@@ -65,7 +65,7 @@ namespace linker
using JsonDocument json = ParseArgs(args);
LinkerMessengerEntry.Setup(ExcludeModule.None, json);
- LoggerHelper.Instance.Warning($"current version : {VersionHelper.version}");
+ LoggerHelper.Instance.Warning($"current version : {VersionHelper.Version}");
LoggerHelper.Instance.Warning($"linker env is docker : {Environment.GetEnvironmentVariable("SNLTTY_LINKER_IS_DOCKER")}");
LoggerHelper.Instance.Warning($"linker env os : {System.Runtime.InteropServices.RuntimeInformation.OSDescription}");
LoggerHelper.Instance.Debug($"linker are running....");
diff --git a/src/linker/linker.csproj b/src/linker/linker.csproj
index 8716fcce..00968fac 100644
--- a/src/linker/linker.csproj
+++ b/src/linker/linker.csproj
@@ -21,17 +21,16 @@
snltty
snltty
1. 一些累计更新
-2. 重建权限存储,ulong改为BitArray,同组所有客户端需保持版本一致
-3. 增加唤醒功能,支持WOL,COM继电器,HID继电器
-4. 基于One-KVM包装docker镜像集成linker
+2. 修复socks5,解决CPU爆满问题,增加域名解析和HTTP代理
+3. 优化唤醒模块
5. 管理端口改为1804,一个端口托管Web+Websocket
snltty
https://github.com/snltty/linker
https://github.com/snltty/linker
linker
- 1.8.2
- 1.8.2
- 1.8.2
+ 1.8.3
+ 1.8.3
+ 1.8.3
False
diff --git a/version.txt b/version.txt
index 43247f32..ae3b21ac 100644
--- a/version.txt
+++ b/version.txt
@@ -1,7 +1,6 @@
-v1.8.2
-2025-06-09 16:34:38
+v1.8.3
+2025-06-10 17:28:53
1. 一些累计更新
-2. 重建权限存储,ulong改为BitArray,同组所有客户端需保持版本一致
-3. 增加唤醒功能,支持WOL,COM继电器,HID继电器
-4. 基于One-KVM包装docker镜像集成linker
+2. 修复socks5,解决CPU爆满问题,增加域名解析和HTTP代理
+3. 优化唤醒模块
5. 管理端口改为1804,一个端口托管Web+Websocket
\ No newline at end of file
diff --git a/ymls/nuget.yml b/ymls/nuget.yml
index bd47eb0b..b0242ef2 100644
--- a/ymls/nuget.yml
+++ b/ymls/nuget.yml
@@ -37,6 +37,7 @@ jobs:
dotnet build ./src/linker.messenger.pcp -c release
dotnet build ./src/linker.messenger.plan -c release
dotnet build ./src/linker.messenger.relay -c release
+ dotnet build ./src/linker.messenger.cdkey -c release
dotnet build ./src/linker.messenger.serializer.memorypack -c release
dotnet build ./src/linker.messenger.sforward -c release
dotnet build ./src/linker.messenger.signin -c release
@@ -70,6 +71,7 @@ jobs:
dotnet pack ./src/linker.messenger.pcp -c release
dotnet pack ./src/linker.messenger.plan -c release
dotnet pack ./src/linker.messenger.relay -c release
+ dotnet pack ./src/linker.messenger.cdkey -c release
dotnet pack ./src/linker.messenger.serializer.memorypack -c release
dotnet pack ./src/linker.messenger.sforward -c release
dotnet pack ./src/linker.messenger.signin -c release
@@ -103,6 +105,7 @@ jobs:
dotnet nuget push ./src/linker.messenger.pcp/bin/release/linker.messenger.pcp.{{version}}.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
dotnet nuget push ./src/linker.messenger.plan/bin/release/linker.messenger.plan.{{version}}.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
dotnet nuget push ./src/linker.messenger.relay/bin/release/linker.messenger.relay.{{version}}.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
+ dotnet nuget push ./src/linker.messenger.cdkey/bin/release/linker.messenger.cdkey.{{version}}.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
dotnet nuget push ./src/linker.messenger.serializer.memorypack/bin/release/linker.messenger.serializer.memorypack.{{version}}.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
dotnet nuget push ./src/linker.messenger.sforward/bin/release/linker.messenger.sforward.{{version}}.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
dotnet nuget push ./src/linker.messenger.signin/bin/release/linker.messenger.signin.{{version}}.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols