From 95a940a14f26a7bacfa484a4e19b256afb4bd4a8 Mon Sep 17 00:00:00 2001 From: n9k Date: Wed, 22 Jun 2022 08:35:35 +0000 Subject: [PATCH] Limit number of stored failures Failures are messages shown on the access captcha screen when the captcha answer was not accepted for whatever reason. --- anonstream/__init__.py | 2 +- anonstream/access.py | 5 +++++ anonstream/config.py | 2 ++ config.toml | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/anonstream/__init__.py b/anonstream/__init__.py index 1e4a915..f918218 100644 --- a/anonstream/__init__.py +++ b/anonstream/__init__.py @@ -38,7 +38,7 @@ def create_app(toml_config): app.captcha_factory = create_captcha_factory(app.config['CAPTCHA_FONTS']) app.captcha_signer = create_captcha_signer(app.config['SECRET_KEY']) - app.failures = {} + app.failures = OrderedDict() # State for tasks app.users_update_buffer = set() diff --git a/anonstream/access.py b/anonstream/access.py index 822acd2..3f76c02 100644 --- a/anonstream/access.py +++ b/anonstream/access.py @@ -2,6 +2,7 @@ import time from quart import current_app +CONFIG = current_app.config FAILURES = current_app.failures def add_failure(message): @@ -9,6 +10,10 @@ def add_failure(message): while timestamp in FAILURES: timestamp += 1 FAILURES[timestamp] = message + + while len(FAILURES) > CONFIG['MAX_FAILURES']: + FAILURES.popitem(last=False) + return timestamp def pop_failure(failure_id): diff --git a/anonstream/config.py b/anonstream/config.py index 0c5c580..346f2c6 100644 --- a/anonstream/config.py +++ b/anonstream/config.py @@ -84,11 +84,13 @@ def toml_to_flask_section_names(config): def toml_to_flask_section_memory(config): cfg = config['memory'] assert cfg['states'] >= 0 + assert cfg['failures'] >= 0 assert cfg['chat_scrollback'] >= 0 assert cfg['chat_messages'] >= cfg['chat_scrollback'] return { 'MAX_STATES': cfg['states'], 'MAX_CAPTCHAS': cfg['captchas'], + 'MAX_FAILURES': cfg['failures'], 'MAX_CHAT_MESSAGES': cfg['chat_messages'], 'MAX_CHAT_SCROLLBACK': cfg['chat_scrollback'], } diff --git a/config.toml b/config.toml index 95b2d22..b3be6e1 100644 --- a/config.toml +++ b/config.toml @@ -38,6 +38,7 @@ foreground_color = "#dddddd" [memory] states = 32 captchas = 256 +failures = 256 chat_messages = 8192 chat_scrollback = 256