Track browser and browser version
This commit is contained in:
parent
f3f0a8637c
commit
74b4285601
10
database.go
10
database.go
|
@ -5,6 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/gobuffalo/packr/v2"
|
"github.com/gobuffalo/packr/v2"
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
|
"github.com/mssola/user_agent"
|
||||||
"github.com/rubenv/sql-migrate"
|
"github.com/rubenv/sql-migrate"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
|
@ -39,7 +40,7 @@ func migrateDatabase(database *sql.DB) (e error) {
|
||||||
|
|
||||||
// Tracking
|
// Tracking
|
||||||
|
|
||||||
func (db *Database) trackView(urlString string, ref string) {
|
func (db *Database) trackView(urlString string, ref string, ua string) {
|
||||||
if len(urlString) == 0 {
|
if len(urlString) == 0 {
|
||||||
// Don't track empty urls
|
// Don't track empty urls
|
||||||
return
|
return
|
||||||
|
@ -49,7 +50,12 @@ func (db *Database) trackView(urlString string, ref string) {
|
||||||
parsedRef, _ := url.Parse(ref)
|
parsedRef, _ := url.Parse(ref)
|
||||||
ref = parsedRef.Hostname()
|
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 {
|
if e != nil {
|
||||||
fmt.Println("Inserting into DB failed:", e)
|
fmt.Println("Inserting into DB failed:", e)
|
||||||
}
|
}
|
||||||
|
|
1
go.mod
1
go.mod
|
@ -8,6 +8,7 @@ require (
|
||||||
github.com/gorilla/handlers v1.4.0
|
github.com/gorilla/handlers v1.4.0
|
||||||
github.com/gorilla/mux v1.7.1
|
github.com/gorilla/mux v1.7.1
|
||||||
github.com/mattn/go-sqlite3 v1.10.0
|
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/rubenv/sql-migrate v0.0.0-20190327083759-54bad0a9b051
|
||||||
github.com/wcharczuk/go-chart v2.0.1+incompatible
|
github.com/wcharczuk/go-chart v2.0.1+incompatible
|
||||||
golang.org/x/image v0.0.0-20190321063152-3fc05d484e9f // indirect
|
golang.org/x/image v0.0.0-20190321063152-3fc05d484e9f // indirect
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -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/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/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/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/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/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=
|
github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
|
||||||
|
|
3
main.go
3
main.go
|
@ -69,8 +69,9 @@ func (kis3 kis3) startListening() {
|
||||||
func (kis3 kis3) trackView(w http.ResponseWriter, r *http.Request) {
|
func (kis3 kis3) trackView(w http.ResponseWriter, r *http.Request) {
|
||||||
url := r.Header.Get("Referer") // URL of requesting source
|
url := r.Header.Get("Referer") // URL of requesting source
|
||||||
ref := r.URL.Query().Get("ref")
|
ref := r.URL.Query().Get("ref")
|
||||||
|
ua := r.Header.Get("User-Agent")
|
||||||
if !(r.Header.Get("DNT") == "1" && appConfig.dnt) {
|
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")
|
_, _ = fmt.Fprint(w, "true")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
Reference in New Issue