remove/inject backups secret fields

follow same pattern as dns code

fixes #615
This commit is contained in:
Girish Ramakrishnan
2019-02-09 18:08:10 -08:00
parent 51d1794e88
commit a88893b10a
9 changed files with 74 additions and 37 deletions
+3 -13
View File
@@ -23,7 +23,6 @@ exports = module.exports = {
getBackupConfig: getBackupConfig,
setBackupConfig: setBackupConfig,
removeBackupConfigPrivateFields: removeBackupConfigPrivateFields,
getCaasConfig: getCaasConfig,
@@ -60,7 +59,6 @@ exports = module.exports = {
var addons = require('./addons.js'),
assert = require('assert'),
asyncIf = require('./asyncif.js'),
backups = require('./backups.js'),
BackupsError = backups.BackupsError,
config = require('./config.js'),
@@ -294,13 +292,6 @@ function setDynamicDnsConfig(enabled, callback) {
});
}
// removes fields that should not returned in API responses. keep in sync with setBackupConfig
function removeBackupConfigPrivateFields(backupConfig) {
var result = _.omit(backupConfig, (v, k) => k === 'token' || k === 'key' || k.toLowerCase().includes('secret'));
return result;
}
function getBackupConfig(callback) {
assert.strictEqual(typeof callback, 'function');
@@ -316,13 +307,12 @@ function setBackupConfig(backupConfig, callback) {
assert.strictEqual(typeof backupConfig, 'object');
assert.strictEqual(typeof callback, 'function');
// keep in sync with removeBackupConfigPrivateFields
const verifyConfig = Object.keys(backupConfig).some((k) => k === 'token' || k === 'key' || k.toLowerCase().includes('secret'));
getBackupConfig(function (error, curentConfig) {
if (error) return callback(error);
asyncIf(verifyConfig, (done) => backups.testConfig(backupConfig, done), function (error) {
backups.injectPrivateFields(backupConfig, curentConfig);
backups.testConfig(backupConfig, function (error) {
if (error && error.reason === BackupsError.BAD_FIELD) return callback(new SettingsError(SettingsError.BAD_FIELD, error.message));
if (error && error.reason === BackupsError.EXTERNAL_ERROR) return callback(new SettingsError(SettingsError.EXTERNAL_ERROR, error.message));
if (error) return callback(new SettingsError(SettingsError.INTERNAL_ERROR, error));