From 44a80f0492f1365576c8b47c7ec0ab5c8f88c52f Mon Sep 17 00:00:00 2001 From: Aevann Date: Thu, 9 Feb 2023 05:50:30 +0200 Subject: [PATCH] make under_attack a setting and use it in /submit for WPD --- files/helpers/cloudflare.py | 8 ------- files/helpers/config/const.py | 1 - files/helpers/settings.py | 1 + files/routes/admin.py | 32 +++++---------------------- files/templates/admin/admin_home.html | 6 ----- files/templates/submit.html | 2 +- 6 files changed, 8 insertions(+), 42 deletions(-) diff --git a/files/helpers/cloudflare.py b/files/helpers/cloudflare.py index ed6bfd351..ea8bab709 100644 --- a/files/helpers/cloudflare.py +++ b/files/helpers/cloudflare.py @@ -18,14 +18,6 @@ def _request_from_cloudflare(url:str, method:str, post_data_str) -> bool: return False return res == "" -def get_security_level() -> Optional[str]: - res = None - try: - res = requests.get(f'{CLOUDFLARE_API_URL}/zones/{CF_ZONE}/settings/security_level', headers=CF_HEADERS, timeout=CLOUDFLARE_REQUEST_TIMEOUT_SECS).json()['result']['value'] - except: - pass - return res - def set_security_level(under_attack="high") -> bool: return _request_from_cloudflare("settings/security_level", "PATCH", f'{{"value":"{under_attack}"}}') diff --git a/files/helpers/config/const.py b/files/helpers/config/const.py index 9f18db107..c73c497ba 100644 --- a/files/helpers/config/const.py +++ b/files/helpers/config/const.py @@ -465,7 +465,6 @@ PERMS = { # Minimum admin_level to perform action. 'SITE_SETTINGS': 3, 'SITE_SETTINGS_SIDEBARS_BANNERS_BADGES': 3, 'SITE_SETTINGS_SNAPPY_QUOTES': 3, - 'SITE_SETTINGS_UNDER_ATTACK': 3, 'SITE_CACHE_PURGE_CDN': 3, 'NOTIFICATIONS_FROM_SHADOWBANNED_USERS': 3, 'APPS_MODERATION': 3, diff --git a/files/helpers/settings.py b/files/helpers/settings.py index 2b95dda66..30fe8df4c 100644 --- a/files/helpers/settings.py +++ b/files/helpers/settings.py @@ -14,6 +14,7 @@ _SETTINGS = { "login_required": False, "under_siege": False, "dm_images": True, + "under_attack": False, } def get_setting(setting:str): diff --git a/files/routes/admin.py b/files/routes/admin.py index 2058537af..144f21f98 100644 --- a/files/routes/admin.py +++ b/files/routes/admin.py @@ -326,13 +326,7 @@ def reported_comments(v): @limiter.limit(DEFAULT_RATELIMIT, key_func=get_ID) @admin_level_required(PERMS['ADMIN_HOME_VISIBLE']) def admin_home(v): - under_attack = False - - if v.admin_level >= PERMS['SITE_SETTINGS_UNDER_ATTACK']: - under_attack = (get_security_level() or 'high') == 'under_attack' - - return render_template("admin/admin_home.html", v=v, - under_attack=under_attack) + return render_template("admin/admin_home.html", v=v) @app.post("/admin/site_settings/") @limiter.limit(DEFAULT_RATELIMIT, key_func=get_ID) @@ -347,6 +341,11 @@ def change_settings(v:User, setting): if val: word = 'enable' else: word = 'disable' + if setting == "under_attack": + new_security_level = 'under_attack' if val else 'high' + if not set_security_level(new_security_level): + abort(400, f'Failed to {wprd} under attack mode') + if setting != 'login_required': ma = ModAction( kind=f"{word}_{setting}", @@ -369,25 +368,6 @@ def clear_cloudflare_cache(v): g.db.add(ma) return {"message": "Cloudflare cache cleared!"} -@app.post("/admin/under_attack") -@limiter.limit(DEFAULT_RATELIMIT, key_func=get_ID) -@admin_level_required(PERMS['SITE_SETTINGS_UNDER_ATTACK']) -def under_attack(v): - response = get_security_level() - if not response: - abort(400, 'Could not retrieve the current security level') - old_under_attack_mode = response == 'under_attack' - enable_disable_str = 'disable' if old_under_attack_mode else 'enable' - new_security_level = 'high' if old_under_attack_mode else 'under_attack' - if not set_security_level(new_security_level): - abort(400, f'Failed to {enable_disable_str} under attack mode') - ma = ModAction( - kind=f"{enable_disable_str}_under_attack", - user_id=v.id, - ) - g.db.add(ma) - return {"message": f"Under attack mode {enable_disable_str}d!"} - def admin_badges_grantable_list(v): query = g.db.query(BadgeDef) diff --git a/files/templates/admin/admin_home.html b/files/templates/admin/admin_home.html index 7ed8fdbb5..be12cc673 100644 --- a/files/templates/admin/admin_home.html +++ b/files/templates/admin/admin_home.html @@ -115,12 +115,6 @@ {% endfor %} - {% if v.admin_level >= PERMS['SITE_SETTINGS_UNDER_ATTACK'] %} -
- - -
- {% endif %} {% endif %} {% if v.admin_level >= PERMS['SITE_CACHE_PURGE_CDN'] %} diff --git a/files/templates/submit.html b/files/templates/submit.html index f2f46e9d3..90ea0a22d 100644 --- a/files/templates/submit.html +++ b/files/templates/submit.html @@ -12,7 +12,7 @@ {% block content %} {% block form %}
-
+