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/server/org/opends/server/tools/RestoreDB.java |   37 ++++++++++++++++++++-----------------
 1 files changed, 20 insertions(+), 17 deletions(-)

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