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.
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package caldav
|
|
|
|
import (
|
|
"time"
|
|
|
|
"git.happydns.org/checker-dav/internal/dav"
|
|
sdk "git.happydns.org/checker-sdk-go/checker"
|
|
)
|
|
|
|
// Version is overridden at link time by the standalone binary via -ldflags.
|
|
var Version = "built-in"
|
|
|
|
func (p *caldavProvider) Definition() *sdk.CheckerDefinition {
|
|
return &sdk.CheckerDefinition{
|
|
ID: "caldav",
|
|
Name: "CalDAV server",
|
|
Version: Version,
|
|
Availability: sdk.CheckerAvailability{
|
|
ApplyToDomain: true,
|
|
// Service scope keeps downstream TLS alerts on a dedicated
|
|
// "CalDAV" page rather than the domain page. abstract.CalDAV
|
|
// isn't in the catalog yet, so this is a no-op until it is.
|
|
ApplyToService: true,
|
|
LimitToServices: []string{"abstract.CalDAV"},
|
|
},
|
|
ObservationKeys: []sdk.ObservationKey{ObservationKey},
|
|
Options: sdk.CheckerOptionsDocumentation{
|
|
UserOpts: dav.UserOptions(),
|
|
DomainOpts: dav.DomainOptions(),
|
|
RunOpts: dav.RunOptions(),
|
|
},
|
|
Rules: dav.Rules(dav.KindCalDAV, ObservationKey),
|
|
Aggregator: dav.WorstStatus{},
|
|
Interval: &sdk.CheckIntervalSpec{
|
|
Min: 1 * time.Minute,
|
|
Max: 1 * time.Hour,
|
|
Default: 15 * time.Minute,
|
|
},
|
|
HasHTMLReport: true,
|
|
}
|
|
}
|