mirror of
https://github.com/danog/dns-over-https.git
synced 2024-11-30 04:19:11 +01:00
.github/workflows | ||
docs | ||
examples | ||
lib | ||
test | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.php-cs-fixer.dist.php | ||
composer.json | ||
CONTRIBUTING.md | ||
LICENSE | ||
Makefile | ||
phpunit.xml.dist | ||
psalm-baseline.xml | ||
psalm.xml | ||
README.md |
dns
danog/dns-over-https
provides asynchronous and secure DNS-over-HTTPS name resolution for Amp.
Supports RFC 8484 POST and GET syntaxes as well as Google's proprietary JSON DNS format.
Supports passing custom headers for domain fronting with google DNS.
Installation
composer require danog/dns-over-https
Example
<?php
require __DIR__ . '/examples/_bootstrap.php';
use Amp\DoH;
use Amp\Dns;
use Amp\Dns\DnsRecord;
use function Amp\Future\awaitFirst;
// Set default resolver to DNS-over-HTTPS resolver
$DohConfig = new DoH\DoHConfig([new DoH\DoHNameserver('https://mozilla.cloudflare-dns.com/dns-query')]); // Defaults to DoH\DoHNameserverType::RFC8484_POST
Dns\dnsResolver(new DoH\Rfc8484StubDoHResolver($DohConfig));
$githubIpv4 = Dns\resolve("github.com", DnsRecord::A);
pretty_print_records("github.com", $githubIpv4);
$googleIpv4 = \Amp\async(fn () => Amp\Dns\resolve("google.com", DnsRecord::A));
$googleIpv6 = \Amp\async(fn () => Amp\Dns\resolve("google.com", DnsRecord::AAAA));
$firstGoogleResult = awaitFirst([$googleIpv4, $googleIpv6]);
pretty_print_records("google.com", $firstGoogleResult);
$combinedGoogleResult = Amp\Dns\resolve("google.com");
pretty_print_records("google.com", $combinedGoogleResult);
$googleMx = Amp\Dns\query("google.com", DnsRecord::MX);
pretty_print_records("google.com", $googleMx);
$firstGoogleResult = awaitFirst([$googleIpv4, $googleIpv6]);
pretty_print_records("google.com", $firstGoogleResult);
$combinedGoogleResult = Amp\Dns\resolve("google.com");
pretty_print_records("google.com", $combinedGoogleResult);
$googleMx = Amp\Dns\query("google.com", DnsRecord::MX);
pretty_print_records("google.com", $googleMx);