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