mock-dns-server
Version:
Create a mock DNS-over-TLS server based on [mock-tls-server](https://github.com/hildjj/mock-tls-server/).
70 lines (69 loc) • 1.7 kB
TypeScript
import * as packet from 'dns-packet';
import { MockTLSServer, type ServerOpts } from 'mock-tls-server';
import type { Buffer } from 'node:buffer';
export { connect, plainConnect } from 'mock-tls-server';
export interface ConnectionOptions {
zones?: Zones;
}
export type MockDNSServerOptions = ConnectionOptions & {
port?: number;
};
export interface Zone1 {
A: string;
AAAA: string;
AFSDB: Buffer;
APL: Buffer;
AXFR: Buffer;
CAA: packet.CaaData;
CDNSKEY: Buffer;
CDS: Buffer;
CERT: Buffer;
CNAME: string;
DNAME: string;
DHCID: Buffer;
DLV: Buffer;
DNSKEY: packet.DnskeyData;
DS: packet.DsData;
HINFO: packet.HInfoAnswer;
HIP: Buffer;
IXFR: Buffer;
IPSECKEY: Buffer;
KEY: Buffer;
KX: Buffer;
LOC: Buffer;
MX: packet.MxAnswer;
NAPTR: packet.NaptrAnswer;
NS: string;
NSEC: packet.NsecAnswer;
NSEC3: packet.Nsec3Answer;
NSEC3PARAM: Buffer;
NULL: Buffer;
OPT: never;
PTR: string;
RRSIG: packet.RrsigData;
RP: packet.RpData;
SIG: Buffer;
SOA: packet.SoaData;
SRV: packet.SrvData;
SSHFP: packet.SshfpData;
TA: Buffer;
TKEY: Buffer;
TLSA: packet.TlsaData;
TSIG: Buffer;
TXT: packet.TxtData;
URI: Buffer;
}
export type Zone = {
[rtype in keyof Zone1]?: Zone1[rtype] | Zone1[rtype][] | undefined;
};
export interface Zones {
[key: string]: Zone;
}
/**
* Create a mock DNS server.
*
* @param [options] Any options for mock-tls-server. Port defaults
* to 853.
* @returns The created server, already listening.
*/
export declare function createServer(options?: MockDNSServerOptions & ServerOpts): MockTLSServer;