CalDAV and CardDAV checkers sharing a single Go module. Discovery follows RFC 6764 (/.well-known + SRV/TXT), authenticated probes cover principal, home-set, collections and a minimal REPORT query on top of go-webdav. Common shape in internal/dav/; CalDAV adds a scheduling rule. Surfaces its context URL (and each secure-SRV target) as TLS endpoints via the EndpointDiscoverer interface, so the dedicated TLS checker can pick them up without re-parsing observations. HTML report foregrounds common misconfigs (well-known returning 200, missing SRV, plaintext-only SRV, missing DAV capability, skipped auth phase) as action-item callouts before the full phase breakdown.
25 lines
692 B
Go
25 lines
692 B
Go
package caldav
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"git.happydns.org/checker-dav/internal/dav"
|
|
sdk "git.happydns.org/checker-sdk-go/checker"
|
|
)
|
|
|
|
// Provider's return value also satisfies CheckerDefinitionProvider,
|
|
// CheckerHTMLReporter, and EndpointDiscoverer; the SDK server probes for
|
|
// those at runtime.
|
|
func Provider() sdk.ObservationProvider {
|
|
return &caldavProvider{}
|
|
}
|
|
|
|
type caldavProvider struct{}
|
|
|
|
func (p *caldavProvider) Key() sdk.ObservationKey { return ObservationKey }
|
|
|
|
func (p *caldavProvider) RenderForm() []sdk.CheckerOptionField { return dav.InteractiveForm() }
|
|
|
|
func (p *caldavProvider) ParseForm(r *http.Request) (sdk.CheckerOptions, error) {
|
|
return dav.ParseInteractiveForm(r)
|
|
}
|