Skip to content

Commit cc0d4c1

Browse files
authored
Merge pull request #100 from clue-labs/default-loop
Simplify usage by updating to new default loop and making `Connector` optional
2 parents 712d85c + 8d3feee commit cc0d4c1

21 files changed

+180
-302
lines changed

README.md

Lines changed: 68 additions & 156 deletions
Large diffs are not rendered by default.

composer.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,22 @@
1010
"email": "[email protected]"
1111
}
1212
],
13-
"autoload": {
14-
"psr-4": {"Clue\\React\\Socks\\": "src/"}
15-
},
16-
"autoload-dev": {
17-
"psr-4": { "Clue\\Tests\\React\\Socks\\": "tests/" }
18-
},
1913
"require": {
2014
"php": ">=5.3",
2115
"react/promise": "^2.1 || ^1.2",
22-
"react/socket": "^1.1"
16+
"react/socket": "^1.8"
2317
},
2418
"require-dev": {
25-
"phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35",
26-
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3",
27-
"react/http": "^1.0",
19+
"clue/block-react": "^1.1",
2820
"clue/connection-manager-extra": "^1.0 || ^0.7",
29-
"clue/block-react": "^1.1"
21+
"phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35",
22+
"react/event-loop": "^1.2",
23+
"react/http": "^1.4"
24+
},
25+
"autoload": {
26+
"psr-4": { "Clue\\React\\Socks\\": "src/" }
27+
},
28+
"autoload-dev": {
29+
"psr-4": { "Clue\\Tests\\React\\Socks\\": "tests/" }
3030
}
3131
}

examples/01-https-request.php

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,18 @@
2121
$url = 'localhost:1080';
2222
}
2323

24-
$loop = React\EventLoop\Factory::create();
25-
$proxy = new Clue\React\Socks\Client(
26-
$url,
27-
new React\Socket\Connector($loop)
28-
);
24+
$proxy = new Clue\React\Socks\Client($url);
2925

