summaryrefslogtreecommitdiff
path: root/searx/botdetection/ip_limit.py
diff options
context:
space:
mode:
authorMarkus Heiser <markus.heiser@darmarit.de>2023-05-26 17:24:43 +0200
committerMarkus Heiser <markus.heiser@darmarit.de>2023-06-01 14:38:53 +0200
commit66fdec0eb92bf11c0bc477d6fb1df3dc783e4dcb (patch)
tree2ce8a9ecf1cdae68e4745c24cab01482d07a5447 /searx/botdetection/ip_limit.py
parent1ec325adccc427fe05cf08da9a2d9d63da7365f4 (diff)
[mod] limiter: add config file /etc/searxng/limiter.toml
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Diffstat (limited to 'searx/botdetection/ip_limit.py')
-rw-r--r--searx/botdetection/ip_limit.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/searx/botdetection/ip_limit.py b/searx/botdetection/ip_limit.py
index fce3f8b67..2646920c2 100644
--- a/searx/botdetection/ip_limit.py
+++ b/searx/botdetection/ip_limit.py
@@ -1,4 +1,5 @@
-"""
+""".. _botdetection.ip_limit:
+
Method ``ip_limit``
-------------------
@@ -22,6 +23,8 @@ The :py:obj:`link_token` method is used to investigate whether a request is
from typing import Optional, Tuple
import flask
+from searx.tools import config
+
from searx import redisdb
from searx import logger
@@ -56,7 +59,7 @@ API_MAX = 4
"""Maximum requests from one IP in the :py:obj:`API_WONDOW`"""
-def filter_request(request: flask.Request) -> Optional[Tuple[int, str]]:
+def filter_request(request: flask.Request, cfg: config.Config) -> Optional[Tuple[int, str]]:
redis_client = redisdb.client()
x_forwarded_for = request.headers.get('X-Forwarded-For', '')
@@ -68,7 +71,9 @@ def filter_request(request: flask.Request) -> Optional[Tuple[int, str]]:
if c > API_MAX:
return 429, "BLOCK %s: API limit exceeded"
- suspicious = link_token.is_suspicious(request)
+ suspicious = False
+ if cfg['botdetection.ip_limit.link_token']:
+ suspicious = link_token.is_suspicious(request)
if suspicious:
c = incr_sliding_window(redis_client, 'IP limit - BURST_WINDOW:' + x_forwarded_for, BURST_WINDOW)