summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorBob Halley <halley@dnspython.org>2023-04-07 06:44:22 -0700
committerGitHub <noreply@github.com>2023-04-07 06:44:22 -0700
commit7017bb55565df81aec30a5e9f86b2b193b0315e4 (patch)
tree5cbc2bcf91eb6ef3945350a8a6e569d56937599f /examples
parent579974f5522fdce4a5a8a125daa25cc4db23c4b3 (diff)
downloaddnspython-7017bb55565df81aec30a5e9f86b2b193b0315e4.tar.gz
Add basic DDR support. (#919)
* Add basic DDR support.
Diffstat (limited to 'examples')
-rw-r--r--examples/ddr.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/examples/ddr.py b/examples/ddr.py
new file mode 100644
index 0000000..a8ecd9a
--- /dev/null
+++ b/examples/ddr.py
@@ -0,0 +1,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)