From f1b649243559c6e1dcb256098ed94b6bb54ac9f1 Mon Sep 17 00:00:00 2001 From: springhgui <740360381@qq.com> Date: Sun, 26 Dec 2021 23:04:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E8=B6=85=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/DateTimeExtensions.cs | 19 ------------------- .../FastTunnelForwarderHttpClientFactory.cs | 10 +++++----- .../MiddleWare/FastTunnelSwapHandler.cs | 2 +- .../Handlers/Client/SwapHandler.cs | 12 +----------- .../Handlers/Server/ForwardDispatcher.cs | 11 +++++++---- .../Handlers/Server/LoginHandler.cs | 2 +- FastTunnel.Core/Listener/PortProxyListener.cs | 1 - 7 files changed, 15 insertions(+), 42 deletions(-) delete mode 100644 FastTunnel.Core/Extensions/DateTimeExtensions.cs diff --git a/FastTunnel.Core/Extensions/DateTimeExtensions.cs b/FastTunnel.Core/Extensions/DateTimeExtensions.cs deleted file mode 100644 index 5ea7f58..0000000 --- a/FastTunnel.Core/Extensions/DateTimeExtensions.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FastTunnel.Core.Utility.Extensions -{ - public static class DateTimeExtensions - { - public static string GetChinaTicks(this DateTime dateTime) - { - // 北京时间相差8小时 - DateTime startTime = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1, 8, 0, 0, 0), TimeZoneInfo.Local); - long t = (dateTime.Ticks - startTime.Ticks) / 10000; - return t.ToString(); - } - } -} diff --git a/FastTunnel.Core/Forwarder/FastTunnelForwarderHttpClientFactory.cs b/FastTunnel.Core/Forwarder/FastTunnelForwarderHttpClientFactory.cs index 32c454c..1394a9b 100644 --- a/FastTunnel.Core/Forwarder/FastTunnelForwarderHttpClientFactory.cs +++ b/FastTunnel.Core/Forwarder/FastTunnelForwarderHttpClientFactory.cs @@ -20,13 +20,13 @@ namespace FastTunnel.Core.Forwarder { public class FastTunnelForwarderHttpClientFactory : ForwarderHttpClientFactory { - ILogger _logger; + ILogger logger; FastTunnelServer _fastTunnelServer; public FastTunnelForwarderHttpClientFactory(ILogger logger, FastTunnelServer fastTunnelServer) { this._fastTunnelServer = fastTunnelServer; - this._logger = logger; + this.logger = logger; } protected override void ConfigureHandler(ForwarderHttpClientContext context, SocketsHttpHandler handler) @@ -62,9 +62,9 @@ namespace FastTunnel.Core.Forwarder var msgId = Guid.NewGuid().ToString().Replace("-", ""); TaskCompletionSource tcs = new(cancellation); - _logger.LogDebug($"[Http]Swap开始 {msgId}|{host}=>{web.WebConfig.LocalIp}:{web.WebConfig.LocalPort}"); + logger.LogDebug($"[Http]Swap开始 {msgId}|{host}=>{web.WebConfig.LocalIp}:{web.WebConfig.LocalPort}"); - tcs.SetTimeOut(20000, null); + //tcs.SetTimeOut(20000, () => { logger.LogDebug($"[Proxy TimeOut]:{msgId}"); }); _fastTunnelServer.ResponseTasks.TryAdd(msgId, tcs); @@ -74,7 +74,7 @@ namespace FastTunnel.Core.Forwarder await web.Socket.SendCmdAsync(MessageType.SwapMsg, $"{msgId}|{web.WebConfig.LocalIp}:{web.WebConfig.LocalPort}", cancellation); var res = await tcs.Task; - _logger.LogDebug($"[Http]Swap OK {msgId}"); + logger.LogDebug($"[Http]Swap OK {msgId}"); return res; } catch (WebSocketException) diff --git a/FastTunnel.Core/Forwarder/MiddleWare/FastTunnelSwapHandler.cs b/FastTunnel.Core/Forwarder/MiddleWare/FastTunnelSwapHandler.cs index f87e4c8..94335bb 100644 --- a/FastTunnel.Core/Forwarder/MiddleWare/FastTunnelSwapHandler.cs +++ b/FastTunnel.Core/Forwarder/MiddleWare/FastTunnelSwapHandler.cs @@ -54,7 +54,7 @@ namespace FastTunnel.Core.Forwarder.MiddleWare responseAwaiter.TrySetResult(reverseConnection); var closedAwaiter = new TaskCompletionSource(); - closedAwaiter.SetTimeOut(20000, null); + //closedAwaiter.SetTimeOut(20000, () => { logger.LogDebug($"[Swap TimeOut]:{requestId}"); }); lifetime.ConnectionClosed.Register((task) => { diff --git a/FastTunnel.Core/Handlers/Client/SwapHandler.cs b/FastTunnel.Core/Handlers/Client/SwapHandler.cs index ff3f0bf..06e65a4 100644 --- a/FastTunnel.Core/Handlers/Client/SwapHandler.cs +++ b/FastTunnel.Core/Handlers/Client/SwapHandler.cs @@ -1,8 +1,5 @@ -using FastTunnel.Core.Config; -using FastTunnel.Core.Client; -using FastTunnel.Core.Models; +using FastTunnel.Core.Client; using System; -using System.Collections.Generic; using System.IO; using System.Net.Sockets; using System.Text; @@ -10,13 +7,6 @@ using System.Threading; using System.Threading.Tasks; using FastTunnel.Core.Sockets; using Microsoft.Extensions.Logging; -using FastTunnel.Core.Utility.Extensions; -using System.Net.WebSockets; -using FastTunnel.Core.Forwarder; -using Microsoft; -using Microsoft.AspNetCore.DataProtection; -using System.Data.Common; -using Microsoft.AspNetCore.Hosting.Server; using System.Net.Security; namespace FastTunnel.Core.Handlers.Client diff --git a/FastTunnel.Core/Handlers/Server/ForwardDispatcher.cs b/FastTunnel.Core/Handlers/Server/ForwardDispatcher.cs index 6c8bac4..221a992 100644 --- a/FastTunnel.Core/Handlers/Server/ForwardDispatcher.cs +++ b/FastTunnel.Core/Handlers/Server/ForwardDispatcher.cs @@ -40,7 +40,7 @@ namespace FastTunnel.Core.Dispatchers logger.LogDebug($"[Forward]Swap开始 {msgId}|{_config.RemotePort}=>{_config.LocalIp}:{_config.LocalPort}"); var tcs = new TaskCompletionSource(); - tcs.SetTimeOut(20000, null); + //tcs.SetTimeOut(10000, () => { logger.LogDebug($"[Dispatch TimeOut]:{msgId}"); }); _server.ResponseTasks.TryAdd(msgId, tcs); @@ -53,7 +53,7 @@ namespace FastTunnel.Core.Dispatchers // TODO:客户端已掉线,但是没有移除对端口的监听 logger.LogError($"[Forward]Swap 客户端已离线 {sex.Message}"); tcs.TrySetCanceled(); - _server.ResponseTasks.TryRemove(msgId, out _); + _socket.Close(); return; } catch (Exception ex) @@ -61,7 +61,7 @@ namespace FastTunnel.Core.Dispatchers // 网络不稳定 logger.LogError(ex, $"[Forward]Swap Exception"); tcs.TrySetCanceled(); - _server.ResponseTasks.TryRemove(msgId, out _); + _socket.Close(); return; } @@ -74,9 +74,12 @@ namespace FastTunnel.Core.Dispatchers } catch (Exception ex) { - _server.ResponseTasks.TryRemove(msgId, out _); logger.LogDebug($"[Forward]Swap Error {msgId}:" + ex.Message); } + finally + { + _server.ResponseTasks.TryRemove(msgId, out _); + } } } } diff --git a/FastTunnel.Core/Handlers/Server/LoginHandler.cs b/FastTunnel.Core/Handlers/Server/LoginHandler.cs index a1f7b4b..51df946 100644 --- a/FastTunnel.Core/Handlers/Server/LoginHandler.cs +++ b/FastTunnel.Core/Handlers/Server/LoginHandler.cs @@ -118,7 +118,7 @@ namespace FastTunnel.Core.Handlers.Server await client.webSocket.SendCmdAsync(MessageType.Log, TunnelResource.NoTunnel, CancellationToken.None); } - public async Task HandlerMsg(FastTunnelServer fastTunnelServer, TunnelClient tunnelClient, string lineCmd) + public virtual async Task HandlerMsg(FastTunnelServer fastTunnelServer, TunnelClient tunnelClient, string lineCmd) { var msg = JsonSerializer.Deserialize(lineCmd); await HandleLoginAsync(fastTunnelServer, tunnelClient, msg); diff --git a/FastTunnel.Core/Listener/PortProxyListener.cs b/FastTunnel.Core/Listener/PortProxyListener.cs index 8597b31..997668a 100644 --- a/FastTunnel.Core/Listener/PortProxyListener.cs +++ b/FastTunnel.Core/Listener/PortProxyListener.cs @@ -26,7 +26,6 @@ namespace FastTunnel.Core.Listener bool shutdown = false; ForwardDispatcher _requestDispatcher; Socket listenSocket; - public IList ConnectedSockets = new List(); WebSocket client; public PortProxyListener(string ip, int port, ILogger logerr, WebSocket client)