forked from Ponysearch/Ponysearch
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…
Reference in a new issue