backups: fix mounting logic of backup settings and cloudron restore

This commit is contained in:
Girish Ramakrishnan
2021-05-26 23:01:05 -07:00
parent 98988202a1
commit a34bdb9ddf
5 changed files with 79 additions and 44 deletions

View File

@@ -18,7 +18,9 @@ const assert = require('assert'),
domains = require('./domains.js'),
eventlog = require('./eventlog.js'),
mail = require('./mail.js'),
mounts = require('./mounts.js'),
reverseProxy = require('./reverseproxy.js'),
safe = require('safetydance'),
semver = require('semver'),
settings = require('./settings.js'),
sysinfo = require('./sysinfo.js'),
@@ -177,10 +179,25 @@ function restore(backupConfig, backupId, version, sysinfoConfig, options, auditS
callback(error);
}
users.isActivated(function (error, activated) {
users.isActivated(async function (error, activated) {
if (error) return done(error);
if (activated) return done(new BoxError(BoxError.CONFLICT, 'Already activated. Restore with a fresh Cloudron installation.'));
if (backups.isMountProvider(backupConfig.provider)) {
error = mounts.validateMountOptions(backupConfig.provider, backupConfig.mountOptions);
if (error) return callback(error);
const newMount = {
name: 'backup',
hostPath: backupConfig.mountPoint,
mountType: backupConfig.provider,
mountOptions: backupConfig.mountOptions
};
[error] = await safe(mounts.tryAddMount(newMount, null, { times: 20, interval: 500 })); // 10 seconds
if (error) return callback(error);
}
backups.testProviderConfig(backupConfig, function (error) {
if (error) return done(error);