41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
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)
|
|
|
|
|