1
0
Fork 0
mirror of https://github.com/NeoCloud/NeoNetwork synced 2024-11-05 05:22:24 +08:00
NeoNetwork/scripts/dns-generator.py
2021-06-08 08:56:14 +08:00

45 lines
1.4 KiB
Python
Executable file

#!/usr/bin/env python3
import sys
from pathlib import Path
import toml
from rfc2317 import gen_reverse_pointers, ZONE as RFC2317_ZONE
from roa import export_dnssec_dnskey
ZONE_FILE_MAP = {
'neo.': Path("dns", "neonetwork"),
'127.10.in-addr.arpa.': Path("dns", "db.10.127"),
'7.2.1.0.0.1.d.f.ip6.arpa.': Path("dns", "db.fd10.127")
}
RFC2317_FILE = Path("dns", "rfc2317.toml")
def iter_rfc2317_entry():
entries = toml.loads(RFC2317_FILE.read_text())
for (route, attributes) in entries.items():
ns = attributes.get("NS")
ds = attributes.get("DS", list())
ttl = attributes.get("TTL", -1)
yield (route, ns, ds, ttl)
def main():
DNSKEYS = {entry['zone']: entry['records'] for entry in export_dnssec_dnskey()}
for zone, zone_file in ZONE_FILE_MAP.items():
orignal = zone_file.read_text()
records = [orignal, "; AUTOGENERATED"]
if zone.strip('.') == RFC2317_ZONE.strip('.'):
records.extend(("", "; rfc2317"))
for route, ns, ds, ttl in iter_rfc2317_entry():
records.extend(gen_reverse_pointers(route, ns, ds, ttl))
records.append("")
records.extend(("", "; dnskey"))
for key_ds in DNSKEYS[zone]:
records.append(f"@ IN DNSKEY {key_ds['dnskey']}")
records.append("")
zone_file.write_text("\n".join(records))
if __name__ == "__main__":
main()