diff --git a/CompressionManager.cpp b/CompressionManager.cpp index 27a2435..0c934b8 100644 --- a/CompressionManager.cpp +++ b/CompressionManager.cpp @@ -23,9 +23,6 @@ CompressionManager::CompressionManager() :cctx(ZSTD_createCCtx()) ,dctx(ZSTD_createDCtx()) { - // Tu ustawienia pod kompresję - const int level = COMPRESSION_LEVEL; - // Ustawienia frameless size_t rc = 0; @@ -42,7 +39,7 @@ CompressionManager::CompressionManager() rc |= ZSTD_CCtx_setParameter(cctx, ZSTD_c_dictIDFlag, 0); // Ustawia poziom kompresji - rc |= ZSTD_CCtx_setParameter(cctx, ZSTD_c_compressionLevel, level); + rc |= ZSTD_CCtx_setParameter(cctx, ZSTD_c_compressionLevel, zstd::compression_level); if (ZSTD_isError(rc)) { std::cerr << "ZSTD_CCtx_setParameter error" << std::endl; diff --git a/CompressionManager.h b/CompressionManager.h index 83eef36..5f747fb 100644 --- a/CompressionManager.h +++ b/CompressionManager.h @@ -30,7 +30,10 @@ #error "Wymagane zstd >= 1.4.0 dla ZSTD_c_format / ZSTD_f_zstd1_magicless" #endif -#define COMPRESSION_LEVEL 3 +namespace zstd +{ + inline constexpr short compression_level = 3; +} class CompressionManager { diff --git a/CreateCargo.cpp b/CreateCargo.cpp index b24a880..fe6f7aa 100644 --- a/CreateCargo.cpp +++ b/CreateCargo.cpp @@ -22,7 +22,6 @@ CreateCargo::CreateCargo() : signature(fl::sigpak) , extension(fl::extpak) - , version(VERSION) , methodFlags(0) , xxhState(XXH64_createState()) , offset(0) @@ -133,11 +132,11 @@ bool CreateCargo::GetFileList(const std::string& path) { if (FindOnTheList(zipList, fileRef) || CheckFileExtension(fileRef, zipList)) { - pc.parameter = FindOnTheList(encList, fileRef) || CheckFileExtension(fileRef, encList) ? FILE_FLAG_ZIPENC : FILE_FLAG_COMPRESS; + pc.parameter = FindOnTheList(encList, fileRef) || CheckFileExtension(fileRef, encList) ? flag::ezd : flag::zip; } else { - pc.parameter = FindOnTheList(encList, fileRef) || CheckFileExtension(fileRef, encList) ? FILE_FLAG_ENCRYPT : FILE_FLAG_RAW; + pc.parameter = FindOnTheList(encList, fileRef) || CheckFileExtension(fileRef, encList) ? flag::enc : flag::raw; } pc.path = PathToUnixLike(tmpPath); std::cout << pc.path << " - " << pc.parameter << std::endl; diff --git a/CreateCargo.h b/CreateCargo.h index 958dcf2..279930f 100644 --- a/CreateCargo.h +++ b/CreateCargo.h @@ -72,7 +72,6 @@ public: private: const std::string signature; const std::string extension; - const signed char version; uint8_t methodFlags; diff --git a/DataStruct.h b/DataStruct.h index 75f5a79..91bf253 100644 --- a/DataStruct.h +++ b/DataStruct.h @@ -22,37 +22,15 @@ #include #include -#define EXTENSION "pak" -#define SIGNATURE "XPAK" - -#define SIGNATURE_KEY_FILE "XKEY" - -#define VERSION 0x03 - -// Wielkość pojedynczego bloku strumienia -#define CHUNK_STREAM_512KB 524288 // 512KB -#define CHUNK_STREAM_16MB 16777216 // 16MB -#define CHUNK_STREAM_256MB 268435456 // 256MB - -// Rozmiar pojedynczego bloku -#define CHUNK_BLOCK_SIZE 131072 // 128KB - -#define FILE_FLAG_RAW 0x00 -#define FILE_FLAG_COMPRESS 0x0F -#define FILE_FLAG_ENCRYPT 0xF0 -#define FILE_FLAG_ZIPENC 0xFF - -#define FILE_FLAG_FILTERING 0xAB - -//Prgoram title -#define PROGRAM_TITLE "eXtendet PAK" -#define PROGRAM_VERSION "v0.5" -#define PROGRAM_AUTHOR "Yanczi" -#define PROGRAM_COMPILING "19 December 2025" -#define PROGRAM_LICENSE "GNU LGPL v3" +namespace ui +{ + inline constexpr std::string_view title = "exPak"; + inline constexpr std::string_view ver = "0.5"; +} // Pliki -namespace fl { +namespace fl +{ inline constexpr std::string_view sigpak = "XPAK"; inline constexpr std::string_view sigkey = "XKEY"; diff --git a/EncryptionManager.cpp b/EncryptionManager.cpp index 832d6e5..a44085e 100644 --- a/EncryptionManager.cpp +++ b/EncryptionManager.cpp @@ -67,9 +67,6 @@ void EncryptionManager::generateKeys() void EncryptionManager::saveKey(const std::string& path, bool hpp) { - const std::string sig = SIGNATURE_KEY_FILE; - const int8_t ver = VERSION; - // Wygeneruj time stamp std::time_t now = std::time(nullptr); const int time = static_cast(now); @@ -78,14 +75,13 @@ void EncryptionManager::saveKey(const std::string& path, bool hpp) std::vector keyVec(reinterpret_cast(key.data()), reinterpret_cast(key.data()) + key.size()); - const uint64_t crcKey = XXH64(keyVec.data(), keyVec.size(), VERSION); + const uint64_t crcKey = XXH64(keyVec.data(), keyVec.size(), 0); // Zapisz ten śmietnik do pliku KEY std::ofstream file(path + ".key", std::ios::binary); if (!file) { std::cout << "Failed to save encryption key to file" << std::endl; } - file.write(sig.data(), sig.length()); - file.write(reinterpret_cast(&ver), sizeof(ver)); + file.write(fl::sigkey.data(), fl::sigkey.length()); file.write(reinterpret_cast(&time), sizeof(time)); file.write(reinterpret_cast(keyVec.data()), keyVec.size()); file.write(reinterpret_cast(&crcKey), sizeof(crcKey)); @@ -102,7 +98,7 @@ void EncryptionManager::saveCppHeadFile(const std::string& path) std::ofstream file(path + ".hpp"); - file << "// Plik wygenerowany przez " << PROGRAM_TITLE << " " << PROGRAM_VERSION << std::endl; + file << "// Plik wygenerowany przez " << ui::title << " " << ui::ver << std::endl; file << std::endl; file << std::endl; file << "#pragma once" << std::endl; @@ -137,18 +133,15 @@ std::string EncryptionManager::toHex(const unsigned char* data, size_t len) void EncryptionManager::loadKey(const std::string& path) { std::ifstream file(path + ".key", std::ios::binary); - - const std::string signature = SIGNATURE_KEY_FILE; - std::vector sig(signature.size()); + std::vector sig(fl::sigkey.size()); int8_t ver; int time; // Wczytaj file.read(sig.data(), sig.size()); - file.read(reinterpret_cast(&ver), sizeof(ver)); // Sprawdź czy plik klucza jest poprawny - if (std::string(sig.begin(), sig.end()) != signature || ver != VERSION) + if (std::string(sig.begin(), sig.end()) != fl::sigkey) { throw std::runtime_error("Invalid key file!"); } @@ -161,7 +154,7 @@ void EncryptionManager::loadKey(const std::string& path) file.read(reinterpret_cast(&crcKey), sizeof(crcKey)); // Sprawdź integralność klucza - if (XXH64(keyVec.data(), keyVec.size(), VERSION) != crcKey) + if (XXH64(keyVec.data(), keyVec.size(), 0) != crcKey) { throw std::runtime_error("Key integrity error!"); } diff --git a/ExtractCargo.cpp b/ExtractCargo.cpp index 3d1398a..c944347 100644 --- a/ExtractCargo.cpp +++ b/ExtractCargo.cpp @@ -23,7 +23,7 @@ ExtractCargo::ExtractCargo() :filesLen(0) , tablePosition(0) , xxhState(XXH64_createState()) - , signature(SIGNATURE) + , signature(fl::sigpak) { // TODO Auto-generated constructor stub XXH64_reset(xxhState, 0); diff --git a/ViewCargo.cpp b/ViewCargo.cpp index ed04866..9b95d12 100644 --- a/ViewCargo.cpp +++ b/ViewCargo.cpp @@ -59,8 +59,7 @@ bool ViewCargo::ViewFiles(const std::string& path) uint64_t tabPos = 0; uint32_t tabSize = 0; - const std::string signature = SIGNATURE; - std::vector magic(signature.length()); + std::vector magic(fl::sigpak.length()); int8_t cargoVer = 0; std::ifstream cargo(path, std::ios::binary); @@ -82,7 +81,7 @@ bool ViewCargo::ViewFiles(const std::string& path) cargo.read(reinterpret_cast(&tabSize), sizeof(tabSize)); //Sprawdź czy kontener ma poprawną sygnature - if (std::string(magic.begin(), magic.end()) != signature) + if (std::string(magic.begin(), magic.end()) != fl::sigpak) { std::cerr << "Error: Corrupted Cargo" << std::endl; cargo.close(); @@ -129,15 +128,15 @@ void ViewCargo::ShowFile(const std::string& file, const uint8_t& flag) // Ustawianie checkboxów switch (flag) { - case FILE_FLAG_COMPRESS: + case flag::zip: compresedCheck = "[x]"; break; - case FILE_FLAG_ENCRYPT: + case flag::enc: encryptedCheck = "[x]"; break; - case FILE_FLAG_ZIPENC: + case flag::ezd: compresedCheck = "[x]"; encryptedCheck = "[x]"; break; diff --git a/voidcmd.cpp b/voidcmd.cpp index eb20331..22e1520 100644 --- a/voidcmd.cpp +++ b/voidcmd.cpp @@ -80,16 +80,16 @@ static bool EmptyPath(std::string path) } int main(int argc, char* argv[]) { - std::string path = ""; - - std::cout << PROGRAM_VERSION << " Release " << PROGRAM_COMPILING << std::endl; - std::cout << "Author: " << PROGRAM_AUTHOR << std::endl; - std::cout << "License: " << PROGRAM_LICENSE << "\n" << std::endl; + std::cout << ui::title << std::endl << "ver. " << ui::ver << std::endl; + std::cout << "Author: Yanczi" << std::endl; + std::cout << "License: GNU LGPL v3" << "\n" << std::endl; CreateCargo cargo; ExtractCargo extract; ViewCargo viewCargo; + std::string path = ""; + for (int i = 0; i < argc; ++i) { std::string arg = argv[i];