dnscontrol/providers/cscglobal/convert.go

130 lines
3.2 KiB
Go

package cscglobal
// Convert the provider's native record description to models.RecordConfig.
import (
"net"
"github.com/StackExchange/dnscontrol/v4/models"
)
// nativeToRecordA takes an A record from DNS and returns a native RecordConfig struct.
func nativeToRecordA(nr nativeRecordA, origin string, defaultTTL uint32) *models.RecordConfig {
ttl := nr.TTL
if ttl == 0 {
ttl = defaultTTL
}
rc := &models.RecordConfig{
Type: "A",
TTL: ttl,
}
rc.SetLabel(nr.Key, origin)
rc.SetTargetIP(net.ParseIP(nr.Value).To4())
return rc
}
// nativeToRecordCNAME takes a CNAME record from DNS and returns a native RecordConfig struct.
func nativeToRecordCNAME(nr nativeRecordCNAME, origin string, defaultTTL uint32) *models.RecordConfig {
ttl := nr.TTL
if ttl == 0 {
ttl = defaultTTL
}
rc := &models.RecordConfig{
Type: "CNAME",
TTL: ttl,
}
rc.SetLabel(nr.Key, origin)
rc.SetTarget(nr.Value)
return rc
}
// nativeToRecordAAAA takes an AAAA record from DNS and returns a native RecordConfig struct.
func nativeToRecordAAAA(nr nativeRecordAAAA, origin string, defaultTTL uint32) *models.RecordConfig {
ttl := nr.TTL
if ttl == 0 {
ttl = defaultTTL
}
rc := &models.RecordConfig{
Type: "AAAA",
TTL: ttl,
}
rc.SetLabel(nr.Key, origin)
rc.SetTargetIP(net.ParseIP(nr.Value).To16())
return rc
}
// nativeToRecordTXT takes a TXT record from DNS and returns a native RecordConfig struct.
func nativeToRecordTXT(nr nativeRecordTXT, origin string, defaultTTL uint32) *models.RecordConfig {
ttl := nr.TTL
if ttl == 0 {
ttl = defaultTTL
}
rc := &models.RecordConfig{
Type: "TXT",
TTL: ttl,
}
rc.SetLabel(nr.Key, origin)
rc.SetTargetTXT(nr.Value)
return rc
}
// nativeToRecordMX takes a MX record from DNS and returns a native RecordConfig struct.
func nativeToRecordMX(nr nativeRecordMX, origin string, defaultTTL uint32) *models.RecordConfig {
ttl := nr.TTL
if ttl == 0 {
ttl = defaultTTL
}
rc := &models.RecordConfig{
Type: "MX",
TTL: ttl,
}
rc.SetLabel(nr.Key, origin)
rc.SetTargetMX(nr.Priority, nr.Value)
return rc
}
// nativeToRecordNS takes a NS record from DNS and returns a native RecordConfig struct.
func nativeToRecordNS(nr nativeRecordNS, origin string, defaultTTL uint32) *models.RecordConfig {
ttl := nr.TTL
if ttl == 0 {
ttl = defaultTTL
}
rc := &models.RecordConfig{
Type: "NS",
TTL: ttl,
}
rc.SetLabel(nr.Key, origin)
rc.SetTarget(nr.Value)
return rc
}
// nativeToRecordSRV takes a SRV record from DNS and returns a native RecordConfig struct.
func nativeToRecordSRV(nr nativeRecordSRV, origin string, defaultTTL uint32) *models.RecordConfig {
ttl := nr.TTL
if ttl == 0 {
ttl = defaultTTL
}
rc := &models.RecordConfig{
Type: "SRV",
TTL: ttl,
}
rc.SetLabel(nr.Key, origin)
rc.SetTargetSRV(nr.Priority, nr.Weight, nr.Port, nr.Value)
return rc
}
// nativeToRecordCAA takes a CAA record from DNS and returns a native RecordConfig struct.
func nativeToRecordCAA(nr nativeRecordCAA, origin string, defaultTTL uint32) *models.RecordConfig {
ttl := nr.TTL
if ttl == 0 {
ttl = defaultTTL
}
rc := &models.RecordConfig{
Type: "CAA",
TTL: ttl,
}
rc.SetLabel(nr.Key, origin)
rc.SetTargetCAA(nr.Flag, nr.Tag, nr.Value)
return rc
}