package web import ( "embed" "html/template" "io/fs" "log" "miniwol/config" "net/http" ) //go:embed template/* var templateFS embed.FS var pageTemplate *template.Template var loginTemplate *template.Template var deviceTemplate *template.Template //go:embed public var publicFS embed.FS var fileServer http.Handler func init() { var err error pageTemplate, err = template.ParseFS(templateFS, "template/page.html.tmpl") if err != nil { panic(err) } loginTemplate, err = template.ParseFS(templateFS, "template/login.html.tmpl") if err != nil { panic(err) } deviceTemplate, err = template.ParseFS(templateFS, "template/device.html.tmpl") if err != nil { panic(err) } // Static file handler staticContent, err := fs.Sub(publicFS, "public") if err != nil { panic(err) } fileServer = http.FileServer(http.FS(staticContent)) } func Run() error { http.HandleFunc("/auth", auth) http.HandleFunc("/deauth", deauth) http.HandleFunc("/device", device) http.HandleFunc("/wake", wake) http.HandleFunc("/", index) log.Println("Starting Webserver on", config.Config.Server) return http.ListenAndServe(config.Config.Server, nil) }