From 902e37d24d45c72ad401e761d4ef44af5cf20d03 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 22 Mar 2022 13:04:50 -0500 Subject: [PATCH] fix: improve looking into submission request for remote ip. (#3720) --- ietf/submit/forms.py | 4 ++-- ietf/submit/utils.py | 9 +++++++++ ietf/submit/views.py | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ietf/submit/forms.py b/ietf/submit/forms.py index e935a8072..a00faab3c 100644 --- a/ietf/submit/forms.py +++ b/ietf/submit/forms.py @@ -33,7 +33,7 @@ from ietf.meeting.models import Meeting from ietf.message.models import Message from ietf.name.models import FormalLanguageName, GroupTypeName from ietf.submit.models import Submission, Preapproval -from ietf.submit.utils import validate_submission_name, validate_submission_rev, validate_submission_document_date +from ietf.submit.utils import validate_submission_name, validate_submission_rev, validate_submission_document_date, remote_ip from ietf.submit.parsers.pdf_parser import PDFParser from ietf.submit.parsers.plain_parser import PlainParser from ietf.submit.parsers.xml_parser import XMLParser @@ -47,7 +47,7 @@ class SubmissionBaseUploadForm(forms.Form): def __init__(self, request, *args, **kwargs): super(SubmissionBaseUploadForm, self).__init__(*args, **kwargs) - self.remote_ip = request.META.get('REMOTE_ADDR', None) + self.remote_ip = remote_ip(request) self.request = request self.in_first_cut_off = False diff --git a/ietf/submit/utils.py b/ietf/submit/utils.py index 55801ae48..f1cbe35e1 100644 --- a/ietf/submit/utils.py +++ b/ietf/submit/utils.py @@ -1019,3 +1019,12 @@ def update_submission_external_resources(submission, new_resources): for new_res in new_resources: new_res.submission = submission new_res.save() + +def remote_ip(request): + if 'CF-Connecting-IP' in request.META: + remote_ip = request.META.get('CF-Connecting-IP') + elif 'X-Forwarded-For' in request.META: + remote_ip = request.META.get('X-Forwarded-For').split(',')[0] + else: + remote_ip = request.META.get('REMOTE_ADDR', None) + return remote_ip diff --git a/ietf/submit/views.py b/ietf/submit/views.py index 66c7eadf3..9eb303eb2 100644 --- a/ietf/submit/views.py +++ b/ietf/submit/views.py @@ -39,7 +39,7 @@ from ietf.submit.utils import ( approvable_submissions_for_user, preapprovals_fo post_submission, cancel_submission, rename_submission_files, remove_submission_files, get_draft_meta, get_submission, fill_in_submission, apply_checkers, save_files, check_submission_revision_consistency, accept_submission, accept_submission_requires_group_approval, - accept_submission_requires_prev_auth_approval, update_submission_external_resources ) + accept_submission_requires_prev_auth_approval, update_submission_external_resources, remote_ip ) from ietf.stats.utils import clean_country_name from ietf.utils.accesstoken import generate_access_token from ietf.utils.log import log @@ -729,7 +729,7 @@ def add_manualpost_email(request, submission_id=None, access_token=None): submission, submission_email_event = ( add_submission_email(request=request, - remote_ip=request.META.get('REMOTE_ADDR', None), + remote_ip=remote_ip(request), name = form.draft_name, rev=form.revision, submission_pk = submission_pk,