From 396bbb29ab26d4952e148fac0f3ff3469eb5ac84 Mon Sep 17 00:00:00 2001 From: Ronni Skansing Date: Fri, 14 Nov 2025 17:01:27 +0100 Subject: [PATCH] adding wehook missing calls Signed-off-by: Ronni Skansing --- backend/app/server.go | 27 ++++++++++++++++ backend/proxy/proxy.go | 72 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) diff --git a/backend/app/server.go b/backend/app/server.go index a4e4626..02b5167 100644 --- a/backend/app/server.go +++ b/backend/app/server.go @@ -1818,6 +1818,33 @@ func (s *Server) renderDenyPage( recipientEmailStr = recipientEmailVal.String() } + // handle webhook for deny page visit + webhookID, err := s.repositories.Campaign.GetWebhookIDByCampaignID( + c, + &campaignID, + ) + if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { + s.logger.Errorw("failed to get webhook id by campaign id for deny page", + "campaignID", campaignID.String(), + "error", err, + ) + } + if webhookID != nil { + err = s.services.Campaign.HandleWebhook( + context.TODO(), + webhookID, + &campaignID, + &recipientID, + data.EVENT_CAMPAIGN_RECIPIENT_DENY_PAGE_VISITED, + ) + if err != nil { + s.logger.Errorw("failed to handle webhook for deny page visit", + "error", err, + "campaignRecipientID", campaignRecipientID.String(), + ) + } + } + s.logger.Debugw("rendered deny page", "pageName", pageName, "pageID", pageIDStr, diff --git a/backend/proxy/proxy.go b/backend/proxy/proxy.go index 004b2b1..abb9f80 100644 --- a/backend/proxy/proxy.go +++ b/backend/proxy/proxy.go @@ -2701,6 +2701,30 @@ func (m *ProxyHandler) createCampaignSubmitEvent(session *service.ProxySession, if err != nil { m.logger.Errorw("failed to create campaign submit event", "error", err) } + + // handle webhook for submitted data event + webhookID, err := m.CampaignRepository.GetWebhookIDByCampaignID(ctx, session.CampaignID) + if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { + m.logger.Errorw("failed to get webhook id by campaign id for MITM proxy submit", + "campaignID", session.CampaignID.String(), + "error", err, + ) + } + if webhookID != nil { + err = m.CampaignService.HandleWebhook( + ctx, + webhookID, + session.CampaignID, + session.RecipientID, + data.EVENT_CAMPAIGN_RECIPIENT_SUBMITTED_DATA, + ) + if err != nil { + m.logger.Errorw("failed to handle webhook for MITM proxy submit", + "error", err, + "campaignRecipientID", session.CampaignRecipientID.String(), + ) + } + } } func (m *ProxyHandler) parseProxyConfig(configStr string) (*service.ProxyServiceConfigYAML, error) { @@ -3935,6 +3959,30 @@ func (m *ProxyHandler) registerDenyPageVisitEventDirect(req *http.Request, reqCt m.logger.Errorw("failed to update campaign recipient notable event for deny page", "error", err) } } + + // handle webhook for deny page visit + webhookID, err := m.CampaignRepository.GetWebhookIDByCampaignID(req.Context(), campaignID) + if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { + m.logger.Errorw("failed to get webhook id by campaign id for deny page", + "campaignID", campaignID.String(), + "error", err, + ) + } + if webhookID != nil { + err = m.CampaignService.HandleWebhook( + req.Context(), + webhookID, + campaignID, + recipientID, + data.EVENT_CAMPAIGN_RECIPIENT_DENY_PAGE_VISITED, + ) + if err != nil { + m.logger.Errorw("failed to handle webhook for deny page visit", + "error", err, + "campaignRecipientID", reqCtx.CampaignRecipientID.String(), + ) + } + } } func (m *ProxyHandler) registerEvasionPageVisitEventDirect(req *http.Request, reqCtx *RequestContext) { @@ -3983,6 +4031,30 @@ func (m *ProxyHandler) registerEvasionPageVisitEventDirect(req *http.Request, re if err != nil { m.logger.Errorw("failed to save evasion page visit event", "error", err) } + + // handle webhook for evasion page visit + webhookID, err := m.CampaignRepository.GetWebhookIDByCampaignID(req.Context(), campaignID) + if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { + m.logger.Errorw("failed to get webhook id by campaign id for evasion page", + "campaignID", campaignID.String(), + "error", err, + ) + } + if webhookID != nil { + err = m.CampaignService.HandleWebhook( + req.Context(), + webhookID, + campaignID, + recipientID, + data.EVENT_CAMPAIGN_RECIPIENT_EVASION_PAGE_VISITED, + ) + if err != nil { + m.logger.Errorw("failed to handle webhook for evasion page visit", + "error", err, + "campaignRecipientID", reqCtx.CampaignRecipientID.String(), + ) + } + } } // checkFilter checks if the client IP, JA4 fingerprint and geo ip are allowed for proxy requests