The unified diff between revisions [6d4712d0..] and [31c5cb9f..] is displayed below. It can also be downloaded as a raw diff.
#
#
# patch "twistedrbl.py"
# from [e5749b334cad76c3d382f6bb2283dd3cf8cb7500]
# to [df13b4b1ce8c0fc9497c837dfff66c753c77d564]
#
============================================================
--- twistedrbl.py e5749b334cad76c3d382f6bb2283dd3cf8cb7500
+++ twistedrbl.py df13b4b1ce8c0fc9497c837dfff66c753c77d564
@@ -4,6 +4,7 @@ import fcntl, os, sys, re
from twisted.protocols import basic
from twisted.names import client
import fcntl, os, sys, re
+import datetime, time
spam_info_re = re.compile(r'^(?P<date>[^ ]+ [^ ]+ [^ ]+) (?P<scannerhost>[^ ]+) filter-module\[(?P<pid>\d+)\]: (?P<queueid>\w+): spam_status=(?P<spamstatus>[^ ]+) \(from=(?P<from>[^ ]*) to=(?P<to>[^ ]*) uwa_client_ip= ?(?P<ip>[\d\.]+) \((?P<class>[^\)]+)\) message_id= ?(?P<message_id>.*)$')
@@ -22,15 +23,17 @@ class Echo(basic.LineReceiver):
def connectionMade(self):
self.log_fd.write('Connection established.\n')
- def dns_response(self, querying_rbl, ipr, track, line, is_ok, result):
+ def dns_response(self, result, args):
+ querying_rbl, ipr, track, line, is_ok = args
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))
+ line_time = time.mktime(time.strptime(line['date'] + ' 2006', '%b %d %H:%M:%S %Y'))
+ self.result_fd.write("%d %s %s in_kas=%s in_rbl=%s\n" % (int(line_time),
+ querying_rbl,
+ line['ip'],
+ in_kas,
+ in_rbl))
def lineReceived(self, line):
match = spam_info_re.match(line)
@@ -43,9 +46,8 @@ class Echo(basic.LineReceiver):
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)
+ deferred.addCallback(self.dns_response, [rbl, ipr, self.track, match, True])
+ deferred.addErrback(self.dns_response, [rbl, ipr, self.track, match, False])
if __name__ == '__main__':
log_fd = open('log.txt', 'w')