mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-02-02 15:14:14 +00:00
#788 ReseedFromZIPFile added
This commit is contained in:
parent
bdcbaa031d
commit
3523047243
28
Reseed.cpp
28
Reseed.cpp
@ -83,10 +83,24 @@ namespace data
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Reseeder::ProcessZIPFile (const char * filename)
|
||||||
|
{
|
||||||
|
std::ifstream s(filename, std::ifstream::binary);
|
||||||
|
if (s.is_open ())
|
||||||
|
{
|
||||||
|
s.seekg (0, std::ios::end);
|
||||||
|
auto len = s.tellg ();
|
||||||
|
s.seekg (0, std::ios::beg);
|
||||||
|
return ProcessZIPStream (s, len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LogPrint (eLogError, "Reseed: Can't open file ", filename);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const char SU3_MAGIC_NUMBER[]="I2Psu3";
|
const char SU3_MAGIC_NUMBER[]="I2Psu3";
|
||||||
const uint32_t ZIP_HEADER_SIGNATURE = 0x04034B50;
|
|
||||||
const uint32_t ZIP_CENTRAL_DIRECTORY_HEADER_SIGNATURE = 0x02014B50;
|
|
||||||
const uint16_t ZIP_BIT_FLAG_DATA_DESCRIPTOR = 0x0008;
|
|
||||||
int Reseeder::ProcessSU3Stream (std::istream& s)
|
int Reseeder::ProcessSU3Stream (std::istream& s)
|
||||||
{
|
{
|
||||||
char magicNumber[7];
|
char magicNumber[7];
|
||||||
@ -194,6 +208,14 @@ namespace data
|
|||||||
}
|
}
|
||||||
|
|
||||||
// handle content
|
// handle content
|
||||||
|
return ProcessZIPStream (s, contentLength);
|
||||||
|
}
|
||||||
|
|
||||||
|
const uint32_t ZIP_HEADER_SIGNATURE = 0x04034B50;
|
||||||
|
const uint32_t ZIP_CENTRAL_DIRECTORY_HEADER_SIGNATURE = 0x02014B50;
|
||||||
|
const uint16_t ZIP_BIT_FLAG_DATA_DESCRIPTOR = 0x0008;
|
||||||
|
int Reseeder::ProcessZIPStream (std::istream& s, uint64_t contentLength)
|
||||||
|
{
|
||||||
int numFiles = 0;
|
int numFiles = 0;
|
||||||
size_t contentPos = s.tellg ();
|
size_t contentPos = s.tellg ();
|
||||||
while (!s.eof ())
|
while (!s.eof ())
|
||||||
|
2
Reseed.h
2
Reseed.h
@ -31,7 +31,9 @@ namespace data
|
|||||||
|
|
||||||
int ReseedFromSU3 (const std::string& url);
|
int ReseedFromSU3 (const std::string& url);
|
||||||
int ProcessSU3File (const char * filename);
|
int ProcessSU3File (const char * filename);
|
||||||
|
int ProcessZIPFile (const char * filename);
|
||||||
int ProcessSU3Stream (std::istream& s);
|
int ProcessSU3Stream (std::istream& s);
|
||||||
|
int ProcessZIPStream (std::istream& s, uint64_t contentLength);
|
||||||
|
|
||||||
bool FindZipDataDescriptor (std::istream& s);
|
bool FindZipDataDescriptor (std::istream& s);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user