summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorCraig Morten <cmorten@users.noreply.github.com>2022-05-16 10:20:41 +0100
committerGitHub <noreply@github.com>2022-05-16 11:20:41 +0200
commit10a68a56354b8e5235084fd5eb63b056965f2418 (patch)
tree6aefd326fb6d72befe95c8316832925c947e7ab7 /cli
parenteb5ffab1cbc010424aa1764005f71dcd67525dc1 (diff)
feat(ext/net): add `CAA` DNS record support in Deno.resolveDns() API (#14624)
Diffstat (limited to 'cli')
-rw-r--r--cli/dts/lib.deno.ns.d.ts15
-rw-r--r--cli/tests/testdata/resolve_dns.ts33
-rw-r--r--cli/tests/testdata/resolve_dns.ts.out2
-rw-r--r--cli/tests/testdata/resolve_dns.zone.in5
4 files changed, 41 insertions, 14 deletions
diff --git a/cli/dts/lib.deno.ns.d.ts b/cli/dts/lib.deno.ns.d.ts
index 3777aa56b..019ab240b 100644
--- a/cli/dts/lib.deno.ns.d.ts
+++ b/cli/dts/lib.deno.ns.d.ts
@@ -2953,6 +2953,7 @@ declare namespace Deno {
| "A"
| "AAAA"
| "ANAME"
+ | "CAA"
| "CNAME"
| "MX"
| "NAPTR"
@@ -2974,6 +2975,13 @@ declare namespace Deno {
};
}
+ /** If `resolveDns` is called with "CAA" record type specified, it will return an array of this interface. */
+ export interface CAARecord {
+ critical: boolean;
+ tag: string;
+ value: string;
+ }
+
/** If `resolveDns` is called with "MX" record type specified, it will return an array of this interface. */
export interface MXRecord {
preference: number;
@@ -3017,6 +3025,12 @@ declare namespace Deno {
export function resolveDns(
query: string,
+ recordType: "CAA",
+ options?: ResolveDnsOptions,
+ ): Promise<CAARecord[]>;
+
+ export function resolveDns(
+ query: string,
recordType: "MX",
options?: ResolveDnsOptions,
): Promise<MXRecord[]>;
@@ -3068,6 +3082,7 @@ declare namespace Deno {
options?: ResolveDnsOptions,
): Promise<
| string[]
+ | CAARecord[]
| MXRecord[]
| NAPTRRecord[]
| SOARecord[]
diff --git a/cli/tests/testdata/resolve_dns.ts b/cli/tests/testdata/resolve_dns.ts
index 317828a5e..bde479c9a 100644
--- a/cli/tests/testdata/resolve_dns.ts
+++ b/cli/tests/testdata/resolve_dns.ts
@@ -1,19 +1,21 @@
const nameServer = { nameServer: { ipAddr: "127.0.0.1", port: 4553 } };
-const [a, aaaa, aname, cname, mx, naptr, ns, ptr, soa, srv, txt] = await Promise
- .all([
- Deno.resolveDns("www.example.com", "A", nameServer),
- Deno.resolveDns("www.example.com", "AAAA", nameServer),
- Deno.resolveDns("www.example.com", "ANAME", nameServer),
- Deno.resolveDns("alias.example.com", "CNAME", nameServer),
- Deno.resolveDns("example.com", "MX", nameServer),
- Deno.resolveDns("example.com", "NAPTR", nameServer),
- Deno.resolveDns("example.com", "NS", nameServer),
- Deno.resolveDns("1.2.3.4.IN-ADDR.ARPA.", "PTR", nameServer),
- Deno.resolveDns("example.com", "SOA", nameServer),
- Deno.resolveDns("_service._tcp.example.com", "SRV", nameServer),
- Deno.resolveDns("example.com", "TXT", nameServer),
- ]);
+const [a, aaaa, aname, caa, cname, mx, naptr, ns, ptr, soa, srv, txt] =
+ await Promise
+ .all([
+ Deno.resolveDns("www.example.com", "A", nameServer),
+ Deno.resolveDns("www.example.com", "AAAA", nameServer),
+ Deno.resolveDns("www.example.com", "ANAME", nameServer),
+ Deno.resolveDns("example.com", "CAA", nameServer),
+ Deno.resolveDns("alias.example.com", "CNAME", nameServer),
+ Deno.resolveDns("example.com", "MX", nameServer),
+ Deno.resolveDns("example.com", "NAPTR", nameServer),
+ Deno.resolveDns("example.com", "NS", nameServer),
+ Deno.resolveDns("1.2.3.4.IN-ADDR.ARPA.", "PTR", nameServer),
+ Deno.resolveDns("example.com", "SOA", nameServer),
+ Deno.resolveDns("_service._tcp.example.com", "SRV", nameServer),
+ Deno.resolveDns("example.com", "TXT", nameServer),
+ ]);
console.log("A");
console.log(JSON.stringify(a));
@@ -24,6 +26,9 @@ console.log(JSON.stringify(aaaa));
console.log("ANAME");
console.log(JSON.stringify(aname));
+console.log("CAA");
+console.log(JSON.stringify(caa));
+
console.log("CNAME");
console.log(JSON.stringify(cname));
diff --git a/cli/tests/testdata/resolve_dns.ts.out b/cli/tests/testdata/resolve_dns.ts.out
index 2f4c87c4c..2fe10cb9a 100644
--- a/cli/tests/testdata/resolve_dns.ts.out
+++ b/cli/tests/testdata/resolve_dns.ts.out
@@ -4,6 +4,8 @@ AAAA
["1:2:3:4:5:6:7:8"]
ANAME
["aname.example.com."]
+CAA
+[{"critical":false,"tag":"issue","value":"ca.example.net"},{"critical":false,"tag":"issue","value":"ca2.example.net; account=123456"},{"critical":false,"tag":"issuewild","value":";"},{"critical":false,"tag":"iodef","value":"mailto:security@example.com"},{"critical":true,"tag":"tbs","value":"Unknown"}]
CNAME
["cname.example.com."]
MX
diff --git a/cli/tests/testdata/resolve_dns.zone.in b/cli/tests/testdata/resolve_dns.zone.in
index 456a8d8fb..c351a1de9 100644
--- a/cli/tests/testdata/resolve_dns.zone.in
+++ b/cli/tests/testdata/resolve_dns.zone.in
@@ -4,6 +4,11 @@
600 ; RETRY
3600000; EXPIRE
60) ; MINIMUM
+@ IN CAA 0 issue "ca.example.net"
+@ IN CAA 0 issue "ca2.example.net; account=123456"
+@ IN CAA 0 issuewild ";"
+@ IN CAA 0 iodef "mailto:security@example.com"
+@ IN CAA 128 tbs "Unknown"
NS ns1.ns.com.
NS ns2.ns.com.
NS ns3.ns.com.