30-
$connector = new React\Socket\Connector($loop, array(
26+
$connector = new React\Socket\Connector(null, array(
3127
'tcp' => $proxy,
3228
'timeout' => 3.0,
3329
'dns' => false
3430
));
3531

36-
$browser = new React\Http\Browser($loop, $connector);
32+
$browser = new React\Http\Browser(null, $connector);
3733

3834
$browser->get('https://example.com/')->then(function (Psr\Http\Message\ResponseInterface $response) {
3935
var_dump($response->getHeaders(), (string) $response->getBody());
4036
}, function (Exception $e) {
4137
echo 'Error: ' . $e->getMessage() . PHP_EOL;
4238
});
43-
44-
$loop->run();

examples/02-optional-proxy-https-request.php

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,22 @@
1515

1616
require __DIR__ . '/../vendor/autoload.php';
1717

18-
$loop = React\EventLoop\Factory::create();
19-
2018
$connector = null;
2119
$url = getenv('socks_proxy');
2220
if ($url !== false) {
23-
$proxy = new Clue\React\Socks\Client(
24-
$url,
25-
new React\Socket\Connector($loop)
26-
);
27-
$connector = new React\Socket\Connector($loop, array(
21+
$proxy = new Clue\React\Socks\Client($url);
22+
23+
$connector = new React\Socket\Connector(null, array(
2824
'tcp' => $proxy,
2925
'timeout' => 3.0,
3026
'dns' => false
3127
));
3228
}
3329

34-
$browser = new React\Http\Browser($loop, $connector);
30+
$browser = new React\Http\Browser(null, $connector);
3531

3632
$browser->get('https://example.com/')->then(function (Psr\Http\Message\ResponseInterface $response) {
3733
var_dump($response->getHeaders(), (string) $response->getBody());
3834
}, function (Exception $e) {
3935
echo 'Error: ' . $e->getMessage() . PHP_EOL;
4036
});
41-
42-
$loop->run();

examples/11-proxy-raw-http-protocol.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,9 @@
2424
$url = 'localhost:1080';
2525
}
2626

27-
$loop = React\EventLoop\Factory::create();
27+
$proxy = new Clue\React\Socks\Client($url);
2828

29-
$proxy = new Clue\React\Socks\Client(
30-
$url,
31-
new React\Socket\Connector($loop)
32-
);
33-
$connector = new React\Socket\Connector($loop, array(
29+
$connector = new React\Socket\Connector(null, array(
3430
'tcp' => $proxy,
3531
'timeout' => 3.0,
3632
'dns' => false
@@ -47,5 +43,3 @@
4743
}, function (Exception $e) {
4844
echo 'Error: ' . $e->getMessage() . PHP_EOL;
4945
});
50-
51-
$loop->run();

examples/12-optional-proxy-raw-http-protocol.php

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,17 @@
2222

2323
require __DIR__ . '/../vendor/autoload.php';
2424

25-
$loop = React\EventLoop\Factory::create();
26-
27-
$connector = new React\Socket\Connector($loop);
28-
2925
$url = getenv('socks_proxy');
3026
if ($url !== false) {
31-
$proxy = new Clue\React\Socks\Client($url, $connector);
32-
$connector = new React\Socket\Connector($loop, array(
27+
$proxy = new Clue\React\Socks\Client($url);
28+
29+
$connector = new React\Socket\Connector(null, array(
3330
'tcp' => $proxy,
3431
'timeout' => 3.0,
3532
'dns' => false
3633
));
34+
} else {
35+
$connector = new React\Socket\Connector();
3736
}
3837

3938
echo 'Demo SOCKS client connecting to SOCKS server ' . $url . PHP_EOL;
@@ -47,5 +46,3 @@
4746
}, function (Exception $e) {
4847
echo 'Error: ' . $e->getMessage() . PHP_EOL;
4948
});
50-
51-
$loop->run();

examples/13-proxy-raw-https-protocol.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,9 @@
2424
$url = 'localhost:1080';
2525
}
2626

27-
$loop = React\EventLoop\Factory::create();
27+
$proxy = new Clue\React\Socks\Client($url);
2828

29-
$proxy = new Clue\React\Socks\Client(
30-
$url,
31-
new React\Socket\Connector($loop)
32-
);
33-
$connector = new React\Socket\Connector($loop, array(
29+
$connector = new React\Socket\Connector(null, array(
3430
'tcp' => $proxy,
3531
'timeout' => 3.0,
3632
'dns' => false
@@ -47,5 +43,3 @@
4743
}, function (Exception $e) {
4844
echo 'Error: ' . $e->getMessage() . PHP_EOL;
4945
});
50-
51-
$loop->run();

examples/14-optional-proxy-raw-https-protocol.php

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,17 @@
2222

2323
require __DIR__ . '/../vendor/autoload.php';
2424

25-
$loop = React\EventLoop\Factory::create();
26-
27-
$connector = new React\Socket\Connector($loop);
28-
2925
$url = getenv('socks_proxy');
3026
if ($url !== false) {
31-
$proxy = new Clue\React\Socks\Client($url, $connector);
32-
$connector = new React\Socket\Connector($loop, array(
27+
$proxy = new Clue\React\Socks\Client($url);
28+
29+
$connector = new React\Socket\Connector(null, array(
3330
'tcp' => $proxy,
3431
'timeout' => 3.0,
3532
'dns' => false
3633
));
34+
} else {
35+
$connector = new React\Socket\Connector();
3736
}
3837

3938
echo 'Demo SOCKS client connecting to SOCKS server ' . $url . PHP_EOL;
@@ -47,5 +46,3 @@
4746
}, function (Exception $e) {
4847
echo 'Error: ' . $e->getMessage() . PHP_EOL;
4948
});
50-
51-
$loop->run();

examples/15-proxy-chaining.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// A more advanced example which requests http://www.google.com/ through a chain of SOCKS proxy servers.
44
// The proxy servers can be given as arguments.
55
//
6-
// Not already running a SOCKS proxy server? See also example #21 or try this:
6+
// Not already running a SOCKS proxy server? See also example #21 or try this:
77
// $ ssh -D 1080 localhost
88
//
99
// For illustration purposes only. If you want to send HTTP requests in a real
@@ -22,17 +22,15 @@
2222
// Alternatively, you can also hard-code this value like this:
2323
//$path = array('127.0.0.1:9051', '127.0.0.1:9052', '127.0.0.1:9053');
2424

25-
$loop = React\EventLoop\Factory::create();
26-
2725
// set next SOCKS server chain via p1 -> p2 -> p3 -> destination
28-
$connector = new React\Socket\Connector($loop);
26+
$connector = new React\Socket\Connector();
2927
foreach ($path as $proxy) {
3028
$connector = new Clue\React\Socks\Client($proxy, $connector);
3129
}
3230

3331
// please note how the client uses p3 (not p1!), which in turn then uses the complete chain
3432
// this creates a TCP/IP connection to p1, which then connects to p2, then to p3, which then connects to the target
35-
$connector = new React\Socket\Connector($loop, array(
33+
$connector = new React\Socket\Connector(null, array(
3634
'tcp' => $connector,
3735
'timeout' => 3.0,
3836
'dns' => false
@@ -49,5 +47,3 @@
4947
}, function (Exception $e) {
5048
echo 'Error: ' . $e->getMessage() . PHP_EOL;
5149
});
52-
53-
$loop->run();

examples/16-local-dns.php

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,16 @@
1313

1414
$url = isset($argv[1]) ? $argv[1] : '127.0.0.1:1080';
1515

16-
$loop = React\EventLoop\Factory::create();
16+
$proxy = new Clue\React\Socks\Client($url);
1717

1818
// set up DNS server to use (Google's public DNS)
19-
$proxy = new Clue\React\Socks\Client(
20-
$url,
21-
new React\Socket\Connector($loop)
22-
);
23-
$connector = new React\Socket\Connector($loop, array(
19+
$connector = new React\Socket\Connector(null, array(
2420
'tcp' => $proxy,
2521
'timeout' => 3.0,
2622
'dns' => '8.8.8.8'
2723
));
2824

29-
echo 'Demo SOCKS client connecting to SOCKS server ' . $proxy . PHP_EOL;
25+
echo 'Demo SOCKS client connecting to SOCKS server ' . $url . PHP_EOL;
3026

3127
$connector->connect('tls://www.google.com:443')->then(function (React\Socket\ConnectionInterface $connection) {
3228
echo 'connected' . PHP_EOL;
@@ -37,5 +33,3 @@
3733
}, function (Exception $e) {
3834
echo 'Error: ' . $e->getMessage() . PHP_EOL;
3935
});
40-
41-
$loop->run();

0 commit comments

Comments
 (0)