awslabs / awslabs/aws-crt-python

How to provide a custom DNS resolver

Open
#470 2 comments 0 reactions 0 assignees View on GitHub
documentation feature-request p3
Dominant language
Python
Stars
100
Forks
58
Avg merge
13h 51m
Merged PRs (30d)
2

Description

### Describe the issue

The documentation mentions `HostResolverBase` but doesn't describe its interface. Is it possible to provide our own resolver based on this class?

One that uses DoH, as in the example below:

```python
import dns.message
import dns.resolver
import requests

def resolve(qname, rdtype=dns.rdatatype.A, rdclass=dns.rdataclass.IN, url="https://dns.google/dns-query"):
query = dns.message.make_query(qname, rdtype, rdclass)
query_data = query.to_wire()
headers = {'content-type': 'application/dns-message'}
response = requests.post(url, data=query_data, headers=headers)
response_data = response.content
response = dns.message.from_wire(response_data)
ips = []
if response.answer:
answer = dns.resolver.Answer(qname=qname, rdtype=rdtype, rdclass=rdclass, response=response)
if answer.rrset.rdtype == dns.rdatatype.A:
for record in answer.rrset:
ip = record.to_text()
ips.append(ip)
return ips
```

I don't use the AWS CRT directly, but by using the Mqtt connection builder with AWS IoT SDK V2.

### Links

https://awslabs.github.io/aws-crt-python/api/io.html#awscrt.io.HostResolverBase

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.