40 lines
1 KiB
Go
40 lines
1 KiB
Go
package checker
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
sdk "git.happydns.org/checker-sdk-go/checker"
|
|
)
|
|
|
|
// Provider returns a new delegation observation provider.
|
|
func Provider() sdk.ObservationProvider {
|
|
return &delegationProvider{}
|
|
}
|
|
|
|
type delegationProvider struct{}
|
|
|
|
func (p *delegationProvider) Key() sdk.ObservationKey {
|
|
return ObservationKeyDelegation
|
|
}
|
|
|
|
// Definition implements sdk.CheckerDefinitionProvider so the SDK server can
|
|
// expose /definition without an extra argument.
|
|
func (p *delegationProvider) Definition() *sdk.CheckerDefinition {
|
|
return Definition()
|
|
}
|
|
|
|
// ValidateOptions implements sdk.OptionsValidator. Option values cross all
|
|
// rules, so validating them once on the provider avoids duplicating the
|
|
// check in every rule.
|
|
func (p *delegationProvider) ValidateOptions(opts sdk.CheckerOptions) error {
|
|
if v, ok := opts["minNameServers"]; ok {
|
|
f, ok := v.(float64)
|
|
if !ok {
|
|
return fmt.Errorf("minNameServers must be a number")
|
|
}
|
|
if f < 1 {
|
|
return fmt.Errorf("minNameServers must be >= 1")
|
|
}
|
|
}
|
|
return nil
|
|
}
|