Go to file
2019-06-18 12:54:24 +02:00
docs Improve docs 2019-06-12 13:56:35 +02:00
examples Provide fallback 2019-06-12 13:48:57 +02:00
lib PHPCS fixes 2019-06-18 12:54:24 +02:00
test Make JSON parser a separate dependency 2019-06-12 14:47:23 +02:00
.gitattributes First commit 2019-06-10 19:32:28 +02:00
.gitignore Finalize API 2019-06-10 21:04:10 +02:00
.gitmodules First commit 2019-06-10 19:32:28 +02:00
.php_cs.dist First commit 2019-06-10 19:32:28 +02:00
.travis.yml First commit 2019-06-10 19:32:28 +02:00
appveyor.yml First commit 2019-06-10 19:32:28 +02:00
composer.json Make JSON parser a separate dependency 2019-06-12 14:47:23 +02: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 First commit 2019-06-10 19:32:28 +02:00
README.md Improve docs 2019-06-12 13:56:35 +02:00

dns

Build Status CoverageStatus 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;

Loop::run(function () {
    // 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\Nameserver::RFC8484_POST
    Dns\resolver(new DoH\Rfc8484StubResolver($DohConfig));

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

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

    $firstGoogleResult = yield Amp\Promise\first([$googleIpv4, $googleIpv6]);
    pretty_print_records("google.com", $firstGoogleResult);

    $combinedGoogleResult = yield Amp\Dns\resolve("google.com");
    pretty_print_records("google.com", $combinedGoogleResult);

    $googleMx = yield Amp\Dns\query("google.com", Amp\Dns\Record::MX);
    pretty_print_records("google.com", $googleMx);
});