Software /
code /
prosody
Comparison
util/dns.lua @ 12236:d0dfd48806f9
util.dns: Move DNS parameters details into util.dnsregistry
Goal is to regenerate this file from the IANA registry using a tool.
Having it in a separate file will reduce vcs noise in util.dns
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 04 Oct 2020 19:23:16 +0200 |
parent | 10972:b3773b1b90a1 |
child | 12239:578ce0415398 |
comparison
equal
deleted
inserted
replaced
12235:c98527220564 | 12236:d0dfd48806f9 |
---|---|
16 local s_match = string.match; | 16 local s_match = string.match; |
17 local s_gmatch = string.gmatch; | 17 local s_gmatch = string.gmatch; |
18 | 18 |
19 local have_net, net_util = pcall(require, "util.net"); | 19 local have_net, net_util = pcall(require, "util.net"); |
20 | 20 |
21 local iana_data = require "util.dnsregistry"; | |
21 if have_net and not net_util.ntop then -- Added in Prosody 0.11 | 22 if have_net and not net_util.ntop then -- Added in Prosody 0.11 |
22 have_net = false; | 23 have_net = false; |
23 end | 24 end |
24 | 25 |
25 local chartohex = {}; | 26 local chartohex = {}; |
29 end | 30 end |
30 | 31 |
31 local function tohex(s) | 32 local function tohex(s) |
32 return (s_gsub(s, ".", chartohex)); | 33 return (s_gsub(s, ".", chartohex)); |
33 end | 34 end |
34 | |
35 -- Converted from | |
36 -- http://www.iana.org/assignments/dns-parameters | |
37 -- 2020-06-25 | |
38 | |
39 local classes = { | |
40 IN = 1; "IN"; | |
41 nil; | |
42 CH = 3; "CH"; | |
43 HS = 4; "HS"; | |
44 }; | |
45 | |
46 local types = { | |
47 "A";"NS";"MD";"MF";"CNAME";"SOA";"MB";"MG";"MR";"NULL";"WKS";"PTR";"HINFO"; | |
48 "MINFO";"MX";"TXT";"RP";"AFSDB";"X25";"ISDN";"RT";"NSAP";"NSAP-PTR";"SIG"; | |
49 "KEY";"PX";"GPOS";"AAAA";"LOC";"NXT";"EID";"NIMLOC";"SRV";"ATMA";"NAPTR"; | |
50 "KX";"CERT";"A6";"DNAME";"SINK";"OPT";"APL";"DS";"SSHFP";"IPSECKEY";"RRSIG"; | |
51 "NSEC";"DNSKEY";"DHCID";"NSEC3";"NSEC3PARAM";"TLSA";"SMIMEA";[55]="HIP"; | |
52 [56]="NINFO";[57]="RKEY";[58]="TALINK";[59]="CDS";[60]="CDNSKEY";[61]="OPENPGPKEY"; | |
53 [62]="CSYNC";[63]="ZONEMD";[99]="SPF";[100]="UINFO";[101]="UID";[102]="GID"; | |
54 [103]="UNSPEC";[104]="NID";[105]="L32";[106]="L64";[107]="LP";[108]="EUI48"; | |
55 [109]="EUI64";["CSYNC"]=62;["TXT"]=16;["NAPTR"]=35;["A6"]=38;["RP"]=17; | |
56 ["TALINK"]=58;["NXT"]=30;["MR"]=9;["UINFO"]=100;["X25"]=19;["TKEY"]=249; | |
57 ["CERT"]=37;["SMIMEA"]=53;[252]="AXFR";[253]="MAILB";["CDS"]=59;[32769]="DLV"; | |
58 ["RT"]=21;["WKS"]=11;[249]="TKEY";["LP"]=107;[250]="TSIG";["SSHFP"]=44;["DS"]=43; | |
59 ["ISDN"]=20;["ATMA"]=34;["NS"]=2;[257]="CAA";["PX"]=26;["MX"]=15;["TSIG"]=250; | |
60 ["EID"]=31;["TLSA"]=52;["GID"]=102;["KX"]=36;["SPF"]=99;["DOA"]=259;["GPOS"]=27; | |
61 ["IPSECKEY"]=45;["NIMLOC"]=32;["RRSIG"]=46;["UID"]=101;["DNAME"]=39;["NSAP"]=22; | |
62 ["DNSKEY"]=48;["SINK"]=40;["DHCID"]=49;[32768]="TA";["NSAP-PTR"]=23;["AAAA"]=28; | |
63 ["PTR"]=12;["MINFO"]=14;["TA"]=32768;["EUI64"]=109;[260]="AMTRELAY"; | |
64 ["AMTRELAY"]=260;["CDNSKEY"]=60;[259]="DOA";["LOC"]=29;[258]="AVC";["AVC"]=258; | |
65 ["CAA"]=257;["MB"]=7;["*"]=255;[256]="URI";["URI"]=256;["SRV"]=33;["EUI48"]=108; | |
66 [255]="*";[254]="MAILA";["MAILA"]=254;["MAILB"]=253;["CNAME"]=5;[251]="IXFR"; | |
67 ["APL"]=42;["OPENPGPKEY"]=61;["MD"]=3;["NINFO"]=56;["ZONEMD"]=63;["RKEY"]=57; | |
68 ["L32"]=105;["NID"]=104;["HIP"]=55;["NSEC"]=47;["DLV"]=32769;["UNSPEC"]=103; | |
69 ["NSEC3PARAM"]=51;["MF"]=4;["MG"]=8;["AFSDB"]=18;["A"]=1;["SIG"]=24;["NSEC3"]=50; | |
70 ["HINFO"]=13;["IXFR"]=251;["NULL"]=10;["AXFR"]=252;["KEY"]=25;["OPT"]=41; | |
71 ["SOA"]=6;["L64"]=106; | |
72 } | |
73 | |
74 local errors = { | |
75 NoError = "No Error"; [0] = "NoError"; | |
76 FormErr = "Format Error"; "FormErr"; | |
77 ServFail = "Server Failure"; "ServFail"; | |
78 NXDomain = "Non-Existent Domain"; "NXDomain"; | |
79 NotImp = "Not Implemented"; "NotImp"; | |
80 Refused = "Query Refused"; "Refused"; | |
81 YXDomain = "Name Exists when it should not"; "YXDomain"; | |
82 YXRRSet = "RR Set Exists when it should not"; "YXRRSet"; | |
83 NXRRSet = "RR Set that should exist does not"; "NXRRSet"; | |
84 NotAuth = "Server Not Authoritative for zone"; "NotAuth"; | |
85 NotZone = "Name not contained in zone"; "NotZone"; | |
86 }; | |
87 | 35 |
88 -- Simplified versions of Waqas DNS parsers | 36 -- Simplified versions of Waqas DNS parsers |
89 -- Only the per RR parsers are needed and only feed a single RR | 37 -- Only the per RR parsers are needed and only feed a single RR |
90 | 38 |
91 local parsers = {}; | 39 local parsers = {}; |
268 end | 216 end |
269 setmetatable(parsers, { __index = function() return fallback_parser end }); | 217 setmetatable(parsers, { __index = function() return fallback_parser end }); |
270 | 218 |
271 return { | 219 return { |
272 parsers = parsers; | 220 parsers = parsers; |
273 classes = classes; | 221 classes = iana_data.classes; |
274 types = types; | 222 types = iana_data.types; |
275 errors = errors; | 223 errors = iana_data.errors; |
276 params = params; | 224 params = params; |
277 }; | 225 }; |