#pragma once #include "Global.h" #include "Export.h" #include "IPTable.h" #include "HTTPObjects.h" class UNSWSC_DLL_EXPORT ServerProcessor { protected: class Impl; std::unique_ptr pimpl; public: ServerProcessor(); virtual ~ServerProcessor(); public: void EnableIPCheck(); void DisableIPCheck(); void UpdateBlockedIPList(IPTablePtr ips); void AppenedBlockedIP(DateTime::Span block_time, std::string ip); uns::HTTPMethod GetMethod(uns::RequestPtr request); void AddStreamSettings(std::string method, bool stream); public: virtual uns::ResponsePtr Processor(uns::RequestPtr request) = 0; virtual uns::PathTraversalDefenceLevel PTDefence(); virtual bool IsPathSafe(const std::string& raw_path); public: uns::ResponsePtr Handle(uns::RequestPtr request); bool Stream(const std::string& method); }; using ServerProcessorPtr = std::shared_ptr;