diff --git a/configs/config.yaml b/configs/config.yaml
index 53e53dfe..dc88f6d6 100644
--- a/configs/config.yaml
+++ b/configs/config.yaml
@@ -41,6 +41,9 @@ coordinator:
httpsPort: 443
httpsKey:
httpsChain:
+ analytics:
+ inject: false
+ gtag:
worker:
network:
diff --git a/pkg/config/coordinator/config.go b/pkg/config/coordinator/config.go
index 47511f0c..c11b98b8 100644
--- a/pkg/config/coordinator/config.go
+++ b/pkg/config/coordinator/config.go
@@ -12,6 +12,7 @@ import (
type Config struct {
Coordinator struct {
+ Analytics Analytics
PublicDomain string
PingServer string
DebugHost string
@@ -24,6 +25,12 @@ type Config struct {
Webrtc webrtcConfig.Webrtc
}
+// Analytics is optional Google Analytics
+type Analytics struct {
+ Inject bool
+ Gtag string
+}
+
// allows custom config path
var configPath string
diff --git a/pkg/coordinator/coordinator.go b/pkg/coordinator/coordinator.go
index db9a4e91..7741e8f4 100644
--- a/pkg/coordinator/coordinator.go
+++ b/pkg/coordinator/coordinator.go
@@ -73,7 +73,7 @@ func makeHTTPServer(server *Server) *http.Server {
r.HandleFunc("/ws", server.WS)
r.HandleFunc("/wso", server.WSO)
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("./web"))))
- r.PathPrefix("/").HandlerFunc(server.GetWeb)
+ r.PathPrefix("/").Handler(server.GetWeb(server.cfg))
svmux := &http.ServeMux{}
svmux.Handle("/", r)
diff --git a/pkg/coordinator/handlers.go b/pkg/coordinator/handlers.go
index f535d46c..91b4b0b6 100644
--- a/pkg/coordinator/handlers.go
+++ b/pkg/coordinator/handlers.go
@@ -54,13 +54,18 @@ func NewServer(cfg coordinator.Config, library games.GameLibrary) *Server {
}
// GetWeb returns web frontend
-func (o *Server) GetWeb(w http.ResponseWriter, r *http.Request) {
- tmpl, err := template.ParseFiles(index)
- if err != nil {
- log.Fatal(err)
- }
+func (o *Server) GetWeb(conf coordinator.Config) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ tpl, err := template.ParseFiles(index)
+ if err != nil {
+ log.Fatal(err)
+ }
- tmpl.Execute(w, struct{}{})
+ // render index page with some tpl values
+ if err = tpl.Execute(w, conf.Coordinator.Analytics); err != nil {
+ log.Fatal(err)
+ }
+ })
}
// getPingServer returns the server for latency check of a zone.
diff --git a/web/index.html b/web/index.html
index 273abf4b..27c309eb 100644
--- a/web/index.html
+++ b/web/index.html
@@ -137,19 +137,15 @@
-
-
+{{if .Inject}}
+
+{{end}}