예제 #1
0
        public void Dispose_disposes_created_proxies()
        {
            var stream = new LoopbackTcpStream(
                5,
                1,
                0,
                5,
                (byte)CommandType.Connect,
                0,
                (byte)AddressType.Ipv4,
                1,
                2,
                3,
                4,
                0,
                255);

            var proxyFactory = new FakeProxyFactory();
            var proxy        = new FakeProxy();

            proxyFactory.NextTcpProxyToReturn = proxy;

            using (var connection = new SocksConnection(
                       stream,
                       proxyFactory,
                       ArrayPool <byte> .Shared,
                       new NullLoggerFactory()))
            {
                connection.StartHandlingClient();
                proxy.WaitForRunAsyncCall();
            }

            proxy.IsDisposed.Should().BeTrue();
        }
예제 #2
0
 public void Responds_to_unsupported_authentication_method_with_failure()
 {
     using (var stream = new LoopbackTcpStream(5, 1, 254))
         using (var connection = new SocksConnection(
                    stream,
                    new FakeProxyFactory(),
                    ArrayPool <byte> .Shared,
                    new NullLoggerFactory()))
         {
             connection.StartHandlingClient();
             stream.WaitForWrittenBytes(2).Should().Equal(5, 255);
         }
 }
예제 #3
0
        public void Assumes_ownership_of_stream_and_disposes_it()
        {
            var stream = new LoopbackTcpStream(5, 1, 254);

            using (var connection = new SocksConnection(
                       stream,
                       new FakeProxyFactory(),
                       ArrayPool <byte> .Shared,
                       new NullLoggerFactory()))
            {
                connection.StartHandlingClient();
                stream.WaitForWrittenBytes(2).Should().Equal(5, 255);
            }

            stream.IsDisposed.Should().BeTrue();
        }
예제 #4
0
        public async void Connect()
        {
            if (!_useSocks)
            {
                Connect(IPAddress.Parse(_host), _serverPort);
            }
            else
            {
                try
                {
                    Socket socket = await SocksConnection.OpenConnection(_socksVersion, _host, _serverPort, _socksHost, _socksPort, _socksUser, _socksPass);

                    Initialize(socket);
                }
                catch (Exception ex)
                {
                    Close(ex);
                }
            }
        }
예제 #5
0
        public async void Connect()
        {
            if (!_useSocks)
            {
                Connect(ServerHost.Address, ServerHost.Port);
            }
            else
            {
                try
                {
                    Socket socket = await SocksConnection.OpenConnection(_socksVersion, ServerHost.Address.ToString(), ServerHost.Port, _socksHost, _socksPort, _socksUser, _socksPass);

                    Initialize(socket);
                }
                catch (Exception ex)
                {
                    Close(ex);
                }
            }
        }
예제 #6
0
        public async Task Connect()
        {
            if (!_useSocks)
            {
                Connect(Host, Port);
            }
            else
            {
                try
                {
                    var socket = await SocksConnection.OpenConnection(_socksVersion, Host, Port, _socksHost, _socksPort, _socksUser, _socksPass);

                    Initialize(socket, _socksVersion);
                }
                catch (Exception ex)
                {
                    Close(ex);
                }
            }
        }
예제 #7
0
        public async void Connect()
        {
            var serverHost = Server.GetAddress();

            if (!_useSocks)
            {
                Connect(serverHost.Address, serverHost.Port);
            }
            else
            {
                try
                {
                    Socket socket = await SocksConnection.OpenConnection(_socksVersion, serverHost.Address, serverHost.Port, _socksHost, _socksPort, _socksUser, _socksPass);

                    Initialize(socket);
                }
                catch (Exception ex)
                {
                    Close(ex);
                }
            }
        }
예제 #8
0
        public async void Connect(string serverAddress, int serverPort)
        {
            var serverIp = IPAddress.Parse(serverAddress);

            if (!_useSocks)
            {
                Connect(serverIp, serverPort);
            }
            else
            {
                try
                {
                    Socket socket = await SocksConnection.OpenConnection(_socksVersion, serverIp, serverPort, _socksHost, _socksPort, _socksUser, _socksPass);

                    Initialize(socket);
                }
                catch (Exception ex)
                {
                    Close(ex);
                }
            }
        }
예제 #9
0
        public async void Connect()
        {
            string host = _server == Server.Blue ? BlueAddress : RedAddress;

            if (!_useSocks)
            {
                Connect(IPAddress.Parse(host), ServerPort);
            }
            else
            {
                try
                {
                    Socket socket = await SocksConnection.OpenConnection(_socksVersion, host, ServerPort, _socksHost, _socksPort, _socksUser, _socksPass);

                    Initialize(socket);
                }
                catch (Exception ex)
                {
                    Close(ex);
                }
            }
        }
예제 #10
0
 public void Responds_to_invalid_address_type_with_failure()
 {
     using (var stream = new LoopbackTcpStream(
                5,
                1,
                0,
                5,
                (byte)CommandType.Connect,
                0,
                254,
                1,
                2,
                3,
                4,
                0,
                255))
         using (var connection = new SocksConnection(
                    stream,
                    new FakeProxyFactory(),
                    ArrayPool <byte> .Shared,
                    new NullLoggerFactory()))
         {
             connection.StartHandlingClient();
             stream.WaitForWrittenBytes(2).Should().Equal(5, 0);
             stream.WaitForWrittenBytes(10).Should().Equal(
                 5,
                 (byte)CommandReplyType.AddressTypeNotSupported,
                 0,
                 1,
                 0,
                 0,
                 0,
                 0,
                 0,
                 0);
         }
 }
예제 #11
0
        public async Task Connect()
        {
            base.Username     = _httpConnection.Username;
            Id                = _httpConnection.Id;
            base.HashPassword = _httpConnection.HashPassword;

            if (!_useSocks)
            {
                Connect(Host, Port);
            }
            else
            {
                try
                {
                    var socket = await SocksConnection.OpenConnection(_socksVersion, Host, Port, _socksHost, _socksPort, _socksUser, _socksPass);

                    Initialize(socket, _socksVersion);
                }
                catch (Exception ex)
                {
                    Close(ex);
                }
            }
        }