//go:build standalone package checker import ( "errors" "net/http" "strconv" "strings" sdk "git.happydns.org/checker-sdk-go/checker" ) // RenderForm implements server.Interactive. The option set is the same one // /evaluate documents, so we reuse it directly (AutoFill hints are ignored // by the interactive HTML form, where the human types the value in). func (p *ldapProvider) RenderForm() []sdk.CheckerOptionField { return p.Definition().Options.RunOpts } // ParseForm implements server.Interactive. Collect handles its own SRV // and A/AAAA lookups, so the form only needs to forward the user-supplied // values -- no extra host-side resolution is required here. func (p *ldapProvider) ParseForm(r *http.Request) (sdk.CheckerOptions, error) { domain := strings.TrimSpace(r.FormValue("domain")) if domain == "" { return nil, errors.New("domain is required") } opts := sdk.CheckerOptions{"domain": domain} if v := strings.TrimSpace(r.FormValue("timeout")); v != "" { f, err := strconv.ParseFloat(v, 64) if err != nil { return nil, errors.New("timeout must be a number") } opts["timeout"] = f } if v := strings.TrimSpace(r.FormValue("bind_dn")); v != "" { opts["bind_dn"] = v } if v := r.FormValue("bind_password"); v != "" { opts["bind_password"] = v } if v := strings.TrimSpace(r.FormValue("base_dn")); v != "" { opts["base_dn"] = v } return opts, nil }