| @@ -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 | |||||
| @@ -56,6 +56,7 @@ INSTALLED_APPS = ( | |||||
| ) | ) | ||||
| MIDDLEWARE_CLASSES = ( | MIDDLEWARE_CLASSES = ( | ||||
| 'sas_web.block_ip.BlockedIpMiddleware', | |||||
| 'django.contrib.sessions.middleware.SessionMiddleware', | 'django.contrib.sessions.middleware.SessionMiddleware', | ||||
| 'django.middleware.common.CommonMiddleware', | 'django.middleware.common.CommonMiddleware', | ||||
| 'django.middleware.csrf.CsrfViewMiddleware', | 'django.middleware.csrf.CsrfViewMiddleware', | ||||
| @@ -8,3 +8,7 @@ def index(request): | |||||
| def impressum(request): | def impressum(request): | ||||
| return render(request, 'startpage/impressum.html') | return render(request, 'startpage/impressum.html') | ||||
| def banned(request): | |||||
| return render(request, 'startpage/bann.html') | |||||