Browse Source

[fix] even if limiter not activated, botdetection must be activated

Closes: #2975
Closes: #2995

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Markus Heiser 1 year ago
parent
commit
4acb52f68f
1 changed files with 7 additions and 3 deletions
  1. 7 3
      searx/limiter.py

+ 7 - 3
searx/limiter.py

@@ -218,10 +218,16 @@ def initialize(app: flask.Flask, settings):
     """Install the limiter"""
     """Install the limiter"""
     global _INSTALLED  # pylint: disable=global-statement
     global _INSTALLED  # pylint: disable=global-statement
 
 
+    # even if the limiter is not activated, the botdetection must be activated
+    # (e.g. the self_info plugin uses the botdetection to get client IP)
+
+    cfg = get_cfg()
+    redis_client = redisdb.client()
+    botdetection.init(cfg, redis_client)
+
     if not (settings['server']['limiter'] or settings['server']['public_instance']):
     if not (settings['server']['limiter'] or settings['server']['public_instance']):
         return
         return
 
 
-    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: "
@@ -233,10 +239,8 @@ def initialize(app: flask.Flask, settings):
 
 
     _INSTALLED = True
     _INSTALLED = True
 
 
-    cfg = get_cfg()
     if settings['server']['public_instance']:
     if settings['server']['public_instance']:
         # overwrite limiter.toml setting
         # overwrite limiter.toml setting
         cfg.set('botdetection.ip_limit.link_token', True)
         cfg.set('botdetection.ip_limit.link_token', True)
 
 
-    botdetection.init(cfg, redis_client)
     app.before_request(pre_request)
     app.before_request(pre_request)