Ban NO_PURGE when using BIND and others. (#180)

This commit is contained in:
Tom Limoncelli 2017-08-11 12:43:06 -07:00 committed by Craig Peterson
parent 73962470bc
commit 2534c8eaf2
4 changed files with 13 additions and 1 deletions

View file

@ -249,6 +249,11 @@ func NormalizeAndValidateConfig(config *models.DNSConfig) (errs []error) {
} else {
pTypes = append(pTypes, pType)
}
//If NO_PURGE is in use, make sure this *isn't* a provider that *doesn't* support NO_PURGE.
if domain.KeepUnknown && providers.ProviderHasCabability(pType, providers.CantUseNOPURGE) {
errs = append(errs, fmt.Errorf("%s uses NO_PURGE which is not supported by %s(%s)", domain.Name, p, pType))
}
}
// Normalize Nameservers.

View file

@ -47,7 +47,7 @@ func initBind(config map[string]string, providermeta json.RawMessage) (providers
}
func init() {
providers.RegisterDomainServiceProviderType("BIND", initBind, providers.CanUsePTR, providers.CanUseSRV, providers.CanUseCAA)
providers.RegisterDomainServiceProviderType("BIND", initBind, providers.CanUsePTR, providers.CanUseSRV, providers.CanUseCAA, providers.CantUseNOPURGE)
}
type SoaInfo struct {

View file

@ -18,6 +18,8 @@ type Namecheap struct {
func init() {
providers.RegisterRegistrarType("NAMECHEAP", newReg)
// NOTE(tlim): If in the future the DNS Service Provider is implemented,
// most likely it will require providers.CantUseNOPURGE.
}
func newReg(m map[string]string) (providers.Registrar, error) {

View file

@ -49,6 +49,11 @@ const (
CanUseSRV
// CanUseCAA indicates the provider can handle CAA records
CanUseCAA
// CantUseNOPURGE indicates NO_PURGE is broken for this provider. To make it
// work would require complex emulation of an incremental update mechanism,
// so it is easier to simply mark this feature as not working for this
// provider.
CantUseNOPURGE
)
func ProviderHasCabability(pType string, cap Capability) bool {