From 91230381cb243f7dc7519ca3724239e82bae7d86 Mon Sep 17 00:00:00 2001
From: Stuart Gathman <stuart@gathman.org>
Date: Tue, 25 Sep 2007 02:15:35 +0000
Subject: [PATCH] Test dns.py
---
Milter/dns.py | 30 ++++++++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/Milter/dns.py b/Milter/dns.py
index 21941c2..4722940 100644
--- a/Milter/dns.py
+++ b/Milter/dns.py
@@ -24,6 +24,23 @@ class Session(object):
def __init__(self):
self.cache = {}
+ # We have to be careful which additional DNS RRs we cache. For
+ # instance, PTR records are controlled by the connecting IP, and they
+ # could poison our local cache with bogus A and MX records.
+
+ SAFE2CACHE = {
+ ('MX','A'): None,
+ ('MX','MX'): None,
+ ('CNAME','A'): None,
+ ('CNAME','CNAME'): None,
+ ('A','A'): None,
+ ('AAAA','AAAA'): None,
+ ('PTR','PTR'): None,
+ ('TXT','TXT'): None,
+ ('SPF','SPF'): None
+ }
+
+
def dns(self, name, qtype, cnames=None):
"""DNS query.
@@ -42,8 +59,8 @@ class Session(object):
cname = None
if not result:
- safe2cache = query.SAFE2CACHE
- for k, v in DNSLookup(name, qtype, self.strict):
+ safe2cache = Session.SAFE2CACHE
+ for k, v in DNSLookup(name, qtype):
if k == (name, 'CNAME'):
cname = v
if (qtype,k[1]) in safe2cache:
@@ -60,3 +77,12 @@ class Session(object):
raise DNSError, 'CNAME loop'
result = self.dns(cname, qtype, cnames=cnames)
return result
+
+DNS.DiscoverNameServers()
+
+if __name__ == '__main__':
+ import sys
+ s = Session()
+ for n,t in zip(*[iter(sys.argv[1:])]*2):
+ print n,t
+ print s.dns(n,t)
--
GitLab