commit 37e34e07857b86b5e20b265808fbbcea818f7029
parent 677b7f5f62176f3322c805d373b88eaa9ecfed42
Author: rexxnor <rexxnor+gnunet@brief.li>
Date: Fri, 18 Jan 2019 17:04:20 +0100
updated dependencies, setup.py, removed TODOs, improved error handling
Diffstat:
3 files changed, 33 insertions(+), 14 deletions(-)
diff --git a/ascension/ascension.py b/ascension/ascension.py
@@ -96,7 +96,11 @@ class Ascender():
try:
soa_answer = dns.resolver.query(domain, 'SOA')
except dns.resolver.NoAnswer:
- logging.warning("the domain '%s' does not exist")
+ logging.critical("the domain '%s' does not exist")
+ sys.exit(1)
+ except dns.resolver.NXDOMAIN:
+ logging.critical("the domain '%s' is invalid")
+ sys.exit(1)
master_answer = dns.resolver.query(soa_answer[0].mname, 'A')
try:
if resolver:
@@ -111,6 +115,9 @@ class Ascender():
except dns.exception.FormError:
logging.critical("domain '%s' does not allow xfr requests", domain)
sys.exit(1)
+ except dns.query.TransferError:
+ logging.critical("domain '%s' does not allow xfr requests", domain)
+ sys.exit(1)
for soa_record in zone.iterate_rdatas(rdtype=dns.rdatatype.SOA):
if not cls.transferns:
mname = soa_record[2].mname
@@ -360,11 +367,15 @@ class Ascender():
Extracts the current serial from a given zone
"""
try:
- serial = sp.check_output([GNUNET_NAMESTORE_COMMAND,
+ # this would also work but does not check if record/zone expired
+ #serial = sp.check_output([GNUNET_NAMESTORE_COMMAND,
+ # '-t', 'SOA',
+ # '-z', cls.domain,
+ # '-n', '@',
+ # '-D'])
+ serial = sp.check_output([GNUNET_GNS_COMMAND,
'-t', 'SOA',
- '-z', cls.domain,
- '-n', '@',
- '-D'])
+ '-u', '@.%s' % cls.domain,])
serial = serial.decode()
except sp.CalledProcessError:
serial = ""
@@ -431,10 +442,8 @@ class Ascender():
"""
ret = None
for soarecord in zone.iterate_rdatas(rdtype=dns.rdatatype.SOA):
- # TODO this might need improval depending on which SOA is picked
if str(soarecord[0]) == '@':
ret = soarecord
- break
return ret
@staticmethod
@@ -610,8 +619,8 @@ def main():
while 1:
serial = ascender.get_zone_serial()
ascender.initial_zone_transfer(serial)
- ascender.bootstrap_zone()
ascender.mirror_zone()
+ ascender.bootstrap_zone()
ascender.add_records_to_gns()
logging.info("Finished migrating of the zone %s", ascender.domain)
refresh = int(ascender.get_zone_refresh_time())
diff --git a/requirements.txt b/requirements.txt
@@ -1,8 +1,8 @@
-cffi==1.11.5
-coverage==4.5.1
-dnspython==1.15.0
+coverage==4.5.2
+daemon==1.2
+daemonize==2.5.0
+dnspython==1.16.0
docopt==0.6.2
mock==2.0.0
-pbr==4.2.0
-pycparser==2.18
-six==1.11.0
+pbr==5.1.1
+six==1.12.0
diff --git a/setup.py b/setup.py
@@ -25,4 +25,14 @@ setuptools.setup(
'ascension=ascension.ascension:main',
],
},
+ install_requires=[
+ 'coverage',
+ 'daemon',
+ 'daemonize',
+ 'dnspython',
+ 'docopt',
+ 'mock',
+ 'pbr',
+ 'six',
+ ],
)