56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
|
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)
|
||
|
}
|