diff --git a/flashcards/middleware.py b/flashcards/middleware.py new file mode 100644 index 0000000..8902caf --- /dev/null +++ b/flashcards/middleware.py @@ -0,0 +1,11 @@ +class SetRemoteAddrFromForwardedFor(object): + def process_request(self, request): + try: + real_ip = request.META['HTTP_X_FORWARDED_FOR'] + except KeyError: + pass + else: + # HTTP_X_FORWARDED_FOR can be a comma-separated list of IPs. + # Take just the first one. + real_ip = real_ip.split(",")[0] + request.META['REMOTE_ADDR'] = real_ip \ No newline at end of file diff --git a/flashcards/views.py b/flashcards/views.py index 1dc17ce..26f909d 100644 --- a/flashcards/views.py +++ b/flashcards/views.py @@ -27,7 +27,7 @@ from simple_email_confirmation import EmailAddress def log_event(request, event=''): getLogger('flashy.events').info( - '%s %s %s %s' % (request.META['REMOTE_ADDR'], str(request.user), request.META.get('PATH', ''), event)) + '%s %s %s %s' % (request.META['REMOTE_ADDR'], str(request.user), request.path, event)) class SectionViewSet(ReadOnlyModelViewSet): diff --git a/flashy/settings.py b/flashy/settings.py index 7b24621..fa733dd 100644 --- a/flashy/settings.py +++ b/flashy/settings.py @@ -36,6 +36,7 @@ INSTALLED_APPS = [ WEBSOCKET_URL = '/ws/' MIDDLEWARE_CLASSES = ( + 'flashcards.middleware.SetRemoteAddrFromForwardedFor', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', @@ -44,6 +45,7 @@ MIDDLEWARE_CLASSES = ( 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', + ) ROOT_URLCONF = 'flashy.urls' @@ -144,7 +146,7 @@ if IN_PRODUCTION: }, }, 'loggers': { - 'django.request': { + 'django': { 'handlers': ['file'], 'level': 'DEBUG', 'propagate': True,