cmd/hello: split css and js into separate files (#19771)

Move the inline CSS and JS into separate files to be more friendly
to Content Security Policies. ServeHTTP is updated to serve these
assets from the '/static/' path.

Updates tailscale/corp#32398

Signed-off-by: Noel O'Brien <noel@tailscale.com>
This commit is contained in:
Noel O'Brien
2026-05-15 09:37:22 -07:00
committed by GitHub
parent 0cb432ed84
commit 894ff5d8ee
4 changed files with 399 additions and 377 deletions
+12 -1
View File
@@ -6,7 +6,7 @@ package helloserver
import (
"crypto/tls"
_ "embed"
"embed"
"html/template"
"log"
"net/http"
@@ -21,6 +21,11 @@ import (
//go:embed hello.tmpl.html
var embeddedTemplate string
//go:embed static/*
var staticFiles embed.FS
var staticHandler = http.FileServerFS(staticFiles)
var tmpl = template.Must(template.New("home").Parse(embeddedTemplate))
// Server is an HTTP server for hello.ts.net.
@@ -116,6 +121,12 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "https://"+host, http.StatusFound)
return
}
if strings.HasPrefix(r.RequestURI, "/static/") {
staticHandler.ServeHTTP(w, r)
return
}
if r.RequestURI != "/" {
http.Redirect(w, r, "/", http.StatusFound)
return