cf-doh
Version:
Typed Cloudflare DNS Over HTTP Resolver
178 lines (177 loc) • 8.46 kB
TypeScript
export declare enum DOHStatus {
NoError = 0,// No Error [RFC1035]
FormErr = 1,// Format Error [RFC1035]
ServFail = 2,// Server Failure [RFC1035]
NXDomain = 3,// Non-Existent Domain [RFC1035]
NotImp = 4,// Not Implemented [RFC1035]
Refused = 5,// Query Refused [RFC1035]
YXDomain = 6,// Name Exists when it should not [RFC2136][RFC6672]
YXRRSet = 7,// RR Set Exists when it should not [RFC2136]
NXRRSet = 8,// RR Set that should exist does not [RFC2136]
NotAuth = 9,// Server Not Authoritative for zone [RFC2136]
NotZone = 10,// Name not contained in zone [RFC2136]
DSOTYPENI = 11,// DSO-TYPE Not Implemented [RFC8490]
BADVERS = 16,// Bad OPT Version [RFC6891]
BADSIG = 16,// TSIG Signature Failure [RFC8945]
BADKEY = 17,// Key not recognized [RFC8945]
BADTIME = 18,// Signature out of time window [RFC8945]
BADMODE = 19,// Bad TKEY Mode [RFC2930]
BADNAME = 20,// Duplicate key name [RFC2930]
BADALG = 21,// Algorithm not supported [RFC2930]
BADTRUNC = 22,// Bad Truncation [RFC8945]
BADCOOKIE = 23
}
export declare const DOHStatusMessage: {
0: string;
1: string;
2: string;
3: string;
4: string;
5: string;
6: string;
7: string;
8: string;
9: string;
10: string;
11: string;
16: string;
17: string;
18: string;
19: string;
20: string;
21: string;
22: string;
23: string;
};
export declare enum DNSRecordType {
Reserved = 0,// [RFC6895] 2021-03-08
A = 1,// a host address [RFC1035]
NS = 2,// an authoritative name server [RFC1035]
MD = 3,// a mail destination (OBSOLETE - use MX) [RFC1035]
MF = 4,// a mail forwarder (OBSOLETE - use MX) [RFC1035]
CNAME = 5,// the canonical name for an alias [RFC1035]
SOA = 6,// marks the start of a zone of authority [RFC1035]
MB = 7,// a mailbox domain name (EXPERIMENTAL) [RFC1035]
MG = 8,// a mail group member (EXPERIMENTAL) [RFC1035]
MR = 9,// a mail rename domain name (EXPERIMENTAL) [RFC1035]
NULL = 10,// a null RR (EXPERIMENTAL) [RFC1035]
WKS = 11,// a well known service description [RFC1035]
PTR = 12,// a domain name pointer [RFC1035]
HINFO = 13,// host information [RFC1035]
MINFO = 14,// mailbox or mail list information [RFC1035]
MX = 15,// mail exchange [RFC1035]
TXT = 16,// text strings [RFC1035]
RP = 17,// for Responsible Person [RFC1183]
AFSDB = 18,// for AFS Data Base location [RFC1183][RFC5864]
X25 = 19,// for X.25 PSDN address [RFC1183]
ISDN = 20,// for ISDN address [RFC1183]
RT = 21,// for Route Through [RFC1183]
NSAP = 22,// for NSAP address, NSAP style A record (DEPRECATED) [RFC1706][status-change-int-tlds-to-historic]
"NSAP-PTR" = 23,// for domain name pointer, NSAP style (DEPRECATED) [RFC1706][status-change-int-tlds-to-historic]
SIG = 24,// for security signature [RFC2536][RFC2931][RFC3110][RFC4034]
KEY = 25,// for security key [RFC2536][RFC2539][RFC3110][RFC4034]
PX = 26,// X.400 mail mapping information [RFC2163]
GPOS = 27,// Geographical Position [RFC1712]
AAAA = 28,// IP6 Address [RFC3596]
LOC = 29,// Location Information [RFC1876]
NXT = 30,// Next Domain (OBSOLETE) [RFC2535][RFC3755]
EID = 31,// Endpoint Identifier [Michael_Patton][http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt] 1995-06
NIMLOC = 32,// Nimrod Locator [1][Michael_Patton][http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt] 1995-06
SRV = 33,// Server Selection [1][RFC2782]
ATMA = 34,// ATM Address [ ATM Forum Technical Committee, "ATM Name System, V2.0", Doc ID: AF-DANS-0152.000, July 2000. Available from and held in escrow by IANA.]
NAPTR = 35,// Naming Authority Pointer [RFC3403]
KX = 36,// Key Exchanger [RFC2230]
CERT = 37,// CERT [RFC4398]
A6 = 38,// A6 (OBSOLETE - use AAAA) [RFC2874][RFC3226][RFC6563]
DNAME = 39,// DNAME [RFC6672]
SINK = 40,// SINK [Donald_E_Eastlake][draft-eastlake-kitchen-sink] 1997-11
OPT = 41,// OPT [RFC3225][RFC6891]
APL = 42,// APL [RFC3123]
DS = 43,// Delegation Signer [RFC4034]
SSHFP = 44,// SSH Key Fingerprint [RFC4255]
IPSECKEY = 45,// IPSECKEY [RFC4025]
RRSIG = 46,// RRSIG [RFC4034]
NSEC = 47,// NSEC [RFC4034][RFC9077]
DNSKEY = 48,// DNSKEY [RFC4034]
DHCID = 49,// DHCID [RFC4701]
NSEC3 = 50,// NSEC3 [RFC5155][RFC9077]
NSEC3PARAM = 51,// NSEC3PARAM [RFC5155]
TLSA = 52,// TLSA [RFC6698]
SMIMEA = 53,// S/MIME cert association [RFC8162] SMIMEA/smimea-completed-template 2015-12-01
HIP = 55,// Host Identity Protocol [RFC8005]
NINFO = 56,// NINFO [Jim_Reid] NINFO/ninfo-completed-template 2008-01-21
RKEY = 57,// RKEY [Jim_Reid] RKEY/rkey-completed-template 2008-01-21
TALINK = 58,// Trust Anchor LINK [Wouter_Wijngaards] TALINK/talink-completed-template 2010-02-17
CDS = 59,// Child DS [RFC7344] CDS/cds-completed-template 2011-06-06
CDNSKEY = 60,// DNSKEY(s) the Child wants reflected in DS [RFC7344] 2014-06-16
OPENPGPKEY = 61,// OpenPGP Key [RFC7929] OPENPGPKEY/openpgpkey-completed-template 2014-08-12
CSYNC = 62,// Child-To-Parent Synchronization [RFC7477] 2015-01-27
ZONEMD = 63,// Message Digest Over Zone Data [RFC8976] ZONEMD/zonemd-completed-template 2018-12-12
SVCB = 64,// General-purpose service binding [RFC9460] SVCB/svcb-completed-template 2020-06-30
HTTPS = 65,// SVCB-compatible type for use with HTTP [RFC9460] HTTPS/https-completed-template 2020-06-30
SPF = 99,// [RFC7208]
UINFO = 100,// [IANA-Reserved]
UID = 101,// [IANA-Reserved]
GID = 102,// [IANA-Reserved]
UNSPEC = 103,// [IANA-Reserved]
NID = 104,// [RFC6742] ILNP/nid-completed-template
L32 = 105,// [RFC6742] ILNP/l32-completed-template
L64 = 106,// [RFC6742] ILNP/l64-completed-template
LP = 107,// [RFC6742] ILNP/lp-completed-template
EUI48 = 108,// an EUI-48 address [RFC7043] EUI48/eui48-completed-template 2013-03-27
EUI64 = 109,// an EUI-64 address [RFC7043] EUI64/eui64-completed-template 2013-03-27
TKEY = 249,// Transaction Key [RFC2930]
TSIG = 250,// Transaction Signature [RFC8945]
IXFR = 251,// incremental transfer [RFC1995]
AXFR = 252,// transfer of an entire zone [RFC1035][RFC5936]
MAILB = 253,// mailbox-related RRs (MB, MG or MR) [RFC1035]
MAILA = 254,// mail agent RRs (OBSOLETE - see MX) [RFC1035]
ANY = 255,// A request for some or all records the server has available [RFC1035][RFC6895][RFC8482]
URI = 256,// URI [RFC7553] URI/uri-completed-template 2011-02-22
CAA = 257,// Certification Authority Restriction [RFC8659] CAA/caa-completed-template 2011-04-07
AVC = 258,// Application Visibility and Control [Wolfgang_Riedel] AVC/avc-completed-template 2016-02-26
DOA = 259,// Digital Object Architecture [draft-durand-doa-over-dns] DOA/doa-completed-template 2017-08-30
AMTRELAY = 260,// Automatic Multicast Tunneling Relay [RFC8777] AMTRELAY/amtrelay-completed-template 2019-02-06
RESINFO = 261,// Resolver Information as Key/Value Pairs [draft-ietf-add-resolver-info-06] RESINFO/resinfo-completed-template 2023-11-02
TA = 32768,// DNSSEC Trust Authorities [Sam_Weiler][http://cameo.library.cmu.edu/][ Deploying DNSSEC Without a Signed Root. Technical Report 1999-19, Information Networking Institute, Carnegie Mellon University, April 2004.] 2005-12-13
DLV = 32769
}
export type DOHResponse = {
Status: DOHStatus;
TC: boolean;
RD: boolean;
RA: boolean;
AD: boolean;
CD: boolean;
Question: {
name: string;
type: DNSRecordType;
}[];
Answer?: {
name: string;
type: DNSRecordType;
TTL: number;
data: string;
}[];
Authority?: {
name: string;
type: DNSRecordType;
TTL: number;
data: string;
}[];
Additional?: {
name: string;
type: DNSRecordType;
TTL: number;
data: string;
}[];
Comment?: string[];
};
export declare class DOHError {
response: DOHResponse;
message: string;
constructor(response: DOHResponse);
}
export declare const queryDNSRecords: (hostname: string, recordType: DNSRecordType | keyof typeof DNSRecordType) => Promise<DOHResponse>;
export declare const queryDNS: (hostname: string, recordType: DNSRecordType | keyof typeof DNSRecordType) => Promise<string[]>;
export declare const setFetch: (fetchImpl: typeof fetch) => void;