コード例 #1
0
 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));
     }
 }
コード例 #2
0
        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");
        }
コード例 #3
0
ファイル: SelfServiceLiveTest.cs プロジェクト: lanicon/river
        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();
        }
コード例 #4
0
        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;
                }
            }
        }
コード例 #5
0
ファイル: BdtClient.cs プロジェクト: Jonxxx/Bdtunnel
        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);
            }
        }
コード例 #6
0
        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();
            }
        }
コード例 #7
0
ファイル: ClientApiTests.cs プロジェクト: lanicon/river
        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();
        }
コード例 #8
0
 public SocksServerProxyClientWorker(SocksServer <SocksServerProxyClientWorker> server, TcpClient client) : base(client)
 {
 }
コード例 #9
0
        // [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();
        }