253 lines
6.9 KiB
C++
253 lines
6.9 KiB
C++
/*
|
|
File automatically generated by SOAdvancedDissector.py
|
|
More information at http://indefero.soutade.fr/p/soadvanceddissector
|
|
*/
|
|
|
|
#ifndef _ZIP_H
|
|
#define _ZIP_H
|
|
|
|
#include <dpio.h>
|
|
#include <uft.h>
|
|
#include <dp.h>
|
|
#include <dputils.h>
|
|
|
|
|
|
namespace zip {
|
|
|
|
class AdeptKey;
|
|
class Archive;
|
|
class ArchiveListener;
|
|
class FilteredStream;
|
|
class BufferingStream;
|
|
class CDEntry;
|
|
class EditableStream;
|
|
class Entry;
|
|
class Request;
|
|
class XORPadStream;
|
|
class ZLibDecompressorStream;
|
|
class ZipEntryStream;
|
|
|
|
|
|
class AdeptKey
|
|
{
|
|
public:
|
|
void staticInit();
|
|
|
|
void* s_descriptor;
|
|
|
|
};
|
|
|
|
class Archive: public dpio::StreamClient
|
|
{
|
|
public:
|
|
Archive(dpio::Stream*, zip::ArchiveListener*);
|
|
|
|
virtual ~Archive();
|
|
virtual void propertyReady(dp::String const&, dp::String const&);
|
|
virtual void totalLengthReady(unsigned int);
|
|
virtual void propertiesReady();
|
|
virtual void bytesReady(unsigned int, dp::Data const&, bool);
|
|
virtual void reportError(dp::String const&);
|
|
|
|
zip::EditableStream* createStream(uft::String const& newFile, uft::String const& data);
|
|
void* findEntryIndexByOffset(unsigned int);
|
|
void* getEntry(uft::String const&);
|
|
unsigned int getMaxSizeForEntryAt(unsigned int);
|
|
void readDirectory();
|
|
void sendCommonProperties(dpio::StreamClient*);
|
|
|
|
void* fields[30];
|
|
|
|
};
|
|
|
|
class ArchiveListener
|
|
{
|
|
public:
|
|
virtual ~ArchiveListener();
|
|
virtual void endReadDirectory(zip::Archive* archive) = 0;
|
|
virtual void virtfunc20() = 0;
|
|
|
|
};
|
|
|
|
class FilteredStream: public dputils::GuardedStream, public dpio::StreamClient
|
|
{
|
|
public:
|
|
FilteredStream(dpio::Stream*);
|
|
|
|
virtual ~FilteredStream();
|
|
virtual int getCapabilities();
|
|
virtual void requestInfo();
|
|
virtual void requestBytes(unsigned int, unsigned int);
|
|
virtual void reportWriteError(dp::String const&);
|
|
virtual void deleteThis();
|
|
virtual void bytesReady(unsigned int, dp::Data const&, bool);
|
|
virtual void propertyReady(dp::String const&, dp::String const&);
|
|
virtual void propertiesReady();
|
|
virtual void totalLengthReady(unsigned int);
|
|
virtual void reportError(dp::String const&);
|
|
|
|
};
|
|
|
|
class BufferingStream: public zip::FilteredStream
|
|
{
|
|
public:
|
|
BufferingStream(dpio::Stream*, unsigned int);
|
|
|
|
virtual ~BufferingStream();
|
|
virtual int getCapabilities();
|
|
virtual void requestInfo();
|
|
virtual void requestBytes(unsigned int, unsigned int);
|
|
virtual void reportWriteError(dp::String const&);
|
|
virtual void deleteThis();
|
|
virtual void bytesReady(unsigned int, dp::Data const&, bool);
|
|
virtual void propertyReady(dp::String const&, dp::String const&);
|
|
virtual void propertiesReady();
|
|
virtual void totalLengthReady(unsigned int);
|
|
virtual void reportError(dp::String const&);
|
|
virtual void mimeTypeReady(dp::String const&);
|
|
|
|
void request();
|
|
|
|
};
|
|
|
|
class Central_Directory
|
|
{};
|
|
|
|
class CDEntry
|
|
{
|
|
public:
|
|
CDEntry(zip::CDEntry const&);
|
|
CDEntry(zip::Central_Directory*);
|
|
CDEntry(zip::Central_Directory*, uft::String const&);
|
|
|
|
virtual ~CDEntry();
|
|
|
|
void getOffset() const;
|
|
void staticInit();
|
|
void updateOffset(unsigned int);
|
|
|
|
void* s_descriptor;
|
|
|
|
};
|
|
|
|
class EditableStream: public dputils::GuardedStream, public dpio::StreamClient
|
|
{
|
|
public:
|
|
EditableStream(zip::Archive*);
|
|
|
|
virtual ~EditableStream();
|
|
virtual void setStreamClient(dpio::StreamClient*);
|
|
virtual int getCapabilities();
|
|
virtual void requestInfo();
|
|
virtual void requestBytes(unsigned int, unsigned int);
|
|
virtual void reportWriteError(dp::String const&);
|
|
virtual void deleteThis();
|
|
virtual void propertyReady(dp::String const&, dp::String const&);
|
|
virtual void totalLengthReady(unsigned int);
|
|
virtual void propertiesReady();
|
|
virtual void bytesReady(unsigned int, dp::Data const&, bool);
|
|
virtual void reportError(dp::String const&);
|
|
virtual void virtfunc12() {};
|
|
|
|
void addFile(uft::String const&, uft::Buffer const&);
|
|
void requestTheRest();
|
|
|
|
void* fields[16];
|
|
|
|
};
|
|
|
|
class Entry
|
|
{
|
|
public:
|
|
Entry(zip::Archive*, zip::Central_Directory*, uft::String const&);
|
|
Entry(zip::Entry const&);
|
|
|
|
virtual ~Entry();
|
|
|
|
void bytesReady(unsigned int, dp::Data const&, bool);
|
|
void checkPartAccess();
|
|
void getStream(unsigned int, bool);
|
|
void initializeZip(unsigned char const*, unsigned int, unsigned int);
|
|
void processDataDesc(unsigned char const*);
|
|
void processNextRequest();
|
|
void requestBytes(zip::ZipEntryStream*, unsigned int, unsigned int);
|
|
void staticInit();
|
|
|
|
void* s_descriptor;
|
|
|
|
};
|
|
|
|
class Request
|
|
{
|
|
public:
|
|
void staticInit();
|
|
|
|
void* s_descriptor;
|
|
|
|
};
|
|
|
|
class XORPadStream: public zip::FilteredStream
|
|
{
|
|
public:
|
|
XORPadStream(dpio::Stream*, uft::Buffer const&, unsigned int);
|
|
|
|
virtual ~XORPadStream();
|
|
virtual int getCapabilities();
|
|
virtual void requestInfo();
|
|
virtual void requestBytes(unsigned int, unsigned int);
|
|
virtual void reportWriteError(dp::String const&);
|
|
virtual void deleteThis();
|
|
virtual void bytesReady(unsigned int, dp::Data const&, bool);
|
|
virtual void propertyReady(dp::String const&, dp::String const&);
|
|
virtual void propertiesReady();
|
|
virtual void totalLengthReady(unsigned int);
|
|
virtual void reportError(dp::String const&);
|
|
|
|
};
|
|
|
|
class ZLibDecompressorStream: public zip::FilteredStream
|
|
{
|
|
public:
|
|
ZLibDecompressorStream(dpio::Stream*, bool);
|
|
|
|
virtual ~ZLibDecompressorStream();
|
|
virtual int getCapabilities();
|
|
virtual void requestInfo();
|
|
virtual void requestBytes(unsigned int, unsigned int);
|
|
virtual void reportWriteError(dp::String const&);
|
|
virtual void deleteThis();
|
|
virtual void bytesReady(unsigned int, dp::Data const&, bool);
|
|
virtual void propertyReady(dp::String const&, dp::String const&);
|
|
virtual void propertiesReady();
|
|
virtual void totalLengthReady(unsigned int);
|
|
virtual void reportError(dp::String const&);
|
|
|
|
};
|
|
|
|
class ZipEntryStream: public dputils::GuardedStream
|
|
{
|
|
public:
|
|
ZipEntryStream(zip::Entry*, bool);
|
|
|
|
virtual ~ZipEntryStream();
|
|
virtual int getCapabilities();
|
|
virtual void requestInfo();
|
|
virtual void requestBytes(unsigned int, unsigned int);
|
|
virtual void reportWriteError(dp::String const&);
|
|
virtual void deleteThis();
|
|
|
|
void bytesReady(unsigned int, dp::Data const&, bool);
|
|
void processNextRequest();
|
|
void staticInit();
|
|
|
|
void* s_descriptor;
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // _ZIP_H
|