From a387a5addaab233f6eaf06e42ef9aea99b3dbc54 Mon Sep 17 00:00:00 2001 From: Marvin Blum Date: Wed, 12 Aug 2020 21:54:50 +0200 Subject: [PATCH] Updated dependencies and filter referer statistic for my own domain. --- go.mod | 3 +-- go.sum | 8 ++------ main.go | 8 +++++--- tracking/tracking.go | 20 +++++++++++++------- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index d8bfcbe..bc978a0 100644 --- a/go.mod +++ b/go.mod @@ -7,11 +7,10 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/emvi/api-go v0.2.2 github.com/emvi/logbuch v1.1.1 - github.com/emvi/pirsch v1.2.0 + github.com/emvi/pirsch v1.3.0 github.com/go-sql-driver/mysql v1.5.0 // indirect github.com/gorilla/mux v1.7.4 github.com/gosimple/slug v1.9.0 - github.com/jmoiron/sqlx v1.2.0 github.com/kr/pretty v0.1.0 // indirect github.com/lib/pq v1.8.0 github.com/rs/cors v1.7.0 diff --git a/go.sum b/go.sum index 1bec4b4..7f4b392 100644 --- a/go.sum +++ b/go.sum @@ -7,12 +7,10 @@ github.com/emvi/api-go v0.2.2 h1:NrZNl0o0xAbgfK1dFsRt/BKLesHLVjC4OKXHKTZsIis= github.com/emvi/api-go v0.2.2/go.mod h1:g9RdDC3s5ebCknAHQQ5PjoM2vRFSyyGoOUX3QkDKU+o= github.com/emvi/logbuch v1.1.1 h1:poBGNbHy/nB95oNoqLKAaJoBrcKxTO0W9DhMijKEkkU= github.com/emvi/logbuch v1.1.1/go.mod h1:J2Wgbr3BuSc1JO+D2MBVh6q3WPVSK5GzktwWz8pvkKw= -github.com/emvi/pirsch v1.1.0 h1:uMnxWqbcKLpt1iBNP52aocCkgpfZAisvKcF0VzpVHv8= -github.com/emvi/pirsch v1.1.0/go.mod h1:+YmBbltJ3feZz9L/QQyqwywltYvQKBfzrGD51TPKl5g= -github.com/emvi/pirsch v1.1.1 h1:memw5fHl6ZY1dcB4Ic5tTtsbQkU9wTCjBlXi4G8D20o= -github.com/emvi/pirsch v1.1.1/go.mod h1:GDijqLHM331iWtmDmc7th19RxDrZadRkKoNvd9/kDX8= github.com/emvi/pirsch v1.2.0 h1:k5OJwgE8/Zdq7raQNRF4aNHxWxPq7En51gWMMEFzinA= github.com/emvi/pirsch v1.2.0/go.mod h1:GDijqLHM331iWtmDmc7th19RxDrZadRkKoNvd9/kDX8= +github.com/emvi/pirsch v1.3.0 h1:csgIvQKMMWF9EG4Dkfd4dFux6kfzOFC8PuNPWvsj7zM= +github.com/emvi/pirsch v1.3.0/go.mod h1:GDijqLHM331iWtmDmc7th19RxDrZadRkKoNvd9/kDX8= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= @@ -29,8 +27,6 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.7.0 h1:h93mCPfUSkaul3Ka/VG8uZdmW1uMHDGxzu0NWHuJmHY= -github.com/lib/pq v1.7.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/mattn/go-sqlite3 v1.9.0 h1:pDRiWfl+++eC2FEFRy6jXmQlvp4Yh3z1MJKg4UeYM/4= diff --git a/main.go b/main.go index 8db7eba..e299457 100644 --- a/main.go +++ b/main.go @@ -209,7 +209,7 @@ func configureCors(router *mux.Router) http.Handler { return c.Handler(router) } -func start(handler http.Handler) { +func start(handler http.Handler, trackingCancel context.CancelFunc) { logbuch.Info("Starting server...") var server http.Server server.Handler = handler @@ -220,6 +220,7 @@ func start(handler http.Handler) { signal.Notify(sigint, os.Interrupt) <-sigint logbuch.Info("Shutting down server...") + trackingCancel() tracker.Stop() ctx, _ := context.WithTimeout(context.Background(), shutdownTimeout) @@ -238,10 +239,11 @@ func start(handler http.Handler) { func main() { configureLog() logEnvConfig() - tracker = tracking.NewTracker() + var trackingCancel context.CancelFunc + tracker, trackingCancel = tracking.NewTracker() tplCache = tpl.NewCache() blogInstance = blog.NewBlog(tplCache) router := setupRouter() corsConfig := configureCors(router) - start(corsConfig) + start(corsConfig, trackingCancel) } diff --git a/tracking/tracking.go b/tracking/tracking.go index dc7df96..bf8cf28 100644 --- a/tracking/tracking.go +++ b/tracking/tracking.go @@ -1,6 +1,7 @@ package tracking import ( + "context" "database/sql" "fmt" "github.com/emvi/logbuch" @@ -12,6 +13,7 @@ import ( const ( connectionString = `host=%s port=%s user=%s password=%s dbname=%s sslmode=%s sslcert=%s sslkey=%s sslrootcert=%s connectTimeout=%s timezone=%s` + domain = "marvinblum.de" ) var ( @@ -19,7 +21,7 @@ var ( analyzer *pirsch.Analyzer ) -func NewTracker() *pirsch.Tracker { +func NewTracker() (*pirsch.Tracker, context.CancelFunc) { logbuch.Info("Connecting to database...") host := os.Getenv("MB_DB_HOST") port := os.Getenv("MB_DB_PORT") @@ -38,23 +40,27 @@ func NewTracker() *pirsch.Tracker { if err != nil { logbuch.Fatal("Error connecting to database", logbuch.Fields{"err": err}) - return nil + return nil, nil } if err := conn.Ping(); err != nil { logbuch.Fatal("Error pinging database", logbuch.Fields{"err": err}) - return nil + return nil, nil } store = pirsch.NewPostgresStore(conn) - tracker := pirsch.NewTracker(store, os.Getenv("MB_TRACKING_SALT"), nil) + tracker := pirsch.NewTracker(store, os.Getenv("MB_TRACKING_SALT"), &pirsch.TrackerConfig{ + // I don't care about traffic from my own website + RefererDomainBlacklist: []string{domain}, + RefererDomainBlacklistIncludesSubdomains: true, + }) analyzer = pirsch.NewAnalyzer(store) - processor := pirsch.NewProcessor(store) + processor := pirsch.NewProcessor(store, nil) processTrackingData(processor) - pirsch.RunAtMidnight(func() { + cancel := pirsch.RunAtMidnight(func() { processTrackingData(processor) }) - return tracker + return tracker, cancel } func processTrackingData(processor *pirsch.Processor) {