| 
														
															@@ -211,23 +211,33 @@ def pre_request(): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 def is_installed(): 
														 | 
														
														 | 
														
															 def is_installed(): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    """Returns ``True`` if limiter is active and a redis DB is available.""" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     return _INSTALLED 
														 | 
														
														 | 
														
															     return _INSTALLED 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 def initialize(app: flask.Flask, settings): 
														 | 
														
														 | 
														
															 def initialize(app: flask.Flask, settings): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    """Instal the botlimiter aka limiter""" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    """Install the limiter""" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     global _INSTALLED  # pylint: disable=global-statement 
														 | 
														
														 | 
														
															     global _INSTALLED  # pylint: disable=global-statement 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    if not settings['server']['limiter'] and not settings['server']['public_instance']: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if not (settings['server']['limiter'] or settings['server']['public_instance']): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return 
														 | 
														
														 | 
														
															         return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     redis_client = redisdb.client() 
														 | 
														
														 | 
														
															     redis_client = redisdb.client() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     if not redis_client: 
														 | 
														
														 | 
														
															     if not redis_client: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         logger.error( 
														 | 
														
														 | 
														
															         logger.error( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             "The limiter requires Redis, please consult the documentation: " 
														 | 
														
														 | 
														
															             "The limiter requires Redis, please consult the documentation: " 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            + "https://docs.searxng.org/admin/searx.botdetection.html#limiter" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            "https://docs.searxng.org/admin/searx.limiter.html" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         ) 
														 | 
														
														 | 
														
															         ) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         if settings['server']['public_instance']: 
														 | 
														
														 | 
														
															         if settings['server']['public_instance']: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             sys.exit(1) 
														 | 
														
														 | 
														
															             sys.exit(1) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return 
														 | 
														
														 | 
														
															         return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    botdetection.init(get_cfg(), redis_client) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    app.before_request(pre_request) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     _INSTALLED = True 
														 | 
														
														 | 
														
															     _INSTALLED = True 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cfg = get_cfg() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if settings['server']['public_instance']: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        # overwrite limiter.toml setting 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        cfg.set('botdetection.ip_limit.link_token', True) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    botdetection.init(cfg, redis_client) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    app.before_request(pre_request) 
														 |