mirror of
				https://github.com/searxng/searxng
				synced 2024-01-01 19:24:07 +01:00 
			
		
		
		
	settings.yml: set default values for result_proxy
* initialize result_proxy with searx/settings_defaults.py * allow result_proxy.key to be a string this commit supersedes #1522
This commit is contained in:
		
							parent
							
								
									56000d5162
								
							
						
					
					
						commit
						341ad46303
					
				
					 3 changed files with 23 additions and 7 deletions
				
			
		|  | @ -121,6 +121,7 @@ ui: | ||||||
| # | # | ||||||
| # result_proxy: | # result_proxy: | ||||||
| #   url: http://127.0.0.1:3000/ | #   url: http://127.0.0.1:3000/ | ||||||
|  | #   # the key is a base64 encoded string, the YAML !!binary prefix is optional | ||||||
| #   key: !!binary "your_morty_proxy_key" | #   key: !!binary "your_morty_proxy_key" | ||||||
| #   # [true|false] enable the "proxy" button next to each result | #   # [true|false] enable the "proxy" button next to each result | ||||||
| #   proxify_results: true | #   proxify_results: true | ||||||
|  |  | ||||||
|  | @ -9,6 +9,7 @@ import numbers | ||||||
| import errno | import errno | ||||||
| import os | import os | ||||||
| import logging | import logging | ||||||
|  | from base64 import b64decode | ||||||
| from os.path import dirname, abspath | from os.path import dirname, abspath | ||||||
| 
 | 
 | ||||||
| from searx.languages import language_codes as languages | from searx.languages import language_codes as languages | ||||||
|  | @ -117,6 +118,15 @@ class SettingsDirectoryValue(SettingsValue): | ||||||
|         return super().__call__(value) |         return super().__call__(value) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | class SettingsBytesValue(SettingsValue): | ||||||
|  |     """str are base64 decoded""" | ||||||
|  | 
 | ||||||
|  |     def __call__(self, value: typing.Any) -> typing.Any: | ||||||
|  |         if isinstance(value, str): | ||||||
|  |             value = b64decode(value) | ||||||
|  |         return super().__call__(value) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def apply_schema(settings, schema, path_list): | def apply_schema(settings, schema, path_list): | ||||||
|     error = False |     error = False | ||||||
|     for key, value in schema.items(): |     for key, value in schema.items(): | ||||||
|  | @ -215,6 +225,11 @@ SCHEMA = { | ||||||
|         'extra_proxy_timeout': SettingsValue(int, 0), |         'extra_proxy_timeout': SettingsValue(int, 0), | ||||||
|         'networks': {}, |         'networks': {}, | ||||||
|     }, |     }, | ||||||
|  |     'result_proxy': { | ||||||
|  |         'url': SettingsValue((None, str), None), | ||||||
|  |         'key': SettingsBytesValue((None, bytes), None), | ||||||
|  |         'proxify_results': SettingsValue(bool, False), | ||||||
|  |     }, | ||||||
|     'plugins': SettingsValue(list, []), |     'plugins': SettingsValue(list, []), | ||||||
|     'enabled_plugins': SettingsValue((None, list), None), |     'enabled_plugins': SettingsValue((None, list), None), | ||||||
|     'checker': { |     'checker': { | ||||||
|  |  | ||||||
|  | @ -315,16 +315,16 @@ def custom_url_for(endpoint: str, **values): | ||||||
|     return url_for(endpoint, **values) + suffix |     return url_for(endpoint, **values) + suffix | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def proxify(url: str): | def morty_proxify(url: str): | ||||||
|     if url.startswith('//'): |     if url.startswith('//'): | ||||||
|         url = 'https:' + url |         url = 'https:' + url | ||||||
| 
 | 
 | ||||||
|     if not settings.get('result_proxy'): |     if not settings['result_proxy']['url']: | ||||||
|         return url |         return url | ||||||
| 
 | 
 | ||||||
|     url_params = dict(mortyurl=url) |     url_params = dict(mortyurl=url) | ||||||
| 
 | 
 | ||||||
|     if settings['result_proxy'].get('key'): |     if settings['result_proxy']['key']: | ||||||
|         url_params['mortyhash'] = hmac.new(settings['result_proxy']['key'], url.encode(), hashlib.sha256).hexdigest() |         url_params['mortyhash'] = hmac.new(settings['result_proxy']['key'], url.encode(), hashlib.sha256).hexdigest() | ||||||
| 
 | 
 | ||||||
|     return '{0}?{1}'.format(settings['result_proxy']['url'], urlencode(url_params)) |     return '{0}?{1}'.format(settings['result_proxy']['url'], urlencode(url_params)) | ||||||
|  | @ -349,8 +349,8 @@ def image_proxify(url: str): | ||||||
|             return url |             return url | ||||||
|         return None |         return None | ||||||
| 
 | 
 | ||||||
|     if settings.get('result_proxy'): |     if settings['result_proxy']['url']: | ||||||
|         return proxify(url) |         return morty_proxify(url) | ||||||
| 
 | 
 | ||||||
|     h = new_hmac(settings['server']['secret_key'], url.encode()) |     h = new_hmac(settings['server']['secret_key'], url.encode()) | ||||||
| 
 | 
 | ||||||
|  | @ -462,8 +462,8 @@ def render(template_name: str, **kwargs): | ||||||
|     # helpers to create links to other pages |     # helpers to create links to other pages | ||||||
|     kwargs['url_for'] = custom_url_for  # override url_for function in templates |     kwargs['url_for'] = custom_url_for  # override url_for function in templates | ||||||
|     kwargs['image_proxify'] = image_proxify |     kwargs['image_proxify'] = image_proxify | ||||||
|     kwargs['proxify'] = proxify if settings.get('result_proxy', {}).get('url') else None |     kwargs['proxify'] = morty_proxify if settings['result_proxy']['url'] is not None else None | ||||||
|     kwargs['proxify_results'] = settings.get('result_proxy', {}).get('proxify_results', True) |     kwargs['proxify_results'] = settings['result_proxy']['proxify_results'] | ||||||
|     kwargs['get_result_template'] = get_result_template |     kwargs['get_result_template'] = get_result_template | ||||||
|     kwargs['opensearch_url'] = ( |     kwargs['opensearch_url'] = ( | ||||||
|         url_for('opensearch') |         url_for('opensearch') | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Alexandre FLAMENT
						Alexandre FLAMENT