57 lines
985 B
Go
57 lines
985 B
Go
package main
|
|
|
|
import (
|
|
"html/template"
|
|
"net/http"
|
|
)
|
|
|
|
type AdminPageParams struct {
|
|
Hosts map[string]string
|
|
Email string
|
|
Profile string
|
|
Alerts []Alert
|
|
IpAddresses map[string][]string
|
|
|
|
}
|
|
|
|
type Alert struct {
|
|
Type string
|
|
Message string
|
|
}
|
|
|
|
type Renderer struct {
|
|
_template *template.Template
|
|
|
|
}
|
|
|
|
|
|
func (r *Renderer) RenderAdminPage(w http.ResponseWriter, params *AdminPageParams) {
|
|
r.renderPage(w, "adminpage.html", params)
|
|
}
|
|
|
|
func (r *Renderer) renderPage(w http.ResponseWriter, templateName string, params interface{}) {
|
|
err := r._template.ExecuteTemplate(w,templateName, params)
|
|
if err != nil {
|
|
text := "error in rendering template " + templateName + "\n" + err.Error()
|
|
http.Error(w, text , http.StatusInternalServerError)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
func CreateRenderer(config *Config) (*Renderer, error) {
|
|
|
|
renderer := new(Renderer)
|
|
var err error
|
|
|
|
renderer._template, err = template.ParseGlob("resources/templates/*")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return renderer, nil
|
|
}
|
|
|
|
|