mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-01-16 20:39:08 +08:00
129 lines
3.2 KiB
Go
129 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
|
|
}
|