diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-07-17 18:45:43 +0300 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-07-19 18:32:12 +0300 |
| commit | f793203e043aaa2db38823c84500e82756348ac0 (patch) | |
| tree | 88a8a7b78069427f11acb0f2040e9f1d391fab55 /internal/server/api/helpers.go | |
| parent | aaea258a21226a893025a65222e244c6b3f4454c (diff) | |
Added session duration metrics with device analytics along with device
analytics metrics in the DB to aggregate and DeviceID abuse prevention
Diffstat (limited to 'internal/server/api/helpers.go')
| -rw-r--r-- | internal/server/api/helpers.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/internal/server/api/helpers.go b/internal/server/api/helpers.go index ea192df..6993d0a 100644 --- a/internal/server/api/helpers.go +++ b/internal/server/api/helpers.go @@ -3,6 +3,7 @@ package api import ( "context" "log/slog" + "slices" "strings" "time" @@ -190,3 +191,38 @@ func getNotifications(ctx context.Context, userId snowflake.ID) (packet.Notifica } return items, nil } + +var ( + ValidOs = []string{"linux", "darwin", "windows", "android", ""} + ValidArch = []string{"amd64", "arm64", "386", ""} + ValidTerm = []string{"xterm-256color", "tmux-256color", "xterm-ghostty", "xterm-kitty", "alacritty", "foot", "xterm", ""} + ValidColorterm = []string{"truecolor", "24bit", ""} +) + +func IsValidAnalytics(ctx context.Context, analytics *packet.DeviceAnalytics) bool { + if analytics == nil { + return false + } + + if !slices.Contains(ValidOs, analytics.OS) { + slog.WarnContext(ctx, "unrecognized analytics value", "os", analytics.OS, "analytics", analytics) + return false + } + + if !slices.Contains(ValidArch, analytics.Arch) { + slog.WarnContext(ctx, "unrecognized analytics value", "arch", analytics.Arch, "analytics", analytics) + return false + } + + if !slices.Contains(ValidTerm, analytics.Term) { + slog.WarnContext(ctx, "unrecognized analytics value", "term", analytics.Term, "analytics", analytics) + return false + } + + if !slices.Contains(ValidColorterm, analytics.Colorterm) { + slog.WarnContext(ctx, "unrecognized analytics value", "colorterm", analytics.Colorterm, "analytics", analytics) + return false + } + + return true +} |
