示例#1
0
        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);
            }
        }
示例#2
0
        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;
 }
示例#4
0
        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();
        }
示例#6
0
        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();
        }
示例#7
0
        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;
 }