mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

david_page
11.02.2007 943f3c9934a84e013bd5fdce831d5e3aa752f219
issue 2440
bin/restore of encrypted or signed backup requires online server instance
5 files modified
57 ■■■■ changed files
opends/src/messages/messages/tools.properties 2 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/SchemaBackend.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/BackupManager.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/ConfigFileHandler.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/RestoreDB.java 37 ●●●● patch | view | raw | blame | history
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
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);
      }
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);
      }
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);
      }
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;
      }
    }