summaryrefslogtreecommitdiff
path: root/examples/ddr.py
blob: a8ecd9adf0109bf2d2f4879fe877bfff92468e47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env python3

# Using Discovery of Designated Resolvers (synchronous I/O)

import dns.resolver

res = dns.resolver.Resolver(configure=False)
res.nameservers = ["1.1.1.1"]
# Invoke try_ddr() to attempt to upgrade the connection via DDR
res.try_ddr()
# Do a sample resolution
for rr in res.resolve("www.google.com", "A"):
    print(rr.address)
# Note that the nameservers have been upgraded
print(res.nameservers)


# Using Discovery of Designated Resolvers (asynchronous I/O)

# We show using asyncio, but if you comment out asyncio lines
# and uncomment the trio lines, it will work with trio too.

import asyncio

# import trio

import dns.asyncresolver


async def amain():
    res = dns.asyncresolver.Resolver(configure=False)
    res.nameservers = ["8.8.8.8"]
    await res.try_ddr()

    for rr in await res.resolve("www.google.com", "A"):
        print(rr.address)

    print(res.nameservers)


asyncio.run(amain())
# trio.run(amain)