ascension

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

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:
Mascension/ascension.py | 10+++++-----
Mascension/util/classes.py | 13+++++++++----
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: