mirror of
https://github.com/searxng/searxng.git
synced 2025-08-03 10:32:21 +02:00
[mod] check the engine tokens in searx/webadapter.py instead of searx/search.py
This commit is contained in:
parent
eecfff2689
commit
691d12726b
6 changed files with 95 additions and 64 deletions
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue