From 943f3c9934a84e013bd5fdce831d5e3aa752f219 Mon Sep 17 00:00:00 2001
From: david_page <david_page@localhost>
Date: Wed, 10 Oct 2007 22:02:54 +0000
Subject: [PATCH] issue 2440 bin/restore of encrypted or signed backup requires online server instance
---
opends/src/messages/messages/tools.properties | 2 ++
opends/src/server/org/opends/server/tools/RestoreDB.java | 37 ++++++++++++++++++++-----------------
opends/src/server/org/opends/server/extensions/ConfigFileHandler.java | 6 +++---
opends/src/server/org/opends/server/backends/jeb/BackupManager.java | 6 +++---
opends/src/server/org/opends/server/backends/SchemaBackend.java | 6 +++---
5 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/opends/src/messages/messages/tools.properties b/opends/src/messages/messages/tools.properties
index 685e7ec..e3e539a 100644
--- a/opends/src/messages/messages/tools.properties
+++ b/opends/src/messages/messages/tools.properties
@@ -535,6 +535,8 @@
backups
SEVERE_ERR_RESTOREDB_ERROR_DURING_BACKUP_317=An unexpected error occurred \
while attempting to restore backup %s from %s: %s
+SEVERE_ERR_RESTOREDB_ENCRYPT_OR_SIGN_REQUIRES_ONLINE_318=Restoring an \
+ encrypted or signed backup requires a connection to an online server
SEVERE_ERR_BACKUPDB_ENCRYPT_OR_SIGN_REQUIRES_ONLINE_325=The use of the \
%s argument or the %s argument requires a connection to an online server \
instance
diff --git a/opends/src/server/org/opends/server/backends/SchemaBackend.java b/opends/src/server/org/opends/server/backends/SchemaBackend.java
index 50ec617..9ff9b40 100644
--- a/opends/src/server/org/opends/server/backends/SchemaBackend.java
+++ b/opends/src/server/org/opends/server/backends/SchemaBackend.java
@@ -4257,7 +4257,7 @@
}
Message message = ERR_SCHEMA_BACKUP_CANNOT_GET_CIPHER.get(
- e.getMessage());
+ stackTraceToSingleLineString(e));
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
message, e);
}
@@ -4624,8 +4624,8 @@
}
catch (CryptoManager.CryptoManagerException e)
{
- Message message = ERR_SCHEMA_RESTORE_CANNOT_GET_CIPHER.
- get(backupFile.getPath(), e.getMessage());
+ Message message = ERR_SCHEMA_RESTORE_CANNOT_GET_CIPHER.get(
+ backupFile.getPath(), stackTraceToSingleLineString(e));
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
message, e);
}
diff --git a/opends/src/server/org/opends/server/backends/jeb/BackupManager.java b/opends/src/server/org/opends/server/backends/jeb/BackupManager.java
index 24afa97..f8323cf 100644
--- a/opends/src/server/org/opends/server/backends/jeb/BackupManager.java
+++ b/opends/src/server/org/opends/server/backends/jeb/BackupManager.java
@@ -355,7 +355,7 @@
}
Message message = ERR_JEB_BACKUP_CANNOT_GET_CIPHER.get(
- e.getMessage());
+ stackTraceToSingleLineString(e));
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
message, e);
}
@@ -984,7 +984,7 @@
}
Message message = ERR_JEB_BACKUP_CANNOT_GET_CIPHER.get(
- e.getMessage());
+ stackTraceToSingleLineString(e));
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
message, e);
}
@@ -1313,7 +1313,7 @@
}
Message message = ERR_JEB_BACKUP_CANNOT_GET_CIPHER.get(
- e.getMessage());
+ stackTraceToSingleLineString(e));
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
message, e);
}
diff --git a/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java b/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java
index 51897bd..0b33b6b 100644
--- a/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java
+++ b/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java
@@ -2758,7 +2758,7 @@
}
Message message = ERR_CONFIG_BACKUP_CANNOT_GET_CIPHER.get(
- e.getMessage());
+ stackTraceToSingleLineString(e));
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
message, e);
}
@@ -3165,8 +3165,8 @@
}
catch (Exception e)
{
- Message message = ERR_CONFIG_RESTORE_CANNOT_GET_CIPHER.
- get(e.getMessage(), backupFile.getPath());
+ Message message = ERR_CONFIG_RESTORE_CANNOT_GET_CIPHER.get(
+ backupFile.getPath(), stackTraceToSingleLineString(e));
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
message, e);
}
diff --git a/opends/src/server/org/opends/server/tools/RestoreDB.java b/opends/src/server/org/opends/server/tools/RestoreDB.java
index b3c75a7..60f5799 100644
--- a/opends/src/server/org/opends/server/tools/RestoreDB.java
+++ b/opends/src/server/org/opends/server/tools/RestoreDB.java
@@ -561,33 +561,36 @@
// If a backup ID was specified, then make sure it is valid. If none was
- // provided, then choose the latest backup from the archive.
+ // provided, then choose the latest backup from the archive. Encrypted
+ // or signed backups cannot be restored to a local (offline) server
+ // instance.
String backupID;
- if (backupIDString.isPresent())
{
- backupID = backupIDString.getValue();
- BackupInfo backupInfo = backupDir.getBackupInfo(backupID);
+ BackupInfo backupInfo = backupDir.getLatestBackup();
if (backupInfo == null)
{
- Message message = ERR_RESTOREDB_INVALID_BACKUP_ID.get(
- backupID, backupDirectory.getValue());
- logError(message);
- return 1;
- }
- }
- else
- {
- BackupInfo latestBackup = backupDir.getLatestBackup();
- if (latestBackup == null)
- {
Message message = ERR_RESTOREDB_NO_BACKUPS_IN_DIRECTORY.get(
backupDirectory.getValue());
logError(message);
return 1;
}
- else
+ backupID = backupInfo.getBackupID();
+ if (backupIDString.isPresent())
{
- backupID = latestBackup.getBackupID();
+ backupID = backupIDString.getValue();
+ backupInfo = backupDir.getBackupInfo(backupID);
+ if (backupInfo == null)
+ {
+ Message message = ERR_RESTOREDB_INVALID_BACKUP_ID.get(
+ backupID, backupDirectory.getValue());
+ logError(message);
+ return 1;
+ }
+ }
+ if (backupInfo.isEncrypted() || null != backupInfo.getSignedHash()) {
+ Message message = ERR_RESTOREDB_ENCRYPT_OR_SIGN_REQUIRES_ONLINE.get();
+ logError(message);
+ return 1;
}
}
--
Gitblit v1.10.0