diff --git a/src/dns/gcdns.js b/src/dns/gcdns.js index d23568a8f..1100bf6ed 100644 --- a/src/dns/gcdns.js +++ b/src/dns/gcdns.js @@ -27,7 +27,7 @@ function getDnsCredentials(dnsConfig) { email: dnsConfig.email }; - if(dnsConfig.credentials){ + if (dnsConfig.credentials) { config.credentials = { client_email: dnsConfig.credentials.client_email, private_key: dnsConfig.credentials.private_key @@ -43,14 +43,14 @@ function getZoneByName(dnsConfig, zoneName, callback) { var gcdns = GCDNS(getDnsCredentials(dnsConfig)); - gcdns.getZones(function(err, zones, apiResponse) { - if (err && err.message == 'invalid_grant') return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, "The key was probably revoked")); - if (err && err.reason == 'No such domain') return callback(new SubdomainError(SubdomainError.NOT_FOUND, err.message)); - if (err && err.code == 403) return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, err.message)); - if (err && err.code == 404) return callback(new SubdomainError(SubdomainError.NOT_FOUND, err.message)); - if (err) { - debug('gcdns.getZones', err); - return callback(new SubdomainError(SubdomainError.EXTERNAL_ERROR, err)); + gcdns.getZones(function (error, zones, apiResponse) { + if (error && error.message === 'invalid_grant') return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, 'The key was probably revoked')); + if (error && error.reason === 'No such domain') return callback(new SubdomainError(SubdomainError.NOT_FOUND, error.message)); + if (error && error.code === 403) return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, error.message)); + if (error && error.code === 404) return callback(new SubdomainError(SubdomainError.NOT_FOUND, error.message)); + if (error) { + debug('gcdns.getZones', error); + return callback(new SubdomainError(SubdomainError.EXTERNAL_ERROR, error)); } var zone = zones.filter(function (zone) { @@ -78,8 +78,8 @@ function upsert(dnsConfig, zoneName, subdomain, type, values, callback) { var domain = (subdomain ? subdomain + '.' : '') + zoneName + '.'; - zone.getRecords({type: type, name: domain}, function(error, oldRecords, apiResponse) { - if (error && error.code == 403) return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, error.message)); + zone.getRecords({type: type, name: domain}, function (error, oldRecords, apiResponse) { + if (error && error.code === 403) return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, error.message)); if (error) { debug('upsert->zone.getRecords', error); return callback(new SubdomainError(SubdomainError.EXTERNAL_ERROR, error.message)); @@ -87,7 +87,7 @@ function upsert(dnsConfig, zoneName, subdomain, type, values, callback) { assert(oldRecords.length <= 1); var oldData = oldRecords.length > 0 ? oldRecords[0].metadata.rrdatas : []; - var newData = oldData.concat(values).sort().filter(function(el,i,a){if(i==a.indexOf(el))return 1;return 0}); + var newData = oldData.concat(values).sort().filter(function (el, i, a) { return (i === a.indexOf(el)) ? 1 : 0; }); var newRecord = zone.record(type, { name: domain, @@ -96,8 +96,8 @@ function upsert(dnsConfig, zoneName, subdomain, type, values, callback) { }); zone.createChange({delete: oldRecords, add: newRecord}, function(error, change, apiResponse) { - if (error && error.code == 403) return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, error.message)); - if (error && error.code == 412) return callback(new SubdomainError(SubdomainError.STILL_BUSY, error.message)); + if (error && error.code === 403) return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, error.message)); + if (error && error.code === 412) return callback(new SubdomainError(SubdomainError.STILL_BUSY, error.message)); if (error) { debug('upsert->zone.createChange', error); return callback(new SubdomainError(SubdomainError.EXTERNAL_ERROR, error.message)); @@ -125,11 +125,9 @@ function get(dnsConfig, zoneName, subdomain, type, callback) { }; var allValues = []; - var recursiveRetriever = function(err, records, nextQuery, apiResponse) { - if (err) { - if (error && error.code == 403) return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, error.message)); - if (error) return callback(new SubdomainError(SubdomainError.EXTERNAL_ERROR, error)); - } + var recursiveRetriever = function (error, records, nextQuery, apiResponse) { + if (error && error.code === 403) return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, error.message)); + if (error) return callback(new SubdomainError(SubdomainError.EXTERNAL_ERROR, error)); if (records.length > 0) { allValues = allValues.concat(records[0].data); } @@ -156,8 +154,8 @@ function del(dnsConfig, zoneName, subdomain, type, values, callback) { var domain = (subdomain ? subdomain + '.' : '') + zoneName + '.'; - zone.getRecords({type: type, name: domain}, function(error, oldRecords, apiResponse) { - if (error && error.code == 403) return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, error.message)); + zone.getRecords({ type: type, name: domain }, function(error, oldRecords, apiResponse) { + if (error && error.code === 403) return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, error.message)); if (error) { debug('del->zone.getRecords', error); return callback(new SubdomainError(SubdomainError.EXTERNAL_ERROR, error.message)); @@ -166,17 +164,17 @@ function del(dnsConfig, zoneName, subdomain, type, values, callback) { var oldData = oldRecords.length > 0 ? oldRecords[0].metadata.rrdatas : []; - var newData = oldData.filter(function(e){ return values.indexOf(e) == -1;}); //element is not in the list of values to delete + var newData = oldData.filter(function(e) { return values.indexOf(e) == -1; }); //element is not in the list of values to delete - var newRecord = newData.length == 0 ? null : zone.record(type, { + var newRecord = newData.length === 0 ? null : zone.record(type, { name: domain, data: newData, ttl: 1 }); - zone.createChange({delete: oldRecords, add: newRecord}, function(error, change, apiResponse) { - if (error && error.code == 403) return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, error.message)); - if (error && error.code == 412) return callback(new SubdomainError(SubdomainError.STILL_BUSY, error.message)); + zone.createChange({delete: oldRecords, add: newRecord}, function (error, change, apiResponse) { + if (error && error.code === 403) return callback(new SubdomainError(SubdomainError.ACCESS_DENIED, error.message)); + if (error && error.code === 412) return callback(new SubdomainError(SubdomainError.STILL_BUSY, error.message)); if (error) { debug('del->zone.createChange', error); return callback(new SubdomainError(SubdomainError.EXTERNAL_ERROR, error.message)); @@ -205,7 +203,7 @@ function verifyDnsConfig(dnsConfig, fqdn, zoneName, ip, callback) { getZoneByName(credentials, zoneName, function (error, zone) { if (error) return callback(error); - var definedNS = zone.metadata.nameServers.sort().map(function(r){ return r.replace(/\.$/, '')}); + var definedNS = zone.metadata.nameServers.sort().map(function(r) { return r.replace(/\.$/, ''); }); if (!_.isEqual(definedNS, resolvedNS.sort())) { debug('verifyDnsConfig: %j and %j do not match', resolvedNS, definedNS); return callback(new SubdomainError(SubdomainError.BAD_FIELD, 'Domain nameservers are not set to Google Cloud DNS')); diff --git a/webadmin/src/js/setupdns.js b/webadmin/src/js/setupdns.js index 48f8cfcb2..624cfdb08 100644 --- a/webadmin/src/js/setupdns.js +++ b/webadmin/src/js/setupdns.js @@ -40,9 +40,9 @@ app.controller('SetupDNSController', ['$scope', '$http', 'Client', function ($sc // keep in sync with certs.js $scope.dnsProvider = [ { name: 'AWS Route53', value: 'route53' }, - { name: 'Google Cloud DNS', value: 'gcdns' }, - { name: 'Digital Ocean', value: 'digitalocean' }, { name: 'Cloudflare (DNS only)', value: 'cloudflare' }, + { name: 'Digital Ocean', value: 'digitalocean' }, + { name: 'Google Cloud DNS', value: 'gcdns' }, { name: 'Wildcard', value: 'wildcard' }, { name: 'Manual (not recommended)', value: 'manual' }, { name: 'No-op (only for development)', value: 'noop' } @@ -53,7 +53,7 @@ app.controller('SetupDNSController', ['$scope', '$http', 'Client', function ($sc domain: '', accessKeyId: '', secretAccessKey: '', - gcdnsKey: {keyFileName: "", content: ""}, + gcdnsKey: { keyFileName: '', content: '' }, digitalOceanToken: '', provider: 'route53' }; diff --git a/webadmin/src/setupdns.html b/webadmin/src/setupdns.html index 63fc43fbf..7c351796e 100644 --- a/webadmin/src/setupdns.html +++ b/webadmin/src/setupdns.html @@ -89,6 +89,7 @@ +
{{ explicitZone ? explicitZone : (dnsCredentials.domain | zoneName) }} must be hosted on Google Cloud DNS. diff --git a/webadmin/src/views/certs.js b/webadmin/src/views/certs.js index 58cc4f4e9..929c7888b 100644 --- a/webadmin/src/views/certs.js +++ b/webadmin/src/views/certs.js @@ -9,9 +9,9 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio // keep in sync with setupdns.js $scope.dnsProvider = [ { name: 'AWS Route53', value: 'route53' }, - { name: 'Google Cloud DNS', value: 'gcdns' }, - { name: 'Digital Ocean', value: 'digitalocean' }, { name: 'Cloudflare (DNS only)', value: 'cloudflare' }, + { name: 'Digital Ocean', value: 'digitalocean' }, + { name: 'Google Cloud DNS', value: 'gcdns' }, { name: 'Wildcard', value: 'wildcard' }, { name: 'Manual (not recommended)', value: 'manual' }, { name: 'No-op (only for development)', value: 'noop' } @@ -44,7 +44,7 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio customDomain: '', accessKeyId: '', secretAccessKey: '', - gcdnsKey: {keyFileName: "", content: ""}, + gcdnsKey: { keyFileName: '', content: '' }, digitalOceanToken: '', cloudflareToken: '', cloudflareEmail: '', @@ -144,10 +144,10 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio }; if (!data.projectId || !data.credentials || !data.credentials.client_email || !data.credentials.private_key) { - throw "fields_missing"; + throw 'fields_missing'; } - } catch(e) { - $scope.dnsCredentials.error = "Cannot parse Google Service Account Key"; + } catch (e) { + $scope.dnsCredentials.error = 'Cannot parse Google Service Account Key: ' + e.message; $scope.dnsCredentials.busy = false; return; }