|
5 | 5 | use React\Socket\Connector;
|
6 | 6 | use Clue\React\Buzz\Browser;
|
7 | 7 | use Illuminate\Console\Command;
|
| 8 | +use React\Dns\Config\Config as DnsConfig; |
8 | 9 | use React\EventLoop\Factory as LoopFactory;
|
| 10 | +use React\Dns\Resolver\Factory as DnsFactory; |
| 11 | +use React\Dns\Resolver\Resolver as ReactDnsResolver; |
9 | 12 | use BeyondCode\LaravelWebSockets\Statistics\DnsResolver;
|
10 | 13 | use BeyondCode\LaravelWebSockets\Facades\StatisticsLogger;
|
11 | 14 | use BeyondCode\LaravelWebSockets\Facades\WebSocketsRouter;
|
@@ -47,7 +50,7 @@ public function handle()
|
47 | 50 | protected function configureStatisticsLogger()
|
48 | 51 | {
|
49 | 52 | $connector = new Connector($this->loop, [
|
50 |
| - 'dns' => new DnsResolver(), |
| 53 | + 'dns' => $this->getDnsResolver(), |
51 | 54 | 'tls' => [
|
52 | 55 | 'verify_peer' => config('app.env') === 'production',
|
53 | 56 | 'verify_peer_name' => config('app.env') === 'production',
|
@@ -123,4 +126,20 @@ protected function startWebSocketServer()
|
123 | 126 | ->createServer()
|
124 | 127 | ->run();
|
125 | 128 | }
|
| 129 | + |
| 130 | + protected function getDnsResolver(): ReactDnsResolver |
| 131 | + { |
| 132 | + if (! config('websockets.statistics.perform_dns_lookup')) { |
| 133 | + return new DnsResolver; |
| 134 | + } |
| 135 | + |
| 136 | + $dnsConfig = DnsConfig::loadSystemConfigBlocking(); |
| 137 | + |
| 138 | + return (new DnsFactory)->createCached( |
| 139 | + $dnsConfig->nameservers |
| 140 | + ? reset($dnsConfig->nameservers) |
| 141 | + : '1.1.1.1', |
| 142 | + $this->loop |
| 143 | + ); |
| 144 | + } |
126 | 145 | }
|
0 commit comments