diff --git a/docs/references/api.md b/docs/references/api.md index 1acc157a8..6e870e5c1 100644 --- a/docs/references/api.md +++ b/docs/references/api.md @@ -1059,12 +1059,13 @@ This is currently internal API and is documented here for completeness. Response(200): ``` { - "provider": , // 'caas' + "provider": , // 'caas' or 's3' or 'filesystem' "key": , // encryption key "region": , // s3 region "bucket": , // s3 bucket name "prefix": , // s3 bucket prefix - "token": // caas specific token + "token": , // 'caas' specific token + "backupFolder": // 'filesystem' specific backup directory } ``` diff --git a/src/settings.js b/src/settings.js index dc80c3a7e..a15ccbea6 100644 --- a/src/settings.js +++ b/src/settings.js @@ -388,8 +388,13 @@ function setBackupConfig(backupConfig, callback) { assert.strictEqual(typeof backupConfig, 'object'); assert.strictEqual(typeof callback, 'function'); - if (backupConfig.provider !== 'caas') { - return callback(new SettingsError(SettingsError.BAD_FIELD, 'provider must be caas')); + if (backupConfig.provider === 'caas') { + if (config.provider() !== 'caas') return callback(new SettingsError(SettingsError.BAD_FIELD, 'provider must be caas')); + } else if (backupConfig.provider === 'filesystem') { + if (typeof backupConfig.backupFolder !== 'string') return callback(new SettingsError(SettingsError.BAD_FIELD, 'backupFolder must be string')); + } else if (backupConfig.provider === 's3') { + if (typeof backupConfig.accessKeyId !== 'string') return callback(new SettingsError(SettingsError.BAD_FIELD, 'accessKeyId must be a string')); + if (typeof backupConfig.secretAccessKey !== 'string') return callback(new SettingsError(SettingsError.BAD_FIELD, 'secretAccessKey must be a string')); } settingsdb.set(exports.BACKUP_CONFIG_KEY, JSON.stringify(backupConfig), function (error) {