backups: add mounting config
This commit is contained in:
@@ -131,6 +131,8 @@ const assert = require('assert'),
|
||||
docker = require('./docker.js'),
|
||||
externalLdap = require('./externalldap.js'),
|
||||
moment = require('moment-timezone'),
|
||||
mounts = require('./mounts.js'),
|
||||
path = require('path'),
|
||||
paths = require('./paths.js'),
|
||||
safe = require('safetydance'),
|
||||
settingsdb = require('./settingsdb.js'),
|
||||
@@ -378,11 +380,17 @@ function setUnstableAppsConfig(enabled, callback) {
|
||||
function getBackupConfig(callback) {
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
settingsdb.get(exports.BACKUP_CONFIG_KEY, function (error, value) {
|
||||
settingsdb.get(exports.BACKUP_CONFIG_KEY, async function (error, value) {
|
||||
if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.BACKUP_CONFIG_KEY]);
|
||||
if (error) return callback(error);
|
||||
|
||||
callback(null, JSON.parse(value)); // provider, token, password, region, prefix, bucket
|
||||
const backupConfig = JSON.parse(value); // provider, token, password, region, prefix, bucket
|
||||
|
||||
if (backupConfig.provider === 'sshfs' || backupConfig.provider === 'cifs' || backupConfig.provider === 'nfs') {
|
||||
backupConfig.mountStatus = await mounts.getStatus(backupConfig.mountType || 'noop', backupConfig.mountPoint); // { state, message }
|
||||
}
|
||||
|
||||
callback(null, backupConfig);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -395,7 +403,7 @@ function setBackupConfig(backupConfig, callback) {
|
||||
|
||||
backups.injectPrivateFields(backupConfig, currentConfig);
|
||||
|
||||
backups.testConfig(backupConfig, function (error) {
|
||||
backups.testConfig(backupConfig, async function (error) {
|
||||
if (error) return callback(error);
|
||||
|
||||
if ('password' in backupConfig) { // user set password
|
||||
@@ -409,6 +417,21 @@ function setBackupConfig(backupConfig, callback) {
|
||||
backups.cleanupCacheFilesSync();
|
||||
}
|
||||
|
||||
if ('mountType' in backupConfig) {
|
||||
error = mounts.validateMountOptions(backupConfig.mountType, backupConfig.mountOptions);
|
||||
if (error) return callback(error);
|
||||
|
||||
const backupVolume = {
|
||||
name: 'backup',
|
||||
hostPath: backupConfig.mountPoint,
|
||||
mountType: backupConfig.mountType,
|
||||
mountOptions: backupConfig.mountOptions
|
||||
};
|
||||
|
||||
[error] = await safe(backupConfig.mountType === 'noop' ? mounts.removeMountFile(backupVolume.hostPath) : mounts.writeMountFile(backupVolume));
|
||||
if (error) return callback(error);
|
||||
}
|
||||
|
||||
settingsdb.set(exports.BACKUP_CONFIG_KEY, JSON.stringify(backupConfig), function (error) {
|
||||
if (error) return callback(error);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user