diff --git a/tldtester/admin.py b/tldtester/admin.py index dedc845..01d1b5f 100644 --- a/tldtester/admin.py +++ b/tldtester/admin.py @@ -7,7 +7,7 @@ import threading class tlds(ExtraButtonsMixin, admin.ModelAdmin): - list_display = ('tld', 'nsamount', 'v4nsamount', 'v6nsamount', 'lastEdition') + list_display = ('tld', 'nsamount', 'v4nsamount', 'v6nsamount', 'dnssec', 'lastEdition') @button(change_form=True, html_attrs={'style': 'background-color:#88FF88;color:black'}) def refresh(self, request): diff --git a/tldtester/models.py b/tldtester/models.py index 9f2a50e..35aafba 100644 --- a/tldtester/models.py +++ b/tldtester/models.py @@ -26,7 +26,7 @@ class TLD(models.Model): (253, "private algorithm"), (254, "private algorithm OID"), (300, "Unknown"), - + (400, "None"), ) tld = models.CharField(max_length=30, primary_key=True) nsamount = models.IntegerField(default=0) diff --git a/tldtester/sorter.py b/tldtester/sorter.py index 7914e2d..6f5ce96 100644 --- a/tldtester/sorter.py +++ b/tldtester/sorter.py @@ -34,6 +34,7 @@ def dbwriter(recs): db.nsamount = recs["nsserveramount"] db.v4nsamount = recs["v4resolvers"] db.v6nsamount = recs["v6resolvers"] + db.dnssec = recs["algo"] db.save() @@ -44,26 +45,55 @@ def grabber(data): """ for tld in data: nsservers = [] + dnsseckeys = [] Arecords = 0 AAAArecords = 0 - ns = dns.resolver.resolve(tld, 'NS') - for server in ns: - nsservers.append(server.to_text()) + try: + ns = dns.resolver.resolve(tld, 'NS') + for server in ns: + nsservers.append(server.to_text()) + except Exception as e: + print(e) for Arecord in nsservers: try: - dns.resolver.resolve(Arecord, 'A') + try: + dns.resolver.resolve(Arecord, 'A') + except Exception as e: + # retry + print(e) + dns.resolver.resolve(Arecord, 'A') Arecords += 1 except Exception as e: print(e) for AAAArecord in nsservers: try: - dns.resolver.resolve(AAAArecord, 'AAAA') + try: + dns.resolver.resolve(AAAArecord, 'AAAA') + except Exception as e: + # retry + print(e) + dns.resolver.resolve(AAAArecord, 'AAAA') AAAArecords += 1 except Exception as e: print(e) + try: + try: + ds = dns.resolver.resolve(tld, 'DS') + except Exception as e: + # retry + print(e) + ds = dns.resolver.resolve(tld, 'DS') + for dsrecord in ds: + algo = dsrecord.to_text() + line = algo.split() + dnsseckeys.append(int(line[1])) + algo = max(list(dict.fromkeys(dnsseckeys))) + except Exception as e: + algo = 400 + print(e) results = {"tld": tld, "nsserveramount": int(len((nsservers))), "v4resolvers": Arecords, - "v6resolvers": AAAArecords} + "v6resolvers": AAAArecords, "algo": algo} dbwriter(results)