diff --git a/client/components/tables/BackupsTable.vue b/client/components/tables/BackupsTable.vue index c59bbcf8..3a757a86 100644 --- a/client/components/tables/BackupsTable.vue +++ b/client/components/tables/BackupsTable.vue @@ -13,17 +13,20 @@ Size - +

/{{ backup.path.replace(/\\/g, '/') }}

- {{ backup.datePretty }} - {{ $bytesPretty(backup.fileSize) }} + {{ backup.datePretty }} + {{ $bytesPretty(backup.fileSize) }}
- Apply + Apply - download + download + + error_outline + delete
@@ -176,11 +179,11 @@ export default { text-align: center; } -#backups tr:nth-child(even) { +#backups tr:nth-child(even):not(.bg-error) { background-color: #3a3a3a; } -#backups tr:not(.staticrow):hover { +#backups tr:not(.staticrow):not(.bg-error):hover { background-color: #444; } diff --git a/server/managers/BackupManager.js b/server/managers/BackupManager.js index 5c56fd13..9c1002cd 100644 --- a/server/managers/BackupManager.js +++ b/server/managers/BackupManager.js @@ -92,6 +92,12 @@ class BackupManager { var details = data.toString('utf8').split('\n') var backup = new Backup({ details, fullPath: tempPath }) + + if (!backup.serverVersion) { + Logger.error(`[BackupManager] Invalid backup with no server version - might be a backup created before version 2.0.0`) + return res.status(500).send('Invalid backup. Might be a backup created before version 2.0.0.') + } + backup.fileSize = await getFileSize(backup.fullPath) var existingBackupIndex = this.backups.findIndex(b => b.id === backup.id) @@ -133,6 +139,11 @@ class BackupManager { var details = data.toString('utf8').split('\n') var backup = new Backup({ details, fullPath: fullFilePath }) + + if (!backup.serverVersion) { + Logger.error(`[BackupManager] Old unsupported backup was found "${backup.fullPath}"`) + } + backup.fileSize = await getFileSize(backup.fullPath) var existingBackupWithId = this.backups.find(b => b.id === backup.id) if (existingBackupWithId) { diff --git a/server/objects/Backup.js b/server/objects/Backup.js index 727a9ff6..a9fa9de5 100644 --- a/server/objects/Backup.js +++ b/server/objects/Backup.js @@ -1,5 +1,6 @@ const Path = require('path') const date = require('date-and-time') +const version = require('../../package.json').version class Backup { constructor(data = null) { @@ -11,6 +12,7 @@ class Backup { this.filename = null this.path = null this.fullPath = null + this.serverVersion = null this.fileSize = null this.createdAt = null @@ -25,6 +27,7 @@ class Backup { details.push(this.id) details.push(this.backupMetadataCovers ? '1' : '0') details.push(this.createdAt) + details.push(this.serverVersion) return details.join('\n') } @@ -32,6 +35,7 @@ class Backup { this.id = data.details[0] this.backupMetadataCovers = data.details[1] === '1' this.createdAt = Number(data.details[2]) + this.serverVersion = data.details[3] || null this.datePretty = date.format(new Date(this.createdAt), 'ddd, MMM D YYYY HH:mm') @@ -51,7 +55,8 @@ class Backup { path: this.path, filename: this.filename, fileSize: this.fileSize, - createdAt: this.createdAt + createdAt: this.createdAt, + serverVersion: this.serverVersion } } @@ -67,6 +72,8 @@ class Backup { this.path = Path.join('backups', this.filename) this.fullPath = Path.join(this.backupDirPath, this.filename) + this.serverVersion = version + this.createdAt = Date.now() } }