From fc75f892711ac1e69256fe91ee76b25d9713a1b2 Mon Sep 17 00:00:00 2001 From: tpdn Date: Wed, 2 Mar 2022 23:21:51 +0900 Subject: [PATCH] ClouDNS: Add CLOUDNS_WR (Web Redirects) (#1421) Co-authored-by: Tom Limoncelli --- docs/_providers/cloudns.md | 14 ++++++++++++++ models/domain.go | 2 +- models/record.go | 1 + pkg/js/helpers.js | 1 + providers/cloudns/cloudnsProvider.go | 3 ++- 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/_providers/cloudns.md b/docs/_providers/cloudns.md index 9642e9d94..928aabd86 100644 --- a/docs/_providers/cloudns.md +++ b/docs/_providers/cloudns.md @@ -32,6 +32,20 @@ DS records in the same update, the NS records will be inserted first. ## Metadata This provider does not recognize any special metadata fields unique to ClouDNS. +## Web Redirects +ClouDNS supports ClouDNS-specific "WR record (web redirects)" for your domains. +Simply use the `CLOUDNS_WR` functions to make redirects like any other record: + +```js +var REG_NONE = NewRegistrar('none', 'NONE') +var CLOUDNS = NewDnsProvider("cloudns", "CLOUDNS"); + +D("example.tld", REG_NONE, DnsProvider(CLOUDNS), + CLOUDNS_WR('@', 'http://example.com/'), + CLOUDNS_WR('www', 'http://example.com/') +) +``` + ## Usage Example Javascript: diff --git a/models/domain.go b/models/domain.go index 8ef22b21d..a05937bbc 100644 --- a/models/domain.go +++ b/models/domain.go @@ -77,7 +77,7 @@ func (dc *DomainConfig) Punycode() error { // Set the target: switch rec.Type { // #rtype_variations - case "ALIAS", "MX", "NS", "CNAME", "PTR", "SRV", "URL", "URL301", "FRAME", "R53_ALIAS", "NS1_URLFWD", "AKAMAICDN": + case "ALIAS", "MX", "NS", "CNAME", "PTR", "SRV", "URL", "URL301", "FRAME", "R53_ALIAS", "NS1_URLFWD", "AKAMAICDN", "CLOUDNS_WR": // These rtypes are hostnames, therefore need to be converted (unlike, for example, an AAAA record) t, err := idna.ToASCII(rec.GetTargetField()) if err != nil { diff --git a/models/record.go b/models/record.go index bccd2c887..fdb4475c4 100644 --- a/models/record.go +++ b/models/record.go @@ -45,6 +45,7 @@ import ( // PURGE // URL // URL301 +// CLOUDNS_WR // // Notes about the fields: // diff --git a/pkg/js/helpers.js b/pkg/js/helpers.js index 2268350f4..4de8db4cf 100644 --- a/pkg/js/helpers.js +++ b/pkg/js/helpers.js @@ -873,6 +873,7 @@ var URL = recordBuilder('URL'); var URL301 = recordBuilder('URL301'); var FRAME = recordBuilder('FRAME'); var NS1_URLFWD = recordBuilder('NS1_URLFWD'); +var CLOUDNS_WR = recordBuilder('CLOUDNS_WR'); // SPF_BUILDER takes an object: // parts: The parts of the SPF record (to be joined with ' '). diff --git a/providers/cloudns/cloudnsProvider.go b/providers/cloudns/cloudnsProvider.go index d971a2243..2aded6675 100644 --- a/providers/cloudns/cloudnsProvider.go +++ b/providers/cloudns/cloudnsProvider.go @@ -59,6 +59,7 @@ func init() { RecordAuditor: AuditRecords, } providers.RegisterDomainServiceProviderType("CLOUDNS", fns, features) + providers.RegisterCustomRecordType("CLOUDNS_WR", "CLOUDNS", "WR") } // GetNameservers returns the nameservers for a domain. @@ -278,7 +279,7 @@ func toReq(rc *models.RecordConfig) (requestParams, error) { } switch rc.Type { // #rtype_variations - case "A", "AAAA", "NS", "PTR", "TXT", "SOA", "ALIAS", "CNAME": + case "A", "AAAA", "NS", "PTR", "TXT", "SOA", "ALIAS", "CNAME", "WR": // Nothing special. case "MX": req["priority"] = strconv.Itoa(int(rc.MxPreference))