mirror of
https://github.com/snltty/linker.git
synced 2025-09-27 05:25:57 +08:00
174
This commit is contained in:
8
.github/workflows/docker.yml
vendored
8
.github/workflows/docker.yml
vendored
@@ -57,9 +57,9 @@ jobs:
|
||||
docker tag snltty/linker-musl-x64:latest snltty/linker-musl:amd64 && \
|
||||
docker push snltty/linker-musl:amd64 && \
|
||||
docker manifest create snltty/linker-musl:latest snltty/linker-musl:amd64 snltty/linker-musl:arm64 snltty/linker-musl:arm && \
|
||||
docker manifest create snltty/linker-musl:v1.7.3 snltty/linker-musl:amd64 snltty/linker-musl:arm64 snltty/linker-musl:arm && \
|
||||
docker manifest create snltty/linker-musl:v1.7.4 snltty/linker-musl:amd64 snltty/linker-musl:arm64 snltty/linker-musl:arm && \
|
||||
docker manifest push snltty/linker-musl:latest && \
|
||||
docker manifest push snltty/linker-musl:v1.7.3 && \
|
||||
docker manifest push snltty/linker-musl:v1.7.4 && \
|
||||
docker pull --platform linux/arm/v7 snltty/linker-debian-arm:latest && \
|
||||
docker tag snltty/linker-debian-arm:latest snltty/linker-debian:arm && \
|
||||
docker push snltty/linker-debian:arm && \
|
||||
@@ -70,6 +70,6 @@ jobs:
|
||||
docker tag snltty/linker-debian-x64:latest snltty/linker-debian:amd64 && \
|
||||
docker push snltty/linker-debian:amd64 && \
|
||||
docker manifest create snltty/linker-debian:latest snltty/linker-debian:amd64 snltty/linker-debian:arm64 snltty/linker-debian:arm && \
|
||||
docker manifest create snltty/linker-debian:v1.7.3 snltty/linker-debian:amd64 snltty/linker-debian:arm64 snltty/linker-debian:arm && \
|
||||
docker manifest create snltty/linker-debian:v1.7.4 snltty/linker-debian:amd64 snltty/linker-debian:arm64 snltty/linker-debian:arm && \
|
||||
docker manifest push snltty/linker-debian:latest && \
|
||||
docker manifest push snltty/linker-debian:v1.7.3
|
||||
docker manifest push snltty/linker-debian:v1.7.4
|
24
.github/workflows/dotnet.yml
vendored
24
.github/workflows/dotnet.yml
vendored
@@ -33,11 +33,11 @@ jobs:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACTIONS_TOKEN }}
|
||||
with:
|
||||
tag_name: v1.7.3
|
||||
release_name: v1.7.3.${{ steps.date.outputs.today }}
|
||||
tag_name: v1.7.4
|
||||
release_name: v1.7.4.${{ steps.date.outputs.today }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
body: "1. 优化自动分配IP\r\n2. 优化网卡,排除不明数据包\r\n3. 虚拟网卡点对网IP映射,用于解决网段冲突\r\n4. 内置应用层SNAT,用于无法使用系统NAT的windows系统"
|
||||
body: "1. 一些优化\r\n2. 内置应用层SNAT,用于无法使用系统NetNat的windows系统\r\n3. 如果你设备很多,请尝试升级其中一个成功重启后再升级其它"
|
||||
- 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.7.3/linker-win-x86.zip
|
||||
target-path: /downloads/linker/v1.7.4/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.7.3/linker-win-x64.zip
|
||||
target-path: /downloads/linker/v1.7.4/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.7.3/linker-win-arm64.zip
|
||||
target-path: /downloads/linker/v1.7.4/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.7.3/linker-linux-x64.zip
|
||||
target-path: /downloads/linker/v1.7.4/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.7.3/linker-linux-arm.zip
|
||||
target-path: /downloads/linker/v1.7.4/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.7.3/linker-linux-arm64.zip
|
||||
target-path: /downloads/linker/v1.7.4/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.7.3/linker-linux-musl-x64.zip
|
||||
target-path: /downloads/linker/v1.7.4/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.7.3/linker-linux-musl-arm.zip
|
||||
target-path: /downloads/linker/v1.7.4/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.7.3/linker-linux-musl-arm64.zip
|
||||
target-path: /downloads/linker/v1.7.4/linker-linux-musl-arm64.zip
|
||||
- name: upload-linux-musl-arm64
|
||||
id: upload-linux-musl-arm64
|
||||
uses: actions/upload-release-asset@master
|
||||
|
6
.github/workflows/ipk.yml
vendored
6
.github/workflows/ipk.yml
vendored
@@ -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.7.3/linker-x64.ipk
|
||||
target-path: /downloads/linker/v1.7.4/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.7.3/linker-arm.ipk
|
||||
target-path: /downloads/linker/v1.7.4/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.7.3/linker-arm64.ipk
|
||||
target-path: /downloads/linker/v1.7.4/linker-arm64.ipk
|
||||
- name: upload-arm64
|
||||
id: upload-arm64
|
||||
uses: actions/upload-release-asset@master
|
||||
|
57
.github/workflows/nuget.yml
vendored
57
.github/workflows/nuget.yml
vendored
@@ -47,6 +47,7 @@ jobs:
|
||||
dotnet build ./src/linker.messenger.tuntap -c release
|
||||
dotnet build ./src/linker.messenger.updater -c release
|
||||
dotnet build ./src/linker.tun -c release
|
||||
dotnet build ./src/linker.snat -c release
|
||||
dotnet build ./src/linker.tunnel -c release
|
||||
|
||||
- name: Pack
|
||||
@@ -77,34 +78,36 @@ jobs:
|
||||
dotnet pack ./src/linker.messenger.tuntap -c release
|
||||
dotnet pack ./src/linker.messenger.updater -c release
|
||||
dotnet pack ./src/linker.tun -c release
|
||||
dotnet pack ./src/linker.snat -c release
|
||||
dotnet pack ./src/linker.tunnel -c release
|
||||
|
||||
- name: Push
|
||||
run: |
|
||||
dotnet nuget push ./src/linker.libs/bin/release/linker.libs.1.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.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.7.3.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.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.7.4.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
|
||||
|
@@ -85,6 +85,13 @@ Network mapping can help you resolve conflicts between multiple internal network
|
||||
<p><img src="./readme/mapto.jpg"></p>
|
||||
</div>
|
||||
|
||||
## SNAT
|
||||
Built-in SNAT enables you to use the point-to-site functionality even on Windows 7/8 and Windows Server 2008/2012 where NetNat is unavailable.
|
||||
|
||||
<div align="center">
|
||||
<p><img src="./readme/snat.jpg"></p>
|
||||
</div>
|
||||
|
||||
## Management Website
|
||||
|
||||
<div align="center">
|
||||
|
@@ -85,6 +85,13 @@ LinkerMessengerEntry.Setup(ExcludeModule.None);
|
||||
<p><img src="./readme/mapto.jpg"></p>
|
||||
</div>
|
||||
|
||||
## SNAT
|
||||
内置的SNAT,让你在无法使用NetNat的 win7/8,win server 2008/2012上也可以使用点对网功能
|
||||
|
||||
<div align="center">
|
||||
<p><img src="./readme/snat.jpg"></p>
|
||||
</div>
|
||||
|
||||
|
||||
## 管理页面
|
||||
|
||||
|
14
linker.sln
14
linker.sln
@@ -65,6 +65,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "linker.ics", "src\linker.ic
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "linker.messenger.plan", "src\linker.messenger.plan\linker.messenger.plan.csproj", "{5649D02E-200B-45E0-A82F-8EBE76CF96C6}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "linker.snat", "src\linker.snat\linker.snat.csproj", "{A1EA64AA-8C30-4616-B65D-8AF07641807E}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -453,6 +455,18 @@ Global
|
||||
{5649D02E-200B-45E0-A82F-8EBE76CF96C6}.Release|x64.Build.0 = Release|Any CPU
|
||||
{5649D02E-200B-45E0-A82F-8EBE76CF96C6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{5649D02E-200B-45E0-A82F-8EBE76CF96C6}.Release|x86.Build.0 = Release|Any CPU
|
||||
{A1EA64AA-8C30-4616-B65D-8AF07641807E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A1EA64AA-8C30-4616-B65D-8AF07641807E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A1EA64AA-8C30-4616-B65D-8AF07641807E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{A1EA64AA-8C30-4616-B65D-8AF07641807E}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{A1EA64AA-8C30-4616-B65D-8AF07641807E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{A1EA64AA-8C30-4616-B65D-8AF07641807E}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{A1EA64AA-8C30-4616-B65D-8AF07641807E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A1EA64AA-8C30-4616-B65D-8AF07641807E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A1EA64AA-8C30-4616-B65D-8AF07641807E}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{A1EA64AA-8C30-4616-B65D-8AF07641807E}.Release|x64.Build.0 = Release|Any CPU
|
||||
{A1EA64AA-8C30-4616-B65D-8AF07641807E}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{A1EA64AA-8C30-4616-B65D-8AF07641807E}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@@ -33,16 +33,16 @@ do
|
||||
fi
|
||||
done
|
||||
cd public/publish/docker/linux-${p}-x64/${f}
|
||||
docker buildx build -f ${target}/public/publish/docker/linux-${p}-x64/${f}/Dockerfile-${p} --platform="linux/x86_64" --force-rm -t "${image}-${p}-x64:latest" -t "${image}-${p}-x64:v1.7.3" . --push
|
||||
docker buildx build -f ${target}/public/publish/docker/linux-${p}-x64/${f}/Dockerfile-${p} --platform="linux/x86_64" --force-rm -t "${image}-${p}-x64:latest" -t "${image}-${p}-x64:v1.7.4" . --push
|
||||
cd ../../../../../
|
||||
|
||||
|
||||
cd public/publish/docker/linux-${p}-arm64/${f}
|
||||
docker buildx build -f ${target}/public/publish/docker/linux-${p}-arm64/${f}/Dockerfile-${p} --platform="linux/arm64" --force-rm -t "${image}-${p}-arm64:latest" -t "${image}-${p}-arm64:v1.7.3" . --push
|
||||
docker buildx build -f ${target}/public/publish/docker/linux-${p}-arm64/${f}/Dockerfile-${p} --platform="linux/arm64" --force-rm -t "${image}-${p}-arm64:latest" -t "${image}-${p}-arm64:v1.7.4" . --push
|
||||
cd ../../../../../
|
||||
|
||||
cd public/publish/docker/linux-${p}-arm/${f}
|
||||
docker buildx build -f ${target}/public/publish/docker/linux-${p}-arm/${f}/Dockerfile-${p} --platform="linux/arm/v7" --force-rm -t "${image}-${p}-arm:latest" -t "${image}-${p}-arm:v1.7.3" . --push
|
||||
docker buildx build -f ${target}/public/publish/docker/linux-${p}-arm/${f}/Dockerfile-${p} --platform="linux/arm/v7" --force-rm -t "${image}-${p}-arm:latest" -t "${image}-${p}-arm:v1.7.4" . --push
|
||||
cd ../../../../../
|
||||
done
|
||||
done
|
@@ -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.7.3|g" public/publish-ipk/${r}/control/control
|
||||
sed -i "s|{version}|1.7.4|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
|
||||
|
233
readme/snat.drawio
Normal file
233
readme/snat.drawio
Normal file
File diff suppressed because one or more lines are too long
BIN
readme/snat.jpg
Normal file
BIN
readme/snat.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 153 KiB |
@@ -28,7 +28,7 @@
|
||||
<ApplicationId>com.snltty.linker.app</ApplicationId>
|
||||
|
||||
<Title>linker.app</Title>
|
||||
<Version>1.7.3</Version>
|
||||
<Version>1.7.4</Version>
|
||||
<Authors>snltty</Authors>
|
||||
<Company>snltty</Company>
|
||||
<Copyright>snltty</Copyright>
|
||||
@@ -38,7 +38,7 @@
|
||||
<PackageReleaseNotes>linker</PackageReleaseNotes>
|
||||
|
||||
<!-- Versions -->
|
||||
<ApplicationDisplayVersion>1.7.3</ApplicationDisplayVersion>
|
||||
<ApplicationDisplayVersion>1.7.4</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>1</ApplicationVersion>
|
||||
|
||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">11.0</SupportedOSPlatformVersion>
|
||||
|
@@ -15,7 +15,14 @@ sidebar_position: 2
|
||||
:::tip[1、情况1,你的设备支持NAT转发时]
|
||||
|
||||
1. linux,已经自动添加NAT转发(在`OpenWrt`,需要在`防火墙 - 区域设置`中将`转发`设置为`接受`)
|
||||
2. windows,优先使用系统NetNat,NetNat失败则启用内置的应用层SNAT,但是性能应该没有NetNat好
|
||||
2. 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. macos,需要你自己在**被访问端**添加NAT转发
|
||||
```
|
||||
# 开启ip转发
|
||||
@@ -27,12 +34,12 @@ nat on en0 from 10.18.18.0/24 to any -> (en0)
|
||||
sudo pfctl -f /etc/pf.conf -e
|
||||
```
|
||||
|
||||
|
||||
:::danger[重点]
|
||||
1. 如图配置第一条配置,`目标IP`填写`0.0.0.0`,则`路由IP`就是真实内网网段,其它客户端可以通过`192.168.1.0/24`网段访问到`公司城中-linux`的`192.168.1.0/24`网段
|
||||
2. 如图配置第二条配置,`目标IP`填写`192.168.1.0/24`,则`路由IP`伪虚假网段,`目标IP`为真实内网网段,其它客户端可以通过一个`假的` `192.168.18.0/24`网段访问到`公司城中-linux`的`192.168.1.0/24`网段
|
||||
3. 网段映射其实就是 按`目标IP`,`目标掩码`计算出网络号,将网络号覆盖`路由IP`得到最终的访问IP
|
||||
4. 当前网段映射仅支持,IPV4`ICMP`、`TCP`、`UDP`、如需更多协议,请联系作者添加
|
||||
3. 注意,两条配置不能同时使用
|
||||
4. 网段映射其实就是 按`目标IP`,`目标掩码`计算出网络号,将网络号覆盖`路由IP`得到最终的访问IP
|
||||
5. 当前网段映射仅支持,IPV4`ICMP`、`TCP`、`UDP`、如需更多协议,请联系作者添加
|
||||
|
||||

|
||||

|
||||
|
@@ -14,9 +14,9 @@
|
||||
<Copyright>snltty</Copyright>
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebugType>full</DebugType>
|
||||
|
@@ -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.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger api action</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -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.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger channel</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger decenter</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger entry</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger exroute</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -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.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -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.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -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.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger logger</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -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.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger plan</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -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.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger serializer aot</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger serializer memorypack</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger sforward</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -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.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger socks5</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger store file</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -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.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger tunnel</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -75,7 +75,11 @@ namespace linker.messenger.tuntap
|
||||
//配置有更新,去同步一下
|
||||
tuntapConfigTransfer.OnUpdate += () =>
|
||||
{
|
||||
SetMaps(); AddForward(); _ = CheckDevice(); tuntapDecenter.Refresh();
|
||||
tuntapDecenter.Refresh();
|
||||
SetMaps();
|
||||
SetAppNat();
|
||||
AddForward();
|
||||
_ = CheckDevice();
|
||||
};
|
||||
|
||||
//隧道回调
|
||||
|
@@ -161,12 +161,9 @@ namespace linker.messenger.tuntap
|
||||
/// </summary>
|
||||
/// <param name="items"></param>
|
||||
public void SetAppNat(LinkerTunAppNatItemInfo[] items)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(NatError) == false)
|
||||
{
|
||||
linkerTunDeviceAdapter.SetAppNat(items);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加转发
|
||||
|
@@ -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.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger updater</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -7,9 +7,11 @@ using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace linker.tun
|
||||
namespace linker.snat
|
||||
{
|
||||
/// <summary>
|
||||
/// 64位,放x64的WinDivert.dll和WinDivert64.sys
|
||||
/// 32位,放x86的WinDivert.dll和WinDivert64.sys,WinDivert.sys
|
||||
/// 应用层简单SNAT
|
||||
/// 1,收到【客户端A】的数据包,10.18.18.23(客户端A的虚拟网卡IP)->192.168.56.6(局域网IP)
|
||||
/// 2,改为 192.168.56.2(本机IP)->192.168.56.6(局域网IP)
|
||||
@@ -17,7 +19,7 @@ namespace linker.tun
|
||||
/// 4,改为 192.168.56.6(局域网IP)->10.18.18.23(客户端A的虚拟网卡IP)
|
||||
/// 5,回到客户端A,就完成了NAT
|
||||
/// </summary>
|
||||
public sealed class WinDivertNAT
|
||||
public sealed class LinkerSNat
|
||||
{
|
||||
public bool Running => winDivert != null;
|
||||
|
||||
@@ -31,7 +33,9 @@ namespace linker.tun
|
||||
/// </summary>
|
||||
private NetworkIPv4Addr interfaceAddr;
|
||||
|
||||
|
||||
private uint srcIp;
|
||||
private NetworkIPv4Addr srcAddr;
|
||||
|
||||
/// <summary>
|
||||
/// 用来注入数据包
|
||||
@@ -53,7 +57,7 @@ namespace linker.tun
|
||||
/// </summary>
|
||||
private ConcurrentDictionary<(uint src, ushort port), ushort> source2portMap = new ConcurrentDictionary<(uint src, ushort port), ushort>();
|
||||
|
||||
public WinDivertNAT()
|
||||
public LinkerSNat()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -63,7 +67,7 @@ namespace linker.tun
|
||||
/// <param name="src">虚拟网卡IP</param>
|
||||
/// <param name="dsts">需要NAT的IP</param>
|
||||
/// <param name="interfaceIp">本地网卡IP</param>
|
||||
/// <param name="error">false的时候会有报错信息</param>
|
||||
/// <param name="error">false启动失败的时候会有报错信息</param>
|
||||
/// <returns></returns>
|
||||
public bool Setup(IPAddress src, AddrInfo[] dsts, IPAddress interfaceIp, out string error)
|
||||
{
|
||||
@@ -76,16 +80,24 @@ namespace linker.tun
|
||||
}
|
||||
if (src == null || dsts == null || dsts.Length == 0)
|
||||
{
|
||||
error = "src is null, or dsts empty";
|
||||
error = "src is null, or dsts empty,snat fail";
|
||||
return false;
|
||||
}
|
||||
if (interfaceIp == null || interfaceIp.Equals(IPAddress.Any))
|
||||
{
|
||||
error = "snat need default interface ipaddres";
|
||||
return false;
|
||||
}
|
||||
try
|
||||
{
|
||||
srcIp = NetworkHelper.ToValue(src);
|
||||
srcAddr = IPv4Addr.Parse(src.ToString());
|
||||
|
||||
interfaceAddr = IPv4Addr.Parse(interfaceIp.ToString());
|
||||
winDivert = new WinDivert(BuildFilter(dsts), WinDivert.Layer.Network, 0, 0);
|
||||
|
||||
cts = new CancellationTokenSource();
|
||||
|
||||
Recv(cts);
|
||||
ClearTask(cts);
|
||||
|
||||
@@ -164,17 +176,20 @@ namespace linker.tun
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 注入数据包,让它直接走正确的网卡,路由到目的地
|
||||
/// 注入TCP/IP,让它直接走正确的网卡,路由到目的地
|
||||
/// </summary>
|
||||
/// <param name="buffer"></param>
|
||||
/// <param name="packet">单个完整TCP/IP包</param>
|
||||
/// <returns>true注入成功,false失败了,你可以继续写入你的虚拟网卡</returns>
|
||||
public unsafe bool Inject(ReadOnlyMemory<byte> packet)
|
||||
{
|
||||
if (winDivert == null) return false;
|
||||
|
||||
IPV4Packet ipv4 = new IPV4Packet(packet.Span);
|
||||
//不是 ipv4,是虚拟网卡ip,是广播,不nat
|
||||
if (ipv4.Version != ProtocolType.IPv4 || ipv4.DstAddr == srcIp || ipv4.DstAddrSpan.GetIsBroadcastAddress()) return false;
|
||||
|
||||
if (ipv4.Version != ProtocolType.IPv4 || ipv4.DstAddr == srcIp || ipv4.DstAddrSpan.GetIsBroadcastAddress())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
fixed (byte* ptr = packet.Span)
|
||||
{
|
||||
foreach (var (i, p) in new WinDivertIndexedPacketParser(packet))
|
||||
@@ -229,7 +244,8 @@ namespace linker.tun
|
||||
SrcAddr = p.IPv4Hdr->SrcAddr,
|
||||
Identifier0 = *ptr0,
|
||||
Identifier1 = *ptr1,
|
||||
LastTime = Environment.TickCount64
|
||||
LastTime = Environment.TickCount64,
|
||||
Timeout = 15 * 1000 //icmp 15秒
|
||||
};
|
||||
natMap.AddOrUpdate(key, natMapInfo, (a, b) => natMapInfo);
|
||||
|
||||
@@ -298,7 +314,8 @@ namespace linker.tun
|
||||
{
|
||||
SrcAddr = p.IPv4Hdr->SrcAddr,
|
||||
SrcPort = p.TCPHdr->SrcPort,
|
||||
LastTime = Environment.TickCount64
|
||||
LastTime = Environment.TickCount64,
|
||||
Timeout = 2 * 60 * 60 * 1000 //tcp 2小时
|
||||
};
|
||||
natMap.TryAdd(key, natMapInfo);
|
||||
}
|
||||
@@ -361,7 +378,8 @@ namespace linker.tun
|
||||
{
|
||||
SrcAddr = p.IPv4Hdr->SrcAddr,
|
||||
SrcPort = p.UDPHdr->SrcPort,
|
||||
LastTime = Environment.TickCount64
|
||||
LastTime = Environment.TickCount64,
|
||||
Timeout = 30 * 60 * 1000 //UDP 30分钟
|
||||
};
|
||||
natMap.TryAdd(key, natMapInfo);
|
||||
}
|
||||
@@ -422,7 +440,7 @@ namespace linker.tun
|
||||
TimerHelper.SetIntervalLong(() =>
|
||||
{
|
||||
long now = Environment.TickCount64;
|
||||
foreach (var item in natMap.Where(c => now - c.Value.LastTime > 1 * 60 * 60 || c.Value.FinAck || c.Value.Rst).Select(c => c.Key).ToList())
|
||||
foreach (var item in natMap.Where(c => now - c.Value.LastTime > c.Value.Timeout || c.Value.FinAck || c.Value.Rst).Select(c => c.Key).ToList())
|
||||
{
|
||||
if (natMap.TryRemove(item, out NatMapInfo natMapInfo))
|
||||
{
|
||||
@@ -481,6 +499,7 @@ namespace linker.tun
|
||||
public bool Rst { get; set; }
|
||||
|
||||
public long LastTime { get; set; } = Environment.TickCount64;
|
||||
public int Timeout { get; set; } = 1 * 60 * 60;
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
43
src/linker.snat/linker.snat.csproj
Normal file
43
src/linker.snat/linker.snat.csproj
Normal file
@@ -0,0 +1,43 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net8.0</TargetFrameworks>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>disable</Nullable>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<PublishAot>false</PublishAot>
|
||||
<JsonSerializerIsReflectionEnabledByDefault>true</JsonSerializerIsReflectionEnabledByDefault>
|
||||
<EnablePreviewFeatures>True</EnablePreviewFeatures>
|
||||
<Title>linker snat</Title>
|
||||
<Authors>snltty</Authors>
|
||||
<Company>snltty</Company>
|
||||
<Description>linker snat</Description>
|
||||
<Copyright>snltty</Copyright>
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker snat</PackageReleaseNotes>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebugType>full</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||
<DebugType>full</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<Optimize>True</Optimize>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0|AnyCPU'">
|
||||
<DebugType>embedded</DebugType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0|AnyCPU'">
|
||||
<DebugType>embedded</DebugType>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\linker.libs\linker.libs.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<project ver="10" name="linker.tray.win" libEmbed="true" icon="..\linker\favicon.ico" ui="win" output="linker.tray.win.exe" CompanyName="snltty" FileDescription="linker.tray.win" LegalCopyright="Copyright (C) snltty 2024" ProductName="linker.tray.win" InternalName="linker.install.win" FileVersion="0.0.0.247" ProductVersion="0.0.0.247" publishDir="/dist/" dstrip="false" local="false" ignored="false">
|
||||
<project ver="10" name="linker.tray.win" libEmbed="true" icon="..\linker\favicon.ico" ui="win" output="linker.tray.win.exe" CompanyName="snltty" FileDescription="linker.tray.win" LegalCopyright="Copyright (C) snltty 2024" ProductName="linker.tray.win" InternalName="linker.install.win" FileVersion="0.0.0.250" ProductVersion="0.0.0.250" publishDir="/dist/" dstrip="false" local="false" ignored="false">
|
||||
<file name="main.aardio" path="main.aardio" comment="main.aardio"/>
|
||||
<folder name="资源文件" path="res" embed="true" local="false" ignored="false">
|
||||
<file name="favicon.ico" path="res\favicon.ico" comment="res\favicon.ico"/>
|
||||
|
BIN
src/linker.tray.win/dist/linker.tray.win.exe
vendored
BIN
src/linker.tray.win/dist/linker.tray.win.exe
vendored
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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.cfba5739.js"></script><script defer="defer" src="js/app.1acc2fd0.js"></script><link href="css/chunk-vendors.d8267b33.css" rel="stylesheet"><link href="css/app.73965826.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.cfba5739.js"></script><script defer="defer" src="js/app.8014d169.js"></script><link href="css/chunk-vendors.d8267b33.css" rel="stylesheet"><link href="css/app.73965826.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>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[743],{427:function(e,n,a){a.r(n),a.d(n,{default:function(){return O}});var t=a(6768);const s={class:"net-wrap app-wrap"},l={class:"inner absolute flex flex-column flex-nowrap"},i={class:"head"},o={class:"body flex-1 relative"},c={class:"status"};function r(e,n,a,r,u,d){const g=(0,t.g2)("Head"),p=(0,t.g2)("List"),v=(0,t.g2)("Status");return(0,t.uX)(),(0,t.CE)("div",s,[(0,t.Lk)("div",l,[(0,t.Lk)("div",i,[(0,t.bF)(g)]),(0,t.Lk)("div",o,[(0,t.bF)(p)]),(0,t.Lk)("div",c,[(0,t.bF)(v,{config:!1})])])])}a(4114);const u=e=>((0,t.Qi)("data-v-1fd9ef80"),e=e(),(0,t.jt)(),e),d={class:"head-wrap"},g={class:"tools flex"},p=u((()=>(0,t.Lk)("span",{class:"label"},"服务器 ",-1))),v=u((()=>(0,t.Lk)("span",{class:"flex-1"},null,-1))),h={style:{"margin-left":"1rem"}};function f(e,n,a,s,l,i){const o=(0,t.g2)("el-input"),c=(0,t.g2)("Refresh"),r=(0,t.g2)("el-icon"),u=(0,t.g2)("el-button"),f=(0,t.g2)("Background");return(0,t.uX)(),(0,t.CE)("div",d,[(0,t.Lk)("div",g,[p,(0,t.bF)(o,{modelValue:s.state.server,"onUpdate:modelValue":n[0]||(n[0]=e=>s.state.server=e),readonly:"",style:{width:"14rem"},size:"small"},null,8,["modelValue"]),v,(0,t.bF)(u,{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)(c)])),_:1})])),_:1},8,["onClick"]),(0,t.Lk)("div",h,[(0,t.bF)(f,{name:"net"})])])])}var k=a(3830),m=a(144),C=a(7477),b=a(5096),L={components:{Edit:C.ffu,Refresh:C.C42,Background:b.A},setup(){const e=(0,k.B)(),n=(0,m.Kh)({server:(0,t.EW)((()=>e.value.config.Client.Server.Host))}),a=()=>{window.location.reload()};return{state:n,handleRefresh:a}}},_=a(1241);const w=(0,_.A)(L,[["render",f],["__scopeId","data-v-1fd9ef80"]]);var F=w;const S=e=>((0,t.Qi)("data-v-68d1c30a"),e=e(),(0,t.jt)(),e),x={class:"net-list-wrap flex flex-column absolute"},T={class:"flex-1 scrollbar"},z={class:"flex"},E=S((()=>(0,t.Lk)("div",{class:"flex-1"},null,-1))),A={class:"tuntap"},I={class:"page t-c"},P={class:"page-wrap t-c"};function B(e,n,a,s,l,i){const o=(0,t.g2)("DeviceName"),c=(0,t.g2)("UpdaterBtn"),r=(0,t.g2)("TuntapShow"),u=(0,t.g2)("el-pagination");return(0,t.uX)(),(0,t.CE)("div",x,[(0,t.Lk)("div",T,[(0,t.Lk)("ul",null,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(s.devices.page.List,((e,n)=>((0,t.uX)(),(0,t.CE)("li",{key:n},[(0,t.Lk)("dl",null,[(0,t.Lk)("dt",z,[(0,t.Lk)("div",null,[(0,t.bF)(o,{item:e},null,8,["item"])]),E,(0,t.Lk)("div",null,[(0,t.bF)(c,{config:!1,item:e},null,8,["item"])])]),(0,t.Lk)("dd",A,[s.tuntap.list[e.MachineId]?((0,t.uX)(),(0,t.Wv)(r,{key:0,item:e},null,8,["item"])):(0,t.Q3)("",!0)])])])))),128))])]),(0,t.Lk)("div",I,[(0,t.Lk)("div",P,[(0,t.bF)(u,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:s.devices.page.Count,"page-size":s.devices.page.Request.Size,"current-page":s.devices.page.Request.Page,onCurrentChange:s.handlePageChange,onSizeChange:s.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var y=a(8104),R=a(7985),D=a(9383),U=a(7115),X=a(6588),V=a(7163),N=a(9983),Q={components:{StarFilled:C.BQ2,UpdaterBtn:U.A,DeviceName:X.A,TuntapShow:V.A},setup(e){(0,k.B)();const n=(0,m.Kh)({}),{devices:a,machineId:s,_getSignList:l,_getSignList1:i,handleDeviceEdit:o,handlePageChange:c,handlePageSizeChange:r,handleDel:u,clearDevicesTimeout:d}=(0,R.r)(),{tuntap:g,_getTuntapInfo:p,handleTuntapRefresh:v,clearTuntapTimeout:h,handleTuntapEdit:f,sortTuntapIP:C}=(0,y.O)(),{_getUpdater:b,_subscribeUpdater:L,clearUpdaterTimeout:_}=(0,D.d)(),{connections:w,forwardConnections:F,_getForwardConnections:S,tuntapConnections:x,_getTuntapConnections:T,socks5Connections:z,_getSocks5Connections:E,handleTunnelConnections:A,clearConnectionsTimeout:I}=(0,N.L2)();return(0,t.sV)((()=>{c(),v(),l(),i(),p(),b(),L()})),(0,t.hi)((()=>{d(),h(),_()})),{state:n,devices:a,machineId:s,handlePageChange:c,handlePageSizeChange:r,tuntap:g}}};const H=(0,_.A)(Q,[["render",B],["__scopeId","data-v-68d1c30a"]]);var K=H,W=a(6743),j=a(1387),q={components:{Head:F,List:K,Status:W.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,k.B)(),n=(0,j.rd)();return(0,t.sV)((()=>{0==e.value.hasAccess("NetManager")&&n.push({name:"NoPermission"})})),{}}};const M=(0,_.A)(q,[["render",r],["__scopeId","data-v-6a3f3b43"]]);var O=M}}]);
|
||||
"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[922],{427:function(e,n,a){a.r(n),a.d(n,{default:function(){return O}});var t=a(6768);const s={class:"net-wrap app-wrap"},l={class:"inner absolute flex flex-column flex-nowrap"},i={class:"head"},o={class:"body flex-1 relative"},c={class:"status"};function r(e,n,a,r,u,d){const g=(0,t.g2)("Head"),p=(0,t.g2)("List"),v=(0,t.g2)("Status");return(0,t.uX)(),(0,t.CE)("div",s,[(0,t.Lk)("div",l,[(0,t.Lk)("div",i,[(0,t.bF)(g)]),(0,t.Lk)("div",o,[(0,t.bF)(p)]),(0,t.Lk)("div",c,[(0,t.bF)(v,{config:!1})])])])}a(4114);const u=e=>((0,t.Qi)("data-v-1fd9ef80"),e=e(),(0,t.jt)(),e),d={class:"head-wrap"},g={class:"tools flex"},p=u((()=>(0,t.Lk)("span",{class:"label"},"服务器 ",-1))),v=u((()=>(0,t.Lk)("span",{class:"flex-1"},null,-1))),h={style:{"margin-left":"1rem"}};function f(e,n,a,s,l,i){const o=(0,t.g2)("el-input"),c=(0,t.g2)("Refresh"),r=(0,t.g2)("el-icon"),u=(0,t.g2)("el-button"),f=(0,t.g2)("Background");return(0,t.uX)(),(0,t.CE)("div",d,[(0,t.Lk)("div",g,[p,(0,t.bF)(o,{modelValue:s.state.server,"onUpdate:modelValue":n[0]||(n[0]=e=>s.state.server=e),readonly:"",style:{width:"14rem"},size:"small"},null,8,["modelValue"]),v,(0,t.bF)(u,{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)(c)])),_:1})])),_:1},8,["onClick"]),(0,t.Lk)("div",h,[(0,t.bF)(f,{name:"net"})])])])}var k=a(3830),m=a(144),C=a(7477),b=a(5096),L={components:{Edit:C.ffu,Refresh:C.C42,Background:b.A},setup(){const e=(0,k.B)(),n=(0,m.Kh)({server:(0,t.EW)((()=>e.value.config.Client.Server.Host))}),a=()=>{window.location.reload()};return{state:n,handleRefresh:a}}},_=a(1241);const w=(0,_.A)(L,[["render",f],["__scopeId","data-v-1fd9ef80"]]);var F=w;const S=e=>((0,t.Qi)("data-v-68d1c30a"),e=e(),(0,t.jt)(),e),x={class:"net-list-wrap flex flex-column absolute"},T={class:"flex-1 scrollbar"},z={class:"flex"},E=S((()=>(0,t.Lk)("div",{class:"flex-1"},null,-1))),A={class:"tuntap"},I={class:"page t-c"},P={class:"page-wrap t-c"};function B(e,n,a,s,l,i){const o=(0,t.g2)("DeviceName"),c=(0,t.g2)("UpdaterBtn"),r=(0,t.g2)("TuntapShow"),u=(0,t.g2)("el-pagination");return(0,t.uX)(),(0,t.CE)("div",x,[(0,t.Lk)("div",T,[(0,t.Lk)("ul",null,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(s.devices.page.List,((e,n)=>((0,t.uX)(),(0,t.CE)("li",{key:n},[(0,t.Lk)("dl",null,[(0,t.Lk)("dt",z,[(0,t.Lk)("div",null,[(0,t.bF)(o,{item:e},null,8,["item"])]),E,(0,t.Lk)("div",null,[(0,t.bF)(c,{config:!1,item:e},null,8,["item"])])]),(0,t.Lk)("dd",A,[s.tuntap.list[e.MachineId]?((0,t.uX)(),(0,t.Wv)(r,{key:0,item:e},null,8,["item"])):(0,t.Q3)("",!0)])])])))),128))])]),(0,t.Lk)("div",I,[(0,t.Lk)("div",P,[(0,t.bF)(u,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:s.devices.page.Count,"page-size":s.devices.page.Request.Size,"current-page":s.devices.page.Request.Page,onCurrentChange:s.handlePageChange,onSizeChange:s.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var y=a(8104),R=a(7985),D=a(9383),U=a(7115),X=a(6588),V=a(3694),N=a(9983),Q={components:{StarFilled:C.BQ2,UpdaterBtn:U.A,DeviceName:X.A,TuntapShow:V.A},setup(e){(0,k.B)();const n=(0,m.Kh)({}),{devices:a,machineId:s,_getSignList:l,_getSignList1:i,handleDeviceEdit:o,handlePageChange:c,handlePageSizeChange:r,handleDel:u,clearDevicesTimeout:d}=(0,R.r)(),{tuntap:g,_getTuntapInfo:p,handleTuntapRefresh:v,clearTuntapTimeout:h,handleTuntapEdit:f,sortTuntapIP:C}=(0,y.O)(),{_getUpdater:b,_subscribeUpdater:L,clearUpdaterTimeout:_}=(0,D.d)(),{connections:w,forwardConnections:F,_getForwardConnections:S,tuntapConnections:x,_getTuntapConnections:T,socks5Connections:z,_getSocks5Connections:E,handleTunnelConnections:A,clearConnectionsTimeout:I}=(0,N.L2)();return(0,t.sV)((()=>{c(),v(),l(),i(),p(),b(),L()})),(0,t.hi)((()=>{d(),h(),_()})),{state:n,devices:a,machineId:s,handlePageChange:c,handlePageSizeChange:r,tuntap:g}}};const H=(0,_.A)(Q,[["render",B],["__scopeId","data-v-68d1c30a"]]);var K=H,W=a(6743),j=a(1387),q={components:{Head:F,List:K,Status:W.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,k.B)(),n=(0,j.rd)();return(0,t.sV)((()=>{0==e.value.hasAccess("NetManager")&&n.push({name:"NoPermission"})})),{}}};const M=(0,_.A)(q,[["render",r],["__scopeId","data-v-6a3f3b43"]]);var O=M}}]);
|
File diff suppressed because one or more lines are too long
@@ -1,5 +1,6 @@
|
||||
using linker.libs;
|
||||
using linker.libs.extends;
|
||||
using linker.snat;
|
||||
using System.Buffers.Binary;
|
||||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
@@ -16,6 +17,7 @@ namespace linker.tun
|
||||
public string Name => name;
|
||||
public bool Running => session != 0;
|
||||
public bool AppNat => winDivertNAT != null && winDivertNAT.Running;
|
||||
private bool systemNat = false;
|
||||
|
||||
private IntPtr waitHandle = IntPtr.Zero, adapter = IntPtr.Zero, session = IntPtr.Zero;
|
||||
private int interfaceNumber = 0;
|
||||
@@ -30,7 +32,7 @@ namespace linker.tun
|
||||
|
||||
private CancellationTokenSource tokenSource;
|
||||
|
||||
private WinDivertNAT winDivertNAT = new WinDivertNAT();
|
||||
private LinkerSNat winDivertNAT = new LinkerSNat();
|
||||
|
||||
public LinkerWinTunDevice()
|
||||
{
|
||||
@@ -189,14 +191,14 @@ namespace linker.tun
|
||||
|
||||
public void SetSystemNat(out string error)
|
||||
{
|
||||
error = "test app nat";
|
||||
return;
|
||||
|
||||
error = string.Empty;
|
||||
|
||||
if (address == null || address.Equals(IPAddress.Any)) return;
|
||||
try
|
||||
{
|
||||
if (address == null || address.Equals(IPAddress.Any) || prefixLength == 0)
|
||||
{
|
||||
error = "NetNat need CIDR,like 10.18.18.0/24";
|
||||
return;
|
||||
}
|
||||
CommandHelper.PowerShell($"start-service WinNat", [], out error);
|
||||
CommandHelper.PowerShell($"Install-WindowsFeature -Name Routing -IncludeManagementTools", [], out error);
|
||||
CommandHelper.PowerShell($"Set-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\" -Name \"IPEnableRouter\" -Value 1", [], out error);
|
||||
@@ -216,11 +218,25 @@ namespace linker.tun
|
||||
{
|
||||
error = ex.Message;
|
||||
}
|
||||
finally
|
||||
{
|
||||
systemNat = string.IsNullOrWhiteSpace(error);
|
||||
}
|
||||
}
|
||||
public void SetAppNat(LinkerTunAppNatItemInfo[] items, out string error)
|
||||
{
|
||||
error = string.Empty;
|
||||
if (address == null || address.Equals(IPAddress.Any))
|
||||
{
|
||||
error = "NetNat need CIDR,like 10.18.18.0/24";
|
||||
return;
|
||||
}
|
||||
|
||||
if (systemNat == false)
|
||||
{
|
||||
winDivertNAT.Shutdown();
|
||||
winDivertNAT.Setup(address, items.Select(c => new WinDivertNAT.AddrInfo(c.IP, c.PrefixLength)).ToArray(), defaultInterfaceIP, out error);
|
||||
winDivertNAT.Setup(address, items.Select(c => new LinkerSNat.AddrInfo(c.IP, c.PrefixLength)).ToArray(), defaultInterfaceIP, out error);
|
||||
}
|
||||
}
|
||||
public void RemoveNat(out string error)
|
||||
{
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker tun</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
@@ -38,6 +38,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\linker.libs\linker.libs.csproj" />
|
||||
<ProjectReference Include="..\linker.snat\linker.snat.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker tunnel</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -10,17 +10,15 @@
|
||||
<template v-else-if="tuntap.list[item.MachineId].Upgrade && tuntap.list[item.MachineId].NatError">
|
||||
<strong class="yellow" :title="tuntap.list[item.MachineId].NatError">{{ tuntap.list[item.MachineId].IP }}</strong>
|
||||
</template>
|
||||
<template v-else-if="tuntap.list[item.MachineId].AppNat">
|
||||
<strong class="app-nat" title="虚拟网卡IP,系统NAT失败,已启用内置应用层SNAT">{{ tuntap.list[item.MachineId].IP }}</strong>
|
||||
<template v-else-if="tuntap.list[item.MachineId].AppNat && tuntap.list[item.MachineId].running">
|
||||
<strong class="app-nat" :title="`虚拟网卡IP\r\n应用层SNAT\r\n如果无法使用点对网,请重启一次系统`">{{ tuntap.list[item.MachineId].IP }}</strong>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if=" item.Connected && tuntap.list[item.MachineId].running">
|
||||
<strong class="green gateway">{{ tuntap.list[item.MachineId].IP }}</strong>
|
||||
<template v-else-if=" item.Connected && tuntap.list[item.MachineId].running">
|
||||
<strong class="green gateway" :title="`虚拟网卡IP\r\n系统NAT`">{{ tuntap.list[item.MachineId].IP }}</strong>
|
||||
</template>
|
||||
<template v-else>
|
||||
<strong>{{ tuntap.list[item.MachineId].IP }}</strong>
|
||||
</template>
|
||||
</template>
|
||||
</a>
|
||||
</div>
|
||||
<template v-if="tuntap.list[item.MachineId].loading">
|
||||
|
@@ -20,17 +20,16 @@
|
||||
<Title>linker</Title>
|
||||
<Authors>snltty</Authors>
|
||||
<Company>snltty</Company>
|
||||
<Description>1. 优化自动分配IP
|
||||
2. 优化网卡,排除不明数据包
|
||||
3. 虚拟网卡点对网IP映射,用于解决网段冲突
|
||||
4. 内置应用层SNAT,用于无法使用系统NAT的windows系统</Description>
|
||||
<Description>1. 一些优化
|
||||
2. 内置应用层SNAT,用于无法使用系统NetNat的windows系统
|
||||
3. 如果你设备很多,请尝试升级其中一个成功重启后再升级其它</Description>
|
||||
<Copyright>snltty</Copyright>
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker</PackageReleaseNotes>
|
||||
<Version>1.7.3</Version>
|
||||
<AssemblyVersion>1.7.3</AssemblyVersion>
|
||||
<FileVersion>1.7.3</FileVersion>
|
||||
<Version>1.7.4</Version>
|
||||
<AssemblyVersion>1.7.4</AssemblyVersion>
|
||||
<FileVersion>1.7.4</FileVersion>
|
||||
<DelaySign>False</DelaySign>
|
||||
</PropertyGroup>
|
||||
|
||||
|
11
version.txt
11
version.txt
@@ -1,6 +1,5 @@
|
||||
v1.7.3
|
||||
2025-04-20 17:31:17
|
||||
1. 优化自动分配IP
|
||||
2. 优化网卡,排除不明数据包
|
||||
3. 虚拟网卡点对网IP映射,用于解决网段冲突
|
||||
4. 内置应用层SNAT,用于无法使用系统NAT的windows系统
|
||||
v1.7.4
|
||||
2025-04-21 21:40:33
|
||||
1. 一些优化
|
||||
2. 内置应用层SNAT,用于无法使用系统NetNat的windows系统
|
||||
3. 如果你设备很多,请尝试升级其中一个成功重启后再升级其它
|
@@ -47,6 +47,7 @@ jobs:
|
||||
dotnet build ./src/linker.messenger.tuntap -c release
|
||||
dotnet build ./src/linker.messenger.updater -c release
|
||||
dotnet build ./src/linker.tun -c release
|
||||
dotnet build ./src/linker.snat -c release
|
||||
dotnet build ./src/linker.tunnel -c release
|
||||
|
||||
- name: Pack
|
||||
@@ -77,6 +78,7 @@ jobs:
|
||||
dotnet pack ./src/linker.messenger.tuntap -c release
|
||||
dotnet pack ./src/linker.messenger.updater -c release
|
||||
dotnet pack ./src/linker.tun -c release
|
||||
dotnet pack ./src/linker.snat -c release
|
||||
dotnet pack ./src/linker.tunnel -c release
|
||||
|
||||
- name: Push
|
||||
@@ -107,4 +109,5 @@ jobs:
|
||||
dotnet nuget push ./src/linker.messenger.tuntap/bin/release/linker.messenger.tuntap.{{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.updater/bin/release/linker.messenger.updater.{{version}}.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.{{version}}.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.{{version}}.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.{{version}}.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_KEY }} --no-symbols
|
||||
|
Reference in New Issue
Block a user