from Config import * import pickle, os import datetime from Log import Log class Access(): access_list = [] def __init__(self): five_minutes_ago = datetime.datetime.now() - datetime.timedelta(minutes=5) new_list = [] if os.path.exists(ACCESSFILE): with open(ACCESSFILE, 'rb') as pf: self.access_list = pickle.load(pf) for entry in self.access_list: if entry['time'] > five_minutes_ago: new_list.append(entry) self.access_list = new_list def granted(self, ipaddress): result = 0 for entry in self.access_list: if entry['ip'] == ipaddress: result += 1 if result<3: return True Log.info("Access denied for {}".format(ipaddress)) self.deny(ipaddress) return False def deny(self, ipaddress): now = datetime.datetime.now() self.access_list.append({'ip': ipaddress, 'time': now}) with open(ACCESSFILE, 'wb') as pf: pickle.dump(self.access_list, pf, 2)