1
0
Fork 0
oarc-dsc-datatool/contrib/iana-dns-params-toyaml.py
Daniel Baumann 1ea3e103a7
Adding upstream version 1.4.2.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-04-22 13:23:23 +02:00

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))