Don't overwrite the backup if it's our only copy.

This commit is contained in:
akwizgran
2018-05-18 15:17:43 +01:00
parent 39aa2d96b3
commit b410b8efcc

View File

@@ -116,22 +116,27 @@ public class ConfigControllerImpl implements ConfigController {
LOG.info("Storing database key in file"); LOG.info("Storing database key in file");
File dbKey = getDbKeyFile(); File dbKey = getDbKeyFile();
File dbKeyBackup = getDbKeyBackupFile(); File dbKeyBackup = getDbKeyBackupFile();
// Create the directory if necessary
if (databaseConfig.getDatabaseKeyDirectory().mkdirs())
LOG.info("Created database key directory");
// If only the backup file exists, rename it so we don't overwrite it
if (dbKeyBackup.exists() && !dbKey.exists()) {
if (dbKeyBackup.renameTo(dbKey)) LOG.info("Renamed old backup");
else LOG.warning("Failed to rename old backup");
}
try { try {
// Create the directory if necessary
if (databaseConfig.getDatabaseKeyDirectory().mkdirs())
LOG.info("Created database key directory");
// Write to the backup file // Write to the backup file
FileOutputStream out = new FileOutputStream(dbKeyBackup); FileOutputStream out = new FileOutputStream(dbKeyBackup);
out.write(hex.getBytes("UTF-8")); out.write(hex.getBytes("UTF-8"));
out.flush(); out.flush();
out.close(); out.close();
LOG.info("Stored database key in backup file"); LOG.info("Stored database key in backup file");
// Delete the old key file, if it exists // Delete the old primary file, if it exists
if (dbKey.exists()) { if (dbKey.exists()) {
if (dbKey.delete()) LOG.info("Deleted primary file"); if (dbKey.delete()) LOG.info("Deleted primary file");
else LOG.warning("Failed to delete primary file"); else LOG.warning("Failed to delete primary file");
} }
// The backup file becomes the new key file // The backup file becomes the new primary
boolean renamed = dbKeyBackup.renameTo(dbKey); boolean renamed = dbKeyBackup.renameTo(dbKey);
if (renamed) LOG.info("Renamed backup file to primary"); if (renamed) LOG.info("Renamed backup file to primary");
else LOG.warning("Failed to rename backup file to primary"); else LOG.warning("Failed to rename backup file to primary");