internal TcpListenerWebSocketContext(
            TcpClient tcpClient, string protocol, bool secure, X509Certificate certificate, Logger logger)
        {
            _tcpClient = tcpClient;
            _secure    = secure;

            var netStream = tcpClient.GetStream();

            if (secure)
            {
                var sslStream = new SslStream(netStream, false);
                sslStream.AuthenticateAsServer(certificate);
                _stream = sslStream;
            }
            else
            {
                _stream = netStream;
            }

            _request = HttpRequest.Read(_stream, 90000);
            _uri     = HttpUtility.CreateRequestUrl(
                _request.RequestUri, _request.Headers["Host"], _request.IsWebSocketRequest, secure);

            _websocket = new WebSocket(this, protocol, logger);
        }
        internal TcpListenerWebSocketContext(
            TcpClient tcpClient, string protocol, bool secure, ServerSslAuthConfiguration certificateConfig, Logger logger)
        {
            _tcpClient = tcpClient;
            _secure    = secure;

            var netStream = tcpClient.GetStream();

            if (secure)
            {
                var sslStream = new SslStream(netStream, false);
                sslStream.AuthenticateAsServer(certificateConfig.ServerCertificate,
                                               certificateConfig.ClientCertificateRequired, certificateConfig.EnabledSslProtocols,
                                               certificateConfig.CheckCertificateRevocation);
                _stream = sslStream;
            }
            else
            {
                _stream = netStream;
            }

            _request = HttpRequest.Read(_stream, 90000);
            _uri     = HttpUtility.CreateRequestUrl(
                _request.RequestUri, _request.Headers["Host"], _request.IsWebSocketRequest, secure);

            _websocket = new WebSocket(this, protocol, logger);
        }
        private async Task <Uri> CreateRequestUri(bool secure)
        {
            var req = await _request.ConfigureAwait(false);

            return(HttpUtility.CreateRequestUrl(
                       req.RequestUri,
                       req.Headers["Host"],
                       req.IsWebSocketRequest,
                       secure));
        }
示例#4
0
        internal TcpListenerWebSocketContext(
            TcpClient client, string protocol, bool secure, X509Certificate cert, Logger logger)
        {
            _client  = client;
            _secure  = secure;
            _stream  = WebSocketStream.CreateServerStream(client, secure, cert);
            _request = _stream.ReadHandshake <HandshakeRequest> (HandshakeRequest.Parse, 90000);
            _uri     = HttpUtility.CreateRequestUrl(
                _request.RequestUri, _request.Headers ["Host"], _request.IsWebSocketRequest, secure);

            _websocket = new WebSocket(this, protocol, logger);
        }
        internal TcpListenerWebSocketContext(
            TcpClient tcpClient,
            string protocol,
            bool secure,
            ServerSslConfiguration sslConfig,
            Logger logger,
            bool alreadySentHeaders = false // (Extension for SelfHostedRemoteDesktop)
            )
        {
            _tcpClient = tcpClient;
            _secure    = secure;
            _logger    = logger;

            var netStream = tcpClient.GetStream();

            if (secure)
            {
                var sslStream =
                    new SslStream(netStream, false, sslConfig.ClientCertificateValidationCallback);

                sslStream.AuthenticateAsServer(
                    sslConfig.ServerCertificate,
                    sslConfig.ClientCertificateRequired,
                    sslConfig.EnabledSslProtocols,
                    sslConfig.CheckCertificateRevocation
                    );

                _stream = sslStream;
            }
            else
            {
                _stream = netStream;
            }
            if (alreadySentHeaders)     // (Extension for SelfHostedRemoteDesktop)
            {
                _request = new HttpRequest("GET", "/nstws");
                _request.Headers.Add("Host", "TEST");
            }
            else
            {
                _request = HttpRequest.Read(_stream, 90000);
            }
            _uri =
                HttpUtility.CreateRequestUrl(
                    _request.RequestUri, _request.Headers["Host"], _request.IsWebSocketRequest, secure
                    );
            _websocket = new WebSocket(this, protocol);
        }
        internal TcpListenerWebSocketContext(
            TcpClient tcpClient,
            string protocol,
            bool secure,
            ServerSslConfiguration sslConfig,
            Logger logger
            )
        {
            _tcpClient = tcpClient;
            _secure    = secure;
            _logger    = logger;

            var netStream = tcpClient.GetStream();

            if (secure)
            {
                var sslStream =
                    new SslStream(netStream, false, sslConfig.ClientCertificateValidationCallback);

                // TODO Rever este ponto se o Async não faz diferença
                sslStream.AuthenticateAsServerAsync(
                    sslConfig.ServerCertificate,
                    sslConfig.ClientCertificateRequired,
                    sslConfig.EnabledSslProtocols,
                    sslConfig.CheckCertificateRevocation
                    );

                _stream = sslStream;
            }
            else
            {
                _stream = netStream;
            }

            _request = HttpRequest.Read(_stream, 90000);
            _uri     =
                HttpUtility.CreateRequestUrl(
                    _request.RequestUri, _request.Headers["Host"], _request.IsWebSocketRequest, secure
                    );

            _websocket = new WebSocket(this, protocol);
        }
        internal TcpListenerWebSocketContext(
            TcpClient tcpClient,
            string protocol,
            bool secure,
#if !NETCF || BCC || SSL
            ServerSslConfiguration sslConfig,
#endif
            Logger logger)
        {
            _tcpClient = tcpClient;
            _secure    = secure;
            _logger    = logger;

            Stream netStream = tcpClient.GetStream();

#if BUFFERED
            netStream = new BufferedNetworkStream((NetworkStream)netStream);
#endif
#if !NETCF || BCC || SSL
            if (secure)
            {
                var sslStream = new SslStream(netStream, false, sslConfig.ClientCertificateValidationCallback);

                sslStream.AuthenticateAsServer(
                    sslConfig.ServerCertificate,
                    sslConfig.ClientCertificateRequired,
                    sslConfig.EnabledSslProtocols,
                    sslConfig.CheckCertificateRevocation);

                _stream = sslStream;
            }
            else
#endif
            {
                _stream = netStream;
            }

            _request = HttpRequest.Read(_stream, 90000);
            _uri     = HttpUtility.CreateRequestUrl(_request.RequestUri, _request.Headers["Host"], _request.IsWebSocketRequest, secure);

            _websocket = new WebSocket(this, protocol);
        }
