用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

133 lines
2.9 KiB

#include "SevenZipArchive.h"
#include "UsefulFunctions.h"
namespace SevenZip
{
SevenZipArchive::SevenZipArchive()
: m_compressionFormat(CompressionFormat::SevenZip)
, m_compressionLevel(CompressionLevel::Default)
, m_ReadMetadata(false)
, m_OverrideCompressionFormat(false)
, m_EncryptFileName(false)
, m_numberofitems(0)
{
}
SevenZipArchive::~SevenZipArchive()
{
m_itemnames.clear();
m_origsizes.clear();
}
bool SevenZipArchive::SetArchivePath(const TString& archivePath)
{
m_archivePath = archivePath;
return true;
//return DetectCompressionFormat();
}
void SevenZipArchive::SetCompressionFormat(const CompressionFormatEnum& format)
{
m_OverrideCompressionFormat = true;
m_ReadMetadata = false;
m_compressionFormat = format;
}
void SevenZipArchive::SetCompressionLevel(const CompressionLevelEnum& level)
{
m_compressionLevel = level;
}
CompressionLevelEnum SevenZipArchive::GetCompressionLevel()
{
return m_compressionLevel;
}
void SevenZipArchive::SetEncryptFileName(bool bEnable)
{
m_EncryptFileName = bEnable;
}
bool SevenZipArchive::IsEncryptFileName()
{
return m_EncryptFileName;
}
CompressionFormatEnum SevenZipArchive::GetCompressionFormat()
{
if (!m_ReadMetadata && !m_OverrideCompressionFormat)
{
m_ReadMetadata = ReadInArchiveMetadata();
}
return m_compressionFormat;
}
size_t SevenZipArchive::GetNumberOfItems()
{
if (!m_ReadMetadata)
{
m_ReadMetadata = ReadInArchiveMetadata();
}
return m_numberofitems;
}
std::vector<TString> SevenZipArchive::GetItemsNames()
{
if (!m_ReadMetadata)
{
m_ReadMetadata = ReadInArchiveMetadata();
}
return m_itemnames;
}
std::vector<size_t> SevenZipArchive::GetOrigSizes()
{
if (!m_ReadMetadata)
{
m_ReadMetadata = ReadInArchiveMetadata();
}
return m_origsizes;
}
// Sets up all the metadata for an archive file
bool SevenZipArchive::ReadInArchiveMetadata()
{
bool DetectedCompressionFormat = true;
if (!m_OverrideCompressionFormat)
{
DetectedCompressionFormat = pri_DetectCompressionFormat(m_compressionFormat);
}
bool GotItemNumberNamesAndOrigSizes = pri_GetItemsNames();
return (DetectedCompressionFormat && GotItemNumberNamesAndOrigSizes);
}
bool SevenZipArchive::DetectCompressionFormat()
{
m_OverrideCompressionFormat = false;
return pri_DetectCompressionFormat(m_compressionFormat);
}
bool SevenZipArchive::pri_DetectCompressionFormat(CompressionFormatEnum& format)
{
m_OverrideCompressionFormat = false;
return UsefulFunctions::DetectCompressionFormat(m_archivePath, format);
}
bool SevenZipArchive::pri_GetNumberOfItems()
{
return UsefulFunctions::GetNumberOfItems(m_archivePath,
m_compressionFormat, m_numberofitems);
}
bool SevenZipArchive::pri_GetItemsNames()
{
return UsefulFunctions::GetItemsNames(m_archivePath, m_compressionFormat,
m_numberofitems, m_itemnames, m_origsizes);
}
}