- commit
- 532a539
- parent
- 1c474b9
- author
- Eric Bower
- date
- 2026-04-20 20:20:50 -0400 EDT
feat(pgs): record metrics for compressed file types
3 files changed,
+19,
-2
+14,
-2
1@@ -13,6 +13,7 @@ import (
2 "log/slog"
3 "net/http"
4 "net/url"
5+ "slices"
6 "strings"
7 "time"
8
9@@ -749,6 +750,18 @@ func accessLogToVisit(dbpool db.DB, line string) (*db.AnalyticsVisits, error) {
10 return deserializeCaddyAccessLog(dbpool, &accessLog)
11 }
12
13+var allowedMime = []string{
14+ "application/gzip",
15+ "application/vnd.rar",
16+ "application/x-7z-compressed",
17+ "application/x-bzip",
18+ "application/x-bzip2",
19+ "application/x-freearc",
20+ "application/x-tar",
21+ "application/zip",
22+ "text/html",
23+}
24+
25 func metricDrainSub(ctx context.Context, dbpool db.DB, logger *slog.Logger, secret string) {
26 drain := metrics.ReconnectReadMetrics(
27 ctx,
28@@ -778,8 +791,7 @@ func metricDrainSub(ctx context.Context, dbpool db.DB, logger *slog.Logger, secr
29 continue
30 }
31
32- if !strings.HasPrefix(visit.ContentType, "text/html") {
33- logger.Info("invalid content type", "contentType", visit.ContentType)
34+ if !slices.Contains(allowedMime, visit.ContentType) {
35 continue
36 }
37
1@@ -84,6 +84,8 @@ func GetMimeType(fpath string) string {
2 return "application/vnd.rar"
3 case ".gz":
4 return "application/gzip"
5+ case ".bz":
6+ return "application/x-bzip"
7 case ".bz2":
8 return "application/x-bzip2"
9 case ".xz":
10@@ -92,6 +94,8 @@ func GetMimeType(fpath string) string {
11 return "application/x-7z-compressed"
12 case ".tar":
13 return "application/x-tar"
14+ case ".arc":
15+ return "application/x-freearc"
16 case ".txt":
17 return "text/plain"
18 }
1@@ -185,6 +185,7 @@ func AnalyticsVisitFromVisit(visit *db.AnalyticsVisits, dbpool db.DB, secret str
2 }
3 visit.Host = hostname
4 visit.UserAgent = CleanUserAgent(visit.UserAgent)
5+ visit.ContentType = strings.ToLower(visit.ContentType)
6
7 return nil
8 }