diff --git a/checker/collect.go b/checker/collect.go index ad0d927..b378de2 100644 --- a/checker/collect.go +++ b/checker/collect.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "time" sdk "git.happydns.org/checker-sdk-go/checker" ) @@ -63,6 +64,7 @@ func (p *caaProvider) Collect(ctx context.Context, opts sdk.CheckerOptions) (any return &CAAData{ Domain: domain, Records: records, + RunAt: time.Now().UTC().Format(time.RFC3339), }, nil } diff --git a/checker/rule.go b/checker/rule.go index 7e91fb5..6850730 100644 --- a/checker/rule.go +++ b/checker/rule.go @@ -31,7 +31,6 @@ type issuerAgg struct { code string msg string endpoints map[string]bool - count int // number of certificates observed from this issuer } type allowList struct { @@ -153,7 +152,6 @@ func (r *caaRule) Evaluate(ctx context.Context, obs sdk.ObservationGetter, opts cur = &issuerAgg{sample: p, endpoints: map[string]bool{}} agg[k] = cur } - cur.count++ if severityRank(severity) >= severityRank(cur.severity) { cur.severity = severity cur.code = code @@ -235,23 +233,22 @@ func (r *caaRule) Evaluate(ctx context.Context, obs sdk.ObservationGetter, opts endpoints = append(endpoints, ep) } sort.Strings(endpoints) - meta := map[string]any{"endpoints": endpoints, "cert_count": a.count} + meta := map[string]any{"endpoints": endpoints} - certSuffix := fmt.Sprintf(" (%d certificate(s) checked)", a.count) switch a.severity { case SeverityCrit: out = append(out, sdk.CheckState{ - Status: sdk.StatusCrit, Message: a.msg + certSuffix, Code: a.code, + Status: sdk.StatusCrit, Message: a.msg, Code: a.code, Subject: subject, Meta: meta, }) case SeverityWarn: out = append(out, sdk.CheckState{ - Status: sdk.StatusWarn, Message: a.msg + certSuffix, Code: a.code, + Status: sdk.StatusWarn, Message: a.msg, Code: a.code, Subject: subject, Meta: meta, }) case SeverityInfo: out = append(out, sdk.CheckState{ - Status: sdk.StatusInfo, Message: a.msg + certSuffix, Code: a.code, + Status: sdk.StatusInfo, Message: a.msg, Code: a.code, Subject: subject, Meta: meta, }) default: @@ -260,7 +257,7 @@ func (r *caaRule) Evaluate(ctx context.Context, obs sdk.ObservationGetter, opts msg = "Certificate observed; no CAA records published" } out = append(out, sdk.CheckState{ - Status: sdk.StatusOK, Message: msg + certSuffix, Code: CodeOK, + Status: sdk.StatusOK, Message: msg, Code: CodeOK, Subject: subject, Meta: meta, }) } diff --git a/checker/types.go b/checker/types.go index a266ff3..b42c67b 100644 --- a/checker/types.go +++ b/checker/types.go @@ -40,6 +40,7 @@ const ( type CAAData struct { Domain string `json:"domain,omitempty"` Records []CAARecord `json:"records,omitempty"` + RunAt string `json:"run_at,omitempty"` } type CAARecord struct {