diff options
author | Bnyro <bnyro@tutanota.com> | 2024-05-15 16:30:49 +0200 |
---|---|---|
committer | Markus Heiser <markus.heiser@darmarIT.de> | 2024-06-07 14:42:52 +0200 |
commit | f5eb56b63f250c7804e5e1cf4426e550bc933906 (patch) | |
tree | c0267c726de3be65676d48d7e97dce052a789259 /searx/plugins | |
parent | 845a0b678d0c94a68d0ec333aeaa7f7e6b7a18e8 (diff) | |
download | searxng-f5eb56b63f250c7804e5e1cf4426e550bc933906.tar.gz searxng-f5eb56b63f250c7804e5e1cf4426e550bc933906.zip |
[refactor] hostnames plugin: add fallback for old hostname_replace plugin
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
Diffstat (limited to 'searx/plugins')
-rw-r--r-- | searx/plugins/hostname_replace.py | 35 | ||||
-rw-r--r-- | searx/plugins/hostnames.py | 35 |
2 files changed, 68 insertions, 2 deletions
diff --git a/searx/plugins/hostname_replace.py b/searx/plugins/hostname_replace.py new file mode 100644 index 000000000..48900a3f9 --- /dev/null +++ b/searx/plugins/hostname_replace.py @@ -0,0 +1,35 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# pylint: disable=missing-module-docstring + +from flask_babel import gettext +from searx.plugins import logger + +name = gettext('Hostname replace') +description = "Deprecated / contact system admin to configure 'Hostnames plugin'!!" +default_on = False +preference_section = 'general' + +plugin_id = 'hostname_replace' +logger = logger.getChild(plugin_id) + +REPORTED = False + + +def deprecated_msg(): + global REPORTED # pylint: disable=global-statement + if REPORTED: + return + logger.error( + "'Hostname replace' plugin is deprecated and will be dropped soon!" + " Configure 'Hostnames plugin':" + " https://docs.searxng.org/src/searx.plugins.hostnames.html" + ) + REPORTED = True + + +def on_result(_request, _search, result): + # pylint: disable=import-outside-toplevel, cyclic-import + from searx.plugins.hostnames import on_result as hostnames_on_result + + deprecated_msg() + return hostnames_on_result(_request, _search, result) diff --git a/searx/plugins/hostnames.py b/searx/plugins/hostnames.py index 0fafcbb6d..3c699c4fd 100644 --- a/searx/plugins/hostnames.py +++ b/searx/plugins/hostnames.py @@ -3,6 +3,16 @@ """In addition to rewriting/replace reslut URLs, the *hoostnames* plugin offers other features. +.. attention:: + + The 'Hostnames plugin' from `PR-3463 + <https://github.com/searxng/searxng/pull/3463>`_ is a rewrite of the + 'Hostname replace' plugin. Backwards compatibility is guaranteed for a + transitional period, but this will end soon. + + **To maintainers of SearXNG instances, please modify your old plugin config + to the new.** + - ``hostnames.replace``: A mapping of regular expressions to hostnames to be replaced by other hostnames. @@ -86,8 +96,29 @@ def _load_regular_expressions(settings_key): return {} -replacements = _load_regular_expressions('replace') -removables = _load_regular_expressions('remove') +# compatibility fallback for old hostname replace plugin +# TODO: remove in the future once most/all instance maintainers finished migrating # pylint: disable=fixme +def _load_regular_expressions_with_fallback(settings_key): + expressions = _load_regular_expressions(settings_key) + if expressions: + return expressions + + # fallback to the old `hostname_replace` settings format + # pylint: disable=import-outside-toplevel, cyclic-import + hostname_replace_config = settings.get('hostname_replace', {}) + if hostname_replace_config: + from searx.plugins.hostname_replace import deprecated_msg + + deprecated_msg() + + if settings_key == 'replace': + return {re.compile(p): r for (p, r) in hostname_replace_config.items() if r} + + return {re.compile(p) for (p, r) in hostname_replace_config.items() if not r} + + +replacements = _load_regular_expressions_with_fallback('replace') +removables = _load_regular_expressions_with_fallback('remove') high_priority = _load_regular_expressions('high_priority') low_priority = _load_regular_expressions('low_priority') |