mirror of
				https://github.com/searxng/searxng.git
				synced 2025-11-03 19:17:07 -05:00 
			
		
		
		
	Closes: https://github.com/searxng/searxng/issues/2477 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
		
			
				
	
	
		
			33 lines
		
	
	
		
			758 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			758 B
		
	
	
	
		
			Python
		
	
	
	
	
	
# SPDX-License-Identifier: AGPL-3.0-or-later
 | 
						|
# lint: pylint
 | 
						|
# pyright: basic
 | 
						|
"""see :ref:`limiter src`"""
 | 
						|
 | 
						|
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']:
 | 
						|
        return False
 | 
						|
    if not redisdb.client():
 | 
						|
        logger.error("The limiter requires Redis")
 | 
						|
        return False
 | 
						|
    app.before_request(pre_request)
 | 
						|
    return True
 |