"""
from afs import exception
-from socket import inet_pton, inet_ntoa, AF_INET, AF_INET6;
-import dns.reversename
-import dns.resolver
+from socket import gethostbyname_ex, gethostbyaddr, gaierror, herror, inet_pton, inet_ntoa, AF_INET, AF_INET6
+import sys
cache_n2a = dict()
cache_a2n = dict()
cache_n2a[name].append(addr)
cache_a2n[addr] = name
+def add_ghb(name, addr, result):
+ hostname, aliaslist, ipaddrlist = result
+ if addr and addr not in ipaddrlist:
+ print("Inconsistent lookup of '", addr, "'", file=sys.stderr)
+ for i in ipaddrlist:
+ if name:
+ add(name, i)
+ add(hostname, i)
+ for j in aliaslist:
+ add(j, i)
+
###############################################################################
#
# Convert a name to an array of addresses in string form (eg. "1.2.3.4").
return cache_n2a[name]
try:
- for A in dns.resolver.query(name, 'A'):
- add(name, A.address)
- except dns.resolver.NoAnswer:
- pass
+ result = gethostbyname_ex(name)
+ except gaierror as e:
+ raise NetAddressError("Couldn't resolve '" + name + "'")
+ add_ghb(name, None, result)
return cache_n2a[name]
for addr in addrs:
try:
- revname = dns.reversename.from_address(addr)
- for PTR in dns.resolver.query(revname, 'PTR'):
- name = str(PTR).lower().rstrip(".")
- add(name, addr)
- return name
- except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
+ result = gethostbyaddr(addr)
+ add_ghb(None, addr, result)
+ return cache_a2n[addr]
+ except herror:
pass
return None