This commit is contained in:
snltty
2025-09-23 16:48:18 +08:00
parent 4d7c8f89a1
commit 5e20069672
67 changed files with 317 additions and 591 deletions

View File

@@ -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.9.1 snltty/linker-musl:amd64 snltty/linker-musl:arm64 snltty/linker-musl:arm && \
docker manifest create snltty/linker-musl:v1.9.2 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.9.1 && \
docker manifest push snltty/linker-musl:v1.9.2 && \
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.9.1 snltty/linker-debian:amd64 snltty/linker-debian:arm64 snltty/linker-debian:arm && \
docker manifest create snltty/linker-debian:v1.9.2 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.9.1 && \
docker manifest push snltty/linker-debian:v1.9.2 && \
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.9.1 snltty/linker-kvm:amd64 snltty/linker-kvm:arm64 snltty/linker-kvm:arm && \
docker manifest create snltty/linker-kvm:v1.9.2 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.9.1
docker manifest push snltty/linker-kvm:v1.9.2

View File

@@ -17,11 +17,11 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.ACTIONS_TOKEN }}
with:
tag_name: v1.9.1
release_name: v1.9.1.${{ steps.date.outputs.today }}
tag_name: v1.9.2
release_name: v1.9.2.${{ steps.date.outputs.today }}
draft: false
prerelease: false
body: "1. 一些累计更新\r\n2. 服务器转发多节点\r\n3. 新增一个UDP同时打开的打洞协议优化了一下其它打洞协议\r\n4. 一些代码优化,修复一些错误,其它一些小改变"
body: "1. 一些累计更新一些BUG修复\r\n2. 使用代理方式重写应用层NAT\r\n3. 新增服务端webapi对外提供公开数据监听1803端口设置为0则不监听\r\n4. 去除TCP包合并选项TCP隧道默认使用pipelines管道\r\n5. 修复中继列表能看到节点但无法中继的BUG"
- name: setup node.js
uses: actions/setup-node@v2
with:
@@ -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.9.1/linker-win-x86.zip
target-path: /downloads/linker/v1.9.2/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.9.1/linker-win-x64.zip
target-path: /downloads/linker/v1.9.2/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.9.1/linker-win-arm64.zip
target-path: /downloads/linker/v1.9.2/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.9.1/linker-linux-x64.zip
target-path: /downloads/linker/v1.9.2/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.9.1/linker-linux-arm.zip
target-path: /downloads/linker/v1.9.2/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.9.1/linker-linux-arm64.zip
target-path: /downloads/linker/v1.9.2/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.9.1/linker-linux-musl-x64.zip
target-path: /downloads/linker/v1.9.2/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.9.1/linker-linux-musl-arm.zip
target-path: /downloads/linker/v1.9.2/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.9.1/linker-linux-musl-arm64.zip
target-path: /downloads/linker/v1.9.2/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.9.1/linker.apk
target-path: /downloads/linker/v1.9.2/linker.apk
- name: upload-apk
id: upload-apk
uses: actions/upload-release-asset@master

View File

@@ -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.9.1/linker-x64.ipk
target-path: /downloads/linker/v1.9.2/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.9.1/linker-arm.ipk
target-path: /downloads/linker/v1.9.2/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.9.1/linker-arm64.ipk
target-path: /downloads/linker/v1.9.2/linker-arm64.ipk
- name: upload-arm64
id: upload-arm64
uses: actions/upload-release-asset@master

View File

@@ -90,35 +90,35 @@ jobs:
- name: Push
run: |
dotnet nuget push ./src/linker.libs/bin/release/linker.libs.1.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.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.9.1.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
dotnet nuget push ./src/linker.messenger.wlist/bin/release/linker.messenger.wlist.1.9.1.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.9.1.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
dotnet nuget push ./src/linker.nat/bin/release/linker.nat.1.9.1.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.9.1.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.cdkey/bin/release/linker.messenger.cdkey.1.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.wlist/bin/release/linker.messenger.wlist.1.9.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.9.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
dotnet nuget push ./src/linker.nat/bin/release/linker.nat.1.9.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.9.2.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols

View File

@@ -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.9.1" . --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.9.2" . --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.9.1" . --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.9.2" . --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.9.1" . --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.9.2" . --push
cd ../../../../../
done
done

View File

@@ -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.9.1|g" public/publish-ipk/${r}/control/control
sed -i "s|{version}|1.9.2|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

View File

