diff --git a/src/apptask.js b/src/apptask.js index 3233720a4..1190a3e69 100644 --- a/src/apptask.js +++ b/src/apptask.js @@ -435,13 +435,12 @@ function waitForDnsPropagation(app, callback) { sysinfo.getPublicIp(function (error, ip) { if (error) return callback(error); - domains.waitForDnsRecord(app.fqdn, app.domain, 'A', ip, { interval: 5000, times: 240 }, function (error) { + domains.waitForDnsRecord(app.location, app.domain, 'A', ip, { interval: 5000, times: 240 }, function (error) { if (error) return callback(error); // now wait for alternateDomains, if any - async.eachSeries(app.alternateDomains, function (domain, callback) { - var fqdn = (domain.subdomain ? (domain.subdomain + '.') : '') + domain.domain; - domains.waitForDnsRecord(fqdn, domain.domain, 'A', ip, { interval: 5000, times: 240 }, callback); + async.eachSeries(app.alternateDomains, function (domain, iteratorCallback) { + domains.waitForDnsRecord(domain.subdomain, domain.domain, 'A', ip, { interval: 5000, times: 240 }, iteratorCallback); }, callback); }); }); diff --git a/src/cert/acme2.js b/src/cert/acme2.js index 5e8c06966..5d07e9a17 100644 --- a/src/cert/acme2.js +++ b/src/cert/acme2.js @@ -459,7 +459,7 @@ Acme2.prototype.prepareDnsChallenge = function (hostname, domain, authorization, domains.upsertDnsRecords(challengeSubdomain, domain, 'TXT', [ txtValue ], function (error) { if (error) return callback(new Acme2Error(Acme2Error.EXTERNAL_ERROR, error.message)); - domains.waitForDnsRecord(`${challengeSubdomain}.${domain}`, domain, 'TXT', txtValue, { interval: 5000, times: 200 }, function (error) { + domains.waitForDnsRecord(`${challengeSubdomain}`, domain, 'TXT', txtValue, { interval: 5000, times: 200 }, function (error) { if (error) return callback(new Acme2Error(Acme2Error.EXTERNAL_ERROR, error.message)); callback(null, challenge); diff --git a/src/domains.js b/src/domains.js index f51917db8..b603dc09c 100644 --- a/src/domains.js +++ b/src/domains.js @@ -420,18 +420,20 @@ function removeDnsRecords(subdomain, domain, type, values, callback) { }); } -function waitForDnsRecord(fqdn, domain, type, value, options, callback) { - assert.strictEqual(typeof fqdn, 'string'); +function waitForDnsRecord(subdomain, domain, type, value, options, callback) { + assert.strictEqual(typeof subdomain, 'string'); assert.strictEqual(typeof domain, 'string'); assert(type === 'A' || type === 'TXT'); assert.strictEqual(typeof value, 'string'); assert(options && typeof options === 'object'); // { interval: 5000, times: 50000 } assert.strictEqual(typeof callback, 'function'); - get(domain, function (error, result) { + get(domain, function (error, domainObject) { if (error) return callback(error); - api(result.provider).waitForDns(fqdn, result ? result.zoneName : domain, type, value, options, callback); + const hostname = fqdn(subdomain, domainObject); + + api(domainObject.provider).waitForDns(hostname, domainObject.zoneName, type, value, options, callback); }); } diff --git a/src/setup.js b/src/setup.js index 3d1b2ba05..f24062132 100644 --- a/src/setup.js +++ b/src/setup.js @@ -144,7 +144,7 @@ function configureWebadmin(callback) { debug('addWebadminDnsRecord: updated records with error:', error); if (error) return configureReverseProxy(error); - domains.waitForDnsRecord(config.adminFqdn(), config.adminDomain(), 'A', ip, { interval: 30000, times: 50000 }, function (error) { + domains.waitForDnsRecord(config.adminLocation(), config.adminDomain(), 'A', ip, { interval: 30000, times: 50000 }, function (error) { if (error) return configureReverseProxy(error); gWebadminStatus.dns = true;