diff options
Diffstat (limited to 'searx/webapp.py')
| -rw-r--r-- | searx/webapp.py | 47 |
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 |