@@ -28,7 +28,7 @@
<ApplicationId>com.snltty.linker.app</ApplicationId>
<Title>linker.app</Title>
<Version>1.9.1</Version>
<Version>1.9.2</Version>
<Authors>snltty</Authors>
<Company>snltty</Company>
<Copyright>snltty</Copyright>
@@ -38,7 +38,7 @@
<PackageReleaseNotes>linker</PackageReleaseNotes>
<!-- Versions -->
<ApplicationDisplayVersion>1.9.1</ApplicationDisplayVersion>
<ApplicationDisplayVersion>1.9.2</ApplicationDisplayVersion>
<ApplicationVersion>1</ApplicationVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">11.0</SupportedOSPlatformVersion>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>linker.web</title><link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/><script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script><script defer="defer" src="js/chunk-vendors.e9b4f2f4.js"></script><script defer="defer" src="js/app.a3656579.js"></script><link href="css/chunk-vendors.d8267b33.css" rel="stylesheet"><link href="css/app.e16885f2.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but linker.web doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>linker.web</title><link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/><script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script><script defer="defer" src="js/chunk-vendors.e9b4f2f4.js"></script><script defer="defer" src="js/app.616a95f8.js"></script><link href="css/chunk-vendors.d8267b33.css" rel="stylesheet"><link href="css/app.e16885f2.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but linker.web doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>

View File

@@ -0,0 +1 @@
"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[229],{87414:function(e,a,n){n.r(a),n.d(a,{default:function(){return J}});var t=n(56768);const s={class:"net-wrap app-wrap"},l={class:"inner absolute flex flex-column flex-nowrap"},i={class:"head"},u={class:"body flex-1 relative"},r={class:"status"};function c(e,a,n,c,d,o){const g=(0,t.g2)("Head"),p=(0,t.g2)("List"),v=(0,t.g2)("Status");return(0,t.uX)(),(0,t.CE)("div",s,[(0,t.Lk)("div",l,[(0,t.Lk)("div",i,[(0,t.bF)(g)]),(0,t.Lk)("div",u,[(0,t.bF)(p)]),(0,t.Lk)("div",r,[(0,t.bF)(v,{config:!1})])])])}n(44114);var d=n(24232);const o=e=>((0,t.Qi)("data-v-1cb47bd6"),e=e(),(0,t.jt)(),e),g={class:"head-wrap"},p={class:"tools flex"},v={class:"label"},h=o((()=>(0,t.Lk)("span",{class:"flex-1"},null,-1))),f={style:{"margin-left":"1rem"}};function k(e,a,n,s,l,i){const u=(0,t.g2)("Refresh"),r=(0,t.g2)("el-icon"),c=(0,t.g2)("el-button"),o=(0,t.g2)("Background");return(0,t.uX)(),(0,t.CE)("div",g,[(0,t.Lk)("div",p,[(0,t.Lk)("span",v,"分组 : "+(0,d.v_)(s.state.group),1),h,(0,t.bF)(c,{size:"small",onClick:s.handleRefresh},{default:(0,t.k6)((()=>[(0,t.eW)(" 刷新(F5)"),(0,t.bF)(r,null,{default:(0,t.k6)((()=>[(0,t.bF)(u)])),_:1})])),_:1},8,["onClick"]),(0,t.Lk)("div",f,[(0,t.bF)(o,{name:"net"})])])])}var b=n(53830),m=n(90144),C=n(57477),L=n(7199),_={components:{Edit:C.ffu,Refresh:C.C42,Background:L.A},setup(){const e=(0,b.B)(),a=(0,m.Kh)({server:(0,t.EW)((()=>e.value.config.Client.Server.Host)),group:(0,t.EW)((()=>e.value.config.Client.Group.Name))}),n=()=>{window.location.reload()};return{state:a,handleRefresh:n}}},w=n(71241);const S=(0,w.A)(_,[["render",k],["__scopeId","data-v-1cb47bd6"]]);var x=S;const F=e=>((0,t.Qi)("data-v-3c358101"),e=e(),(0,t.jt)(),e),z={class:"net-list-wrap flex flex-column absolute"},E={class:"flex-1 scrollbar"},T={class:"flex"},A=F((()=>(0,t.Lk)("div",{class:"flex-1"},null,-1))),I={class:"tuntap"},P={class:"page t-c"},B={class:"page-wrap t-c"};function R(e,a,n,s,l,i){const u=(0,t.g2)("DeviceName"),r=(0,t.g2)("UpdaterBtn"),c=(0,t.g2)("TuntapShow"),d=(0,t.g2)("el-pagination");return(0,t.uX)(),(0,t.CE)("div",z,[(0,t.Lk)("div",E,[(0,t.Lk)("ul",null,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(s.devices.page.List,((e,a)=>((0,t.uX)(),(0,t.CE)("li",{key:a},[(0,t.Lk)("dl",null,[(0,t.Lk)("dt",T,[(0,t.Lk)("div",null,[(0,t.bF)(u,{item:e},null,8,["item"])]),A,(0,t.Lk)("div",null,[(0,t.bF)(r,{config:!1,item:e},null,8,["item"])])]),(0,t.Lk)("dd",I,[s.tuntap.list[e.MachineId]?((0,t.uX)(),(0,t.Wv)(c,{key:0,item:e},null,8,["item"])):(0,t.Q3)("",!0)])])])))),128))])]),(0,t.Lk)("div",P,[(0,t.Lk)("div",B,[(0,t.bF)(d,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:s.devices.page.Count,"page-size":s.devices.page.Request.Size,"current-page":s.devices.page.Request.Page,onCurrentChange:s.handlePageChange,onSizeChange:s.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var y=n(75234),X=n(54373),N=n(65304),U=n(31480),D=n(33200),Q=n(30045),W=n(73417),H=n(76978),K={components:{StarFilled:C.BQ2,UpdaterBtn:U.A,DeviceName:D.A,TuntapShow:Q.A},setup(e){(0,b.B)();const a=(0,m.Kh)({}),{devices:n,machineId:s,_getSignList:l,_getSignList1:i,handlePageChange:u,handlePageSizeChange:r,clearDevicesTimeout:c}=(0,X.r)(),{tuntap:d,_getTuntapInfo:o,handleTuntapRefresh:g,clearTuntapTimeout:p,handleTuntapEdit:v,sortTuntapIP:h}=(0,y.O)(),{_getUpdater:f,_subscribeUpdater:k,clearUpdaterTimeout:C}=(0,N.d)();(0,H.y)();(0,W.L2)();return(0,t.sV)((()=>{u(),g(),l(),i(),o(),f(),k()})),(0,t.hi)((()=>{c(),p(),C()})),{state:a,devices:n,machineId:s,handlePageChange:u,handlePageSizeChange:r,tuntap:d}}};const j=(0,w.A)(K,[["render",R],["__scopeId","data-v-3c358101"]]);var q=j,M=n(52417),V=n(81387),G={components:{Head:x,List:q,Status:M.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,b.B)(),a=(0,V.rd)();return(0,t.sV)((()=>{0==e.value.hasAccess("NetManager")&&a.push({name:"NoPermission"})})),{}}};const O=(0,w.A)(G,[["render",c],["__scopeId","data-v-60d9820b"]]);var J=O}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -15,14 +15,7 @@ slug: /exchange/tuntap/p2n
1. linux已经自动添加NAT转发
2. linux软路由docker,在`OpenWrt、群晖`或者其它软路由系统可能需要在宿主机允许IP转发可以在UI设置也可以尝试`sysctl -w net.ipv4.ip_forward=1`允许IP转发然后`iptables -t nat -A POSTROUTING -s 10.18.18.0/24 -j MASQUERADE`然后添加NAT10.18.18.0/24是你的虚拟网卡网段
3. windows优先使用系统`NetNat``NetNat`失败则启用`内置SNAT`,但是性能应该没有`NetNat`
1. 由于`内置SNAT`依赖`WinDivert驱动`,如果报错`Windows 无法验证此文件的数字签名`什么的,可以尝试以下两种解决办法
2. 使用`管理员身份运行cmd`执行以下两条命令,然后重启系统
```
BCDEDIT -SET LOADOPTIONS DISABLE_INTEGRITY_CHECKS
BCDEDIT -SET TESTSIGNING ON
```
3. 或者安装一个<a href="https://www.microsoft.com/zh-cn/download/details.aspx?id=46148" target="_blank">KB3033929补丁</a>,然后重启系统
3. windows优先使用系统`NetNat``NetNat`失败则启用`内置DNAT`,但是性能应该没有`NetNat`
:::danger[重点]
1. 仅配置路由ip时可以通过192.168.0.x访问对方的192.168.0.x

