2016-11-23 10:23:27 -05:00
|
|
|
from . import util
|
|
|
|
|
|
|
|
import datetime
|
|
|
|
|
|
|
|
class BaddieProcessor:
|
|
|
|
|
|
|
|
def __init__(self, filters):
|
|
|
|
self._filters = filters
|
|
|
|
self._baddies = dict()
|
|
|
|
|
|
|
|
|
|
|
|
def hook(self, entry):
|
2016-11-24 08:22:55 -05:00
|
|
|
now = datetime.datetime.now()
|
2016-11-23 10:23:27 -05:00
|
|
|
for f in self._filters:
|
2016-11-24 08:26:34 -05:00
|
|
|
reason = f.process(entry)
|
|
|
|
if reason is not None:
|
|
|
|
self.add_baddie(entry, 'detected by {} on {} ({})'.format(f.name, now.strftime("%c").replace(":",'-'), reason))
|
2016-11-23 10:23:27 -05:00
|
|
|
|
|
|
|
def add_baddie(self, entry, reason):
|
2016-11-24 08:22:55 -05:00
|
|
|
addr = util.getaddress(entry).decode('ascii')
|
|
|
|
self._baddies[addr] = reason
|
2016-11-23 10:23:27 -05:00
|
|
|
|
|
|
|
def write_blocklist(self, f):
|
2016-11-23 10:23:47 -05:00
|
|
|
f.write('# baddies blocklist generated on {}\n'.format(datetime.datetime.now()))
|
2016-11-23 10:23:27 -05:00
|
|
|
for k in self._baddies:
|
|
|
|
f.write('{}:{}\n'.format(self._baddies[k], k))
|