Module jumpscale.tools.dnstool
Helper to get nameservers information and resolving domains.
Expand source code
"""
Helper to get nameservers information and resolving domains.
"""
import dns
import dns.message
import dns.rdataclass
import dns.rdatatype
import dns.query
import dns.resolver
class DNSClient:
def __init__(self, nameservers=None, port=53):
self.nameservers = nameservers or ["8.8.8.8", "8.8.4.4"]
if "localhost" in self.nameservers:
nameservers.pop(nameservers.index("localhost"))
nameservers.append("127.0.0.1")
self.resolver = dns.resolver.Resolver(configure=False)
self.resolver.nameservers = self.nameservers
self.resolver.port = port
def get_nameservers(self, domain="threefoldtoken.org"):
answer = self.resolver.query(domain, "NS")
res = []
for rr in answer:
res.append(rr.target.to_text())
return res
def get_namerecords(self, url="www.threefoldtoken.org"):
"""
return ip addr for a full name
"""
answer = self.resolver.query(url, "A")
res = []
for rr in answer:
res.append(rr.address)
return res
def is_free(self, domain, domain_type="A"):
try:
self.query(domain, domain_type)
except:
return True
return False
def query(self, *args, **kwargs):
return self.resolver.query(*args, **kwargs)
def export_module_as():
return DNSClient()
Functions
def export_module_as()
-
Expand source code
def export_module_as(): return DNSClient()
Classes
class DNSClient (nameservers=None, port=53)
-
Expand source code
class DNSClient: def __init__(self, nameservers=None, port=53): self.nameservers = nameservers or ["8.8.8.8", "8.8.4.4"] if "localhost" in self.nameservers: nameservers.pop(nameservers.index("localhost")) nameservers.append("127.0.0.1") self.resolver = dns.resolver.Resolver(configure=False) self.resolver.nameservers = self.nameservers self.resolver.port = port def get_nameservers(self, domain="threefoldtoken.org"): answer = self.resolver.query(domain, "NS") res = [] for rr in answer: res.append(rr.target.to_text()) return res def get_namerecords(self, url="www.threefoldtoken.org"): """ return ip addr for a full name """ answer = self.resolver.query(url, "A") res = [] for rr in answer: res.append(rr.address) return res def is_free(self, domain, domain_type="A"): try: self.query(domain, domain_type) except: return True return False def query(self, *args, **kwargs): return self.resolver.query(*args, **kwargs)
Methods
def get_namerecords(self, url='www.threefoldtoken.org')
-
return ip addr for a full name
Expand source code
def get_namerecords(self, url="www.threefoldtoken.org"): """ return ip addr for a full name """ answer = self.resolver.query(url, "A") res = [] for rr in answer: res.append(rr.address) return res
def get_nameservers(self, domain='threefoldtoken.org')
-
Expand source code
def get_nameservers(self, domain="threefoldtoken.org"): answer = self.resolver.query(domain, "NS") res = [] for rr in answer: res.append(rr.target.to_text()) return res
def is_free(self, domain, domain_type='A')
-
Expand source code
def is_free(self, domain, domain_type="A"): try: self.query(domain, domain_type) except: return True return False
def query(self, *args, **kwargs)
-
Expand source code
def query(self, *args, **kwargs): return self.resolver.query(*args, **kwargs)