package main import ( "html/template" "net/http" ) type Web struct { Messages *MessageList SiteName string SSHAddr string } var siteTemplate string = ` {{ .Name }}

{{ .Name }}

Hello! To add your own message, run:

ssh {{ .Addr }}

Latest messages

{{range .Msgs}}

{{ .Timestamp.Format "2006-01-02 15:04:05 MST" }}
{{ .Username }} ({{ .PKShort }})
{{ .Content }}

{{end}}

` func (w *Web) ListenAndServe(addr string) { tmpl := template.Must(template.New("tmpl").Parse(siteTemplate)) http.HandleFunc("/", func(rw http.ResponseWriter, r *http.Request) { tmpl.Execute(rw, map[string]interface{}{ "Msgs": w.Messages.Reverse(), "Name": w.SiteName, "Addr": w.SSHAddr, }) }) http.ListenAndServe(addr, nil) }