mirror of
https://github.com/phishingclub/phishingclub.git
synced 2026-08-17 16:07:18 +02:00
Initial open source release
This commit is contained in:
Vendored
+80
@@ -0,0 +1,80 @@
|
||||
package cache
|
||||
|
||||
import (
|
||||
"sync/atomic"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/phishingclub/phishingclub/data"
|
||||
)
|
||||
|
||||
// EventIDByName is a map of event names to event IDs
|
||||
var EventIDByName = map[string]*uuid.UUID{}
|
||||
|
||||
// EventNameByID is a map of event ids to names
|
||||
// this is not safe before the API is up an running entirely
|
||||
var EventNameByID = map[string]string{}
|
||||
|
||||
var isUpdateAvailable atomic.Bool
|
||||
|
||||
func init() {
|
||||
for _, name := range data.Events {
|
||||
EventIDByName[name] = nil
|
||||
}
|
||||
isUpdateAvailable.Store(false)
|
||||
}
|
||||
|
||||
func SetUpdateAvailable(updateAvailable bool) {
|
||||
isUpdateAvailable.Store(updateAvailable)
|
||||
}
|
||||
|
||||
func IsUpdateAvailable() bool {
|
||||
return isUpdateAvailable.Load()
|
||||
}
|
||||
|
||||
// TODO all priority event functions should be in utils or something, and the priority in the data package.
|
||||
// var CampaignEventPriority = map[]
|
||||
// Add priority rankings (higher number = higher priority)
|
||||
// readonly
|
||||
var CampaignEventPriority = map[string]int{
|
||||
// campaign recipient events
|
||||
data.EVENT_CAMPAIGN_RECIPIENT_CANCELLED: 80,
|
||||
data.EVENT_CAMPAIGN_RECIPIENT_SUBMITTED_DATA: 70,
|
||||
data.EVENT_CAMPAIGN_RECIPIENT_AFTER_PAGE_VISITED: 60,
|
||||
data.EVENT_CAMPAIGN_RECIPIENT_BEFORE_PAGE_VISITED: 40,
|
||||
data.EVENT_CAMPAIGN_RECIPIENT_PAGE_VISITED: 50,
|
||||
data.EVENT_CAMPAIGN_RECIPIENT_MESSAGE_READ: 30,
|
||||
data.EVENT_CAMPAIGN_RECIPIENT_MESSAGE_FAILED: 20,
|
||||
data.EVENT_CAMPAIGN_RECIPIENT_MESSAGE_SENT: 20,
|
||||
data.EVENT_CAMPAIGN_RECIPIENT_SCHEDULED: 10,
|
||||
// campaign events
|
||||
data.EVENT_CAMPAIGN_CLOSED: 30,
|
||||
data.EVENT_CAMPAIGN_ACTIVE: 20,
|
||||
data.EVENT_CAMPAIGN_SELF_MANAGED: 20,
|
||||
data.EVENT_CAMPAIGN_SCHEDULED: 10,
|
||||
}
|
||||
|
||||
// IsMoreNotableCampaignRecipientEvent returns true if newEvent is more notable than currentEvent
|
||||
func IsMoreNotableCampaignRecipientEvent(newEvent, currentEvent string) bool {
|
||||
newPriority, newExists := CampaignEventPriority[newEvent]
|
||||
currentPriority, currentExists := CampaignEventPriority[currentEvent]
|
||||
|
||||
// If either event doesn't exist in our priority map, treat it as lowest priority
|
||||
if !newExists || !currentExists {
|
||||
return false
|
||||
}
|
||||
|
||||
return newPriority > currentPriority
|
||||
}
|
||||
func IsMoreNotableCampaignRecipientEventID(currentID, newID *uuid.UUID) bool {
|
||||
if currentID == nil || currentID.String() == uuid.Nil.String() {
|
||||
return true
|
||||
}
|
||||
if newID == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
newEventName := EventNameByID[newID.String()]
|
||||
currentEventName := EventNameByID[currentID.String()]
|
||||
|
||||
return IsMoreNotableCampaignRecipientEvent(newEventName, currentEventName)
|
||||
}
|
||||
Reference in New Issue
Block a user