Thuban
2017-09-03 386e879869ec7420093c3ac477bd12ec00c6b550
vilain.py
@@ -24,6 +24,7 @@
import configparser
import re
import logging
import logging.handlers
import subprocess
import asyncio
import time
@@ -38,10 +39,13 @@
    sys.exit(1)
# Configure logging
log_handler = logging.handlers.WatchedFileHandler(LOGFILE)
formatter = logging.Formatter(
        '%(asctime)s %(module)s:%(funcName)s:%(message)s',
        '%b %d %H:%M:%S')
log_handler.setFormatter(formatter)
logger = logging.getLogger(__name__)
logging.basicConfig(filename=LOGFILE,
                    format='%(asctime)s %(module)s:%(funcName)s:%(message)s',
                    datefmt='%H:%M:%S')
logger.addHandler(log_handler)
logger.setLevel(logging.INFO)
# functions
@@ -156,7 +160,7 @@
                                    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):
@@ -164,7 +168,7 @@
        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')
@@ -185,9 +189,9 @@
        """
        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: