Fix looking up NS record from root server
- also resolve hostname to IP if name is given as dns server - raise timeout to 2 seconds
This commit is contained in:
parent
364312cbac
commit
b23a3ce081
@ -38,7 +38,6 @@ import time
|
|||||||
import dns.query
|
import dns.query
|
||||||
import dns.rdatatype
|
import dns.rdatatype
|
||||||
import dns.resolver
|
import dns.resolver
|
||||||
|
|
||||||
from cymruwhois import cymruwhois
|
from cymruwhois import cymruwhois
|
||||||
|
|
||||||
__author__ = 'Babak Farrokhi (babak@farrokhi.net)'
|
__author__ = 'Babak Farrokhi (babak@farrokhi.net)'
|
||||||
@ -181,7 +180,7 @@ def ping(resolver, hostname, dnsrecord, ttl):
|
|||||||
_ttl = ttl
|
_ttl = ttl
|
||||||
|
|
||||||
try:
|
try:
|
||||||
resolver.query(hostname, dnsrecord)
|
resolver.query(hostname, dnsrecord, raise_on_no_answer=False)
|
||||||
|
|
||||||
except dns.resolver.NoNameservers as e:
|
except dns.resolver.NoNameservers as e:
|
||||||
if not quiet:
|
if not quiet:
|
||||||
@ -199,8 +198,8 @@ def ping(resolver, hostname, dnsrecord, ttl):
|
|||||||
pass
|
pass
|
||||||
except SystemExit:
|
except SystemExit:
|
||||||
pass
|
pass
|
||||||
except:
|
except Exception as e:
|
||||||
print("unxpected error: ", sys.exc_info()[0])
|
print("unxpected error: ", e)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
reached = True
|
reached = True
|
||||||
@ -222,7 +221,7 @@ def main():
|
|||||||
|
|
||||||
dnsrecord = 'A'
|
dnsrecord = 'A'
|
||||||
count = 30
|
count = 30
|
||||||
timeout = 1
|
timeout = 2
|
||||||
dnsserver = dns.resolver.get_default_resolver().nameservers[0]
|
dnsserver = dns.resolver.get_default_resolver().nameservers[0]
|
||||||
dest_port = 53
|
dest_port = 53
|
||||||
hops = 0
|
hops = 0
|
||||||
@ -273,6 +272,16 @@ def main():
|
|||||||
|
|
||||||
color = Colors(color_mode)
|
color = Colors(color_mode)
|
||||||
|
|
||||||
|
# check if we have a valid dns server address
|
||||||
|
try:
|
||||||
|
ipaddress.ip_address(dnsserver)
|
||||||
|
except ValueError: # so it is not a valid IPv4 or IPv6 address, so try to resolve host name
|
||||||
|
try:
|
||||||
|
dnsserver = socket.getaddrinfo(dnsserver, port=None, family=socket.AF_INET)[1][4][0]
|
||||||
|
except OSError:
|
||||||
|
print('Error: cannot resolve hostname:', dnsserver)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
resolver = dns.resolver.Resolver()
|
resolver = dns.resolver.Resolver()
|
||||||
resolver.nameservers = [dnsserver]
|
resolver.nameservers = [dnsserver]
|
||||||
resolver.timeout = timeout
|
resolver.timeout = timeout
|
||||||
@ -286,7 +295,8 @@ def main():
|
|||||||
trace_path = []
|
trace_path = []
|
||||||
|
|
||||||
if not quiet:
|
if not quiet:
|
||||||
print("%s DNS: %s:%d, hostname: %s, rdatatype: %s" % (__PROGNAME__, dnsserver, dest_port, hostname, dnsrecord))
|
print("%s DNS: %s:%d, hostname: %s, rdatatype: %s" % (__PROGNAME__, dnsserver, dest_port, hostname, dnsrecord),
|
||||||
|
flush=True)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
if shutdown:
|
if shutdown:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user