Initial commit
This commit is contained in:
commit
36baaf0caf
10 changed files with 961 additions and 0 deletions
85
webserver.go
Normal file
85
webserver.go
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
// External
|
||||
"git.gibonuddevalla.se/go/html_template"
|
||||
|
||||
// Standard
|
||||
"embed"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"slices"
|
||||
)
|
||||
|
||||
var (
|
||||
htmlEngine HTMLTemplate.Engine
|
||||
|
||||
//go:embed static
|
||||
staticFS embed.FS
|
||||
|
||||
//go:embed views
|
||||
viewFS embed.FS
|
||||
)
|
||||
|
||||
func registerWebserverHandlers() {
|
||||
var err error
|
||||
htmlEngine, err = HTMLTemplate.NewEngine(viewFS, staticFS, flagDev)
|
||||
if err != nil {
|
||||
logger.Error("webserver", "error", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
http.HandleFunc("/", rootHandler)
|
||||
}
|
||||
|
||||
func startWebserver() {
|
||||
listen := fmt.Sprintf("%s:%d", config.Network.Address, config.Network.Port)
|
||||
logger.Info("webserver", "listen", listen)
|
||||
http.ListenAndServe(listen, nil)
|
||||
}
|
||||
|
||||
func rootHandler(w http.ResponseWriter, r *http.Request) {
|
||||
if r.URL.Path == "/" {
|
||||
page := HTMLTemplate.SimplePage{}
|
||||
page.Layout = "main"
|
||||
page.Page = "index"
|
||||
|
||||
var err error
|
||||
data := make(map[string]any)
|
||||
|
||||
data["Identity"], err = device.GetIdentity()
|
||||
if err != nil {
|
||||
w.Write([]byte(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
var entries []DNSRecord
|
||||
entries, err = device.StaticDNSEntries()
|
||||
if err != nil {
|
||||
w.Write([]byte(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
slices.SortFunc(entries, SortDNSRecord)
|
||||
data["DNSRecords"] = entries
|
||||
|
||||
tree := RecordsTree{}
|
||||
tree = tree.BuildTree(entries, 0, 1)
|
||||
|
||||
j, _ := json.Marshal(tree)
|
||||
os.WriteFile("/tmp/tree.json", j, 0644)
|
||||
|
||||
page.Data = data
|
||||
|
||||
err = htmlEngine.Render(page, w, r)
|
||||
if err != nil {
|
||||
w.Write([]byte(err.Error()))
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
htmlEngine.StaticResource(w, r)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue