mirror of
https://github.com/snltty/linker.git
synced 2025-10-04 16:52:48 +08:00
183
This commit is contained in:
@@ -60,8 +60,8 @@ namespace linker.tunnel.connection
|
|||||||
private readonly ReceiveDataBuffer bufferCache = new ReceiveDataBuffer();
|
private readonly ReceiveDataBuffer bufferCache = new ReceiveDataBuffer();
|
||||||
|
|
||||||
private readonly LastTicksManager pingTicks = new();
|
private readonly LastTicksManager pingTicks = new();
|
||||||
private readonly byte[] pingBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.tcp.ping");
|
private readonly byte[] pingBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.ping");
|
||||||
private readonly byte[] pongBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.tcp.pong");
|
private readonly byte[] pongBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.pong");
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -156,7 +156,8 @@ namespace linker.tunnel.connection
|
|||||||
Delay = (int)pingTicks.Diff();
|
Delay = (int)pingTicks.Diff();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await callback.Receive(this, packet, this.userToken).ConfigureAwait(false);
|
await callback.Receive(this, packet, this.userToken).ConfigureAwait(false);
|
||||||
@@ -168,6 +169,7 @@ namespace linker.tunnel.connection
|
|||||||
LoggerHelper.Instance.Error(string.Join(",", packet.ToArray()));
|
LoggerHelper.Instance.Error(string.Join(",", packet.ToArray()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async Task ProcessHeart()
|
private async Task ProcessHeart()
|
||||||
{
|
{
|
||||||
|
@@ -65,7 +65,6 @@ namespace linker.tunnel.connection
|
|||||||
private readonly byte[] pingBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.ping");
|
private readonly byte[] pingBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.ping");
|
||||||
private readonly byte[] pongBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.pong");
|
private readonly byte[] pongBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.pong");
|
||||||
private readonly byte[] finBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.fing");
|
private readonly byte[] finBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.fing");
|
||||||
private readonly byte[] ttlBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.ttl");
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -139,7 +138,6 @@ namespace linker.tunnel.connection
|
|||||||
LastTicks.Update();
|
LastTicks.Update();
|
||||||
|
|
||||||
Memory<byte> memory = buffer.AsMemory(offset, length);
|
Memory<byte> memory = buffer.AsMemory(offset, length);
|
||||||
if (memory.Length == ttlBytes.Length && memory.Span.SequenceEqual(ttlBytes)) return;
|
|
||||||
|
|
||||||
if (memory.Length == pingBytes.Length && memory.Span.Slice(0, pingBytes.Length - 4).SequenceEqual(pingBytes.AsSpan(0, pingBytes.Length - 4)))
|
if (memory.Length == pingBytes.Length && memory.Span.Slice(0, pingBytes.Length - 4).SequenceEqual(pingBytes.AsSpan(0, pingBytes.Length - 4)))
|
||||||
{
|
{
|
||||||
|
@@ -41,8 +41,8 @@ namespace linker.tunnel.transport
|
|||||||
|
|
||||||
|
|
||||||
private ConcurrentDictionary<int, ListenAsyncToken> stateDic = new ConcurrentDictionary<int, ListenAsyncToken>();
|
private ConcurrentDictionary<int, ListenAsyncToken> stateDic = new ConcurrentDictionary<int, ListenAsyncToken>();
|
||||||
private byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.ttl");
|
private byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.ttl1");
|
||||||
private byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.end");
|
private byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.end1");
|
||||||
private IPEndPoint quicListenEP;
|
private IPEndPoint quicListenEP;
|
||||||
|
|
||||||
private readonly ITunnelMessengerAdapter tunnelMessengerAdapter;
|
private readonly ITunnelMessengerAdapter tunnelMessengerAdapter;
|
||||||
|
@@ -40,8 +40,8 @@ namespace linker.tunnel.transport
|
|||||||
public Action<ITunnelConnection> OnConnected { get; set; } = (state) => { };
|
public Action<ITunnelConnection> OnConnected { get; set; } = (state) => { };
|
||||||
|
|
||||||
|
|
||||||
private byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.ttl");
|
private readonly byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.tcp.ttl1");
|
||||||
private byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.end");
|
private readonly byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.tcp.end1");
|
||||||
|
|
||||||
private readonly ITunnelMessengerAdapter tunnelMessengerAdapter;
|
private readonly ITunnelMessengerAdapter tunnelMessengerAdapter;
|
||||||
public TransportTcpP2PNAT(ITunnelMessengerAdapter tunnelMessengerAdapter)
|
public TransportTcpP2PNAT(ITunnelMessengerAdapter tunnelMessengerAdapter)
|
||||||
|
@@ -44,9 +44,8 @@ namespace linker.tunnel.transport
|
|||||||
public Action<ITunnelConnection> OnConnected { get; set; } = (state) => { };
|
public Action<ITunnelConnection> OnConnected { get; set; } = (state) => { };
|
||||||
|
|
||||||
|
|
||||||
|
private readonly byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.ttl1");
|
||||||
private byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.ttl");
|
private readonly byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.end1");
|
||||||
private byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.end");
|
|
||||||
|
|
||||||
private readonly ITunnelMessengerAdapter tunnelMessengerAdapter;
|
private readonly ITunnelMessengerAdapter tunnelMessengerAdapter;
|
||||||
public TransportUdp(ITunnelMessengerAdapter tunnelMessengerAdapter)
|
public TransportUdp(ITunnelMessengerAdapter tunnelMessengerAdapter)
|
||||||
@@ -71,7 +70,7 @@ namespace linker.tunnel.transport
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
await Task.Delay(100).ConfigureAwait(false);
|
await Task.Delay(1000).ConfigureAwait(false);
|
||||||
ITunnelConnection connection = await ConnectForward(tunnelTransportInfo).ConfigureAwait(false);
|
ITunnelConnection connection = await ConnectForward(tunnelTransportInfo).ConfigureAwait(false);
|
||||||
if (connection != null)
|
if (connection != null)
|
||||||
{
|
{
|
||||||
@@ -84,8 +83,8 @@ namespace linker.tunnel.transport
|
|||||||
//反向连接
|
//反向连接
|
||||||
TunnelTransportInfo tunnelTransportInfo1 = tunnelTransportInfo.ToJsonFormat().DeJson<TunnelTransportInfo>();
|
TunnelTransportInfo tunnelTransportInfo1 = tunnelTransportInfo.ToJsonFormat().DeJson<TunnelTransportInfo>();
|
||||||
_ = BindListen(tunnelTransportInfo1.Local.Local, tunnelTransportInfo1);
|
_ = BindListen(tunnelTransportInfo1.Local.Local, tunnelTransportInfo1);
|
||||||
await Task.Delay(50).ConfigureAwait(false);
|
|
||||||
BindAndTTL(tunnelTransportInfo1);
|
BindAndTTL(tunnelTransportInfo1);
|
||||||
|
await Task.Delay(1000).ConfigureAwait(false);
|
||||||
if (await tunnelMessengerAdapter.SendConnectBegin(tunnelTransportInfo1).ConfigureAwait(false) == false)
|
if (await tunnelMessengerAdapter.SendConnectBegin(tunnelTransportInfo1).ConfigureAwait(false) == false)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
@@ -337,7 +336,7 @@ namespace linker.tunnel.transport
|
|||||||
socket.WindowsUdpBug();
|
socket.WindowsUdpBug();
|
||||||
socket.ReuseBind(local);
|
socket.ReuseBind(local);
|
||||||
socket.Ttl = (short)(tunnelTransportInfo.Local.RouteLevel);
|
socket.Ttl = (short)(tunnelTransportInfo.Local.RouteLevel);
|
||||||
_ = socket.SendToAsync(endBytes, SocketFlags.None, ip);
|
_ = socket.SendToAsync(authBytes, SocketFlags.None, ip);
|
||||||
socket.SafeClose();
|
socket.SafeClose();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
v1.8.3
|
v1.8.3
|
||||||
2025-06-14 14:51:14
|
2025-06-14 18:52:23
|
||||||
1. 一些累计更新
|
1. 一些累计更新
|
||||||
2. 修复socks5,解决CPU爆满问题,增加本地域名解析,支持HTTP代理
|
2. 修复socks5,解决CPU爆满问题,增加本地域名解析,支持HTTP代理
|
||||||
3. 优化唤醒模块
|
3. 优化唤醒模块
|
||||||
|
Reference in New Issue
Block a user