summaryrefslogtreecommitdiff
path: root/searx
diff options
context:
space:
mode:
Diffstat (limited to 'searx')
-rw-r--r--searx/__init__.py3
-rw-r--r--searx/botdetection/ip_limit.py3
-rw-r--r--searx/limiter.py20
3 files changed, 18 insertions, 8 deletions
diff --git a/searx/__init__.py b/searx/__init__.py
index f86052660..d611ef6a2 100644
--- a/searx/__init__.py
+++ b/searx/__init__.py
@@ -108,5 +108,6 @@ else:
if settings['server']['public_instance']:
logger.warning(
"Be aware you have activated features intended only for public instances. "
- + "This force the usage of the bot limiter and link_token plugins."
+ "This force the usage of the limiter and link_token / "
+ "see https://docs.searxng.org/admin/searx.limiter.html"
)
diff --git a/searx/botdetection/ip_limit.py b/searx/botdetection/ip_limit.py
index 071978a33..387e580ee 100644
--- a/searx/botdetection/ip_limit.py
+++ b/searx/botdetection/ip_limit.py
@@ -45,7 +45,6 @@ from ipaddress import (
import flask
import werkzeug
-from searx import settings
from searx import redisdb
from searx.redislib import incr_sliding_window, drop_counter
@@ -109,7 +108,7 @@ def filter_request(
if c > API_MAX:
return too_many_requests(network, "too many request in API_WINDOW")
- if settings['server']['public_instance'] or cfg['botdetection.ip_limit.link_token']:
+ if cfg['botdetection.ip_limit.link_token']:
suspicious = link_token.is_suspicious(network, request, True)
diff --git a/searx/limiter.py b/searx/limiter.py
index b61292d70..fa7418922 100644
--- a/searx/limiter.py
+++ b/searx/limiter.py
@@ -211,23 +211,33 @@ def pre_request():
def is_installed():
+ """Returns ``True`` if limiter is active and a redis DB is available."""
return _INSTALLED
def initialize(app: flask.Flask, settings):
- """Instal the botlimiter aka limiter"""
+ """Install the limiter"""
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
+
redis_client = redisdb.client()
if not redis_client:
logger.error(
"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']:
sys.exit(1)
return
- botdetection.init(get_cfg(), redis_client)
- app.before_request(pre_request)
+
_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)