aboutsummaryrefslogtreecommitdiffstats
path: root/net/dns.lua
diff options
context:
space:
mode:
Diffstat (limited to 'net/dns.lua')
-rw-r--r--net/dns.lua112
1 files changed, 107 insertions, 5 deletions
diff --git a/net/dns.lua b/net/dns.lua
index 0d2cce01..e015bca8 100644
--- a/net/dns.lua
+++ b/net/dns.lua
@@ -15,6 +15,7 @@
local socket = require "socket";
local timer = require "util.timer";
local new_ip = require "util.ip".new_ip;
+local have_util_net, util_net = pcall(require, "util.net");
local _, windows = pcall(require, "util.windows");
local is_windows = (_ and windows) or os.getenv("WINDIR");
@@ -72,6 +73,7 @@ local default_timeout = 15;
-------------------------------------------------- module dns
local _ENV = nil;
+-- luacheck: std none
local dns = {};
@@ -111,11 +113,99 @@ end
dns.types = {
- 'A', 'NS', 'MD', 'MF', 'CNAME', 'SOA', 'MB', 'MG', 'MR', 'NULL', 'WKS',
- 'PTR', 'HINFO', 'MINFO', 'MX', 'TXT',
- [ 28] = 'AAAA', [ 29] = 'LOC', [ 33] = 'SRV',
- [252] = 'AXFR', [253] = 'MAILB', [254] = 'MAILA', [255] = '*' };
-
+ [1] = "A", -- a host address,[RFC1035],,
+ [2] = "NS", -- an authoritative name server,[RFC1035],,
+ [3] = "MD", -- a mail destination (OBSOLETE - use MX),[RFC1035],,
+ [4] = "MF", -- a mail forwarder (OBSOLETE - use MX),[RFC1035],,
+ [5] = "CNAME", -- the canonical name for an alias,[RFC1035],,
+ [6] = "SOA", -- marks the start of a zone of authority,[RFC1035],,
+ [7] = "MB", -- a mailbox domain name (EXPERIMENTAL),[RFC1035],,
+ [8] = "MG", -- a mail group member (EXPERIMENTAL),[RFC1035],,
+ [9] = "MR", -- a mail rename domain name (EXPERIMENTAL),[RFC1035],,
+ [10] = "NULL", -- a null RR (EXPERIMENTAL),[RFC1035],,
+ [11] = "WKS", -- a well known service description,[RFC1035],,
+ [12] = "PTR", -- a domain name pointer,[RFC1035],,
+ [13] = "HINFO", -- host information,[RFC1035],,
+ [14] = "MINFO", -- mailbox or mail list information,[RFC1035],,
+ [15] = "MX", -- mail exchange,[RFC1035],,
+ [16] = "TXT", -- text strings,[RFC1035],,
+ [17] = "RP", -- for Responsible Person,[RFC1183],,
+ [18] = "AFSDB", -- for AFS Data Base location,[RFC1183][RFC5864],,
+ [19] = "X25", -- for X.25 PSDN address,[RFC1183],,
+ [20] = "ISDN", -- for ISDN address,[RFC1183],,
+ [21] = "RT", -- for Route Through,[RFC1183],,
+ [22] = "NSAP", -- "for NSAP address, NSAP style A record",[RFC1706],,
+ [23] = "NSAP-PTR", -- "for domain name pointer, NSAP style",[RFC1348][RFC1637][RFC1706],,
+ [24] = "SIG", -- for security signature,[RFC4034][RFC3755][RFC2535][RFC2536][RFC2537][RFC2931][RFC3110][RFC3008],,
+ [25] = "KEY", -- for security key,[RFC4034][RFC3755][RFC2535][RFC2536][RFC2537][RFC2539][RFC3008][RFC3110],,
+ [26] = "PX", -- X.400 mail mapping information,[RFC2163],,
+ [27] = "GPOS", -- Geographical Position,[RFC1712],,
+ [28] = "AAAA", -- IP6 Address,[RFC3596],,
+ [29] = "LOC", -- Location Information,[RFC1876],,
+ [30] = "NXT", -- Next Domain (OBSOLETE),[RFC3755][RFC2535],,
+ [31] = "EID", -- Endpoint Identifier,[Michael_Patton][http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt],,1995-06
+ [32] = "NIMLOC", -- Nimrod Locator,[1][Michael_Patton][http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt],,1995-06
+ [33] = "SRV", -- Server Selection,[1][RFC2782],,
+ [34] = "ATMA", -- 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.]",,
+ [35] = "NAPTR", -- Naming Authority Pointer,[RFC2915][RFC2168][RFC3403],,
+ [36] = "KX", -- Key Exchanger,[RFC2230],,
+ [37] = "CERT", -- CERT,[RFC4398],,
+ [38] = "A6", -- A6 (OBSOLETE - use AAAA),[RFC3226][RFC2874][RFC6563],,
+ [39] = "DNAME", -- DNAME,[RFC6672],,
+ [40] = "SINK", -- SINK,[Donald_E_Eastlake][http://tools.ietf.org/html/draft-eastlake-kitchen-sink],,1997-11
+ [41] = "OPT", -- OPT,[RFC6891][RFC3225],,
+ [42] = "APL", -- APL,[RFC3123],,
+ [43] = "DS", -- Delegation Signer,[RFC4034][RFC3658],,
+ [44] = "SSHFP", -- SSH Key Fingerprint,[RFC4255],,
+ [45] = "IPSECKEY", -- IPSECKEY,[RFC4025],,
+ [46] = "RRSIG", -- RRSIG,[RFC4034][RFC3755],,
+ [47] = "NSEC", -- NSEC,[RFC4034][RFC3755],,
+ [48] = "DNSKEY", -- DNSKEY,[RFC4034][RFC3755],,
+ [49] = "DHCID", -- DHCID,[RFC4701],,
+ [50] = "NSEC3", -- NSEC3,[RFC5155],,
+ [51] = "NSEC3PARAM", -- NSEC3PARAM,[RFC5155],,
+ [52] = "TLSA", -- TLSA,[RFC6698],,
+ [53] = "SMIMEA", -- S/MIME cert association,[RFC8162],SMIMEA/smimea-completed-template,2015-12-01
+ -- [54] = "Unassigned", -- ,,,
+ [55] = "HIP", -- Host Identity Protocol,[RFC8005],,
+ [56] = "NINFO", -- NINFO,[Jim_Reid],NINFO/ninfo-completed-template,2008-01-21
+ [57] = "RKEY", -- RKEY,[Jim_Reid],RKEY/rkey-completed-template,2008-01-21
+ [58] = "TALINK", -- Trust Anchor LINK,[Wouter_Wijngaards],TALINK/talink-completed-template,2010-02-17
+ [59] = "CDS", -- Child DS,[RFC7344],CDS/cds-completed-template,2011-06-06
+ [60] = "CDNSKEY", -- DNSKEY(s) the Child wants reflected in DS,[RFC7344],,2014-06-16
+ [61] = "OPENPGPKEY", -- OpenPGP Key,[RFC7929],OPENPGPKEY/openpgpkey-completed-template,2014-08-12
+ [62] = "CSYNC", -- Child-To-Parent Synchronization,[RFC7477],,2015-01-27
+ -- [63 .. 98] = "Unassigned", -- ,,,
+ [99] = "SPF", -- ,[RFC7208],,
+ [100] = "UINFO", -- ,[IANA-Reserved],,
+ [101] = "UID", -- ,[IANA-Reserved],,
+ [102] = "GID", -- ,[IANA-Reserved],,
+ [103] = "UNSPEC", -- ,[IANA-Reserved],,
+ [104] = "NID", -- ,[RFC6742],ILNP/nid-completed-template,
+ [105] = "L32", -- ,[RFC6742],ILNP/l32-completed-template,
+ [106] = "L64", -- ,[RFC6742],ILNP/l64-completed-template,
+ [107] = "LP", -- ,[RFC6742],ILNP/lp-completed-template,
+ [108] = "EUI48", -- an EUI-48 address,[RFC7043],EUI48/eui48-completed-template,2013-03-27
+ [109] = "EUI64", -- an EUI-64 address,[RFC7043],EUI64/eui64-completed-template,2013-03-27
+ -- [110 .. 248] = "Unassigned", -- ,,,
+ [249] = "TKEY", -- Transaction Key,[RFC2930],,
+ [250] = "TSIG", -- Transaction Signature,[RFC2845],,
+ [251] = "IXFR", -- incremental transfer,[RFC1995],,
+ [252] = "AXFR", -- transfer of an entire zone,[RFC1035][RFC5936],,
+ [253] = "MAILB", -- "mailbox-related RRs (MB, MG or MR)",[RFC1035],,
+ [254] = "MAILA", -- mail agent RRs (OBSOLETE - see MX),[RFC1035],,
+ [255] = "*", -- A request for all records the server/cache has available,[RFC1035][RFC6895],,
+ [256] = "URI", -- URI,[RFC7553],URI/uri-completed-template,2011-02-22
+ [257] = "CAA", -- Certification Authority Restriction,[RFC6844],CAA/caa-completed-template,2011-04-07
+ [258] = "AVC", -- Application Visibility and Control,[Wolfgang_Riedel],AVC/avc-completed-template,2016-02-26
+ [259] = "DOA", -- Digital Object Architecture,[draft-durand-doa-over-dns],DOA/doa-completed-template,2017-08-30
+ -- [260 .. 32767] = "Unassigned", -- ,,,
+ [32768] = "TA", -- 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
+ [32769] = "DLV", -- DNSSEC Lookaside Validation,[RFC4431],,
+ -- [32770 .. 65279] = "Unassigned", -- ,,,
+ -- [65280 .. 65534] = "Private use", -- ,,,
+ -- [65535] = "Reserved", -- ,,,
+}
dns.classes = { 'IN', 'CS', 'CH', 'HS', [255] = '*' };
@@ -383,6 +473,12 @@ function resolver:A(rr) -- - - - - - - - - - - - - - - - - - - - - - - - A
rr.a = string.format('%i.%i.%i.%i', b1, b2, b3, b4);
end
+if have_util_net and util_net.ntop then
+ function resolver:A(rr)
+ rr.a = util_net.ntop(self:sub(4));
+ end
+end
+
function resolver:AAAA(rr)
local addr = {};
for _ = 1, rr.rdlength, 2 do
@@ -403,6 +499,12 @@ function resolver:AAAA(rr)
rr.aaaa = addr:gsub(zeros[1], "::", 1):gsub("^0::", "::"):gsub("::0$", "::");
end
+if have_util_net and util_net.ntop then
+ function resolver:AAAA(rr)
+ rr.aaaa = util_net.ntop(self:sub(16));
+ end
+end
+
function resolver:CNAME(rr) -- - - - - - - - - - - - - - - - - - - - CNAME
rr.cname = self:name();
end