commit 64559165746948afab271345788104160f7725b9
parent 431f8833bc2f1161ab5fcda34138a46e0987b1aa
Author: rexxnor <rexxnor+gnunet@brief.li>
Date: Thu, 2 May 2019 22:31:42 +0200
improved handling of transfer errors, added notes
Diffstat:
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/ascension/ascension.py b/ascension/ascension.py
@@ -115,7 +115,7 @@ class Ascender():
def get_dns_zone_serial(self,
domain: str,
- resolver=None) -> dns.rdatatype.SOA:
+ resolver=None) -> int:
"""
Gets the current serial for a given zone
:param domain: Domain to query for in DNS
@@ -135,6 +135,7 @@ class Ascender():
except dns.resolver.NXDOMAIN:
logging.warning("The domain '%s' is not publicly resolvable.",
domain)
+
try:
if resolver:
zone = dns.zone.from_xfr(dns.query.xfr(
@@ -144,12 +145,19 @@ class Ascender():
master_answer[0].address, domain,
port=self.port))
except dns.resolver.NoAnswer:
- logging.error("Nameserver for '%s' did not answer.", domain)
+ logging.critical("Nameserver for '%s' did not answer.", domain)
+ return None
except dns.exception.FormError:
- logging.critical("Domain '%s' does not allow xfr requests.", domain)
+ logging.critical("Domain '%s' does not allow xfr requests.",
+ domain)
return None
except dns.query.TransferError:
- logging.critical("Domain '%s' does not allow xfr requests.", domain)
+ logging.critical("Domain '%s' does not allow xfr requests.",
+ domain)
+ return None
+ except:
+ logging.error("Unexpected error while transfering domain '%s'",
+ domain)
return None
for soa_record in zone.iterate_rdatas(rdtype=dns.rdatatype.SOA):
@@ -159,7 +167,7 @@ class Ascender():
self.transferns = str(soa_record[2].mname) + "." + domain
else:
self.transferns = str(soa_record[2].mname)
- return soa_record[2].serial
+ return int(soa_record[2].serial)
def add_records_to_gns(self) -> None:
"""
@@ -559,6 +567,7 @@ class Ascender():
except sp.CalledProcessError:
logging.info("Zone %s already exists!", zonestring)
+ # This is the most inefficient part of the zone hierarchy building
pkey_lookup = sp.Popen([GNUNET_ZONE_CREATION_COMMAND,
'-d'],
stdout=sp.PIPE)