Remove usage of SEARX environment variables

This commit is contained in:
Alexandre FLAMENT 2022-08-27 11:41:14 +00:00
parent 56000d5162
commit 4adc9920e9
3 changed files with 21 additions and 36 deletions

View file

@ -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):