forked from rDrama/rDrama
make under_attack a setting and use it in /submit for WPD
parent
f19f34bc49
commit
44a80f0492
|
@ -18,14 +18,6 @@ def _request_from_cloudflare(url:str, method:str, post_data_str) -> bool:
|
||||||
return False
|
return False
|
||||||
return res == "<Response [200]>"
|
return res == "<Response [200]>"
|
||||||
|
|
||||||
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:
|
def set_security_level(under_attack="high") -> bool:
|
||||||
return _request_from_cloudflare("settings/security_level", "PATCH", f'{{"value":"{under_attack}"}}')
|
return _request_from_cloudflare("settings/security_level", "PATCH", f'{{"value":"{under_attack}"}}')
|
||||||
|
|
||||||
|
|
|
@ -465,7 +465,6 @@ PERMS = { # Minimum admin_level to perform action.
|
||||||
'SITE_SETTINGS': 3,
|
'SITE_SETTINGS': 3,
|
||||||
'SITE_SETTINGS_SIDEBARS_BANNERS_BADGES': 3,
|
'SITE_SETTINGS_SIDEBARS_BANNERS_BADGES': 3,
|
||||||
'SITE_SETTINGS_SNAPPY_QUOTES': 3,
|
'SITE_SETTINGS_SNAPPY_QUOTES': 3,
|
||||||
'SITE_SETTINGS_UNDER_ATTACK': 3,
|
|
||||||
'SITE_CACHE_PURGE_CDN': 3,
|
'SITE_CACHE_PURGE_CDN': 3,
|
||||||
'NOTIFICATIONS_FROM_SHADOWBANNED_USERS': 3,
|
'NOTIFICATIONS_FROM_SHADOWBANNED_USERS': 3,
|
||||||
'APPS_MODERATION': 3,
|
'APPS_MODERATION': 3,
|
||||||
|
|
|
@ -14,6 +14,7 @@ _SETTINGS = {
|
||||||
"login_required": False,
|
"login_required": False,
|
||||||
"under_siege": False,
|
"under_siege": False,
|
||||||
"dm_images": True,
|
"dm_images": True,
|
||||||
|
"under_attack": False,
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_setting(setting:str):
|
def get_setting(setting:str):
|
||||||
|
|
|
@ -326,13 +326,7 @@ def reported_comments(v):
|
||||||
@limiter.limit(DEFAULT_RATELIMIT, key_func=get_ID)
|
@limiter.limit(DEFAULT_RATELIMIT, key_func=get_ID)
|
||||||
@admin_level_required(PERMS['ADMIN_HOME_VISIBLE'])
|
@admin_level_required(PERMS['ADMIN_HOME_VISIBLE'])
|
||||||
def admin_home(v):
|
def admin_home(v):
|
||||||
under_attack = False
|
return render_template("admin/admin_home.html", v=v)
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
@app.post("/admin/site_settings/<setting>")
|
@app.post("/admin/site_settings/<setting>")
|
||||||
@limiter.limit(DEFAULT_RATELIMIT, key_func=get_ID)
|
@limiter.limit(DEFAULT_RATELIMIT, key_func=get_ID)
|
||||||
|
@ -347,6 +341,11 @@ def change_settings(v:User, setting):
|
||||||
if val: word = 'enable'
|
if val: word = 'enable'
|
||||||
else: word = 'disable'
|
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':
|
if setting != 'login_required':
|
||||||
ma = ModAction(
|
ma = ModAction(
|
||||||
kind=f"{word}_{setting}",
|
kind=f"{word}_{setting}",
|
||||||
|
@ -369,25 +368,6 @@ def clear_cloudflare_cache(v):
|
||||||
g.db.add(ma)
|
g.db.add(ma)
|
||||||
return {"message": "Cloudflare cache cleared!"}
|
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):
|
def admin_badges_grantable_list(v):
|
||||||
query = g.db.query(BadgeDef)
|
query = g.db.query(BadgeDef)
|
||||||
|
|
||||||
|
|
|
@ -115,12 +115,6 @@
|
||||||
<label class="custom-control-label" for="settings-{{setting}}-checkbox">{{setting.replace('_', ' ').title()}}</label>
|
<label class="custom-control-label" for="settings-{{setting}}-checkbox">{{setting.replace('_', ' ').title()}}</label>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if v.admin_level >= PERMS['SITE_SETTINGS_UNDER_ATTACK'] %}
|
|
||||||
<div class="custom-control custom-switch" id="settings-under_attack-container">
|
|
||||||
<input autocomplete="off" type="checkbox" class="custom-control-input" id="under_attack" name="under_attack" {% if under_attack%}checked{% endif %} data-nonce="{{g.nonce}}" data-onchange="postToastSwitch(this,'/admin/under_attack');">
|
|
||||||
<label class="custom-control-label" for="under_attack">Under Attack Mode</label>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if v.admin_level >= PERMS['SITE_CACHE_PURGE_CDN'] %}
|
{% if v.admin_level >= PERMS['SITE_CACHE_PURGE_CDN'] %}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% block form %}
|
{% block form %}
|
||||||
<div class="submit-grid-view">
|
<div class="submit-grid-view">
|
||||||
<form id="submitform" action="{% if SITE == 'watchpeopledie.tv' %}https://videos.watchpeopledie.tv{% elif sub %}/h/{{sub}}{% endif %}/submit" method="post" enctype="multipart/form-data" style="grid-column: 2" data-nonce="{{g.nonce}}" data-onsubmit="submit(this)">
|
<form id="submitform" action="{% if SITE == 'watchpeopledie.tv' and not SITE_SETTINGS['under_attack'] %}https://videos.watchpeopledie.tv{% elif sub %}/h/{{sub}}{% endif %}/submit" method="post" enctype="multipart/form-data" style="grid-column: 2" data-nonce="{{g.nonce}}" data-onsubmit="submit(this)">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center mb-5">
|
<div class="row justify-content-center mb-5">
|
||||||
<div class="col p-3 py-md-0">
|
<div class="col p-3 py-md-0">
|
||||||
|
|
Loading…
Reference in New Issue