View File

@@ -1,57 +0,0 @@
---
sidebar_position: 101
slug: /dev/snat
---
# 98.101、单独使用应用层SNAT
:::tip[说明]
### 1、使用
有效解决win7/8win server2008/2012无法使用`NetNat`的问题
如果你使用的是`linker.tun`类库已经集成应用层SNAT使用`LinkerTunDeviceAdapter.SetSystemNat`使用系统NAT和`LinkerTunDeviceAdapter.SetAppNat`使用应用层SNAT即可
<a href="https://reqrypt.org/windivert.html">windivert</a>下载抓包驱动,放置合适的`WinDivert.dll``WinDivert.sys`到程序根目录,然后 nuget 安装 `linker.snat`,然后编写代码
```c#
internal class Program
{
static void Main(string[] args)
{
//初始化
LinkerSrcNat linkerSrcNat = new LinkerSrcNat();
bool result = linkerSrcNat.Setup(new SetupInfo{
//虚拟网卡IP
Src = IPAddress.Parse("10.18.18.2"),
//仅访问192.168.1.0/24时NAT
Dsts = new AddrInfo[]{
new AddrInfo(IPAddress.Parse("192.168.1.0"),24)
},
//本机局域网IP用于替换为源IP
InterfaceIp = IPAddress.Parse("192.168.1.2")
},out string error);
//在将TCP/IP数据包写入网卡前增加一个操作
if(linkerSrcNat.Inject(packet) == false)
{
//不需要NAT或者NAT失败这里可以继续把数据包写入虚拟网卡
}
//关闭
linkerSrcNat.Shutdown();
Console.ReadLine();
}
}
```
### 1、原理图
![Docusaurus Plushie](./img/snat.jpg)
:::

