dnscontrol/pkg/rfc4183/mode.go

53 lines
1.1 KiB
Go
Raw Normal View History

package rfc4183
import (
"fmt"
"strings"
)
var newmode bool
var modeset bool
// SetCompatibilityMode sets REV() compatibility mode.
func SetCompatibilityMode(m string) error {
if modeset {
return fmt.Errorf("ERROR: REVCOMPAT() already set")
}
modeset = true
switch strings.ToLower(m) {
case "rfc2317", "2317", "2", "old":
newmode = false
case "rfc4183", "4183", "4":
newmode = true
default:
return fmt.Errorf("invalid value %q, must be rfc2317 or rfc4182", m)
}
return nil
}
// IsRFC4183Mode returns true if REV() is in RFC4183 mode.
func IsRFC4183Mode() bool {
return newmode
}
var warningNeeded bool = false
// NeedsWarning sets that a future warning regarding RFC2317
// compatibility is needed.
func NeedsWarning() {
warningNeeded = true
}
// PrintWarning prints a warning if a warning related to RFC2317 is needed.
func PrintWarning() {
if modeset {
// No warnings if REVCOMPAT() was used.
return
}
if !warningNeeded {
return
}
fmt.Printf("WARNING: REV() breaking change coming in v5.0. See https://docs.dnscontrol.org/functions/REVCOMPAT\n")
}