diff options
| author | Luzifix <luzifix19@gmail.com> | 2022-06-09 17:58:35 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-09 17:58:35 +0200 |
| commit | b11574871e11e5e34b59e1d89b7fcad428fdfb56 (patch) | |
| tree | 298b28488793896c1191785e8f42c37283db6382 /src/tools/extractor_common | |
| parent | 69d960b63f25e83f7f7c6055c4179d0381d7f34e (diff) | |
Tools/Extractors: Implement remote casc mode (#27993)
Diffstat (limited to 'src/tools/extractor_common')
| -rw-r--r-- | src/tools/extractor_common/CascHandles.cpp | 23 | ||||
| -rw-r--r-- | src/tools/extractor_common/CascHandles.h | 1 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/tools/extractor_common/CascHandles.cpp b/src/tools/extractor_common/CascHandles.cpp index b3f43ce42e8..c6de59cda38 100644 --- a/src/tools/extractor_common/CascHandles.cpp +++ b/src/tools/extractor_common/CascHandles.cpp @@ -190,6 +190,29 @@ CASC::Storage* CASC::Storage::Open(boost::filesystem::path const& path, uint32 l return storage; } +CASC::Storage* CASC::Storage::OpenRemote(boost::filesystem::path const& path, uint32 localeMask, char const* product, char const* region) +{ + HANDLE handle = nullptr; + std::string cacheArgument = std::string(path.string() + ":" + product + ":" + region); + + printf("Open casc remote storage...\n"); + if (!::CascOpenOnlineStorage(cacheArgument.c_str(), localeMask, &handle)) + { + DWORD lastError = GetCascError(); // support checking error set by *Open* call, not the next *Close* + printf("Error opening remote casc storage: %s\n", HumanReadableCASCError(lastError)); + CascCloseStorage(handle); + SetCascError(lastError); + return nullptr; + } + + Storage* storage = new Storage(handle); + + if (!storage->LoadOnlineTactKeys()) + printf("Failed to load additional encryption keys from wow.tools, some files might not be extracted.\n"); + + return storage; +} + uint32 CASC::Storage::GetBuildNumber() const { CASC_STORAGE_PRODUCT product; diff --git a/src/tools/extractor_common/CascHandles.h b/src/tools/extractor_common/CascHandles.h index 51f781a49f9..fcd890f59b6 100644 --- a/src/tools/extractor_common/CascHandles.h +++ b/src/tools/extractor_common/CascHandles.h @@ -41,6 +41,7 @@ namespace CASC ~Storage(); static Storage* Open(boost::filesystem::path const& path, uint32 localeMask, char const* product); + static Storage* OpenRemote(boost::filesystem::path const& path, uint32 localeMask, char const* product, char const* region); uint32 GetBuildNumber() const; uint32 GetInstalledLocalesMask() const; |
