diff --git a/files/assets/css/main.css b/files/assets/css/main.css index 5d8b938d2..8205432a5 100644 --- a/files/assets/css/main.css +++ b/files/assets/css/main.css @@ -204,6 +204,7 @@ .fa-lock:before{content:"\f023"} .fa-lock-open:before{content:"\f3c1"} .fa-down:before{content:"\f354"} +.fa-shield-virus:before{content:"\e06c"} button { background: none; diff --git a/files/helpers/config/modaction_types.py b/files/helpers/config/modaction_types.py index 1d3905a5c..d7c03a9b4 100644 --- a/files/helpers/config/modaction_types.py +++ b/files/helpers/config/modaction_types.py @@ -96,6 +96,11 @@ MODACTION_TYPES = { "icon": 'fa-images', "color": 'bg-muted' }, + 'disable_automatic_DDOS_mitigation': { + "str": 'disabled automatic DDOS mitigation', + "icon": 'fa-shield-virus', + "color": 'bg-danger' + }, 'distinguish_comment': { "str": 'distinguished {self.target_link}', "icon": 'fa-crown', @@ -161,6 +166,11 @@ MODACTION_TYPES = { "icon": 'fa-images', "color": 'bg-success', }, + 'enable_automatic_DDOS_mitigation': { + "str": 'enabled automatic DDOS mitigation', + "icon": 'fa-shield-virus', + "color": 'bg-success', + }, 'flair_post': { "str": 'set a flair on {self.target_link}', "icon": 'fa-tag', @@ -409,4 +419,5 @@ AEVANN_MODACTION_TYPES = {'ban_user','unban_user', 'shadowban','unshadowban', 'progstack_post','progstack_comment', 'unprogstack_post', 'unprogstack_comment', - 'delete_media'} + 'delete_media', + 'enable_automatic_DDOS_mitigation', 'disable_automatic_DDOS_mitigation'} diff --git a/files/helpers/settings.py b/files/helpers/settings.py index 30fe8df4c..91ce41f50 100644 --- a/files/helpers/settings.py +++ b/files/helpers/settings.py @@ -15,6 +15,7 @@ _SETTINGS = { "under_siege": False, "dm_images": True, "under_attack": False, + "automatic_DDOS_mitigation": True, } def get_setting(setting:str): diff --git a/files/routes/jinja2.py b/files/routes/jinja2.py index 0847dc20e..b8fd447db 100644 --- a/files/routes/jinja2.py +++ b/files/routes/jinja2.py @@ -12,7 +12,7 @@ from files.classes.user import User from files.helpers.assetcache import assetcache_path from files.helpers.config.const import * from files.helpers.regex import * -from files.helpers.settings import get_settings, get_setting +from files.helpers.settings import * from files.helpers.sorting_and_time import make_age_string from files.routes.routehelpers import get_alt_graph, get_formkey from files.__main__ import app, cache @@ -75,6 +75,16 @@ def calc_users(): cache.set(LOGGED_OUT_CACHE_KEY, loggedout) loggedin_counter = len(loggedin) loggedout_counter = len(loggedout) + + if get_setting('automatic_DDOS_mitigation'): + if loggedout_counter > loggedin_counter: + if not get_setting('login_required'): + toggle_setting('login_required') + else: + if get_setting('login_required'): + toggle_setting('login_required') + + return {'loggedin_counter':loggedin_counter, 'loggedout_counter':loggedout_counter, 'loggedin_chat':loggedin_chat} diff --git a/migrations/20230311-add-automatic-ddos-mitigation.sql b/migrations/20230311-add-automatic-ddos-mitigation.sql new file mode 100644 index 000000000..d539d5389 --- /dev/null +++ b/migrations/20230311-add-automatic-ddos-mitigation.sql @@ -0,0 +1 @@ +alter table modactions alter column kind type varchar(33);