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))