Fixed auto-backup system.

Ylian Saint-Hilaire committed Apr 16, 2020 at 16:56 UTC 01ddb56f64316419fc4ce8cd523aef748943cf94
1 file changed +21 -5
meshcentral.js
+21 -5
@@ -1341,11 +1341,6 @@ function CreateMeshCentralServer(config, args) {
1341 if (obj.config.settings.autobackup == null) { obj.config.settings.autobackup = { backupintervalhours: 24, keeplastdaysbackup: 10 }; }
1342 else if (obj.config.settings.autobackup === false) { delete obj.config.settings.autobackup; }
1343
1344 - // Setup auto-backup timer
1345 - if (obj.config.settings.autobackup && (typeof obj.config.settings.autobackup.backupintervalhours == 'number')) {
1346 - setInterval(obj.db.performBackup, obj.config.settings.autobackup.backupintervalhours * 60 * 60 * 1000);
1347 - }
1348 -
1344 // Setup users that can see all device groups
1345 obj.config.settings.managealldevicegroups = [];
1346 for (i in obj.config.domains) { if (Array.isArray(obj.config.domains[i].managealldevicegroups)) { for (var j in obj.config.domains[i].managealldevicegroups) { if (typeof obj.config.domains[i].managealldevicegroups[j] == 'string') { obj.config.settings.managealldevicegroups.push('user/' + i + '/' + obj.config.domains[i].managealldevicegroups[j]); } } } }
@@ -1421,11 +1416,32 @@ function CreateMeshCentralServer(config, args) {
1416 performSelfUpdate.value--;
1417 obj.db.Set(performSelfUpdate);
1418 obj.getLatestServerVersion(function (currentVer, latestVer) { if (currentVer != latestVer) { obj.performServerUpdate(); return; } });
1419 + } else {
1420 + checkAutobackup();
1421 }
1422 });
1423 + } else {
1424 + checkAutobackup();
1425 }
1426 };
1427
1428 + // Check if we need to perform an automatic backup
1429 + function checkAutobackup() {
1430 + if (obj.config.settings.autobackup && (typeof obj.config.settings.autobackup.backupintervalhours == 'number')) {
1431 + obj.db.Get('LastAutoBackupTime', function (err, docs) {
1432 + if (err != null) return;
1433 + var lastBackup = 0, now = new Date().getTime();
1434 + if (docs.length == 1) { lastBackup = docs[0].value; }
1435 + var delta = now - lastBackup;
1436 + if (delta > (obj.config.settings.autobackup.backupintervalhours * 60 * 60 * 1000)) {
1437 + // A new auto-backup is required.
1438 + obj.db.Set({ _id: 'LastAutoBackupTime', value: now }); // Save the current time in the database
1439 + obj.db.performBackup(); // Perform the backup
1440 + }
1441 + });
1442 + }
1443 + }
1444 +
1445 // Stop the Meshcentral server
1446 obj.Stop = function (restoreFile) {
1447 // If the database is not setup, exit now.