diff --git a/web_dev/sas_web/sas_web/block_ip.py b/web_dev/sas_web/sas_web/block_ip.py new file mode 100644 index 0000000..03981a9 --- /dev/null +++ b/web_dev/sas_web/sas_web/block_ip.py @@ -0,0 +1,20 @@ +from django.shortcuts import render +from startpage.models import Banned + + +class BlockedIpMiddleware(object): + + def process_request(self, request): + if get_client_ip(request) in [b.ip_address for b in + Banned.objects.all()]: + return render(request, 'startpage/bann.html') + return None + + +def get_client_ip(request): + x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') + if x_forwarded_for: + ip = x_forwarded_for.split(',')[0] + else: + ip = request.META.get('REMOTE_ADDR') + return ip diff --git a/web_dev/sas_web/sas_web/settings.py b/web_dev/sas_web/sas_web/settings.py index 46c7f50..9573805 100644 --- a/web_dev/sas_web/sas_web/settings.py +++ b/web_dev/sas_web/sas_web/settings.py @@ -56,6 +56,7 @@ INSTALLED_APPS = ( ) MIDDLEWARE_CLASSES = ( + 'sas_web.block_ip.BlockedIpMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', diff --git a/web_dev/sas_web/startpage/views.py b/web_dev/sas_web/startpage/views.py index ad40d7c..7e27607 100644 --- a/web_dev/sas_web/startpage/views.py +++ b/web_dev/sas_web/startpage/views.py @@ -8,3 +8,7 @@ def index(request): def impressum(request): return render(request, 'startpage/impressum.html') + + +def banned(request): + return render(request, 'startpage/bann.html')