Compare commits

..

2 commits

16 changed files with 86 additions and 575 deletions

View file

@ -20,7 +20,7 @@ std::vector<char> ChunkManager::chunked(const std::vector<char>& raw, const bool
const size_t maxBlockSize = BLOCK_SIZE; const size_t maxBlockSize = BLOCK_SIZE;
const size_t rawSize = raw.size(); const size_t rawSize = raw.size();
uint16_t blockLen = 0; uint32_t blockLen = 0;
uint32_t lastChunkRawSize; uint32_t lastChunkRawSize;
std::vector<char> compressedBlocks; std::vector<char> compressedBlocks;
for (size_t offset = 0; offset < rawSize; offset += maxBlockSize) for (size_t offset = 0; offset < rawSize; offset += maxBlockSize)
@ -45,8 +45,8 @@ std::vector<char> ChunkManager::chunked(const std::vector<char>& raw, const bool
// Zmiana rozmiaru do faktycznego rozmiaru po kompresji // Zmiana rozmiaru do faktycznego rozmiaru po kompresji
zipChunk.resize(zipSize); zipChunk.resize(zipSize);
uint32_t chs = chunk.size(); uint32_t chs = static_cast<uint32_t>(chunk.size());
uint32_t zch = outChunk.size(); uint32_t zch = static_cast<uint32_t>(outChunk.size());
//addIntToVector<uint32_t>(compressedBlocks, chs); //addIntToVector<uint32_t>(compressedBlocks, chs);
lastChunkRawSize = chs; lastChunkRawSize = chs;
@ -60,7 +60,7 @@ std::vector<char> ChunkManager::chunked(const std::vector<char>& raw, const bool
// Wstaw liczbê o iloœci bloków do vectora; // Wstaw liczbê o iloœci bloków do vectora;
// Przekonpwertuj usigned int32 na ci¹g znkaów // Przekonpwertuj usigned int32 na ci¹g znkaów
// uint16_t blockLen = blockSizes .size(); // uint16_t blockLen = blockSizes .size();
addIntToVector<uint16_t>(zip, blockLen); addIntToVector<uint32_t>(zip, blockLen);
addIntToVector<uint32_t>(zip, maxBlockSize); addIntToVector<uint32_t>(zip, maxBlockSize);
addIntToVector<uint32_t>(zip, lastChunkRawSize); addIntToVector<uint32_t>(zip, lastChunkRawSize);
@ -78,7 +78,7 @@ std::vector<char> ChunkManager::chunked(const std::vector<char>& raw, const bool
std::vector<char> ChunkManager::dechunked(const std::vector<char>& zip, const bool& compress, const bool& encrypt) std::vector<char> ChunkManager::dechunked(const std::vector<char>& zip, const bool& compress, const bool& encrypt)
{ {
size_t offset = 0; size_t offset = 0;
const uint16_t chunkLen = getIntFromVector<uint16_t>(zip, offset); const uint32_t chunkLen = getIntFromVector<uint32_t>(zip, offset);
const uint32_t chunkBeforeSize = getIntFromVector<uint32_t>(zip, offset); const uint32_t chunkBeforeSize = getIntFromVector<uint32_t>(zip, offset);
const uint32_t chunkLastSize = getIntFromVector<uint32_t>(zip, offset); const uint32_t chunkLastSize = getIntFromVector<uint32_t>(zip, offset);

View file

@ -38,7 +38,7 @@ CreateCargo::~CreateCargo() {
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Punk wejścia do tworzenia archivum // Punk wejścia do tworzenia archivum
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool CreateCargo::Create(const std::string& path, const short& flag) bool CreateCargo::Create(const std::string& path, const uint8_t& flag)
{ {
cargoFile = path + "." + extension; cargoFile = path + "." + extension;
catalogPath = path; catalogPath = path;
@ -88,9 +88,9 @@ bool CreateCargo::Create(const std::string& path, const short& flag)
} }
// Zapisywanie klucza szyfrującego // Zapisywanie klucza szyfrującego
if (flag == 2 || flag == 3 || encList.size() > 0) if (flag == FILE_FLAG_ENCRYPT || flag == FILE_FLAG_ZIPENC || encList.size() > 0)
{ {
crypt.saveKey(catalogPath, hppKey); eman.saveKey(catalogPath, hppKey);
} }
return true; return true;
@ -119,7 +119,7 @@ bool CreateCargo::GetFileList(const std::string& path)
else else
{ {
PathConf pc; PathConf pc;
if (methodFlags > -1) if (methodFlags != 0xAB)
{ {
pc.path = PathToUnixLike(tmpPath); pc.path = PathToUnixLike(tmpPath);
pc.parameter = methodFlags; pc.parameter = methodFlags;
@ -184,9 +184,8 @@ CargoHead CreateCargo::CreateCargoHead(const uint32_t& filesLen, const uint64_t&
CargoHead ch; CargoHead ch;
ch.signature = signature; ch.signature = signature;
ch.version = version;
ch.files = filesLen;
ch.table = table; ch.table = table;
ch.files = filesLen;
return ch; return ch;
} }
@ -194,11 +193,11 @@ CargoHead CreateCargo::CreateCargoHead(const uint32_t& filesLen, const uint64_t&
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Sprawdza czy plik znajduje się na liście // Sprawdza czy plik znajduje się na liście
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CreateCargo::computingBytes(const int8_t& flag, std::vector<char>& input, std::vector<char>& output) void CreateCargo::computingBytes(const uint8_t& flag, std::vector<char>& input, std::vector<char>& output)
{ {
//Flaga aktywna sprawdza czy plik jest na liście. Jeśli jest to zwraca surowedane //Flaga aktywna sprawdza czy plik jest na liście. Jeśli jest to zwraca surowedane
//Przeciwnie kompresuje dane //Przeciwnie kompresuje dane
ChunkManager cm(crypt); ChunkManager cm(eman);
switch (flag) switch (flag)
{ {
@ -214,10 +213,6 @@ void CreateCargo::computingBytes(const int8_t& flag, std::vector<char>& input, s
output = cm.chunked(input, true, true); output = cm.chunked(input, true, true);
break; break;
case FILE_FLAG_RAW:
output = cm.chunked(input, false, false);
break;
default: default:
output = std::move(input); output = std::move(input);
break; break;
@ -231,13 +226,12 @@ std::vector<FilesTable> CreateCargo::ComputingHeadFiles()
{ {
//Utwórz header TMP. Zabezpiecza Pierwsze bajty na właściwy nagłówek //Utwórz header TMP. Zabezpiecza Pierwsze bajty na właściwy nagłówek
CargoHead cargoHead = CreateCargoHead(0, 0); CargoHead cargoHead = CreateCargoHead(0, 0);
offset += cargoHead.signature.length() + sizeof(cargoHead.version) + sizeof(cargoHead.files) + sizeof(cargoHead.table); offset += cargoHead.signature.length() + sizeof(cargoHead.files) + sizeof(cargoHead.table);
//Zapisanie tymczasowego nagłowka jako rezerwacja miejsca //Zapisanie tymczasowego nagłowka jako rezerwacja miejsca
cargo.write(cargoHead.signature.data(), cargoHead.signature.length()); cargo.write(cargoHead.signature.data(), cargoHead.signature.length());
cargo.write(reinterpret_cast<const char*>(&cargoHead.version), sizeof(cargoHead.version));
cargo.write(reinterpret_cast<const char*>(&cargoHead.files), sizeof(cargoHead.files));
cargo.write(reinterpret_cast<const char*>(&cargoHead.table), sizeof(cargoHead.table)); cargo.write(reinterpret_cast<const char*>(&cargoHead.table), sizeof(cargoHead.table));
cargo.write(reinterpret_cast<const char*>(&cargoHead.files), sizeof(cargoHead.files));
std::vector<FilesTable> filesTable; std::vector<FilesTable> filesTable;
@ -269,13 +263,14 @@ std::vector<FilesTable> CreateCargo::ComputingHeadFiles()
std::vector<char> pakBuffer; std::vector<char> pakBuffer;
computingBytes(file.parameter, buffer, pakBuffer); computingBytes(file.parameter, buffer, pakBuffer);
std::cout << static_cast<int>(file.parameter) << std::endl;
FilesTable ft; FilesTable ft;
ft.nameFile = path; ft.nameFile = path;
ft.nameLen = path.length(); ft.nameLen = path.length();
ft.hashName = fnv64(path);
ft.offset = offset; ft.offset = offset;
ft.size = pakBuffer.size(); ft.size = pakBuffer.size();
ft.flag = static_cast<int8_t>(file.parameter); ft.flag = file.parameter;
ft.crc = crc; ft.crc = crc;
cargo.write(reinterpret_cast<const char*>(pakBuffer.data()), pakBuffer.size()); cargo.write(reinterpret_cast<const char*>(pakBuffer.data()), pakBuffer.size());
@ -358,24 +353,6 @@ std::string CreateCargo::UpperString(std::string s) {
return s; return s;
} }
//-----------------------------------------------------------------------------
// Wygenerój FNV-1a HASH
//-----------------------------------------------------------------------------
uint64_t CreateCargo::fnv64(const std::string& data)
{
const uint64_t fnvOffset = 14695981039346656037u;
const uint64_t fnvPrime = 1099511628211u;
uint64_t hash = fnvOffset;
for (unsigned char c : data)
{
hash ^= c;
hash *= fnvPrime;
}
return hash;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Trworzenie archiwum // Trworzenie archiwum
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -402,7 +379,6 @@ bool CreateCargo::WriteCargo()
cargo.write(reinterpret_cast<const char*>(&head.nameLen), sizeof(head.nameLen)); cargo.write(reinterpret_cast<const char*>(&head.nameLen), sizeof(head.nameLen));
cargo.write(head.nameFile.data(), head.nameLen); cargo.write(head.nameFile.data(), head.nameLen);
cargo.write(reinterpret_cast<const char*>(&head.hashName), sizeof(head.hashName));
cargo.write(reinterpret_cast<const char*>(&head.offset), sizeof(head.offset)); cargo.write(reinterpret_cast<const char*>(&head.offset), sizeof(head.offset));
cargo.write(reinterpret_cast<const char*>(&head.size), sizeof(head.size)); cargo.write(reinterpret_cast<const char*>(&head.size), sizeof(head.size));
cargo.write(reinterpret_cast<const char*>(&head.crc), sizeof(head.crc)); cargo.write(reinterpret_cast<const char*>(&head.crc), sizeof(head.crc));
@ -417,9 +393,8 @@ bool CreateCargo::WriteCargo()
//Nadpisz tymczasowy nagłówek //Nadpisz tymczasowy nagłówek
cargo.write(cargoHead.signature.data(), cargoHead.signature.length()); cargo.write(cargoHead.signature.data(), cargoHead.signature.length());
cargo.write(reinterpret_cast<const char*>(&cargoHead.version), sizeof(cargoHead.version));
cargo.write(reinterpret_cast<const char*>(&cargoHead.files), sizeof(cargoHead.files));
cargo.write(reinterpret_cast<const char*>(&cargoHead.table), sizeof(cargoHead.table)); cargo.write(reinterpret_cast<const char*>(&cargoHead.table), sizeof(cargoHead.table));
cargo.write(reinterpret_cast<const char*>(&cargoHead.files), sizeof(cargoHead.files));
cargo.close(); cargo.close();

View file

@ -47,7 +47,7 @@
struct PathConf struct PathConf
{ {
std::string path; std::string path;
int8_t parameter; uint8_t parameter;
}; };
class CreateCargo { class CreateCargo {
@ -56,14 +56,14 @@ public:
virtual ~CreateCargo(); virtual ~CreateCargo();
// Punk wejœcia do tworzenia archivum // Punk wejœcia do tworzenia archivum
bool Create(const std::string&, const short&); bool Create(const std::string&, const uint8_t&);
private: private:
const std::string signature; const std::string signature;
const std::string extension; const std::string extension;
const signed char version; const signed char version;
short methodFlags; uint8_t methodFlags;
std::string catalogPath; std::string catalogPath;
@ -72,7 +72,7 @@ private:
std::vector<std::string> filesList; std::vector<std::string> filesList;
EncryptionManager crypt; EncryptionManager eman;
bool hppKey; bool hppKey;
// listy wyj¹tków // listy wyj¹tków
@ -110,7 +110,7 @@ private:
void GetFilters(const std::string&); void GetFilters(const std::string&);
// Sprawdza czy plik znajduje siê na liœcie // Sprawdza czy plik znajduje siê na liœcie
void computingBytes(const int8_t&, std::vector<char>&, std::vector<char>&); void computingBytes(const uint8_t&, std::vector<char>&, std::vector<char>&);
// Sprawdzanie rozsze¿eñ plików // Sprawdzanie rozsze¿eñ plików
bool CheckFileExtension(const std::string&, const std::vector<std::string>&); bool CheckFileExtension(const std::string&, const std::vector<std::string>&);
@ -118,9 +118,6 @@ private:
// Zamieñ ca³y ci¹g na du¿e litery // Zamieñ ca³y ci¹g na du¿e litery
std::string UpperString(std::string); std::string UpperString(std::string);
// Wygenerój FNV-1a HASH
uint64_t fnv64(const std::string& data);
// ZnajdŸ wskazany element na liœcie // ZnajdŸ wskazany element na liœcie
bool FindOnTheList(const std::vector<std::string>&, const std::string&); bool FindOnTheList(const std::vector<std::string>&, const std::string&);
}; };

View file

@ -34,27 +34,19 @@
#define CHUNK_STREAM_16MB 16777216 // 16MB #define CHUNK_STREAM_16MB 16777216 // 16MB
#define CHUNK_STREAM_256MB 268435456 // 256MB #define CHUNK_STREAM_256MB 268435456 // 256MB
enum StoreMethod #define FILE_FLAG_RAW 0x00
{ #define FILE_FLAG_COMPRESS 0x0F
FILTERING = -1, #define FILE_FLAG_ENCRYPT 0xF0
RAW = 0, #define FILE_FLAG_ZIPENC 0xFF
COMPRESS = 1,
ENCRYPT = 2,
COMPRESSxENCRYPT = 3
};
#define FILE_FLAG_RAW 0x00 #define FILE_FLAG_FILTERING 0xAB
#define FILE_FLAG_COMPRESS 0x01
#define FILE_FLAG_ENCRYPT 0x02
#define FILE_FLAG_ZIPENC 0x03
#define FILE_FLAG_CHUNK 0x04
//Prgoram title //Prgoram title
#define PROGRAM_TITLE "eXtendet PAK" #define PROGRAM_TITLE "eXtendet PAK"
#define PROGRAM_VERSION "v0.4" #define PROGRAM_VERSION "v0.5"
#define PROGRAM_AUTHOR "Yanczi" #define PROGRAM_AUTHOR "Yanczi"
#define PROGRAM_COMPILING "12 December 2025" #define PROGRAM_COMPILING "19 December 2025"
#define PROGRAM_LICENSE "GNU LGPL v3" #define PROGRAM_LICENSE "GNU LGPL v3"
//Limity //Limity
@ -64,18 +56,17 @@ enum StoreMethod
struct CargoHead struct CargoHead
{ {
std::string signature; std::string signature;
int8_t version; uint8_t version;
uint32_t files;
uint64_t table; uint64_t table;
uint32_t files;
}; };
struct FilesTable struct FilesTable
{ {
uint8_t nameLen; uint8_t nameLen;
std::string nameFile; std::string nameFile;
uint64_t hashName;
uint64_t offset; uint64_t offset;
uint64_t size; uint64_t size;
uint64_t crc; uint64_t crc;
int8_t flag; uint8_t flag;
}; };

View file

@ -98,9 +98,10 @@ bool ExtractCargo::CheckCargoFile()
} }
cargoFile.read(magic.data(), magic.size()); cargoFile.read(magic.data(), magic.size());
cargoFile.read(reinterpret_cast<char*>(&cargoVer), sizeof(cargoVer));
cargoFile.read(reinterpret_cast<char*>(&filesLen), sizeof(filesLen)); // Pobierz pozycjê tablicy plików i jej rozmiar
cargoFile.read(reinterpret_cast<char*>(&tablePosition), sizeof(tablePosition)); cargoFile.read(reinterpret_cast<char*>(&tablePosition), sizeof(tablePosition));
cargoFile.read(reinterpret_cast<char*>(&filesLen), sizeof(filesLen));
if (std::string(magic.begin(), magic.end()) != signature) if (std::string(magic.begin(), magic.end()) != signature)
{ {
@ -108,12 +109,6 @@ bool ExtractCargo::CheckCargoFile()
return false; return false;
} }
if (cargoVer != version)
{
std::cerr << "Error: Wrong cargo version" << std::endl;
return false;
}
filesHeadsOffset = signature.length() + sizeof(cargoVer) + sizeof(filesLen); filesHeadsOffset = signature.length() + sizeof(cargoVer) + sizeof(filesLen);
return true; return true;
@ -137,10 +132,12 @@ bool ExtractCargo::HashValid(const std::vector<char>& data, const uint64_t& crc)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Magiczna funkcja do dekompresji i deszyfracji danych // Magiczna funkcja do dekompresji i deszyfracji danych
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void ExtractCargo::computingBytes(const std::vector<char>& input, std::vector<char>& output, const int8_t& flag) void ExtractCargo::computingBytes(const std::vector<char>& input, std::vector<char>& output, const uint8_t& flag)
{ {
ChunkManager cm(eman); ChunkManager cm(eman);
std::cout << static_cast<int>(flag) << std::endl;
switch (flag) switch (flag)
{ {
case FILE_FLAG_COMPRESS: case FILE_FLAG_COMPRESS:
@ -153,10 +150,7 @@ void ExtractCargo::computingBytes(const std::vector<char>& input, std::vector<ch
case FILE_FLAG_ZIPENC: case FILE_FLAG_ZIPENC:
output = cm.dechunked(input, true, true); output = cm.dechunked(input, true, true);
break; std::cout << "DENC" << std::endl;
case FILE_FLAG_CHUNK:
output = cm.dechunked(input, false, false);
break; break;
default: default:
@ -180,7 +174,6 @@ void ExtractCargo::LoadFilesTable()
cargoFile.read(nameBuffor.data(), fhTmp.nameLen); cargoFile.read(nameBuffor.data(), fhTmp.nameLen);
fhTmp.nameFile = std::string(nameBuffor.begin(), nameBuffor.end()); fhTmp.nameFile = std::string(nameBuffor.begin(), nameBuffor.end());
cargoFile.read(reinterpret_cast<char*>(&fhTmp.hashName), sizeof(fhTmp.hashName));
cargoFile.read(reinterpret_cast<char*>(&fhTmp.offset), sizeof(fhTmp.offset)); cargoFile.read(reinterpret_cast<char*>(&fhTmp.offset), sizeof(fhTmp.offset));
cargoFile.read(reinterpret_cast<char*>(&fhTmp.size), sizeof(fhTmp.size)); cargoFile.read(reinterpret_cast<char*>(&fhTmp.size), sizeof(fhTmp.size));
cargoFile.read(reinterpret_cast<char*>(&fhTmp.crc), sizeof(fhTmp.crc)); cargoFile.read(reinterpret_cast<char*>(&fhTmp.crc), sizeof(fhTmp.crc));

View file

@ -76,6 +76,6 @@ private:
void CreateDirections(std::filesystem::path); void CreateDirections(std::filesystem::path);
// Magiczna funkcja do dekompresji i deszyfracji danych // Magiczna funkcja do dekompresji i deszyfracji danych
void computingBytes(const std::vector<char>&, std::vector<char>&, const int8_t&); void computingBytes(const std::vector<char>&, std::vector<char>&, const uint8_t&);
}; };

View file

@ -20,14 +20,7 @@
#include "ViewCargo.h" #include "ViewCargo.h"
ViewCargo::ViewCargo() ViewCargo::ViewCargo()
:signature(SIGNATURE) {}
, version(VERSION)
, filesLen(0)
, tablePos(0)
{
std::vector<std::string> header = {"Comress", "Encrypt", "Path", "RefHASH"};
list.push_back(header);
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Wywoływanie // Wywoływanie
@ -49,26 +42,24 @@ bool ViewCargo::View(const std::string& path)
} }
//Sprawdź czy kontener jest prawidłowy //Sprawdź czy kontener jest prawidłowy
if (!CheckCargoFile(path)) if (!ViewFiles(path))
{ {
std::cerr << "Nie prawidlowa struktura kontenera Void" << std::endl; std::cerr << "Nie prawidlowa struktura kontenera Void" << std::endl;
return false; return false;
} }
//Pobieranie listy plików
GetFileList(path);
//Renderowanie listy plików
RenderList();
return true; return true;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Sprawdzenie poprawności kontenera // Sprawdzenie poprawności kontenera
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool ViewCargo::CheckCargoFile(const std::string& path) bool ViewCargo::ViewFiles(const std::string& path)
{ {
uint64_t tabPos = 0;
uint32_t tabSize = 0;
const std::string signature = SIGNATURE;
std::vector<char> magic(signature.length()); std::vector<char> magic(signature.length());
int8_t cargoVer = 0; int8_t cargoVer = 0;
@ -81,15 +72,14 @@ bool ViewCargo::CheckCargoFile(const std::string& path)
} }
//--------------------------------------------------------------- //---------------------------------------------------------------
// Odczytywanie pierwszych 11 bajtów nag³ówka pliku // Odczytywanie pierwszych 16 bajtów nag³ówka pliku
// 6 pierwszych to sygnatura // 4 Sygnatura kontenera XPAK
// 1 wersja kontenera // 8 Offset tablicy plików
// 4 iloœæ plików w kontenerze // 4 Rozmiar tablicy plików
//--------------------------------------------------------------- //---------------------------------------------------------------
cargo.read(magic.data(), magic.size()); cargo.read(magic.data(), magic.size());
cargo.read(reinterpret_cast<char*>(&cargoVer), sizeof(cargoVer)); cargo.read(reinterpret_cast<char*>(&tabPos), sizeof(tabPos));
cargo.read(reinterpret_cast<char*>(&filesLen), sizeof(filesLen)); cargo.read(reinterpret_cast<char*>(&tabSize), sizeof(tabSize));
cargo.read(reinterpret_cast<char*>(&tablePos), sizeof(tablePos));
//Sprawdź czy kontener ma poprawną sygnature //Sprawdź czy kontener ma poprawną sygnature
if (std::string(magic.begin(), magic.end()) != signature) if (std::string(magic.begin(), magic.end()) != signature)
@ -99,28 +89,13 @@ bool ViewCargo::CheckCargoFile(const std::string& path)
return false; return false;
} }
//SprawdŸ spójnoœæ wersji kontenera std::cout << "ZIP" << " " << "ENC" << " " << "Path" << std::endl;
if (cargoVer != version)
{
std::cerr << "Error: Wrong cargo version" << std::endl;
cargo.close();
return false;
}
cargo.close(); // Przeskocz do tablicy plików
cargo.seekg(tabPos);
return true; // Za³aduj dane o plikach
} for (uint32_t i = 0; i < tabSize; ++i)
//-----------------------------------------------------------------------------
// Pobieranie listy plików z kontenera
//-----------------------------------------------------------------------------
void ViewCargo::GetFileList(const std::string& path)
{
std::ifstream cargo(path, std::ios::binary);
cargo.seekg(tablePos);
for (uint32_t i = 0; i < filesLen; ++i)
{ {
FilesTable fhTmp; FilesTable fhTmp;
cargo.read(reinterpret_cast<char*>(&fhTmp.nameLen), sizeof(fhTmp.nameLen)); cargo.read(reinterpret_cast<char*>(&fhTmp.nameLen), sizeof(fhTmp.nameLen));
@ -129,74 +104,50 @@ void ViewCargo::GetFileList(const std::string& path)
cargo.read(nameBuffor.data(), fhTmp.nameLen); cargo.read(nameBuffor.data(), fhTmp.nameLen);
fhTmp.nameFile = std::string(nameBuffor.begin(), nameBuffor.end()); fhTmp.nameFile = std::string(nameBuffor.begin(), nameBuffor.end());
cargo.read(reinterpret_cast<char*>(&fhTmp.hashName), sizeof(fhTmp.hashName));
cargo.read(reinterpret_cast<char*>(&fhTmp.offset), sizeof(fhTmp.offset)); cargo.read(reinterpret_cast<char*>(&fhTmp.offset), sizeof(fhTmp.offset));
cargo.read(reinterpret_cast<char*>(&fhTmp.size), sizeof(fhTmp.size)); cargo.read(reinterpret_cast<char*>(&fhTmp.size), sizeof(fhTmp.size));
cargo.read(reinterpret_cast<char*>(&fhTmp.crc), sizeof(fhTmp.crc)); cargo.read(reinterpret_cast<char*>(&fhTmp.crc), sizeof(fhTmp.crc));
cargo.read(reinterpret_cast<char*>(&fhTmp.flag), sizeof(fhTmp.flag)); cargo.read(reinterpret_cast<char*>(&fhTmp.flag), sizeof(fhTmp.flag));
//Tworzenie wierszy tabeli //Tworzenie wierszy tabeli
CreateTableRow(fhTmp.nameFile, fhTmp.flag, fhTmp.hashName); ShowFile(fhTmp.nameFile, fhTmp.flag);
} }
cargo.close(); cargo.close();
tui.table(list);
return true;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Generowanie wierszy do tabeli // Generowanie wierszy do tabeli
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void ViewCargo::CreateTableRow(const std::string& file, const uint8_t& flag, const uint64_t& hash) void ViewCargo::ShowFile(const std::string& file, const uint8_t& flag)
{ {
//Zamiania crc liczbowej na hex string std::string compresedCheck = "[ ]";
std::stringstream ss; std::string encryptedCheck = "[ ]";
ss << "0x" << std::hex << std::uppercase << hash;
//Lista
std::vector<std::string> tmpList = { "[ ]", "[ ]", file, ss.str() };
std::vector<ftxui::Element> cell;
ftxui::Element eZip;
ftxui::Element eEnc;
// Ustawianie checkboxów // Ustawianie checkboxów
switch (flag) switch (flag)
{ {
case FILE_FLAG_COMPRESS: case FILE_FLAG_COMPRESS:
//eZip = ftxui::text(" [x] ") | ftxui::color(ftxui::Color::Cyan); compresedCheck = "[x]";
//eEnc = ftxui::text(" [ ] ") | ftxui::color(ftxui::Color::White);
tmpList[0] = "[x]";
break; break;
case FILE_FLAG_ENCRYPT: case FILE_FLAG_ENCRYPT:
tmpList[1] = "[x]"; encryptedCheck = "[x]";
break; break;
case FILE_FLAG_ZIPENC: case FILE_FLAG_ZIPENC:
tmpList[0] = "[x]"; compresedCheck = "[x]";
tmpList[1] = "[x]"; encryptedCheck = "[x]";
break; break;
default: default:
tmpList[0] = "[ ]"; compresedCheck = "[ ]";
tmpList[1] = "[ ]"; encryptedCheck = "[ ]";
break; break;
} }
//Dodanie wiersza do listy // Wyœwietlanie
list.push_back(tmpList); std::cout << compresedCheck << " " << encryptedCheck << " " << file << std::endl;
}
//-----------------------------------------------------------------------------
// Renderowanie listy plików
//-----------------------------------------------------------------------------
void ViewCargo::RenderList()
{
//Dodawanie wierszy do kolumn
ftxui::Element table = ftxui::vbox(std::move(filesList));
auto screen = ftxui::Screen::Create(ftxui::Dimension::Fit(table));
ftxui::Render(screen, table);
screen.Print();
} }

View file

@ -30,7 +30,6 @@
#include <ftxui/dom/table.hpp> #include <ftxui/dom/table.hpp>
#include "DataStruct.h" #include "DataStruct.h"
#include "Tui.h"
class ViewCargo { class ViewCargo {
public: public:
@ -40,19 +39,8 @@ public:
bool View(const std::string&); bool View(const std::string&);
private: private:
Tui tui; bool ViewFiles(const std::string&);
const std::string signature; void ShowFile(const std::string&, const uint8_t&);
const uint16_t version;
uint32_t filesLen;
uint64_t tablePos;
std::vector<ftxui::Element> filesList;
std::vector<std::vector<std::string>> list;
bool CheckCargoFile(const std::string&);
void GetFileList(const std::string&);
void RenderList();
void CreateTableRow(const std::string&, const uint8_t&, const uint64_t&);
}; };

View file

@ -1,251 +1,126 @@
Nam strzelać nie kazano. - Wstąpiłem na działo Nam strzelać nie kazano. - Wstąpiłem na działo
I spójrzałem na pole; dwieście armat grzmiało. I spójrzałem na pole; dwieście armat grzmiało.
Artyleryi ruskiej ciągną się szeregi, Artyleryi ruskiej ciągną się szeregi,
Prosto, długo, daleko, jako morza brzegi; Prosto, długo, daleko, jako morza brzegi;
I widziałem ich wodza: przybiegł, mieczem skinął I widziałem ich wodza: przybiegł, mieczem skinął
I jak ptak jedno skrzydło wojska swego zwinął; I jak ptak jedno skrzydło wojska swego zwinął;
Wylewa się spod skrzydła ściśniona piechota Wylewa się spod skrzydła ściśniona piechota
Długą czarną kolumną, jako lawa błota, Długą czarną kolumną, jako lawa błota,
Nasypana iskrami bagnetów. Jak sępy Nasypana iskrami bagnetów. Jak sępy
Czarne chorągwie na śmierć prowadzą zastępy. Czarne chorągwie na śmierć prowadzą zastępy.
Przeciw nim sterczy biała, wąska, zaostrzona, Przeciw nim sterczy biała, wąska, zaostrzona,
Jak głaz bodzący morze, reduta Ordona. Jak głaz bodzący morze, reduta Ordona.
Sześć tylko miała armat; wciąż dymią i świecą; Sześć tylko miała armat; wciąż dymią i świecą;
I nie tyle prędkich słów gniewne usta miecą, I nie tyle prędkich słów gniewne usta miecą,
Nie tyle przejdzie uczuć przez duszę w rozpaczy, Nie tyle przejdzie uczuć przez duszę w rozpaczy,
Ile z tych dział leciało bomb, kul i kartaczy. Ile z tych dział leciało bomb, kul i kartaczy.
Patrz, tam granat w sam środek kolumny się nurza, Patrz, tam granat w sam środek kolumny się nurza,
Jak w fale bryła lawy, pułk dymem zachmurza; Jak w fale bryła lawy, pułk dymem zachmurza;
Pęka śród dymu granat, szyk pod niebo leci Pęka śród dymu granat, szyk pod niebo leci
I ogromna łysina śród kolumny świeci. I ogromna łysina śród kolumny świeci.
Tam kula, lecąc, z dala grozi, szumi, wyje. Tam kula, lecąc, z dala grozi, szumi, wyje.
Ryczy jak byk przed bitwą, miota się, grunt ryje; - Ryczy jak byk przed bitwą, miota się, grunt ryje; -
Już dopadła; jak boa śród kolumn się zwija, Już dopadła; jak boa śród kolumn się zwija,
Pali piersią, rwie zębem, oddechem zabija. Pali piersią, rwie zębem, oddechem zabija.
Najstraszniejszej nie widać, lecz słychać po dźwięku, Najstraszniejszej nie widać, lecz słychać po dźwięku,
Po waleniu się trupów, po ranionych jęku: Po waleniu się trupów, po ranionych jęku:
Gdy kolumnę od końca do końca przewierci, Gdy kolumnę od końca do końca przewierci,
Jak gdyby środkiem wojska przeszedł anioł śmierci. Jak gdyby środkiem wojska przeszedł anioł śmierci.
Gdzież jest król, co na rzezie tłumy te wyprawia? Gdzież jest król, co na rzezie tłumy te wyprawia?
Czy dzieli ich odwagę, czy pierś sam nadstawia? Czy dzieli ich odwagę, czy pierś sam nadstawia?
Nie, on siedzi o pięćset mil na swej stolicy, Nie, on siedzi o pięćset mil na swej stolicy,
Król wielki, samowładnik świata połowicy; Król wielki, samowładnik świata połowicy;
Zmarszczył brwi, - i tysiące kibitek wnet leci; Zmarszczył brwi, - i tysiące kibitek wnet leci;
Podpisał, - tysiąc matek opłakuje dzieci; Podpisał, - tysiąc matek opłakuje dzieci;
Skinął, - padają knuty od Niemna do Chiwy. Skinął, - padają knuty od Niemna do Chiwy.
Mocarzu, jak Bóg silny, jak szatan złośliwy, Mocarzu, jak Bóg silny, jak szatan złośliwy,
Gdy Turków za Bałkanem twoje straszą spiże, Gdy Turków za Bałkanem twoje straszą spiże,
Gdy poselstwo paryskie twoje stopy liże, - Gdy poselstwo paryskie twoje stopy liże, -
Warszawa jedna twojej mocy się urąga, Warszawa jedna twojej mocy się urąga,
Podnosi na cię rękę i koronę ściąga, Podnosi na cię rękę i koronę ściąga,
Koronę Kazimierzów, Chrobrych z twojej głowy, Koronę Kazimierzów, Chrobrych z twojej głowy,
Boś ją ukradł i skrwawił, synu Wasilowy! Boś ją ukradł i skrwawił, synu Wasilowy!
Car dziwi się - ze strachu. drzą Petersburczany, Car dziwi się - ze strachu. drzą Petersburczany,
Car gniewa się - ze strachu mrą jego dworzany; Car gniewa się - ze strachu mrą jego dworzany;
Ale sypią się wojska, których Bóg i wiara Ale sypią się wojska, których Bóg i wiara
Jest Car. - Car gniewny: umrzem, rozweselim Cara. Jest Car. - Car gniewny: umrzem, rozweselim Cara.
Posłany wódz kaukaski z siłami pół-świata, Posłany wódz kaukaski z siłami pół-świata,
Wierny, czynny i sprawny - jak knut w ręku kata. Wierny, czynny i sprawny - jak knut w ręku kata.
Ura! ura! Patrz, blisko reduty, już w rowy Ura! ura! Patrz, blisko reduty, już w rowy
Walą się, na faszynę kładąc swe tułowy; Walą się, na faszynę kładąc swe tułowy;
Już czernią się na białych palisadach wałów. Już czernią się na białych palisadach wałów.
Jeszcze reduta w środku, jasna od wystrzałów, Jeszcze reduta w środku, jasna od wystrzałów,
Czerwieni się nad czernią: jak w środek mrowiaka Czerwieni się nad czernią: jak w środek mrowiaka
Wrzucony motyl błyska, - mrowie go naciska, - Wrzucony motyl błyska, - mrowie go naciska, -
Zgasł - tak zgasła reduta. Czyż ostatnie działo Zgasł - tak zgasła reduta. Czyż ostatnie działo
Strącone z łoża w piasku paszczę zagrzebało? Strącone z łoża w piasku paszczę zagrzebało?
Czy zapał krwią ostatni bombardyjer zalał? Czy zapał krwią ostatni bombardyjer zalał?
Zgasnął ogień. - Już Moskal rogatki wywalał. Zgasnął ogień. - Już Moskal rogatki wywalał.
Gdzież ręczna broń? - Ach, dzisiaj pracowała więcej Gdzież ręczna broń? - Ach, dzisiaj pracowała więcej
Niż na wszystkich przeglądach za władzy książęcej; Niż na wszystkich przeglądach za władzy książęcej;
Zgadłem, dlaczego milczy, - bo nieraz widziałem Zgadłem, dlaczego milczy, - bo nieraz widziałem
Garstkę naszych walczącą z Moskali nawałem. Garstkę naszych walczącą z Moskali nawałem.
Gdy godzinę wołano dwa słowa: pal, nabij; Gdy godzinę wołano dwa słowa: pal, nabij;
Gdy oddechy dym tłumi, trud ramiona słabi; Gdy oddechy dym tłumi, trud ramiona słabi;
A wciąż grzmi rozkaz wodzów, wre żołnierza czynność; A wciąż grzmi rozkaz wodzów, wre żołnierza czynność;
Na koniec bez rozkazu pełnią swą powinność, Na koniec bez rozkazu pełnią swą powinność,
Na koniec bez rozwagi, bez czucia, pamięci, Na koniec bez rozwagi, bez czucia, pamięci,
Żołnierz jako młyn palny nabija - grzmi - kręci Żołnierz jako młyn palny nabija - grzmi - kręci
Broń od oka do nogi, od nogi na oko: Broń od oka do nogi, od nogi na oko:
Aż ręka w ładownicy długo i głęboko Aż ręka w ładownicy długo i głęboko
Szukała, nie znalazła - i żołnierz pobladnął, Szukała, nie znalazła - i żołnierz pobladnął,
Nie znalazłszy ładunku, już bronią nie władnął; Nie znalazłszy ładunku, już bronią nie władnął;
I uczuł, że go pali strzelba rozogniona; I uczuł, że go pali strzelba rozogniona;
Upuścił ją i upadł; - nim dobiją, skona. Upuścił ją i upadł; - nim dobiją, skona.
Takem myślił, - a w szaniec nieprzyjaciół kupa Takem myślił, - a w szaniec nieprzyjaciół kupa
Już łazła, jak robactwo na świeżego trupa. Już łazła, jak robactwo na świeżego trupa.
Pociemniało mi w oczach - a gdym łzy ocierał, Pociemniało mi w oczach - a gdym łzy ocierał,
Słyszałem, że coś do mnie mówił mój Jenerał. Słyszałem, że coś do mnie mówił mój Jenerał.
On przez lunetę wspartą na moim ramieniu On przez lunetę wspartą na moim ramieniu
Długo na szturm i szaniec poglądał w milczeniu. Długo na szturm i szaniec poglądał w milczeniu.
Na koniec rzekł; "Stracona". - Spod lunety jego Na koniec rzekł; "Stracona". - Spod lunety jego
Wymknęło się łez kilka, - rzekł do mnie: "Kolego, Wymknęło się łez kilka, - rzekł do mnie: "Kolego,
Wzrok młody od szkieł lepszy; patrzaj, tam na wale, Wzrok młody od szkieł lepszy; patrzaj, tam na wale,
Znasz Ordona, czy widzisz, gdzie jest?" - "Jenerale, Znasz Ordona, czy widzisz, gdzie jest?" - "Jenerale,
Czy go znam? - Tam stał zawsze, to działo kierował. Czy go znam? - Tam stał zawsze, to działo kierował.
Nie widzę - znajdę - dojrzę! - śród dymu się schował: Nie widzę - znajdę - dojrzę! - śród dymu się schował:
Lecz śród najgęstszych kłębów dymu ileż razy Lecz śród najgęstszych kłębów dymu ileż razy
Widziałem rękę jego, dającą rozkazy. - Widziałem rękę jego, dającą rozkazy. -
Widzę go znowu, - widzę rękę - błyskawicę, Widzę go znowu, - widzę rękę - błyskawicę,
Wywija, grozi wrogom, trzyma palną świécę, Wywija, grozi wrogom, trzyma palną świécę,
Biorą go - zginął - o nie, - skoczył w dół, - do lochów"! Biorą go - zginął - o nie, - skoczył w dół, - do lochów"!
"Dobrze - rzecze Jenerał - nie odda im prochów". "Dobrze - rzecze Jenerał - nie odda im prochów".
Tu blask - dym - chwila cicho - i huk jak stu gromów. Tu blask - dym - chwila cicho - i huk jak stu gromów.
Zaćmiło się powietrze od ziemi wylomów, Zaćmiło się powietrze od ziemi wylomów,
Harmaty podskoczyły i jak wystrzelone Harmaty podskoczyły i jak wystrzelone
Toczyły się na kołach - lonty zapalone Toczyły się na kołach - lonty zapalone
Nie trafiły do swoich panew. I dym wionął Nie trafiły do swoich panew. I dym wionął
Prosto ku nam; i w gęstej chmurze nas ochłonął. Prosto ku nam; i w gęstej chmurze nas ochłonął.
I nie było nic widać prócz granatów blasku
I nie było nic widać prócz granatów blasku,
I powoli dym rzedniał, opadał deszcz piasku. I powoli dym rzedniał, opadał deszcz piasku.
Spojrzałem na redutę; - wały, palisady, Spojrzałem na redutę; - wały, palisady,
Działa i naszych garstka, i wrogów gromady; Działa i naszych garstka, i wrogów gromady;
Wszystko jako sen znikło. - Tylko czarna bryła Wszystko jako sen znikło. - Tylko czarna bryła
Ziemi niekształtnej leży - rozjemcza mogiła. Ziemi niekształtnej leży - rozjemcza mogiła.
Tam i ci, co bronili, -i ci, co się wdarli, Tam i ci, co bronili, -i ci, co się wdarli,
Pierwszy raz pokój szczery i wieczny zawarli. Pierwszy raz pokój szczery i wieczny zawarli.
Choćby cesarz Moskalom kazał wstać, już dusza Choćby cesarz Moskalom kazał wstać, już dusza
Moskiewska. tam raz pierwszy, cesarza nie słusza. Moskiewska. tam raz pierwszy, cesarza nie słusza.
Tam zagrzebane tylu set ciała, imiona: Tam zagrzebane tylu set ciała, imiona:
Dusze gdzie? nie wiem; lecz wiem, gdzie dusza Ordona. Dusze gdzie? nie wiem; lecz wiem, gdzie dusza Ordona.
On będzie Patron szańców! - Bo dzieło zniszczenia On będzie Patron szańców! - Bo dzieło zniszczenia
W dobrej sprawie jest święte, Jak dzieło tworzenia; W dobrej sprawie jest święte, Jak dzieło tworzenia;
Bóg wyrzekł słowo stań się, Bóg i zgiń wyrzecze. Bóg wyrzekł słowo stań się, Bóg i zgiń wyrzecze.
Kiedy od ludzi wiara i wolność uciecze, Kiedy od ludzi wiara i wolność uciecze,
Kiedy ziemię despotyzm i duma szalona Kiedy ziemię despotyzm i duma szalona
Obleją, jak Moskale redutę Ordona - Obleją, jak Moskale redutę Ordona -
Karząc plemię zwyciężców zbrodniami zatrute, Karząc plemię zwyciężców zbrodniami zatrute,
Bóg wysadzi tę ziemię, jak on swą redutę. Bóg wysadzi tę ziemię, jak on swą redutę.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 851 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

View file

@ -1,251 +0,0 @@
Nam strzelać nie kazano. - Wstąpiłem na działo
I spójrzałem na pole; dwieście armat grzmiało.
Artyleryi ruskiej ciągną się szeregi,
Prosto, długo, daleko, jako morza brzegi;
I widziałem ich wodza: przybiegł, mieczem skinął
I jak ptak jedno skrzydło wojska swego zwinął;
Wylewa się spod skrzydła ściśniona piechota
Długą czarną kolumną, jako lawa błota,
Nasypana iskrami bagnetów. Jak sępy
Czarne chorągwie na śmierć prowadzą zastępy.
Przeciw nim sterczy biała, wąska, zaostrzona,
Jak głaz bodzący morze, reduta Ordona.
Sześć tylko miała armat; wciąż dymią i świecą;
I nie tyle prędkich słów gniewne usta miecą,
Nie tyle przejdzie uczuć przez duszę w rozpaczy,
Ile z tych dział leciało bomb, kul i kartaczy.
Patrz, tam granat w sam środek kolumny się nurza,
Jak w fale bryła lawy, pułk dymem zachmurza;
Pęka śród dymu granat, szyk pod niebo leci
I ogromna łysina śród kolumny świeci.
Tam kula, lecąc, z dala grozi, szumi, wyje.
Ryczy jak byk przed bitwą, miota się, grunt ryje; -
Już dopadła; jak boa śród kolumn się zwija,
Pali piersią, rwie zębem, oddechem zabija.
Najstraszniejszej nie widać, lecz słychać po dźwięku,
Po waleniu się trupów, po ranionych jęku:
Gdy kolumnę od końca do końca przewierci,
Jak gdyby środkiem wojska przeszedł anioł śmierci.
Gdzież jest król, co na rzezie tłumy te wyprawia?
Czy dzieli ich odwagę, czy pierś sam nadstawia?
Nie, on siedzi o pięćset mil na swej stolicy,
Król wielki, samowładnik świata połowicy;
Zmarszczył brwi, - i tysiące kibitek wnet leci;
Podpisał, - tysiąc matek opłakuje dzieci;
Skinął, - padają knuty od Niemna do Chiwy.
Mocarzu, jak Bóg silny, jak szatan złośliwy,
Gdy Turków za Bałkanem twoje straszą spiże,
Gdy poselstwo paryskie twoje stopy liże, -
Warszawa jedna twojej mocy się urąga,
Podnosi na cię rękę i koronę ściąga,
Koronę Kazimierzów, Chrobrych z twojej głowy,
Boś ją ukradł i skrwawił, synu Wasilowy!
Car dziwi się - ze strachu. drzą Petersburczany,
Car gniewa się - ze strachu mrą jego dworzany;
Ale sypią się wojska, których Bóg i wiara
Jest Car. - Car gniewny: umrzem, rozweselim Cara.
Posłany wódz kaukaski z siłami pół-świata,
Wierny, czynny i sprawny - jak knut w ręku kata.
Ura! ura! Patrz, blisko reduty, już w rowy
Walą się, na faszynę kładąc swe tułowy;
Już czernią się na białych palisadach wałów.
Jeszcze reduta w środku, jasna od wystrzałów,
Czerwieni się nad czernią: jak w środek mrowiaka
Wrzucony motyl błyska, - mrowie go naciska, -
Zgasł - tak zgasła reduta. Czyż ostatnie działo
Strącone z łoża w piasku paszczę zagrzebało?
Czy zapał krwią ostatni bombardyjer zalał?
Zgasnął ogień. - Już Moskal rogatki wywalał.
Gdzież ręczna broń? - Ach, dzisiaj pracowała więcej
Niż na wszystkich przeglądach za władzy książęcej;
Zgadłem, dlaczego milczy, - bo nieraz widziałem
Garstkę naszych walczącą z Moskali nawałem.
Gdy godzinę wołano dwa słowa: pal, nabij;
Gdy oddechy dym tłumi, trud ramiona słabi;
A wciąż grzmi rozkaz wodzów, wre żołnierza czynność;
Na koniec bez rozkazu pełnią swą powinność,
Na koniec bez rozwagi, bez czucia, pamięci,
Żołnierz jako młyn palny nabija - grzmi - kręci
Broń od oka do nogi, od nogi na oko:
Aż ręka w ładownicy długo i głęboko
Szukała, nie znalazła - i żołnierz pobladnął,
Nie znalazłszy ładunku, już bronią nie władnął;
I uczuł, że go pali strzelba rozogniona;
Upuścił ją i upadł; - nim dobiją, skona.
Takem myślił, - a w szaniec nieprzyjaciół kupa
Już łazła, jak robactwo na świeżego trupa.
Pociemniało mi w oczach - a gdym łzy ocierał,
Słyszałem, że coś do mnie mówił mój Jenerał.
On przez lunetę wspartą na moim ramieniu
Długo na szturm i szaniec poglądał w milczeniu.
Na koniec rzekł; "Stracona". - Spod lunety jego
Wymknęło się łez kilka, - rzekł do mnie: "Kolego,
Wzrok młody od szkieł lepszy; patrzaj, tam na wale,
Znasz Ordona, czy widzisz, gdzie jest?" - "Jenerale,
Czy go znam? - Tam stał zawsze, to działo kierował.
Nie widzę - znajdę - dojrzę! - śród dymu się schował:
Lecz śród najgęstszych kłębów dymu ileż razy
Widziałem rękę jego, dającą rozkazy. -
Widzę go znowu, - widzę rękę - błyskawicę,
Wywija, grozi wrogom, trzyma palną świécę,
Biorą go - zginął - o nie, - skoczył w dół, - do lochów"!
"Dobrze - rzecze Jenerał - nie odda im prochów".
Tu blask - dym - chwila cicho - i huk jak stu gromów.
Zaćmiło się powietrze od ziemi wylomów,
Harmaty podskoczyły i jak wystrzelone
Toczyły się na kołach - lonty zapalone
Nie trafiły do swoich panew. I dym wionął
Prosto ku nam; i w gęstej chmurze nas ochłonął.
I nie było nic widać prócz granatów blasku,
I powoli dym rzedniał, opadał deszcz piasku.
Spojrzałem na redutę; - wały, palisady,
Działa i naszych garstka, i wrogów gromady;
Wszystko jako sen znikło. - Tylko czarna bryła
Ziemi niekształtnej leży - rozjemcza mogiła.
Tam i ci, co bronili, -i ci, co się wdarli,
Pierwszy raz pokój szczery i wieczny zawarli.
Choćby cesarz Moskalom kazał wstać, już dusza
Moskiewska. tam raz pierwszy, cesarza nie słusza.
Tam zagrzebane tylu set ciała, imiona:
Dusze gdzie? nie wiem; lecz wiem, gdzie dusza Ordona.
On będzie Patron szańców! - Bo dzieło zniszczenia
W dobrej sprawie jest święte, Jak dzieło tworzenia;
Bóg wyrzekł słowo stań się, Bóg i zgiń wyrzecze.
Kiedy od ludzi wiara i wolność uciecze,
Kiedy ziemię despotyzm i duma szalona
Obleją, jak Moskale redutę Ordona -
Karząc plemię zwyciężców zbrodniami zatrute,
Bóg wysadzi tę ziemię, jak on swą redutę.

View file

@ -110,7 +110,7 @@ int main(int argc, char* argv[]) {
if (!EmptyPath(path)) { return 1; } if (!EmptyPath(path)) { return 1; }
if (!cargo.Create(path, 0x01)) if (!cargo.Create(path, 0x0F))
{ {
return 1; return 1;
} }
@ -130,7 +130,7 @@ int main(int argc, char* argv[]) {
if (arg == "-e" && i + 1 < argc) if (arg == "-e" && i + 1 < argc)
{ {
path = argv[i + 1]; path = argv[i + 1];
if (!cargo.Create(path, 0x02)) if (!cargo.Create(path, 0xF0))
{ {
return 1; return 1;
} }
@ -140,7 +140,7 @@ int main(int argc, char* argv[]) {
if (arg == "-s" && i + 1 < argc) if (arg == "-s" && i + 1 < argc)
{ {
path = argv[i + 1]; path = argv[i + 1];
if (!cargo.Create(path, 0x03)) if (!cargo.Create(path, 0xFF))
{ {
return 1; return 1;
} }
@ -151,7 +151,7 @@ int main(int argc, char* argv[]) {
{ {
path = argv[i + 1]; path = argv[i + 1];
if (!EmptyPath(path)) { return 1; } if (!EmptyPath(path)) { return 1; }
if (!cargo.Create(path, 0xFF)) if (!cargo.Create(path, 0xAB))
{ {
return 1; return 1;
} }

View file

@ -104,13 +104,13 @@
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions);SODIUM_STATIC</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions);SODIUM_STATIC</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode> <ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard> <LanguageStandard>stdcpp17</LanguageStandard>
<AdditionalIncludeDirectories>3rd\ftxui\include;3rd\libsodium\include;3rd\json\include;3rd\zstd\include;3rd\xxhash\include;3rd\xxhash\include</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>3rd\libsodium\include;3rd\json\include;3rd\zstd\include;3rd\xxhash\include</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>3rd\zstd\lib\Debug;3rd\ftxui\Debug;3rd\xxhash\lib\Debug;3rd\libsodium\x64\Debug\v143\static</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>3rd\zstd\lib\Debug;3rd\xxhash\lib\Debug;3rd\libsodium\x64\Debug\v143\static</AdditionalLibraryDirectories>
<AdditionalDependencies>ftxui-component.lib;ftxui-dom.lib;ftxui-screen.lib;libsodium.lib;zstd_static.lib;xxhash.lib</AdditionalDependencies> <AdditionalDependencies>libsodium.lib;zstd_static.lib;xxhash.lib</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@ -122,13 +122,13 @@
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions);SODIUM_STATIC</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions);SODIUM_STATIC</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode> <ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard> <LanguageStandard>stdcpp17</LanguageStandard>
<AdditionalIncludeDirectories>3rd\ftxui\include;3rd\libsodium\include;3rd\json\include;3rd\zstd\include;3rd\xxhash\include;</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>3rd\libsodium\include;3rd\json\include;3rd\zstd\include;3rd\xxhash\include</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>3rd\zstd\lib\Release;3rd\libsodium\x64\Release\v143\static;3rd\xxhash\lib\Release;3rd\ftxui\Release</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>3rd\zstd\lib\Release;3rd\libsodium\x64\Release\v143\static;3rd\xxhash\lib\Release</AdditionalLibraryDirectories>
<AdditionalDependencies>ftxui-component.lib;ftxui-dom.lib;ftxui-screen.lib;libsodium.lib;zstd_static.lib;xxhash.lib</AdditionalDependencies> <AdditionalDependencies>libsodium.lib;zstd_static.lib;xxhash.lib</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
@ -137,7 +137,6 @@
<ClCompile Include="CreateCargo.cpp" /> <ClCompile Include="CreateCargo.cpp" />
<ClCompile Include="EncryptionManager.cpp" /> <ClCompile Include="EncryptionManager.cpp" />
<ClCompile Include="ExtractCargo.cpp" /> <ClCompile Include="ExtractCargo.cpp" />
<ClCompile Include="Tui.cpp" />
<ClCompile Include="ViewCargo.cpp" /> <ClCompile Include="ViewCargo.cpp" />
<ClCompile Include="voidcmd.cpp" /> <ClCompile Include="voidcmd.cpp" />
</ItemGroup> </ItemGroup>
@ -148,7 +147,6 @@
<ClInclude Include="DataStruct.h" /> <ClInclude Include="DataStruct.h" />
<ClInclude Include="EncryptionManager.h" /> <ClInclude Include="EncryptionManager.h" />
<ClInclude Include="ExtractCargo.h" /> <ClInclude Include="ExtractCargo.h" />
<ClInclude Include="Tui.h" />
<ClInclude Include="ViewCargo.h" /> <ClInclude Include="ViewCargo.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View file

@ -27,9 +27,6 @@
<ClCompile Include="ViewCargo.cpp"> <ClCompile Include="ViewCargo.cpp">
<Filter>Pliki źródłowe</Filter> <Filter>Pliki źródłowe</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Interface.cpp">
<Filter>Pliki źródłowe</Filter>
</ClCompile>
<ClCompile Include="ChunkManager.cpp"> <ClCompile Include="ChunkManager.cpp">
<Filter>Pliki źródłowe</Filter> <Filter>Pliki źródłowe</Filter>
</ClCompile> </ClCompile>
@ -53,9 +50,6 @@
<ClInclude Include="DataStruct.h"> <ClInclude Include="DataStruct.h">
<Filter>Pliki nagłówkowe</Filter> <Filter>Pliki nagłówkowe</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Interface.h">
<Filter>Pliki nagłówkowe</Filter>
</ClInclude>
<ClInclude Include="ChunkManager.h"> <ClInclude Include="ChunkManager.h">
<Filter>Pliki nagłówkowe</Filter> <Filter>Pliki nagłówkowe</Filter>
</ClInclude> </ClInclude>