diff options
Diffstat (limited to 'searx')
-rw-r--r-- | searx/search.py | 6 | ||||
-rw-r--r-- | searx/webadapter.py | 33 | ||||
-rwxr-xr-x | searx/webapp.py | 2 |
3 files changed, 33 insertions, 8 deletions
diff --git a/searx/search.py b/searx/search.py index 3619287b..a99ca6b1 100644 --- a/searx/search.py +++ b/searx/search.py @@ -62,7 +62,7 @@ class SearchQuery: """container for all the search parameters (query, language, etc...)""" def __init__(self, query, engineref_list, categories, lang, safesearch, pageno, time_range, - timeout_limit=None, preferences=None, external_bang=None): + timeout_limit=None, external_bang=None): self.query = query self.engineref_list = engineref_list self.categories = categories @@ -71,7 +71,6 @@ class SearchQuery: self.pageno = pageno self.time_range = time_range self.timeout_limit = timeout_limit - self.preferences = preferences self.external_bang = external_bang def __str__(self): @@ -311,9 +310,6 @@ class Search: return False def _is_accepted(self, engine_name, engine): - if not self.search_query.preferences.validate_token(engine): - return False - # skip suspended engines if engine.suspend_end_time >= time(): logger.debug('Engine currently suspended: %s', engine_name) diff --git a/searx/webadapter.py b/searx/webadapter.py index 0567c8d3..667d44c8 100644 --- a/searx/webadapter.py +++ b/searx/webadapter.py @@ -11,6 +11,31 @@ def deduplicate_engineref_list(engineref_list): return engineref_dict.values() +def validate_engineref_list(engineref_list, preferences): + """ + Validate query_engines according to the preferences + Returns: + list of existing engines with a validated token + list of unknown engine + list of engine with invalid token according to the preferences + """ + valid = [] + unknown = [] + no_token = [] + for engineref in engineref_list: + if engineref.name not in engines: + unknown.append(engineref) + continue + + engine = engines[engineref.name] + if not preferences.validate_token(engine): + no_token.append(engineref) + continue + + valid.append(engineref) + return valid, unknown, no_token + + def get_search_query_from_webapp(preferences, form): # no text for the query ? if not form.get('q'): @@ -152,10 +177,14 @@ def get_search_query_from_webapp(preferences, form): if (engine.name, categ) not in disabled_engines) query_engineref_list = deduplicate_engineref_list(query_engineref_list) + query_engineref_list, query_engineref_list_unknown, query_engineref_list_notoken =\ + validate_engineref_list(query_engineref_list, preferences) external_bang = raw_text_query.external_bang return (SearchQuery(query, query_engineref_list, query_categories, query_lang, query_safesearch, query_pageno, - query_time_range, query_timeout, preferences, + query_time_range, query_timeout, external_bang=external_bang), - raw_text_query) + raw_text_query, + query_engineref_list_unknown, + query_engineref_list_notoken) diff --git a/searx/webapp.py b/searx/webapp.py index ad937291..2a763292 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -562,7 +562,7 @@ def index(): raw_text_query = None result_container = None try: - search_query, raw_text_query = get_search_query_from_webapp(request.preferences, request.form) + search_query, raw_text_query, _, _ = get_search_query_from_webapp(request.preferences, request.form) # search = Search(search_query) # without plugins search = SearchWithPlugins(search_query, request.user_plugins, request) |