protected override void SetupData()
        {
            base.SetupData();

            _connectionInfo = new ConnectionInfo(IPAddress.Loopback.ToString(),
                                                 777,
                                                 "user",
                                                 ProxyTypes.Http,
                                                 IPAddress.Loopback.ToString(),
                                                 8122,
                                                 "proxyUser",
                                                 "proxyPwd",
                                                 new KeyboardInteractiveAuthenticationMethod("user"));
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(100);
            _bytesReceivedByProxy   = new List <byte>();
            _actualException        = null;

            _clientSocket = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            _proxyServer = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.ProxyPort));
            _proxyServer.Disconnected  += socket => _disconnected = true;
            _proxyServer.BytesReceived += (bytesReceived, socket) =>
            {
                if (_bytesReceivedByProxy.Count == 0)
                {
                    socket.Send(Encoding.ASCII.GetBytes("Whatever\r\n"));
                    socket.Shutdown(SocketShutdown.Send);
                }

                _bytesReceivedByProxy.AddRange(bytesReceived);
            };
            _proxyServer.Start();
        }
示例#2
0
        protected override void SetupData()
        {
            base.SetupData();

            _connectionInfo         = CreateConnectionInfo("proxyUser", "proxyPwd");
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(100);
            _bytesReceivedByProxy   = new List <byte>();
            _clientSocket           = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            _actualException        = null;

            _proxyServer = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.ProxyPort));
            _proxyServer.Disconnected  += socket => _disconnected = true;
            _proxyServer.BytesReceived += (bytesReceived, socket) =>
            {
                if (_bytesReceivedByProxy.Count == 0)
                {
                    socket.Send(new byte[]
                    {
                        // Reply version (null byte)
                        0x00,
                        // Connection refused
                        0x5b
                    });
                }

                _bytesReceivedByProxy.AddRange(bytesReceived);
            };
            _proxyServer.Start();
        }
        protected override void SetupData()
        {
            base.SetupData();

            _connectionInfo         = CreateConnectionInfo(new string('a', 256), new string('b', 255));
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(100);
            _bytesReceivedByProxy   = new List <byte>();
            _actualException        = null;

            _clientSocket = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            _proxyServer = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.ProxyPort));
            _proxyServer.Disconnected  += socket => _disconnected = true;
            _proxyServer.BytesReceived += (bytesReceived, socket) =>
            {
                _bytesReceivedByProxy.AddRange(bytesReceived);

                // Wait until we received the greeting
                if (_bytesReceivedByProxy.Count == 4)
                {
                    socket.Send(new byte[]
                    {
                        // SOCKS version
                        0x05,
                        // Username/password authentication
                        0x02
                    });
                }
            };
            _proxyServer.Start();
        }
        protected override void SetupData()
        {
            base.SetupData();

            var random = new Random();

            _connectionInfo         = CreateConnectionInfo("proxyUser", "proxyPwd");
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(random.Next(50, 200));
            _stopWatch       = new Stopwatch();
            _actualException = null;

            _clientSocket = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            _proxyServer = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.ProxyPort));
            _proxyServer.Disconnected += socket => _disconnected = true;
            _proxyServer.Connected    += socket =>
            {
                socket.Send(new byte[]
                {
                    // Reply version (null byte)
                    0x00
                });
            };
            _proxyServer.Start();

            _server = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.Port));
            _server.Start();
        }
