1
0
mirror of https://github.com/danog/dns.git synced 2024-11-26 20:14:51 +01:00

Remove TYPE_ prefix for record constants

This commit is contained in:
Niklas Keller 2017-06-22 20:08:27 +02:00
parent d7b32251d8
commit 3c8412b4a7
6 changed files with 75 additions and 78 deletions

View File

@ -22,11 +22,11 @@ require __DIR__ . '/vendor/autoload.php';
use Amp\Loop;
Loop::run(function () {
$githubIpv4 = (yield Amp\Dns\resolve("github.com", $options = ["types" => Amp\Dns\Record::TYPE_A]));
$githubIpv4 = (yield Amp\Dns\resolve("github.com", $options = ["types" => Amp\Dns\Record::A]));
var_dump($githubIpv4);
$googleIpv4 = Amp\Dns\resolve("google.com", $options = ["types" => Amp\Dns\Record::TYPE_A]);
$googleIpv6 = Amp\Dns\resolve("google.com", $options = ["types" => Amp\Dns\Record::TYPE_AAAA]);
$googleIpv4 = Amp\Dns\resolve("google.com", $options = ["types" => Amp\Dns\Record::A]);
$googleIpv6 = Amp\Dns\resolve("google.com", $options = ["types" => Amp\Dns\Record::AAAA]);
$firstGoogleResult = (yield Amp\Promise\first([$googleIpv4, $googleIpv6]));
var_dump($firstGoogleResult);
@ -34,7 +34,7 @@ Loop::run(function () {
$combinedGoogleResult = (yield Amp\Dns\resolve("google.com"));
var_dump($combinedGoogleResult);
$googleMx = (yield Amp\Dns\query("google.com", Amp\Dns\Record::TYPE_MX));
$googleMx = (yield Amp\Dns\query("google.com", Amp\Dns\Record::MX));
var_dump($googleMx);
});
```

View File

@ -76,17 +76,16 @@ class DefaultResolver implements Resolver {
}
/** @inheritdoc */
public function resolve(string $name, array $options = []): Promise {
public function resolve(string $name): Promise {
if (!$inAddr = @\inet_pton($name)) {
try {
$name = normalizeDnsName($name);
$types = empty($options["types"]) ? [Record::TYPE_A, Record::TYPE_AAAA] : (array) $options["types"];
return call(function () use ($name, $types, $options) {
$result = yield from $this->recurseWithHosts($name, $types, $options);
return call(function () use ($name) {
$result = yield from $this->recurseWithHosts($name, [Record::A, Record::AAAA], []);
return array_map(function ($record) {
return new Record($record[0], $record[1], $record[2]);
}, $this->flattenResult($result, $types));
}, $this->flattenResult($result, [Record::A, Record::AAAA]));
});
} catch (InvalidNameError $e) {
return new Failure(new ResolutionException("Cannot resolve invalid host name ({$name})", 0, $e));
@ -94,12 +93,10 @@ class DefaultResolver implements Resolver {
}
// It's already a valid IP, don't resolve, immediately return
return new Success([new Record($name, isset($inAddr[4]) ? Record::TYPE_AAAA : Record::TYPE_A, $ttl = null)]);
return new Success([new Record($name, isset($inAddr[4]) ? Record::AAAA : Record::A, $ttl = null)]);
}
/**
* {@inheritdoc}
*/
/** @inheritdoc */
public function query(string $name, $type, array $options = []): Promise {
$types = (array) $type;
@ -133,7 +130,7 @@ class DefaultResolver implements Resolver {
return $promise;
}
// flatten $result while preserving order according to $types (append unspecified types for e.g. Record::TYPE_ALL queries)
// flatten $result while preserving order according to $types (append unspecified types for e.g. Record::ALL queries)
private function flattenResult(array $result, array $types) {
$retval = [];
foreach ($types as $type) {
@ -155,11 +152,11 @@ class DefaultResolver implements Resolver {
$hosts = $config->getKnownHosts();
}
$result = [];
if (\in_array(Record::TYPE_A, $types) && isset($hosts[Record::TYPE_A][$name])) {
$result[Record::TYPE_A] = [[$hosts[Record::TYPE_A][$name], Record::TYPE_A, $ttl = null]];
if (\in_array(Record::A, $types) && isset($hosts[Record::A][$name])) {
$result[Record::A] = [[$hosts[Record::A][$name], Record::A, $ttl = null]];
}
if (\in_array(Record::TYPE_AAAA, $types) && isset($hosts[Record::TYPE_AAAA][$name])) {
$result[Record::TYPE_AAAA] = [[$hosts[Record::TYPE_AAAA][$name], Record::TYPE_AAAA, $ttl = null]];
if (\in_array(Record::AAAA, $types) && isset($hosts[Record::AAAA][$name])) {
$result[Record::AAAA] = [[$hosts[Record::AAAA][$name], Record::AAAA, $ttl = null]];
}
if ($result) {
return $result;
@ -170,21 +167,21 @@ class DefaultResolver implements Resolver {
}
private function doRecurse($name, array $types, $options) {
if (\array_intersect($types, [Record::TYPE_CNAME, Record::TYPE_DNAME])) {
if (\array_intersect($types, [Record::CNAME, Record::DNAME])) {
throw new ResolutionException("Cannot use recursion for CNAME and DNAME records");
}
$types = \array_merge($types, [Record::TYPE_CNAME, Record::TYPE_DNAME]);
$types = \array_merge($types, [Record::CNAME, Record::DNAME]);
$lookupName = $name;
for ($i = 0; $i < 30; $i++) {
$result = yield from $this->doResolve($lookupName, $types, $options);
if (\count($result) > isset($result[Record::TYPE_CNAME]) + isset($result[Record::TYPE_DNAME])) {
unset($result[Record::TYPE_CNAME], $result[Record::TYPE_DNAME]);
if (\count($result) > isset($result[Record::CNAME]) + isset($result[Record::DNAME])) {
unset($result[Record::CNAME], $result[Record::DNAME]);
return $result;
}
// @TODO check for potentially using recursion and iterate over *all* CNAME/DNAME
// @FIXME check higher level for CNAME?
foreach ([Record::TYPE_CNAME, Record::TYPE_DNAME] as $type) {
foreach ([Record::CNAME, Record::DNAME] as $type) {
if (isset($result[$type])) {
list($lookupName) = $result[$type][0];
}

View File

@ -41,9 +41,9 @@ class HostLoader {
if (!($ip = @\inet_pton($parts[0]))) {
continue;
} elseif (isset($ip[4])) {
$key = Record::TYPE_AAAA;
$key = Record::AAAA;
} else {
$key = Record::TYPE_A;
$key = Record::A;
}
for ($i = 1, $l = \count($parts); $i < $l; $i++) {
@ -57,13 +57,13 @@ class HostLoader {
}
// Windows does not include localhost in its host file. Fetch it from the system instead
if (!isset($data[Record::TYPE_A]["localhost"]) && !isset($data[Record::TYPE_AAAA]["localhost"])) {
if (!isset($data[Record::A]["localhost"]) && !isset($data[Record::AAAA]["localhost"])) {
// PHP currently provides no way to **resolve** IPv6 hostnames (not even with fallback)
$local = \gethostbyname("localhost");
if ($local !== "localhost") {
$data[Record::TYPE_A]["localhost"] = $local;
$data[Record::A]["localhost"] = $local;
} else {
$data[Record::TYPE_AAAA]["localhost"] = "::1";
$data[Record::AAAA]["localhost"] = "::1";
}
}

View File

@ -6,54 +6,54 @@ use LibDNS\Records\ResourceQTypes;
use LibDNS\Records\ResourceTypes;
class Record {
const TYPE_A = ResourceTypes::A;
const TYPE_AAAA = ResourceTypes::AAAA;
const TYPE_AFSDB = ResourceTypes::AFSDB;
// const TYPE_APL = ResourceTypes::APL;
const TYPE_CAA = ResourceTypes::CAA;
const TYPE_CERT = ResourceTypes::CERT;
const TYPE_CNAME = ResourceTypes::CNAME;
const TYPE_DHCID = ResourceTypes::DHCID;
const TYPE_DLV = ResourceTypes::DLV;
const TYPE_DNAME = ResourceTypes::DNAME;
const TYPE_DNSKEY = ResourceTypes::DNSKEY;
const TYPE_DS = ResourceTypes::DS;
const TYPE_HINFO = ResourceTypes::HINFO;
// const TYPE_HIP = ResourceTypes::HIP;
// const TYPE_IPSECKEY = ResourceTypes::IPSECKEY;
const TYPE_KEY = ResourceTypes::KEY;
const TYPE_KX = ResourceTypes::KX;
const TYPE_ISDN = ResourceTypes::ISDN;
const TYPE_LOC = ResourceTypes::LOC;
const TYPE_MB = ResourceTypes::MB;
const TYPE_MD = ResourceTypes::MD;
const TYPE_MF = ResourceTypes::MF;
const TYPE_MG = ResourceTypes::MG;
const TYPE_MINFO = ResourceTypes::MINFO;
const TYPE_MR = ResourceTypes::MR;
const TYPE_MX = ResourceTypes::MX;
const TYPE_NAPTR = ResourceTypes::NAPTR;
const TYPE_NS = ResourceTypes::NS;
// const TYPE_NSEC = ResourceTypes::NSEC;
// const TYPE_NSEC3 = ResourceTypes::NSEC3;
// const TYPE_NSEC3PARAM = ResourceTypes::NSEC3PARAM;
const TYPE_NULL = ResourceTypes::NULL;
const TYPE_PTR = ResourceTypes::PTR;
const TYPE_RP = ResourceTypes::RP;
// const TYPE_RRSIG = ResourceTypes::RRSIG;
const TYPE_RT = ResourceTypes::RT;
const TYPE_SIG = ResourceTypes::SIG;
const TYPE_SOA = ResourceTypes::SOA;
const TYPE_SPF = ResourceTypes::SPF;
const TYPE_SRV = ResourceTypes::SRV;
const TYPE_TXT = ResourceTypes::TXT;
const TYPE_WKS = ResourceTypes::WKS;
const TYPE_X25 = ResourceTypes::X25;
const A = ResourceTypes::A;
const AAAA = ResourceTypes::AAAA;
const AFSDB = ResourceTypes::AFSDB;
// const APL = ResourceTypes::APL;
const CAA = ResourceTypes::CAA;
const CERT = ResourceTypes::CERT;
const CNAME = ResourceTypes::CNAME;
const DHCID = ResourceTypes::DHCID;
const DLV = ResourceTypes::DLV;
const DNAME = ResourceTypes::DNAME;
const DNSKEY = ResourceTypes::DNSKEY;
const DS = ResourceTypes::DS;
const HINFO = ResourceTypes::HINFO;
// const HIP = ResourceTypes::HIP;
// const IPSECKEY = ResourceTypes::IPSECKEY;
const KEY = ResourceTypes::KEY;
const KX = ResourceTypes::KX;
const ISDN = ResourceTypes::ISDN;
const LOC = ResourceTypes::LOC;
const MB = ResourceTypes::MB;
const MD = ResourceTypes::MD;
const MF = ResourceTypes::MF;
const MG = ResourceTypes::MG;
const MINFO = ResourceTypes::MINFO;
const MR = ResourceTypes::MR;
const MX = ResourceTypes::MX;
const NAPTR = ResourceTypes::NAPTR;
const NS = ResourceTypes::NS;
// const NSEC = ResourceTypes::NSEC;
// const NSEC3 = ResourceTypes::NSEC3;
// const NSEC3PARAM = ResourceTypes::NSEC3PARAM;
const NULL = ResourceTypes::NULL;
const PTR = ResourceTypes::PTR;
const RP = ResourceTypes::RP;
// const RRSIG = ResourceTypes::RRSIG;
const RT = ResourceTypes::RT;
const SIG = ResourceTypes::SIG;
const SOA = ResourceTypes::SOA;
const SPF = ResourceTypes::SPF;
const SRV = ResourceTypes::SRV;
const TXT = ResourceTypes::TXT;
const WKS = ResourceTypes::WKS;
const X25 = ResourceTypes::X25;
const TYPE_AXFR = ResourceQTypes::AXFR;
const TYPE_MAILB = ResourceQTypes::MAILB;
const TYPE_MAILA = ResourceQTypes::MAILA;
const TYPE_ALL = ResourceQTypes::ALL;
const AXFR = ResourceQTypes::AXFR;
const MAILB = ResourceQTypes::MAILB;
const MAILA = ResourceQTypes::MAILA;
const ALL = ResourceQTypes::ALL;
private $value;
private $type;

View File

@ -8,7 +8,7 @@ interface Resolver {
/**
* @see \Amp\Dns\resolve
*/
public function resolve(string $name, array $options = []): Promise;
public function resolve(string $name): Promise;
/**
* @see \Amp\Dns\query

View File

@ -48,12 +48,12 @@ class IntegrationTest extends TestCase {
public function testPtrLookup() {
Loop::run(function () {
$result = yield Dns\query("8.8.4.4", Record::TYPE_PTR);
$result = yield Dns\query("8.8.4.4", Record::PTR);
/** @var Record $record */
$record = $result[0];
$this->assertSame("google-public-dns-b.google.com", $record->getValue());
$this->assertSame(Record::TYPE_PTR, $record->getType());
$this->assertSame(Record::PTR, $record->getType());
});
}