Merge pull request #1712 from dalf/remove_searx_env_var

Remove usage of SEARX environment variables
This commit is contained in:
Alexandre Flament 2022-08-29 19:41:39 +02:00 committed by GitHub
commit a7bd2b47c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 36 deletions

View File

@ -41,16 +41,6 @@ STR_TO_BOOL = {
} }
_UNDEFINED = object() _UNDEFINED = object()
# compatibility
SEARX_ENVIRON_VARIABLES = {
'SEARX_DISABLE_ETC_SETTINGS': 'SEARXNG_DISABLE_ETC_SETTINGS',
'SEARX_SETTINGS_PATH': 'SEARXNG_SETTINGS_PATH',
'SEARX_DEBUG': 'SEARXNG_DEBUG',
'SEARX_PORT': 'SEARXNG_PORT',
'SEARX_BIND_ADDRESS': 'SEARXNG_BIND_ADDRESS',
'SEARX_SECRET': 'SEARXNG_SECRET',
}
class SettingsValue: class SettingsValue:
"""Check and update a setting value""" """Check and update a setting value"""
@ -227,11 +217,5 @@ SCHEMA = {
def settings_set_defaults(settings): def settings_set_defaults(settings):
# compatibility with searx variables
for searx, searxng in SEARX_ENVIRON_VARIABLES.items():
if searx in os.environ and searxng not in os.environ:
os.environ[searxng] = os.environ[searx]
logger.warning('%s uses value from %s', searxng, searx)
apply_schema(settings, SCHEMA, []) apply_schema(settings, SCHEMA, [])
return settings return settings

View File

@ -1,5 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
from typing import Optional
from os import environ from os import environ
from os.path import dirname, join, abspath, isfile from os.path import dirname, join, abspath, isfile
from collections.abc import Mapping from collections.abc import Mapping
@ -13,7 +14,7 @@ from searx.exceptions import SearxSettingsException
searx_dir = abspath(dirname(__file__)) 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): if isfile(file_name):
return file_name return file_name
return None return None
@ -30,29 +31,29 @@ def load_yaml(file_name):
def get_default_settings_path(): 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(): def get_user_settings_path() -> Optional[str]:
# find location of settings.yml """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 'SEARXNG_SETTINGS_PATH' in environ:
# if possible set path to settings using the return existing_filename_or_none(environ['SEARXNG_SETTINGS_PATH'])
# enviroment variable SEARXNG_SETTINGS_PATH
return check_settings_yml(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'): if environ.get('SEARXNG_DISABLE_ETC_SETTINGS', '').lower() in ('1', 'true'):
return None return None
# if not, get it from searx code base or last solution from /etc/searxng # check /etc/searxng/settings.yml
try: # (continue with other locations if the file is not found)
return check_settings_yml('/etc/searxng/settings.yml') return existing_filename_or_none('/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
def update_dict(default_dict, user_dict): def update_dict(default_dict, user_dict):

View File

@ -22,11 +22,11 @@ class TestLoad(SearxTestCase):
with self.assertRaises(SearxSettingsException): with self.assertRaises(SearxSettingsException):
settings_loader.load_yaml(join(test_dir, '/settings/empty_settings.yml')) settings_loader.load_yaml(join(test_dir, '/settings/empty_settings.yml'))
def test_check_settings_yml(self): def test_existing_filename_or_none(self):
self.assertIsNone(settings_loader.check_settings_yml('/dev/zero')) self.assertIsNone(settings_loader.existing_filename_or_none('/dev/zero'))
bad_settings_path = join(test_dir, 'settings/syntaxerror_settings.yml') bad_settings_path = join(test_dir, 'settings/syntaxerror_settings.yml')
self.assertEqual(settings_loader.check_settings_yml(bad_settings_path), bad_settings_path) self.assertEqual(settings_loader.existing_filename_or_none(bad_settings_path), bad_settings_path)
class TestDefaultSettings(SearxTestCase): class TestDefaultSettings(SearxTestCase):