Option to resolve DNS for the statistics endpoint (#31)

This commit is contained in:
Alex Bouma 2018-12-10 10:31:19 +01:00 committed by Marcel Pociot
parent efbeb18995
commit db6d794fd5
2 changed files with 26 additions and 1 deletions

View File

@ -65,6 +65,12 @@ return [
* the number of days specified here will be deleted. * the number of days specified here will be deleted.
*/ */
'delete_statistics_older_than_days' => 60, 'delete_statistics_older_than_days' => 60,
/*
* Use an DNS resolver to make the requests to the statistics logger
* default is to resolve everything to 127.0.0.1.
*/
'perform_dns_lookup' => false,
], ],
/* /*

View File

@ -5,7 +5,10 @@ namespace BeyondCode\LaravelWebSockets\Console;
use React\Socket\Connector; use React\Socket\Connector;
use Clue\React\Buzz\Browser; use Clue\React\Buzz\Browser;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use React\Dns\Config\Config as DnsConfig;
use React\EventLoop\Factory as LoopFactory; use React\EventLoop\Factory as LoopFactory;
use React\Dns\Resolver\Factory as DnsFactory;
use React\Dns\Resolver\Resolver as ReactDnsResolver;
use BeyondCode\LaravelWebSockets\Statistics\DnsResolver; use BeyondCode\LaravelWebSockets\Statistics\DnsResolver;
use BeyondCode\LaravelWebSockets\Facades\StatisticsLogger; use BeyondCode\LaravelWebSockets\Facades\StatisticsLogger;
use BeyondCode\LaravelWebSockets\Facades\WebSocketsRouter; use BeyondCode\LaravelWebSockets\Facades\WebSocketsRouter;
@ -47,7 +50,7 @@ class StartWebSocketServer extends Command
protected function configureStatisticsLogger() protected function configureStatisticsLogger()
{ {
$connector = new Connector($this->loop, [ $connector = new Connector($this->loop, [
'dns' => new DnsResolver(), 'dns' => $this->getDnsResolver(),
'tls' => [ 'tls' => [
'verify_peer' => config('app.env') === 'production', 'verify_peer' => config('app.env') === 'production',
'verify_peer_name' => config('app.env') === 'production', 'verify_peer_name' => config('app.env') === 'production',
@ -123,4 +126,20 @@ class StartWebSocketServer extends Command
->createServer() ->createServer()
->run(); ->run();
} }
protected function getDnsResolver(): ReactDnsResolver
{
if (! config('websockets.statistics.perform_dns_lookup')) {
return new DnsResolver;
}
$dnsConfig = DnsConfig::loadSystemConfigBlocking();
return (new DnsFactory)->createCached(
$dnsConfig->nameservers
? reset($dnsConfig->nameservers)
: '1.1.1.1',
$this->loop
);
}
} }