mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-09-20 14:56:20 +08:00
GANDI: Add support for CAA rtype (#288)
* GANDI: Add support for CAA rtype
This commit is contained in:
parent
612001c5c1
commit
a0f14e5981
|
@ -301,7 +301,9 @@
|
|||
<td class="success">
|
||||
<i class="fa fa-check text-success" aria-hidden="true"></i>
|
||||
</td>
|
||||
<td><i class="fa fa-minus dim"></i></td>
|
||||
<td class="success">
|
||||
<i class="fa fa-check text-success" aria-hidden="true"></i>
|
||||
</td>
|
||||
<td class="success">
|
||||
<i class="fa fa-check text-success" aria-hidden="true"></i>
|
||||
</td>
|
||||
|
|
|
@ -443,6 +443,22 @@ func SplitCombinedSrvValue(s string) (priority, weight, port uint16, target stri
|
|||
return uint16(priorityconv), uint16(weightconv), uint16(portconv), parts[3], nil
|
||||
}
|
||||
|
||||
// CombineCAAs will merge the tags and flags into the target field for all CAA records.
|
||||
// Useful for providers that desire them as one field.
|
||||
func (dc *DomainConfig) CombineCAAs() {
|
||||
for _, rec := range dc.Records {
|
||||
if rec.Type == "CAA" {
|
||||
if rec.CombinedTarget {
|
||||
pm := strings.Join([]string{"CombineCAAs: Already collapsed: ", rec.Name, rec.Target}, " ")
|
||||
panic(pm)
|
||||
}
|
||||
rec.Target = rec.Content()
|
||||
fmt.Printf("DEBUG: NEW TARGET: %v\n", rec.Target)
|
||||
rec.CombinedTarget = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func SplitCombinedCaaValue(s string) (tag string, flag uint8, value string, err error) {
|
||||
|
||||
splitData := strings.SplitN(s, " ", 3)
|
||||
|
|
|
@ -32,8 +32,13 @@ var docNotes = providers.DocumentationNotes{
|
|||
}
|
||||
|
||||
func init() {
|
||||
providers.RegisterDomainServiceProviderType("GANDI", newDsp, providers.CanUsePTR,
|
||||
providers.CanUseSRV, docNotes, providers.CantUseNOPURGE)
|
||||
providers.RegisterDomainServiceProviderType("GANDI", newDsp,
|
||||
providers.CanUseCAA,
|
||||
providers.CanUsePTR,
|
||||
providers.CanUseSRV,
|
||||
providers.CantUseNOPURGE,
|
||||
docNotes,
|
||||
)
|
||||
providers.RegisterRegistrarType("GANDI", newReg)
|
||||
}
|
||||
|
||||
|
@ -74,6 +79,7 @@ func (c *GandiApi) GetNameservers(domain string) ([]*models.Nameserver, error) {
|
|||
func (c *GandiApi) GetDomainCorrections(dc *models.DomainConfig) ([]*models.Correction, error) {
|
||||
dc.Punycode()
|
||||
dc.CombineSRVs()
|
||||
dc.CombineCAAs()
|
||||
dc.CombineMXs()
|
||||
domaininfo, err := c.getDomainInfo(dc.Name)
|
||||
if err != nil {
|
||||
|
|
|
@ -193,13 +193,19 @@ func convert(r *gandirecord.RecordInfo, origin string) *models.RecordConfig {
|
|||
}
|
||||
switch r.Type {
|
||||
case "A", "AAAA", "NS", "CNAME", "PTR", "TXT":
|
||||
// no-op
|
||||
case "CAA":
|
||||
var err error
|
||||
rc.CaaTag, rc.CaaFlag, rc.Target, err = models.SplitCombinedCaaValue(r.Value)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("gandi.convert bad caa value format: %#v (%s)", r.Value, err))
|
||||
}
|
||||
case "SRV":
|
||||
var err error
|
||||
rc.SrvPriority, rc.SrvWeight, rc.SrvPort, rc.Target, err = models.SplitCombinedSrvValue(r.Value)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("gandi.convert bad srv value format: %#v (%s)", r.Value, err))
|
||||
}
|
||||
// no-op
|
||||
case "MX":
|
||||
var err error
|
||||
rc.MxPreference, rc.Target, err = models.SplitCombinedMxValue(r.Value)
|
||||
|
|
Loading…
Reference in a new issue