View File

@@ -1,55 +0,0 @@
---
sidebar_position: 102
slug: /dev/smap
---
# 98.102、单独使用网段映射
:::tip[说明]
### 1、使用
有效解决使用虚拟网卡组网时,多个设备内网网段冲突的问题
如果你使用的是`linker.tun`类库,已经集成网段映射,使用`LinkerTunDeviceAdapter.SetMap`设置映射即可
在nuget 安装 `linker.snat`,然后编写代码
```c#
internal class Program
{
static void Main(string[] args)
{
//初始化
LinkerDstMapping linkerDstMapping = new LinkerDstMapping();
//在喜欢的时候设置映射,随时都可以,设置为空数组就不启用了
linkerDstMapping.SetDsts(new DstMapInfo[]{
new DstMapInfo{
//一个假IP。比如对方访问 192.168.188.2
FakeIP = IPAddress.Parse("192.168.188.0"),
//真实IP实际访问到的IP
RealIP = IPAddress.Parse("192.168.1.0"),
//掩码24替换前三段
//当问192.168.188.2的时候将会访问到192.168.1.2
PrefixLength = 24,
}
});
//在收到对方发来的数据包写入网卡前使用替换为真IP
linkerDstMapping.ToRealDst(packet);
//在从虚拟网卡读取到数据包发送给对方之前调用还原为假IP
linkerDstMapping.ToFakeDst(packet);
Console.ReadLine();
}
}
```
### 2、原理图
![Docusaurus Plushie](./img/mapto.jpg)
:::

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

View File

@@ -0,0 +1,73 @@
---
sidebar_position: 9
slug: /webapi
---
# 9、公开数据api
服务端默认监听1803端口对外提供一些公开数据接口
公共服务器公开数据接口(使用了反向代理) https://api.linker.snltty.com
:::tip[1、在线设备数]
/flow/online.json
```
{
//当前服务器
"CurrentServer": {
"Online7day": 499, //七天内上线
"Online": 197 //当前在线
},
//所有服务器
"AllServer": {
"Online7day": 1468, //七天内上线
"Online": 644, //当前在线
"Server": 285 //服务器数
}
}
```
:::
:::tip[2、设备区域信息]
/flow/citys.json
```
[
{
"City": "Beijing", //城市
"Lat": 39.938884, //纬度
"Lon": 116.397459, //经度
"Count": 56 //设备数
}
]
```
:::
:::tip[3、中继节点]
/relay/nodes.json
```
[
{
"AllowProtocol": 3, //允许的协议1TCP 2UDP 3TCP+UDP
"Name": "天龙上人-湖北-主服务器", //节点名称
"Version": "v1.9.1", //节点版本
"BandwidthMaxMbps": 300, //最大带宽
"BandwidthConnMbps": 3, //连接带宽
"BandwidthCurrentMbps": 0.03, //当前带宽负载
"BandwidthGbMonth": 100, //每月流量
"BandwidthByteAvailable": 12345,//可用流量字节
"ConnectionMaxNum": 1000, //最大连接数
"ConnectionCurrentNum": 6, //当前连接数
"EndPoint": "0.0.0.0:0", //节点地址
"Url": "https://linker-doc.snltty.com" //一个url
}
]
```
:::

View File

@@ -14,9 +14,9 @@
<Copyright>snltty</Copyright>
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>full</DebugType>

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger api access</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger api action</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -17,9 +17,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger api</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -17,9 +17,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger cdkey</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger channel</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger decenter</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger entry</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger exroute</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -17,9 +17,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger firewall</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
@@ -45,7 +45,6 @@
<ProjectReference Include="..\linker.messenger.sync\linker.messenger.sync.csproj" />
<ProjectReference Include="..\linker.messenger\linker.messenger.csproj" />
<ProjectReference Include="..\linker.nat\linker.nat.csproj" />
<ProjectReference Include="..\linker.snat\linker.nat.csproj" />
<ProjectReference Include="..\linker.tun\linker.tun.csproj" />
</ItemGroup>

View File

