package web import ( "fmt" "html" "net/http" "github.com/owen/vibedns/internal/app" "github.com/owen/vibedns/internal/blockpage" ) func (s *Server) handleSettingsBlockPage(w http.ResponseWriter, r *http.Request) error { boundHTTP, boundHTTPS := s.app.BlockPage.ListenAddrs() s.settingsPage(w, r, "settings_blockpage", "blockpage", "Block Page Settings", map[string]any{ "Running": s.app.BlockPage.Running(), "BoundHTTP": boundHTTP, "BoundHTTPS": boundHTTPS, }) return nil } func (s *Server) handleSettingsBlockPageSave(w http.ResponseWriter, r *http.Request) error { if err := parseForm(r); err != nil { return err } next := s.app.Settings() next.BlockPage.Enabled = formBool(r, "enabled") next.BlockPage.HTTPListen = formString(r, "http_listen") next.BlockPage.HTTPSListen = formString(r, "https_listen") next.BlockPage.HTML = r.FormValue("html") if err := s.app.SaveSettings(r.Context(), s.actor(r), app.GroupBlockPage, next); err != nil { return err } setFlash(w, r, "success", "Block page settings saved.") return s.redirect(w, r, "/settings/blockpage") } // handleSettingsBlockPagePreview renders the HTML in the request body with // sample data, without saving it, so the editor can show a live preview. func (s *Server) handleSettingsBlockPagePreview(w http.ResponseWriter, r *http.Request) error { if err := parseForm(r); err != nil { return err } out, err := blockpage.Render(r.FormValue("html")) if err != nil { out = fmt.Sprintf("
Template error: %s
", html.EscapeString(err.Error())) } w.Header().Set("Content-Type", "text/html; charset=utf-8") _, _ = w.Write([]byte(out)) return nil }