package checker import ( "time" sdk "git.happydns.org/checker-sdk-go/checker" ) // Version is overridden at build time via -ldflags. Use SetVersion from entrypoints, not direct assignment. var Version = "built-in" // SetVersion ignores empty values so a misconfigured ldflags does not erase the default. func SetVersion(v string) { if v != "" { Version = v } } // Definition exposes the checker to the happyDomain host. // Zone-scoped single pass so findings consolidate by owner rather than one observation per service. func Definition() *sdk.CheckerDefinition { def := &sdk.CheckerDefinition{ ID: "dangling", Name: "Dangling subdomains", Version: Version, Availability: sdk.CheckerAvailability{ ApplyToZone: true, }, ObservationKeys: []sdk.ObservationKey{ObservationKeyDangling}, Options: sdk.CheckerOptionsDocumentation{ DomainOpts: []sdk.CheckerOptionDocumentation{ { Id: "domain_name", Type: "string", Label: "Domain name", AutoFill: sdk.AutoFillDomainName, Hide: true, }, { Id: "zone", Type: "string", Label: "Zone", AutoFill: sdk.AutoFillZone, Hide: true, }, }, RunOpts: []sdk.CheckerOptionDocumentation{ { Id: "skip_resolution", Type: "bool", Label: "Skip live DNS resolution", Description: "When set, the checker only reports the static structure of pointer records. Useful for offline analysis; defaults to false.", Default: false, }, }, }, Rules: []sdk.CheckRule{ &danglingRule{}, }, HasHTMLReport: true, Interval: &sdk.CheckIntervalSpec{ Min: 15 * time.Minute, Max: 7 * 24 * time.Hour, Default: 12 * time.Hour, }, } def.BuildRulesInfo() return def }