mirror of
https://github.com/snltty/linker.git
synced 2025-10-16 14:11:18 +08:00
整理代码
This commit is contained in:
8
.github/workflows/docker.yml
vendored
8
.github/workflows/docker.yml
vendored
@@ -57,9 +57,9 @@ jobs:
|
||||
docker tag snltty/linker-musl-x64:latest snltty/linker-musl:amd64 && \
|
||||
docker push snltty/linker-musl:amd64 && \
|
||||
docker manifest create snltty/linker-musl:latest snltty/linker-musl:amd64 snltty/linker-musl:arm64 snltty/linker-musl:arm && \
|
||||
docker manifest create snltty/linker-musl:v1.6.3 snltty/linker-musl:amd64 snltty/linker-musl:arm64 snltty/linker-musl:arm && \
|
||||
docker manifest create snltty/linker-musl:v1.6.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.6.3 && \
|
||||
docker manifest push snltty/linker-musl:v1.6.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.6.3 snltty/linker-debian:amd64 snltty/linker-debian:arm64 snltty/linker-debian:arm && \
|
||||
docker manifest create snltty/linker-debian:v1.6.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.6.3
|
||||
docker manifest push snltty/linker-debian:v1.6.4
|
28
.github/workflows/dotnet.yml
vendored
28
.github/workflows/dotnet.yml
vendored
@@ -33,8 +33,8 @@ jobs:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACTIONS_TOKEN }}
|
||||
with:
|
||||
tag_name: v1.6.3
|
||||
release_name: v1.6.3.${{ steps.date.outputs.today }}
|
||||
tag_name: v1.6.4
|
||||
release_name: v1.6.4.${{ steps.date.outputs.today }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
body: "1. 优化UI,显示网络计算IP数\r\n2. 修复内网穿透不停止直接删除导致的无法再次添加的问题\r\n3. 优化网卡的端口转发\r\n4. 修复网络掩码计算错误\r\n5. 测试中,不要更,不要更,不要更"
|
||||
@@ -47,7 +47,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-win-x86.zip
|
||||
target-path: /downloads/linker/v1.6.3/linker-win-x86.zip
|
||||
target-path: /downloads/linker/v1.6.4/linker-win-x86.zip
|
||||
- name: upload-win-x86
|
||||
id: upload-win-x86
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -67,7 +67,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-win-x64.zip
|
||||
target-path: /downloads/linker/v1.6.3/linker-win-x64.zip
|
||||
target-path: /downloads/linker/v1.6.4/linker-win-x64.zip
|
||||
- name: upload-win-x64
|
||||
id: upload-win-x64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -87,7 +87,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-win-arm64.zip
|
||||
target-path: /downloads/linker/v1.6.3/linker-win-arm64.zip
|
||||
target-path: /downloads/linker/v1.6.4/linker-win-arm64.zip
|
||||
- name: upload-win-arm64
|
||||
id: upload-win-arm64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -107,7 +107,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-linux-x64.zip
|
||||
target-path: /downloads/linker/v1.6.3/linker-linux-x64.zip
|
||||
target-path: /downloads/linker/v1.6.4/linker-linux-x64.zip
|
||||
- name: upload-linux-x64
|
||||
id: upload-linux-x64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -127,7 +127,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-linux-arm.zip
|
||||
target-path: /downloads/linker/v1.6.3/linker-linux-arm.zip
|
||||
target-path: /downloads/linker/v1.6.4/linker-linux-arm.zip
|
||||
- name: upload-linux-arm
|
||||
id: upload-linux-arm
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -147,7 +147,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-linux-arm64.zip
|
||||
target-path: /downloads/linker/v1.6.3/linker-linux-arm64.zip
|
||||
target-path: /downloads/linker/v1.6.4/linker-linux-arm64.zip
|
||||
- name: upload-linux-arm64
|
||||
id: upload-linux-arm64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -167,7 +167,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-linux-musl-x64.zip
|
||||
target-path: /downloads/linker/v1.6.3/linker-linux-musl-x64.zip
|
||||
target-path: /downloads/linker/v1.6.4/linker-linux-musl-x64.zip
|
||||
- name: upload-linux-musl-x64
|
||||
id: upload-linux-musl-x64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -187,7 +187,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-linux-musl-arm.zip
|
||||
target-path: /downloads/linker/v1.6.3/linker-linux-musl-arm.zip
|
||||
target-path: /downloads/linker/v1.6.4/linker-linux-musl-arm.zip
|
||||
- name: upload-linux-musl-arm
|
||||
id: upload-linux-musl-arm
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -207,7 +207,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-linux-musl-arm64.zip
|
||||
target-path: /downloads/linker/v1.6.3/linker-linux-musl-arm64.zip
|
||||
target-path: /downloads/linker/v1.6.4/linker-linux-musl-arm64.zip
|
||||
- name: upload-linux-musl-arm64
|
||||
id: upload-linux-musl-arm64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -227,7 +227,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-osx-x64.zip
|
||||
target-path: /downloads/linker/v1.6.3/linker-osx-x64.zip
|
||||
target-path: /downloads/linker/v1.6.4/linker-osx-x64.zip
|
||||
- name: upload-osx-x64
|
||||
id: upload-osx-x64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -247,7 +247,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-osx-arm64.zip
|
||||
target-path: /downloads/linker/v1.6.3/linker-osx-arm64.zip
|
||||
target-path: /downloads/linker/v1.6.4/linker-osx-arm64.zip
|
||||
- name: upload-osx-arm64
|
||||
id: upload-osx-arm64
|
||||
uses: actions/upload-release-asset@master
|
||||
@@ -277,7 +277,7 @@ jobs:
|
||||
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||
bucket: ide-qbcode
|
||||
asset-path: ./public/publish-zip/linker-windows-route.zip
|
||||
target-path: /downloads/linker/v1.6.3/linker-windows-route.zip
|
||||
target-path: /downloads/linker/v1.6.4/linker-windows-route.zip
|
||||
- name: upload-version-oss
|
||||
id: upload-version-oss
|
||||
uses: tvrcgo/oss-action@v0.1.1
|
||||
|
9
.github/workflows/nuget.yml
vendored
9
.github/workflows/nuget.yml
vendored
@@ -24,12 +24,14 @@ jobs:
|
||||
dotnet build ./linker.libs -c release
|
||||
dotnet build ./linker.tunnel -c release
|
||||
dotnet build ./linker.tun -c release
|
||||
dotnet build ./linker.messenger -c release
|
||||
|
||||
- name: Pack
|
||||
run: |
|
||||
dotnet pack ./linker.libs -c release
|
||||
dotnet pack ./linker.tunnel -c release
|
||||
dotnet pack ./linker.tun -c release
|
||||
dotnet pack ./linker.messenger -c release
|
||||
|
||||
- name: Install Nuget
|
||||
uses: nuget/setup-nuget@v1
|
||||
@@ -38,6 +40,7 @@ jobs:
|
||||
|
||||
- name: Push
|
||||
run: |
|
||||
nuget push ./linker.tunnel/bin/release/linker.tunnel.1.6.3.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.libs/bin/release/linker.libs.1.6.3.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.tun/bin/release/linker.tun.1.6.3.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.tunnel/bin/release/linker.tunnel.1.6.4.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.libs/bin/release/linker.libs.1.6.4.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.tun/bin/release/linker.tun.1.6.4.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.messenger/bin/release/linker.messenger.1.6.4.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
|
@@ -12,18 +12,18 @@ namespace linker.gen
|
||||
public class InterfaceSourceGenerator : IIncrementalGenerator
|
||||
{
|
||||
private List<GeneratorInfo> generators = new List<GeneratorInfo> {
|
||||
new GeneratorInfo{ ClassName="FlowTypesLoader", ClassNameSpace="linker.plugins.flow", InterfaceName="linker.plugins.flow.IFlow" },
|
||||
new GeneratorInfo{ ClassName="RelayTypesLoader", ClassNameSpace="linker.plugins.relay.client", InterfaceName="linker.plugins.relay.client.transport.ITransport" },
|
||||
new GeneratorInfo{ ClassName="RelayValidatorTypeLoader", ClassNameSpace="linker.plugins.relay.server.validator", InterfaceName="linker.plugins.relay.server.validator.IRelayValidator" },
|
||||
new GeneratorInfo{ ClassName="SignInArgsTypesLoader", ClassNameSpace="linker.plugins.signIn.args", InterfaceName="linker.plugins.signIn.args.ISignInArgs" },
|
||||
new GeneratorInfo{ ClassName="ResolverTypesLoader", ClassNameSpace="linker.plugins.resolver", InterfaceName="linker.plugins.resolver.IResolver" },
|
||||
new GeneratorInfo{ ClassName="TunnelExcludeIPTypesLoader", ClassNameSpace="linker.plugins.tunnel.excludeip", InterfaceName="linker.plugins.tunnel.excludeip.ITunnelExcludeIP" },
|
||||
new GeneratorInfo{ ClassName="StartupTransfer", ClassNameSpace="linker.startup", InterfaceName="linker.startup.IStartup", Instance=true },
|
||||
new GeneratorInfo{ ClassName="MessengerResolverTypesLoader", ClassNameSpace="linker.plugins.messenger", InterfaceName="linker.plugins.messenger.IMessenger"},
|
||||
new GeneratorInfo{ ClassName="ApiClientTypesLoader", ClassNameSpace="linker.plugins.capi", InterfaceName="linker.plugins.capi.IApiClientController"},
|
||||
new GeneratorInfo{ ClassName="ConfigSyncTypesLoader", ClassNameSpace="linker.plugins.config", InterfaceName="linker.plugins.config.IConfigSync"},
|
||||
new GeneratorInfo{ ClassName="DecenterTypesLoader", ClassNameSpace="linker.plugins.decenter", InterfaceName="linker.plugins.decenter.IDecenter"},
|
||||
new GeneratorInfo{ ClassName="RouteExcludeIPTypesLoader", ClassNameSpace="linker.plugins.route", InterfaceName="linker.plugins.route.IRouteExcludeIP" },
|
||||
new GeneratorInfo{ ClassName="linker.plugins.flow.FlowTypesLoader", InterfaceName="linker.plugins.flow.IFlow" },
|
||||
new GeneratorInfo{ ClassName="linker.plugins.relay.client.RelayTypesLoader", InterfaceName="linker.plugins.relay.client.transport.ITransport" },
|
||||
new GeneratorInfo{ ClassName="linker.plugins.relay.server.validator.RelayValidatorTypeLoader", InterfaceName="linker.plugins.relay.server.validator.IRelayValidator" },
|
||||
new GeneratorInfo{ ClassName="linker.plugins.signIn.args.SignInArgsTypesLoader", InterfaceName="linker.plugins.signIn.args.ISignInArgs" },
|
||||
new GeneratorInfo{ ClassName="linker.plugins.resolver.ResolverTypesLoader", InterfaceName="linker.plugins.resolver.IResolver" },
|
||||
new GeneratorInfo{ ClassName="linker.plugins.tunnel.excludeip.TunnelExcludeIPTypesLoader", InterfaceName="linker.plugins.tunnel.excludeip.ITunnelExcludeIP" },
|
||||
new GeneratorInfo{ ClassName="linker.startup.StartupTransfer", InterfaceName="linker.startup.IStartup", Instance=true },
|
||||
new GeneratorInfo{ ClassName="linker.plugins.messenger.MessengerResolverTypesLoader", InterfaceName="linker.messenger.IMessenger"},
|
||||
new GeneratorInfo{ ClassName="linker.plugins.capi.ApiClientTypesLoader",InterfaceName="linker.plugins.capi.IApiClientController"},
|
||||
new GeneratorInfo{ ClassName="linker.plugins.config.ConfigSyncTypesLoader", InterfaceName="linker.plugins.config.IConfigSync"},
|
||||
new GeneratorInfo{ ClassName="linker.plugins.decenter.DecenterTypesLoader", InterfaceName="linker.plugins.decenter.IDecenter"},
|
||||
new GeneratorInfo{ ClassName="linker.plugins.route.RouteExcludeIPTypesLoader", InterfaceName="linker.plugins.route.IRouteExcludeIP" },
|
||||
};
|
||||
|
||||
public void Initialize(IncrementalGeneratorInitializationContext context)
|
||||
@@ -74,14 +74,16 @@ namespace linker.gen
|
||||
}
|
||||
}
|
||||
|
||||
var spaces = info.ClassName.Split('.');
|
||||
|
||||
var source = $@"
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
{string.Join("\r\n", namespaces)}
|
||||
|
||||
namespace {info.ClassNameSpace}
|
||||
namespace {string.Join(".", spaces.Take(spaces.Count() - 1))}
|
||||
{{
|
||||
public partial class {info.ClassName}
|
||||
public partial class {spaces.LastOrDefault()}
|
||||
{{
|
||||
public static List<Type> GetSourceGeneratorTypes()
|
||||
{{
|
||||
@@ -110,7 +112,6 @@ namespace linker.gen
|
||||
public sealed class GeneratorInfo
|
||||
{
|
||||
public string ClassName { get; set; }
|
||||
public string ClassNameSpace { get; set; }
|
||||
public string InterfaceName { get; set; }
|
||||
public bool Instance { get; set; }
|
||||
}
|
||||
|
@@ -14,9 +14,9 @@
|
||||
<Copyright>snltty</Copyright>
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<Version>1.6.3</Version>
|
||||
<AssemblyVersion>1.6.3</AssemblyVersion>
|
||||
<FileVersion>1.6.3</FileVersion>
|
||||
<Version>1.6.4</Version>
|
||||
<AssemblyVersion>1.6.4</AssemblyVersion>
|
||||
<FileVersion>1.6.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebugType>full</DebugType>
|
||||
|
@@ -6,7 +6,7 @@ using System.Net.Security;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
|
||||
namespace linker.plugins.messenger
|
||||
namespace linker.messenger
|
||||
{
|
||||
public interface IConnectionReceiveCallback
|
||||
{
|
17
linker.messenger/IMessenger.cs
Normal file
17
linker.messenger/IMessenger.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
namespace linker.messenger
|
||||
{
|
||||
public interface IMessenger
|
||||
{
|
||||
}
|
||||
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public sealed class MessengerIdAttribute : Attribute
|
||||
{
|
||||
public ushort Id { get; set; }
|
||||
public MessengerIdAttribute(ushort id)
|
||||
{
|
||||
Id = id;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -6,37 +6,20 @@ using System.Reflection;
|
||||
using System.Security.Authentication;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using linker.libs.extends;
|
||||
using linker.plugins.resolver;
|
||||
|
||||
namespace linker.plugins.messenger
|
||||
namespace linker.messenger
|
||||
{
|
||||
public interface IMessengerResolver
|
||||
{
|
||||
public void Initialize(string certificate, string password);
|
||||
public Task<IConnection> BeginReceiveClient(Socket socket);
|
||||
public Task<IConnection> BeginReceiveClient(Socket socket, bool sendFlag, byte flag);
|
||||
public void LoadMessenger(List<IMessenger> list);
|
||||
public Task Resolve(Socket socket, Memory<byte> memory);
|
||||
public Task Resolve(Socket socket, IPEndPoint ep, Memory<byte> memory);
|
||||
}
|
||||
|
||||
public sealed class MessengerResolverResolver : IResolver
|
||||
{
|
||||
public ResolverType Type => ResolverType.Messenger;
|
||||
|
||||
private readonly IMessengerResolver messengerResolver;
|
||||
public MessengerResolverResolver(IMessengerResolver messengerResolver)
|
||||
{
|
||||
this.messengerResolver = messengerResolver;
|
||||
}
|
||||
public async Task Resolve(Socket socket, Memory<byte> memory)
|
||||
{
|
||||
await messengerResolver.Resolve(socket, memory);
|
||||
}
|
||||
public async Task Resolve(Socket socket, IPEndPoint ep, Memory<byte> memory)
|
||||
{
|
||||
await messengerResolver.Resolve(socket, ep, memory);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 消息处理总线
|
||||
@@ -70,11 +53,9 @@ namespace linker.plugins.messenger
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public virtual void AddReceive(ushort id, ulong bytes) { }
|
||||
public virtual void AddSendt(ushort id, ulong bytes) { }
|
||||
|
||||
|
||||
public async Task Resolve(Socket socket, Memory<byte> memory)
|
||||
{
|
||||
try
|
||||
@@ -98,6 +79,10 @@ namespace linker.plugins.messenger
|
||||
}
|
||||
|
||||
public async Task<IConnection> BeginReceiveClient(Socket socket)
|
||||
{
|
||||
return await BeginReceiveClient(socket,false,0);
|
||||
}
|
||||
public async Task<IConnection> BeginReceiveClient(Socket socket,bool sendFlag,byte flag)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -106,7 +91,10 @@ namespace linker.plugins.messenger
|
||||
return null;
|
||||
}
|
||||
socket.KeepAlive();
|
||||
await socket.SendAsync(new byte[] { (byte)ResolverType.Messenger }).ConfigureAwait(false);
|
||||
if (sendFlag)
|
||||
{
|
||||
await socket.SendAsync(new byte[] { flag }).ConfigureAwait(false);
|
||||
}
|
||||
NetworkStream networkStream = new NetworkStream(socket, false);
|
||||
SslStream sslStream = new SslStream(networkStream, true, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
|
||||
await sslStream.AuthenticateAsClientAsync(new SslClientAuthenticationOptions
|
@@ -1,7 +1,7 @@
|
||||
using linker.libs;
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace linker.plugins.messenger
|
||||
namespace linker.messenger
|
||||
{
|
||||
public interface IMessengerSender
|
||||
{
|
@@ -2,7 +2,7 @@
|
||||
using System.Buffers;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace linker.plugins.messenger
|
||||
namespace linker.messenger
|
||||
{
|
||||
/// <summary>
|
||||
/// 请求数据包
|
37
linker.messenger/linker.messenger.csproj
Normal file
37
linker.messenger/linker.messenger.csproj
Normal file
@@ -0,0 +1,37 @@
|
||||
<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 messenger</Title>
|
||||
<Authors>snltty</Authors>
|
||||
<Company>snltty</Company>
|
||||
<Description>linker messenger</Description>
|
||||
<Copyright>snltty</Copyright>
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker messenger</PackageReleaseNotes>
|
||||
<Version>1.6.4</Version>
|
||||
<AssemblyVersion>1.6.4</AssemblyVersion>
|
||||
<FileVersion>1.6.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebugType>full</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||
<DebugType>none</DebugType>
|
||||
<DebugSymbols>false</DebugSymbols>
|
||||
<Optimize>True</Optimize>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\linker.libs\linker.libs.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
42
linker.signin/linker.signin.csproj
Normal file
42
linker.signin/linker.signin.csproj
Normal file
@@ -0,0 +1,42 @@
|
||||
<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 signin</Title>
|
||||
<Authors>snltty</Authors>
|
||||
<Company>snltty</Company>
|
||||
<Description>linker signin</Description>
|
||||
<Copyright>snltty</Copyright>
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker signin</PackageReleaseNotes>
|
||||
<Version>1.6.4</Version>
|
||||
<AssemblyVersion>1.6.4</AssemblyVersion>
|
||||
<FileVersion>1.6.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebugType>full</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||
<DebugType>none</DebugType>
|
||||
<DebugSymbols>false</DebugSymbols>
|
||||
<Optimize>True</Optimize>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MemoryPack" Version="1.21.3" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\linker.libs\linker.libs.csproj" />
|
||||
<ProjectReference Include="..\linker.messenger\linker.messenger.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
28
linker.sln
28
linker.sln
@@ -17,6 +17,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "linker.tun.test", "linker.t
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "linker.gen", "linker.gen\linker.gen.csproj", "{031C3589-72BB-4A3F-B1A5-BC0665FDF01B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "linker.messenger", "linker.messenger\linker.messenger.csproj", "{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "linker.signin", "linker.signin\linker.signin.csproj", "{5B1F4754-D1B6-426B-B310-8C21F26879D2}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -111,6 +115,30 @@ Global
|
||||
{031C3589-72BB-4A3F-B1A5-BC0665FDF01B}.Release|x64.Build.0 = Release|Any CPU
|
||||
{031C3589-72BB-4A3F-B1A5-BC0665FDF01B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{031C3589-72BB-4A3F-B1A5-BC0665FDF01B}.Release|x86.Build.0 = Release|Any CPU
|
||||
{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}.Release|x64.Build.0 = Release|Any CPU
|
||||
{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2B0BFDBB-8C5F-4E47-8309-2A764C2567C2}.Release|x86.Build.0 = Release|Any CPU
|
||||
{5B1F4754-D1B6-426B-B310-8C21F26879D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5B1F4754-D1B6-426B-B310-8C21F26879D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5B1F4754-D1B6-426B-B310-8C21F26879D2}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{5B1F4754-D1B6-426B-B310-8C21F26879D2}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{5B1F4754-D1B6-426B-B310-8C21F26879D2}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{5B1F4754-D1B6-426B-B310-8C21F26879D2}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{5B1F4754-D1B6-426B-B310-8C21F26879D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5B1F4754-D1B6-426B-B310-8C21F26879D2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5B1F4754-D1B6-426B-B310-8C21F26879D2}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{5B1F4754-D1B6-426B-B310-8C21F26879D2}.Release|x64.Build.0 = Release|Any CPU
|
||||
{5B1F4754-D1B6-426B-B310-8C21F26879D2}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{5B1F4754-D1B6-426B-B310-8C21F26879D2}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@@ -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.185" ProductVersion="0.0.0.185" 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.186" ProductVersion="0.0.0.186" 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
linker.tray.win/dist/linker.tray.win.exe
vendored
BIN
linker.tray.win/dist/linker.tray.win.exe
vendored
Binary file not shown.
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker tun</PackageReleaseNotes>
|
||||
<Version>1.6.3</Version>
|
||||
<AssemblyVersion>1.6.3</AssemblyVersion>
|
||||
<FileVersion>1.6.3</FileVersion>
|
||||
<Version>1.6.4</Version>
|
||||
<AssemblyVersion>1.6.4</AssemblyVersion>
|
||||
<FileVersion>1.6.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -16,9 +16,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker tunnel</PackageReleaseNotes>
|
||||
<Version>1.6.3</Version>
|
||||
<AssemblyVersion>1.6.3</AssemblyVersion>
|
||||
<FileVersion>1.6.3</FileVersion>
|
||||
<Version>1.6.4</Version>
|
||||
<AssemblyVersion>1.6.4</AssemblyVersion>
|
||||
<FileVersion>1.6.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
@@ -32,32 +32,6 @@ a.a-line {
|
||||
;
|
||||
}
|
||||
|
||||
span.point {
|
||||
width: .8rem;
|
||||
height: .8rem;
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin: -.2rem .3rem 0 -1.3rem;
|
||||
background-color: #eee;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
span.point.p2p {
|
||||
background-color: #01c901;
|
||||
border: 1px solid #049538;
|
||||
}
|
||||
|
||||
span.point.relay {
|
||||
background-color: #e3e811;
|
||||
border: 1px solid #b3c410;
|
||||
}
|
||||
|
||||
span.point.node {
|
||||
background-color: #09dda9;
|
||||
border: 1px solid #0cac90;
|
||||
}
|
||||
|
||||
|
||||
.flex {
|
||||
display: flex;
|
||||
|
@@ -22,7 +22,7 @@ export default {
|
||||
setup(props) {
|
||||
const globalData = injectGlobalData();
|
||||
const state = reactive({
|
||||
list:globalData.value.config.Client.Action.Args[globalData.value.config.Client.ServerInfo.Host] || ''
|
||||
list:globalData.value.config.Client.Action.Args[globalData.value.config.Client.Server.Host] || ''
|
||||
});
|
||||
const handleSave = ()=>{
|
||||
try{
|
||||
@@ -35,7 +35,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
const json = {};
|
||||
json[globalData.value.config.Client.ServerInfo.Host] = state.list;
|
||||
json[globalData.value.config.Client.Server.Host] = state.list;
|
||||
setArgs(json).then(()=>{
|
||||
ElMessage.success('已操作');
|
||||
}).catch((err)=>{
|
||||
|
64
linker.web/src/views/full/devices/ConnectionShow.vue
Normal file
64
linker.web/src/views/full/devices/ConnectionShow.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<template>
|
||||
<template v-if="state.connection && state.connection.Connected">
|
||||
<template v-if="state.connection.Type == 0">
|
||||
<span class="point p2p" title="打洞直连"></span>
|
||||
</template>
|
||||
<template v-else-if="state.connection.Type == 1">
|
||||
<span class="point relay" title="中继连接"></span>
|
||||
</template>
|
||||
<template v-else-if="state.connection.Type == 2">
|
||||
<span class="point node" title="节点连接"></span>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<span class="point" title="未连接"></span>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { reactive, watch } from 'vue';
|
||||
|
||||
export default {
|
||||
props: ['data'],
|
||||
setup (props) {
|
||||
|
||||
const state = reactive({
|
||||
connection:props.data
|
||||
});
|
||||
watch(()=>props.data,()=>{
|
||||
state.connection = props.data
|
||||
})
|
||||
|
||||
return {state}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
span.point {
|
||||
width: .8rem;
|
||||
height: .8rem;
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin: -.2rem .3rem 0 -1.3rem;
|
||||
background-color: #eee;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
span.point.p2p {
|
||||
background-color: #01c901;
|
||||
border: 1px solid #049538;
|
||||
}
|
||||
|
||||
span.point.relay {
|
||||
background-color: #e3e811;
|
||||
border: 1px solid #b3c410;
|
||||
}
|
||||
|
||||
span.point.node {
|
||||
background-color: #09dda9;
|
||||
border: 1px solid #0cac90;
|
||||
}
|
||||
|
||||
</style>
|
@@ -4,20 +4,7 @@
|
||||
<template v-if="scope.row.Connected">
|
||||
<template v-if="scope.row.isSelf && (hasForwardShowSelf || hasForwardSelf)">
|
||||
<div>
|
||||
<template v-if="connections.list[scope.row.MachineId] && connections.list[scope.row.MachineId].Connected">
|
||||
<template v-if="connections.list[scope.row.MachineId].Type == 0">
|
||||
<span class="point p2p" title="打洞直连"></span>
|
||||
</template>
|
||||
<template v-else-if="connections.list[scope.row.MachineId].Type == 1">
|
||||
<span class="point relay" title="中继连接"></span>
|
||||
</template>
|
||||
<template v-else-if="connections.list[scope.row.MachineId].Type == 2">
|
||||
<span class="point node" title="节点连接"></span>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<span class="point" title="未连接"></span>
|
||||
</template>
|
||||
<ConnectionShow :data="connections.list[scope.row.MachineId]"></ConnectionShow>
|
||||
<a href="javascript:;" title="管理自己的端口转发" :class="{green:forward.list[scope.row.MachineId]>0 }" @click="handleEdit(scope.row.MachineId,scope.row.MachineName)">
|
||||
<span :class="{gateway:forward.list[scope.row.MachineId]>0}">端口转发({{forward.list[scope.row.MachineId]>99 ? '99+' : forward.list[scope.row.MachineId]}})</span>
|
||||
</a>
|
||||
@@ -30,20 +17,7 @@
|
||||
</template>
|
||||
<template v-else-if="hasForwardShowOther || hasForwardOther">
|
||||
<div>
|
||||
<template v-if="connections.list[scope.row.MachineId] && connections.list[scope.row.MachineId].Connected">
|
||||
<template v-if="connections.list[scope.row.MachineId].Type == 0">
|
||||
<span class="point p2p" title="打洞直连"></span>
|
||||
</template>
|
||||
<template v-else-if="connections.list[scope.row.MachineId].Type == 1">
|
||||
<span class="point relay" title="中继连接"></span>
|
||||
</template>
|
||||
<template v-else-if="connections.list[scope.row.MachineId].Type == 2">
|
||||
<span class="point node" title="节点连接"></span>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<span class="point" title="未连接"></span>
|
||||
</template>
|
||||
<ConnectionShow :data="connections.list[scope.row.MachineId]"></ConnectionShow>
|
||||
<a href="javascript:;" title="管理自己的端口转发" :class="{green:forward.list[scope.row.MachineId]>0}" @click="handleEdit(scope.row.MachineId,scope.row.MachineName)">
|
||||
<span :class="{gateway:forward.list[scope.row.MachineId]>0}">端口转发({{forward.list[scope.row.MachineId]>99 ? '99+' : forward.list[scope.row.MachineId]}})</span>
|
||||
</a>
|
||||
@@ -64,9 +38,11 @@ import { useForward } from './forward';
|
||||
import { useSforward } from './sforward';
|
||||
import { computed } from 'vue';
|
||||
import { useForwardConnections } from './connections';
|
||||
import ConnectionShow from './ConnectionShow.vue';
|
||||
|
||||
export default {
|
||||
emits: ['edit','sedit'],
|
||||
components:{ConnectionShow},
|
||||
setup(props, { emit }) {
|
||||
|
||||
const forward = useForward()
|
||||
|
@@ -2,20 +2,7 @@
|
||||
<div>
|
||||
<div class="flex">
|
||||
<div class="flex-1">
|
||||
<template v-if="connections.list[item.MachineId]&& connections.list[item.MachineId].Connected">
|
||||
<template v-if="connections.list[item.MachineId].Type == 0">
|
||||
<span class="point p2p" title="打洞直连"></span>
|
||||
</template>
|
||||
<template v-else-if="connections.list[item.MachineId].Type == 1">
|
||||
<span class="point relay" title="中继连接"></span>
|
||||
</template>
|
||||
<template v-else-if="connections.list[item.MachineId].Type == 2">
|
||||
<span class="point node" title="节点连接"></span>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<span class="point" title="未连接"></span>
|
||||
</template>
|
||||
<ConnectionShow :data="connections.list[item.MachineId]"></ConnectionShow>
|
||||
<a href="javascript:;" class="a-line" @click="handleSocks5Port(socks5.list[item.MachineId])" title="此设备的socks5代理">
|
||||
<template v-if="socks5.list[item.MachineId].SetupError">
|
||||
<strong class="red" :title="socks5.list[item.MachineId].SetupError">
|
||||
@@ -68,10 +55,11 @@ import {Loading} from '@element-plus/icons-vue'
|
||||
import { injectGlobalData } from '@/provide';
|
||||
import { computed } from 'vue';
|
||||
import { useSocks5Connections } from './connections';
|
||||
import ConnectionShow from './ConnectionShow.vue';
|
||||
export default {
|
||||
props:['item','config'],
|
||||
emits: ['edit','refresh'],
|
||||
components:{Loading},
|
||||
components:{Loading,ConnectionShow},
|
||||
setup (props,{emit}) {
|
||||
|
||||
const socks5 = useSocks5();
|
||||
|
@@ -2,20 +2,7 @@
|
||||
<div>
|
||||
<div class="flex">
|
||||
<div class="flex-1">
|
||||
<template v-if="connections.list[item.MachineId] && connections.list[item.MachineId].Connected">
|
||||
<template v-if="connections.list[item.MachineId].Type == 0">
|
||||
<span class="point p2p" title="打洞直连"></span>
|
||||
</template>
|
||||
<template v-else-if="connections.list[item.MachineId].Type == 1">
|
||||
<span class="point relay" title="中继连接"></span>
|
||||
</template>
|
||||
<template v-else-if="connections.list[item.MachineId].Type == 2">
|
||||
<span class="point node" title="节点连接"></span>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<span class="point" title="未连接"></span>
|
||||
</template>
|
||||
<ConnectionShow :data="connections.list[item.MachineId]"></ConnectionShow>
|
||||
<a href="javascript:;" class="a-line" @click="handleTuntapIP(tuntap.list[item.MachineId])" title="此设备的虚拟网卡IP">
|
||||
<template v-if="tuntap.list[item.MachineId].SetupError">
|
||||
<strong class="red" :title="tuntap.list[item.MachineId].SetupError">{{ tuntap.list[item.MachineId].IP }}</strong>
|
||||
@@ -77,10 +64,11 @@ import {Loading} from '@element-plus/icons-vue'
|
||||
import { injectGlobalData } from '@/provide';
|
||||
import { computed } from 'vue';
|
||||
import { useTuntapConnections } from './connections';
|
||||
import ConnectionShow from './ConnectionShow.vue';
|
||||
export default {
|
||||
props:['item','config'],
|
||||
emits: ['edit','refresh'],
|
||||
components:{Loading},
|
||||
components:{Loading,ConnectionShow},
|
||||
setup (props,{emit}) {
|
||||
|
||||
const tuntap = useTuntap();
|
||||
|
@@ -123,7 +123,7 @@ export default {
|
||||
password:step.value.form.client.password || globalData.value.config.Client.CApi.ApiPassword,
|
||||
|
||||
hasServer:step.value.form.client.hasServer ||false,
|
||||
server:step.value.form.client.server ||globalData.value.config.Client.ServerInfo.Host,
|
||||
server:step.value.form.client.server ||globalData.value.config.Client.Server.Host,
|
||||
serverSecretKey:step.value.form.client.serverSecretKey ||globalData.value.config.Client.ServerSecretKey,
|
||||
sForwardSecretKey:step.value.form.client.sForwardSecretKey ||globalData.value.config.Client.SForward.SecretKey,
|
||||
relaySecretKey:step.value.form.client.relaySecretKey ||(globalData.value.config.Client.Relay.Servers[0] || {SecretKey:'snltty'}).SecretKey,
|
||||
|
@@ -41,8 +41,9 @@ export default {
|
||||
components:{SForward,Updater,RelayServers},
|
||||
setup(props) {
|
||||
const globalData = injectGlobalData();
|
||||
console.log(globalData.value.config.Client.Server);
|
||||
const state = reactive({
|
||||
list:globalData.value.config.Client.ServerInfo,
|
||||
list:globalData.value.config.Client.Server,
|
||||
height: computed(()=>globalData.value.height-90),
|
||||
});
|
||||
|
||||
|
@@ -3,7 +3,7 @@
|
||||
<div class="copy">
|
||||
<a href="javascript:;" class="memory" title="赞助一笔,让作者饱餐一顿" @click="state.showPay = true">
|
||||
<img src="@/assets/coin.svg" alt="memory" />
|
||||
<span>各位老板行行好</span>
|
||||
<span>赞助</span>
|
||||
</a>
|
||||
<a href="https://github.com/snltty/linker" target="_blank">©linker {{ self.Version }}</a>
|
||||
</div>
|
||||
|
@@ -30,7 +30,7 @@ export default {
|
||||
});
|
||||
watch(()=>globalData.value.config.Client.Servers,()=>{
|
||||
state.servers = (globalData.value.config.Client.Servers || []).slice(0,1);
|
||||
state.server = globalData.value.config.Client.ServerInfo.Host;
|
||||
state.server = globalData.value.config.Client.Server.Host;
|
||||
});
|
||||
const handleRefresh = ()=>{
|
||||
window.location.reload();
|
||||
|
@@ -30,9 +30,9 @@
|
||||
<PackageProjectUrl>https://github.com/snltty/linker</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/snltty/linker</RepositoryUrl>
|
||||
<PackageReleaseNotes>linker</PackageReleaseNotes>
|
||||
<Version>1.6.3</Version>
|
||||
<AssemblyVersion>1.6.3</AssemblyVersion>
|
||||
<FileVersion>1.6.3</FileVersion>
|
||||
<Version>1.6.4</Version>
|
||||
<AssemblyVersion>1.6.4</AssemblyVersion>
|
||||
<FileVersion>1.6.4</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
<IsTrimmable>false</IsTrimmable>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\linker.messenger\linker.messenger.csproj" />
|
||||
<ProjectReference Include="..\linker.tunnel\linker.tunnel.csproj" />
|
||||
<ProjectReference Include="..\linker.libs\linker.libs.csproj" />
|
||||
<ProjectReference Include="..\linker.tun\linker.tun.csproj" />
|
||||
|
@@ -7,6 +7,7 @@ using linker.plugins.client;
|
||||
using linker.plugins.messenger;
|
||||
using MemoryPack;
|
||||
using linker.plugins.access.messenger;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.access
|
||||
{
|
||||
|
@@ -1,5 +1,6 @@
|
||||
using linker.config;
|
||||
using linker.libs;
|
||||
using linker.messenger;
|
||||
using linker.plugins.client;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.signin.messenger;
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using linker.plugins.messenger;
|
||||
using linker.messenger;
|
||||
using linker.plugins.messenger;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace linker.plugins.client
|
||||
|
@@ -8,6 +8,8 @@ using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.signIn.args;
|
||||
using linker.messenger;
|
||||
using linker.plugins.resolver;
|
||||
|
||||
namespace linker.plugins.client
|
||||
{
|
||||
@@ -124,7 +126,7 @@ namespace linker.plugins.client
|
||||
Socket socket = new Socket(remote.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
|
||||
socket.KeepAlive();
|
||||
await socket.ConnectAsync(remote).WaitAsync(TimeSpan.FromMilliseconds(5000)).ConfigureAwait(false);
|
||||
clientSignInState.Connection = await messengerResolver.BeginReceiveClient(socket).ConfigureAwait(false);
|
||||
clientSignInState.Connection = await messengerResolver.BeginReceiveClient(socket, true, (byte)ResolverType.Messenger).ConfigureAwait(false);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@@ -30,6 +30,7 @@ namespace linker.config
|
||||
new ClientServerInfo{ Name="Linker", Host="linker.snltty.com:1802" }
|
||||
#endif
|
||||
};
|
||||
public ClientServerInfo Server => Servers[0];
|
||||
public ClientServerInfo[] Servers
|
||||
{
|
||||
get => servers; set { servers = value; }
|
||||
@@ -54,6 +55,7 @@ namespace linker.config
|
||||
}
|
||||
|
||||
private ClientGroupInfo[] groups = new[] { new ClientGroupInfo { } };
|
||||
public ClientGroupInfo Group => Groups[0];
|
||||
public ClientGroupInfo[] Groups
|
||||
{
|
||||
get => groups; set
|
||||
|
@@ -8,6 +8,7 @@ using linker.libs;
|
||||
using linker.plugins.client;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.access;
|
||||
using linker.messenger;
|
||||
namespace linker.plugins.config
|
||||
{
|
||||
public sealed class ConfigClientApiController : IApiClientController
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using linker.libs;
|
||||
using linker.messenger;
|
||||
using linker.plugins.client;
|
||||
using linker.plugins.config.messenger;
|
||||
using linker.plugins.messenger;
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using linker.plugins.messenger;
|
||||
using linker.messenger;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.signin.messenger;
|
||||
using MemoryPack;
|
||||
|
||||
|
@@ -3,6 +3,7 @@ using linker.plugins.messenger;
|
||||
using MemoryPack;
|
||||
using linker.libs;
|
||||
using linker.plugins.decenter.messenger;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.decenter
|
||||
{
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using linker.libs;
|
||||
using linker.messenger;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.signin.messenger;
|
||||
using MemoryPack;
|
||||
|
@@ -7,10 +7,9 @@ using linker.plugins.capi;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.flow.messenger;
|
||||
using linker.libs.extends;
|
||||
using linker.plugins.sforward.proxy;
|
||||
using linker.plugins.relay;
|
||||
using linker.plugins.relay.client;
|
||||
using linker.plugins.sforward;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.flow
|
||||
{
|
||||
|
@@ -1,7 +1,7 @@
|
||||
using linker.config;
|
||||
using linker.messenger;
|
||||
using linker.plugins.flow.messenger;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.relay;
|
||||
using linker.plugins.relay.server;
|
||||
using linker.plugins.sforward.proxy;
|
||||
using linker.plugins.tunnel;
|
||||
@@ -28,12 +28,6 @@ namespace linker.plugins.flow
|
||||
serviceCollection.AddSingleton<IMessengerResolver, MessengerResolverFlow>();
|
||||
serviceCollection.AddSingleton<IMessengerSender, MessengerSenderFlow>();
|
||||
|
||||
serviceCollection.AddSingleton<RelayFlow>();
|
||||
serviceCollection.AddSingleton<RelayResolver, RelayResolverFlow>();
|
||||
|
||||
serviceCollection.AddSingleton<RelayReportFlow>();
|
||||
serviceCollection.AddSingleton<RelayReportResolver, RelayReportResolverFlow>();
|
||||
|
||||
}
|
||||
|
||||
public void AddServer(ServiceCollection serviceCollection, FileConfig config)
|
||||
@@ -49,15 +43,14 @@ namespace linker.plugins.flow
|
||||
|
||||
serviceCollection.AddSingleton<RelayFlow>();
|
||||
serviceCollection.AddSingleton<RelayResolver, RelayResolverFlow>();
|
||||
serviceCollection.AddSingleton<RelayReportFlow>();
|
||||
serviceCollection.AddSingleton<RelayReportResolver, RelayReportResolverFlow>();
|
||||
|
||||
serviceCollection.AddSingleton<ExternalFlow>();
|
||||
serviceCollection.AddSingleton<ExternalResolver, ExternalResolverFlow>();
|
||||
|
||||
serviceCollection.AddSingleton<SForwardFlow>();
|
||||
serviceCollection.AddSingleton<SForwardProxy, SForwardProxyFlow>();
|
||||
|
||||
serviceCollection.AddSingleton<RelayReportFlow>();
|
||||
serviceCollection.AddSingleton<RelayReportResolver, RelayReportResolverFlow>();
|
||||
}
|
||||
|
||||
public void UseClient(ServiceProvider serviceProvider, FileConfig config)
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using linker.plugins.messenger;
|
||||
using linker.messenger;
|
||||
using linker.plugins.messenger;
|
||||
|
||||
namespace linker.plugins.flow
|
||||
{
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using linker.config;
|
||||
using linker.messenger;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.relay.server;
|
||||
using linker.plugins.sforward;
|
||||
|
@@ -13,6 +13,7 @@ using linker.plugins.capi;
|
||||
using linker.plugins.messenger;
|
||||
using linker.config;
|
||||
using linker.plugins.access;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.forward
|
||||
{
|
||||
|
@@ -1,5 +1,6 @@
|
||||
using linker.client.config;
|
||||
using linker.libs;
|
||||
using linker.messenger;
|
||||
using linker.plugins.client;
|
||||
using linker.plugins.forward.proxy;
|
||||
using linker.plugins.messenger;
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using linker.client.config;
|
||||
using linker.messenger;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.signin.messenger;
|
||||
using MemoryPack;
|
||||
|
@@ -1,30 +0,0 @@
|
||||
namespace linker.plugins.messenger
|
||||
{
|
||||
/// <summary>
|
||||
/// 消息接口
|
||||
/// </summary>
|
||||
public interface IMessenger
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 消息id
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public sealed class MessengerIdAttribute : Attribute
|
||||
{
|
||||
/// <summary>
|
||||
/// id
|
||||
/// </summary>
|
||||
public ushort Id { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
public MessengerIdAttribute(ushort id)
|
||||
{
|
||||
Id = id;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
26
linker/plugins/messenger/MessengerResolverResolver.cs
Normal file
26
linker/plugins/messenger/MessengerResolverResolver.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using linker.plugins.resolver;
|
||||
using System.Net.Sockets;
|
||||
using System.Net;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.messenger
|
||||
{
|
||||
public sealed class MessengerResolverResolver : IResolver
|
||||
{
|
||||
public ResolverType Type => ResolverType.Messenger;
|
||||
|
||||
private readonly IMessengerResolver messengerResolver;
|
||||
public MessengerResolverResolver(IMessengerResolver messengerResolver)
|
||||
{
|
||||
this.messengerResolver = messengerResolver;
|
||||
}
|
||||
public async Task Resolve(Socket socket, Memory<byte> memory)
|
||||
{
|
||||
await messengerResolver.Resolve(socket, memory);
|
||||
}
|
||||
public async Task Resolve(Socket socket, IPEndPoint ep, Memory<byte> memory)
|
||||
{
|
||||
await messengerResolver.Resolve(socket, ep, memory);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,4 +1,5 @@
|
||||
using linker.libs;
|
||||
using linker.messenger;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace linker.plugins.messenger
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using linker.config;
|
||||
using linker.messenger;
|
||||
using linker.plugins.client;
|
||||
using linker.plugins.server;
|
||||
using linker.startup;
|
||||
|
@@ -4,6 +4,7 @@ using linker.tunnel.transport;
|
||||
using linker.libs;
|
||||
using MemoryPack;
|
||||
using linker.plugins.messenger;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.pcp.messenger
|
||||
{
|
||||
|
@@ -37,12 +37,7 @@ namespace linker.plugins.relay
|
||||
|
||||
serviceCollection.AddSingleton<RelayTypesLoader>();
|
||||
|
||||
serviceCollection.AddSingleton<RelayServerMasterTransfer>();
|
||||
serviceCollection.AddSingleton<RelayServerNodeTransfer>();
|
||||
serviceCollection.AddSingleton<IRelayCaching, RelayCachingMemory>();
|
||||
|
||||
serviceCollection.AddSingleton<RelayClientConfigTransfer>();
|
||||
|
||||
}
|
||||
|
||||
public void AddServer(ServiceCollection serviceCollection, FileConfig config)
|
||||
@@ -67,11 +62,6 @@ namespace linker.plugins.relay
|
||||
{
|
||||
RelayTransfer relayTransfer = serviceProvider.GetService<RelayTransfer>();
|
||||
RelayTypesLoader relayTypesLoader = serviceProvider.GetService<RelayTypesLoader>();
|
||||
|
||||
IRelayCaching relayCaching = serviceProvider.GetService<IRelayCaching>();
|
||||
|
||||
RelayServerMasterTransfer relayServerMasterTransfer = serviceProvider.GetService<RelayServerMasterTransfer>();
|
||||
RelayServerNodeTransfer relayServerNodeTransfer = serviceProvider.GetService<RelayServerNodeTransfer>();
|
||||
}
|
||||
|
||||
public void UseServer(ServiceProvider serviceProvider, FileConfig config)
|
||||
|
@@ -15,6 +15,7 @@ using System.Buffers;
|
||||
using linker.plugins.relay.server;
|
||||
using linker.plugins.resolver;
|
||||
using System.Net.NetworkInformation;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.relay.client.transport
|
||||
{
|
||||
|
@@ -33,6 +33,7 @@ namespace linker.config
|
||||
/// 中继服务器列表
|
||||
/// </summary>
|
||||
public RelayServerInfo[] Servers { get; set; } = new RelayServerInfo[] { new RelayServerInfo { } };
|
||||
public RelayServerInfo Server => Servers[0];
|
||||
|
||||
}
|
||||
|
||||
|
@@ -10,6 +10,7 @@ using linker.plugins.relay.server;
|
||||
using System.Net.NetworkInformation;
|
||||
using linker.plugins.decenter.messenger;
|
||||
using System.Reflection;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.relay.messenger
|
||||
{
|
||||
|
@@ -36,7 +36,6 @@ namespace linker.plugins.resolver
|
||||
int length = await socket.ReceiveAsync(buffer.AsMemory(0, 1), SocketFlags.None).ConfigureAwait(false);
|
||||
ResolverType type = (ResolverType)buffer[0];
|
||||
|
||||
//LoggerHelper.Instance.Info($"tcp connect from {socket.RemoteEndPoint}->{(ResolverType)buffer[0]}");
|
||||
if (resolvers.TryGetValue(type, out IResolver resolver))
|
||||
{
|
||||
await resolver.Resolve(socket, buffer.AsMemory(1, length));
|
||||
|
@@ -9,6 +9,7 @@ using linker.plugins.messenger;
|
||||
using linker.config;
|
||||
using System.Collections.Concurrent;
|
||||
using linker.plugins.access;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.sforward
|
||||
{
|
||||
|
@@ -9,6 +9,7 @@ using linker.libs.extends;
|
||||
using linker.plugins.client;
|
||||
using linker.plugins.messenger;
|
||||
using linker.config;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.sforward
|
||||
{
|
||||
|
@@ -9,6 +9,7 @@ using LiteDB;
|
||||
using System.Net;
|
||||
using linker.plugins.messenger;
|
||||
using linker.libs;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.sforward.messenger
|
||||
{
|
||||
|
@@ -12,7 +12,6 @@ namespace linker.plugins.sforward.proxy
|
||||
private ConcurrentDictionary<int, AsyncUserToken> tcpListens = new ConcurrentDictionary<int, AsyncUserToken>();
|
||||
private ConcurrentDictionary<ulong, TaskCompletionSource<Socket>> tcpConnections = new ConcurrentDictionary<ulong, TaskCompletionSource<Socket>>();
|
||||
|
||||
|
||||
public Func<int, ulong, Task<bool>> TunnelConnect { get; set; } = async (port, id) => { return await Task.FromResult(false); };
|
||||
public Func<string, int, ulong, Task<bool>> WebConnect { get; set; } = async (host, port, id) => { return await Task.FromResult(false); };
|
||||
|
||||
@@ -150,7 +149,7 @@ namespace linker.plugins.sforward.proxy
|
||||
//等待回复
|
||||
TaskCompletionSource<Socket> tcs = new TaskCompletionSource<Socket>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
tcpConnections.TryAdd(id, tcs);
|
||||
token.TargetSocket = await tcs.Task.WaitAsync(TimeSpan.FromMilliseconds(2000)).ConfigureAwait(false);
|
||||
token.TargetSocket = await tcs.Task.WaitAsync(TimeSpan.FromMilliseconds(5000)).ConfigureAwait(false);
|
||||
|
||||
//数据
|
||||
await token.TargetSocket.SendAsync(buffer1.AsMemory(0, length)).ConfigureAwait(false);
|
||||
@@ -160,8 +159,12 @@ namespace linker.plugins.sforward.proxy
|
||||
|
||||
CloseClientSocket(token);
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG)
|
||||
{
|
||||
LoggerHelper.Instance.Error(ex);
|
||||
}
|
||||
CloseClientSocket(token);
|
||||
}
|
||||
finally
|
||||
@@ -195,11 +198,6 @@ namespace linker.plugins.sforward.proxy
|
||||
private readonly byte[] hostBytes = Encoding.UTF8.GetBytes("Host: ");
|
||||
private readonly byte[] wrapBytes = Encoding.UTF8.GetBytes("\r\n");
|
||||
private readonly byte[] colonBytes = Encoding.UTF8.GetBytes(":");
|
||||
/// <summary>
|
||||
/// 截取http请求头的host内容
|
||||
/// </summary>
|
||||
/// <param name="buffer"></param>
|
||||
/// <returns></returns>
|
||||
private string GetHost(Memory<byte> buffer)
|
||||
{
|
||||
int start = buffer.Span.IndexOf(hostBytes);
|
||||
@@ -217,7 +215,6 @@ namespace linker.plugins.sforward.proxy
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 客户端,收到服务端的连接请求
|
||||
/// </summary>
|
||||
@@ -263,7 +260,6 @@ namespace linker.plugins.sforward.proxy
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 读取数据,然后发送给对方,用户两端交换数据
|
||||
/// </summary>
|
||||
@@ -310,7 +306,6 @@ namespace linker.plugins.sforward.proxy
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public sealed class AsyncUserToken
|
||||
|
@@ -7,6 +7,7 @@ using linker.plugins.client;
|
||||
using linker.plugins.capi;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.access;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.signin
|
||||
{
|
||||
|
@@ -5,8 +5,8 @@ using MemoryPack;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Net;
|
||||
using System.Text.Json.Serialization;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.signIn.args;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.signin.messenger
|
||||
{
|
||||
@@ -99,7 +99,6 @@ namespace linker.plugins.signin.messenger
|
||||
{
|
||||
return Clients.TryGetValue(machineId, out SignCacheInfo cache) && cache.Connected;
|
||||
}
|
||||
|
||||
public void GetOnline(out int all, out int online)
|
||||
{
|
||||
all = Clients.Count;
|
||||
@@ -116,7 +115,6 @@ namespace linker.plugins.signin.messenger
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
private void ClearTask()
|
||||
{
|
||||
TimerHelper.SetInterval(() =>
|
||||
@@ -216,7 +214,6 @@ namespace linker.plugins.signin.messenger
|
||||
[MemoryPackable]
|
||||
public sealed partial class SignInfo
|
||||
{
|
||||
|
||||
public string MachineId { get; set; } = string.Empty;
|
||||
public string MachineName { get; set; } = string.Empty;
|
||||
public string GroupId { get; set; } = string.Empty;
|
||||
|
@@ -1,10 +1,9 @@
|
||||
using linker.config;
|
||||
using MemoryPack;
|
||||
using MemoryPack;
|
||||
using linker.plugins.client;
|
||||
using linker.plugins.messenger;
|
||||
using linker.libs;
|
||||
using LiteDB;
|
||||
using linker.libs.extends;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.signin.messenger
|
||||
{
|
||||
@@ -31,13 +30,11 @@ namespace linker.plugins.signin.messenger
|
||||
public sealed class SignInServerMessenger : IMessenger
|
||||
{
|
||||
private readonly SignCaching signCaching;
|
||||
private readonly FileConfig config;
|
||||
private readonly IMessengerSender messengerSender;
|
||||
|
||||
public SignInServerMessenger(SignCaching signCaching, FileConfig config, IMessengerSender messengerSender)
|
||||
public SignInServerMessenger(SignCaching signCaching, IMessengerSender messengerSender)
|
||||
{
|
||||
this.signCaching = signCaching;
|
||||
this.config = config;
|
||||
this.messengerSender = messengerSender;
|
||||
}
|
||||
|
||||
|
@@ -11,6 +11,7 @@ using linker.client.config;
|
||||
using linker.plugins.socks5.config;
|
||||
using linker.plugins.socks5.messenger;
|
||||
using linker.plugins.access;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.socks5
|
||||
{
|
||||
|
@@ -148,7 +148,7 @@ namespace linker.plugins.socks5
|
||||
return infos
|
||||
.Where(c => c.MachineId != clientConfigTransfer.Id)
|
||||
.OrderByDescending(c => c.Status)
|
||||
.OrderByDescending(c => c.LastTicks.Value)
|
||||
.OrderByDescending(c => c.MachineId)
|
||||
|
||||
.Select(c =>
|
||||
{
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using linker.config;
|
||||
using linker.messenger;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.signin.messenger;
|
||||
using linker.plugins.socks5.config;
|
||||
|
@@ -8,6 +8,7 @@ using linker.plugins.messenger;
|
||||
using linker.plugins.tunnel.excludeip;
|
||||
using linker.tunnel.wanport;
|
||||
using linker.tunnel;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.tunnel
|
||||
{
|
||||
@@ -42,6 +43,7 @@ namespace linker.plugins.tunnel
|
||||
this.tunnelUpnpTransfer = tunnelUpnpTransfer;
|
||||
this.tunnelTransfer = tunnelTransfer;
|
||||
|
||||
//加载外网端口
|
||||
tunnelWanPortTransfer.LoadTransports(new List<ITunnelWanPortProtocol>
|
||||
{
|
||||
new TunnelWanPortProtocolLinkerUdp(),
|
||||
@@ -58,6 +60,7 @@ namespace linker.plugins.tunnel
|
||||
tunnelTransfer.SendConnectBegin = SendConnectBegin;
|
||||
tunnelTransfer.SendConnectFail = SendConnectFail;
|
||||
tunnelTransfer.SendConnectSuccess = SendConnectSuccess;
|
||||
//加载打洞协议
|
||||
transportTcpPortMap = new TransportTcpPortMap();
|
||||
transportUdpPortMap = new TransportUdpPortMap();
|
||||
tunnelTransfer.LoadTransports(tunnelWanPortTransfer, tunnelUpnpTransfer, new List<ITunnelTransport> {
|
||||
|
@@ -11,6 +11,7 @@ using linker.plugins.capi;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.tunnel.excludeip;
|
||||
using linker.plugins.access;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.tunnel
|
||||
{
|
||||
|
@@ -1,6 +1,7 @@
|
||||
using linker.client.config;
|
||||
using linker.config;
|
||||
using linker.libs;
|
||||
using linker.messenger;
|
||||
using linker.plugins.client;
|
||||
using linker.plugins.messenger;
|
||||
using linker.tunnel;
|
||||
|
@@ -4,7 +4,7 @@ using linker.tunnel;
|
||||
using linker.tunnel.transport;
|
||||
using linker.libs;
|
||||
using MemoryPack;
|
||||
using linker.plugins.messenger;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.tunnel.messenger
|
||||
{
|
||||
|
@@ -173,7 +173,7 @@ namespace linker.plugins.tuntap
|
||||
return infos
|
||||
.Where(c => c.MachineId != clientConfigTransfer.Id)
|
||||
.OrderByDescending(c => c.Status)
|
||||
.OrderByDescending(c => c.LastTicks.Value)
|
||||
.OrderByDescending(c => c.IP)
|
||||
|
||||
.Select(c =>
|
||||
{
|
||||
|
@@ -14,6 +14,7 @@ using linker.plugins.tuntap.lease;
|
||||
using System.Net;
|
||||
using linker.libs;
|
||||
using linker.plugins.access;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.tuntap
|
||||
{
|
||||
|
@@ -4,6 +4,7 @@ using linker.plugins.client;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.tuntap.messenger;
|
||||
using linker.libs;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.tuntap.lease
|
||||
{
|
||||
|
@@ -1,6 +1,7 @@
|
||||
using linker.config;
|
||||
using linker.libs;
|
||||
using linker.libs.extends;
|
||||
using linker.messenger;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.signin.messenger;
|
||||
using linker.plugins.tuntap.config;
|
||||
|
@@ -11,6 +11,7 @@ using linker.plugins.capi;
|
||||
using linker.plugins.messenger;
|
||||
using linker.libs;
|
||||
using linker.plugins.access;
|
||||
using linker.messenger;
|
||||
|
||||
namespace linker.plugins.updater
|
||||
{
|
||||
|
@@ -1,6 +1,7 @@
|
||||
using linker.client.config;
|
||||
using linker.config;
|
||||
using linker.libs;
|
||||
using linker.messenger;
|
||||
using linker.plugins.client;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.updater.messenger;
|
||||
|
@@ -1,6 +1,7 @@
|
||||
using linker.config;
|
||||
using linker.libs;
|
||||
using linker.libs.extends;
|
||||
using linker.messenger;
|
||||
using linker.plugins.messenger;
|
||||
using linker.plugins.signin.messenger;
|
||||
using linker.plugins.updater.config;
|
||||
|
@@ -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.6.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.6.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.6.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.6.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.6.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.6.4" . --push
|
||||
cd ../../../../../
|
||||
done
|
||||
done
|
@@ -1,5 +1,5 @@
|
||||
v1.6.3
|
||||
2024-12-13 17:19:41
|
||||
v1.6.4
|
||||
2024-12-15 19:17:18
|
||||
1. 优化UI,显示网络计算IP数
|
||||
2. 修复内网穿透不停止直接删除导致的无法再次添加的问题
|
||||
3. 优化网卡的端口转发
|
||||
|
@@ -24,12 +24,14 @@ jobs:
|
||||
dotnet build ./linker.libs -c release
|
||||
dotnet build ./linker.tunnel -c release
|
||||
dotnet build ./linker.tun -c release
|
||||
dotnet build ./linker.messenger -c release
|
||||
|
||||
- name: Pack
|
||||
run: |
|
||||
dotnet pack ./linker.libs -c release
|
||||
dotnet pack ./linker.tunnel -c release
|
||||
dotnet pack ./linker.tun -c release
|
||||
dotnet pack ./linker.messenger -c release
|
||||
|
||||
- name: Install Nuget
|
||||
uses: nuget/setup-nuget@v1
|
||||
@@ -41,3 +43,4 @@ jobs:
|
||||
nuget push ./linker.tunnel/bin/release/linker.tunnel.{{version}}.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.libs/bin/release/linker.libs.{{version}}.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.tun/bin/release/linker.tun.{{version}}.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
nuget push ./linker.messenger/bin/release/linker.messenger.{{version}}.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGET_KEY }} -NoSymbol
|
||||
|
Reference in New Issue
Block a user