diff --git a/src/backups.js b/src/backups.js index c0cb337ce..1e4a3cc27 100644 --- a/src/backups.js +++ b/src/backups.js @@ -52,7 +52,6 @@ var addons = require('./addons.js'), safe = require('safetydance'), shell = require('./shell.js'), settings = require('./settings.js'), - SettingsError = require('./settings.js').SettingsError, tar = require('tar-fs'), util = require('util'), zlib = require('zlib'); @@ -113,7 +112,9 @@ function testConfig(backupConfig, callback) { assert.strictEqual(typeof callback, 'function'); var func = api(backupConfig.provider); - if (!func) return callback(new SettingsError(SettingsError.BAD_FIELD, 'unkown storage provider')); + if (!func) return callback(new BackupsError(BackupsError.BAD_FIELD, 'unknown storage provider')); + + if (backupConfig.format !== 'tgz' && backupConfig.format !== 'flat-file') return callback(new BackupsError(BackupsError.BAD_FIELD, 'unknown format')); api(backupConfig.provider).testConfig(backupConfig, callback); } diff --git a/src/routes/settings.js b/src/routes/settings.js index 99f7622b7..fb98103de 100644 --- a/src/routes/settings.js +++ b/src/routes/settings.js @@ -274,6 +274,7 @@ function setBackupConfig(req, res, next) { if (typeof req.body.provider !== 'string') return next(new HttpError(400, 'provider is required')); if (typeof req.body.retentionSecs !== 'number') return next(new HttpError(400, 'retentionSecs is required')); if ('key' in req.body && typeof req.body.key !== 'string') return next(new HttpError(400, 'key must be a string')); + if (typeof req.body.format !== 'string') return next(new HttpError(400, 'format must be a string')); settings.setBackupConfig(req.body, function (error) { if (error && error.reason === SettingsError.BAD_FIELD) return next(new HttpError(400, error.message)); diff --git a/webadmin/src/views/settings.js b/webadmin/src/views/settings.js index d5312b014..630fc1f66 100644 --- a/webadmin/src/views/settings.js +++ b/webadmin/src/views/settings.js @@ -350,7 +350,8 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca var backupConfig = { provider: $scope.configureBackup.provider, key: $scope.configureBackup.key, - retentionSecs: $scope.configureBackup.retentionSecs + retentionSecs: $scope.configureBackup.retentionSecs, + format: 'tgz' }; // only set provider specific fields, this will clear them in the db