@@ -17,9 +17,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger flow</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -17,9 +17,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger forward</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -17,9 +17,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger listen</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger logger</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -17,9 +17,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger pcp</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger plan</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger remote app</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -18,9 +18,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger relay</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger serializer memorypack</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger sforward</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -17,9 +17,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger signin</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger socks5</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger store file</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -18,9 +18,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger sync</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -15,7 +15,12 @@ namespace linker.messenger.tunnel
}
public async Task<string> Invoke(string host, Dictionary<string, string> args)
{
args.TryAdd("tunnelNet", new SignInArgsNetInfo { Lat = tunnelClientStore.Network.Net.Lat, Lon = tunnelClientStore.Network.Net.Lon, City = tunnelClientStore.Network.Net.City }.ToJson());
args.TryAdd("tunnelNet", new SignInArgsNetInfo
{
Lat = tunnelClientStore.Network.Net.Lat,
Lon = tunnelClientStore.Network.Net.Lon,
City = tunnelClientStore.Network.Net.City,
}.ToJson());
return await Task.FromResult(string.Empty);
}
}

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger tunnel</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -45,7 +45,6 @@ namespace linker.messenger.tuntap
serviceCollection.AddSingleton<TuntapCidrMapfileManager>();
serviceCollection.AddSingleton<LinkerFakeAckTransfer>();
serviceCollection.AddSingleton<FakeAckTransfer>();

View File

