From 16854a52bc094a7c023fd2562dd8b7c3b4be374b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 17 Sep 2021 11:43:47 -0700 Subject: [PATCH] Adds ip block middleware --- bookwyrm/middleware/__init__.py | 2 ++ bookwyrm/middleware/ip_middleware.py | 16 ++++++++++++++++ bookwyrm/settings.py | 1 + 3 files changed, 19 insertions(+) create mode 100644 bookwyrm/middleware/ip_middleware.py diff --git a/bookwyrm/middleware/__init__.py b/bookwyrm/middleware/__init__.py index 996b715c..404ea976 100644 --- a/bookwyrm/middleware/__init__.py +++ b/bookwyrm/middleware/__init__.py @@ -1 +1,3 @@ +""" look at all this nice middleware! """ from timezone_middleware import TimezoneMiddleware +from ip_middleware import IPBlocklistMiddleware diff --git a/bookwyrm/middleware/ip_middleware.py b/bookwyrm/middleware/ip_middleware.py new file mode 100644 index 00000000..7fcec1df --- /dev/null +++ b/bookwyrm/middleware/ip_middleware.py @@ -0,0 +1,16 @@ +""" Block IP addresses """ +from django.http import Http404 +from bookwyrm import models + + +class IPBlocklistMiddleware: + """check incoming traffic against an IP block-list""" + + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + address = request.META.get("REMOTE_ADDR") + if models.IPBlockList.objects.filter(address=address).exists(): + raise Http404() + return self.get_response(request) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 917bf075..cf33c129 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -78,6 +78,7 @@ MIDDLEWARE = [ "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", "bookwyrm.middleware.TimezoneMiddleware", + "bookwyrm.middleware.IPBlocklistMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", ]