[enh] add result proxy support - #707
This commit is contained in:
		
							parent
							
								
									19a6ca0b68
								
							
						
					
					
						commit
						1be6e72d51
					
				| @ -18,6 +18,12 @@ ui: | |||||||
|     default_theme : oscar # ui theme |     default_theme : oscar # ui theme | ||||||
|     default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section |     default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section | ||||||
| 
 | 
 | ||||||
|  | # searx supports result proxification using an external service: https://github.com/asciimoo/morty | ||||||
|  | # uncomment below section if you have running morty proxy | ||||||
|  | #result_proxy: | ||||||
|  | #    url : http://127.0.0.1:3000/ | ||||||
|  | #    key : your_morty_proxy_key | ||||||
|  | 
 | ||||||
| outgoing: # communication with search engines | outgoing: # communication with search engines | ||||||
|     request_timeout : 2.0 # seconds |     request_timeout : 2.0 # seconds | ||||||
|     useragent_suffix : "" # suffix of searx_useragent, could contain informations like an email address to the administrator |     useragent_suffix : "" # suffix of searx_useragent, could contain informations like an email address to the administrator | ||||||
|  | |||||||
| @ -33,6 +33,9 @@ | |||||||
|         <span class="label label-default">{{ engine }}</span> |         <span class="label label-default">{{ engine }}</span> | ||||||
|     {% endfor %} |     {% endfor %} | ||||||
|     <small>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info") }}</small> |     <small>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info") }}</small> | ||||||
|  |     {% if proxify %} | ||||||
|  |     <small>{{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info") }}</small> | ||||||
|  |     {% endif %} | ||||||
| </div> | </div> | ||||||
|     <div class="text-muted"><small>{{ result.pretty_url }}</small></div> |     <div class="text-muted"><small>{{ result.pretty_url }}</small></div> | ||||||
| {%- endmacro %} | {%- endmacro %} | ||||||
| @ -44,6 +47,9 @@ | |||||||
|         <span class="label label-default">{{ engine }}</span> |         <span class="label label-default">{{ engine }}</span> | ||||||
|     {% endfor %} |     {% endfor %} | ||||||
|     <small>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info") }}</small> |     <small>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info") }}</small> | ||||||
|  |     {% if proxify %} | ||||||
|  |     <small>{{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info") }}</small> | ||||||
|  |     {% endif %} | ||||||
|     <div class="text-muted"><small>{{ result.pretty_url }}</small></div> |     <div class="text-muted"><small>{{ result.pretty_url }}</small></div> | ||||||
| {%- endmacro %} | {%- endmacro %} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -243,6 +243,20 @@ def url_for_theme(endpoint, override_theme=None, **values): | |||||||
|     return url_for(endpoint, **values) |     return url_for(endpoint, **values) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def proxify(url): | ||||||
|  |     if url.startswith('//'): | ||||||
|  |         url = 'https:' + url | ||||||
|  | 
 | ||||||
|  |     if not settings.get('result_proxy'): | ||||||
|  |         return url | ||||||
|  | 
 | ||||||
|  |     h = hmac.new(settings['result_proxy']['key'], url, hashlib.sha256).hexdigest() | ||||||
|  | 
 | ||||||
|  |     return '{0}?{1}'.format(settings['result_proxy']['url'], | ||||||
|  |                             urlencode(dict(mortyurl=url.encode('utf-8'), | ||||||
|  |                                            mortyhash=h))) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def image_proxify(url): | def image_proxify(url): | ||||||
| 
 | 
 | ||||||
|     if url.startswith('//'): |     if url.startswith('//'): | ||||||
| @ -310,6 +324,8 @@ def render(template_name, override_theme=None, **kwargs): | |||||||
| 
 | 
 | ||||||
|     kwargs['image_proxify'] = image_proxify |     kwargs['image_proxify'] = image_proxify | ||||||
| 
 | 
 | ||||||
|  |     kwargs['proxify'] = proxify if settings.get('result_proxy') else None | ||||||
|  | 
 | ||||||
|     kwargs['get_result_template'] = get_result_template |     kwargs['get_result_template'] = get_result_template | ||||||
| 
 | 
 | ||||||
|     kwargs['theme'] = get_current_theme_name(override=override_theme) |     kwargs['theme'] = get_current_theme_name(override=override_theme) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user