diff --git a/src/dns/caas.js b/src/dns/caas.js index ebd2dcd19..7c664e1fe 100644 --- a/src/dns/caas.js +++ b/src/dns/caas.js @@ -126,6 +126,8 @@ function verifyDnsConfig(dnsConfig, domain, zoneName, ip, callback) { assert.strictEqual(typeof ip, 'string'); assert.strictEqual(typeof callback, 'function'); + if (!dnsConfig.token || typeof dnsConfig.token !== 'string') return callback(new DomainsError(DomainsError.BAD_FIELD, 'token must be a non-empty string')); + var credentials = { token: dnsConfig.token, fqdn: domain diff --git a/src/dns/digitalocean.js b/src/dns/digitalocean.js index a8c1af15f..5386476e9 100644 --- a/src/dns/digitalocean.js +++ b/src/dns/digitalocean.js @@ -204,6 +204,8 @@ function verifyDnsConfig(dnsConfig, fqdn, zoneName, ip, callback) { assert.strictEqual(typeof ip, 'string'); assert.strictEqual(typeof callback, 'function'); + if (!dnsConfig.token || typeof dnsConfig.token !== 'string') return callback(new DomainsError(DomainsError.BAD_FIELD, 'token must be a non-empty string')); + var credentials = { token: dnsConfig.token }; diff --git a/src/dns/gandi.js b/src/dns/gandi.js index 0b54f4d9c..a431d4835 100644 --- a/src/dns/gandi.js +++ b/src/dns/gandi.js @@ -112,6 +112,8 @@ function verifyDnsConfig(dnsConfig, fqdn, zoneName, ip, callback) { assert.strictEqual(typeof ip, 'string'); assert.strictEqual(typeof callback, 'function'); + if (!dnsConfig.token || typeof dnsConfig.token !== 'string') return callback(new DomainsError(DomainsError.BAD_FIELD, 'token must be a non-empty string')); + var credentials = { token: dnsConfig.token }; diff --git a/src/dns/gcdns.js b/src/dns/gcdns.js index 45668a2cf..d9488a0c9 100644 --- a/src/dns/gcdns.js +++ b/src/dns/gcdns.js @@ -19,19 +19,13 @@ var assert = require('assert'), function getDnsCredentials(dnsConfig) { assert.strictEqual(typeof dnsConfig, 'object'); - var config = { + return { projectId: dnsConfig.projectId, - keyFilename: dnsConfig.keyFilename, - email: dnsConfig.email - }; - - if (dnsConfig.credentials) { - config.credentials = { + credentials: { client_email: dnsConfig.credentials.client_email, private_key: dnsConfig.credentials.private_key - }; - } - return config; + } + }; } function getZoneByName(dnsConfig, zoneName, callback) { @@ -169,6 +163,11 @@ function verifyDnsConfig(dnsConfig, fqdn, zoneName, ip, callback) { assert.strictEqual(typeof ip, 'string'); assert.strictEqual(typeof callback, 'function'); + if (typeof dnsConfig.projectId !== 'string') return callback(new DomainsError(DomainsError.BAD_FIELD, 'projectId must be a string')); + if (!dnsConfig.credentials || typeof dnsConfig.credentials !== 'object') return callback(new DomainsError(DomainsError.BAD_FIELD, 'credentials must be an object')); + if (typeof dnsConfig.credentials.client_email !== 'string') return callback(new DomainsError(DomainsError.BAD_FIELD, 'credentials.client_email must be a string')); + if (typeof dnsConfig.credentials.private_key !== 'string') return callback(new DomainsError(DomainsError.BAD_FIELD, 'credentials.private_key must be a string')); + var credentials = getDnsCredentials(dnsConfig); if (process.env.BOX_ENV === 'test') return callback(null, credentials); // this shouldn't be here diff --git a/src/dns/godaddy.js b/src/dns/godaddy.js index 1f3b1d936..8971a57c8 100644 --- a/src/dns/godaddy.js +++ b/src/dns/godaddy.js @@ -146,6 +146,9 @@ function verifyDnsConfig(dnsConfig, fqdn, zoneName, ip, callback) { assert.strictEqual(typeof ip, 'string'); assert.strictEqual(typeof callback, 'function'); + if (!dnsConfig.apiKey || typeof dnsConfig.apiKey !== 'string') return callback(new DomainsError(DomainsError.BAD_FIELD, 'apiKey must be a non-empty string')); + if (!dnsConfig.apiSecret || typeof dnsConfig.apiSecret !== 'string') return callback(new DomainsError(DomainsError.BAD_FIELD, 'apiSecret must be a non-empty string')); + var credentials = { apiKey: dnsConfig.apiKey, apiSecret: dnsConfig.apiSecret diff --git a/src/dns/route53.js b/src/dns/route53.js index 783099f6c..88c89b066 100644 --- a/src/dns/route53.js +++ b/src/dns/route53.js @@ -233,6 +233,9 @@ function verifyDnsConfig(dnsConfig, fqdn, zoneName, ip, callback) { assert.strictEqual(typeof ip, 'string'); assert.strictEqual(typeof callback, 'function'); + if (!dnsConfig.accessKeyId || typeof dnsConfig.accessKeyId !== 'string') return callback(new DomainsError(DomainsError.BAD_FIELD, 'accessKeyId must be a non-empty string')); + if (!dnsConfig.secretAccessKey || typeof dnsConfig.secretAccessKey !== 'string') return callback(new DomainsError(DomainsError.BAD_FIELD, 'secretAccessKey must be a non-empty string')); + var credentials = { accessKeyId: dnsConfig.accessKeyId, secretAccessKey: dnsConfig.secretAccessKey, diff --git a/src/test/dns-test.js b/src/test/dns-test.js index 8fcaa8812..5ea2252c5 100644 --- a/src/test/dns-test.js +++ b/src/test/dns-test.js @@ -791,7 +791,10 @@ describe('dns provider', function () { DOMAIN_0.provider = 'gcdns'; DOMAIN_0.config = { projectId: 'my-dns-proj', - keyFilename: __dirname + '/gcdns.json' + credentials: { + 'client_email': '123456789349-compute@developer.gserviceaccount.com', + 'private_key': 'privatehushhush' + } }; function mockery (queue) { diff --git a/src/test/gcdns.json b/src/test/gcdns.json deleted file mode 100644 index 022779e1f..000000000 --- a/src/test/gcdns.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "service_account", - "project_id": "second-metrics-123822", - "private_key_id": "12345678912345678659bacc6a9ba2bd495304e8", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAA123456789lAgEAAoIBAQDbogLCpOPRIgFD\nQGMB1A3RO234567898+gQIEzr3wM+kgDuh5lsm5C5YBGHppC5dD2GdWDGFxBhSGP\nYWW4F8593TDsSoeg3tsffIHQ4gTA3q/V4q5M4fEi+XWL123450KUjLYVs6DgZk28\nF5TbHFHxQjRvbQTj1245lQXsqR/WEBIShA0HwrF6ayz2n123456FuR7kCQ6Srxv6\n4d3i2S3KrkabcEzCHoo3NKeXj3f/cbWapoJaaaaaaaNfK3dEyuicoJaoFYspK194\n9qStl9opEwWzeiW95Ps5P4WFdQq5bSWw4LatEcdxnre7IR11ZVjktZwg6bU19Aes\ntfvSOiMhAgMBAAECggEAUm5y5MToMDS4DpqazjPdX7pFdSDnZgzxfy7WjyR8xY4l\n+ygegoK+eWMTir2vng4NKGC3zvUUow6pctvWRorA2GJtGzI5xzn9OcsMGe7KY+zw\nR7FFQ9vFGiBQasOdNfh8/630JR7+8VnUMRUUrEvrwUXc0jkzjYYaZuCtkY5EQZ2i\nfGm4I25uNckd2BNCvyc+bMT/zXD33vaMUe9B/Dy8lnKHstKds6C9lweocu/7XpMd\nRhzOeIxLYoPpdNveVNsfztj5y3bKaopxaEQoGIdXrNrBANiHumbEjF6VcOmQ6xnp\n5L+5ht1c4hLeydn/O7/xQeuik72+aD9PQE3Xz1aOlQKBgQDuGf/PURwVC/h2Jiz6\nSdZNAeCpeE/7S4iumksjXdp1gT+6rLv4UumpDX7DXNbRELwFBJMOZu9tM6DrHnMZ\nt+5U9qkS4r5tKoOBHv3YvabH5hkj5oeSFQfi2CDHS9hURuQUwvTYfZluJXDseswX\nAHF3NJzsnGxYqPQ+t3SMLvCi7wKBgQDsJJoMzkfsxExlhGH3zwmhcp5t7DBAYCKC\nz/IpZhY48iFdEAS1NA35F8EofN5d3TWPzVW2oT4f4Qz7VtKp9OHwtFpHnsSpBLGX\nB66gh5wO+yscvnRTFIGPNBg9fHNn70OQJaixelhDp7/BBfpcusF6ByND4F29vRiv\ng9n99lZa7wKBgQCsjpseHKJFfo9q0O/31FtDJAE10MPmUy+Tmq6pyvLwBeOx3k28\nAhrlMaqU20uz6HTbDh2lamRKuAf/Xen80Zgga0LNNRbc9tqnUVaXJZshdFjz87Z8\n4FD+zbOzu/vj2BykD0ZzP1NayDe2qqgOY3vX8IFp2VOMTaX1be9BSSOMcQKBgQCw\nObBtFhQ+8U9CA0VJNcyuG2d4COcJY7Tdgmnp0zGKVcfoN2gMAkjbN4sCuA0KZ2bt\nZgMtQ6+lAsI5X1XfV8y1YSJuiGGi8MnHOAht7EXeODq4PLl6trbpM6tTV2iYi8oT\n7Mazi+YKt0k2t0tboFN6yZDburi6PEAL2433JLrVKQKBgQDZOwr1XOEuOos1LeQC\nMqO6c4bHo615jtX0NcWLhpN/Z8oHEgIbz0/O0KpcuLrxaCquxpDX9n0pALzg3AoX\nXnvuuq4r9pjoD5LN2qD4+SCIwUhB8ubGnlc97vWtkWnK7Wn49QMnqo2OfeCctk6S\nF36saiVnMV5alSVlU+ThqI8aLw==\n-----END PRIVATE KEY-----\n", - "client_email": "123456789349-compute@developer.gserviceaccount.com", - "client_id": "123456789012345506547", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://accounts.google.com/o/oauth2/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/735900230349-compute%40developer.gserviceaccount.com" -}