package main import ( "html/template" "net/http" _ "embed" "riedstra.dev/mitch/steam-export/steam" ) var ( //go:embed templates/index.html indexTemplate string Templ = template.Must(template.New("index").Parse(indexTemplate)) ) func index(w http.ResponseWriter, r *http.Request) { // During rendering of the template I believe it's // mutating during the sort of keys, so Lib no longer // is an RWMutex and we're just locking this as if // we're writing to it Lib.Lock() defer Lib.Unlock() status.Lock() defer status.Unlock() err := Templ.ExecuteTemplate(w, "index", struct { Lib *steam.Library Info *statusInfo Local bool HostIP string Port string Version string }{ &Lib.Library, status, isLocal(r.RemoteAddr), getHostIP(), getPort(), Version, }) if err != nil { Logger.Printf("While Rendering template: %s", err) } Logger.Printf("Client %s Index page", r.RemoteAddr) }