Add support for regexes for user agents
This commit is contained in:
@@ -25,9 +25,8 @@ class AiBlockerMiddleware:
|
|||||||
async def __call__(self, request):
|
async def __call__(self, request):
|
||||||
ua = request.headers.get("User-Agent", "")
|
ua = request.headers.get("User-Agent", "")
|
||||||
|
|
||||||
blocked_headers = self.backer.get_ua_list()
|
|
||||||
|
|
||||||
if ua in blocked_headers:
|
if ua in self.backer:
|
||||||
return HttpResponse(status=403)
|
return HttpResponse(status=403)
|
||||||
|
|
||||||
response = self.get_response(request)
|
response = self.get_response(request)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import re
|
||||||
|
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@@ -9,6 +11,11 @@ class UAList(ABC):
|
|||||||
def get_ua_list(self) -> list[str]:
|
def get_ua_list(self) -> list[str]:
|
||||||
raise NotImplemented
|
raise NotImplemented
|
||||||
|
|
||||||
|
def __contains__(self, item):
|
||||||
|
list = self.get_ua_list()
|
||||||
|
pattern = "|".join(list)
|
||||||
|
return re.search(pattern, item) is not None
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigBackedUAList(UAList):
|
class ConfigBackedUAList(UAList):
|
||||||
|
|||||||
Reference in New Issue
Block a user