From d0332179955e7737fc7ec0e5cb62dff1c0f62ba0 Mon Sep 17 00:00:00 2001 From: snltty <1069410172@qq.com> Date: Thu, 11 Sep 2025 21:15:46 +0800 Subject: [PATCH] sync --- .../transport/RelayClientTransportSelfHost.cs | 23 ++++++++----------- .../server/RelayServerResolver.cs | 17 ++++++++------ version.txt | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/linker.messenger.relay/client/transport/RelayClientTransportSelfHost.cs b/src/linker.messenger.relay/client/transport/RelayClientTransportSelfHost.cs index cdc2c167..05c1f6ff 100644 --- a/src/linker.messenger.relay/client/transport/RelayClientTransportSelfHost.cs +++ b/src/linker.messenger.relay/client/transport/RelayClientTransportSelfHost.cs @@ -373,25 +373,20 @@ namespace linker.messenger.relay.client.transport //问一下能不能中继 RelayAskResultInfo170 relayAskResultInfo = await RelayAsk(relayInfo).ConfigureAwait(false); relayInfo.FlowingId = relayAskResultInfo.FlowingId; - if (relayInfo.FlowingId == 0 || relayAskResultInfo.Nodes.Count == 0) + var nodes = relayAskResultInfo.Nodes; + if (relayInfo.FlowingId == 0 || nodes.Count == 0) { if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) - LoggerHelper.Instance.Error($"relay ask fail,flowid:{relayInfo.FlowingId},nodes:{relayAskResultInfo.Nodes.Count}"); + LoggerHelper.Instance.Error($"relay ask fail,flowid:{relayInfo.FlowingId},nodes:{nodes.Count}"); return null; } - //测试一下延迟 - if (relayAskResultInfo.Nodes.Count > 1) - { - //relayAskResultInfo.Nodes = await TestDelay(relayAskResultInfo.Nodes); - } - //连接中继节点服务器 - var (socket, ep) = await ConnectNodeServer(relayInfo, relayAskResultInfo.Nodes).ConfigureAwait(false); + var (socket, ep) = await ConnectNodeServer(relayInfo, nodes).ConfigureAwait(false); if (socket == null) { if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) - LoggerHelper.Instance.Error($"relay connect server fail,flowid:{relayInfo.FlowingId},nodes:{relayAskResultInfo.Nodes.Count}"); + LoggerHelper.Instance.Error($"relay connect server fail,flowid:{relayInfo.FlowingId},nodes:{nodes.Count}"); return null; } @@ -399,7 +394,7 @@ namespace linker.messenger.relay.client.transport if (await RelayConfirm(relayInfo).ConfigureAwait(false) == false) { if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) - LoggerHelper.Instance.Error($"relay confirm fail,flowid:{relayInfo.FlowingId},nodes:{relayAskResultInfo.Nodes.Count}"); + LoggerHelper.Instance.Error($"relay confirm fail,flowid:{relayInfo.FlowingId},nodes:{nodes.Count}"); return null; } @@ -418,7 +413,8 @@ namespace linker.messenger.relay.client.transport Label = string.Empty, Receive = true, SSL = relayInfo.SSL, - Crypto = CryptoFactory.CreateSymmetric(relayInfo.RemoteMachineId) + Crypto = CryptoFactory.CreateSymmetric(relayInfo.RemoteMachineId), + NodeId = relayInfo.NodeId }; } catch (Exception ex) @@ -588,7 +584,8 @@ namespace linker.messenger.relay.client.transport Label = string.Empty, Receive = true, SSL = relayInfo.SSL, - Crypto = CryptoFactory.CreateSymmetric(relayInfo.FromMachineId) + Crypto = CryptoFactory.CreateSymmetric(relayInfo.FromMachineId), + NodeId = relayInfo.NodeId, }); return true; } diff --git a/src/linker.messenger.relay/server/RelayServerResolver.cs b/src/linker.messenger.relay/server/RelayServerResolver.cs index 0f5984c8..9d20a64c 100644 --- a/src/linker.messenger.relay/server/RelayServerResolver.cs +++ b/src/linker.messenger.relay/server/RelayServerResolver.cs @@ -49,11 +49,12 @@ namespace linker.messenger.relay.server public async Task Resolve(Socket socket, IPEndPoint ep, Memory memory) { + LoggerHelper.Instance.Debug($"udp from {ep},1"); if (relayServerNodeTransfer.Validate(tunnel.connection.TunnelProtocolType.Udp) == false) { return; } - + LoggerHelper.Instance.Debug($"udp from {ep},2"); RelayUdpStep step = (RelayUdpStep)memory.Span[0]; memory = memory.Slice(1); @@ -66,7 +67,7 @@ namespace linker.messenger.relay.server } return; } - + LoggerHelper.Instance.Debug($"udp from {ep},3"); byte flagLength = memory.Span[0]; if (memory.Length < flagLength + 1 || memory.Slice(1, flagLength).Span.SequenceEqual(relayFlag) == false) { @@ -74,13 +75,13 @@ namespace linker.messenger.relay.server return; } memory = memory.Slice(1 + flagLength); - + LoggerHelper.Instance.Debug($"udp from {ep},4"); RelayMessageInfo relayMessage = serializer.Deserialize(memory.Span); //ask 是发起端来的,那key就是 发起端->目标端, answer的,目标和来源会交换,所以转换一下 string key = relayMessage.Type == RelayMessengerType.Ask ? $"{relayMessage.FromId}->{relayMessage.ToId}->{relayMessage.FlowId}" : $"{relayMessage.ToId}->{relayMessage.FromId}->{relayMessage.FlowId}"; string flowKey = relayMessage.Type == RelayMessengerType.Ask ? $"{relayMessage.FromId}->{relayMessage.ToId}" : $"{relayMessage.ToId}->{relayMessage.FromId}"; - + LoggerHelper.Instance.Debug($"udp from {ep},5"); //获取缓存 RelayCacheInfo relayCache = await relayServerNodeTransfer.TryGetRelayCache(key).ConfigureAwait(false); if (relayCache == null) @@ -90,7 +91,7 @@ namespace linker.messenger.relay.server await socket.SendToAsync(new byte[] { 1 }, ep).ConfigureAwait(false); return; } - + LoggerHelper.Instance.Debug($"udp from {ep},6"); if (relayMessage.Type == RelayMessengerType.Ask && relayServerNodeTransfer.Validate(relayCache) == false) { if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) @@ -98,7 +99,7 @@ namespace linker.messenger.relay.server await socket.SendToAsync(new byte[] { 1 }, ep).ConfigureAwait(false); return; } - + LoggerHelper.Instance.Debug($"udp from {ep},7"); //流量统计 Add(flowKey, relayCache.FromName, relayCache.ToName, relayCache.GroupId, memory.Length, 0); //回应 @@ -113,6 +114,7 @@ namespace linker.messenger.relay.server } return; } + LoggerHelper.Instance.Debug($"udp from {ep},8"); //请求 RelayTrafficCacheInfo trafficCacheInfo = new RelayTrafficCacheInfo { Cache = relayCache, Sendt = 0, Limit = new RelaySpeedLimit(), Key = flowKey }; @@ -123,8 +125,9 @@ namespace linker.messenger.relay.server relayServerNodeTransfer.AddTrafficCache(trafficCacheInfo); relayServerNodeTransfer.IncrementConnectionNum(); + LoggerHelper.Instance.Debug($"udp from {ep},9"); await socket.SendToAsync(new byte[] { 0 }, ep).ConfigureAwait(false); - + LoggerHelper.Instance.Debug($"udp from {ep},10"); } private async Task CopyToAsync(RelayUdpNatInfo nat, Socket socket, IPEndPoint ep, Memory memory) { diff --git a/version.txt b/version.txt index a9ae15a3..4524aefc 100644 --- a/version.txt +++ b/version.txt @@ -1,5 +1,5 @@ v1.9.1 -2025-09-11 17:11:07 +2025-09-11 21:15:46 1. 一些累计更新 2. 服务器转发多节点 3. 虚拟网卡下伪造ACK为TCP-in-TCP隧道提速