Python dnslib.DNSQuestion() Examples
The following are 14
code examples of dnslib.DNSQuestion().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
dnslib
, or try the search function
.
Example #1
Source File: test_handler_greendns.py From greendns with MIT License | 6 votes |
def test_on_upstream_response_BD(greendns): qname = "google.com" s = init_greendns_session(greendns, qname, dnslib.QTYPE.A) res = dnslib.DNSRecord(dnslib.DNSHeader(qr=1, aa=1, ra=1), q=dnslib.DNSQuestion(qname), a=dnslib.RR(qname, rdata=dnslib.A("1.2.3.4"), ttl=3)) s.server_resps[local_dns1] = bytes(res.pack()) resp = greendns.on_upstream_response(s, local_dns1) assert not resp res.rr[0].rdata = dnslib.A("172.217.24.14") s.server_resps[foreign_dns] = bytes(res.pack()) resp = greendns.on_upstream_response(s, foreign_dns) assert resp d = dnslib.DNSRecord.parse(resp) assert str(d.rr[0].rdata) == "172.217.24.14"
Example #2
Source File: test_handler_greendns.py From greendns with MIT License | 6 votes |
def test_on_upstream_response_AC(greendns): qname = "www.coding.net" s = init_greendns_session(greendns, qname, dnslib.QTYPE.A) res = dnslib.DNSRecord(dnslib.DNSHeader(qr=1, aa=1, ra=1), q=dnslib.DNSQuestion(qname), a=dnslib.RR(qname, rdata=dnslib.A("120.132.59.101"), ttl=3)) s.server_resps[foreign_dns] = bytes(res.pack()) resp = greendns.on_upstream_response(s, foreign_dns) assert not resp res.rr[0].rdata = dnslib.A("219.146.244.91") s.server_resps[local_dns1] = bytes(res.pack()) resp = greendns.on_upstream_response(s, local_dns1) assert resp d = dnslib.DNSRecord.parse(resp) assert str(d.rr[0].rdata) == "219.146.244.91"
Example #3
Source File: test_handler_greendns.py From greendns with MIT License | 6 votes |
def test_on_upstream_response_BC(greendns): qname = "www.x.net" s = init_greendns_session(greendns, qname, dnslib.QTYPE.A) res = dnslib.DNSRecord(dnslib.DNSHeader(qr=1, aa=1, ra=1), q=dnslib.DNSQuestion(qname), a=dnslib.RR(qname, rdata=dnslib.A("8.8.8.8"), ttl=3)) s.server_resps[local_dns1] = bytes(res.pack()) resp = greendns.on_upstream_response(s, local_dns1) assert not resp res.rr[0].rdata = dnslib.A("1.2.4.8") s.server_resps[foreign_dns] = bytes(res.pack()) resp = greendns.on_upstream_response(s, foreign_dns) assert resp d = dnslib.DNSRecord.parse(resp) assert str(d.rr[0].rdata) == "1.2.4.8"
Example #4
Source File: test_handler_greendns.py From greendns with MIT License | 6 votes |
def test_on_upstream_response_invalid_A(greendns): qname = "www.x.net" s = init_greendns_session(greendns, qname, dnslib.QTYPE.A) res = dnslib.DNSRecord(dnslib.DNSHeader(qr=1, aa=1, ra=1), q=dnslib.DNSQuestion(qname), a=dnslib.RR(qname, rdata=dnslib.A("1.2.4.8"), ttl=3)) s.server_resps[local_dns1] = bytes(res.pack()) resp = greendns.on_upstream_response(s, local_dns1) d = dnslib.DNSRecord.parse(resp) assert str(d.rr[0].rdata) == "1.2.4.8" s.server_resps[local_dns1] = b'123456' resp = greendns.on_upstream_response(s, local_dns1) assert not resp
Example #5
Source File: dns_server.py From XX-Net-mini with GNU General Public License v3.0 | 6 votes |
def send_request(self, id, domain, server): try: d = DNSRecord(DNSHeader(id)) d.add_question(DNSQuestion(domain, QTYPE.A)) req4_pack = d.pack() d = DNSRecord(DNSHeader(id)) d.add_question(DNSQuestion(domain, QTYPE.AAAA)) req6_pack = d.pack() self.sock.sendto(req4_pack, (server, 53)) # xlog.debug("send req:%s to:%s", domain, server) self.sock.sendto(req6_pack, (server, 53)) # xlog.debug("send req:%s to:%s", domain, server) except Exception as e: xlog.warn("send_request except:%r", e)
Example #6
Source File: dns.py From MINI-DNS-Server with MIT License | 6 votes |
def response(self): if self.lookup().is_valid(): record = dnslib.DNSRecord( dnslib.DNSHeader(id=self._record.header.id, qr=1, rd=1, ra=1), q=dnslib.DNSQuestion(self.domain) ) for address in self.multiaddr: answer = dnslib.RR(address.domain, ttl=address.ttl_now, rtype=qtype[address.rtype], rclass=_class[address.rclass], rdata=getattr(dnslib, address.rtype)(address.ip)) record.add_answer(answer) packs = record.pack() else: try: packs = self.dnsLookup.record.pack() except DNSLookupException: return b'' return packs
Example #7
Source File: test_server.py From greendns with MIT License | 5 votes |
def handle(self): data = self.request[0] d = dnslib.DNSRecord.parse(data) id = d.header.id sock = self.request[1] res = dnslib.DNSRecord(dnslib.DNSHeader(qr=1, aa=1, ra=1, id=id), q=dnslib.DNSQuestion(qname), a=dnslib.RR(qname, rdata=dnslib.A("101.226.103.106"), ttl=3)) sock.sendto(bytes(res.pack()), self.client_address)
Example #8
Source File: test_server.py From greendns with MIT License | 5 votes |
def handle(self): data = self.request[0] d = dnslib.DNSRecord.parse(data) id = d.header.id sock = self.request[1] res = dnslib.DNSRecord(dnslib.DNSHeader(qr=1, aa=1, ra=1, id=id), q=dnslib.DNSQuestion(qname), a=dnslib.RR(qname, rdata=dnslib.A("182.254.8.146"), ttl=3)) time.sleep(0.3) sock.sendto(bytes(res.pack()), self.client_address)
Example #9
Source File: test_handler_greendns.py From greendns with MIT License | 5 votes |
def test_on_client_request_with_cached(greendns): qname = "qq.com" id = 1024 s = init_greendns_session(greendns, qname, dnslib.QTYPE.A, id) res = dnslib.DNSRecord(dnslib.DNSHeader(qr=1, aa=1, ra=1), q=dnslib.DNSQuestion(qname), a=dnslib.RR(qname, rdata=dnslib.A("101.226.103.106"), ttl=3)) greendns.cache.add(("qq.com.", 1), res, 3) is_continue, raw_resp = greendns.on_client_request(s) assert not is_continue assert raw_resp d = dnslib.DNSRecord.parse(raw_resp) assert d.header.id == id
Example #10
Source File: test_handler_greendns.py From greendns with MIT License | 5 votes |
def test_on_client_request_with_cache_expired(greendns): qname = "qqq.com" id = 1024 s = init_greendns_session(greendns, qname, dnslib.QTYPE.A, id) res = dnslib.DNSRecord(dnslib.DNSHeader(qr=1, aa=1, ra=1), q=dnslib.DNSQuestion(qname), a=dnslib.RR(qname, rdata=dnslib.A("101.226.103.106"), ttl=3)) greendns.cache.add(("qqq.com.", 1), res, 3) time.sleep(4) is_continue, raw_resp = greendns.on_client_request(s) assert is_continue assert not raw_resp
Example #11
Source File: test_handler_greendns.py From greendns with MIT License | 5 votes |
def test_on_upstream_response_not_A(greendns): qname = "www.microsoft.com" qresult = "www.microsoft.com-c-2.edgekey.net." s = init_greendns_session(greendns, qname, dnslib.QTYPE.CNAME) res = dnslib.DNSRecord(dnslib.DNSHeader(qr=1, aa=1, ra=1), q=dnslib.DNSQuestion(qname), a=dnslib.RR(qname, rtype=dnslib.QTYPE.CNAME, rdata=dnslib.CNAME(qresult), ttl=3)) s.server_resps[local_dns1] = bytes(res.pack()) resp = greendns.on_upstream_response(s, local_dns1) assert resp d = dnslib.DNSRecord.parse(resp) assert str(d.rr[0].rdata) == qresult
Example #12
Source File: test_handler_greendns.py From greendns with MIT License | 5 votes |
def test_shuffer_A(greendns): qname = "qq.com" id = 1024 s = init_greendns_session(greendns, qname, dnslib.QTYPE.A, id) res = dnslib.DNSRecord(dnslib.DNSHeader(qr=1, aa=1, ra=1), q=dnslib.DNSQuestion(qname), a=dnslib.RR(qname, dnslib.QTYPE.CNAME, rdata=dnslib.CNAME("https.qq.com"), ttl=3)) res.add_answer(dnslib.RR(qname, rdata=dnslib.A("101.226.103.106"), ttl=3)) res.add_answer(dnslib.RR(qname, rdata=dnslib.A("101.226.103.107"), ttl=3)) greendns.cache.add(("qq.com.", 1), res, 3) d = None for i in range(10): is_continue, raw_resp = greendns.on_client_request(s) assert not is_continue assert raw_resp d = dnslib.DNSRecord.parse(raw_resp) if str(d.rr[1].rdata) == "101.226.103.107": break assert d.rr[0].rtype == dnslib.QTYPE.CNAME assert str(d.rr[1].rdata) == "101.226.103.107"
Example #13
Source File: proxylib.py From arkc-client with GNU General Public License v2.0 | 4 votes |
def dnslib_resolve_over_tcp(query, dnsservers, timeout, **kwargs): """dns query over tcp""" if not isinstance(query, (basestring, dnslib.DNSRecord)): raise TypeError('query argument requires string/DNSRecord') blacklist = kwargs.get('blacklist', ()) blacklist_prefix = tuple(x for x in blacklist if x.endswith('.')) def do_resolve(query, dnsserver, timeout, queobj): if isinstance(query, basestring): qtype = dnslib.QTYPE.AAAA if ':' in dnsserver else dnslib.QTYPE.A query = dnslib.DNSRecord(q=dnslib.DNSQuestion(query, qtype=qtype)) query_data = query.pack() sock_family = socket.AF_INET6 if ':' in dnsserver else socket.AF_INET sock = socket.socket(sock_family) rfile = None try: sock.settimeout(timeout or None) sock.connect(parse_hostport(dnsserver, 53)) sock.send(struct.pack('>h', len(query_data)) + query_data) rfile = sock.makefile('r', 1024) reply_data_length = rfile.read(2) if len(reply_data_length) < 2: raise socket.gaierror(11004, 'getaddrinfo %r from %r failed' % (query.q.qname, dnsserver)) reply_data = rfile.read(struct.unpack('>h', reply_data_length)[0]) record = dnslib.DNSRecord.parse(reply_data) iplist = [str(x.rdata) for x in record.rr if x.rtype in (1, 28, 255)] if any(x in blacklist or x.startswith(blacklist_prefix) for x in iplist): logging.debug('qname=%r dnsserver=%r record bad iplist=%r', query.q.qname, dnsserver, iplist) raise socket.gaierror(11004, 'getaddrinfo %r from %r failed' % (query, dnsserver)) else: logging.debug('qname=%r dnsserver=%r record iplist=%s', query.q.qname, dnsserver, iplist) queobj.put(record) except socket.error as e: logging.debug('qname=%r dnsserver=%r failed %r', query.q.qname, dnsserver, e) queobj.put(e) finally: if rfile: rfile.close() sock.close() queobj = Queue.Queue() for dnsserver in dnsservers: thread.start_new_thread(do_resolve, (query, dnsserver, timeout, queobj)) for i in range(len(dnsservers)): try: result = queobj.get(timeout) except Queue.Empty: raise socket.gaierror(11004, 'getaddrinfo %r from %r failed' % (query, dnsservers)) if result and not isinstance(result, Exception): return result elif i == len(dnsservers) - 1: logging.warning('dnslib_resolve_over_tcp %r with %s return %r', query, dnsservers, result) raise socket.gaierror(11004, 'getaddrinfo %r from %r failed' % (query, dnsservers))
Example #14
Source File: dnsproxy.py From arkc-client with GNU General Public License v2.0 | 4 votes |
def dnslib_resolve_over_tcp(query, dnsservers, timeout, **kwargs): """dns query over tcp""" if not isinstance(query, (basestring, dnslib.DNSRecord)): raise TypeError('query argument requires string/DNSRecord') blacklist = kwargs.get('blacklist', ()) def do_resolve(query, dnsserver, timeout, queobj): if isinstance(query, basestring): qtype = dnslib.QTYPE.AAAA if ':' in dnsserver else dnslib.QTYPE.A query = dnslib.DNSRecord(q=dnslib.DNSQuestion(query, qtype=qtype)) query_data = query.pack() sock_family = socket.AF_INET6 if ':' in dnsserver else socket.AF_INET sock = socket.socket(sock_family) rfile = None try: sock.settimeout(timeout or None) sock.connect(parse_hostport(dnsserver, 53)) sock.send(struct.pack('>h', len(query_data)) + query_data) rfile = sock.makefile('r', 1024) reply_data_length = rfile.read(2) if len(reply_data_length) < 2: raise socket.gaierror(11004, 'getaddrinfo %r from %r failed' % (query, dnsserver)) reply_data = rfile.read(struct.unpack('>h', reply_data_length)[0]) record = dnslib.DNSRecord.parse(reply_data) iplist = [str(x.rdata) for x in record.rr if x.rtype in (1, 28, 255)] if any(x in blacklist for x in iplist): logging.debug('query=%r dnsserver=%r record bad iplist=%r', query, dnsserver, iplist) raise socket.gaierror(11004, 'getaddrinfo %r from %r failed' % (query, dnsserver)) else: logging.debug('query=%r dnsserver=%r record iplist=%s', query, dnsserver, iplist) queobj.put(record) except socket.error as e: logging.debug('query=%r dnsserver=%r failed %r', query, dnsserver, e) queobj.put(e) finally: if rfile: rfile.close() sock.close() queobj = Queue.Queue() for dnsserver in dnsservers: thread.start_new_thread(do_resolve, (query, dnsserver, timeout, queobj)) for i in range(len(dnsservers)): try: result = queobj.get(timeout) except Queue.Empty: raise socket.gaierror(11004, 'getaddrinfo %r from %r failed' % (query, dnsservers)) if result and not isinstance(result, Exception): return result elif i == len(dnsservers) - 1: logging.warning('dnslib_resolve_over_tcp %r with %s return %r', query, dnsservers, result) raise socket.gaierror(11004, 'getaddrinfo %r from %r failed' % (query, dnsservers))