Go to file
2022-12-10 17:58:11 +01:00
.github/workflows Update CI 2022-12-10 17:58:11 +01:00
docs Cleanup 2022-10-29 20:44:35 +02:00
examples Cleanup 2022-10-29 20:44:35 +02:00
lib Update 2022-12-05 22:14:50 +01:00
test Update 2022-12-05 22:14:50 +01:00
.gitattributes First commit 2019-06-10 19:32:28 +02:00
.gitignore Update 2022-10-29 20:45:00 +02:00
.gitmodules First commit 2019-06-10 19:32:28 +02:00
.php-cs-fixer.dist.php Cleanup 2022-10-29 20:44:35 +02:00
composer.json Update 2022-12-05 22:14:50 +01:00
CONTRIBUTING.md First commit 2019-06-10 19:32:28 +02:00
LICENSE First commit 2019-06-10 19:32:28 +02:00
Makefile First commit 2019-06-10 19:32:28 +02:00
phpunit.xml.dist Cleanup 2022-10-29 20:44:35 +02:00
psalm.xml Backwards compatibility 2022-10-30 20:47:30 +01:00
README.md Cleanup 2022-10-29 20:44:35 +02:00

dns

License

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\Loop;

// Set default resolver to DNS-over-HTTPS resolver
$DohConfig = new DoH\DoHConfig([new DoH\Nameserver('https://mozilla.cloudflare-dns.com/dns-query')]); // Defaults to DoH\NameserverType::RFC8484_POST
Dns\resolver(new DoH\Rfc8484StubResolver($DohConfig));

$githubIpv4 = Dns\resolve("github.com", Dns\Record::A);
pretty_print_records("github.com", $githubIpv4);

$googleIpv4 = \Amp\async(fn () => Amp\Dns\resolve("google.com", Dns\Record::A));
$googleIpv6 = \Amp\async(fn () => Amp\Dns\resolve("google.com", Dns\Record::AAAA));

$firstGoogleResult = Amp\awaitAll([$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", Amp\Dns\Record::MX);
pretty_print_records("google.com", $googleMx);