From 797685377d7c9caa6b17783f7cbd4f14ca1d939c Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Fri, 8 Nov 2019 14:50:57 -0500 Subject: [PATCH] initial steps towards fetch tracking --- schema.go | 2 ++ schema.sql | 2 ++ upgradedb.go | 7 ++++++- web.go | 9 +++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/schema.go b/schema.go index 0f28eea..a78fb24 100644 --- a/schema.go +++ b/schema.go @@ -12,6 +12,7 @@ create table doovers(dooverid integer primary key, dt text, tries integer, useri create table onts (ontology text, honkid integer); create table honkmeta (honkid integer, genus text, json text); create table hfcs (hfcsid integer primary key, userid integer, json text); +create table tracks (xid text, fetches text); create index idx_honksxid on honks(xid); create index idx_honksconvoy on honks(convoy); @@ -26,6 +27,7 @@ create index idx_ontology on onts(ontology); create index idx_onthonkid on onts(honkid); create index idx_honkmetaid on honkmeta(honkid); create index idx_hfcsuser on hfcs(userid); +create index idx_trackhonkid on tracks(xid); create table config (key text, value text); diff --git a/schema.sql b/schema.sql index 8b1f7be..0587f73 100644 --- a/schema.sql +++ b/schema.sql @@ -9,6 +9,7 @@ create table doovers(dooverid integer primary key, dt text, tries integer, useri create table onts (ontology text, honkid integer); create table honkmeta (honkid integer, genus text, json text); create table hfcs (hfcsid integer primary key, userid integer, json text); +create table tracks (xid text, fetches text); create index idx_honksxid on honks(xid); create index idx_honksconvoy on honks(convoy); @@ -23,6 +24,7 @@ create index idx_ontology on onts(ontology); create index idx_onthonkid on onts(honkid); create index idx_honkmetaid on honkmeta(honkid); create index idx_hfcsuser on hfcs(userid); +create index idx_trackhonkid on tracks(xid); create table config (key text, value text); diff --git a/upgradedb.go b/upgradedb.go index 8b1ca05..8a29f5c 100644 --- a/upgradedb.go +++ b/upgradedb.go @@ -24,7 +24,7 @@ import ( "time" ) -var myVersion = 31 +var myVersion = 32 func doordie(db *sql.DB, s string, args ...interface{}) { _, err := db.Exec(s, args...) @@ -351,6 +351,11 @@ func upgradedb() { doordie(db, "update config set value = 31 where key = 'dbversion'") fallthrough case 31: + doordie(db, "create table tracks (xid text, fetches text)") + doordie(db, "create index idx_trackhonkid on tracks(xid)") + doordie(db, "update config set value = 32 where key = 'dbversion'") + fallthrough + case 32: default: log.Fatalf("can't upgrade unknown version %d", dbversion) diff --git a/web.go b/web.go index 7b72db8..91cc14f 100644 --- a/web.go +++ b/web.go @@ -854,6 +854,14 @@ func thelistingoftheontologies(w http.ResponseWriter, r *http.Request) { } } +func trackback(xid string, r *http.Request) { + agent := r.UserAgent() + who := originate(agent) + sig := r.Header.Get("Signature") + + log.Printf("(%s) fetched %s (%s)", who, xid, sig) +} + func showonehonk(w http.ResponseWriter, r *http.Request) { name := mux.Vars(r)["name"] user, err := butwhatabout(name) @@ -870,6 +878,7 @@ func showonehonk(w http.ResponseWriter, r *http.Request) { if friendorfoe(r.Header.Get("Accept")) { j, ok := gimmejonk(xid) if ok { + trackback(xid, r) w.Header().Set("Content-Type", theonetruename) w.Write(j) } else {