From 2c063f5905cbb5ad6a977a2d3e6bde82e52d5679 Mon Sep 17 00:00:00 2001 From: Seth Vargo Date: Wed, 2 Dec 2020 16:36:22 -0500 Subject: [PATCH] Capture and display daily active user stats --- cmd/apiserver/main.go | 13 +--- cmd/server/assets/realmadmin/show.html | 99 +++++++++++++++++++------- docs/api.md | 6 ++ pkg/controller/middleware/chaff.go | 77 ++++++++++++++++++++ pkg/database/migrations.go | 11 +++ pkg/database/realm.go | 21 +++++- pkg/database/realm_stats.go | 31 ++++---- 7 files changed, 207 insertions(+), 51 deletions(-) create mode 100644 pkg/controller/middleware/chaff.go diff --git a/cmd/apiserver/main.go b/cmd/apiserver/main.go index 33a152ed3..b1ed8fb21 100644 --- a/cmd/apiserver/main.go +++ b/cmd/apiserver/main.go @@ -20,7 +20,6 @@ import ( "context" "crypto/sha1" "fmt" - "net/http" "os" "strconv" @@ -182,7 +181,7 @@ func realMain(ctx context.Context) error { sub := r.PathPrefix("/api/verify").Subrouter() sub.Use(requireAPIKey) sub.Use(processFirewall) - sub.Use(processChaff(verifyChaffTracker)) + sub.Use(middleware.ProcessChaff(db, verifyChaffTracker)) sub.Use(rateLimit) // POST /api/verify @@ -197,7 +196,7 @@ func realMain(ctx context.Context) error { sub := r.PathPrefix("/api/certificate").Subrouter() sub.Use(requireAPIKey) sub.Use(processFirewall) - sub.Use(processChaff(certChaffTracker)) + sub.Use(middleware.ProcessChaff(db, certChaffTracker)) sub.Use(rateLimit) // POST /api/certificate @@ -216,14 +215,6 @@ func realMain(ctx context.Context) error { return srv.ServeHTTPHandler(ctx, handlers.CombinedLoggingHandler(os.Stdout, r)) } -func processChaff(t *chaff.Tracker) mux.MiddlewareFunc { - detector := chaff.HeaderDetector("X-Chaff") - - return func(next http.Handler) http.Handler { - return t.HandleTrack(detector, next) - } -} - // makePadFromChaff makes a Padding structure from chaff data. // Note, the random chaff data will be longer than necessary, so we shorten it. func makePadFromChaff(s string) api.Padding { diff --git a/cmd/server/assets/realmadmin/show.html b/cmd/server/assets/realmadmin/show.html index 1e0a7080f..4f7829090 100644 --- a/cmd/server/assets/realmadmin/show.html +++ b/cmd/server/assets/realmadmin/show.html @@ -36,6 +36,23 @@

Realm stats

+
+
+ + Daily active users + ? +
+
+

Loading chart...

+
+ + Export as: + CSV + JSON + +
+
@@ -84,6 +101,7 @@

Realm stats