danog/dns-over-https
Async DNS-over-HTTPS resolution for Amp.
Maintainers
1.0.1
2024-12-02 16:42 UTC
Requires
- php: >=8.1
- ext-filter: *
- ext-json: *
- amphp/amp: ^3
- amphp/cache: ^2
- amphp/dns: ^2
- amphp/http-client: ^5
- amphp/parser: ^1
- amphp/socket: ^2
- danog/libdns-json: ^0.2
- daverandom/libdns: ^2.0.1
Requires (Dev)
- amphp/php-cs-fixer-config: ^2
- amphp/phpunit-util: ^3
- phpunit/phpunit: ^9
- vimeo/psalm: dev-master
Suggests
None
Provides
None
Conflicts
None
Replaces
None
MIT 142b8d439e7a582d66b13d9f1119820dd3110884
- Daniil Gentili <daniil.woop@daniil.it>
- Chris Wright <addr.woop@daverandom.com>
- Daniel Lowrey <rdlowrey.woop@php.net>
- Bob Weinand <bobwei9.woop@hotmail.com>
- Niklas Keller <me.woop@kelunik.com>
- Aaron Piotrowski <aaron.woop@trowski.com>
This package is auto-updated.
Last update: 2026-06-29 01:59:41 UTC
README
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);
