[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [ascension] branch master updated: destroying Ascension
From: |
gnunet |
Subject: |
[GNUnet-SVN] [ascension] branch master updated: destroying Ascension |
Date: |
Wed, 08 May 2019 14:31:31 +0200 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository ascension.
The following commit(s) were added to refs/heads/master by this push:
new 437a1cd destroying Ascension
437a1cd is described below
commit 437a1cd8cad23b5fb09100f423cccc1ab302e081
Author: Christian Grothoff <address@hidden>
AuthorDate: Wed May 8 14:31:10 2019 +0200
destroying Ascension
---
ascension/ascension.py | 87 +++++++++++++++++++++++++-------------------------
1 file changed, 43 insertions(+), 44 deletions(-)
diff --git a/ascension/ascension.py b/ascension/ascension.py
index f5ad4c0..e6b6d93 100644
--- a/ascension/ascension.py
+++ b/ascension/ascension.py
@@ -97,7 +97,6 @@ class Ascender():
self.tld = self.domain.split(".")[::-1][0]
self.zone = None
self.zonegenerator = None
- self.nscache = dict()
self.flags = flags
self.minimum = int(minimum)
self.subzonedict = dict()
@@ -267,8 +266,10 @@ class Ascender():
label)
taskqueue.task_done()
+ # End of worker
+
- # Check if there is zone has already been migrated
+ # Check if a delegated zone is available in GNS as per NS record
nsrecords = self.zone.iterate_rdatas(dns.rdatatype.NS)
# This is broken if your NS is for ns.foo.YOURZONE as you add
@@ -282,35 +283,31 @@ class Ascender():
# foo.bar A IN 1.2.3.4
# => bar PKEY GNS $NEWKEY + mapping: bar => $NEWKEY
# => foo[.bar] A GNS 1.2.3.4
- gnspkey = list(filter(lambda record:
str(record[2]).startswith('gns--pkey--'), nsrecords))
- if gnspkey:
- label = str(gnspkey[0][0])
- ttl = gnspkey[0][1]
- pkey = str(gnspkey[0][2])
- # TODO Check this check
- if not self.transferns in ['127.0.0.1', '::1', 'localhost']:
- logging.warning("zone exists in GNS, adding it to local store")
- self.add_pkey_record_to_zone(pkey[11:], self.domain,
- label, ttl)
- return
-
- # Unify all records under same label into datastructure
+ gnspkey = list(filter(lambda record: for rec in record[2]: if
str(rec).startswith('gns--pkey--'): return true; return false, nsrecords))
+ for nsrecord in nsrecords:
+ name = str(nsrecord[0])
+ ttl = nsrecord[1]
+ values = nsrecord[2]
+ gnspkeys = list(filter(lambda record:
str(record).startswith('gns--pkey--'), values))
+ if len(gnspkeys) > 1:
+ logging.critical("Detected ambiguous PKEY records for label %s
(not generating PKEY record)", name)
+ continue
+ gnspkey = gnspkeys[0]
+ # FIXME: check that this is actucally a well-formed PKEY string!
(Crockford base32, sufficient length)
+ self.add_pkey_record_to_zone(pkey[11:], self.domain, name, ttl)
+ # FIXME: drop all NS records under this name later! => new map, if
entry present during NS processing, skip!
+
+ # Unify all records under same label into a record set
customrdataset = dict()
- for remaining in self.zone.iterate_rdatasets():
+ for name, rdset in self.zone.iterate_rdatasets():
# build lookup table for later GNS2DNS records
- domain = "%s.%s" % (str(remaining[0]), self.domain)
- elementlist = []
- for element in remaining[1]:
- if dns.rdatatype.to_text(element.rdtype) in ['A', 'AAAA']:
- elementlist.append(str(element))
- self.nscache[str(domain)] = elementlist
- rdataset = remaining[1]
- if customrdataset.get(str(remaining[0])) is None:
+ name = str(name) # Name could be str or DNS.name.Name
+ if customrdataset.get(name)) is None:
work = list()
- work.append(rdataset)
- customrdataset[str(remaining[0])] = work
+ work.append(rdset)
+ customrdataset[name] = work
else:
- customrdataset[str(remaining[0])].append(rdataset)
+ customrdataset[name].append(rdset)
for label, value in customrdataset.items():
if value is None:
@@ -387,6 +384,15 @@ class Ascender():
logging.info("successfully added record with command %s",
' '.join(ret.args))
+ def resolve_glue(self,
+ authorityname: str) -> list:
+ rdsets = self.zone[dnsresolver].rdatasets
+ value = []
+ for rdataset in rdsets:
+ if rdataset.rdtype in [dns.rdatatype.A, dns.rdatatype.AAAA]:
+ value.append("address@hidden" % (zonename, str(rdataset)))
+ return value
+
def transform_to_gns_format(self,
record: dns.rdata.Rdata,
rdtype: dns.rdata.Rdata,
@@ -424,25 +430,18 @@ class Ascender():
else:
value = "%s.%s" % (value, zonename)
elif rdtype == 'NS':
- nameserver = str(record)
+ nameserver = str(record)
if value[-1] == ".":
- value = value[:-1]
- else:
- value = "%s.%s" % (value, zonename)
- if zonename[-1] == ".":
- zonename = zonename[:-1]
- if nameserver[-1] == ".":
- dnsresolver = nameserver[:-1]
- dnsresolver = self.nscache.get(dnsresolver, dnsresolver)
- else:
- dnsresolver = "%s.%s" % (nameserver, zonename)
- dnsresolver = self.nscache.get(dnsresolver, dnsresolver)
- if isinstance(dnsresolver, list):
- value = []
- for nsip in dnsresolver:
- value.append("address@hidden" % (zonename, nsip))
+ # FQDN provided
+ if value.endswith("." + zonename):
+ # in bailiwick
+ value = resolve_glue (self, nameserver)
+ else:
+ # out of bailiwick
+ value = 'address@hidden' % (str(label), zonename,
dnsresolver)
else:
- value = 'address@hidden' % (str(label), zonename, dnsresolver)
+ # Name is relative to zone, must be in bailiwick
+ value = resolve_glue (self, nameserver)
logging.info("transformed %s record to GNS2DNS format", rdtype)
rdtype = 'GNS2DNS'
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [ascension] branch master updated: destroying Ascension,
gnunet <=