update logic

This commit is contained in:
Jeff Becker 2016-11-24 08:26:34 -05:00
parent d0e76fa6eb
commit fb77e988e5
2 changed files with 8 additions and 6 deletions

View file

@ -7,7 +7,7 @@ class Filter:
def process(self, info): def process(self, info):
""" """
process an info and return True if it should be added to blocklist process an info and return a string representation of a reason to add to blocklist
any other return value will cause this info to NOT be added to blocklist any other return value will cause this info to NOT be added to blocklist
""" """
@ -22,11 +22,12 @@ class FloodfillFilter(Filter):
def process(self, info): def process(self, info):
caps = util.getcaps(info) caps = util.getcaps(info)
if not caps: if not caps:
return False return
if b'f' not in caps: if b'f' not in caps:
return False return
h = util.getaddress(info) h = util.getaddress(info)
if h not in self._floodfills: if h not in self._floodfills:
self._floodfills[h] = 0 self._floodfills[h] = 0
self._floodfills[h] += 1 self._floodfills[h] += 1
return self._floodfills[h] > self.fmax if self._floodfills[h] > self.fmax:
return '{} > {} floodfills per ip'.format(self._floodfills[h], self.fmax)

View file

@ -12,8 +12,9 @@ class BaddieProcessor:
def hook(self, entry): def hook(self, entry):
now = datetime.datetime.now() now = datetime.datetime.now()
for f in self._filters: for f in self._filters:
if f.process(entry) is True: reason = f.process(entry)
self.add_baddie(entry, 'detected by {} on {}'.format(f.name, now.strftime("%c").replace(":",'-'))) if reason is not None:
self.add_baddie(entry, 'detected by {} on {} ({})'.format(f.name, now.strftime("%c").replace(":",'-'), reason))
def add_baddie(self, entry, reason): def add_baddie(self, entry, reason):
addr = util.getaddress(entry).decode('ascii') addr = util.getaddress(entry).decode('ascii')