// This file is part of the happyDomain (R) project. // Copyright (c) 2020-2026 happyDomain // Authors: Pierre-Olivier Mercier, et al. // // This program is offered under a commercial and under the AGPL license. // For commercial licensing, contact us at . // // For AGPL licensing: // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . //go:build standalone package checker import ( "errors" "net/http" "strings" sdk "git.happydns.org/checker-sdk-go/checker" ) func (p *srvProvider) RenderForm() []sdk.CheckerOptionField { return []sdk.CheckerOptionField{ { Id: "name", Type: "string", Label: "SRV record name to check", Placeholder: "_sip._tcp.example.com", Required: true, Description: "Fully-qualified SRV owner name (e.g. _service._proto.domain).", }, } } func (p *srvProvider) ParseForm(r *http.Request) (sdk.CheckerOptions, error) { name := strings.TrimSpace(r.FormValue("name")) if name == "" { return nil, errors.New("name is required") } name = strings.TrimSuffix(name, ".") // Split into subdomain + domain so collect's serviceDomain // (subdomain + "." + domain) reconstructs the full SRV owner. parts := strings.SplitN(name, ".", 2) sub := parts[0] parent := "" if len(parts) == 2 { parent = parts[1] } else { parent = name sub = "" } return sdk.CheckerOptions{ "domain": parent, "subdomain": sub, }, nil }