44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
import yaml
|
|
import csv
|
|
from urllib.request import Request, urlopen
|
|
from io import StringIO
|
|
|
|
rcode = {}
|
|
qtype = {}
|
|
opcode = {}
|
|
|
|
for row in csv.reader(StringIO(urlopen(Request('http://www.iana.org/assignments/dns-parameters/dns-parameters-6.csv')).read().decode('utf-8'))):
|
|
if row[0] == 'RCODE':
|
|
continue
|
|
rcode[row[0]] = row[1]
|
|
|
|
for row in csv.reader(StringIO(urlopen(Request('http://www.iana.org/assignments/dns-parameters/dns-parameters-4.csv')).read().decode('utf-8'))):
|
|
if row[0] == 'TYPE':
|
|
continue
|
|
qtype[row[1]] = row[0]
|
|
|
|
for row in csv.reader(StringIO(urlopen(Request('http://www.iana.org/assignments/dns-parameters/dns-parameters-5.csv')).read().decode('utf-8'))):
|
|
if row[0] == 'OpCode':
|
|
continue
|
|
opcode[row[0]] = row[1]
|
|
|
|
y = {}
|
|
|
|
for n in ['rcode', 'client_addr_vs_rcode', 'rcode_vs_replylen']:
|
|
y[n] = { 'Rcode': {} }
|
|
for k, v in rcode.items():
|
|
y[n]['Rcode'][k] = v
|
|
|
|
for n in ['qtype', 'transport_vs_qtype', 'certain_qnames_vs_qtype', 'qtype_vs_tld', 'qtype_vs_qnamelen', 'chaos_types_and_names', 'dns_ip_version_vs_qtype']:
|
|
y[n] = { 'Qtype': {} }
|
|
for k, v in qtype.items():
|
|
if v == '*':
|
|
v = 'wildcard'
|
|
y[n]['Qtype'][k] = v
|
|
|
|
for n in ['opcode']:
|
|
y[n] = { 'Opcode': {} }
|
|
for k, v in rcode.items():
|
|
y[n]['Opcode'][k] = v
|
|
|
|
print(yaml.dump(y, explicit_start=True, default_flow_style=False))
|