ascension

Migrate DNS zones to the GNU Name System
Log | Files | Refs | README | LICENSE

commit af1af4396128b96c2ae08c347db33281ae70ea98
parent d1ff79f3355b55498b55b08b2d6bec5dbd69e82e
Author: rexxnor <rexxnor+gnunet@brief.li>
Date:   Fri, 28 Sep 2018 08:29:04 +0200

added ttl of SOA to zone for later implementation of timer

Diffstat:
Mgnsmigrator/gnsmigrator.py | 19+++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/gnsmigrator/gnsmigrator.py b/gnsmigrator/gnsmigrator.py @@ -63,7 +63,9 @@ class GNSMigrator(): except dns.exception.FormError: print("domain '%s' does not allow xfr requests" % domain) continue - cls.zones[domain] = (zone, (master_answer[0].address, domain)) + cls.zones[domain] = (zone, (master_answer[0].address, + domain, + zone.get_rdataset('@', dns.rdatatype.SOA).ttl)) @classmethod def bootstrap_zones(cls): @@ -217,9 +219,16 @@ class GNSMigrator(): xfrinfo[1], rdtype=dns.rdatatype.IXFR, serial=serial)) - if newzone == zone: - return 1 - return 0 + + # If the zone serials match, refresh the TTL in the daemon, else insert new TTL + newserial = int(str(newzone.get_rdataset('@', dns.rdatatype.SOA)).split(' ')[5]) + if serial == newserial: + cls.zones[domain] = (zone, (xfrinfo[0], + xfrinfo[1], + newzone.get_rdataset('@', dns.rdatatype.SOA).ttl)) + cls.zones[domain] = (newzone, (xfrinfo[0], + xfrinfo[1], + newzone.get_rdataset('@', dns.rdatatype.SOA).ttl)) def main(): @@ -259,6 +268,8 @@ def main(): gnsmigrator.bootstrap_zones() gnsmigrator.initial_zone_transfer() + + # TODO add a daemon for doing this and notify when the TTL has expired for domain, zonetuple in gnsmigrator.zones.items(): # Returns a value 0 if not changed and 1 if changed gnsmigrator.refresh_zone(domain, zonetuple, dnsresolver)