mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-26 23:13:25 +00:00
don't use large and silent try..except block. print more error messages
This commit is contained in:
parent
2f1c597e8f
commit
dfc3b64395
1 changed files with 41 additions and 44 deletions
|
@ -64,9 +64,9 @@ class Plugin(BasePlugin):
|
||||||
return OA_READY
|
return OA_READY
|
||||||
|
|
||||||
def __init__(self, gui, name):
|
def __init__(self, gui, name):
|
||||||
print_error('[OA] Initialiasing OpenAlias plugin, OA_READY is ' + str(OA_READY))
|
|
||||||
BasePlugin.__init__(self, gui, name)
|
BasePlugin.__init__(self, gui, name)
|
||||||
self._is_available = OA_READY
|
self._is_available = OA_READY
|
||||||
|
self.print_error('OA_READY is ' + str(OA_READY))
|
||||||
|
|
||||||
@hook
|
@hook
|
||||||
def init_qt(self, gui):
|
def init_qt(self, gui):
|
||||||
|
@ -175,7 +175,7 @@ class Plugin(BasePlugin):
|
||||||
|
|
||||||
def resolve(self, url):
|
def resolve(self, url):
|
||||||
'''Resolve OpenAlias address using url.'''
|
'''Resolve OpenAlias address using url.'''
|
||||||
print_error('[OA] Attempting to resolve OpenAlias data for ' + url)
|
self.print_error('[OA] Attempting to resolve OpenAlias data for ' + url)
|
||||||
|
|
||||||
prefix = 'btc'
|
prefix = 'btc'
|
||||||
retries = 3
|
retries = 3
|
||||||
|
@ -223,53 +223,50 @@ class Plugin(BasePlugin):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def validate_dnssec(self, url):
|
def validate_dnssec(self, url):
|
||||||
print_error('[OA] Checking DNSSEC trust chain for ' + url)
|
self.print_error('Checking DNSSEC trust chain for ' + url)
|
||||||
|
default = dns.resolver.get_default_resolver()
|
||||||
|
ns = default.nameservers[0]
|
||||||
|
parts = url.split('.')
|
||||||
|
|
||||||
try:
|
for i in xrange(len(parts), 0, -1):
|
||||||
default = dns.resolver.get_default_resolver()
|
sub = '.'.join(parts[i - 1:])
|
||||||
ns = default.nameservers[0]
|
query = dns.message.make_query(sub, dns.rdatatype.NS)
|
||||||
|
response = dns.query.udp(query, ns, 1)
|
||||||
|
if response.rcode() != dns.rcode.NOERROR:
|
||||||
|
self.print_error("query error")
|
||||||
|
return 0
|
||||||
|
|
||||||
parts = url.split('.')
|
if len(response.authority) > 0:
|
||||||
|
rrset = response.authority[0]
|
||||||
|
else:
|
||||||
|
rrset = response.answer[0]
|
||||||
|
|
||||||
for i in xrange(len(parts), 0, -1):
|
rr = rrset[0]
|
||||||
sub = '.'.join(parts[i - 1:])
|
if rr.rdtype == dns.rdatatype.SOA:
|
||||||
|
#Same server is authoritative, don't check again
|
||||||
|
continue
|
||||||
|
|
||||||
query = dns.message.make_query(sub, dns.rdatatype.NS)
|
query = dns.message.make_query(sub,
|
||||||
response = dns.query.udp(query, ns, 1)
|
dns.rdatatype.DNSKEY,
|
||||||
|
want_dnssec=True)
|
||||||
|
response = dns.query.udp(query, ns, 1)
|
||||||
|
if response.rcode() != 0:
|
||||||
|
self.print_error("query error")
|
||||||
|
return 0
|
||||||
|
# HANDLE QUERY FAILED (SERVER ERROR OR NO DNSKEY RECORD)
|
||||||
|
|
||||||
if response.rcode() != dns.rcode.NOERROR:
|
# answer should contain two RRSET: DNSKEY and RRSIG(DNSKEY)
|
||||||
return 0
|
answer = response.answer
|
||||||
|
if len(answer) != 2:
|
||||||
|
self.print_error("answer error")
|
||||||
|
return 0
|
||||||
|
|
||||||
if len(response.authority) > 0:
|
# the DNSKEY should be self signed, validate it
|
||||||
rrset = response.authority[0]
|
name = dns.name.from_text(sub)
|
||||||
else:
|
try:
|
||||||
rrset = response.answer[0]
|
dns.dnssec.validate(answer[0], answer[1], {name: answer[0]})
|
||||||
|
except dns.dnssec.ValidationFailure:
|
||||||
|
self.print_error("validation error")
|
||||||
|
return 0
|
||||||
|
|
||||||
rr = rrset[0]
|
|
||||||
if rr.rdtype == dns.rdatatype.SOA:
|
|
||||||
#Same server is authoritative, don't check again
|
|
||||||
continue
|
|
||||||
|
|
||||||
query = dns.message.make_query(sub,
|
|
||||||
dns.rdatatype.DNSKEY,
|
|
||||||
want_dnssec=True)
|
|
||||||
response = dns.query.udp(query, ns, 1)
|
|
||||||
|
|
||||||
if response.rcode() != 0:
|
|
||||||
return 0
|
|
||||||
# HANDLE QUERY FAILED (SERVER ERROR OR NO DNSKEY RECORD)
|
|
||||||
|
|
||||||
# answer should contain two RRSET: DNSKEY and RRSIG(DNSKEY)
|
|
||||||
answer = response.answer
|
|
||||||
if len(answer) != 2:
|
|
||||||
return 0
|
|
||||||
|
|
||||||
# the DNSKEY should be self signed, validate it
|
|
||||||
name = dns.name.from_text(sub)
|
|
||||||
try:
|
|
||||||
dns.dnssec.validate(answer[0], answer[1], {name: answer[0]})
|
|
||||||
except dns.dnssec.ValidationFailure:
|
|
||||||
return 0
|
|
||||||
except Exception, e:
|
|
||||||
return 0
|
|
||||||
return 1
|
return 1
|
||||||
|
|
Loading…
Add table
Reference in a new issue