diff --git a/migrations/20180907025934-domains-migrate-wildcard.js b/migrations/20180907025934-domains-migrate-wildcard.js new file mode 100644 index 000000000..16df4322f --- /dev/null +++ b/migrations/20180907025934-domains-migrate-wildcard.js @@ -0,0 +1,21 @@ +'use strict'; + +var async = require('async'); + +exports.up = function(db, callback) { + db.all('SELECT * from domains WHERE provider=?', [ 'manual' ], function (error, results) { + if (error) return callback(error); + + async.eachSeries(results, function (result, iteratorDone) { + var config = JSON.parse(result.configJson || '{}'); + if (!config.wildcard) return iteratorDone(); + delete config.wildcard; + + db.runSql('UPDATE domains SET provider=?, configJson=? WHERE domain=?', [ 'wildcard', JSON.stringify(config), result.domain ], iteratorDone); + }, callback); + }); +}; + +exports.down = function(db, callback) { + callback(); +}; diff --git a/src/dns/manual.js b/src/dns/manual.js index 748179e49..fe0d03d29 100644 --- a/src/dns/manual.js +++ b/src/dns/manual.js @@ -55,11 +55,9 @@ function verifyDnsConfig(dnsConfig, domain, zoneName, ip, callback) { assert.strictEqual(typeof ip, 'string'); assert.strictEqual(typeof callback, 'function'); - if ('wildcard' in dnsConfig && typeof dnsConfig.wildcard !== 'boolean') return callback(new DomainsError(DomainsError.BAD_FIELD, 'wildcard must be a boolean')); if ('hyphenatedSubdomains' in dnsConfig && typeof dnsConfig.hyphenatedSubdomains !== 'boolean') return callback(new DomainsError(DomainsError.BAD_FIELD, 'hyphenatedSubdomains must be a boolean')); var config = { - wildcard: !!dnsConfig.wildcard, hyphenatedSubdomains: !!dnsConfig.hyphenatedSubdomains }; diff --git a/src/domains.js b/src/domains.js index 63f46a459..12f40a9f8 100644 --- a/src/domains.js +++ b/src/domains.js @@ -73,7 +73,7 @@ DomainsError.STILL_BUSY = 'Still busy'; DomainsError.IN_USE = 'In Use'; DomainsError.INTERNAL_ERROR = 'Internal error'; DomainsError.ACCESS_DENIED = 'Access denied'; -DomainsError.INVALID_PROVIDER = 'provider must be route53, gcdns, digitalocean, gandi, cloudflare, namecom, noop, manual or caas'; +DomainsError.INVALID_PROVIDER = 'provider must be route53, gcdns, digitalocean, gandi, cloudflare, namecom, noop, wildcard, manual or caas'; // choose which subdomain backend we use for test purpose we use route53 function api(provider) { @@ -90,6 +90,7 @@ function api(provider) { case 'namecom': return require('./dns/namecom.js'); case 'noop': return require('./dns/noop.js'); case 'manual': return require('./dns/manual.js'); + case 'wildcard': return require('./dns/manual.js'); default: return null; } }