Add require-api-key-secret

This commit is contained in:
Piero Toffanin 2023-03-09 13:59:25 -05:00
parent b3e9105d21
commit f2792e5001
7 changed files with 88 additions and 13 deletions

View file

@ -1,11 +1,16 @@
import atexit
import random
import string
from apscheduler.schedulers.background import BackgroundScheduler
def generate_secret():
return ''.join(random.choices(string.ascii_uppercase + string.digits, k=7))
banned = {}
active = False
threshold = -1
secrets = [generate_secret(), generate_secret()]
def forgive_banned():
global banned
@ -22,6 +27,16 @@ def forgive_banned():
for ip in clear_list:
del banned[ip]
def rotate_secrets():
global secrets
secrets[0] = secrets[1]
secrets[1] = generate_secret()
def secret_match(s):
return s in secrets
def get_current_secret():
return secrets[1]
def setup(violations_threshold=100):
global active
@ -32,6 +47,8 @@ def setup(violations_threshold=100):
scheduler = BackgroundScheduler()
scheduler.add_job(func=forgive_banned, trigger="interval", minutes=30)
scheduler.add_job(func=rotate_secrets, trigger="interval", minutes=30)
scheduler.start()
# Shut down the scheduler when exiting the app