mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
DNSimple: Adding SRV, CAA, and ALIAS suppport (#243)
* dnsimple ALIAS * caa working * srv * gen
This commit is contained in:
@@ -158,7 +158,9 @@
|
||||
<i class="fa has-tooltip fa-check text-success" aria-hidden="true"></i>
|
||||
</td>
|
||||
<td><i class="fa fa-minus dim"></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><i class="fa fa-minus dim"></i></td>
|
||||
<td><i class="fa fa-minus dim"></i></td>
|
||||
<td class="danger">
|
||||
@@ -190,7 +192,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>
|
||||
@@ -258,7 +262,9 @@
|
||||
</td>
|
||||
<td><i class="fa fa-minus dim"></i></td>
|
||||
<td><i class="fa fa-minus dim"></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><i class="fa fa-minus dim"></i></td>
|
||||
<td class="success">
|
||||
<i class="fa fa-check text-success" aria-hidden="true"></i>
|
||||
@@ -284,7 +290,9 @@
|
||||
</td>
|
||||
<td><i class="fa fa-minus dim"></i></td>
|
||||
<td><i class="fa fa-minus dim"></i></td>
|
||||
<td><i class="fa fa-minus dim"></i></td>
|
||||
<td class="danger">
|
||||
<i class="fa fa-times text-danger" aria-hidden="true"></i>
|
||||
</td>
|
||||
<td><i class="fa fa-minus dim"></i></td>
|
||||
<td><i class="fa fa-minus dim"></i></td>
|
||||
<td class="danger">
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user