示例#5
0
        public void Start(string nsp = null)
        {
            if (WorldMode.Standalone == this.Mode)
            {
                EnqueueDeferAction(() => { this.OnLoading?.Invoke(); });
            }
            else
            {
                if (null == nsp)
                {
                    throw new ArgumentNullException(string.Format("nsp should not be NULL under {0} mode!", this.Mode));
                }

                Reset();

                this.socket              = SocketFactory.Create(nsp, this);
                this.socket.OnConnected += OnPeerConnected;
                this.socket.OnClosed    += OnPeerClosed;
                this.socket.OnMessage   += OnPeerMessage;

                switch (this.Mode)
                {
                case WorldMode.Client:
                    this.socket.Dial();
                    break;

                case WorldMode.Server:
                    this.socket.Listen();
                    EnqueueDeferAction(() => { this.OnLoading?.Invoke(); });
                    break;
                }
            }
        }
        protected override void SetupData()
        {
            base.SetupData();

            var random = new Random();

            _connectionInfo = new ConnectionInfo(IPAddress.Loopback.ToString(),
                                                 777,
                                                 "user",
                                                 ProxyTypes.Http,
                                                 IPAddress.Loopback.ToString(),
                                                 8122,
                                                 "proxyUser",
                                                 "proxyPwd",
                                                 new KeyboardInteractiveAuthenticationMethod("user"));
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(random.Next(50, 200));
            _stopWatch       = new Stopwatch();
            _actualException = null;

            _clientSocket = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            _proxyServer = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.ProxyPort));
            _proxyServer.Disconnected += (socket) => _disconnected = true;
            _proxyServer.Start();

            _server = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.Port));
            _server.Start();
        }
        protected override void SetupData()
        {
            base.SetupData();

            _connectionInfo         = CreateConnectionInfo("proxyUser", "proxyPwd");
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(5000);
            _stopWatch       = new Stopwatch();
            _actualException = null;

            _clientSocket = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        }
        protected override void SetupData()
        {
            base.SetupData();

            var random = new Random();

            _connectionInfo         = CreateConnectionInfo(IPAddress.Loopback.ToString());
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(random.Next(50, 200));
            _stopWatch       = new Stopwatch();
            _actualException = null;

            _clientSocket = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        }
        protected override void SetupData()
        {
            base.SetupData();

            var random = new Random();

            _connectionInfo = new ConnectionInfo(IPAddress.Loopback.ToString(),
                                                 777,
                                                 "user",
                                                 ProxyTypes.Http,
                                                 IPAddress.Loopback.ToString(),
                                                 8122,
                                                 "proxyUser",
                                                 "proxyPwd",
                                                 new KeyboardInteractiveAuthenticationMethod("user"));
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(random.Next(50, 200));
            _expectedHttpRequest    = string.Format("CONNECT {0}:{1} HTTP/1.0{2}" +
                                                    "Proxy-Authorization: Basic cHJveHlVc2VyOnByb3h5UHdk{2}{2}",
                                                    _connectionInfo.Host,
                                                    _connectionInfo.Port.ToString(CultureInfo.InvariantCulture),
                                                    "\r\n");
            _bytesReceivedByProxy = new List <byte>();
            _stopWatch            = new Stopwatch();
            _actualException      = null;

            _clientSocket = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            _proxyServer = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.ProxyPort));
            _proxyServer.Disconnected  += (socket) => _disconnected = true;
            _proxyServer.BytesReceived += (bytesReceived, socket) =>
            {
                _bytesReceivedByProxy.AddRange(bytesReceived);

                // Force a timeout by sending less content than indicated by Content-Length header
                if (_bytesReceivedByProxy.Count == _expectedHttpRequest.Length)
                {
                    socket.Send(Encoding.ASCII.GetBytes("HTTP/1.0 200 OK\r\n"));
                    socket.Send(Encoding.ASCII.GetBytes("Content-Length: 10\r\n"));
                    socket.Send(Encoding.ASCII.GetBytes("Content-Type: application/octet-stream\r\n"));
                    socket.Send(Encoding.ASCII.GetBytes("\r\n"));
                    socket.Send(Encoding.ASCII.GetBytes("TOO_FEW"));
                }
            };
            _proxyServer.Start();

            _server = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.Port));
            _server.Start();
        }
