mirror of
https://github.com/searxng/searxng
synced 2024-01-01 18:24:07 +00:00
47721a3485
for enabling by default advanced limiter functions in the future allow us to add features just for the public instances
39 lines
1.0 KiB
Python
39 lines
1.0 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
# lint: pylint
|
|
# pyright: basic
|
|
"""see :ref:`limiter src`"""
|
|
|
|
import sys
|
|
import flask
|
|
|
|
from searx import redisdb
|
|
from searx.plugins import logger
|
|
from searx.botdetection import limiter
|
|
|
|
name = "Request limiter"
|
|
description = "Limit the number of request"
|
|
default_on = False
|
|
preference_section = 'service'
|
|
|
|
logger = logger.getChild('limiter')
|
|
|
|
|
|
def pre_request():
|
|
"""See :ref:`flask.Flask.before_request`"""
|
|
return limiter.filter_request(flask.request)
|
|
|
|
|
|
def init(app: flask.Flask, settings) -> bool:
|
|
if not settings['server']['limiter'] and not settings['server']['public_instance']:
|
|
return False
|
|
if not redisdb.client():
|
|
logger.error(
|
|
"The limiter requires Redis, please consult the documentation: "
|
|
+ "https://docs.searxng.org/admin/searx.botdetection.html#limiter"
|
|
)
|
|
if settings['server']['public_instance']:
|
|
sys.exit(1)
|
|
return False
|
|
app.before_request(pre_request)
|
|
return True
|