Skip to content
This repository was archived by the owner on Feb 7, 2024. It is now read-only.

Commit db6d794

Browse files
stayallivempociot
authored andcommitted
Option to resolve DNS for the statistics endpoint (#31)
1 parent efbeb18 commit db6d794

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

config/websockets.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@
6565
* the number of days specified here will be deleted.
6666
*/
6767
'delete_statistics_older_than_days' => 60,
68+
69+
/*
70+
* Use an DNS resolver to make the requests to the statistics logger
71+
* default is to resolve everything to 127.0.0.1.
72+
*/
73+
'perform_dns_lookup' => false,
6874
],
6975

7076
/*

src/Console/StartWebSocketServer.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
use React\Socket\Connector;
66
use Clue\React\Buzz\Browser;
77
use Illuminate\Console\Command;
8+
use React\Dns\Config\Config as DnsConfig;
89
use React\EventLoop\Factory as LoopFactory;
10+
use React\Dns\Resolver\Factory as DnsFactory;
11+
use React\Dns\Resolver\Resolver as ReactDnsResolver;
912
use BeyondCode\LaravelWebSockets\Statistics\DnsResolver;
1013
use BeyondCode\LaravelWebSockets\Facades\StatisticsLogger;
1114
use BeyondCode\LaravelWebSockets\Facades\WebSocketsRouter;
@@ -47,7 +50,7 @@ public function handle()
4750
protected function configureStatisticsLogger()
4851
{
4952
$connector = new Connector($this->loop, [
50-
'dns' => new DnsResolver(),
53+
'dns' => $this->getDnsResolver(),
5154
'tls' => [
5255
'verify_peer' => config('app.env') === 'production',
5356
'verify_peer_name' => config('app.env') === 'production',
@@ -123,4 +126,20 @@ protected function startWebSocketServer()
123126
->createServer()
124127
->run();
125128
}
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+
}
126145
}

0 commit comments

Comments
 (0)