示例#8
0
        internal TcpListenerWebSocketContext(TcpClient tcpClient, string protocol, bool secure, ServerSslConfiguration sslConfig, Logger logger)
        {
            _tcpClient = tcpClient;
            _secure    = secure;
            _logger    = logger;
            NetworkStream stream = tcpClient.GetStream();

            if (secure)
            {
                SslStream sslStream = new SslStream(stream, leaveStreamOpen: false, sslConfig.ClientCertificateValidationCallback);
                sslStream.AuthenticateAsServer(sslConfig.ServerCertificate, sslConfig.ClientCertificateRequired, sslConfig.EnabledSslProtocols, sslConfig.CheckCertificateRevocation);
                _stream = sslStream;
            }
            else
            {
                _stream = stream;
            }
            _request   = HttpRequest.Read(_stream, 90000);
            _uri       = HttpUtility.CreateRequestUrl(_request.RequestUri, _request.Headers["Host"], _request.IsWebSocketRequest, secure);
            _websocket = new WebSocket(this, protocol);
        }
        internal TcpListenerWebSocketContext(TcpClient tcpClient, string protocol, bool secure, ServerSslConfiguration sslConfig, Logger logger)
        {
            this._tcpClient = tcpClient;
            this._secure    = secure;
            this._logger    = logger;
            NetworkStream innerStream = tcpClient.GetStream();

            if (!secure)
            {
                this._stream = innerStream;
            }
            else
            {
                SslStream stream2 = new SslStream(innerStream, false, sslConfig.ClientCertificateValidationCallback);
                stream2.AuthenticateAsServer(sslConfig.ServerCertificate, sslConfig.ClientCertificateRequired, sslConfig.EnabledSslProtocols, sslConfig.CheckCertificateRevocation);
                this._stream = stream2;
            }
            this._request   = HttpRequest.Read(this._stream, 0x15f90);
            this._uri       = HttpUtility.CreateRequestUrl(this._request.RequestUri, this._request.Headers["Host"], this._request.IsWebSocketRequest, secure);
            this._websocket = new WebSocketSharp.WebSocket(this, protocol);
        }