mirror of
				https://github.com/searxng/searxng
				synced 2024-01-01 19:24:07 +01:00 
			
		
		
		
	[refactor] hostnames plugin: add fallback for old hostname_replace plugin
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
		
							parent
							
								
									845a0b678d
								
							
						
					
					
						commit
						f5eb56b63f
					
				
					 2 changed files with 68 additions and 2 deletions
				
			
		
							
								
								
									
										35
									
								
								searx/plugins/hostname_replace.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								searx/plugins/hostname_replace.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -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) | ||||
|  | @ -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') | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bnyro
						Bnyro