Skip to content
Snippets Groups Projects
Commit 3f0ec99b authored by Pierre Lalet's avatar Pierre Lalet Committed by GitHub
Browse files

Merge pull request #548 from gpotter2/fix-as-resolver

[Tests] Fix AS_RESOLVER
parents 525339ef d5670e8b
No related branches found
No related tags found
No related merge requests found
......@@ -8,7 +8,7 @@ Resolve Autonomous Systems (AS).
"""
import socket
import socket, errno
from scapy.config import conf
class AS_resolver:
......@@ -91,12 +91,12 @@ class AS_resolver_cymru(AS_resolver):
asn,ip,desc = map(str.strip, l.split("|"))
if asn == "NA":
continue
asn = int(asn)
ASNlist.append((ip,asn,desc))
asn = "AS" + str(int(asn))
ASNlist.append((ip, asn, desc))
return ASNlist
class AS_resolver_multi(AS_resolver):
resolvers_list = ( AS_resolver_cymru(),AS_resolver_riswhois(),AS_resolver_radb() )
resolvers_list = ( AS_resolver_riswhois(),AS_resolver_radb(),AS_resolver_cymru() )
def __init__(self, *reslist):
if reslist:
self.resolvers_list = reslist
......@@ -104,10 +104,18 @@ class AS_resolver_multi(AS_resolver):
todo = ips
ret = []
for ASres in self.resolvers_list:
res = ASres.resolve(*todo)
try:
res = ASres.resolve(*todo)
except socket.error as e:
if e[0] in [errno.ECONNREFUSED, errno.ETIMEDOUT, errno.ECONNRESET]:
continue
resolved = [ ip for ip,asn,desc in res ]
todo = [ ip for ip in todo if ip not in resolved ]
ret += res
if len(todo) == 0:
break
if len(ips) != len(ret):
raise RuntimeError("Could not contact whois providers")
return ret
......
......@@ -508,7 +508,7 @@ success = False
for i in xrange(5):
try:
ret = conf.AS_resolver.resolve("8.8.8.8", "8.8.4.4")
except socket.error:
except RuntimeError:
time.sleep(2)
else:
success = True
......@@ -516,7 +516,7 @@ for i in xrange(5):
assert (len(ret) == 2)
all(x[1] == 15169 for x in ret)
all(x[1] == "AS15169" for x in ret)
############
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment