mirror of
				https://github.com/snltty/linker.git
				synced 2025-10-31 20:43:00 +08:00 
			
		
		
		
	sync
This commit is contained in:
		| @@ -68,7 +68,8 @@ namespace linker.messenger.relay.server | |||||||
|                 { |                 { | ||||||
|                     Connection = connection, |                     Connection = connection, | ||||||
|                     MessengerId = (ushort)RelayMessengerIds.NodeGetCache186, |                     MessengerId = (ushort)RelayMessengerIds.NodeGetCache186, | ||||||
|                     Payload = serializer.Serialize(new ValueTuple<string, string>(key, node.Id)) |                     Payload = serializer.Serialize(new ValueTuple<string, string>(key, node.Id)), | ||||||
|  |                     Timeout = 1000 | ||||||
|                 }).ConfigureAwait(false); |                 }).ConfigureAwait(false); | ||||||
|                 if (resp.Code == MessageResponeCodes.OK && resp.Data.Length > 0) |                 if (resp.Code == MessageResponeCodes.OK && resp.Data.Length > 0) | ||||||
|                 { |                 { | ||||||
|   | |||||||
| @@ -49,12 +49,10 @@ namespace linker.messenger.relay.server | |||||||
|  |  | ||||||
|         public async Task Resolve(Socket socket, IPEndPoint ep, Memory<byte> memory) |         public async Task Resolve(Socket socket, IPEndPoint ep, Memory<byte> memory) | ||||||
|         { |         { | ||||||
|             LoggerHelper.Instance.Debug($"udp from {ep},1"); |  | ||||||
|             if (relayServerNodeTransfer.Validate(tunnel.connection.TunnelProtocolType.Udp) == false) |             if (relayServerNodeTransfer.Validate(tunnel.connection.TunnelProtocolType.Udp) == false) | ||||||
|             { |             { | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|             LoggerHelper.Instance.Debug($"udp from {ep},2"); |  | ||||||
|             RelayUdpStep step = (RelayUdpStep)memory.Span[0]; |             RelayUdpStep step = (RelayUdpStep)memory.Span[0]; | ||||||
|             memory = memory.Slice(1); |             memory = memory.Slice(1); | ||||||
|  |  | ||||||
| @@ -67,7 +65,6 @@ namespace linker.messenger.relay.server | |||||||
|                 } |                 } | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|             LoggerHelper.Instance.Debug($"udp from {ep},3"); |  | ||||||
|             byte flagLength = memory.Span[0]; |             byte flagLength = memory.Span[0]; | ||||||
|             if (memory.Length < flagLength + 1 || memory.Slice(1, flagLength).Span.SequenceEqual(relayFlag) == false) |             if (memory.Length < flagLength + 1 || memory.Slice(1, flagLength).Span.SequenceEqual(relayFlag) == false) | ||||||
|             { |             { | ||||||
| @@ -75,15 +72,15 @@ namespace linker.messenger.relay.server | |||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|             memory = memory.Slice(1 + flagLength); |             memory = memory.Slice(1 + flagLength); | ||||||
|             LoggerHelper.Instance.Debug($"udp from {ep},4"); |  | ||||||
|             RelayMessageInfo relayMessage = serializer.Deserialize<RelayMessageInfo>(memory.Span); |             RelayMessageInfo relayMessage = serializer.Deserialize<RelayMessageInfo>(memory.Span); | ||||||
|  |  | ||||||
|             //ask 是发起端来的,那key就是 发起端->目标端, answer的,目标和来源会交换,所以转换一下 |             //ask 是发起端来的,那key就是 发起端->目标端, answer的,目标和来源会交换,所以转换一下 | ||||||
|             string key = relayMessage.Type == RelayMessengerType.Ask ? $"{relayMessage.FromId}->{relayMessage.ToId}->{relayMessage.FlowId}" : $"{relayMessage.ToId}->{relayMessage.FromId}->{relayMessage.FlowId}"; |             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}"; |             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); |             _ = relayServerNodeTransfer.TryGetRelayCache(key).ContinueWith(async (result) => | ||||||
|  |              { | ||||||
|  |                  RelayCacheInfo relayCache = result.Result; | ||||||
|                  if (relayCache == null) |                  if (relayCache == null) | ||||||
|                  { |                  { | ||||||
|                      if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) |                      if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) | ||||||
| @@ -91,7 +88,6 @@ namespace linker.messenger.relay.server | |||||||
|                      await socket.SendToAsync(new byte[] { 1 }, ep).ConfigureAwait(false); |                      await socket.SendToAsync(new byte[] { 1 }, ep).ConfigureAwait(false); | ||||||
|                      return; |                      return; | ||||||
|                  } |                  } | ||||||
|             LoggerHelper.Instance.Debug($"udp from {ep},6"); |  | ||||||
|                  if (relayMessage.Type == RelayMessengerType.Ask && relayServerNodeTransfer.Validate(relayCache) == false) |                  if (relayMessage.Type == RelayMessengerType.Ask && relayServerNodeTransfer.Validate(relayCache) == false) | ||||||
|                  { |                  { | ||||||
|                      if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) |                      if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) | ||||||
| @@ -99,7 +95,6 @@ namespace linker.messenger.relay.server | |||||||
|                      await socket.SendToAsync(new byte[] { 1 }, ep).ConfigureAwait(false); |                      await socket.SendToAsync(new byte[] { 1 }, ep).ConfigureAwait(false); | ||||||
|                      return; |                      return; | ||||||
|                  } |                  } | ||||||
|             LoggerHelper.Instance.Debug($"udp from {ep},7"); |  | ||||||
|                  //流量统计 |                  //流量统计 | ||||||
|                  Add(flowKey, relayCache.FromName, relayCache.ToName, relayCache.GroupId, memory.Length, 0); |                  Add(flowKey, relayCache.FromName, relayCache.ToName, relayCache.GroupId, memory.Length, 0); | ||||||
|                  //回应 |                  //回应 | ||||||
| @@ -114,7 +109,6 @@ namespace linker.messenger.relay.server | |||||||
|                      } |                      } | ||||||
|                      return; |                      return; | ||||||
|                  } |                  } | ||||||
|             LoggerHelper.Instance.Debug($"udp from {ep},8"); |  | ||||||
|  |  | ||||||
|                  //请求 |                  //请求 | ||||||
|                  RelayTrafficCacheInfo trafficCacheInfo = new RelayTrafficCacheInfo { Cache = relayCache, Sendt = 0, Limit = new RelaySpeedLimit(), Key = flowKey }; |                  RelayTrafficCacheInfo trafficCacheInfo = new RelayTrafficCacheInfo { Cache = relayCache, Sendt = 0, Limit = new RelaySpeedLimit(), Key = flowKey }; | ||||||
| @@ -125,9 +119,8 @@ namespace linker.messenger.relay.server | |||||||
|                  relayServerNodeTransfer.AddTrafficCache(trafficCacheInfo); |                  relayServerNodeTransfer.AddTrafficCache(trafficCacheInfo); | ||||||
|                  relayServerNodeTransfer.IncrementConnectionNum(); |                  relayServerNodeTransfer.IncrementConnectionNum(); | ||||||
|  |  | ||||||
|             LoggerHelper.Instance.Debug($"udp from {ep},9"); |  | ||||||
|                  await socket.SendToAsync(new byte[] { 0 }, ep).ConfigureAwait(false); |                  await socket.SendToAsync(new byte[] { 0 }, ep).ConfigureAwait(false); | ||||||
|             LoggerHelper.Instance.Debug($"udp from {ep},10"); |              }).ConfigureAwait(false); | ||||||
|         } |         } | ||||||
|         private async Task CopyToAsync(RelayUdpNatInfo nat, Socket socket, IPEndPoint ep, Memory<byte> memory) |         private async Task CopyToAsync(RelayUdpNatInfo nat, Socket socket, IPEndPoint ep, Memory<byte> memory) | ||||||
|         { |         { | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ | |||||||
|                     <el-checkbox class="mgr-1" v-model="state.ruleForm.DisableNat" label="禁用NAT" size="large" /> |                     <el-checkbox class="mgr-1" v-model="state.ruleForm.DisableNat" label="禁用NAT" size="large" /> | ||||||
|                     <el-checkbox class="mgr-1" v-model="state.ruleForm.TcpMerge" label="TCP包合并" size="large" /> |                     <el-checkbox class="mgr-1" v-model="state.ruleForm.TcpMerge" label="TCP包合并" size="large" /> | ||||||
|                     <el-checkbox class="mgr-1" v-model="state.ruleForm.InterfaceOrder" label="网卡顺序" size="large" /> |                     <el-checkbox class="mgr-1" v-model="state.ruleForm.InterfaceOrder" label="网卡顺序" size="large" /> | ||||||
|                     <el-checkbox v-model="state.ruleForm.FakeAck" label="伪ACK" size="large" /> |                     <!-- <el-checkbox v-model="state.ruleForm.FakeAck" label="伪ACK" size="large" /> --> | ||||||
|             </el-form-item> |             </el-form-item> | ||||||
|         </el-form> |         </el-form> | ||||||
|     </div> |     </div> | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| v1.9.1 | v1.9.1 | ||||||
| 2025-09-11 21:15:46 | 2025-09-11 22:00:45 | ||||||
| 1. 一些累计更新 | 1. 一些累计更新 | ||||||
| 2. 服务器转发多节点 | 2. 服务器转发多节点 | ||||||
| 3. 虚拟网卡下伪造ACK为TCP-in-TCP隧道提速 | 3. 虚拟网卡下伪造ACK为TCP-in-TCP隧道提速 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 snltty
					snltty