From d8d67379e028a5c0c77d99e9c55983a45ba5b36d Mon Sep 17 00:00:00 2001 From: Otthorn Date: Wed, 14 Apr 2021 15:34:06 +0200 Subject: [PATCH] new add_to_zone function which is more dnspythonic, add DNAME records --- lib.py | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/lib.py b/lib.py index ed75756..3b17b69 100644 --- a/lib.py +++ b/lib.py @@ -34,7 +34,7 @@ def format_rname(mail: str): return rname -def format_mname(name: str): +def format_re2o_domain(name: str): """ Format a zone name given by the re2o API to a mname dnspython object. @@ -51,29 +51,17 @@ def format_mname(name: str): return mname -#def add_to_zone(zone, name, rdata): -# """Add a rdata object to a zone object.""" -# -# zone.nodes.setdefault(name, dns.node.Node()) -# rdataset = zone.nodes[name].find_rdataset( -# rdata.rdclass, -# rdata.rdtype, -# create=True -# ) -# rdataset.add(rdata) - - def add_to_zone(zone, name, rdata): """Add a rdata object to a zone object.""" - rdataset = zone.find_rdataset( - name, + node = zone.find_node(name, create=True) + rdataset = node.find_rdataset( + rdata.rdclass, rdata.rdtype, create=True ) rdataset.add(rdata) - def soa_handler(re2o_zone, dns_zone): """Handler for SOA record""" @@ -307,6 +295,24 @@ def cname_records_handler(re2o_zone, dns_zone): add_to_zone(dns_zone, name, CNAME_obj) +def dname_records_handler(re2o_zone, dns_zone): + """Handler for DNAME records""" + + for record in re2o_zone["dname_records"]: + + logging.debug(f"DNAME = {record}") + + alias = format_re2o_domain(record["alias"]) + zone = format_re2o_domain(record["zone"]) + + DNAME_obj = DNAME.DNAME( + dns.rdataclass.IN, + dns.rdatatype.DNAME, + alias + ) + + add_to_zone(dns_zone, zone, DNAME_obj) + def pass_handler(zone, records): pass @@ -323,7 +329,7 @@ HANDLERS = { "srv_records": srv_records_handler, "a_records": a_records_handler, "aaaa_records": aaaa_records_handler, - "name": pass_handler, "cname_records": cname_records_handler, "dname_records": pass_handler, + "name": pass_handler, }