Use new socket_factory to avoid using patched dnspython
This commit is contained in:
parent
db90716837
commit
4092e4e2cb
@ -35,13 +35,26 @@ import socket
|
|||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
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)'
|
||||||
__license__ = 'BSD'
|
__license__ = 'BSD'
|
||||||
__version__ = 1.3
|
__version__ = 1.4
|
||||||
|
_ttl = None
|
||||||
|
|
||||||
|
|
||||||
|
class custom_socket(socket.socket):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(custom_socket, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
def sendto(self, *args, **kwargs):
|
||||||
|
global _ttl
|
||||||
|
if _ttl:
|
||||||
|
self.setsockopt(socket.SOL_IP, socket.IP_TTL, _ttl)
|
||||||
|
super(custom_socket, self).sendto(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def test_import():
|
def test_import():
|
||||||
@ -158,10 +171,15 @@ def expert_report(trace_path, color_mode):
|
|||||||
|
|
||||||
|
|
||||||
def ping(resolver, hostname, dnsrecord, ttl):
|
def ping(resolver, hostname, dnsrecord, ttl):
|
||||||
|
global _ttl
|
||||||
|
|
||||||
reached = False
|
reached = False
|
||||||
|
|
||||||
|
dns.query.socket_factory = custom_socket
|
||||||
|
_ttl = ttl
|
||||||
|
|
||||||
try:
|
try:
|
||||||
resolver.query(hostname, dnsrecord, ipttl=ttl)
|
resolver.query(hostname, dnsrecord)
|
||||||
|
|
||||||
except dns.resolver.NoNameservers as e:
|
except dns.resolver.NoNameservers as e:
|
||||||
if not quiet:
|
if not quiet:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user