diff --git a/migrations/20171129005712-settings-add-fqdn-to-caas-configs.js b/migrations/20171129005712-settings-add-fqdn-to-caas-configs.js new file mode 100644 index 000000000..892c07be5 --- /dev/null +++ b/migrations/20171129005712-settings-add-fqdn-to-caas-configs.js @@ -0,0 +1,33 @@ +'use strict'; + +var async = require('async'); + +exports.up = function(db, callback) { + db.all('SELECT * FROM domains', function (error, domains) { + if (error) return callback(error); + + var caasDomains = domains.filter(function (d) { return JSON.parse(d.configJson).provider === 'caas'; }); + if (caasDomains.length === 0) return callback(); + var caasDomain = caasDomains[0].domain; + + db.all('SELECT * FROM settings', function (error, settings) { + if (error) return callback(error); + + async.eachSeries(settings, function (setting, done) { + if (setting.name !== 'dns_config' && setting.name !== 'backup_config') return done(); + + var config = JSON.parse(setting.value); + config.fqdn = caasDomain; + + db.runSql('UPDATE settings SET value=? WHERE name=?', [ JSON.stringify(config), setting.name ], function (error) { + if (error) console.error(error); + done(error); + }); + }, callback); + }); + }); +}; + +exports.down = function(db, callback) { + callback(); +}; diff --git a/src/dns/caas.js b/src/dns/caas.js index 78ef3c115..fdafed9b4 100644 --- a/src/dns/caas.js +++ b/src/dns/caas.js @@ -30,9 +30,9 @@ function add(dnsConfig, zoneName, subdomain, type, values, callback) { assert(util.isArray(values)); assert.strictEqual(typeof callback, 'function'); - var fqdn = subdomain !== '' && type === 'TXT' ? subdomain + '.' + zoneName : getFqdn(subdomain, zoneName); + var fqdn = subdomain !== '' && type === 'TXT' ? subdomain + '.' + dnsConfig.fqdn : getFqdn(subdomain, dnsConfig.fqdn); - debug('add: %s for zone %s of type %s with values %j', subdomain, zoneName, type, values); + debug('add: %s for zone %s of type %s with values %j', subdomain, dnsConfig.fqdn, type, values); var data = { type: type, @@ -61,9 +61,9 @@ function get(dnsConfig, zoneName, subdomain, type, callback) { assert.strictEqual(typeof type, 'string'); assert.strictEqual(typeof callback, 'function'); - var fqdn = subdomain !== '' && type === 'TXT' ? subdomain + '.' + zoneName : getFqdn(subdomain, zoneName); + var fqdn = subdomain !== '' && type === 'TXT' ? subdomain + '.' + dnsConfig.fqdn : getFqdn(subdomain, dnsConfig.fqdn); - debug('get: zoneName: %s subdomain: %s type: %s fqdn: %s', zoneName, subdomain, type, fqdn); + debug('get: zoneName: %s subdomain: %s type: %s fqdn: %s', dnsConfig.fqdn, subdomain, type, fqdn); superagent .get(config.apiServerOrigin() + '/api/v1/domains/' + fqdn) @@ -96,7 +96,7 @@ function del(dnsConfig, zoneName, subdomain, type, values, callback) { assert(util.isArray(values)); assert.strictEqual(typeof callback, 'function'); - debug('del: %s for zone %s of type %s with values %j', subdomain, zoneName, type, values); + debug('del: %s for zone %s of type %s with values %j', subdomain, dnsConfig.fqdn, type, values); var data = { type: type, @@ -104,7 +104,7 @@ function del(dnsConfig, zoneName, subdomain, type, values, callback) { }; superagent - .del(config.apiServerOrigin() + '/api/v1/domains/' + getFqdn(subdomain, zoneName)) + .del(config.apiServerOrigin() + '/api/v1/domains/' + getFqdn(subdomain, dnsConfig.fqdn)) .query({ token: dnsConfig.token }) .send(data) .timeout(30 * 1000) @@ -128,7 +128,8 @@ function verifyDnsConfig(dnsConfig, domain, zoneName, ip, callback) { var credentials = { provider: dnsConfig.provider, - token: dnsConfig.token + token: dnsConfig.token, + fqdn: domain }; return callback(null, credentials); diff --git a/src/routes/test/sysadmin-test.js b/src/routes/test/sysadmin-test.js index d96209887..7c703cfbe 100644 --- a/src/routes/test/sysadmin-test.js +++ b/src/routes/test/sysadmin-test.js @@ -68,7 +68,7 @@ function setup(done) { s3._mockInject(MockS3); safe.fs.mkdirSync('/tmp/box-sysadmin-test'); - settingsdb.set(settings.BACKUP_CONFIG_KEY, JSON.stringify({ provider: 'caas', token: 'BACKUP_TOKEN', key: 'key', prefix: 'boxid', format: 'tgz'}), callback); + settingsdb.set(settings.BACKUP_CONFIG_KEY, JSON.stringify({ provider: 'caas', token: 'BACKUP_TOKEN', fqdn: config.fqdn(), key: 'key', prefix: 'boxid', format: 'tgz'}), callback); } ], done); } diff --git a/src/storage/s3.js b/src/storage/s3.js index 9bf225098..792e824f8 100644 --- a/src/storage/s3.js +++ b/src/storage/s3.js @@ -59,7 +59,7 @@ function getCaasConfig(apiConfig, callback) { debug('getCaasCredentials: getting new credentials'); - var url = config.apiServerOrigin() + '/api/v1/boxes/' + config.fqdn() + '/awscredentials'; + var url = config.apiServerOrigin() + '/api/v1/boxes/' + apiConfig.fqdn + '/awscredentials'; superagent.post(url).query({ token: apiConfig.token }).timeout(30 * 1000).end(function (error, result) { if (error && !error.response) return callback(error); if (result.statusCode !== 201) return callback(new Error(result.text)); @@ -515,7 +515,7 @@ function backupDone(apiConfig, backupId, appBackupIds, callback) { debug('[%s] backupDone: %s apps %j', backupId, boxBackupFilename, appBackupFilenames); - var url = config.apiServerOrigin() + '/api/v1/boxes/' + config.fqdn() + '/backupDone'; + var url = config.apiServerOrigin() + '/api/v1/boxes/' + apiConfig.fqdn + '/backupDone'; var data = { boxVersion: config.version(), restoreKey: boxBackupFilename, @@ -524,7 +524,7 @@ function backupDone(apiConfig, backupId, appBackupIds, callback) { appBackupIds: appBackupFilenames }; - superagent.post(url).send(data).query({ token: config.token() }).timeout(30 * 1000).end(function (error, result) { + superagent.post(url).send(data).query({ token: apiConfig.token }).timeout(30 * 1000).end(function (error, result) { if (error && !error.response) return callback(new BackupsError(BackupsError.EXTERNAL_ERROR, error)); if (result.statusCode !== 200) return callback(new BackupsError(BackupsError.EXTERNAL_ERROR, result.text)); diff --git a/src/test/settings-test.js b/src/test/settings-test.js index 5967f3c80..acb6467ce 100644 --- a/src/test/settings-test.js +++ b/src/test/settings-test.js @@ -109,7 +109,7 @@ describe('Settings', function () { .post('/api/v1/boxes/' + config.fqdn() + '/awscredentials?token=TOKEN') .reply(201, { credentials: { AccessKeyId: 'accessKeyId', SecretAccessKey: 'secretAccessKey', SessionToken: 'sessionToken' } }); - settings.setBackupConfig({ provider: 'caas', token: 'TOKEN', format: 'tgz', prefix: 'boxid', bucket: 'bucket' }, function (error) { + settings.setBackupConfig({ provider: 'caas', fqdn: config.fqdn(), token: 'TOKEN', format: 'tgz', prefix: 'boxid', bucket: 'bucket' }, function (error) { expect(error).to.be(null); done(); });