checker: split monolithic rule into per-concern rules

This commit is contained in:
nemunaire 2026-04-26 10:20:35 +07:00
commit e8b38fac59
18 changed files with 1159 additions and 308 deletions

View file

@ -12,16 +12,10 @@ const (
serviceTypeNSOnlyOrigin = "abstract.NSOnlyOrigin"
)
// originPayload is a minimal local copy of services/abstract.Origin keeping
// only the field this checker reads. The JSON tag matches the upstream wire
// format ("ns").
type originPayload struct {
NameServers []*dns.NS `json:"ns"`
}
// nsOnlyOriginPayload is a minimal local copy of
// nsPayload is a minimal local copy of services/abstract.Origin and
// services/abstract.NSOnlyOrigin keeping only the field this checker reads.
type nsOnlyOriginPayload struct {
// The JSON tag matches the upstream wire format ("ns").
type nsPayload struct {
NameServers []*dns.NS `json:"ns"`
}
@ -29,14 +23,8 @@ type nsOnlyOriginPayload struct {
// NSOnlyOrigin service payload.
func nsFromService(svc *serviceMessage) []*dns.NS {
switch svc.Type {
case serviceTypeOrigin:
var o originPayload
if err := json.Unmarshal(svc.Service, &o); err != nil {
return nil
}
return o.NameServers
case serviceTypeNSOnlyOrigin:
var o nsOnlyOriginPayload
case serviceTypeOrigin, serviceTypeNSOnlyOrigin:
var o nsPayload
if err := json.Unmarshal(svc.Service, &o); err != nil {
return nil
}