summaryrefslogtreecommitdiff
path: root/searx/webapp.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/webapp.py')
-rw-r--r--searx/webapp.py47
1 files changed, 19 insertions, 28 deletions
diff --git a/searx/webapp.py b/searx/webapp.py
index 00761404e..d92302b69 100644
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -42,7 +42,8 @@ from searx.engines import (
)
from searx.utils import (
UnicodeWriter, highlight_content, html_to_text, get_themes,
- get_static_files, get_result_templates, gen_useragent, dict_subset
+ get_static_files, get_result_templates, gen_useragent, dict_subset,
+ prettify_url, get_blocked_engines
)
from searx.version import VERSION_STRING
from searx.languages import language_codes
@@ -91,7 +92,7 @@ for indice, theme in enumerate(themes):
for (dirpath, dirnames, filenames) in os.walk(theme_img_path):
global_favicons[indice].extend(filenames)
-cookie_max_age = 60 * 60 * 24 * 365 * 23 # 23 years
+cookie_max_age = 60 * 60 * 24 * 365 * 5 # 5 years
@babel.localeselector
@@ -214,17 +215,19 @@ def image_proxify(url):
if url.startswith('//'):
url = 'https:' + url
+ url = url.encode('utf-8')
+
if not settings['server'].get('image_proxy') and not request.cookies.get('image_proxy'):
return url
- h = hashlib.sha256(url + settings['server']['secret_key']).hexdigest()
+ h = hashlib.sha256(url + settings['server']['secret_key'].encode('utf-8')).hexdigest()
return '{0}?{1}'.format(url_for('image_proxy'),
urlencode(dict(url=url, h=h)))
def render(template_name, override_theme=None, **kwargs):
- blocked_engines = request.cookies.get('blocked_engines', '').split(',')
+ blocked_engines = get_blocked_engines(engines, request.cookies)
autocomplete = request.cookies.get('autocomplete')
@@ -330,11 +333,7 @@ def index():
result['title'] = ' '.join(html_to_text(result['title'])
.strip().split())
- if len(result['url']) > 74:
- url_parts = result['url'][:35], result['url'][-35:]
- result['pretty_url'] = u'{0}[...]{1}'.format(*url_parts)
- else:
- result['pretty_url'] = result['url']
+ result['pretty_url'] = prettify_url(result['url'])
# TODO, check if timezone is calculated right
if 'publishedDate' in result:
@@ -413,10 +412,7 @@ def autocompleter():
request_data = request.args
# set blocked engines
- if request.cookies.get('blocked_engines'):
- blocked_engines = request.cookies['blocked_engines'].split(',') # noqa
- else:
- blocked_engines = []
+ blocked_engines = get_blocked_engines(engines, request.cookies)
# parse query
query = Query(request_data.get('q', '').encode('utf-8'), blocked_engines)
@@ -429,34 +425,29 @@ def autocompleter():
# run autocompleter
completer = autocomplete_backends.get(request.cookies.get('autocomplete'))
- # check if valid autocompleter is selected
- if not completer:
- return '', 400
-
# parse searx specific autocompleter results like !bang
raw_results = searx_bang(query)
- # normal autocompletion results only appear if max 3. searx results returned
- if len(raw_results) <= 3:
+ # normal autocompletion results only appear if max 3 inner results returned
+ if len(raw_results) <= 3 and completer:
# run autocompletion
raw_results.extend(completer(query.getSearchQuery()))
# parse results (write :language and !engine back to result string)
results = []
for result in raw_results:
- result_query = query
- result_query.changeSearchQuery(result)
+ query.changeSearchQuery(result)
# add parsed result
- results.append(result_query.getFullQuery())
+ results.append(query.getFullQuery())
# return autocompleter results
if request_data.get('format') == 'x-suggestions':
return Response(json.dumps([query.query, results]),
mimetype='application/json')
- else:
- return Response(json.dumps(results),
- mimetype='application/json')
+
+ return Response(json.dumps(results),
+ mimetype='application/json')
@app.route('/preferences', methods=['GET', 'POST'])
@@ -476,7 +467,7 @@ def preferences():
resp = make_response(redirect(url_for('index')))
if request.method == 'GET':
- blocked_engines = request.cookies.get('blocked_engines', '').split(',')
+ blocked_engines = get_blocked_engines(engines, request.cookies)
else: # on save
selected_categories = []
locale = None
@@ -564,12 +555,12 @@ def preferences():
@app.route('/image_proxy', methods=['GET'])
def image_proxy():
- url = request.args.get('url')
+ url = request.args.get('url').encode('utf-8')
if not url:
return '', 400
- h = hashlib.sha256(url + settings['server']['secret_key']).hexdigest()
+ h = hashlib.sha256(url + settings['server']['secret_key'].encode('utf-8')).hexdigest()
if h != request.args.get('h'):
return '', 400