package checker import ( "context" "fmt" sdk "git.happydns.org/checker-sdk-go/checker" ) func Rules() []sdk.CheckRule { return []sdk.CheckRule{ &isReverseZoneRule{}, &hasPTRsRule{}, &fcrdnsRule{}, &targetResolvesRule{}, &singlePTRRule{}, &targetSyntaxRule{}, &genericHostnameRule{}, &ttlHygieneRule{}, &truncationRule{}, } } func loadData(ctx context.Context, obs sdk.ObservationGetter) (*ReverseZoneData, *sdk.CheckState) { var data ReverseZoneData if err := obs.Get(ctx, ObservationKey, &data); err != nil { return nil, &sdk.CheckState{ Status: sdk.StatusError, Code: "reverse_zone.observation_error", Message: fmt.Sprintf("failed to get reverse-zone data: %v", err), } } return &data, nil } func passState(code, message, subject string) sdk.CheckState { return sdk.CheckState{Status: sdk.StatusOK, Code: code, Message: message, Subject: subject} } func skipState(code, message string) sdk.CheckState { return sdk.CheckState{Status: sdk.StatusUnknown, Code: code, Message: message} } func critState(code, message, subject, hint string) sdk.CheckState { return withHint(sdk.CheckState{Status: sdk.StatusCrit, Code: code, Message: message, Subject: subject}, hint) } func warnState(code, message, subject, hint string) sdk.CheckState { return withHint(sdk.CheckState{Status: sdk.StatusWarn, Code: code, Message: message, Subject: subject}, hint) } func infoState(code, message, subject string) sdk.CheckState { return sdk.CheckState{Status: sdk.StatusInfo, Code: code, Message: message, Subject: subject} } func withHint(st sdk.CheckState, hint string) sdk.CheckState { if hint != "" { st.Meta = map[string]any{"hint": hint} } return st }