diff --git a/docs/_includes/matrix.html b/docs/_includes/matrix.html index a96235369..35d66d8bd 100644 --- a/docs/_includes/matrix.html +++ b/docs/_includes/matrix.html @@ -158,7 +158,9 @@ - + + + @@ -190,7 +192,9 @@ - + + + @@ -258,7 +262,9 @@ - + + + @@ -284,7 +290,9 @@ - + + + diff --git a/providers/dnsimple/dnsimpleProvider.go b/providers/dnsimple/dnsimpleProvider.go index 84599a1f1..efc4aefa7 100644 --- a/providers/dnsimple/dnsimpleProvider.go +++ b/providers/dnsimple/dnsimpleProvider.go @@ -19,11 +19,12 @@ var docNotes = providers.DocumentationNotes{ providers.DocDualHost: providers.Cannot("DNSimple does not allow sufficient control over the apex NS records"), providers.DocCreateDomains: providers.Cannot(), providers.DocOfficiallySupported: providers.Cannot(), + providers.CanUseTLSA: providers.Cannot(), } func init() { providers.RegisterRegistrarType("DNSIMPLE", newReg) - providers.RegisterDomainServiceProviderType("DNSIMPLE", newDsp, providers.CanUsePTR, docNotes) + providers.RegisterDomainServiceProviderType("DNSIMPLE", newDsp, providers.CanUsePTR, providers.CanUseAlias, providers.CanUseCAA, providers.CanUseSRV, docNotes) } const stateRegistered = "registered" @@ -61,9 +62,14 @@ func (c *DnsimpleApi) GetDomainCorrections(dc *models.DomainConfig) ([]*models.C if r.Name == "" { r.Name = "@" } - if r.Type == "CNAME" || r.Type == "MX" { + if r.Type == "CNAME" || r.Type == "MX" || r.Type == "ALIAS" || r.Type == "SRV" { r.Content += "." } + // dnsimple adds these odd txt records that mirror the alias records. + // they seem to manage them on deletes and things, so we'll just pretend they don't exist + if r.Type == "TXT" && strings.HasPrefix(r.Content, "ALIAS for ") { + continue + } rec := &models.RecordConfig{ NameFQDN: dnsutil.AddOrigin(r.Name, dc.Name), Type: r.Type, @@ -72,9 +78,18 @@ func (c *DnsimpleApi) GetDomainCorrections(dc *models.DomainConfig) ([]*models.C MxPreference: uint16(r.Priority), Original: r, } + if r.Type == "CAA" || r.Type == "SRV" { + rec.CombinedTarget = true + } actual = append(actual, rec) } removeOtherNS(dc) + dc.Filter(func(r *models.RecordConfig) bool { + if r.Type == "CAA" || r.Type == "SRV" { + r.MergeToTarget() + } + return true + }) differ := diff.New(dc) _, create, delete, modify := differ.IncrementalDiff(actual) @@ -246,7 +261,6 @@ func (c *DnsimpleApi) createRecordFunc(rc *models.RecordConfig, domainName strin if err != nil { return err } - record := dnsimpleapi.ZoneRecord{ Name: dnsutil.TrimDomainName(rc.NameFQDN, domainName), Type: rc.Type, @@ -254,7 +268,6 @@ func (c *DnsimpleApi) createRecordFunc(rc *models.RecordConfig, domainName strin TTL: int(rc.TTL), Priority: int(rc.MxPreference), } - _, err = client.Zones.CreateRecord(accountId, domainName, record) if err != nil { return err