diff --git a/domain-server/resources/describe-settings.json b/domain-server/resources/describe-settings.json
index cbbcdb399e..9cb4c2cab9 100644
--- a/domain-server/resources/describe-settings.json
+++ b/domain-server/resources/describe-settings.json
@@ -1790,8 +1790,8 @@
]
},
{
- "name": "installed_archive",
- "label": "Installed Archive",
+ "name": "installed_content",
+ "label": "Installed Content",
"hidden": true,
"settings": [
{
@@ -1799,6 +1799,16 @@
"content_setting": true,
"default": ""
},
+ {
+ "name": "name",
+ "content_setting": true,
+ "default": ""
+ },
+ {
+ "name": "creation_time",
+ "content_setting": true,
+ "default": 0
+ },
{
"name": "install_time",
"type": "int",
diff --git a/domain-server/resources/web/content/js/content.js b/domain-server/resources/web/content/js/content.js
index 3e2b10e3f3..ae9dc23536 100644
--- a/domain-server/resources/web/content/js/content.js
+++ b/domain-server/resources/web/content/js/content.js
@@ -4,10 +4,11 @@ $(document).ready(function(){
var RESTORE_SETTINGS_FILE_ID = 'restore-settings-file';
var UPLOAD_CONTENT_ALLOWED_DIV_ID = 'upload-content-allowed';
var UPLOAD_CONTENT_RECOVERING_DIV_ID = 'upload-content-recovering';
- var INSTALLED_ARCHIVE_NAME_ID = 'installed-archive-name';
- var INSTALLED_ARCHIVE_CREATED_ID = 'installed-archive-created';
- var INSTALLED_ARCHIVE_INSTALLED_ID = 'installed-archive-installed';
- var INSTALLED_ARCHIVE_INSTALLED_BY_ID = 'installed-archive-installed-by';
+ var INSTALLED_CONTENT_FILENAME_ID = 'installed-content-filename';
+ var INSTALLED_CONTENT_NAME_ID = 'installed-content-name';
+ var INSTALLED_CONTENT_CREATED_ID = 'installed-content-created';
+ var INSTALLED_CONTENT_INSTALLED_ID = 'installed-content-installed';
+ var INSTALLED_CONTENT_INSTALLED_BY_ID = 'installed-content-installed-by';
var isRestoring = false;
var restoreErrorShown = false;
@@ -114,15 +115,17 @@ $(document).ready(function(){
function setupInstalledContentInfo() {
var html = "
";
html += "";
- html += " | ";
- html += " | ";
- html += " | ";
- //html += " |
";
+ html += " | ";
+ html += " | ";
+ html += " | ";
+ html += " | ";
+ //html += " |
";
html += "
";
- $('#' + Settings.INSTALLED_ARCHIVE_INFO + ' .panel-body').html(html);
+ $('#' + Settings.INSTALLED_CONTENT + ' .panel-body').html(html);
}
// handle content archive or entity file upload
@@ -360,11 +363,11 @@ $(document).ready(function(){
$('#' + UPLOAD_CONTENT_ALLOWED_DIV_ID).toggle(!data.status.isRecovering);
$('#' + UPLOAD_CONTENT_RECOVERING_DIV_ID).toggle(data.status.isRecovering);
-
- $('#' + INSTALLED_ARCHIVE_NAME_ID).text(data.installed_archive.name);
- $('#' + INSTALLED_ARCHIVE_CREATED_ID).text(moment(data.installed_archive.creation_time).format('lll'));
- $('#' + INSTALLED_ARCHIVE_INSTALLED_ID).text(moment(data.installed_archive.install_time).format('lll'));
- //$('#' + INSTALLED_ARCHIVE_INSTALLED_BY_ID).text(data.current_archive.installed_by);
+ $('#' + INSTALLED_CONTENT_NAME_ID).text(data.installed_content.name);
+ $('#' + INSTALLED_CONTENT_FILENAME_ID).text(data.installed_content.filename);
+ $('#' + INSTALLED_CONTENT_CREATED_ID).text(data.installed_content.creation_time ? moment(data.installed_content.creation_time).format('lll') : "");
+ $('#' + INSTALLED_CONTENT_INSTALLED_ID).text(data.installed_content.install_time ? moment(data.installed_content.install_time).format('lll') : "");
+ //$('#' + INSTALLED_CONTENT_INSTALLED_BY_ID).text(data.installed_content.installed_by);
// update the progress bars for current restore status
if (data.status.isRecovering) {
diff --git a/domain-server/resources/web/js/domain-server.js b/domain-server/resources/web/js/domain-server.js
index 180bc2b6ca..a8b7267b88 100644
--- a/domain-server/resources/web/js/domain-server.js
+++ b/domain-server/resources/web/js/domain-server.js
@@ -57,8 +57,8 @@ $(document).ready(function(){
// define extra groups to add to setting panels, with their splice index
Settings.extraContentGroupsAtIndex = {
0: {
- html_id: Settings.INSTALLED_ARCHIVE_INFO,
- label: 'Installed Archive'
+ html_id: Settings.INSTALLED_CONTENT,
+ label: 'Installed Content'
},
1: {
html_id: Settings.CONTENT_ARCHIVES_PANEL_ID,
diff --git a/domain-server/resources/web/js/shared.js b/domain-server/resources/web/js/shared.js
index f3d4b3a2d5..abcb2cb9eb 100644
--- a/domain-server/resources/web/js/shared.js
+++ b/domain-server/resources/web/js/shared.js
@@ -45,7 +45,7 @@ $.extend(Settings, {
DATA_ROW_INDEX: 'data-row-index',
CONTENT_ARCHIVES_PANEL_ID: 'content_archives',
UPLOAD_CONTENT_BACKUP_PANEL_ID: 'upload_content',
- INSTALLED_ARCHIVE_INFO: 'installed_archive_info'
+ INSTALLED_CONTENT: 'installed_content'
});
var URLs = {
diff --git a/domain-server/src/AssetsBackupHandler.cpp b/domain-server/src/AssetsBackupHandler.cpp
index 36bd00718e..d978e4ea56 100644
--- a/domain-server/src/AssetsBackupHandler.cpp
+++ b/domain-server/src/AssetsBackupHandler.cpp
@@ -278,7 +278,7 @@ void AssetsBackupHandler::createBackup(const QString& backupName, QuaZip& zip) {
_backups.emplace_back(backupName, mappings, false);
}
-std::pair AssetsBackupHandler::recoverBackup(const QString& backupName, QuaZip& zip) {
+std::pair AssetsBackupHandler::recoverBackup(const QString& backupName, QuaZip& zip, const QString& sourceFilename) {
Q_ASSERT(QThread::currentThread() == thread());
if (operationInProgress()) {
diff --git a/domain-server/src/AssetsBackupHandler.h b/domain-server/src/AssetsBackupHandler.h
index 1b1f6201cd..c8f20ab965 100644
--- a/domain-server/src/AssetsBackupHandler.h
+++ b/domain-server/src/AssetsBackupHandler.h
@@ -38,7 +38,7 @@ public:
void loadBackup(const QString& backupName, QuaZip& zip) override;
void loadingComplete() override;
void createBackup(const QString& backupName, QuaZip& zip) override;
- std::pair recoverBackup(const QString& backupName, QuaZip& zip) override;
+ std::pair recoverBackup(const QString& backupName, QuaZip& zip, const QString& sourceFilename) override;
void deleteBackup(const QString& backupName) override;
void consolidateBackup(const QString& backupName, QuaZip& zip) override;
bool isCorruptedBackup(const QString& backupName) override;
diff --git a/domain-server/src/BackupHandler.h b/domain-server/src/BackupHandler.h
index adde6f999a..278d43ade3 100644
--- a/domain-server/src/BackupHandler.h
+++ b/domain-server/src/BackupHandler.h
@@ -30,7 +30,7 @@ public:
virtual void loadBackup(const QString& backupName, QuaZip& zip) = 0;
virtual void loadingComplete() = 0;
virtual void createBackup(const QString& backupName, QuaZip& zip) = 0;
- virtual std::pair recoverBackup(const QString& backupName, QuaZip& zip) = 0;
+ virtual std::pair recoverBackup(const QString& backupName, QuaZip& zip, const QString& sourceFilename) = 0;
virtual void deleteBackup(const QString& backupName) = 0;
virtual void consolidateBackup(const QString& backupName, QuaZip& zip) = 0;
virtual bool isCorruptedBackup(const QString& backupName) = 0;
diff --git a/domain-server/src/ContentSettingsBackupHandler.cpp b/domain-server/src/ContentSettingsBackupHandler.cpp
index 8fc8c9b51d..a905a0bc03 100644
--- a/domain-server/src/ContentSettingsBackupHandler.cpp
+++ b/domain-server/src/ContentSettingsBackupHandler.cpp
@@ -10,6 +10,7 @@
//
#include "ContentSettingsBackupHandler.h"
+#include "DomainContentBackupManager.h"
#if !defined(__clang__) && defined(__GNUC__)
#pragma GCC diagnostic push
@@ -32,10 +33,12 @@ ContentSettingsBackupHandler::ContentSettingsBackupHandler(DomainServerSettingsM
}
static const QString CONTENT_SETTINGS_BACKUP_FILENAME = "content-settings.json";
-static const QString INSTALLED_ARCHIVE = "installed_archive";
-static const QString INSTALLED_ARCHIVE_FILENAME = "filename";
-static const QString INSTALLED_ARCHIVE_INSTALL_TIME = "install_time";
-static const QString INSTALLED_ARCHIVE_INSTALLED_BY = "installed_by";
+static const QString INSTALLED_CONTENT = "installed_content";
+static const QString INSTALLED_CONTENT_FILENAME = "filename";
+static const QString INSTALLED_CONTENT_NAME = "name";
+static const QString INSTALLED_CONTENT_CREATION_TIME = "creation_time";
+static const QString INSTALLED_CONTENT_INSTALL_TIME = "install_time";
+static const QString INSTALLED_CONTENT_INSTALLED_BY = "installed_by";
void ContentSettingsBackupHandler::createBackup(const QString& backupName, QuaZip& zip) {
@@ -46,15 +49,26 @@ void ContentSettingsBackupHandler::createBackup(const QString& backupName, QuaZi
DomainServerSettingsManager::IncludeContentSettings, DomainServerSettingsManager::NoDefaultSettings,
DomainServerSettingsManager::ForBackup
);
+ QString prefixFormat = "(" + QRegExp::escape(AUTOMATIC_BACKUP_PREFIX) + "|" + QRegExp::escape(MANUAL_BACKUP_PREFIX) + ")";
+ QString nameFormat = "(.+)";
+ QString dateTimeFormat = "(" + DATETIME_FORMAT_RE + ")";
+ QRegExp backupNameFormat { prefixFormat + nameFormat + "-" + dateTimeFormat + "\\.zip" };
- // save the filename internally as it's used to determine the name/creation time
- // of the archive, and we don't want that to change if the actual file is renamed
- // after download.
- QJsonObject installed_archive {
- { INSTALLED_ARCHIVE_FILENAME, backupName },
+ QString name{ "" };
+ QDateTime createdAt;
+
+ if (backupNameFormat.exactMatch(backupName)) {
+ name = backupNameFormat.cap(2);
+ auto dateTime = backupNameFormat.cap(3);
+ createdAt = QDateTime::fromString(dateTime, DATETIME_FORMAT);
+ }
+
+ QJsonObject installed_content {
+ { INSTALLED_CONTENT_NAME, name},
+ { INSTALLED_CONTENT_CREATION_TIME, createdAt.currentMSecsSinceEpoch()}
};
- contentSettingsJSON.insert(INSTALLED_ARCHIVE, installed_archive);
+ contentSettingsJSON.insert(INSTALLED_CONTENT, installed_content);
// make a QJsonDocument using the object
QJsonDocument contentSettingsDocument { contentSettingsJSON };
@@ -76,7 +90,7 @@ void ContentSettingsBackupHandler::createBackup(const QString& backupName, QuaZi
}
}
-std::pair ContentSettingsBackupHandler::recoverBackup(const QString& backupName, QuaZip& zip) {
+std::pair ContentSettingsBackupHandler::recoverBackup(const QString& backupName, QuaZip& zip, const QString& sourceFilename) {
if (!zip.setCurrentFile(CONTENT_SETTINGS_BACKUP_FILENAME)) {
QString errorStr("Failed to find " + CONTENT_SETTINGS_BACKUP_FILENAME + " while recovering backup");
qWarning() << errorStr;
@@ -102,15 +116,17 @@ std::pair ContentSettingsBackupHandler::recoverBackup(const QStri
QJsonDocument jsonDocument = QJsonDocument::fromJson(rawData);
QJsonObject jsonObject = jsonDocument.object();
- auto archiveJson = jsonObject.find(INSTALLED_ARCHIVE)->toObject();
+ auto archiveJson = jsonObject.find(INSTALLED_CONTENT)->toObject();
- QJsonObject installed_archive {
- { INSTALLED_ARCHIVE_FILENAME, archiveJson[INSTALLED_ARCHIVE_FILENAME]},
- { INSTALLED_ARCHIVE_INSTALL_TIME, QDateTime::currentDateTime().currentMSecsSinceEpoch() },
- { INSTALLED_ARCHIVE_INSTALLED_BY, ""}
+ QJsonObject installed_content {
+ { INSTALLED_CONTENT_FILENAME, sourceFilename },
+ { INSTALLED_CONTENT_NAME, archiveJson[INSTALLED_CONTENT_NAME].toString()},
+ { INSTALLED_CONTENT_CREATION_TIME, archiveJson[INSTALLED_CONTENT_CREATION_TIME].toVariant().toLongLong() },
+ { INSTALLED_CONTENT_INSTALL_TIME, QDateTime::currentDateTime().currentMSecsSinceEpoch() },
+ { INSTALLED_CONTENT_INSTALLED_BY, "" }
};
- jsonObject.insert(INSTALLED_ARCHIVE, installed_archive);
+ jsonObject.insert(INSTALLED_CONTENT, installed_content);
if (!_settingsManager.restoreSettingsFromObject(jsonObject, ContentSettings)) {
QString errorStr("Failed to restore settings from " + CONTENT_SETTINGS_BACKUP_FILENAME + " in content archive");
diff --git a/domain-server/src/ContentSettingsBackupHandler.h b/domain-server/src/ContentSettingsBackupHandler.h
index 39ba752221..0e44a18424 100644
--- a/domain-server/src/ContentSettingsBackupHandler.h
+++ b/domain-server/src/ContentSettingsBackupHandler.h
@@ -28,7 +28,7 @@ public:
void createBackup(const QString& backupName, QuaZip& zip) override;
- std::pair recoverBackup(const QString& backupName, QuaZip& zip) override;
+ std::pair recoverBackup(const QString& backupName, QuaZip& zip, const QString& sourceFilename) override;
void deleteBackup(const QString& backupName) override {}
diff --git a/domain-server/src/DomainContentBackupManager.cpp b/domain-server/src/DomainContentBackupManager.cpp
index 67a53cd1d4..11930f0b49 100644
--- a/domain-server/src/DomainContentBackupManager.cpp
+++ b/domain-server/src/DomainContentBackupManager.cpp
@@ -42,9 +42,6 @@ const std::chrono::seconds DomainContentBackupManager::DEFAULT_PERSIST_INTERVAL
// Backup format looks like: daily_backup-TIMESTAMP.zip
static const QString DATETIME_FORMAT { "yyyy-MM-dd_HH-mm-ss" };
-static const QString DATETIME_FORMAT_RE { "\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}" };
-static const QString AUTOMATIC_BACKUP_PREFIX { "autobackup-" };
-static const QString MANUAL_BACKUP_PREFIX { "backup-" };
static const QString PRE_UPLOAD_SUFFIX{ "pre_upload" };
static const QString MANUAL_BACKUP_NAME_RE { "[a-zA-Z0-9\\-_ ]+" };
@@ -282,7 +279,7 @@ void DomainContentBackupManager::deleteBackup(MiniPromise::Promise promise, cons
});
}
-bool DomainContentBackupManager::recoverFromBackupZip(const QString& backupName, QuaZip& zip, bool rollingBack) {
+bool DomainContentBackupManager::recoverFromBackupZip(const QString& backupName, QuaZip& zip, const QString& sourceFilename, bool rollingBack) {
if (!zip.open(QuaZip::Mode::mdUnzip)) {
qWarning() << "Failed to unzip file: " << backupName;
return false;
@@ -293,7 +290,7 @@ bool DomainContentBackupManager::recoverFromBackupZip(const QString& backupName,
for (auto& handler : _backupHandlers) {
bool success;
QString errorStr;
- std::tie(success, errorStr) = handler->recoverBackup(backupName, zip);
+ std::tie(success, errorStr) = handler->recoverBackup(backupName, zip, sourceFilename);
if (!success) {
if (!rollingBack) {
_recoveryError = errorStr;
@@ -330,7 +327,7 @@ void DomainContentBackupManager::recoverFromBackup(MiniPromise::Promise promise,
if (backupFile.open(QIODevice::ReadOnly)) {
QuaZip zip { &backupFile };
- success = recoverFromBackupZip(backupName, zip);
+ success = recoverFromBackupZip(backupName, zip, backupName);
backupFile.close();
} else {
@@ -358,21 +355,21 @@ void DomainContentBackupManager::recoverFromUploadedBackup(MiniPromise::Promise
QuaZip uploadedZip { &uploadedBackupBuffer };
QString backupName = MANUAL_BACKUP_PREFIX + "uploaded.zip";
- bool success = recoverFromBackupZip(backupName, uploadedZip);
+ bool success = recoverFromBackupZip(backupName, uploadedZip, QString());
promise->resolve({
{ "success", success }
});
}
-void DomainContentBackupManager::recoverFromUploadedFile(MiniPromise::Promise promise, QString uploadedFilename) {
+void DomainContentBackupManager::recoverFromUploadedFile(MiniPromise::Promise promise, QString uploadedFilename, QString sourceFilename) {
if (QThread::currentThread() != thread()) {
QMetaObject::invokeMethod(this, "recoverFromUploadedFile", Q_ARG(MiniPromise::Promise, promise),
- Q_ARG(QString, uploadedFilename));
+ Q_ARG(QString, uploadedFilename), Q_ARG(QString, sourceFilename));
return;
}
- qDebug() << "Recovering from uploaded file -" << uploadedFilename;
+ qDebug() << "Recovering from uploaded file -" << uploadedFilename << "source" << sourceFilename;
bool success;
QString path;
std::tie(success, path) = createBackup(AUTOMATIC_BACKUP_PREFIX, PRE_UPLOAD_SUFFIX);
@@ -385,7 +382,7 @@ void DomainContentBackupManager::recoverFromUploadedFile(MiniPromise::Promise pr
QString backupName = MANUAL_BACKUP_PREFIX + "uploaded.zip";
- bool success = recoverFromBackupZip(backupName, uploadedZip);
+ bool success = recoverFromBackupZip(backupName, uploadedZip, sourceFilename);
if (!success) {
@@ -397,7 +394,7 @@ void DomainContentBackupManager::recoverFromUploadedFile(MiniPromise::Promise pr
QuaZip uploadedZip { &uploadedFile };
QString backupName = MANUAL_BACKUP_PREFIX + "uploaded.zip";
- recoverFromBackupZip(backupName, uploadedZip, true);
+ recoverFromBackupZip(backupName, uploadedZip, sourceFilename, true);
}
}
@@ -494,28 +491,40 @@ void DomainContentBackupManager::getAllBackupsAndStatus(MiniPromise::Promise pro
status["recoveryError"] = _recoveryError;
}
- QVariantMap currentArchive;
- QString fileName = _settingsManager.valueForKeyPath(CONTENT_SETTINGS_ARCHIVE_FILENAME).toString();
- QString prefixFormat = "(" + QRegExp::escape(AUTOMATIC_BACKUP_PREFIX) + "|" + QRegExp::escape(MANUAL_BACKUP_PREFIX) + ")";
- QString nameFormat = "(.+)";
- QString dateTimeFormat = "(" + DATETIME_FORMAT_RE + ")";
- QRegExp backupNameFormat { prefixFormat + nameFormat + "-" + dateTimeFormat + "\\.zip" };
- if (backupNameFormat.exactMatch(fileName)) {
- auto type = backupNameFormat.cap(1);
- auto name = backupNameFormat.cap(2);
- auto dateTime = backupNameFormat.cap(3);
- auto createdAt = QDateTime::fromString(dateTime, DATETIME_FORMAT);
- currentArchive["name"] = name;
- currentArchive["creation_time"] = createdAt.toMSecsSinceEpoch();
- currentArchive["install_time"] = _settingsManager.valueForKeyPath(CONTENT_SETTINGS_ARCHIVE_INSTALL_TIME).toULongLong();
- currentArchive["installed_by"] = _settingsManager.valueForKeyPath(CONTENT_SETTINGS_ARCHIVE_INSTALLED_BY).toString();
+ QString filename = _settingsManager.valueForKeyPath(CONTENT_SETTINGS_INSTALLED_CONTENT_FILENAME).toString();
+ QString name = _settingsManager.valueForKeyPath(CONTENT_SETTINGS_INSTALLED_CONTENT_NAME).toString();
+ auto creationTime = _settingsManager.valueForKeyPath(CONTENT_SETTINGS_INSTALLED_CONTENT_CREATION_TIME).toULongLong();
+
+ if (name.isEmpty() || creationTime == 0) {
+ QString prefixFormat = "(" + QRegExp::escape(AUTOMATIC_BACKUP_PREFIX) + "|" + QRegExp::escape(MANUAL_BACKUP_PREFIX) + ")";
+ QString nameFormat = "(.+)";
+ QString dateTimeFormat = "(" + DATETIME_FORMAT_RE + ")";
+ QRegExp backupNameFormat { prefixFormat + nameFormat + "-" + dateTimeFormat + "\\.zip" };
+
+
+ if (backupNameFormat.exactMatch(filename)) {
+ if (name.isEmpty()) {
+ name = backupNameFormat.cap(2);
+ }
+ if (creationTime == 0) {
+ auto dateTime = backupNameFormat.cap(3);
+ creationTime = QDateTime::fromString(dateTime, DATETIME_FORMAT).toMSecsSinceEpoch();
+ }
+ }
}
+ QVariantMap currentArchive;
+ currentArchive["filename"] = filename;
+ currentArchive["name"] = name;
+ currentArchive["creation_time"] = creationTime;
+ currentArchive["install_time"] = _settingsManager.valueForKeyPath(CONTENT_SETTINGS_INSTALLED_CONTENT_INSTALL_TIME).toULongLong();
+ currentArchive["installed_by"] = _settingsManager.valueForKeyPath(CONTENT_SETTINGS_INSTALLED_CONTENT_INSTALLED_BY).toString();
+
QVariantMap info {
{ "backups", variantBackups },
{ "status", status },
- { "installed_archive", currentArchive }
+ { "installed_content", currentArchive }
};
promise->resolve(info);
diff --git a/domain-server/src/DomainContentBackupManager.h b/domain-server/src/DomainContentBackupManager.h
index 6e562b1773..1f4e72b4c6 100644
--- a/domain-server/src/DomainContentBackupManager.h
+++ b/domain-server/src/DomainContentBackupManager.h
@@ -34,6 +34,10 @@
#include
+const QString DATETIME_FORMAT_RE { "\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}" };
+const QString AUTOMATIC_BACKUP_PREFIX { "autobackup-" };
+const QString MANUAL_BACKUP_PREFIX { "backup-" };
+
struct BackupItemInfo {
BackupItemInfo(QString pId, QString pName, QString pAbsolutePath, QDateTime pCreatedAt, bool pIsManualBackup) :
id(pId), name(pName), absolutePath(pAbsolutePath), createdAt(pCreatedAt), isManualBackup(pIsManualBackup) { };
@@ -87,7 +91,7 @@ public slots:
void createManualBackup(MiniPromise::Promise promise, const QString& name);
void recoverFromBackup(MiniPromise::Promise promise, const QString& backupName);
void recoverFromUploadedBackup(MiniPromise::Promise promise, QByteArray uploadedBackup);
- void recoverFromUploadedFile(MiniPromise::Promise promise, QString uploadedFilename);
+ void recoverFromUploadedFile(MiniPromise::Promise promise, QString uploadedFilename, QString sourceFilename);
void deleteBackup(MiniPromise::Promise promise, const QString& backupName);
signals:
@@ -109,7 +113,7 @@ protected:
std::pair createBackup(const QString& prefix, const QString& name);
- bool recoverFromBackupZip(const QString& backupName, QuaZip& backupZip, bool rollingBack = false);
+ bool recoverFromBackupZip(const QString& backupName, QuaZip& backupZip, const QString& sourceFilename, bool rollingBack = false);
private slots:
void removeOldConsolidatedBackups();
diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp
index d20ddb186e..9dfbb46ca5 100644
--- a/domain-server/src/DomainServer.cpp
+++ b/domain-server/src/DomainServer.cpp
@@ -2591,7 +2591,7 @@ bool DomainServer::processPendingContent(HTTPConnection* connection, QString ite
_pendingContentFiles.erase(sessionId);
});
- _contentManager->recoverFromUploadedFile(deferred, _pendingFileContent.fileName());
+ _contentManager->recoverFromUploadedFile(deferred, _pendingFileContent.fileName(), filename);
}
} else if (filename.endsWith(".json", Qt::CaseInsensitive)
|| filename.endsWith(".json.gz", Qt::CaseInsensitive)) {
diff --git a/domain-server/src/DomainServerSettingsManager.h b/domain-server/src/DomainServerSettingsManager.h
index a053001f0c..e28b9f6cd1 100644
--- a/domain-server/src/DomainServerSettingsManager.h
+++ b/domain-server/src/DomainServerSettingsManager.h
@@ -35,9 +35,11 @@ const QString MACHINE_FINGERPRINT_PERMISSIONS_KEYPATH = "security.machine_finger
const QString GROUP_PERMISSIONS_KEYPATH = "security.group_permissions";
const QString GROUP_FORBIDDENS_KEYPATH = "security.group_forbiddens";
const QString AUTOMATIC_CONTENT_ARCHIVES_GROUP = "automatic_content_archives";
-const QString CONTENT_SETTINGS_ARCHIVE_FILENAME = "installed_archive.filename";
-const QString CONTENT_SETTINGS_ARCHIVE_INSTALL_TIME = "installed_archive.install_time";
-const QString CONTENT_SETTINGS_ARCHIVE_INSTALLED_BY = "installed_archive.installed_by";
+const QString CONTENT_SETTINGS_INSTALLED_CONTENT_FILENAME = "installed_content.filename";
+const QString CONTENT_SETTINGS_INSTALLED_CONTENT_NAME = "installed_content.name";
+const QString CONTENT_SETTINGS_INSTALLED_CONTENT_CREATION_TIME = "installed_content.creation_time";
+const QString CONTENT_SETTINGS_INSTALLED_CONTENT_INSTALL_TIME = "installed_content.install_time";
+const QString CONTENT_SETTINGS_INSTALLED_CONTENT_INSTALLED_BY = "installed_content.installed_by";
using GroupByUUIDKey = QPair; // groupID, rankID
diff --git a/domain-server/src/EntitiesBackupHandler.cpp b/domain-server/src/EntitiesBackupHandler.cpp
index f306e9680e..03baec9164 100644
--- a/domain-server/src/EntitiesBackupHandler.cpp
+++ b/domain-server/src/EntitiesBackupHandler.cpp
@@ -57,7 +57,7 @@ void EntitiesBackupHandler::createBackup(const QString& backupName, QuaZip& zip)
}
}
-std::pair EntitiesBackupHandler::recoverBackup(const QString& backupName, QuaZip& zip) {
+std::pair EntitiesBackupHandler::recoverBackup(const QString& backupName, QuaZip& zip, const QString& sourceFilename) {
if (!zip.setCurrentFile(ENTITIES_BACKUP_FILENAME)) {
QString errorStr("Failed to find " + ENTITIES_BACKUP_FILENAME + " while recovering backup");
qWarning() << errorStr;
diff --git a/domain-server/src/EntitiesBackupHandler.h b/domain-server/src/EntitiesBackupHandler.h
index 4dd6462974..f8b6cba8a0 100644
--- a/domain-server/src/EntitiesBackupHandler.h
+++ b/domain-server/src/EntitiesBackupHandler.h
@@ -29,7 +29,7 @@ public:
void createBackup(const QString& backupName, QuaZip& zip) override;
// Recover from a full backup
- std::pair recoverBackup(const QString& backupName, QuaZip& zip) override;
+ std::pair recoverBackup(const QString& backupName, QuaZip& zip, const QString& sourceFilename) override;
// Delete a skeleton backup
void deleteBackup(const QString& backupName) override {}