summaryrefslogtreecommitdiff
path: root/lib/dnspython/examples
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2010-03-29 16:08:11 +0200
committerJelmer Vernooij <jelmer@samba.org>2010-03-29 18:05:29 +0200
commit4bbc3ff037026c72f3249f59c1b5af69a6ad6d69 (patch)
tree125857a1edbf3246579e51b10f6e62ec875062bc /lib/dnspython/examples
parent89aa3b766b926d19dac4805a7e72433e497ce872 (diff)
downloadsamba-4bbc3ff037026c72f3249f59c1b5af69a6ad6d69.tar.gz
samba-4bbc3ff037026c72f3249f59c1b5af69a6ad6d69.tar.bz2
samba-4bbc3ff037026c72f3249f59c1b5af69a6ad6d69.zip
s4-python: Move dnspython to lib/, like the other Python modules
This also avoids it from being installed if it's already present on the system.
Diffstat (limited to 'lib/dnspython/examples')
-rwxr-xr-xlib/dnspython/examples/ddns.py51
-rwxr-xr-xlib/dnspython/examples/e164.py6
-rwxr-xr-xlib/dnspython/examples/mx.py7
-rwxr-xr-xlib/dnspython/examples/name.py13
-rwxr-xr-xlib/dnspython/examples/reverse.py40
-rwxr-xr-xlib/dnspython/examples/reverse_name.py6
-rwxr-xr-xlib/dnspython/examples/xfr.py10
7 files changed, 133 insertions, 0 deletions
diff --git a/lib/dnspython/examples/ddns.py b/lib/dnspython/examples/ddns.py
new file mode 100755
index 0000000000..84814b73cf
--- /dev/null
+++ b/lib/dnspython/examples/ddns.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+
+#
+# Use a TSIG-signed DDNS update to update our hostname-to-address
+# mapping.
+#
+# usage: ddns.py <ip-address>
+#
+# On linux systems, you can automatically update your DNS any time an
+# interface comes up by adding an ifup-local script that invokes this
+# python code.
+#
+# E.g. on my systems I have this
+#
+# #!/bin/sh
+#
+# DEVICE=$1
+#
+# if [ "X${DEVICE}" == "Xeth0" ]; then
+# IPADDR=`LANG= LC_ALL= ifconfig ${DEVICE} | grep 'inet addr' |
+# awk -F: '{ print $2 } ' | awk '{ print $1 }'`
+# /usr/local/sbin/ddns.py $IPADDR
+# fi
+#
+# in /etc/ifup-local.
+#
+
+import sys
+
+import dns.update
+import dns.query
+import dns.tsigkeyring
+
+#
+# Replace the keyname and secret with appropriate values for your
+# configuration.
+#
+keyring = dns.tsigkeyring.from_text({
+ 'keyname.' : 'NjHwPsMKjdN++dOfE5iAiQ=='
+ })
+
+#
+# Replace "example." with your domain, and "host" with your hostname.
+#
+update = dns.update.Update('example.', keyring=keyring)
+update.replace('host', 300, 'A', sys.argv[1])
+
+#
+# Replace "10.0.0.1" with the IP address of your master server.
+#
+response = dns.query.tcp(update, '10.0.0.1', timeout=10)
diff --git a/lib/dnspython/examples/e164.py b/lib/dnspython/examples/e164.py
new file mode 100755
index 0000000000..ad40ccf84b
--- /dev/null
+++ b/lib/dnspython/examples/e164.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python
+
+import dns.e164
+n = dns.e164.from_e164("+1 555 1212")
+print n
+print dns.e164.to_e164(n)
diff --git a/lib/dnspython/examples/mx.py b/lib/dnspython/examples/mx.py
new file mode 100755
index 0000000000..3036e70ddf
--- /dev/null
+++ b/lib/dnspython/examples/mx.py
@@ -0,0 +1,7 @@
+#!/usr/bin/env python
+
+import dns.resolver
+
+answers = dns.resolver.query('nominum.com', 'MX')
+for rdata in answers:
+ print 'Host', rdata.exchange, 'has preference', rdata.preference
diff --git a/lib/dnspython/examples/name.py b/lib/dnspython/examples/name.py
new file mode 100755
index 0000000000..b099c49d16
--- /dev/null
+++ b/lib/dnspython/examples/name.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+
+import dns.name
+
+n = dns.name.from_text('www.dnspython.org')
+o = dns.name.from_text('dnspython.org')
+print n.is_subdomain(o) # True
+print n.is_superdomain(o) # False
+print n > o # True
+rel = n.relativize(o) # rel is the relative name www
+n2 = rel + o
+print n2 == n # True
+print n.labels # ['www', 'dnspython', 'org', '']
diff --git a/lib/dnspython/examples/reverse.py b/lib/dnspython/examples/reverse.py
new file mode 100755
index 0000000000..8657baed44
--- /dev/null
+++ b/lib/dnspython/examples/reverse.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+
+# Usage: reverse.py <zone_filename>...
+#
+# This demo script will load in all of the zones specified by the
+# filenames on the command line, find all the A RRs in them, and
+# construct a reverse mapping table that maps each IP address used to
+# the list of names mapping to that address. The table is then sorted
+# nicely and printed.
+#
+# Note! The zone name is taken from the basename of the filename, so
+# you must use filenames like "/wherever/you/like/dnspython.org" and
+# not something like "/wherever/you/like/foo.db" (unless you're
+# working with the ".db" GTLD, of course :)).
+#
+# If this weren't a demo script, there'd be a way of specifying the
+# origin for each zone instead of constructing it from the filename.
+
+import dns.zone
+import dns.ipv4
+import os.path
+import sys
+
+reverse_map = {}
+
+for filename in sys.argv[1:]:
+ zone = dns.zone.from_file(filename, os.path.basename(filename),
+ relativize=False)
+ for (name, ttl, rdata) in zone.iterate_rdatas('A'):
+ try:
+ reverse_map[rdata.address].append(name.to_text())
+ except KeyError:
+ reverse_map[rdata.address] = [name.to_text()]
+
+keys = reverse_map.keys()
+keys.sort(lambda a1, a2: cmp(dns.ipv4.inet_aton(a1), dns.ipv4.inet_aton(a2)))
+for k in keys:
+ v = reverse_map[k]
+ v.sort()
+ print k, v
diff --git a/lib/dnspython/examples/reverse_name.py b/lib/dnspython/examples/reverse_name.py
new file mode 100755
index 0000000000..351896b015
--- /dev/null
+++ b/lib/dnspython/examples/reverse_name.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python
+
+import dns.reversename
+n = dns.reversename.from_address("127.0.0.1")
+print n
+print dns.reversename.to_address(n)
diff --git a/lib/dnspython/examples/xfr.py b/lib/dnspython/examples/xfr.py
new file mode 100755
index 0000000000..5cd6f55c06
--- /dev/null
+++ b/lib/dnspython/examples/xfr.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+
+import dns.query
+import dns.zone
+
+z = dns.zone.from_xfr(dns.query.xfr('204.152.189.147', 'dnspython.org'))
+names = z.nodes.keys()
+names.sort()
+for n in names:
+ print z[n].to_text(n)