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.