summaryrefslogtreecommitdiff
path: root/searx
diff options
context:
space:
mode:
Diffstat (limited to 'searx')
-rw-r--r--searx/search.py6
-rw-r--r--searx/webadapter.py33
-rwxr-xr-xsearx/webapp.py2
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)