diff --git a/Makefile b/Makefile index a4362b171..801323361 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,7 @@ run: install sleep 2 ; \ xdg-open http://127.0.0.1:8888/ ; \ ) & - SEARX_DEBUG=1 ./manage pyenv.cmd python -m searx.webapp + SEARXNG_DEBUG=1 ./manage pyenv.cmd python -m searx.webapp PHONY += install uninstall install uninstall: diff --git a/docs/admin/engines/settings.rst b/docs/admin/engines/settings.rst index 459b4b46c..7308e2733 100644 --- a/docs/admin/engines/settings.rst +++ b/docs/admin/engines/settings.rst @@ -74,7 +74,7 @@ Global Settings instance_name: "SearXNG" # displayed name contact_url: false # mailto:contact@example.com -``debug`` : ``$SEARX_DEBUG`` +``debug`` : ``$SEARXNG_DEBUG`` Allow a more detailed log if you run SearXNG directly. Display *detailed* error messages in the browser too, so this must be deactivated in production. @@ -119,7 +119,7 @@ Global Settings directly using ``python searx/webapp.py``. Doesn't apply to SearXNG running on Apache or Nginx. -``secret_key`` : ``$SEARX_SECRET`` +``secret_key`` : ``$SEARXNG_SECRET`` Used for cryptography purpose. ``image_proxy`` : diff --git a/docs/dev/makefile.rst b/docs/dev/makefile.rst index 14e9b0555..77c0dddde 100644 --- a/docs/dev/makefile.rst +++ b/docs/dev/makefile.rst @@ -124,7 +124,7 @@ browser (:man:`xdg-open`):: $ make run PYENV OK - SEARX_DEBUG=1 ./manage.sh pyenv.cmd python ./searx/webapp.py + SEARXNG_DEBUG=1 ./manage.sh pyenv.cmd python ./searx/webapp.py ... INFO:werkzeug: * Running on http://127.0.0.1:8888/ (Press CTRL+C to quit) @@ -210,15 +210,15 @@ by underline:: make search.checker.google_news -To see HTTP requests and more use SEARX_DEBUG:: +To see HTTP requests and more use SEARXNG_DEBUG:: - make SEARX_DEBUG=1 search.checker.google_news + make SEARXNG_DEBUG=1 search.checker.google_news .. _3xx: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_redirection To filter out HTTP redirects (3xx_):: - make SEARX_DEBUG=1 search.checker.google_news | grep -A1 "HTTP/1.1\" 3[0-9][0-9]" + make SEARXNG_DEBUG=1 search.checker.google_news | grep -A1 "HTTP/1.1\" 3[0-9][0-9]" ... Engine google news Checking https://news.google.com:443 "GET /search?q=life&hl=en&lr=lang_en&ie=utf8&oe=utf8&ceid=US%3Aen&gl=US HTTP/1.1" 302 0 diff --git a/manage b/manage index e3bf27b50..553d3f208 100755 --- a/manage +++ b/manage @@ -115,7 +115,7 @@ buildenv() { export SEARX_SETTINGS_PATH ( set -e - SEARX_DEBUG=1 pyenv.cmd python utils/build_env.py 2>&1 \ + SEARXNG_DEBUG=1 pyenv.cmd python utils/build_env.py 2>&1 \ | prefix_stdout "${_Blue}BUILDENV${_creset} " ) return "${PIPESTATUS[0]}" diff --git a/searx/__init__.py b/searx/__init__.py index 93ad76bb1..b1626ae9f 100644 --- a/searx/__init__.py +++ b/searx/__init__.py @@ -62,7 +62,7 @@ def logging_config_debug(): except ImportError: coloredlogs = None - log_level = os.environ.get('SEARX_DEBUG_LOG_LEVEL', 'DEBUG') + log_level = os.environ.get('SEARXNG_DEBUG_LOG_LEVEL', 'DEBUG') if coloredlogs and is_color_terminal(): level_styles = { 'spam': {'color': 'green', 'faint': True}, diff --git a/searx/settings_defaults.py b/searx/settings_defaults.py index 62625b912..9284f3050 100644 --- a/searx/settings_defaults.py +++ b/searx/settings_defaults.py @@ -41,6 +41,17 @@ STR_TO_BOOL = { } _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: """Check and update a setting value @@ -87,7 +98,6 @@ class SettingsValue: self.check_type_definition(value) return value - class SettingsDirectoryValue(SettingsValue): """Check and update a setting value that is a directory path """ @@ -124,8 +134,8 @@ def apply_schema(settings, schema, path_list): SCHEMA = { 'general': { - 'debug': SettingsValue(bool, False, 'SEARX_DEBUG'), - 'instance_name': SettingsValue(str, 'searxng'), + 'debug': SettingsValue(bool, False, 'SEARXNG_DEBUG'), + 'instance_name': SettingsValue(str, 'SearXNG'), 'contact_url': SettingsValue((None, False, str), None), }, 'brand': { @@ -144,9 +154,9 @@ SCHEMA = { 'formats': SettingsValue(list, OUTPUT_FORMATS), }, 'server': { - 'port': SettingsValue((int,str), 8888, 'SEARX_PORT'), - 'bind_address': SettingsValue(str, '127.0.0.1', 'SEARX_BIND_ADDRESS'), - 'secret_key': SettingsValue(str, environ_name='SEARX_SECRET'), + 'port': SettingsValue((int,str), 8888, 'SEARXNG_PORT'), + 'bind_address': SettingsValue(str, '127.0.0.1', 'SEARXNG_BIND_ADDRESS'), + 'secret_key': SettingsValue(str, environ_name='SEARXNG_SECRET'), 'base_url': SettingsValue((False, str), False), 'image_proxy': SettingsValue(bool, False), 'http_protocol_version': SettingsValue(('1.0', '1.1'), '1.0'), @@ -201,5 +211,11 @@ SCHEMA = { } 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, []) return settings diff --git a/searx/settings_loader.py b/searx/settings_loader.py index 6beab59a1..51e5456d5 100644 --- a/searx/settings_loader.py +++ b/searx/settings_loader.py @@ -35,12 +35,12 @@ def get_default_settings_path(): def get_user_settings_path(): # find location of settings.yml - if 'SEARX_SETTINGS_PATH' in environ: + if 'SEARXNG_SETTINGS_PATH' in environ: # if possible set path to settings using the - # enviroment variable SEARX_SETTINGS_PATH - return check_settings_yml(environ['SEARX_SETTINGS_PATH']) + # enviroment variable SEARXNG_SETTINGS_PATH + return check_settings_yml(environ['SEARXNG_SETTINGS_PATH']) - if environ.get('SEARX_DISABLE_ETC_SETTINGS', '').lower() in ('1', 'true'): + 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/searx diff --git a/tests/__init__.py b/tests/__init__.py index 23e62f040..c823cec87 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -2,11 +2,17 @@ import os import aiounittest -os.environ['SEARX_DEBUG'] = '1' -os.environ['SEARX_DEBUG_LOG_LEVEL'] = 'WARNING' -os.environ['SEARX_DISABLE_ETC_SETTINGS'] = '1' +os.environ.pop('SEARX_DEBUG', None) +os.environ.pop('SEARX_DEBUG_LOG_LEVEL', None) +os.environ.pop('SEARX_DISABLE_ETC_SETTINGS', None) os.environ.pop('SEARX_SETTINGS_PATH', None) +os.environ.pop('SEARXNG_SETTINGS_PATH', None) + +os.environ['SEARXNG_DEBUG'] = '1' +os.environ['SEARXNG_DEBUG_LOG_LEVEL'] = 'WARNING' +os.environ['SEARXNG_DISABLE_ETC_SETTINGS'] = '1' + class SearxTestLayer: """Base layer for non-robot tests.""" diff --git a/tests/robot/__main__.py b/tests/robot/__main__.py index e435f512a..d4d6642a9 100644 --- a/tests/robot/__main__.py +++ b/tests/robot/__main__.py @@ -35,10 +35,10 @@ class SearxRobotLayer(): # - debug mode: https://flask.palletsprojects.com/quickstart/#debug-mode # - Flask.run(..): https://flask.palletsprojects.com/api/#flask.Flask.run - os.environ['SEARX_DEBUG'] = '0' + os.environ['SEARXNG_DEBUG'] = '0' # set robot settings path - os.environ['SEARX_SETTINGS_PATH'] = str(tests_path / 'robot' / 'settings_robot.yml') + os.environ['SEARXNG_SETTINGS_PATH'] = str(tests_path / 'robot' / 'settings_robot.yml') # run the server self.server = subprocess.Popen( # pylint: disable=consider-using-with @@ -52,7 +52,7 @@ class SearxRobotLayer(): def tearDown(self): os.kill(self.server.pid, 9) # remove previously set environment variable - del os.environ['SEARX_SETTINGS_PATH'] + del os.environ['SEARXNG_SETTINGS_PATH'] def run_robot_tests(tests):