first commit
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user