From 96e1bd23749d3cea7c8d0eb5515baf8d5e584bb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=9D=E7=91=AA=E8=B2=93?= Date: Tue, 11 Aug 2020 11:25:04 +0800 Subject: [PATCH] Fixed the user visit logging to work with IP behind Apache in the Mia core application. --- mia_core/digest_auth.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mia_core/digest_auth.py b/mia_core/digest_auth.py index 08b1d37..9fd38b9 100644 --- a/mia_core/digest_auth.py +++ b/mia_core/digest_auth.py @@ -93,7 +93,7 @@ def _log_visit(request): if "visit_logged" in request.session: return user = request.user - ip = request.META["REMOTE_ADDR"] + ip = _get_remote_ip(request) User.objects.filter(pk=user.pk).update( visits=F("visits") + 1, visited_at=Now(), @@ -104,6 +104,13 @@ def _log_visit(request): request.session["visit_logged"] = True +def _get_remote_ip(request): + x_forwarded_for = request.META.get("HTTP_X_FORWARDED_FOR") + if x_forwarded_for: + return x_forwarded_for.split(",")[0] + return request.META.get('REMOTE_ADDR') + + def _get_host(ip): """Look-up the host name by its IP.