@ -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"""
""" Instal l 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 )