From 4dab384ce1b37f5e1bd526957928051fab02d66c Mon Sep 17 00:00:00 2001 From: tjacovich Date: Fri, 7 Feb 2025 16:01:56 -0500 Subject: [PATCH 1/7] Stop email sending for mirrored request. --- biblib/views/permission_view.py | 9 +++++---- biblib/views/transfer_view.py | 17 +++++++++-------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/biblib/views/permission_view.py b/biblib/views/permission_view.py index 7bd8ac8..00a3052 100644 --- a/biblib/views/permission_view.py +++ b/biblib/views/permission_view.py @@ -549,10 +549,11 @@ def post(self, library): if payload_plain: current_app.logger.info('Sending email to {0} with payload: {1}'.format(permission_data['email'], payload_plain)) try: - msg = self.send_email(email_addr=permission_data['email'], - payload_plain=payload_plain, - payload_html=payload_html, - email_template=PermissionsChangedEmail) + if not request.header.get('Host').endswith('shadow'): + msg = self.send_email(email_addr=permission_data['email'], + payload_plain=payload_plain, + payload_html=payload_html, + email_template=PermissionsChangedEmail) except: current_app.logger.warning('Sending email to {0} failed'.format(permission_data['email'])) diff --git a/biblib/views/transfer_view.py b/biblib/views/transfer_view.py index 02b3213..b786de2 100644 --- a/biblib/views/transfer_view.py +++ b/biblib/views/transfer_view.py @@ -207,14 +207,15 @@ def post(self, library): current_app.logger.info('Sending email to {0} with payload: {1}'.format(transfer_data['email'], payload_plain)) try: - template = env.get_template('transfer_email.html') - payload_html = template.render(email_address=transfer_data['email'], - lib_name=name, - lib_id=library) - msg = self.send_email(email_addr=transfer_data['email'], - payload_plain=payload_plain, - payload_html=payload_html, - email_template=PermissionsChangedEmail) + if not request.header.get('Host').endswith('shadow'): + template = env.get_template('transfer_email.html') + payload_html = template.render(email_address=transfer_data['email'], + lib_name=name, + lib_id=library) + msg = self.send_email(email_addr=transfer_data['email'], + payload_plain=payload_plain, + payload_html=payload_html, + email_template=PermissionsChangedEmail) except: current_app.logger.warning('Sending email to {0} failed'.format(transfer_data['email'])) From 778ad7373e9e358776b9ef6ba36ba666354347e9 Mon Sep 17 00:00:00 2001 From: tjacovich Date: Fri, 7 Feb 2025 16:08:20 -0500 Subject: [PATCH 2/7] Add MIRROR header check to email sending. --- biblib/views/permission_view.py | 2 +- biblib/views/transfer_view.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/biblib/views/permission_view.py b/biblib/views/permission_view.py index 00a3052..535bec1 100644 --- a/biblib/views/permission_view.py +++ b/biblib/views/permission_view.py @@ -549,7 +549,7 @@ def post(self, library): if payload_plain: current_app.logger.info('Sending email to {0} with payload: {1}'.format(permission_data['email'], payload_plain)) try: - if not request.header.get('Host').endswith('shadow'): + if not request.header.get(current_app.config.get('MIRROR_HEADER'),'HOST').endswith(current_app.config.get('MIRROR_SUFFIX'),'-shadow'): msg = self.send_email(email_addr=permission_data['email'], payload_plain=payload_plain, payload_html=payload_html, diff --git a/biblib/views/transfer_view.py b/biblib/views/transfer_view.py index b786de2..166d0e7 100644 --- a/biblib/views/transfer_view.py +++ b/biblib/views/transfer_view.py @@ -207,7 +207,7 @@ def post(self, library): current_app.logger.info('Sending email to {0} with payload: {1}'.format(transfer_data['email'], payload_plain)) try: - if not request.header.get('Host').endswith('shadow'): + if not request.header.get(current_app.config.get('MIRROR_HEADER'),'HOST').endswith(current_app.config.get('MIRROR_SUFFIX'),'-shadow'): template = env.get_template('transfer_email.html') payload_html = template.render(email_address=transfer_data['email'], lib_name=name, From 7531ad418b85cb61f037188932a14f6eec3dfcd3 Mon Sep 17 00:00:00 2001 From: tjacovich Date: Fri, 7 Feb 2025 16:09:04 -0500 Subject: [PATCH 3/7] Add MIRROR header check to email sending. --- biblib/views/transfer_view.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/biblib/views/transfer_view.py b/biblib/views/transfer_view.py index 166d0e7..1d51134 100644 --- a/biblib/views/transfer_view.py +++ b/biblib/views/transfer_view.py @@ -207,7 +207,7 @@ def post(self, library): current_app.logger.info('Sending email to {0} with payload: {1}'.format(transfer_data['email'], payload_plain)) try: - if not request.header.get(current_app.config.get('MIRROR_HEADER'),'HOST').endswith(current_app.config.get('MIRROR_SUFFIX'),'-shadow'): + if not request.header.get(current_app.config.get('MIRROR_HEADER'),'Host').endswith(current_app.config.get('MIRROR_SUFFIX'),'-shadow'): template = env.get_template('transfer_email.html') payload_html = template.render(email_address=transfer_data['email'], lib_name=name, From 8805f20337e0af29d02ac9f87c1a68ae4acae675 Mon Sep 17 00:00:00 2001 From: tjacovich Date: Thu, 20 Feb 2025 18:07:24 -0500 Subject: [PATCH 4/7] Fix typo in if --- biblib/views/permission_view.py | 2 +- biblib/views/transfer_view.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/biblib/views/permission_view.py b/biblib/views/permission_view.py index 535bec1..8d48f41 100644 --- a/biblib/views/permission_view.py +++ b/biblib/views/permission_view.py @@ -549,7 +549,7 @@ def post(self, library): if payload_plain: current_app.logger.info('Sending email to {0} with payload: {1}'.format(permission_data['email'], payload_plain)) try: - if not request.header.get(current_app.config.get('MIRROR_HEADER'),'HOST').endswith(current_app.config.get('MIRROR_SUFFIX'),'-shadow'): + if not request.header.get(current_app.config.get('MIRROR_HEADER'),'HOST').endswith(current_app.config.get('MIRROR_SUFFIX','-shadow')): msg = self.send_email(email_addr=permission_data['email'], payload_plain=payload_plain, payload_html=payload_html, diff --git a/biblib/views/transfer_view.py b/biblib/views/transfer_view.py index 1d51134..0126b0f 100644 --- a/biblib/views/transfer_view.py +++ b/biblib/views/transfer_view.py @@ -207,7 +207,7 @@ def post(self, library): current_app.logger.info('Sending email to {0} with payload: {1}'.format(transfer_data['email'], payload_plain)) try: - if not request.header.get(current_app.config.get('MIRROR_HEADER'),'Host').endswith(current_app.config.get('MIRROR_SUFFIX'),'-shadow'): + if not request.header.get(current_app.config.get('MIRROR_HEADER'),'Host').endswith(current_app.config.get('MIRROR_SUFFIX','-shadow')): template = env.get_template('transfer_email.html') payload_html = template.render(email_address=transfer_data['email'], lib_name=name, From bdd223c53db5cb7c1afef1d543e7a12392926ad6 Mon Sep 17 00:00:00 2001 From: tjacovich Date: Thu, 20 Feb 2025 19:14:16 -0500 Subject: [PATCH 5/7] Fix Host header. --- biblib/views/permission_view.py | 7 +++++-- biblib/views/transfer_view.py | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/biblib/views/permission_view.py b/biblib/views/permission_view.py index 8d48f41..f6d3ede 100644 --- a/biblib/views/permission_view.py +++ b/biblib/views/permission_view.py @@ -547,13 +547,16 @@ def post(self, library): payload_plain = None if payload_plain: - current_app.logger.info('Sending email to {0} with payload: {1}'.format(permission_data['email'], payload_plain)) try: - if not request.header.get(current_app.config.get('MIRROR_HEADER'),'HOST').endswith(current_app.config.get('MIRROR_SUFFIX','-shadow')): + if not request.header.get(current_app.config.get('MIRROR_HEADER'),'Host').endswith(current_app.config.get('MIRROR_SUFFIX','-shadow')): + current_app.logger.info('Sending email to {0} with payload: {1}'.format(permission_data['email'], payload_plain)) msg = self.send_email(email_addr=permission_data['email'], payload_plain=payload_plain, payload_html=payload_html, email_template=PermissionsChangedEmail) + else: + current_app.logger.info('Skipping sending email to {0} with payload: {1} due to shadowed request.'.format(permission_data['email'], payload_plain)) + except: current_app.logger.warning('Sending email to {0} failed'.format(permission_data['email'])) diff --git a/biblib/views/transfer_view.py b/biblib/views/transfer_view.py index 0126b0f..0b4f336 100644 --- a/biblib/views/transfer_view.py +++ b/biblib/views/transfer_view.py @@ -204,10 +204,10 @@ def post(self, library): u'\n If this is a mistake, please contact ADS Help (adshelp@cfa.harvard.edu). ' \ u'\n - the ADS team'.format(name, library) - current_app.logger.info('Sending email to {0} with payload: {1}'.format(transfer_data['email'], payload_plain)) try: if not request.header.get(current_app.config.get('MIRROR_HEADER'),'Host').endswith(current_app.config.get('MIRROR_SUFFIX','-shadow')): + current_app.logger.info('Sending email to {0} with payload: {1}'.format(transfer_data['email'], payload_plain)) template = env.get_template('transfer_email.html') payload_html = template.render(email_address=transfer_data['email'], lib_name=name, @@ -216,6 +216,9 @@ def post(self, library): payload_plain=payload_plain, payload_html=payload_html, email_template=PermissionsChangedEmail) + else: + current_app.logger.info('Skipping sending email to {0} with payload: {1} due to shadowed request.'.format(transfer_data['email'], payload_plain)) + except: current_app.logger.warning('Sending email to {0} failed'.format(transfer_data['email'])) From 0576acc7b895b2d94690a38d9341f5457b05ce7c Mon Sep 17 00:00:00 2001 From: tjacovich Date: Thu, 20 Feb 2025 19:26:49 -0500 Subject: [PATCH 6/7] Fix Host header call in if statement. --- biblib/views/permission_view.py | 2 +- biblib/views/transfer_view.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/biblib/views/permission_view.py b/biblib/views/permission_view.py index f6d3ede..a0518e8 100644 --- a/biblib/views/permission_view.py +++ b/biblib/views/permission_view.py @@ -548,7 +548,7 @@ def post(self, library): if payload_plain: try: - if not request.header.get(current_app.config.get('MIRROR_HEADER'),'Host').endswith(current_app.config.get('MIRROR_SUFFIX','-shadow')): + if not request.headers.get(current_app.config.get('MIRROR_HEADER'),'Host').endswith(current_app.config.get('MIRROR_SUFFIX','shadow')): current_app.logger.info('Sending email to {0} with payload: {1}'.format(permission_data['email'], payload_plain)) msg = self.send_email(email_addr=permission_data['email'], payload_plain=payload_plain, diff --git a/biblib/views/transfer_view.py b/biblib/views/transfer_view.py index 0b4f336..8f5289f 100644 --- a/biblib/views/transfer_view.py +++ b/biblib/views/transfer_view.py @@ -206,7 +206,7 @@ def post(self, library): try: - if not request.header.get(current_app.config.get('MIRROR_HEADER'),'Host').endswith(current_app.config.get('MIRROR_SUFFIX','-shadow')): + if not request.headers.get(current_app.config.get('MIRROR_HEADER'),'Host').endswith(current_app.config.get('MIRROR_SUFFIX','shadow')): current_app.logger.info('Sending email to {0} with payload: {1}'.format(transfer_data['email'], payload_plain)) template = env.get_template('transfer_email.html') payload_html = template.render(email_address=transfer_data['email'], From 47986cb71c4eade04395c0dc4c6fc773a7f427cd Mon Sep 17 00:00:00 2001 From: tjacovich Date: Thu, 20 Feb 2025 19:35:28 -0500 Subject: [PATCH 7/7] Temporarily simplify mirror check --- biblib/views/permission_view.py | 2 +- biblib/views/transfer_view.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/biblib/views/permission_view.py b/biblib/views/permission_view.py index a0518e8..4b57187 100644 --- a/biblib/views/permission_view.py +++ b/biblib/views/permission_view.py @@ -548,7 +548,7 @@ def post(self, library): if payload_plain: try: - if not request.headers.get(current_app.config.get('MIRROR_HEADER'),'Host').endswith(current_app.config.get('MIRROR_SUFFIX','shadow')): + if not request.headers.get('Host').endswith('shadow'): current_app.logger.info('Sending email to {0} with payload: {1}'.format(permission_data['email'], payload_plain)) msg = self.send_email(email_addr=permission_data['email'], payload_plain=payload_plain, diff --git a/biblib/views/transfer_view.py b/biblib/views/transfer_view.py index 8f5289f..7e92a8f 100644 --- a/biblib/views/transfer_view.py +++ b/biblib/views/transfer_view.py @@ -206,7 +206,7 @@ def post(self, library): try: - if not request.headers.get(current_app.config.get('MIRROR_HEADER'),'Host').endswith(current_app.config.get('MIRROR_SUFFIX','shadow')): + if not request.headers.get('Host').endswith('shadow'): current_app.logger.info('Sending email to {0} with payload: {1}'.format(transfer_data['email'], payload_plain)) template = env.get_template('transfer_email.html') payload_html = template.render(email_address=transfer_data['email'],