@@ -52,7 +52,7 @@ class MailPaceTrackingWebhookView(MailPaceBaseWebhookView):
5252
5353 def __init__ (self , ** kwargs ):
5454 try :
55- get_anymail_setting (
55+ self . webhook_key = get_anymail_setting (
5656 "webhook_key" , esp_name = self .esp_name , kwargs = kwargs , allow_bare = True
5757 )
5858 except AnymailConfigurationError :
@@ -75,26 +75,30 @@ def __init__(self, **kwargs):
7575 # MailPace doesn't send a signature for inbound webhooks, yet
7676 # When/if MailPace does this, move this to the parent class
7777 def validate_request (self , request ):
78- try :
79- signature_base64 = request .headers ["X-MailPace-Signature" ]
80- signature = base64 .b64decode (signature_base64 )
81- except (KeyError , binascii .Error ):
82- raise AnymailWebhookValidationFailure (
83- "MailPace webhook called with invalid or missing signature"
84- )
85-
86- verify_key_base64 = self .webhook_key
87-
88- verify_key = VerifyKey (base64 .b64decode (verify_key_base64 ))
89-
90- message = request .body
91-
92- try :
93- verify_key .verify (message , signature )
94- except (CryptoError , ValueError ):
95- raise AnymailWebhookValidationFailure (
96- "MailPace webhook called with incorrect signature"
97- )
78+ if self .webhook_key :
79+ try :
80+ signature_base64 = request .headers ["X-MailPace-Signature" ]
81+ signature = base64 .b64decode (signature_base64 )
82+ except (KeyError , binascii .Error ):
83+ raise AnymailWebhookValidationFailure (
84+ "MailPace webhook called with invalid or missing signature"
85+ )
86+
87+ verify_key_base64 = self .webhook_key
88+
89+ verify_key = VerifyKey (base64 .b64decode (verify_key_base64 ))
90+
91+ message = request .body
92+
93+ try :
94+ verify_key .verify (message , signature )
95+ except (CryptoError , ValueError ):
96+ raise AnymailWebhookValidationFailure (
97+ "MailPace webhook called with incorrect signature"
98+ )
99+ else :
100+ return True
101+ # No webhook key set
98102
99103 def esp_to_anymail_event (self , esp_event ):
100104 event_type = self .event_record_types .get (esp_event ["event" ], EventType .UNKNOWN )
0 commit comments