public SocksServerTunnelClientWorker(SocksServer <SocksServerTunnelClientWorker> server, TcpClient client) : base(client) { if (server == null) { throw new ArgumentNullException(nameof(server)); } _server = (SocksServerToRiverClient)server; if (_server == null) { throw new ArgumentNullException(nameof(server)); } }
static void Main(string[] args) { if (!args.Any()) { MainClient(); return; } RiverInit.RegAll(); _timer = new Timer(Tick, null, 1000, 1000); // ObjectTracker.TypesToPrint.Add(typeof(Handler)); var server1 = new SocksServer { Chain = { // "ss://*****:*****@127.0.0.1:8338", }, }; server1.Run("socks://0.0.0.0:1080"); /* * var server2 = new ShadowSocksServer * { * Chain = * { * // "ss://*****:*****@127.0.0.1:8338", * }, * }; * server2.Run("ss://*****:*****@0.0.0.0:8338"); */ string q; do { q = Console.ReadLine(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.WaitForFullGCApproach(); foreach (var item in ObjectTracker.Default.Get <Thread>()) { Console.WriteLine(Stringify.ToString(item, true)); } } while (q != "q"); }
public static void ClassInit(TestContext ctx) { Resolver.RegisterOverride("_river", x => new RiverSelfService()); _proxyPort = GetFreePort(); _server = new SocksServer(); _server.Run(new ServerConfig { EndPoints = { new IPEndPoint(IPAddress.Loopback, _proxyPort), new IPEndPoint(IPAddress.IPv6Loopback, _proxyPort), }, }); // ObjectTracker.Default.ResetCollection(); }
private void btn_start_Click(object sender, RoutedEventArgs e) { if (cb_selectServer.SelectedIndex != -1) { cb_selectServer.IsEnabled = false; //lock buttons btn_start.IsEnabled = false; btn_stop.IsEnabled = false; switch ((servers[cb_selectServer.SelectedIndex]).mode) { case 1: socksServer = new SocksServer((ushort)(servers[cb_selectServer.SelectedIndex]).localPort); socksServer.Start((servers[cb_selectServer.SelectedIndex]).host, (servers[cb_selectServer.SelectedIndex]).port, (servers[cb_selectServer.SelectedIndex]).password); break; } } }
private void InitializeSocks(ITunnel tunnel, int sid) { if (!ClientConfig.SocksEnabled) { return; } var port = ClientConfig.SocksPort; if (_servers.ContainsKey(port)) { Log(string.Format(Strings.SOCKS_SERVER_DISABLED, port), ESeverity.WARN); } else { var socks = new SocksServer(port, ClientConfig.SocksShared, tunnel, sid); _servers.Add(port, socks); } }
public void Disposing_should_dispose_all_open_connections() { var listener = new TcpListener(new IPEndPoint(IPAddress.Loopback, 0), new NullLoggerFactory()); var connectionsBlock = new BufferBlock <ISocksConnection>(); var connectionBatchBlock = new BatchBlock <ISocksConnection>(2); connectionsBlock.LinkTo(connectionBatchBlock); var connectionFactory = A.Fake <ISocksConnectionFactory>(); A.CallTo(() => connectionFactory.Create(null)) .WithAnyArguments() .ReturnsLazily( () => { var connection = A.Fake <ISocksConnection>(); connectionsBlock.Post(connection); return(connection); }); ISocksConnection[] connections; using (var server = new SocksServer(listener, connectionFactory, new NullLoggerFactory())) { server.Start(); var client1 = new TcpClient(); client1.Connect( ((IPEndPoint)listener.ListenEndPoint).Address, ((IPEndPoint)listener.ListenEndPoint).Port); var client2 = new TcpClient(); client2.Connect( ((IPEndPoint)listener.ListenEndPoint).Address, ((IPEndPoint)listener.ListenEndPoint).Port); connections = connectionBatchBlock.Receive(); } foreach (var connection in connections) { A.CallTo(() => connection.Dispose()).MustHaveHappened(); } }
public void Should_socks5_have_a_ctor_with_proxy_and_host() { var server = new DemoTcpServer(); var proxyPort = GetFreePort(); var proxy = new SocksServer("socks://0.0.0.0:" + proxyPort); var proxyClient = new Socks5ClientStream("127.0.0.1", proxyPort, "127.0.0.1", server.Port); var data = new byte[] { 1, 2, 3, 4 }; proxyClient.Write(data); var buf = new byte[16 * 1024]; var d = proxyClient.Read(buf, 0, buf.Length); Assert.AreEqual(4, d, "Should read 4 bytes in a single packet"); // demo server is XOR 37 CollectionAssert.AreEqual(data.Select(x => (byte)(x ^ 37)).ToArray(), buf.Take(d).ToArray()); server.Dispose(); proxy.Dispose(); proxyClient.Dispose(); }
public SocksServerProxyClientWorker(SocksServer <SocksServerProxyClientWorker> server, TcpClient client) : base(client) { }
// [Timeout(5000)] public void Should_chain_3_socks() { _ = typeof(Socks4ClientStream); // to load the type var port1 = GetFreePort(); var proxy1 = new SocksServer(new ServerConfig { EndPoints = { new IPEndPoint(IPAddress.Loopback, port1), new IPEndPoint(IPAddress.IPv6Loopback, port1), }, }); var port2 = GetFreePort(); var proxy2 = new SocksServer(new ServerConfig { EndPoints = { new IPEndPoint(IPAddress.Loopback, port2), new IPEndPoint(IPAddress.IPv6Loopback, port2), }, }); var port3 = GetFreePort(); var proxy3 = new SocksServer(new ServerConfig { EndPoints = { new IPEndPoint(IPAddress.Loopback, port3), new IPEndPoint(IPAddress.IPv6Loopback, port3), }, }); var port0 = GetFreePort(); var proxy = new SocksServer(new ServerConfig { EndPoints = { new IPEndPoint(IPAddress.Loopback, port0), new IPEndPoint(IPAddress.IPv6Loopback, port0), }, }) { Chain = { "socks4://127.0.0.1:" + port1, // "socks4://127.0.0.1:" + port2, // "socks4://127.0.0.1:" + port3, }, }; var cli = new Socks4ClientStream("localhost", port0, "www.google.com", 80); TestConnction(cli, "www.google.com"); cli.Dispose(); proxy1.Dispose(); proxy2.Dispose(); proxy3.Dispose(); proxy.Dispose(); }