summaryrefslogtreecommitdiff
path: root/searx/settings_loader.py
diff options
context:
space:
mode:
authorAlexandre FLAMENT <alexandre.flament@hesge.ch>2022-08-27 11:41:14 +0000
committerAlexandre FLAMENT <alexandre.flament@hesge.ch>2022-08-28 17:12:57 +0000
commit4adc9920e9114fef231fa63ae93346d01cf848bd (patch)
tree5bdefe220a926deb055deb35af25f133c60f0008 /searx/settings_loader.py
parent56000d51622f924bd0f5cba2008dccd548b9041e (diff)
downloadsearxng-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.py35
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):