From f3f0a8637c21854f457263482e459cf61d6688c3 Mon Sep 17 00:00:00 2001 From: Jan-Lukas Else Date: Fri, 5 Apr 2019 17:08:05 +0200 Subject: [PATCH] Clean referrer and just keep it's hostname --- database.go | 13 ++++++++++--- main.go | 5 +---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/database.go b/database.go index f858c45..af6d2d0 100644 --- a/database.go +++ b/database.go @@ -6,6 +6,7 @@ import ( "github.com/gobuffalo/packr/v2" _ "github.com/mattn/go-sqlite3" "github.com/rubenv/sql-migrate" + "net/url" "os" "path/filepath" "strings" @@ -38,11 +39,17 @@ func migrateDatabase(database *sql.DB) (e error) { // Tracking -func (db *Database) trackView(url string, ref string) { - if len(url) == 0 { +func (db *Database) trackView(urlString string, ref string) { + if len(urlString) == 0 { + // Don't track empty urls return } - _, e := db.sqlDB.Exec("insert into views(url, ref) values(:url, :ref)", sql.Named("url", url), sql.Named("ref", ref)) + if ref != "" { + // Clean referrer and just keep the hostname for more privacy + parsedRef, _ := url.Parse(ref) + ref = parsedRef.Hostname() + } + _, e := db.sqlDB.Exec("insert into views(url, ref) values(:url, :ref)", sql.Named("url", urlString), sql.Named("ref", ref)) if e != nil { fmt.Println("Inserting into DB failed:", e) } diff --git a/main.go b/main.go index 11346f8..f7c948e 100644 --- a/main.go +++ b/main.go @@ -69,10 +69,7 @@ func (kis3 kis3) startListening() { func (kis3 kis3) trackView(w http.ResponseWriter, r *http.Request) { url := r.Header.Get("Referer") // URL of requesting source ref := r.URL.Query().Get("ref") - if r.Header.Get("DNT") == "1" && appConfig.dnt { - fmt.Println("Not tracking because of DNT") - } else { - fmt.Printf("Tracking %s with referrer %s\n", url, ref) + if !(r.Header.Get("DNT") == "1" && appConfig.dnt) { go kis3.db.trackView(url, ref) // run with goroutine for awesome speed! _, _ = fmt.Fprint(w, "true") }