diff options
author | Alexandre FLAMENT <alexandre.flament@hesge.ch> | 2022-08-27 11:41:14 +0000 |
---|---|---|
committer | Alexandre FLAMENT <alexandre.flament@hesge.ch> | 2022-08-28 17:12:57 +0000 |
commit | 4adc9920e9114fef231fa63ae93346d01cf848bd (patch) | |
tree | 5bdefe220a926deb055deb35af25f133c60f0008 /searx/settings_loader.py | |
parent | 56000d51622f924bd0f5cba2008dccd548b9041e (diff) | |
download | searxng-4adc9920e9114fef231fa63ae93346d01cf848bd.tar.gz searxng-4adc9920e9114fef231fa63ae93346d01cf848bd.zip |
Remove usage of SEARX environment variables
Diffstat (limited to 'searx/settings_loader.py')
-rw-r--r-- | searx/settings_loader.py | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/searx/settings_loader.py b/searx/settings_loader.py index 14ca8b4aa..0a6ec9080 100644 --- a/searx/settings_loader.py +++ b/searx/settings_loader.py @@ -1,5 +1,6 @@ # SPDX-License-Identifier: AGPL-3.0-or-later +from typing import Optional from os import environ from os.path import dirname, join, abspath, isfile from collections.abc import Mapping @@ -13,7 +14,7 @@ from searx.exceptions import SearxSettingsException searx_dir = abspath(dirname(__file__)) -def check_settings_yml(file_name): +def existing_filename_or_none(file_name: str) -> Optional[str]: if isfile(file_name): return file_name return None @@ -30,29 +31,29 @@ def load_yaml(file_name): def get_default_settings_path(): - return check_settings_yml(join(searx_dir, 'settings.yml')) + return existing_filename_or_none(join(searx_dir, 'settings.yml')) -def get_user_settings_path(): - # find location of settings.yml +def get_user_settings_path() -> Optional[str]: + """Get an user settings file. + By descending priority: + 1. ``environ['SEARXNG_SETTINGS_PATH']`` + 2. ``/etc/searxng/settings.yml`` except if ``SEARXNG_DISABLE_ETC_SETTINGS`` is ``true`` or ``1`` + 3. ``None`` + """ + + # check the environment variable SEARXNG_SETTINGS_PATH + # if the environment variable is defined, this is the last check if 'SEARXNG_SETTINGS_PATH' in environ: - # if possible set path to settings using the - # enviroment variable SEARXNG_SETTINGS_PATH - return check_settings_yml(environ['SEARXNG_SETTINGS_PATH']) + return existing_filename_or_none(environ['SEARXNG_SETTINGS_PATH']) + # if SEARXNG_DISABLE_ETC_SETTINGS don't look any futher if environ.get('SEARXNG_DISABLE_ETC_SETTINGS', '').lower() in ('1', 'true'): return None - # if not, get it from searx code base or last solution from /etc/searxng - try: - return check_settings_yml('/etc/searxng/settings.yml') - except SearxSettingsException as e: - # fall back to searx settings - try: - return check_settings_yml('/etc/searx/settings.yml') - except SearxSettingsException: - # if none are found, raise the exception about SearXNG - raise e # pylint: disable=raise-missing-from + # check /etc/searxng/settings.yml + # (continue with other locations if the file is not found) + return existing_filename_or_none('/etc/searxng/settings.yml') def update_dict(default_dict, user_dict): |