Commit 532a539

Eric Bower  ·  2026-04-20 20:20:50 -0400 EDT
parent 1c474b9
feat(pgs): record metrics for compressed file types
3 files changed,  +19, -2
+14, -2
......@@ -13,6 +13,7 @@ import (
1313 "log/slog"
1414 "net/http"
1515 "net/url"
16+ "slices"
1617 "strings"
1718 "time"
1819
......@@ -749,6 +750,18 @@ func accessLogToVisit(dbpool db.DB, line string) (*db.AnalyticsVisits, error) {
749750 return deserializeCaddyAccessLog(dbpool, &accessLog)
750751 }
751752
753+var allowedMime = []string{
754+ "application/gzip",
755+ "application/vnd.rar",
756+ "application/x-7z-compressed",
757+ "application/x-bzip",
758+ "application/x-bzip2",
759+ "application/x-freearc",
760+ "application/x-tar",
761+ "application/zip",
762+ "text/html",
763+}
764+
752765 func metricDrainSub(ctx context.Context, dbpool db.DB, logger *slog.Logger, secret string) {
753766 drain := metrics.ReconnectReadMetrics(
754767 ctx,
......@@ -778,8 +791,7 @@ func metricDrainSub(ctx context.Context, dbpool db.DB, logger *slog.Logger, secr
778791 continue
779792 }
780793
781- if !strings.HasPrefix(visit.ContentType, "text/html") {
782- logger.Info("invalid content type", "contentType", visit.ContentType)
794+ if !slices.Contains(allowedMime, visit.ContentType) {
783795 continue
784796 }
785797
+4, -0
......@@ -84,6 +84,8 @@ func GetMimeType(fpath string) string {
8484 return "application/vnd.rar"
8585 case ".gz":
8686 return "application/gzip"
87+ case ".bz":
88+ return "application/x-bzip"
8789 case ".bz2":
8890 return "application/x-bzip2"
8991 case ".xz":
......@@ -92,6 +94,8 @@ func GetMimeType(fpath string) string {
9294 return "application/x-7z-compressed"
9395 case ".tar":
9496 return "application/x-tar"
97+ case ".arc":
98+ return "application/x-freearc"
9599 case ".txt":
96100 return "text/plain"
97101 }
+1, -0
......@@ -185,6 +185,7 @@ func AnalyticsVisitFromVisit(visit *db.AnalyticsVisits, dbpool db.DB, secret str
185185 }
186186 visit.Host = hostname
187187 visit.UserAgent = CleanUserAgent(visit.UserAgent)
188+ visit.ContentType = strings.ToLower(visit.ContentType)
188189
189190 return nil
190191 }