| | |
| | | await self.bad_ip_queue.put({'ip' : bad_ip, 'maxtries': maxtries, 'reason' : reason}) |
| | | logger.debug('queue size: {}'.format(self.bad_ip_queue.qsize())) |
| | | else: |
| | | logger.info('line match {}. But IP in ingore list'.format(bad_ip)) |
| | | logger.info('line match {}. But IP in ignore list'.format(bad_ip)) |
| | | size = stat.st_size |
| | | |
| | | async def ban_ips(self): |
| | |
| | | record time when this IP has been seen in ip_seen_at = { ip:{'time':<time>,'count':<counter} } |
| | | and ban with pf |
| | | """ |
| | | logger.info('ban_ips sarted') |
| | | logger.info('ban_ips started') |
| | | while True: |
| | | ip_item = await self.bad_ip_queue.get() |
| | | logger.debug('ban_ips awake') |
| | |
| | | """ |
| | | check old ip in ip_seen_at : remove older than watch_while |
| | | """ |
| | | logger.info('clean_ips sarted with sleeptime={}'.format(self.sleeptime)) |
| | | logger.info('clean_ips started with sleeptime={}'.format(self.sleeptime)) |
| | | while True: |
| | | await asyncio.sleep(self.sleeptime) |
| | | await asyncio.sleep(self.watch_while) |
| | | to_remove = [] |
| | | for recorded_ip, data in self.ip_seen_at.items(): |
| | | if time.time() - data['time'] >= self.watch_while: |