@eryx/dns Module
Summary
Functions
dns.proto.writeQuestion(b: BufferBuilder.BufferBuilder, nameOffsets: NameOffsets, question: Question) → ()
dns.proto.writeAnswer(b: BufferBuilder.BufferBuilder, nameOffsets: NameOffsets, answer: Answer) → ()
dns.query.prepareQuery(questions: { Question }, config: { id: number?, opcode: keyof<<typeof>> | number?, recursive: boolean?, authenticData: boolean?, checkingDisabled: boolean?, edns: EdnsConfig? }?) → Message
dns.query.queryUdp(host: string, message: Message, config: { timeout: number?, port: number?, useTcpIfTruncated: boolean? }?) → Message
dns.query.sendUdp(host: string | socket.Socket, message: Message, config: { timeout: number?, port: number? }?) → ()
dns.query.recvUdp(host: string | socket.Socket, config: { timeout: number?, port: number? }?) → Message
dns.query.queryTcp(host: string, message: Message, config: { timeout: number?, port: number? }?) → Message
dns.query.sendTcp(sock: socket.Socket | ssl.SslSocket, message: Message, config: { timeout: number? }?) → ()
dns.query.queryTls(host: string, message: Message, config: { timeout: number?, port: number? }?) → Message
dns.query.zoneTransferAxfr(host: string, zone: string, config: { timeout: number?, port: number?, relativise: boolean? }?) → { Answer }
dns.query.zoneTransferIxfr(host: string, zone: string, serial: number, config: { timeout: number?, port: number?, relativise: boolean? }?) → { Answer }
API Reference
Functions
dns.buildOptAnswer
proto
dns.proto.writeName
dns.proto.parseName
dns.proto.parseName(buf: buffer, offset: number) → (string, number)
dns.proto.writeHeader
dns.proto.parseHeader
dns.proto.writeQuestion
dns.proto.writeQuestion(b: BufferBuilder.BufferBuilder, nameOffsets: NameOffsets, question: Question) → ()
dns.proto.parseQuestion
dns.proto.writeEdnsOptions
dns.proto.parseEdnsOptions
dns.proto.writeAnswer
dns.proto.writeAnswer(b: BufferBuilder.BufferBuilder, nameOffsets: NameOffsets, answer: Answer) → ()
dns.proto.parseAnswer
dns.proto.buildPacket
dns.proto.parsePacket
query
dns.query.prepareQuery
dns.query.prepareQuery(questions: { Question }, config: { id: number?, opcode: keyof<<typeof>> | number?, recursive: boolean?, authenticData: boolean?, checkingDisabled: boolean?, edns: EdnsConfig? }?) → Message
dns.query.queryUdp
dns.query.sendUdp
dns.query.recvUdp
dns.query.queryTcp
dns.query.sendTcp
dns.query.recvTcp
dns.query.queryTls
dns.query.zoneTransferAxfr
dns.query.zoneTransferAxfr(host: string, zone: string, config: { timeout: number?, port: number?, relativise: boolean? }?) → { Answer }
dns.query.zoneTransferIxfr
dns.query.zoneTransferIxfr(host: string, zone: string, serial: number, config: { timeout: number?, port: number?, relativise: boolean? }?) → { Answer }
Types
Header
type Header = {
id: number,
qr: keyof<<typeof>>,
opcode: keyof<<typeof>> | number,
aa: boolean,
tc: boolean,
rd: boolean,
ra: boolean,
ad: boolean,
cd: boolean,
z: number?,
rcode: keyof<<typeof>> | number,
qdcount: number,
ancount: number,
nscount: number,
arcount: number
}
id: number
Exchange identifier
qr: keyof<<typeof>>
Query or response?
opcode: keyof<<typeof>> | number
Kind of query
aa: boolean
(Response only) authoritative answer?
tc: boolean
Truncated?
rd: boolean
Recursion desired
ra: boolean
Recursion available
ad: boolean
Authentic Data. Indicates the response data was authenticated by the resolver.
cd: boolean
Checking Disabled. Requests that DNSSEC signature validation not be performed.
z: number?
Remaining reserved Z bit. Should normally be 0.
rcode: keyof<<typeof>> | number
Response code
qdcount: number
Number of entries in question section
ancount: number
Number of resource records in the answer section
nscount: number
Number of name server resource records in the authority section
arcount: number
Number of resource records in the additional records section
Question
name: string
type: keyof<<typeof>> | number
class: keyof<<typeof>> | number
EdnsOption
code: keyof<<typeof>> | number
data: buffer
RDataAAAA
kind: "AAAA"
RDataMX
kind: "MX"
preference: number
host: string
RDataRRSIG
type RDataRRSIG = {
kind: "RRSIG",
typeCovered: keyof<<typeof>> | number,
algorithm: keyof<<typeof>> | number,
labels: number,
originalTtl: number,
signatureExpiration: number,
signatureInception: number,
keyTag: number,
signerName: string,
signature: buffer
}
kind: "RRSIG"
typeCovered: keyof<<typeof>> | number
algorithm: keyof<<typeof>> | number
labels: number
originalTtl: number
signatureExpiration: number
signatureInception: number
keyTag: number
signerName: string
signature: buffer
RDataDNSKEY
type RDataDNSKEY = {
kind: "DNSKEY",
flags: number,
protocol: keyof<<typeof>> | number,
algorithm: keyof<<typeof>> | number,
publicKey: buffer
}
kind: "DNSKEY"
flags: number
protocol: keyof<<typeof>> | number
algorithm: keyof<<typeof>> | number
publicKey: buffer
RDataDS
type RDataDS = {
kind: "DS",
keyTag: number,
algorithm: keyof<<typeof>> | number,
digestType: keyof<<typeof>> | number,
digest: buffer
}
kind: "DS"
keyTag: number
algorithm: keyof<<typeof>> | number
digestType: keyof<<typeof>> | number
digest: buffer
RDataNSEC
kind: "NSEC"
nextDomain: string
types: { keyof<<typeof>> | number }
RDataNSEC3
type RDataNSEC3 = {
kind: "NSEC3",
hashAlgorithm: keyof<<typeof>> | number,
flags: number,
iterations: number,
salt: buffer,
nextHashedOwnerName: buffer,
types: { keyof<<typeof>> | number }
}
kind: "NSEC3"
hashAlgorithm: keyof<<typeof>> | number
flags: number
iterations: number
salt: buffer
nextHashedOwnerName: buffer
types: { keyof<<typeof>> | number }
RDataNSEC3PARAM
type RDataNSEC3PARAM = {
kind: "NSEC3PARAM",
hashAlgorithm: keyof<<typeof>> | number,
flags: number,
iterations: number,
salt: buffer
}
kind: "NSEC3PARAM"
hashAlgorithm: keyof<<typeof>> | number
flags: number
iterations: number
salt: buffer
RDataOPT
type RDataOPT = {
kind: "OPT",
udpPayloadSize: number,
extendedRcode: keyof<<typeof>> | number,
version: number,
dnssecOk: boolean,
z: number?,
options: { EdnsOption }
}
kind: "OPT"
udpPayloadSize: number
extendedRcode: keyof<<typeof>> | number
version: number
dnssecOk: boolean
z: number?
RDataSOA
type RDataSOA = {
kind: "SOA",
mname: string,
rname: string,
serial: number,
refresh: number,
retry: number,
expire: number,
minimum: number
}
kind: "SOA"
mname: string
rname: string
serial: number
refresh: number
retry: number
expire: number
minimum: number
RData
type RData = RDataRaw
| RDataA
| RDataAAAA
| RDataCNAME
| RDataMX
| RDataNS
| RDataPTR
| RDataTXT
| RDataRRSIG
| RDataDNSKEY
| RDataDS
| RDataNSEC
| RDataNSEC3
| RDataNSEC3PARAM
| RDataOPT
| RDataSOA
Answer
type: string | number
class: string | number
name: string
ttl: number
Message
EdnsConfig
type EdnsConfig = {
enabled: boolean?,
udpPayloadSize: number?,
extendedRcode: keyof<<typeof>> | number?,
version: number?,
dnssecOk: boolean?,
z: number?,
options: { EdnsOption }?
}
enabled: boolean?
udpPayloadSize: number?
extendedRcode: keyof<<typeof>> | number?
version: number?
dnssecOk: boolean?
z: number?