mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
NEW FEATURE: Moving provider TYPE from dnsconfig.js to creds.json (#1500)
Fixes https://github.com/StackExchange/dnscontrol/issues/1457 * New-style creds.json implememented backwards compatible * Update tests * Update docs * Assume new-style TYPE
This commit is contained in:
@@ -1,8 +1,5 @@
|
||||
'use strict';
|
||||
|
||||
// If you edit this file, you must run `go generate` to embed this
|
||||
// file in the source code.
|
||||
|
||||
// If you are heavily debugging this code, the "-dev" flag will
|
||||
// read this file directly instead of using the output of
|
||||
// `go generate`. You'll still need to run `go generate` before
|
||||
@@ -36,7 +33,27 @@ function getConfiguredDomains() {
|
||||
return conf.domain_names;
|
||||
}
|
||||
|
||||
function NewRegistrar(name, type, meta) {
|
||||
// NewRegistrar returns an registrar object.
|
||||
// For backwards compatibility, it accepts (name), (name, meta),
|
||||
// (name, type), (name, type, meta).
|
||||
function NewRegistrar() {
|
||||
// For backwards compatibility, this is a wrapper around the legacy
|
||||
// version of this function.
|
||||
switch (arguments.length) {
|
||||
case 1:
|
||||
return oldNewRegistrar(arguments[0], "-")
|
||||
case 2:
|
||||
// x = NewRegistrar("myThing", "THING")
|
||||
// x = NewRegistrar("myThing", { metakey: metavalue } )
|
||||
if (typeof arguments[1] === 'object') {
|
||||
return oldNewRegistrar(arguments[0], "-", arguments[1])
|
||||
}
|
||||
break;
|
||||
default: // do nothing
|
||||
}
|
||||
return oldNewRegistrar.apply(null, arguments)
|
||||
}
|
||||
function oldNewRegistrar(name, type, meta) {
|
||||
if (type) {
|
||||
type == 'MANUAL';
|
||||
}
|
||||
@@ -46,6 +63,23 @@ function NewRegistrar(name, type, meta) {
|
||||
}
|
||||
|
||||
function NewDnsProvider(name, type, meta) {
|
||||
// For backwards compatibility, this is a wrapper around the legacy
|
||||
// version of this function.
|
||||
switch (arguments.length) {
|
||||
case 1:
|
||||
return oldNewDnsProvider(arguments[0], "-")
|
||||
case 2:
|
||||
// x = NewDnsProvider("myThing", "THING")
|
||||
// x = NewDnsProvider("myThing", { metakey: metavalue } )
|
||||
if (typeof arguments[1] === 'object') {
|
||||
return oldNewDnsProvider(arguments[0], "-", arguments[1])
|
||||
}
|
||||
break;
|
||||
default: // do nothing
|
||||
}
|
||||
return oldNewDnsProvider.apply(null, arguments)
|
||||
}
|
||||
function oldNewDnsProvider(name, type, meta) {
|
||||
if (typeof meta === 'object' && 'ip_conversions' in meta) {
|
||||
meta.ip_conversions = format_tt(meta.ip_conversions);
|
||||
}
|
||||
|
||||
@@ -54,6 +54,13 @@ func TestParsedFiles(t *testing.T) {
|
||||
// Initialize any DNS providers mentioned.
|
||||
for _, dProv := range conf.DNSProviders {
|
||||
var pcfg = map[string]string{}
|
||||
|
||||
if dProv.Type == "-" {
|
||||
// Pretend any "look up provider type in creds.json" results
|
||||
// in a provider type that actually exists.
|
||||
dProv.Type = "CLOUDFLAREAPI"
|
||||
}
|
||||
|
||||
// Fake out any provider's validation tests.
|
||||
switch dProv.Type {
|
||||
case "CLOUDFLAREAPI":
|
||||
|
||||
31
pkg/js/parse_tests/041-newstyleproviders.js
Executable file
31
pkg/js/parse_tests/041-newstyleproviders.js
Executable file
@@ -0,0 +1,31 @@
|
||||
// Test old-style and new-style New*() functions.
|
||||
|
||||
var REG1 = NewRegistrar("foo1");
|
||||
var CF1 = NewDnsProvider("dns1");
|
||||
|
||||
var REG2a = NewRegistrar("foo2a", "NONE");
|
||||
var CF2a = NewDnsProvider("dns2a", "CLOUDFLAREAPI");
|
||||
|
||||
var REG2b = NewRegistrar("foo2b", {
|
||||
regmetakey: "reg2b"
|
||||
});
|
||||
var CF2b = NewDnsProvider("dns2b", {
|
||||
dnsmetakey: "dns2b"
|
||||
});
|
||||
|
||||
var REG3 = NewRegistrar("foo3", "MANUAL", {
|
||||
regmetakey: "reg3"
|
||||
});
|
||||
var CF3 = NewDnsProvider("dns3", "CLOUDFLAREAPI", {
|
||||
dnsmetakey: "dns3"
|
||||
});
|
||||
|
||||
var REG1h = NewRegistrar("foo1h", "-");
|
||||
var CF1h = NewDnsProvider("dns1h", "-");
|
||||
|
||||
var REG2bh = NewRegistrar("foo2bh", "-", {
|
||||
regmetakey: "reg2bh"
|
||||
});
|
||||
var CF2bh = NewDnsProvider("dns2bh", "-", {
|
||||
dnsmetakey: "dns2bh"
|
||||
});
|
||||
19
pkg/js/parse_tests/041-newstyleproviders.json
Normal file
19
pkg/js/parse_tests/041-newstyleproviders.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"dns_providers": [
|
||||
{ "name": "dns1", "type": "CLOUDFLAREAPI" },
|
||||
{ "name": "dns2a", "type": "CLOUDFLAREAPI" },
|
||||
{ "name": "dns2b", "type": "CLOUDFLAREAPI", "meta": { "dnsmetakey": "dns2b" } },
|
||||
{ "name": "dns3", "type": "CLOUDFLAREAPI", "meta": { "dnsmetakey": "dns3" } },
|
||||
{ "name": "dns1h", "type": "CLOUDFLAREAPI" },
|
||||
{ "name": "dns2bh", "type": "CLOUDFLAREAPI", "meta": { "dnsmetakey": "dns2bh" } }
|
||||
],
|
||||
"domains": [],
|
||||
"registrars": [
|
||||
{ "name": "foo1", "type": "-" },
|
||||
{ "name": "foo2a", "type": "NONE" },
|
||||
{ "name": "foo2b", "type": "-", "meta": { "regmetakey": "reg2b" } },
|
||||
{ "name": "foo3", "type": "MANUAL", "meta": { "regmetakey": "reg3" } },
|
||||
{ "name": "foo1h", "type": "-" },
|
||||
{ "name": "foo2bh", "type": "-", "meta": { "regmetakey": "reg2bh" } }
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user