From 22ef21550a817afc5b6388e7d62ed1eedb92f970 Mon Sep 17 00:00:00 2001 From: Aquifoliales <103569748+Aquifoliales@users.noreply.github.com> Date: Wed, 13 Apr 2022 12:58:28 +0200 Subject: Fixed support for CAA-, TXT- and MultiPTR-Records. Added support for SSHFP- and TLSA-Records --- octodns-custom-providers/provider/zonefile.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) mode change 100755 => 100644 octodns-custom-providers/provider/zonefile.py diff --git a/octodns-custom-providers/provider/zonefile.py b/octodns-custom-providers/provider/zonefile.py old mode 100755 new mode 100644 index f112cf2..dd36c65 --- a/octodns-custom-providers/provider/zonefile.py +++ b/octodns-custom-providers/provider/zonefile.py @@ -14,10 +14,25 @@ class RdataParameterException(Exception): def _create_rdata( rdclass, rdtype, data ): if isinstance(data,str): + if rdtype == 16: # TXT-Record + return dns.rdata.from_text(rdclass, rdtype, '"'+data+'"') return dns.rdata.from_text(rdclass, rdtype, data) cls = dns.rdata.get_rdata_class(rdclass, rdtype) + if rdtype == 257: # CAA-Record + data['tag'] = bytes(data['tag'], 'utf-8') + data['value'] = bytes(data['value'], 'utf-8') + + if rdtype == 44: # SSHFP-Record + data['fp_type'] = data.pop('fingerprint_type') + data['fingerprint'] = bytes.fromhex(data['fingerprint']) + + if rdtype == 52: # TLSA-Record + data['usage'] = data.pop('certificate_usage') + data['mtype'] = data.pop('matching_type') + data['cert'] = bytes.fromhex(data.pop('certificate_association_data')) + for slot in cls.__slots__: if not slot in data: raise RdataParameterException('{} is missing'.format(slot)) @@ -25,10 +40,10 @@ def _create_rdata( rdclass, rdtype, data ): return cls(rdclass, rdtype, **data) class ZoneFileProvider(BaseProvider): - + SUPPORTS_MULTIVALUE_PTR = True SUPPORTS_GEO = False SUPPORTS = set(('A', 'AAAA', 'CAA', 'CNAME', 'MX', 'NS', 'PTR', 'SPF', - 'SRV', 'TXT')) + 'SRV', 'SSHFP', 'TLSA', 'TXT')) ''' SOA dict -- cgit v1.2.3