From 9df03646dbfd18d38f48530bfdca45b272cc39e3 Mon Sep 17 00:00:00 2001 From: Chris kerr Date: Sun, 22 Sep 2024 15:34:32 -0400 Subject: [PATCH] event purging configurations --- app/static/examples/config.example.yml | 17 +++++ config/tmp/main.exe | Bin 0 -> 320328 bytes config/types/eventPurging.go | 15 +++++ config/types/serverConfig.go | 1 + main.go | 7 +- server/db/mongo/purgeEvents.go | 86 +++++++++++++++++++++++++ 6 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 config/tmp/main.exe create mode 100644 config/types/eventPurging.go create mode 100644 server/db/mongo/purgeEvents.go diff --git a/app/static/examples/config.example.yml b/app/static/examples/config.example.yml index fa553cd..2c1f0eb 100644 --- a/app/static/examples/config.example.yml +++ b/app/static/examples/config.example.yml @@ -89,3 +89,20 @@ blacklist: #Removing a pubkey from the Blacklist requires a hard restart; Blackl - db0c9b8acd6101adb9b281c5321f98f6eebb33c5719d230ed1870997538a9765 permanent_blacklist_npubs: # List of permanently banned npubs - npub1x0r5gflnk2mn6h3c70nvnywpy2j46gzqwg6k7uw6fxswyz0md9qqnhshtn + +event_purge: + enabled: true # Toggle to enable/disable event purging + keep_duration_days: 2 # Number of days to keep events + purge_interval_hours: 24 # Runs every 24 hours + purge_by_category: # Configure purging based on categories + parameterized_replaceable: false + regular: true + replaceable: false + purge_by_kind: # Configure purging based on event kind + - kind: 0 + enabled: false + - kind: 1 + enabled: true + - kind: 3 + enabled: false + exclude_whitelisted: true # Exclude events from whitelisted pubkeys during purging diff --git a/config/tmp/main.exe b/config/tmp/main.exe new file mode 100644 index 0000000000000000000000000000000000000000..82bf806f958731a9032804d41a33aa2faf7f951e GIT binary patch literal 320328 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 literal 0 HcmV?d00001 diff --git a/config/types/eventPurging.go b/config/types/eventPurging.go new file mode 100644 index 0000000..4434be8 --- /dev/null +++ b/config/types/eventPurging.go @@ -0,0 +1,15 @@ +package config + +type EventPurgeConfig struct { + Enabled bool `yaml:"enabled"` + KeepDurationDays int `yaml:"keep_duration_days"` + PurgeIntervalHours int `yaml:"purge_interval_hours"` + PurgeByCategory map[string]bool `yaml:"purge_by_category"` + PurgeByKind []KindPurgeRule `yaml:"purge_by_kind"` + ExcludeWhitelisted bool `yaml:"exclude_whitelisted"` +} + +type KindPurgeRule struct { + Kind int `yaml:"kind"` + Enabled bool `yaml:"enabled"` +} diff --git a/config/types/serverConfig.go b/config/types/serverConfig.go index ba2d618..09e89c8 100644 --- a/config/types/serverConfig.go +++ b/config/types/serverConfig.go @@ -20,4 +20,5 @@ type ServerConfig struct { Blacklist BlacklistConfig `yaml:"blacklist"` ResourceLimits ResourceLimits `yaml:"resource_limits"` Auth AuthConfig `yaml:"auth"` + EventPurge EventPurgeConfig `yaml:"event_purge"` } diff --git a/main.go b/main.go index 39e1a3a..1c33659 100644 --- a/main.go +++ b/main.go @@ -39,6 +39,9 @@ func main() { log.Fatal("Error loading config: ", err) } + // Start event purging in the background + go mongo.ScheduleEventPurging(cfg) + config.SetResourceLimit(&cfg.ResourceLimits) // Apply limits once before starting the server client, err := mongo.InitDB(cfg) @@ -70,9 +73,9 @@ func main() { case <-signalChan: log.Println("Shutting down server...") - server.Close() // Stop the server + server.Close() // Stop the server mongo.DisconnectDB(client) // Disconnect from MongoDB - wg.Wait() // Wait for all goroutines to finish + wg.Wait() // Wait for all goroutines to finish return } } diff --git a/server/db/mongo/purgeEvents.go b/server/db/mongo/purgeEvents.go new file mode 100644 index 0000000..3915ad5 --- /dev/null +++ b/server/db/mongo/purgeEvents.go @@ -0,0 +1,86 @@ +package mongo + +import ( + "context" + types "grain/config/types" + "grain/server/utils" + "log" + "time" + + "go.mongodb.org/mongo-driver/bson" +) + +func PurgeOldEvents(cfg *types.EventPurgeConfig, whitelist []string) { + if !cfg.Enabled { + return + } + + client := GetClient() + collection := client.Database("grain").Collection("events") + + // Calculate the cutoff time + cutoff := time.Now().AddDate(0, 0, -cfg.KeepDurationDays).Unix() + + filter := bson.M{ + "created_at": bson.M{"$lt": cutoff}, // Filter older events + } + + if cfg.ExcludeWhitelisted && len(whitelist) > 0 { + filter["pubkey"] = bson.M{"$nin": whitelist} // Exclude whitelisted pubkeys + } + + // Handle purging by category + for category, purge := range cfg.PurgeByCategory { + if purge { + filter["category"] = category + _, err := collection.DeleteMany(context.TODO(), filter) + if err != nil { + log.Printf("Error purging events by category %s: %v", category, err) + } + } + } + + // Handle purging by kind + for _, kindRule := range cfg.PurgeByKind { + if kindRule.Enabled { + filter["kind"] = kindRule.Kind + _, err := collection.DeleteMany(context.TODO(), filter) + if err != nil { + log.Printf("Error purging events by kind %d: %v", kindRule.Kind, err) + } + } + } +} + +// Example of a periodic purging task +// ScheduleEventPurging runs the event purging at a configurable interval. +func ScheduleEventPurging(cfg *types.ServerConfig) { + // Use the purge interval from the configuration + purgeInterval := time.Duration(cfg.EventPurge.PurgeIntervalHours) * time.Hour + ticker := time.NewTicker(purgeInterval) + defer ticker.Stop() + + for range ticker.C { + whitelist := getWhitelistedPubKeys(cfg) + PurgeOldEvents(&cfg.EventPurge, whitelist) + } +} + +// Fetch whitelisted pubkeys from both the config and any additional domains. +func getWhitelistedPubKeys(cfg *types.ServerConfig) []string { + whitelistedPubkeys := cfg.PubkeyWhitelist.Pubkeys + + // Fetch pubkeys from domains if domain whitelist is enabled + if cfg.DomainWhitelist.Enabled { + domains := cfg.DomainWhitelist.Domains + pubkeys, err := utils.FetchPubkeysFromDomains(domains) + if err != nil { + log.Printf("Error fetching pubkeys from domains: %v", err) + return whitelistedPubkeys // Return existing whitelisted pubkeys in case of error + } + // Append fetched pubkeys from domains to the whitelisted pubkeys + whitelistedPubkeys = append(whitelistedPubkeys, pubkeys...) + } + + return whitelistedPubkeys +}