The unified diff between revisions [1f414f68..] and [6d4712d0..] is displayed below. It can also be downloaded as a raw diff.
#
#
# patch "twistedrbl.py"
# from [be28b7fcae565230b2cbdd157aa5d3707af6056c]
# to [e5749b334cad76c3d382f6bb2283dd3cf8cb7500]
#
============================================================
--- twistedrbl.py be28b7fcae565230b2cbdd157aa5d3707af6056c
+++ twistedrbl.py e5749b334cad76c3d382f6bb2283dd3cf8cb7500
@@ -13,32 +13,43 @@ class Echo(basic.LineReceiver):
class Echo(basic.LineReceiver):
delimiter = '\n'
- def __init__(self, log_fd):
+ def __init__(self, log_fd, result_fd):
self.log_fd = log_fd
+ self.result_fd = result_fd
self.resolver = client.createResolver()
+ self.track = 0
def connectionMade(self):
self.log_fd.write('Connection established.\n')
- def dns_response(self, line, is_ok, result):
- if is_ok:
- self.log_fd.write("got a response: %s for %s\n" % (result, line))
-
+ def dns_response(self, querying_rbl, ipr, track, line, is_ok, result):
+ in_rbl = is_ok and result and result.startswith('127.0.0')
+ in_kas = line['spamstatus'] != 'no'
+ log_fd.write('result for %s (%d)\n' % (ipr, track))
+ self.result_fd.write("date=%s rbl=%s ip=%s in_kas=%s in_rbl=%s\n" % (line['date'],
+ querying_rbl,
+ line['ip'],
+ in_kas,
+ in_rbl))
+
def lineReceived(self, line):
match = spam_info_re.match(line)
if not match:
return
match = match.groupdict()
ip_address = match['ip']
- ipr = '.'.join(reversed(ip_address.split('.'))) + '.' + 'dnsbl.sorbs.net'
- self.log_fd.write('starting query up for %s\n' % (ipr))
- deferred = self.resolver.getHostByName(ipr)
- response = lambda x: self.dns_response(match, True, x)
- error = lambda x: self.dns_response(match, False, x)
- deferred.addCallbacks(response, error)
+ for rbl in ['bl.spamcop.net', 'sbl-xbl.spamhaus.org', 'dnsbl.sorbs.net']:
+ self.track += 1
+ ipr = '.'.join(reversed(ip_address.split('.'))) + '.' + rbl
+ log_fd.write('%s (%d) issued\n' % (ipr, self.track))
+ deferred = self.resolver.getHostByName(ipr)
+ response = lambda x: self.dns_response(rbl, ipr, self.track, match, True, x)
+ error = lambda x: self.dns_response(rbl, ipr, self.track, match, False, x)
+ deferred.addCallbacks(response, error)
if __name__ == '__main__':
log_fd = open('log.txt', 'w')
- stdio.StandardIO(Echo(log_fd))
+ result_fd = open('result.txt', 'w')
+ stdio.StandardIO(Echo(log_fd, result_fd))
from twisted.internet import reactor
reactor.run()