示例#10
0
        protected override void SetupData()
        {
            base.SetupData();

            _connectionInfo = new ConnectionInfo(IPAddress.Loopback.ToString(),
                                                 777,
                                                 "user",
                                                 ProxyTypes.Http,
                                                 IPAddress.Loopback.ToString(),
                                                 8122,
                                                 "proxyUser",
                                                 "proxyPwd",
                                                 new KeyboardInteractiveAuthenticationMethod("user"));
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(20);
            _expectedHttpRequest    = string.Format("CONNECT {0}:{1} HTTP/1.0{2}" +
                                                    "Proxy-Authorization: Basic cHJveHlVc2VyOnByb3h5UHdk{2}{2}",
                                                    _connectionInfo.Host,
                                                    _connectionInfo.Port.ToString(CultureInfo.InvariantCulture),
                                                    "\r\n");
            _bytesReceivedByProxy = new List <byte>();
            _disconnected         = false;
            _clientSocket         = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            _proxyServer = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.ProxyPort));
            _proxyServer.Disconnected  += (socket) => _disconnected = true;
            _proxyServer.BytesReceived += (bytesReceived, socket) =>
            {
                _bytesReceivedByProxy.AddRange(bytesReceived);

                // Only send response back after we've received the complete CONNECT request
                // as we want to make sure HttpConnector is not waiting for any data before
                // it sends the CONNECT request
                if (_bytesReceivedByProxy.Count == _expectedHttpRequest.Length)
                {
                    socket.Send(Encoding.ASCII.GetBytes("HTTP/1.0 200 OK\r\n"));
                    socket.Send(Encoding.ASCII.GetBytes("Content-Length: 10\r\n"));
                    socket.Send(Encoding.ASCII.GetBytes("Content-Type: application/octet-stream\r\n"));
                    socket.Send(Encoding.ASCII.GetBytes("\r\n"));
                    socket.Send(Encoding.ASCII.GetBytes("TEEN_BYTES"));
                    socket.Send(Encoding.ASCII.GetBytes("!666!"));
                    socket.Shutdown(SocketShutdown.Send);
                }
            };
            _proxyServer.Start();
        }
示例#11
0
        protected override void SetupData()
        {
            base.SetupData();

            _connectionInfo = new ConnectionInfo(IPAddress.Loopback.ToString(),
                                                 777,
                                                 "user",
                                                 ProxyTypes.Http,
                                                 IPAddress.Loopback.ToString(),
                                                 8122,
                                                 "proxyUser",
                                                 "proxyPwd",
                                                 new KeyboardInteractiveAuthenticationMethod("user"));
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(5000);
            _stopWatch       = new Stopwatch();
            _actualException = null;

            _clientSocket = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        }
        protected override void SetupData()
        {
            base.SetupData();

            _connectionInfo         = CreateConnectionInfo("proxyUser", "proxyPwd");
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(100);
            _proxySocksVersion      = GetNotSupportedSocksVersion();
            _actualException        = null;

            _clientSocket = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            _proxyServer = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.ProxyPort));
            _proxyServer.Disconnected  += socket => _disconnected = true;
            _proxyServer.BytesReceived += (bytesReceived, socket) =>
            {
                socket.Send(new byte[] { _proxySocksVersion });
            };
            _proxyServer.Start();
        }
        protected override void SetupData()
        {
            base.SetupData();

            _connectionInfo         = CreateConnectionInfo("aa", "bbbb");
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(100);
            _bytesReceivedByProxy   = new List <byte>();

            _clientSocket = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            _proxyServer = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.ProxyPort));
            _proxyServer.Disconnected  += socket => _disconnected = true;
            _proxyServer.BytesReceived += (bytesReceived, socket) =>
            {
                _bytesReceivedByProxy.AddRange(bytesReceived);

                if (_bytesReceivedByProxy.Count == 4)
                {
                    // We received the greeting

                    socket.Send(new byte[]
                    {
                        // SOCKS version
                        0x05,
                        // Require username/password authentication
                        0x02
                    });
                }
                else if (_bytesReceivedByProxy.Count == 4 + (1 + 1 + 2 + 1 + 4))
                {
                    // We received the username/password authentication request

                    socket.Send(new byte[]
                    {
                        // Authentication version
                        0x01,
                        // Authentication failed
                        0x01
                    });
                }
            };
            _proxyServer.Start();
        }
        protected override void SetupData()
        {
            base.SetupData();

            var random = new Random();

            _connectionInfo         = CreateConnectionInfo(IPAddress.Loopback.ToString());
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(random.Next(50, 200));
            _stopWatch    = new Stopwatch();
            _disconnected = false;

            _clientSocket = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            _server = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.Port));
            _server.Disconnected += (socket) => _disconnected = true;
            _server.Connected    += (socket) => socket.Send(new byte[1] {
                0x44
            });
            _server.Start();
        }
