43 lines
1.4 KiB
C++
43 lines
1.4 KiB
C++
#pragma once
|
|
#include "Export.h"
|
|
#include "Global.h"
|
|
#include "IPTable.h"
|
|
#include "WebFileInfo.h"
|
|
#include "HTTPObjects.h"
|
|
|
|
class UNSWSC_DLL_EXPORT SyncFileReceiver
|
|
{
|
|
protected:
|
|
class Impl;
|
|
std::unique_ptr<Impl> pimpl;
|
|
|
|
public:
|
|
SyncFileReceiver();
|
|
virtual ~SyncFileReceiver();
|
|
|
|
public:
|
|
void SetResponseMode(bool html);
|
|
void SetCORSEnable(bool enable);
|
|
std::string EncodeUploadResult();
|
|
std::string EncodeUploadResultHTML();
|
|
void UpdateBlockedIPs(IPTablePtr ip);
|
|
void SetTempRoot(std::string temp_root);
|
|
uns::HTTPMethod GetMethod(uns::RequestPtr request);
|
|
void AppenedBlockedIP(DateTime::Span block_time, std::string ip);
|
|
bool WriteFile(const std::string& path, const std::string& bytes);
|
|
|
|
public:
|
|
virtual uns::Status PreCheckRequest(uns::RequestPtr request) = 0;
|
|
virtual bool PreCheckForm(uns::FormPartPtr form) = 0;
|
|
virtual uns::PathTraversalDefenceLevel PTDefence();
|
|
virtual bool IsPathSafe(const std::string& raw_path);
|
|
|
|
// 【修改】由原先的 Callback 改为可供子类重写的虚函数
|
|
// 返回值改为 webcc::ResponsePtr,并且引入 request 参数以便子类调用 AutoCORS 或解析请求头
|
|
virtual uns::ResponsePtr ProcessFiles(const WebFileInfoVec& file_info, const std::string& tmp_root, uns::RequestPtr request);
|
|
|
|
public:
|
|
uns::ResponsePtr Execute(uns::RequestPtr request);
|
|
};
|
|
|
|
using SyncFileReceiverPtr = std::shared_ptr<SyncFileReceiver>; |