diff --git a/src/provision.js b/src/provision.js index 9375da739..676222fde 100644 --- a/src/provision.js +++ b/src/provision.js @@ -204,10 +204,11 @@ function activate(username, password, email, displayName, ip, auditSource, callb }); } -function restore(backupConfig, backupId, version, auditSource, callback) { +function restore(backupConfig, backupId, version, sysinfoConfig, auditSource, callback) { assert.strictEqual(typeof backupConfig, 'object'); assert.strictEqual(typeof backupId, 'string'); assert.strictEqual(typeof version, 'string'); + assert.strictEqual(typeof sysinfoConfig, 'object'); assert.strictEqual(typeof auditSource, 'object'); assert.strictEqual(typeof callback, 'function'); @@ -238,6 +239,7 @@ function restore(backupConfig, backupId, version, auditSource, callback) { async.series([ setProgress.bind(null, 'restore', 'Downloading backup'), backups.restore.bind(null, backupConfig, backupId, (progress) => setProgress('restore', progress.message, NOOP_CALLBACK)), + (next) => { if (!sysinfoConfig) return next(); settings.setSysinfoConfig(sysinfoConfig, next); }, cloudron.setupDashboard.bind(null, auditSource, (progress) => setProgress('restore', progress.message, NOOP_CALLBACK)), settings.setBackupConfig.bind(null, backupConfig), // update with the latest backupConfig eventlog.add.bind(null, eventlog.ACTION_RESTORE, auditSource, { backupId }), diff --git a/src/routes/provision.js b/src/routes/provision.js index afe7b519b..ecee8f57f 100644 --- a/src/routes/provision.js +++ b/src/routes/provision.js @@ -102,7 +102,9 @@ function restore(req, res, next) { if (typeof req.body.backupId !== 'string') return next(new HttpError(400, 'backupId must be a string or null')); if (typeof req.body.version !== 'string') return next(new HttpError(400, 'version must be a string')); - provision.restore(backupConfig, req.body.backupId, req.body.version, auditSource.fromRequest(req), function (error) { + if ('sysinfoConfig' in req.body && typeof req.body.sysinfoConfig !== 'object') return next(new HttpError(400, 'sysinfoConfig must be an object')); + + provision.restore(backupConfig, req.body.backupId, req.body.version, req.body.sysinfoConfig || null, auditSource.fromRequest(req), function (error) { if (error) return next(BoxError.toHttpError(error)); next(new HttpSuccess(200, {}));