@@ -48,7 +48,7 @@ namespace linker.messenger.tuntap
/*
if (connection.ProtocolType == TunnelProtocolType.Tcp && tuntapConfigTransfer.Info.FakeAck && tuntapDecenter.HasSwitchFlag(connection.RemoteMachineId, TuntapSwitch.FakeAck))
{
connection.PacketBuffer = new byte[1];
connection.PacketBuffer = new byte[4 * 1024];
}
*/
Add(connection);
@@ -68,7 +68,7 @@ namespace linker.messenger.tuntap
public async Task Receive(ITunnelConnection connection, ReadOnlyMemory<byte> buffer, object state)
#pragma warning restore CS1998 // 异步方法缺少 "await" 运算符,将以同步方式运行
{
//if (connection.PacketBuffer.Length > 0) fakeAckTransfer.Write(buffer, connection.SendBufferFree);
//if (connection.PacketBuffer.Length > 0) fakeAckTransfer.Write(buffer);
Callback.Receive(connection, buffer);
}
/// <summary>
@@ -91,12 +91,9 @@ namespace linker.messenger.tuntap
public async Task InputPacket(LinkerTunDevicPacket packet)
{
//IPV4广播组播、IPV6 多播
if ((packet.IPV4Broadcast || packet.IPV6Multicast) && tuntapConfigTransfer.Info.Multicast == false && connections.IsEmpty == false)
if ((packet.IPV4Broadcast /*|| packet.IPV6Multicast*/) && tuntapConfigTransfer.Info.Multicast == false && connections.IsEmpty == false)
{
//if (packet.DecrementTtl())
//{
await Task.WhenAll(connections.Values.Where(c => c != null && c.Connected).Select(c => c.SendAsync(packet.Buffer, packet.Offset, packet.Length)));
//}
return;
}
@@ -107,7 +104,15 @@ namespace linker.messenger.tuntap
/*
if (connection.PacketBuffer.Length > 0)
{
fakeAckTransfer.Read(packet.IPPacket);
ushort faleLength = 0;
if (fakeAckTransfer.Read(packet.IPPacket, connection.PacketBuffer, connection.SendBufferFree, out faleLength))
{
return;
}
if (faleLength > 0)
{
Callback.Receive(connection, connection.PacketBuffer.AsMemory(0, faleLength));
}
}
*/
await connection.SendAsync(packet.Buffer, packet.Offset, packet.Length).ConfigureAwait(false);

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger tuntap</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger updater</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger wakeup</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -17,9 +17,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger white list</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker messenger</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -66,7 +66,7 @@ namespace linker.nat
public void ToFakeDst(ReadOnlyMemory<byte> packet)
{
//只支持映射IPV4
if ((byte)(packet.Span[0] >> 4 & 0b1111) != 4) return;
//if ((byte)(packet.Span[0] >> 4 & 0b1111) != 4) return;
//映射表不为空
if (natDic.IsEmpty) return;
@@ -86,7 +86,7 @@ namespace linker.nat
public void ToRealDst(ReadOnlyMemory<byte> packet)
{
//只支持映射IPV4
if ((byte)(packet.Span[0] >> 4 & 0b1111) != 4) return;
//if ((byte)(packet.Span[0] >> 4 & 0b1111) != 4) return;
//映射表不为空
if (masks.Length == 0 || mapDic.Count == 0) return;
//广播包

View File

@@ -34,6 +34,7 @@ namespace linker.nat
public bool Setup(IPAddress dstAddr, ValueTuple<IPAddress, byte>[] dsts, ref string error)
{
Shutdown();
try
{
if (dsts == null || dsts.Length == 0)
@@ -70,6 +71,7 @@ namespace linker.nat
}
private async Task ReceiveTcp()
{
int hashcode = listenSocketTcp.GetHashCode();
try
{
while (true)
@@ -90,6 +92,7 @@ namespace linker.nat
catch (Exception ex)
{
LoggerHelper.Instance.Error(ex);
if (listenSocketTcp != null && listenSocketTcp.GetHashCode() == hashcode)
Shutdown();
}
}
@@ -146,6 +149,7 @@ namespace linker.nat
private async Task ReceiveUdp()
{
int hashcode = listenSocketUdp.GetHashCode();
try
{
using IMemoryOwner<byte> memory = MemoryPool<byte>.Shared.Rent(65535);
@@ -183,6 +187,7 @@ namespace linker.nat
catch (Exception ex)
{
LoggerHelper.Instance.Error(ex);
if (listenSocketUdp != null && listenSocketUdp.GetHashCode() == hashcode)
Shutdown();
}
}
@@ -225,11 +230,11 @@ namespace linker.nat
/// <param name="needChecksum"></param>
public unsafe void Read(ReadOnlyMemory<byte> packet)
{
if (listenSocketTcp == null) return;
if (Running == false) return;
fixed (byte* ptr = packet.Span)
{
DstProxyPacket p = new DstProxyPacket(ptr);
if (p.Version != 4) return;
//if (p.Version != 4) return;
if (p.Protocol == ProtocolType.Tcp || p.Protocol == ProtocolType.Udp)
{
@@ -257,11 +262,11 @@ namespace linker.nat
/// <returns></returns>
public unsafe bool Write(ReadOnlyMemory<byte> packet)
{
if (listenSocketTcp == null) return true;
if (Running == false) return true;
fixed (byte* ptr = packet.Span)
{
DstProxyPacket p = new DstProxyPacket(ptr);
if (p.Version != 4 || p.DstAddr == tunIp || p.DstAddrSpan.IsCast()) return true;
if (/*p.Version != 4 ||*/ p.DstAddr == tunIp || p.DstAddrSpan.IsCast()) return true;
if (lans.Any(c => p.DstAddr >= c.Item1 && p.DstAddr <= c.Item2) == false)
{

View File

@@ -9,7 +9,7 @@ namespace linker.nat
/// <summary>
/// 伪造ACK操作类
/// </summary>
public unsafe sealed class LinkerFakeAckTransfer
public unsafe sealed class FakeAckTransfer
{
private readonly ConcurrentDictionary<FaceAckKey, FackAckState> dic = new(new FackAckKeyComparer());
@@ -28,7 +28,7 @@ namespace linker.nat
fixed (byte* ptr = packet.Span)
{
FakeAckPacket originPacket = new(ptr);
if (originPacket.Version != 4 || originPacket.Protocol != ProtocolType.Tcp)
if (originPacket.Protocol != ProtocolType.Tcp)
{
return false;
}
@@ -42,14 +42,18 @@ namespace linker.nat
return state.Ack++ > 0;
}
//originPacket.ClearConfirmNum(ptr);
fixed (byte* pptr = fakeBuffer.Span)
{
ushort win = (ushort)Math.Max(Math.Min(bufferFree * 0.8 / state.WindowScale, 32 * 1024), 4);
ushort win = (ushort)Math.Max(Math.Min(bufferFree / state.WindowScale, 65535), 4);
fakeLength = originPacket.ToAck(state.Seq, win, pptr);
/*
if (new FakeAckPacket(pptr).Cq <= state.Cq)
{
fakeLength = 0;
}
*/
}
}
else if (originPacket.TcpFlagFin || originPacket.TcpFlagRst)
@@ -69,7 +73,7 @@ namespace linker.nat
fixed (byte* ptr = packet.Span)
{
FakeAckPacket originPacket = new(ptr);
if (originPacket.Version != 4 || originPacket.Protocol != ProtocolType.Tcp)
if (originPacket.Protocol != ProtocolType.Tcp)
{
return;
}
@@ -283,6 +287,16 @@ namespace linker.nat
return totalLength;
}
public void ClearConfirmNum(byte* ipPtr)
{
byte* tcpPtr = ipPtr + (*ptr & 0b1111) * 4;
*(tcpPtr + 13) = 0b00011000;
*(uint*)(tcpPtr + 8) = 0;
//计算校验和
ChecksumHelper.Checksum(ipPtr);
}
/// <summary>
/// 从TCP的SYN包或SYN+ACK包中获取窗口缩放比例
/// </summary>
@@ -327,7 +341,7 @@ namespace linker.nat
}
public unsafe sealed class FakeAckTransfer
public unsafe sealed class FakeAckTransfer1
{
private readonly ConcurrentDictionary<FaceAckKey, int> dic = new(new FackAckKeyComparer());
@@ -341,7 +355,7 @@ namespace linker.nat
fixed (byte* ptr = packet.Span)
{
FakeAckPacket originPacket = new(ptr);
if (originPacket.Version != 4 || originPacket.Protocol != ProtocolType.Tcp)
if (/*originPacket.Version != 4 ||*/ originPacket.Protocol != ProtocolType.Tcp)
{
return;
}
@@ -362,7 +376,7 @@ namespace linker.nat
fixed (byte* ptr = packet.Span)
{
FakeAckPacket originPacket = new(ptr);
if (originPacket.Version != 4 || originPacket.Protocol != ProtocolType.Tcp)
if (/*originPacket.Version != 4 ||*/ originPacket.Protocol != ProtocolType.Tcp)
{
return;
}

View File

@@ -128,7 +128,7 @@ namespace linker.nat
if (state != LinkerFirewallState.Enabled) return;
IPV4Packet ipv4 = new IPV4Packet(packet.Span);
if (ipv4.Version == 4 && (ipv4.Protocol == ProtocolType.Udp || ipv4.Protocol == ProtocolType.Tcp))
if (/*ipv4.Version == 4 &&*/ (ipv4.Protocol == ProtocolType.Udp || ipv4.Protocol == ProtocolType.Tcp))
{
(uint src, ushort srcPort, uint dst, ushort dstPort, ProtocolType pro) key = (ipv4.SrcAddr, ipv4.SrcPort, ipv4.DstAddr, ipv4.DstPort, ipv4.Protocol);
if (cacheSrcMap.TryGetValue(key, out SrcCacheInfo cache) == false)
@@ -176,7 +176,7 @@ namespace linker.nat
IPV4Packet ipv4 = new IPV4Packet(packet.Span);
//IPV4 TCP 和 UDP
if (ipv4.Version == 4 && (ipv4.Protocol == ProtocolType.Udp || ipv4.Protocol == ProtocolType.Tcp))
if (/*ipv4.Version == 4 &&*/ (ipv4.Protocol == ProtocolType.Udp || ipv4.Protocol == ProtocolType.Tcp))
{
//连接状态
(uint src, ushort srcPort, uint dst, ushort dstPort, ProtocolType pro) key = (ipv4.DstAddr, ipv4.DstPort, ipv4.SrcAddr, ipv4.SrcPort, ipv4.Protocol);

View File

@@ -196,7 +196,7 @@ namespace linker.nat
IPV4Packet ipv4 = new IPV4Packet(packet.Span);
//不是 ipv4是虚拟网卡ip是广播不nat
if (ipv4.Version != 4 || ipv4.DstAddr == srcIp || ipv4.DstAddrSpan.IsCast())
if (/*ipv4.Version != 4 ||*/ ipv4.DstAddr == srcIp || ipv4.DstAddrSpan.IsCast())
{
return false;
}

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker nat</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -34,7 +34,7 @@ namespace linker.tun
}
private unsafe void TCPUDPRead(LinkerTunDevicPacket packet)
{
if (packet.Version != 4) return;
//if (packet.Version != 4) return;
Memory<byte> writableMemory = packet.Buffer.AsMemory(packet.Offset + 4, packet.Length);
fixed (byte* ptr = writableMemory.Span)

View File

@@ -298,7 +298,7 @@ namespace linker.tun
}
packet.Unpacket(buffer, 0, length);
if (packet.DistIPAddress.Length == 0) continue;
if (packet.DistIPAddress.Length == 0 || packet.Version != 4) continue;
for (int i = 0; i < hooks1.Length; i++) if (hooks1[i].Read(packet.IPPacket) == false) goto end;
ChecksumHelper.ChecksumWithZero(packet.IPPacket);

View File

@@ -180,8 +180,6 @@ namespace linker.tun.device
/// </summary>
public byte Version { get; private set; }
public byte TTL { get; private set; }
/// <summary>
/// 协议
/// </summary>
@@ -195,10 +193,6 @@ namespace linker.tun.device
/// 源端口
/// </summary>
public ushort SourcePort { get; private set; }
/// <summary>
/// 源
/// </summary>
public IPEndPoint Source => new IPEndPoint(new IPAddress(SourceIPAddress.Span), SourcePort);
/// <summary>
/// 目标IP
@@ -208,10 +202,6 @@ namespace linker.tun.device
/// 目标端口
/// </summary>
public ushort DistPort { get; private set; }
/// <summary>
/// 目标
/// </summary>
public IPEndPoint Dist => new IPEndPoint(new IPAddress(DistIPAddress.Span), DistPort);
public bool IPV4Broadcast => Version == 4 && DistIPAddress.IsCast();
public bool IPV6Multicast => Version == 6 && (DistIPAddress.Span[0] & 0xFF) == 0xFF;
@@ -219,17 +209,13 @@ namespace linker.tun.device
public LinkerTunDevicPacket()
{
}
public LinkerTunDevicPacket(byte[] buffer, int offset, int length)
{
Unpacket(buffer, offset, length);
}
public void Unpacket(byte[] buffer, int offset, int length)
{
Buffer = buffer;
Offset = offset;
Length = length;
ReadOnlyMemory<byte> ipPacket = Buffer.AsMemory(Offset + 4);
ReadOnlyMemory<byte> ipPacket = Buffer.AsMemory(Offset + 4, Length - 4);
Version = (byte)(ipPacket.Span[0] >> 4 & 0b1111);
SourceIPAddress = Helper.EmptyArray;
@@ -241,7 +227,6 @@ namespace linker.tun.device
DistIPAddress = ipPacket.Slice(16, 4);
ProtocolType = (ProtocolType)ipPacket.Span[9];
TTL = ipPacket.Span[8];
if (ProtocolType == ProtocolType.Tcp || ProtocolType == ProtocolType.Udp)
{
@@ -255,7 +240,6 @@ namespace linker.tun.device
DistIPAddress = ipPacket.Slice(24, 16);
ProtocolType = (ProtocolType)ipPacket.Span[6];
TTL = ipPacket.Span[7];
if (ProtocolType == ProtocolType.Tcp || ProtocolType == ProtocolType.Udp)
{
@@ -265,19 +249,6 @@ namespace linker.tun.device
}
}
public bool DecrementTtl()
{
if (TTL <= 0) return false;
Span<byte> ipPacket = Buffer.AsSpan(Offset + 4);
if (Version == 4) TTL = --ipPacket[8];
else if (Version == 6) TTL = --ipPacket[7];
ChecksumHelper.Checksum(ipPacket, true, false);
return true;
}
}
public struct LinkerTunDevicValidatePacket
{
@@ -287,7 +258,7 @@ namespace linker.tun.device
if (packet.Length >= 1)
{
byte version = (byte)(packet.Span[0] >> 4 & 0b1111);
int headLength = version == 4 ? (packet.Span[0] & 0b1111) * 4 : 40;
int headLength = /*version == 4 ?*/ (packet.Span[0] & 0b1111) * 4 /*: 40*/;
if (packet.Length < headLength) return;
ProtocolType protocolType = version switch

View File

@@ -22,7 +22,7 @@ namespace linker.tun.hook
if (address == null || address.Equals(IPAddress.Any) || prefixLength == 0)
{
error = "DProxy need CIDR,like 10.18.18.0/24";
error = "DstProxy need CIDR,like 10.18.18.0/24";
return;
}
@@ -40,7 +40,6 @@ namespace linker.tun.hook
LoggerHelper.Instance.Error(ex);
}
Shutdown();
linkerDstNat.Setup(address, items.Select(c => new ValueTuple<IPAddress, byte>(c.IP, c.PrefixLength)).ToArray(), ref error);
}
public void Shutdown()

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker tun</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -16,9 +16,9 @@
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker tunnel</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -20,17 +20,18 @@
<Title>linker</Title>
<Authors>snltty</Authors>
<Company>snltty</Company>
<Description>1. 一些累计更新
2. 服务器转发多节点
3. 新增一个UDP同时打开的打洞协议优化了一下其它打洞协议
4. 一些代码优化,修复一些错误,其它一些小改变</Description>
<Description>1. 一些累计更新一些BUG修复
2. 使用代理方式重写应用层NAT
3. 新增服务端webapi对外提供公开数据监听1803端口设置为0则不监听
4. 去除TCP包合并选项TCP隧道默认使用pipelines管道
5. 修复中继列表能看到节点但无法中继的BUG</Description>
<Copyright>snltty</Copyright>
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
<PackageReleaseNotes>linker</PackageReleaseNotes>
<Version>1.9.1</Version>
<AssemblyVersion>1.9.1</AssemblyVersion>
<FileVersion>1.9.1</FileVersion>
<Version>1.9.2</Version>
<AssemblyVersion>1.9.2</AssemblyVersion>
<FileVersion>1.9.2</FileVersion>
<DelaySign>False</DelaySign>
</PropertyGroup>

View File

@@ -1,6 +1,7 @@
v1.9.1
2025-09-22 10:09:16
1. 一些累计更新
2. 服务器转发多节点
3. 新增一个UDP同时打开的打洞协议优化了一下其它打洞协议
4. 一些代码优化,修复一些错误,其它一些小改变
v1.9.2
2025-09-23 16:48:18
1. 一些累计更新一些BUG修复
2. 使用代理方式重写应用层NAT
3. 新增服务端webapi对外提供公开数据监听1803端口设置为0则不监听
4. 去除TCP包合并选项TCP隧道默认使用pipelines管道
5. 修复中继列表能看到节点但无法中继的BUG