From 35bdbe3c4e42d4dfa1a5f8960ce9598dc4fc37b9 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Tue, 26 Apr 2011 18:48:00 +0000 Subject: Add a method to BackupStoreFilenameClear to get the clear filename only if it's available or crypto has been configured to decrypt it. This allows client and server to share the same definition of protocol objects that use Filenames, instead of using BackupStoreFilename on the server and BackupStoreFilenameClear on the client. --- lib/backupstore/BackupStoreFilenameClear.cpp | 20 ++++++++++++++++---- lib/backupstore/BackupStoreFilenameClear.h | 1 + 2 files changed, 17 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/backupstore/BackupStoreFilenameClear.cpp b/lib/backupstore/BackupStoreFilenameClear.cpp index e529d8d3..ad5666cf 100644 --- a/lib/backupstore/BackupStoreFilenameClear.cpp +++ b/lib/backupstore/BackupStoreFilenameClear.cpp @@ -59,8 +59,8 @@ BackupStoreFilenameClear::BackupStoreFilenameClear(const std::string &rToEncode) // // -------------------------------------------------------------------------- BackupStoreFilenameClear::BackupStoreFilenameClear(const BackupStoreFilenameClear &rToCopy) - : BackupStoreFilename(rToCopy), - mClearFilename(rToCopy.mClearFilename) +: BackupStoreFilename(rToCopy), + mClearFilename(rToCopy.mClearFilename) { } @@ -73,7 +73,7 @@ BackupStoreFilenameClear::BackupStoreFilenameClear(const BackupStoreFilenameClea // // -------------------------------------------------------------------------- BackupStoreFilenameClear::BackupStoreFilenameClear(const BackupStoreFilename &rToCopy) - : BackupStoreFilename(rToCopy) +: BackupStoreFilename(rToCopy) { // Will get a clear filename when it's required } @@ -112,6 +112,18 @@ const std::string &BackupStoreFilenameClear::GetClearFilename() const MakeClearAvailable(); return mClearFilename; } +const std::string &BackupStoreFilenameClear::GetClearFilenameIfPossible(const std::string& alternative) const +{ + if(mClearFilename.empty() && !(sBlowfishDecrypt.IsInitialised())) + { + // encrypted and cannot decrypt + return alternative; + } + else + { + return GetClearFilename(); + } +} #endif // -------------------------------------------------------------------------- @@ -167,7 +179,7 @@ void BackupStoreFilenameClear::MakeClearAvailable() const switch(encoding) { case Encoding_Clear: - BOX_TRACE("**** BackupStoreFilename encoded with " + BOX_WARNING("**** BackupStoreFilename encoded with " "Clear encoding ****"); mClearFilename.assign(GetEncodedFilename().c_str() + 2, size - 2); diff --git a/lib/backupstore/BackupStoreFilenameClear.h b/lib/backupstore/BackupStoreFilenameClear.h index d4c45701..595d1158 100644 --- a/lib/backupstore/BackupStoreFilenameClear.h +++ b/lib/backupstore/BackupStoreFilenameClear.h @@ -38,6 +38,7 @@ public: const std::string GetClearFilename() const; #else const std::string &GetClearFilename() const; + const std::string &GetClearFilenameIfPossible(const std::string& alternative) const; #endif void SetClearFilename(const std::string &rToEncode); -- cgit v1.2.3