mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-10-10 13:58:36 +08:00
BUNNY_DNS: Add support for Redirect
record (#3472)
This commit is contained in:
parent
38fd85af5d
commit
063d8b06e8
6 changed files with 28 additions and 8 deletions
|
@ -61,9 +61,22 @@ records. You will need to generate an [API key](https://dash.bunny.net/account/s
|
||||||
|
|
||||||
If a domain does not exist in your Bunny account, DNSControl will automatically add it with the `push` command.
|
If a domain does not exist in your Bunny account, DNSControl will automatically add it with the `push` command.
|
||||||
|
|
||||||
|
## Custom record types
|
||||||
|
|
||||||
|
Any custom record types like Script, Flatten or Pull Zone are currently not supported by this provider, except
|
||||||
|
those explicitely listed below. Such records will be completely ignored by DNSControl and left as-is.
|
||||||
|
|
||||||
|
### Redirect
|
||||||
|
|
||||||
|
You can configure Bunny's Redirect type with `BUNNY_DNS_RDR`:
|
||||||
|
|
||||||
|
{% code title="dnsconfig.js" %}
|
||||||
|
```javascript
|
||||||
|
BUNNY_DNS_RDR("@", "https://foo.bar"),
|
||||||
|
```
|
||||||
|
{% endcode %}
|
||||||
|
|
||||||
## Caveats
|
## Caveats
|
||||||
|
|
||||||
- Bunny DNS does not support dual-hosting or configuring custom TTLs for NS records on the zone apex.
|
- Bunny DNS does not support dual-hosting or configuring custom TTLs for NS records on the zone apex.
|
||||||
- While custom nameservers are properly recognized by this provider, it is currently not possible to configure them.
|
- While custom nameservers are properly recognized by this provider, it is currently not possible to configure them.
|
||||||
- Any custom record types like Script, Redirect, Flatten or Pull Zone are currently not supported by this provider. Such
|
|
||||||
records will be completely ignored by DNSControl and left as-is.
|
|
||||||
|
|
|
@ -129,7 +129,7 @@ func (dc *DomainConfig) Punycode() error {
|
||||||
|
|
||||||
// Set the target:
|
// Set the target:
|
||||||
switch rec.Type { // #rtype_variations
|
switch rec.Type { // #rtype_variations
|
||||||
case "ALIAS", "MX", "NS", "CNAME", "DNAME", "PTR", "SRV", "URL", "URL301", "FRAME", "R53_ALIAS", "AKAMAICDN", "CLOUDNS_WR", "PORKBUN_URLFWD":
|
case "ALIAS", "MX", "NS", "CNAME", "DNAME", "PTR", "SRV", "URL", "URL301", "FRAME", "R53_ALIAS", "AKAMAICDN", "CLOUDNS_WR", "PORKBUN_URLFWD", "BUNNY_DNS_RDR":
|
||||||
// These rtypes are hostnames, therefore need to be converted (unlike, for example, an AAAA record)
|
// These rtypes are hostnames, therefore need to be converted (unlike, for example, an AAAA record)
|
||||||
t, err := idna.ToASCII(rec.GetTargetField())
|
t, err := idna.ToASCII(rec.GetTargetField())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -1406,7 +1406,7 @@ var URL301 = recordBuilder('URL301');
|
||||||
var FRAME = recordBuilder('FRAME');
|
var FRAME = recordBuilder('FRAME');
|
||||||
var CLOUDNS_WR = recordBuilder('CLOUDNS_WR');
|
var CLOUDNS_WR = recordBuilder('CLOUDNS_WR');
|
||||||
var PORKBUN_URLFWD = recordBuilder('PORKBUN_URLFWD');
|
var PORKBUN_URLFWD = recordBuilder('PORKBUN_URLFWD');
|
||||||
|
var BUNNY_DNS_RDR = recordBuilder('BUNNY_DNS_RDR');
|
||||||
// LOC_BUILDER_DD takes an object:
|
// LOC_BUILDER_DD takes an object:
|
||||||
// label: The DNS label for the LOC record. (default: '@')
|
// label: The DNS label for the LOC record. (default: '@')
|
||||||
// x: Decimal X coordinate.
|
// x: Decimal X coordinate.
|
||||||
|
|
|
@ -45,6 +45,8 @@ func init() {
|
||||||
}
|
}
|
||||||
providers.RegisterDomainServiceProviderType(providerName, fns, features)
|
providers.RegisterDomainServiceProviderType(providerName, fns, features)
|
||||||
providers.RegisterMaintainer(providerName, providerMaintainer)
|
providers.RegisterMaintainer(providerName, providerMaintainer)
|
||||||
|
|
||||||
|
providers.RegisterCustomRecordType("BUNNY_DNS_RDR", providerName, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
func newBunnydns(settings map[string]string, _ json.RawMessage) (providers.DNSServiceProvider, error) {
|
func newBunnydns(settings map[string]string, _ json.RawMessage) (providers.DNSServiceProvider, error) {
|
||||||
|
|
|
@ -61,6 +61,8 @@ func toRecordConfig(domain string, r *record) (*models.RecordConfig, error) {
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
switch rc.Type {
|
switch rc.Type {
|
||||||
|
case "BUNNY_DNS_RDR":
|
||||||
|
err = rc.SetTarget(r.Value)
|
||||||
case "CAA":
|
case "CAA":
|
||||||
err = rc.SetTargetCAA(r.Flags, r.Tag, recordValue)
|
err = rc.SetTargetCAA(r.Flags, r.Tag, recordValue)
|
||||||
case "MX":
|
case "MX":
|
||||||
|
@ -107,8 +109,6 @@ func recordTypeFromString(t string) recordType {
|
||||||
return recordTypeTXT
|
return recordTypeTXT
|
||||||
case "MX":
|
case "MX":
|
||||||
return recordTypeMX
|
return recordTypeMX
|
||||||
case "REDIRECT":
|
|
||||||
return recordTypeRedirect
|
|
||||||
case "FLATTEN":
|
case "FLATTEN":
|
||||||
return recordTypeFlatten
|
return recordTypeFlatten
|
||||||
case "PULL_ZONE":
|
case "PULL_ZONE":
|
||||||
|
@ -123,6 +123,8 @@ func recordTypeFromString(t string) recordType {
|
||||||
return recordTypeScript
|
return recordTypeScript
|
||||||
case "NS":
|
case "NS":
|
||||||
return recordTypeNS
|
return recordTypeNS
|
||||||
|
case "BUNNY_DNS_RDR":
|
||||||
|
return recordTypeRedirect
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("BUNNY_DNS: rtype %v unimplemented", t))
|
panic(fmt.Errorf("BUNNY_DNS: rtype %v unimplemented", t))
|
||||||
}
|
}
|
||||||
|
@ -141,7 +143,7 @@ func recordTypeToString(t recordType) string {
|
||||||
case recordTypeMX:
|
case recordTypeMX:
|
||||||
return "MX"
|
return "MX"
|
||||||
case recordTypeRedirect:
|
case recordTypeRedirect:
|
||||||
return "REDIRECT"
|
return "BUNNY_DNS_RDR"
|
||||||
case recordTypeFlatten:
|
case recordTypeFlatten:
|
||||||
return "FLATTEN"
|
return "FLATTEN"
|
||||||
case recordTypePullZone:
|
case recordTypePullZone:
|
||||||
|
|
|
@ -31,7 +31,6 @@ func (b *bunnydnsProvider) GetZoneRecords(domain string, meta map[string]string)
|
||||||
|
|
||||||
// Define a list of record types that are currently not supported by this provider.
|
// Define a list of record types that are currently not supported by this provider.
|
||||||
unsupportedTypes := []recordType{
|
unsupportedTypes := []recordType{
|
||||||
recordTypeRedirect,
|
|
||||||
recordTypeFlatten,
|
recordTypeFlatten,
|
||||||
recordTypePullZone,
|
recordTypePullZone,
|
||||||
recordTypeScript,
|
recordTypeScript,
|
||||||
|
@ -63,6 +62,10 @@ func (b *bunnydnsProvider) GetZoneRecordsCorrections(dc *models.DomainConfig, ex
|
||||||
rc.TTL = 0
|
rc.TTL = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if rc.Type == "BUNNY_DNS_RDR" {
|
||||||
|
rc.TTL = 0
|
||||||
|
}
|
||||||
|
|
||||||
if rc.Type == "ALIAS" {
|
if rc.Type == "ALIAS" {
|
||||||
rc.ChangeType("CNAME", dc.Name)
|
rc.ChangeType("CNAME", dc.Name)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue