commit 6bc1968fad359c6b9ddd2e904ec0cbd84ea0da79
parent 0251d1a9121655e5763d5ba391dd01123ee40373
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date: Thu, 4 Jul 2024 22:39:19 +0200
variety of logic fixes wrt serial handling
Diffstat:
2 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/ascension/ascension.py b/ascension/ascension.py
@@ -466,9 +466,9 @@ def main():
while True:
gns_zone_serial = ascender.gnszone.get_gns_zone_serial()
- ascender.logger.debug("GNS zone serial is %s", gns_zone_serial)
+ ascender.logger.info("GNS zone serial is %s", gns_zone_serial)
dns_zone_serial = ascender.dnszone.get_dns_zone_serial()
- ascender.logger.debug("DNS zone serial is %s", dns_zone_serial)
+ ascender.logger.info("DNS zone serial is %s", dns_zone_serial)
if not dns_zone_serial:
ascender.logger.error("Could not get DNS zone serial")
@@ -508,9 +508,9 @@ def main():
gns_zone_serial = ascender.dnszone.restore_from_file(gns_zone_serial, zonefile=zf)
ascender.logger.info("Zone serial for DNS zone transfer used: `%s'", gns_zone_serial)
# Transfer the actual zone
- if None == args.zonefile:
+ if None == zf:
ascender.dnszone.transfer_zone(gns_zone_serial)
-
+ ascender.dnszone.backup_to_file()
needsupdate = False
soa = ascender.dnszone.get_zone_soa()
end = time.time()
@@ -523,7 +523,7 @@ def main():
time.sleep(retry)
continue
- ascender.add_records_to_gns(args.workers, args.batchsize)
+ ascender.add_records_to_gns(int(args.workers), int(args.batchsize))
first_run = False
if args.standalone:
diff --git a/ascension/util/classes.py b/ascension/util/classes.py
@@ -224,10 +224,14 @@ class DNSZone:
# Resolve SOA directly without transferring the zone first
try:
soa_answer = self.resolver.resolve(domain, 'SOA')
- _ = self.resolver.resolve(soa_answer[0].mname, 'A')
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
- self.logger.warning("The domain '%s' is not resolvable via nameserver in SOA",
+ self.logger.warning("The SOA for domain '%s' is not resolvable",
domain)
+ try:
+ a_answer = dns.resolver.Resolver().resolve(soa_answer[0].mname, 'A')
+ except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
+ self.logger.warning("The domain '%s' is not resolvable via nameserver in SOA",
+ soa_answer[0].mname)
if soa_answer:
return soa_answer[0].serial
@@ -246,11 +250,12 @@ class DNSZone:
else:
zf = self.zone_backup_file
self.zone = dns.zone.from_file(zf, origin=self.domain)
- self.logger.info("Zonebackup file %s loaded", self.zone_backup_file)
+ print(self.zone)
+ self.logger.info("Zonebackup file %s loaded", zf)
except FileNotFoundError:
self.logger.info("Zonebackup file was not found, will be created")
return 0
- return serial
+ return self.zone.get_soa().serial
def backup_to_file(self) -> None: