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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }