dns: add resolveAny support · nodejs/node@30bc9dc
@@ -210,6 +210,7 @@ records. The type and structure of individual results varies based on `rrtype`:
210210| `'SOA'` | start of authority records | {Object} | [`dns.resolveSoa()`][] |
211211| `'SRV'` | service records | {Object} | [`dns.resolveSrv()`][] |
212212| `'TXT'` | text records | {string} | [`dns.resolveTxt()`][] |
213+| `'ANY'` | any records | {Object} | [`dns.resolveAny()`][] |
213214214215On error, `err` is an [`Error`][] object, where `err.code` is one of the
215216[DNS error codes](#dns_error_codes).
@@ -430,6 +431,51 @@ is a two-dimensional array of the text records available for `hostname` (e.g.,
430431one record. Depending on the use case, these could be either joined together or
431432treated separately.
432433434+## dns.resolveAny(hostname, callback)
435+436+- `hostname` {string}
437+- `callback` {Function}
438+- `err` {Error}
439+- `ret` {Object[][]}
440+441+Uses the DNS protocol to resolve all records (also known as `ANY` or `*` query).
442+The `ret` argument passed to the `callback` function will be an array containing
443+various types of records. Each object has a property `type` that indicates the
444+type of the current record. And depending on the `type`, additional properties
445+will be present on the object:
446+447+| Type | Properties |
448+|------|------------|
449+| `"A"` | `address` / `ttl` |
450+| `"AAAA"` | `address` / `ttl` |
451+| `"CNAME"` | `value` |
452+| `"MX"` | Refer to [`dns.resolveMx()`][] |
453+| `"NAPTR"` | Refer to [`dns.resolveNaptr()`][] |
454+| `"NS"` | `value` |
455+| `"PTR"` | `value` |
456+| `"SOA"` | Refer to [`dns.resolveSoa()`][] |
457+| `"SRV"` | Refer to [`dns.resolveSrv()`][] |
458+| `"TXT"` | This type of record contains an array property called `entries` which refers to [`dns.resolveTxt()`][], eg. `{ entries: ['...'], type: 'TXT' }` |
459+460+Here is a example of the `ret` object passed to the callback:
461+462+<!-- eslint-disable -->
463+```js
464+[ { type: 'A', address: '127.0.0.1', ttl: 299 },
465+ { type: 'CNAME', value: 'example.com' },
466+ { type: 'MX', exchange: 'alt4.aspmx.l.example.com', priority: 50 },
467+ { type: 'NS', value: 'ns1.example.com', type: 'NS' },
468+ { type: 'TXT', entries: [ 'v=spf1 include:_spf.example.com ~all' ] },
469+ { type: 'SOA',
470+ nsname: 'ns1.example.com',
471+ hostmaster: 'admin.example.com',
472+ serial: 156696742,
473+ refresh: 900,
474+ retry: 900,
475+ expire: 1800,
476+ minttl: 60 } ]
477+```
478+433479## dns.reverse(ip, callback)
434480<!-- YAML
435481added: v0.1.16
@@ -554,6 +600,7 @@ uses. For instance, _they do not use the configuration from `/etc/hosts`_.
554600[`dns.resolveSoa()`]: #dns_dns_resolvesoa_hostname_callback
555601[`dns.resolveSrv()`]: #dns_dns_resolvesrv_hostname_callback
556602[`dns.resolveTxt()`]: #dns_dns_resolvetxt_hostname_callback
603+[`dns.resolveAny()`]: #dns_dns_resolveany_hostname_callback
557604[DNS error codes]: #dns_error_codes
558605[Implementation considerations section]: #dns_implementation_considerations
559606[supported `getaddrinfo` flags]: #dns_supported_getaddrinfo_flags