diff --git a/linker.libs/NetworkHelper.cs b/linker.libs/NetworkHelper.cs
index 563a9d69..c3174f73 100644
--- a/linker.libs/NetworkHelper.cs
+++ b/linker.libs/NetworkHelper.cs
@@ -8,7 +8,6 @@ using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Text;
using System.Text.RegularExpressions;
-using System.Threading.Tasks;
namespace linker.libs
{
diff --git a/linker.tunnel/adapter/ITunnelAdapter.cs b/linker.tunnel/adapter/ITunnelAdapter.cs
index 6ec7ef94..54526770 100644
--- a/linker.tunnel/adapter/ITunnelAdapter.cs
+++ b/linker.tunnel/adapter/ITunnelAdapter.cs
@@ -15,7 +15,7 @@ namespace linker.tunnel.adapter
///
/// 服务器地址
///
- public string ServerHost { get; }
+ public IPEndPoint ServerHost { get; }
///
/// ssl加密证书,没有证书则无法加密通信
diff --git a/linker.tunnel/wanport/TunnelWanPortTransfer.cs b/linker.tunnel/wanport/TunnelWanPortTransfer.cs
index d04b6c4e..5e6a734b 100644
--- a/linker.tunnel/wanport/TunnelWanPortTransfer.cs
+++ b/linker.tunnel/wanport/TunnelWanPortTransfer.cs
@@ -43,13 +43,8 @@ namespace linker.tunnel.wanport
if (tunnelWanPort == null) return null;
try
{
- if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG)
- LoggerHelper.Instance.Debug($"get domain ip {tunnelAdapter.ServerHost}");
- IPEndPoint server = NetworkHelper.GetEndPoint(tunnelAdapter.ServerHost, 3478);
- if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG)
- LoggerHelper.Instance.Debug($"got domain ip {tunnelAdapter.ServerHost}->{server}");
- if (server == null) return null;
- TunnelWanPortEndPoint wanPort = await tunnelWanPort.GetAsync(localIP, server).ConfigureAwait(false);
+ if (tunnelAdapter.ServerHost == null) return null;
+ TunnelWanPortEndPoint wanPort = await tunnelWanPort.GetAsync(localIP, tunnelAdapter.ServerHost).ConfigureAwait(false);
if (wanPort != null)
{
wanPort.Local.Address = localIP;
diff --git a/linker/plugins/relay/RelayTestTransfer.cs b/linker/plugins/relay/RelayTestTransfer.cs
index 53cb7336..f8b5f8f9 100644
--- a/linker/plugins/relay/RelayTestTransfer.cs
+++ b/linker/plugins/relay/RelayTestTransfer.cs
@@ -1,7 +1,6 @@
using linker.config;
using linker.plugins.relay.transport;
using linker.libs;
-using System.Net;
namespace linker.plugins.relay
{
@@ -35,12 +34,10 @@ namespace linker.plugins.relay
ITransport transport = relayTransfer.Transports.FirstOrDefault(d => d.Type == server.RelayType);
if (transport == null) continue;
- IPEndPoint serverEP = NetworkHelper.GetEndPoint(fileConfig.Data.Client.ServerInfo.Host, 3478);
server.Delay = await transport.RelayTestAsync(new RelayTestInfo
{
MachineId = fileConfig.Data.Client.Id,
- SecretKey = server.SecretKey,
- Server = serverEP,
+ SecretKey = server.SecretKey
});
}
}
diff --git a/linker/plugins/relay/RelayTransfer.cs b/linker/plugins/relay/RelayTransfer.cs
index 31939fcd..05356a5a 100644
--- a/linker/plugins/relay/RelayTransfer.cs
+++ b/linker/plugins/relay/RelayTransfer.cs
@@ -4,7 +4,6 @@ using linker.tunnel.connection;
using linker.libs;
using linker.libs.extends;
using System.Collections.Concurrent;
-using System.Net;
namespace linker.plugins.relay
{
@@ -24,7 +23,6 @@ namespace linker.plugins.relay
public RelayTransfer(FileConfig fileConfig)
{
this.fileConfig = fileConfig;
- TestTask();
}
public void LoadTransports(List list)
@@ -192,45 +190,5 @@ namespace linker.plugins.relay
}
-
- private readonly LastTicksManager lastTicksManager = new LastTicksManager();
- public void SubscribeDelayTest()
- {
- lastTicksManager.Update();
- }
- private async Task TaskRelay()
- {
- try
- {
- foreach (var server in fileConfig.Data.Client.Relay.Servers)
- {
- ITransport transport = Transports.FirstOrDefault(d => d.Type == server.RelayType);
- if (transport == null) continue;
-
- IPEndPoint serverEP = NetworkHelper.GetEndPoint(fileConfig.Data.Client.ServerInfo.Host, 3478);
- server.Delay = await transport.RelayTestAsync(new RelayTestInfo
- {
- MachineId = fileConfig.Data.Client.Id,
- SecretKey = server.SecretKey,
- Server = serverEP,
- });
- }
- }
- catch (Exception)
- {
- }
- }
- private void TestTask()
- {
- TimerHelper.SetInterval(async () =>
- {
- if (lastTicksManager.DiffLessEqual(3000))
- {
- await TaskRelay();
- }
- return true;
- }, () => lastTicksManager.DiffLessEqual(3000) ? 3000 : 30000);
- }
-
}
}
\ No newline at end of file
diff --git a/linker/plugins/relay/messenger/RelayMessenger.cs b/linker/plugins/relay/messenger/RelayMessenger.cs
index 6a707257..5e21bc45 100644
--- a/linker/plugins/relay/messenger/RelayMessenger.cs
+++ b/linker/plugins/relay/messenger/RelayMessenger.cs
@@ -5,6 +5,7 @@ using linker.libs;
using MemoryPack;
using linker.plugins.messenger;
using linker.plugins.relay.validator;
+using System.Net;
namespace linker.plugins.relay.messenger
{
@@ -97,6 +98,7 @@ namespace linker.plugins.relay.messenger
if (signCaching.TryGet(connection.Id, out SignCacheInfo cacheFrom) == false || signCaching.TryGet(info.RemoteMachineId, out SignCacheInfo cacheTo) == false || cacheFrom.GroupId != cacheTo.GroupId)
{
connection.Write(ulong.MinValue);
+ //connection.Write(MemoryPackSerializer.Serialize(new RelayAskResultInfo { FlowingId = ulong.MinValue, Server = null }));
return;
}
@@ -109,11 +111,13 @@ namespace linker.plugins.relay.messenger
if (string.IsNullOrWhiteSpace(result) == false)
{
connection.Write(ulong.MinValue);
+ //connection.Write(MemoryPackSerializer.Serialize(new RelayAskResultInfo { FlowingId = ulong.MinValue, Server = null }));
return;
}
ulong flowingId = relayResolver.NewRelay(cacheFrom.MachineId, cacheFrom.MachineName, cacheTo.MachineId, cacheTo.MachineName);
connection.Write(flowingId);
+ // connection.Write(MemoryPackSerializer.Serialize(new RelayAskResultInfo { FlowingId = flowingId, Server = null }));
}
///
@@ -147,6 +151,8 @@ namespace linker.plugins.relay.messenger
info.FromMachineId = cacheTo.MachineId;
info.RemoteMachineName = cacheFrom.MachineName;
info.FromMachineName = cacheTo.MachineName;
+
+ info.Server = null;
try
{
MessageResponeInfo resp = await messengerSender.SendReply(new MessageRequestWrap
@@ -170,5 +176,13 @@ namespace linker.plugins.relay.messenger
}
+ [MemoryPackable]
+ public sealed partial class RelayAskResultInfo
+ {
+ public ulong FlowingId { get; set; }
+
+ [MemoryPackAllowSerialize]
+ public IPEndPoint Server { get; set; }
+ }
}
diff --git a/linker/plugins/relay/transport/TransportSelfHost.cs b/linker/plugins/relay/transport/TransportSelfHost.cs
index a4f36b35..f77a0107 100644
--- a/linker/plugins/relay/transport/TransportSelfHost.cs
+++ b/linker/plugins/relay/transport/TransportSelfHost.cs
@@ -55,12 +55,18 @@ namespace linker.plugins.relay.transport
return null;
}
relayInfo.FlowingId = resp.Data.Span.ToUInt64();
+ //RelayAskResultInfo relayAskResultInfo = MemoryPackSerializer.Deserialize(resp.Data.Span);
+ // relayInfo.FlowingId = relayAskResultInfo.FlowingId;
+ // relayInfo.Server = relayAskResultInfo.Server;
if (relayInfo.FlowingId == 0)
{
return null;
}
+ // if (relayInfo.Server == null)
+ {
+ relayInfo.Server = clientSignInState.Connection.Address;
+ }
- relayInfo.Server = clientSignInState.Connection.Address;
//连接中继服务器
Socket socket = new Socket(relayInfo.Server.AddressFamily, SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp);
socket.KeepAlive();
@@ -126,6 +132,7 @@ namespace linker.plugins.relay.transport
{
try
{
+ //if (relayInfo.Server == null)
relayInfo.Server = clientSignInState.Connection.Address;
Socket socket = new Socket(relayInfo.Server.AddressFamily, SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp);
socket.KeepAlive();
diff --git a/linker/plugins/tunnel/TunnelAdapter.cs b/linker/plugins/tunnel/TunnelAdapter.cs
index 0e892fbd..46329a14 100644
--- a/linker/plugins/tunnel/TunnelAdapter.cs
+++ b/linker/plugins/tunnel/TunnelAdapter.cs
@@ -16,12 +16,10 @@ namespace linker.plugins.tunnel
public sealed class TunnelAdapter : ITunnelAdapter
{
public IPAddress LocalIP => clientSignInState.Connection?.LocalAddress.Address ?? IPAddress.Any;
- public string ServerHost => config.Data.Client.ServerInfo.Host;
+ public IPEndPoint ServerHost => clientSignInState.Connection?.Address ?? null;
public X509Certificate2 Certificate { get; private set; }
-
-
private readonly ClientSignInState clientSignInState;
private readonly IMessengerSender messengerSender;
private readonly FileConfig config;
diff --git a/version.txt b/version.txt
index 75128564..88c408d5 100644
--- a/version.txt
+++ b/version.txt
@@ -1,5 +1,5 @@
v1.5.1
-2024-10-29 15:14:10
+2024-10-29 15:56:45
1. 优化点对网和网对网的局域网IP,包括禁用IP,和冲突检测
2. 一些UI优化
3. 新增socks5代理