From 8e0eb848ccc1826e8d3fbc3ab6022c581800d9ee Mon Sep 17 00:00:00 2001 From: Shirlei Chaves <shirlei@gmail.com> Date: Wed, 4 May 2016 09:42:47 -0300 Subject: [PATCH] Save cast_ip --- helios/views.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/helios/views.py b/helios/views.py index 0aaaaa5..5e1d0be 100644 --- a/helios/views.py +++ b/helios/views.py @@ -616,12 +616,22 @@ def one_election_cast_confirm(request, election): if voter: vote = datatypes.LDObject.fromDict(utils.from_json(encrypted_vote), type_hint='legacy/EncryptedVote').wrapped_obj + if 'HTTP_X_FORWARDED_FOR' in request.META: + # HTTP_X_FORWARDED_FOR sometimes have a comma delimited list of IP addresses + # Here we want the originating IP address + # See http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.html + # and https://en.wikipedia.org/wiki/X-Forwarded-For + cast_ip = request.META.get('HTTP_X_FORWARDED_FOR').split(',')[0].strip() or None + else: + cast_ip = request.META.get('REMOTE_ADDR', None) + # prepare the vote to cast cast_vote_params = { 'vote' : vote, 'voter' : voter, 'vote_hash': vote_fingerprint, - 'cast_at': datetime.datetime.utcnow() + 'cast_at': datetime.datetime.utcnow(), + 'cast_ip': cast_ip } cast_vote = CastVote(**cast_vote_params) -- GitLab