public void HandlerMsg(FastTunnelClient cleint, Message <JObject> Msg) { try { var msg = Msg.Content.ToObject <LogMassage>(); switch (msg.MsgType) { case LogMsgType.Info: _logger.LogInformation("From Server:" + msg.Msg); break; case LogMsgType.Error: _logger.LogError("From Server:" + msg.Msg); break; case LogMsgType.Debug: _logger.LogDebug("From Server:" + msg.Msg); break; default: break; } } catch (Exception ex) { _logger.LogError(ex); } }
public ServiceFastTunnelClient(ILogger <ServiceFastTunnelClient> logger, FastTunnelClient fastTunnelClient) { _logger = logger; _fastTunnelClient = fastTunnelClient; //AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; }
public ServiceFastTunnelClient( ILogger <ServiceFastTunnelClient> logger, IConfiguration configuration, FastTunnelClient fastTunnelClient) { _logger = logger; _configuration = configuration; _fastTunnelClient = fastTunnelClient; }
public void HandlerMsg(FastTunnelClient cleint, Message <JObject> Msg) { var request = Msg.Content.ToObject <NewCustomerMassage>(); var interval = long.Parse(DateTime.Now.GetChinaTicks()) - long.Parse(request.MsgId.Split('_')[0]); _logger.LogDebug($"Start SwapMassage {request.MsgId} 服务端耗时:{interval}ms"); var connecter = new DnsSocket(cleint.Server.ServerAddr, cleint.Server.ServerPort); connecter.Connect(); connecter.Send(new Message <SwapMassage> { MessageType = MessageType.C_SwapMsg, Content = new SwapMassage(request.MsgId) }); _logger.LogDebug($"连接server成功 {request.MsgId}"); var localConnecter = new DnsSocket(request.WebConfig.LocalIp, request.WebConfig.LocalPort); try { localConnecter.Connect(); _logger.LogDebug($"连接本地成功 {request.MsgId}"); new SocketSwap(connecter.Socket, localConnecter.Socket, _logger, request.MsgId).StartSwap(); } catch (SocketException sex) { localConnecter.Close(); if (sex.ErrorCode == 10061) { // 内网的站点不存在或无法访问 string statusLine = "HTTP/1.1 200 OK\r\n"; string responseHeader = "Content-Type: text/html\r\n"; byte[] responseBody; responseBody = Encoding.UTF8.GetBytes(TunnelResource.Page_NoSite); connecter.Send(Encoding.UTF8.GetBytes(statusLine)); connecter.Send(Encoding.UTF8.GetBytes(responseHeader)); connecter.Send(Encoding.UTF8.GetBytes("\r\n")); connecter.Send(responseBody); connecter.Socket.Disconnect(false); connecter.Socket.Close(); return; } else { throw; } } catch (Exception) { localConnecter.Close(); throw; } }
public void HandlerMsg(FastTunnelClient cleint, Message <JObject> Msg) { var request = Msg.Content.ToObject <NewCustomerMassage>(); var connecter = new Connecter(cleint._serverConfig.ServerAddr, cleint._serverConfig.ServerPort); connecter.Connect(); connecter.Send(new Message <SwapMassage> { MessageType = MessageType.C_SwapMsg, Content = new SwapMassage(request.MsgId) }); var localConnecter = new Connecter(request.WebConfig.LocalIp, request.WebConfig.LocalPort); try { localConnecter.Connect(); } catch (SocketException sex) { localConnecter.Close(); if (sex.ErrorCode == 10061) { // 内网的站点不存在或无法访问 string statusLine = "HTTP/1.1 200 OK\r\n"; string responseHeader = "Content-Type: text/html\r\n"; byte[] responseBody; responseBody = Encoding.UTF8.GetBytes(TunnelResource.Page_NoSite); connecter.Send(Encoding.UTF8.GetBytes(statusLine)); connecter.Send(Encoding.UTF8.GetBytes(responseHeader)); connecter.Send(Encoding.UTF8.GetBytes("\r\n")); connecter.Send(responseBody); connecter.Socket.Disconnect(false); connecter.Socket.Close(); return; } else { throw; } } catch (Exception) { localConnecter.Close(); throw; } new SocketSwap(connecter.Socket, localConnecter.Socket).StartSwap(); }
public void HandlerMsg(FastTunnelClient cleint, Message <JObject> Msg) { var request_ssh = Msg.Content.ToObject <NewSSHRequest>(); var connecter_ssh = new Connecter(cleint._serverConfig.ServerAddr, cleint._serverConfig.ServerPort); connecter_ssh.Connect(); connecter_ssh.Send(new Message <SwapMassage> { MessageType = MessageType.C_SwapMsg, Content = new SwapMassage(request_ssh.MsgId) }); var localConnecter_ssh = new Connecter(request_ssh.SSHConfig.LocalIp, request_ssh.SSHConfig.LocalPort); localConnecter_ssh.Connect(); new SocketSwap(connecter_ssh.Socket, localConnecter_ssh.Socket).StartSwap(); }
private static void Run(Appsettings settings) { var FastTunnelClient = new FastTunnelClient(settings.ClientSettings, new ConsoleLogger()); FastTunnelClient.Login(); }
public void HandlerMsg(FastTunnelClient cleint, Message <JObject> Msg) { cleint.lastHeart = DateTime.Now; }