示例#15
0
        protected override void SetupData()
        {
            base.SetupData();

            _connectionInfo = new ConnectionInfo(IPAddress.Loopback.ToString(),
                                                 777,
                                                 "user",
                                                 ProxyTypes.Http,
                                                 IPAddress.Loopback.ToString(),
                                                 8122,
                                                 "proxyUser",
                                                 string.Empty,
                                                 new KeyboardInteractiveAuthenticationMethod("user"));
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(20);
            _expectedHttpRequest    = string.Format("CONNECT {0}:{1} HTTP/1.0{2}" +
                                                    "Proxy-Authorization: Basic cHJveHlVc2VyOg=={2}{2}",
                                                    _connectionInfo.Host,
                                                    _connectionInfo.Port.ToString(CultureInfo.InvariantCulture),
                                                    "\r\n");
            _bytesReceivedByProxy = new List <byte>();
            _disconnected         = false;
            _clientSocket         = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            _proxyServer = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.ProxyPort));
            _proxyServer.Disconnected += (socket) => _disconnected = true;
            _proxyServer.Connected    += socket =>
            {
                socket.Send(Encoding.ASCII.GetBytes("\r\n"));
                socket.Send(Encoding.ASCII.GetBytes("SSH.NET\r\n"));
                socket.Send(Encoding.ASCII.GetBytes("HTTP/1.0 200 OK\r\n"));
                socket.Send(Encoding.ASCII.GetBytes("Content-Type: application/octet-stream\r\n"));
                socket.Send(Encoding.ASCII.GetBytes("\r\n"));
                socket.Send(Encoding.ASCII.GetBytes("SSH4EVER"));
                socket.Shutdown(SocketShutdown.Send);
            };
            _proxyServer.BytesReceived += (bytesReceived, socket) =>
            {
                _bytesReceivedByProxy.AddRange(bytesReceived);
            };
            _proxyServer.Start();
        }
示例#16
0
        protected override void SetupData()
        {
            base.SetupData();

            _connectionInfo         = CreateConnectionInfo(GenerateRandomString(0, 255), GenerateRandomString(0, 255));
            _connectionInfo.Timeout = TimeSpan.FromMilliseconds(100);
            _bytesReceivedByProxy   = new List <byte>();

            _clientSocket = SocketFactory.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            _proxyServer = new AsyncSocketListener(new IPEndPoint(IPAddress.Loopback, _connectionInfo.ProxyPort));
            _proxyServer.BytesReceived += (bytesReceived, socket) =>
            {
                _bytesReceivedByProxy.AddRange(bytesReceived);

                if (_bytesReceivedByProxy.Count == 4)
                {
                    // We received the greeting

                    socket.Send(new byte[]
                    {
                        // SOCKS version
                        0x05,
                        // Require username/password authentication
                        0x02
                    });
                }
                else if (_bytesReceivedByProxy.Count == 4 + (1 + 1 + _connectionInfo.ProxyUsername.Length + 1 + _connectionInfo.ProxyPassword.Length))
                {
                    // We received the username/password authentication request

                    socket.Send(new byte[]
                    {
                        // Authentication version
                        0x01,
                        // Authentication successful
                        0x00
                    });
                }
                else if (_bytesReceivedByProxy.Count == 4 + (1 + 1 + _connectionInfo.ProxyUsername.Length + 1 + _connectionInfo.ProxyPassword.Length) + (1 + 1 + 1 + 1 + 4 + 2))
                {
                    // We received the connection request

                    socket.Send(new byte[]
                    {
                        // SOCKS version
                        0x05,
                        // Connection successful
                        0x00,
                        // Reserved byte
                        0x00,
                    });

                    // Send server bound address
                    socket.Send(new byte[]
                    {
                        // IPv4
                        0x01,
                        // IP address
                        0x01,
                        0x02,
                        0x12,
                        0x41,
                        // Port
                        0x01,
                        0x02,
                    });

                    // Send extra byte to allow us to verify that connector did not consume too much
                    socket.Send(new byte[]
                    {
                        0xfe
                    });
                }
            };
            _proxyServer.Start();
        }