Skip to content

Releases: clue/reactphp-socks

v0.8.2

09 May 21:13
Compare
Choose a tag to compare
  • Feature: Forward compatibility with upcoming Socket v1.0 and v0.8
    (#56 by @clue)

v0.8.1

21 Apr 19:04
Compare
Choose a tag to compare
  • Update examples to use URIs with default port 1080 and accept proxy URI arguments
    (#54 by @clue)

  • Remove now unneeded dependency on react/stream
    (#55 by @clue)

v0.8.0

18 Apr 08:14
Compare
Choose a tag to compare
  • Feature: Merge Server class from clue/socks-server
    (#52 by @clue)

    $socket = new React\Socket\Server(1080, $loop);
    $server = new Clue\React\Socks\Server($loop, $socket);

    Upgrading from clue/socks-server?
    The classes have been moved as-is, so you can simply start using the new
    class name Clue\React\Socks\Server with no other changes required.

v0.7.0

14 Apr 16:43
Compare
Choose a tag to compare
  • Feature / BC break: Replace depreacted SocketClient with Socket v0.7 and
    use connect($uri) instead of create($host, $port)
    (#51 by @clue)

    // old
    $connector = new React\SocketClient\TcpConnector($loop);
    $client = new Client(1080, $connector);
    $client->create('google.com', 80)->then(function (Stream $conn) {
        $conn->write("");
    });
    
    // new
    $connector = new React\Socket\TcpConnector($loop);
    $client = new Client(1080, $connector);
    $client->connect('google.com:80')->then(function (ConnectionInterface $conn) {
        $conn->write("");
    });
  • Improve test suite by adding PHPUnit to require-dev
    (#50 by @clue)

v0.6.0

29 Nov 06:23
Compare
Choose a tag to compare
  • Feature / BC break: Pass connector into Client instead of loop, remove unneeded deps
    (#49 by @clue)

    // old (connector is create implicitly)
    $client = new Client('127.0.0.1', $loop);
    
    // old (connector can optionally be passed)
    $client = new Client('127.0.0.1', $loop, $connector);
    
    // new (connector is now mandatory)
    $connector = new React\SocketClient\TcpConnector($loop);
    $client = new Client('127.0.0.1', $connector);
  • Feature / BC break: Client now implements ConnectorInterface, remove Connector adapter
    (#47 by @clue)

    // old (explicit connector functions as an adapter)
    $connector = $client->createConnector();
    $promise = $connector->create('google.com', 80);
    
    // new (client can be used as connector right away)
    $promise = $client->create('google.com', 80);
  • Feature / BC break: Remove createSecureConnector(), use SecureConnector instead
    (#47 by @clue)

    // old (tight coupling and hidden dependency)
    $tls = $client->createSecureConnector();
    $promise = $tls->create('google.com', 443);
    
    // new (more explicit, loose coupling)
    $tls = new React\SocketClient\SecureConnector($client, $loop);
    $promise = $tls->create('google.com', 443);
  • Feature / BC break: Remove setResolveLocal() and local DNS resolution and default to remote DNS resolution, use DnsConnector instead
    (#44 by @clue)

    // old (implicitly defaults to true, can be disabled)
    $client->setResolveLocal(false);
    $tcp = $client->createConnector();
    $promise = $tcp->create('google.com', 80);
    
    // new (always disabled, can be re-enabled like this)
    $factory = new React\Dns\Resolver\Factory();
    $resolver = $factory->createCached('8.8.8.8', $loop);
    $tcp = new React\SocketClient\DnsConnector($client, $resolver);
    $promise = $tcp->create('google.com', 80);
  • Feature / BC break: Remove setTimeout(), use TimeoutConnector instead
    (#45 by @clue)

    // old (timeout only applies to TCP/IP connection)
    $client = new Client('127.0.0.1', …);
    $client->setTimeout(3.0);
    $tcp = $client->createConnector();
    $promise = $tcp->create('google.com', 80);
    
    // new (timeout can be added to any layer)
    $client = new Client('127.0.0.1', …);
    $tcp = new React\SocketClient\TimeoutConnector($client, 3.0, $loop);
    $promise = $tcp->create('google.com', 80);
  • Feature / BC break: Remove setProtocolVersion() and setAuth() mutators, only support SOCKS URI for protocol version and authentication (immutable API)
    (#46 by @clue)

    // old (state can be mutated after instantiation)
    $client = new Client('127.0.0.1', …);
    $client->setProtocolVersion('5');
    $client->setAuth('user', 'pass');
    
    // new (immutable after construction, already supported as of v0.5.2 - now mandatory)
    $client = new Client('socks5://user:pass@127.0.0.1', …);

v0.5.2

25 Nov 10:27
Compare
Choose a tag to compare
  • Feature: Apply protocol version and username/password auth from SOCKS URI
    (#43 by @clue)

    // explicitly use SOCKS5
    $client = new Client('socks5://127.0.0.1', $loop);
    
    // use authentication (automatically SOCKS5)
    $client = new Client('user:pass@127.0.0.1', $loop);
  • More explicit client examples, including proxy chaining
    (#42 by @clue)

v0.5.1

21 Nov 08:46
Compare
Choose a tag to compare
  • Feature: Support Promise cancellation
    (#39 by @clue)

    $promise = $connector->create($host, $port);
    
    $promise->cancel();
  • Feature: Timeout now cancels pending connection attempt
    (#39, #22 by @clue)

v0.5.0

07 Nov 23:32
Compare
Choose a tag to compare
  • Remove / BC break: Split off Server to clue/socks-server
    (#35 by @clue)

    Upgrading? Check clue/socks-server for details.

  • Improve documentation and project structure

v0.4.0

19 Mar 16:56
Compare
Choose a tag to compare
  • Feature: Support proper SSL/TLS connections with additional SSL context options
    (#31, #33 by @clue)
  • Documentation for advanced Connector setups (bindto, multihop)
    (#32 by @clue)

v0.3.0

20 Jul 09:24
Compare
Choose a tag to compare
  • BC break / Feature: Client ctor now accepts a SOCKS server URI
    (#24)

    // old
    $client = new Client($loop, 'localhost', 9050);
    
    // new
    $client = new Client('localhost:9050', $loop);
  • Feature: Automatically assume default SOCKS port (1080) if not given explicitly
    (#26)

  • Improve documentation and test suite