destination = None
return (af, destination, source)
-def send_https(session, what, lifetime=None):
- """
- :param session: a :class:`requests.sessions.Session`
- :param what: a :class:`requests.models.Request` or
- :class:`requests.models.PreparedRequest`.
- If it's a :class:`requests.models.Request`, it will be converted
- into a :class:`requests.models.PreparedRequest`.
- :param lifetime: timeout (in seconds)
- :return: a :class:`requests.models.Response` object.
- """
- if not have_doh:
- raise NoDOH
- if isinstance(what, requests.models.Request):
- what = what.prepare()
- return session.send(what, timeout=lifetime)
-
def https(q, where, timeout=None, port=443, af=None, source=None, source_port=0,
one_rr_per_rrset=False, ignore_trailing=False,
session=None, path='/dns-query', post=True,
})
response = session.post(url, headers=headers, data=wire,
stream=True, timeout=timeout,
- verify=verify)
+ verify=verify)
else:
wire = base64.urlsafe_b64encode(wire).decode('utf-8').strip("=")
url += "?dns={}".format(wire)
r = dns.query.https(q, valid_tls_url, session=self.session, bootstrap_address=ip)
self.assertTrue(q.is_response(r))
- def test_send_https(self):
- q = dns.message.make_query('example.com.', dns.rdatatype.A)
- wire = q.to_wire()
- query_string = '?dns={}'.format(base64.urlsafe_b64encode(wire).decode('utf-8').strip("="))
- request = requests.models.Request(
- 'GET',
- 'https://cloudflare-dns.com/dns-query{}'.format(query_string))
- r = request.prepare()
- response = dns.query.send_https(self.session, r)
- dns_resp = dns.message.from_wire(response.content)
- self.assertTrue(q.is_response(dns_resp))
-
def test_new_session(self):
nameserver_url = random.choice(KNOWN_ANYCAST_DOH_RESOLVER_URLS)
q = dns.message.make_query('example.com.', dns.rdatatype.A)