Initial commit
This commit is contained in:
commit
f5b57fc590
18 changed files with 1943 additions and 0 deletions
67
checker/evaluate.go
Normal file
67
checker/evaluate.go
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
// This file is part of the happyDomain (R) project.
|
||||
// Copyright (c) 2026 happyDomain
|
||||
// Authors: Pierre-Olivier Mercier, et al.
|
||||
|
||||
package checker
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
sdk "git.happydns.org/checker-sdk-go/checker"
|
||||
)
|
||||
|
||||
// Evaluate turns an AliasData into one CheckState per finding. When the run
|
||||
// produced no findings, it returns a single StatusOK state describing the
|
||||
// healthy alias.
|
||||
func Evaluate(data *AliasData) []sdk.CheckState {
|
||||
if len(data.Findings) == 0 {
|
||||
msg := fmt.Sprintf("Alias chain for %s is healthy", data.Owner)
|
||||
if data.FinalTarget != "" && data.FinalTarget != data.Owner {
|
||||
msg = fmt.Sprintf("%s → %s resolves cleanly", data.Owner, data.FinalTarget)
|
||||
}
|
||||
return []sdk.CheckState{{
|
||||
Status: sdk.StatusOK,
|
||||
Message: msg,
|
||||
Subject: data.Owner,
|
||||
Meta: map[string]any{
|
||||
"owner": data.Owner,
|
||||
"apex": data.Apex,
|
||||
"final_target": data.FinalTarget,
|
||||
"final_a": data.FinalA,
|
||||
"final_aaaa": data.FinalAAAA,
|
||||
"chain_length": len(data.Chain),
|
||||
},
|
||||
}}
|
||||
}
|
||||
|
||||
out := make([]sdk.CheckState, 0, len(data.Findings))
|
||||
for _, f := range data.Findings {
|
||||
subject := f.Subject
|
||||
if subject == "" {
|
||||
subject = data.Owner
|
||||
}
|
||||
state := sdk.CheckState{
|
||||
Status: severityToStatus(f.Severity),
|
||||
Code: f.Code,
|
||||
Message: f.Message,
|
||||
Subject: subject,
|
||||
}
|
||||
if f.Hint != "" {
|
||||
state.Meta = map[string]any{"hint": f.Hint}
|
||||
}
|
||||
out = append(out, state)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func severityToStatus(s Severity) sdk.Status {
|
||||
switch s {
|
||||
case SeverityCrit:
|
||||
return sdk.StatusCrit
|
||||
case SeverityWarn:
|
||||
return sdk.StatusWarn
|
||||
case SeverityInfo:
|
||||
return sdk.StatusInfo
|
||||
}
|
||||
return sdk.StatusOK
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue