From be635fa7405b31f3fe76a55dfb7c4081cb261d2f Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Sun, 20 Dec 2020 14:10:13 +0100 Subject: [PATCH 1/2] [fix] ERROR:searx:server.secret_key is not changed Signed-off-by: Markus Heiser --- Makefile | 2 +- searx/__init__.py | 4 ---- searx/settings_loader.py | 49 ++++++++++++++++++++++++++------------- tests/__init__.py | 2 -- utils/standalone_searx.py | 2 +- 5 files changed, 35 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index ff3bc2252b..3b74302f84 100644 --- a/Makefile +++ b/Makefile @@ -73,7 +73,7 @@ run: buildenv pyenvinstall sleep 2 ; \ xdg-open http://127.0.0.1:8888/ ; \ ) & - SEARX_DEBUG=1 $(PY_ENV)/bin/python ./searx/webapp.py + $(PY_ENV)/bin/python ./searx/webapp.py # docs # ---- diff --git a/searx/__init__.py b/searx/__init__.py index 9bbc7c8c35..08e67f69dd 100644 --- a/searx/__init__.py +++ b/searx/__init__.py @@ -60,7 +60,3 @@ settings['server']['secret_key'] = environ['SEARX_SECRET'] if 'SEARX_BIND_ADDRESS' in environ: settings['server']['bind_address'] = environ['SEARX_BIND_ADDRESS'] - -if not searx_debug and settings['server']['secret_key'] == 'ultrasecretkey': - logger.error('server.secret_key is not changed. Please use something else instead of ultrasecretkey.') - exit(1) diff --git a/searx/settings_loader.py b/searx/settings_loader.py index e7126aa894..a67e3c2894 100644 --- a/searx/settings_loader.py +++ b/searx/settings_loader.py @@ -1,5 +1,7 @@ # SPDX-License-Identifier: AGPL-3.0-or-later +import secrets + from os import environ from os.path import dirname, join, abspath, isfile from collections.abc import Mapping @@ -112,21 +114,36 @@ def is_use_default_settings(user_settings): def load_settings(load_user_setttings=True): default_settings_path = get_default_settings_path() user_settings_path = get_user_settings_path() + settings, settings_load_message = None, None + if user_settings_path is None or not load_user_setttings: # no user settings - return (load_yaml(default_settings_path), - 'load the default settings from {}'.format(default_settings_path)) - - # user settings - user_settings = load_yaml(user_settings_path) - if is_use_default_settings(user_settings): - # the user settings are merged with the default configuration - default_settings = load_yaml(default_settings_path) - update_settings(default_settings, user_settings) - return (default_settings, - 'merge the default settings ( {} ) and the user setttings ( {} )' - .format(default_settings_path, user_settings_path)) - - # the user settings, fully replace the default configuration - return (user_settings, - 'load the user settings from {}'.format(user_settings_path)) + load_user_setttings = False + settings, settings_load_message = ( + load_yaml(default_settings_path), + 'load the default settings from {}'.format(default_settings_path) + ) + else: + load_user_setttings = True + # user settings + user_settings = load_yaml(user_settings_path) + if is_use_default_settings(user_settings): + # the user settings are merged with the default configuration + default_settings = load_yaml(default_settings_path) + update_settings(default_settings, user_settings) + settings, settings_load_message = ( + default_settings, + 'merge the default settings ( {} ) and the user setttings ( {} )'.format( + default_settings_path, user_settings_path) + ) + else: + # the user settings, fully replace the default configuration + settings, settings_load_message = ( + user_settings, + 'load the user settings from {}'.format(user_settings_path) + ) + + if settings['server'].get('secret_key', 'ultrasecretkey') == 'ultrasecretkey': + settings['server']['ultrasecretkey'] = secrets.token_hex(16) + + return settings, settings_load_message diff --git a/tests/__init__.py b/tests/__init__.py index 18bf7cad84..e69de29bb2 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,2 +0,0 @@ -import os -os.environ['SEARX_DEBUG'] = '1' diff --git a/utils/standalone_searx.py b/utils/standalone_searx.py index c52035fb94..89023f41b9 100755 --- a/utils/standalone_searx.py +++ b/utils/standalone_searx.py @@ -15,7 +15,7 @@ .. code:: bash - $ SEARX_DEBUG=1 python3 utils/standalone_searx.py rain + $ python3 utils/standalone_searx.py rain Example to run it from python: From f65a4dc4ca5af372ceab84d121747616ee351a26 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Sun, 20 Dec 2020 14:24:05 +0100 Subject: [PATCH 2/2] [fix] python module secrets does not exits in py3.5 Signed-off-by: Markus Heiser --- searx/settings_loader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/searx/settings_loader.py b/searx/settings_loader.py index a67e3c2894..9a0015cbbd 100644 --- a/searx/settings_loader.py +++ b/searx/settings_loader.py @@ -1,6 +1,6 @@ # SPDX-License-Identifier: AGPL-3.0-or-later -import secrets +from os import urandom from os import environ from os.path import dirname, join, abspath, isfile @@ -144,6 +144,6 @@ def load_settings(load_user_setttings=True): ) if settings['server'].get('secret_key', 'ultrasecretkey') == 'ultrasecretkey': - settings['server']['ultrasecretkey'] = secrets.token_hex(16) + settings['server']['ultrasecretkey'] = urandom(16).hex() return settings, settings_load_message