all repos — homestead @ 522324c7b7491a359d7a37931bfc2da402d014b0

Code for my website

move goatcounter integration to server-side

Alan Pearce
commit

522324c7b7491a359d7a37931bfc2da402d014b0

parent

6db99a292ad6a3ba7c5fedce1a4337d3ceac78af

1 file changed, 21 insertions(+), 6 deletions(-)

changed files
M internal/website/website.gointernal/website/website.go
@@ -13,6 +13,8 @@ "go.alanpearce.eu/homestead/internal/fetcher"
"go.alanpearce.eu/homestead/internal/file" ihttp "go.alanpearce.eu/homestead/internal/http" "go.alanpearce.eu/homestead/internal/server" + "go.alanpearce.eu/homestead/internal/stats" + "go.alanpearce.eu/homestead/internal/stats/goatcounter" "go.alanpearce.eu/homestead/internal/storage" "go.alanpearce.eu/homestead/internal/storage/sqlite" "go.alanpearce.eu/x/log"
@@ -22,12 +24,13 @@ "github.com/osdevisnot/sorvor/pkg/livereload"
) type Options struct { - DataRoot string `conf:"noprint"` - Root string `conf:"default:./website"` - Redirect bool `conf:"default:true"` - Development bool `conf:"default:false,flag:dev"` - FetchURL config.URL `conf:"default:https://ci.alanpearce.eu/archive/website/"` - BaseURL config.URL + DataRoot string `conf:"noprint"` + Root string `conf:"default:./website"` + Redirect bool `conf:"default:true"` + Development bool `conf:"default:false,flag:dev"` + FetchURL config.URL `conf:"default:https://ci.alanpearce.eu/archive/website/"` + BaseURL config.URL + GoatcounterToken string Redis *events.RedisOptions LiveReload *livereload.LiveReload `conf:"-"`
@@ -35,6 +38,7 @@ }
type Website struct { config *config.Config + counter stats.Counter log *log.Logger reader storage.Reader me digit.Resource
@@ -99,6 +103,17 @@
if opts.Development { cfg.CSP.ScriptSrc = slices.Insert(cfg.CSP.ScriptSrc, 0, "'unsafe-inline'") cfg.CSP.ConnectSrc = slices.Insert(cfg.CSP.ConnectSrc, 0, "'self'") + } + if opts.GoatcounterToken == "" { + if !opts.Development { + log.Warn("in production without a goatcounter token") + } + } else { + website.counter = goatcounter.New(&goatcounter.Options{ + Logger: log.Named("counter"), + URL: &cfg.GoatCounter, + Token: opts.GoatcounterToken, + }) } if opts.BaseURL.URL != nil && opts.BaseURL.Hostname() != "" {