Beispiel #1
0
        private static void StartHttpsServer(ServerConfig serverConfig)
        {
            try
            {
                foreach (var port in serverConfig.port_list)
                {
                    var server = new HttpsServer(new ServerOption()
                    {
                        Ip           = "Any",
                        Port         = port,
                        ProtocolType = ProtocolType.Tcp,
                        BackLog      = 100,
                        NoDelay      = true,
                        Security     = serverConfig.is_ssl ? SslProtocols.Tls12 : SslProtocols.None,
                        SslServerAuthenticationOptions = serverConfig.is_ssl ? new SslServerAuthenticationOptions
                        {
                            EnabledSslProtocols = SslProtocols.Tls12,
                            ServerCertificate   = new X509Certificate2(string.IsNullOrEmpty(serverConfig.certfile) ? GlobalConfig.CertFile : serverConfig.certfile, string.IsNullOrEmpty(serverConfig.certpwd) ? GlobalConfig.CertPassword : serverConfig.certpwd)
                        } : null
                    })
                    {
                        NATServer = NATServer
                    };
                    _ = server.StartAsync();
                    HttpsServerList.Add(server);
                }

                HandleLog.WriteLine($"{serverConfig.protocol}服务启动成功,监听端口:{serverConfig.port}");
            }
            catch (Exception ex)
            {
                HandleLog.WriteLine($"{serverConfig.protocol}服务初始化失败,端口:{serverConfig.port},{ex}");
            }
        }
Beispiel #2
0
        private static void Received(NatSession session, NatRequestInfo requestInfo)
        {
            Task.Run(() =>
            {
                try
                {
                    //HandleLog.WriteLine($"NAT服务收到数据:{requestInfo.Raw.ToHexWithSpace()},正文内容: {requestInfo.Body.ToJson()}");
                    switch (requestInfo.Body.Type)
                    {
                    case (byte)JsonType.NAT:
                        {
                            NATServer.ProcessData(session, requestInfo);
                            break;
                        }

                    case (byte)JsonType.HTTP:
                        {
                            var httpModel = requestInfo.Body.Data.FromJson <HttpModel>();
                            var server    = HttpsServerList.Find(c => c.ServerId == httpModel.ServerId);
                            server?.ProcessData(session, requestInfo, httpModel);
                            break;
                        }

                    case (byte)JsonType.TCP:
                        {
                            var tcpModel = requestInfo.Body.Data.FromJson <TcpModel>();
                            var server   = TcpServerList.Find(c => c.ServerId == tcpModel.ServerId);
                            server?.ProcessData(session, requestInfo, tcpModel);
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    HandleLog.WriteLine($"穿透传输连接【{session.Remote},{session.Client?.name}】响应请求异常:{ex}");
                }
            });
        }