jlelse
/
kis3
Archived
1
Fork 0

Track browser and browser version

This commit is contained in:
Jan-Lukas Else 2019-04-05 17:32:11 +02:00
parent f3f0a8637c
commit 74b4285601
5 changed files with 26 additions and 3 deletions

View File

@ -5,6 +5,7 @@ import (
"fmt"
"github.com/gobuffalo/packr/v2"
_ "github.com/mattn/go-sqlite3"
"github.com/mssola/user_agent"
"github.com/rubenv/sql-migrate"
"net/url"
"os"
@ -39,7 +40,7 @@ func migrateDatabase(database *sql.DB) (e error) {
// Tracking
func (db *Database) trackView(urlString string, ref string) {
func (db *Database) trackView(urlString string, ref string, ua string) {
if len(urlString) == 0 {
// Don't track empty urls
return
@ -49,7 +50,12 @@ func (db *Database) trackView(urlString string, ref string) {
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 ua != "" {
// Parse Useragent
uaName, uaVersion := user_agent.New(ua).Browser()
ua = uaName + " " + uaVersion
}
_, e := db.sqlDB.Exec("insert into views(url, ref, useragent) values(:url, :ref, :ua)", sql.Named("url", urlString), sql.Named("ref", ref), sql.Named("ua", ua))
if e != nil {
fmt.Println("Inserting into DB failed:", e)
}

1
go.mod
View File

@ -8,6 +8,7 @@ require (
github.com/gorilla/handlers v1.4.0
github.com/gorilla/mux v1.7.1
github.com/mattn/go-sqlite3 v1.10.0
github.com/mssola/user_agent v0.5.0
github.com/rubenv/sql-migrate v0.0.0-20190327083759-54bad0a9b051
github.com/wcharczuk/go-chart v2.0.1+incompatible
golang.org/x/image v0.0.0-20190321063152-3fc05d484e9f // indirect

2
go.sum
View File

@ -126,6 +126,8 @@ github.com/mattn/go-sqlite3 v1.10.0 h1:jbhqpg7tQe4SupckyijYiy0mJJ/pRyHvXf7JdWK86
github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/mongodb/mongo-go-driver v0.1.0/go.mod h1:NK/HWDIIZkaYsnYa0hmtP443T5ELr0KDecmIioVuuyU=
github.com/mssola/user_agent v0.5.0 h1:gRF7/x8cKt8qzAosYGsBNyirta+F8fvYDlJrgXws9AQ=
github.com/mssola/user_agent v0.5.0/go.mod h1:UFiKPVaShrJGW93n4uo8dpPdg1BSVpw2P9bneo0Mtp8=
github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=

View File

@ -69,8 +69,9 @@ 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")
ua := r.Header.Get("User-Agent")
if !(r.Header.Get("DNT") == "1" && appConfig.dnt) {
go kis3.db.trackView(url, ref) // run with goroutine for awesome speed!
go kis3.db.trackView(url, ref, ua) // run with goroutine for awesome speed!
_, _ = fmt.Fprint(w, "true")
}
}

View File

@ -0,0 +1,13 @@
-- +migrate Up
ALTER TABLE views
ADD COLUMN useragent TEXT DEFAULT '' NOT NULL;
-- +migrate Down
BEGIN TRANSACTION;
CREATE TABLE views_new AS
SELECT url, time, ref
FROM views;
DROP TABLE views;
ALTER TABLE views_new
RENAME TO views;
COMMIT;