dnscontrol/providers/inwx/dnssec.go
Eli Heady 1c04affe7c
INWX: Add AutoDNSSEC support (#3534)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-05-03 08:23:38 -04:00

55 lines
1.4 KiB
Go

package inwx
import (
"golang.org/x/net/idna"
)
const (
// https://www.inwx.com/en/help/apidoc/f/ch03.html#type.dnssecdomainstatus
// claims status values can be 'DELETE_ALL', 'MANUAL', 'UPDATE', but
// testing shows 'AUTO' is what to expect if the domain has automatic
// DNSSEC enabled.
// AutoDNSSEC is the status for DNSSEC enabled with automatic management
AutoDNSSECStatus = "AUTO"
// ManualDNSSEC is the status for DNSSEC enabled with manual management
ManualDNSSECStatus = "MANUAL"
)
// DNSSecStatus returns domain dnssec status
func (api *inwxAPI) DNSSecStatus(domain string) (string, error) {
resp, err := api.client.Dnssec.Info([]string{domain})
if err != nil {
return "", err
}
// domain has no DNSSEC configuration
if len(resp.Data) == 0 {
return "", nil
}
return resp.Data[0].DNSSecStatus, nil
}
// enableAutoDNSSEC enables automatic management of DNSSEC
func (api *inwxAPI) enableAutoDNSSEC(domain string) error {
// if the domain is IDN, it must be in Unicode - ACE encoding is not supported
// in the INWX dnssec.enablednssec endpoint
domain, err := idna.ToUnicode(domain)
if err != nil {
return err
}
err = api.client.Dnssec.Enable(domain)
return err
}
// disableAutoDNSSEC disables automatic management of DNSSEC
func (api *inwxAPI) disableAutoDNSSEC(domain string) error {
err := api.client.Dnssec.Disable(domain)
return err
}