|  | @@ -42,6 +42,7 @@ ENGINE_DEFAULT_ARGS = {
 | 
											
												
													
														|  |      "safesearch": False,
 |  |      "safesearch": False,
 | 
											
												
													
														|  |      "time_range_support": False,
 |  |      "time_range_support": False,
 | 
											
												
													
														|  |      "enable_http": False,
 |  |      "enable_http": False,
 | 
											
												
													
														|  | 
 |  | +    "using_tor_proxy": False,
 | 
											
												
													
														|  |      "display_error_messages": True,
 |  |      "display_error_messages": True,
 | 
											
												
													
														|  |      "tokens": [],
 |  |      "tokens": [],
 | 
											
												
													
														|  |      "about": {},
 |  |      "about": {},
 | 
											
										
											
												
													
														|  | @@ -230,8 +231,8 @@ def set_language_attributes(engine: Engine):
 | 
											
												
													
														|  |          )
 |  |          )
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -def update_attributes_for_tor(engine):
 |  | 
 | 
											
												
													
														|  | -    if settings['outgoing'].get('using_tor_proxy') and hasattr(engine, 'onion_url'):
 |  | 
 | 
											
												
													
														|  | 
 |  | +def update_attributes_for_tor(engine: Engine) -> bool:
 | 
											
												
													
														|  | 
 |  | +    if using_tor_proxy(engine) and hasattr(engine, 'onion_url'):
 | 
											
												
													
														|  |          engine.search_url = engine.onion_url + getattr(engine, 'search_path', '')
 |  |          engine.search_url = engine.onion_url + getattr(engine, 'search_path', '')
 | 
											
												
													
														|  |          engine.timeout += settings['outgoing'].get('extra_proxy_timeout', 0)
 |  |          engine.timeout += settings['outgoing'].get('extra_proxy_timeout', 0)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -249,13 +250,18 @@ def is_missing_required_attributes(engine):
 | 
											
												
													
														|  |      return missing
 |  |      return missing
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +def using_tor_proxy(engine: Engine):
 | 
											
												
													
														|  | 
 |  | +    """Return True if the engine configuration declares to use Tor."""
 | 
											
												
													
														|  | 
 |  | +    return settings['outgoing'].get('using_tor_proxy') or getattr(engine, 'using_tor_proxy', False)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  def is_engine_active(engine: Engine):
 |  |  def is_engine_active(engine: Engine):
 | 
											
												
													
														|  |      # check if engine is inactive
 |  |      # check if engine is inactive
 | 
											
												
													
														|  |      if engine.inactive is True:
 |  |      if engine.inactive is True:
 | 
											
												
													
														|  |          return False
 |  |          return False
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      # exclude onion engines if not using tor
 |  |      # exclude onion engines if not using tor
 | 
											
												
													
														|  | -    if 'onions' in engine.categories and not settings['outgoing'].get('using_tor_proxy'):
 |  | 
 | 
											
												
													
														|  | 
 |  | +    if 'onions' in engine.categories and not using_tor_proxy(engine):
 | 
											
												
													
														|  |          return False
 |  |          return False
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      return True
 |  |      return True
 |