#pragma once #include #include #include #include "output.h" namespace Mist { class HTTPOutput : public Output { public: HTTPOutput(Socket::Connection & conn); virtual ~HTTPOutput(); static void init(Util::Config * cfg); virtual void onFail(const std::string & msg, bool critical = false); virtual void onHTTP(){}; virtual void onIdle(){}; virtual void onWebsocketFrame(){}; virtual void onWebsocketConnect(){}; virtual void preWebsocketConnect(){}; virtual void requestHandler(); virtual void preHTTP(); static bool listenMode(){return false;} virtual bool doesWebsockets(){return false;} void reConnector(std::string & connector); std::string getHandler(); bool parseRange(uint64_t & byteStart, uint64_t & byteEnd); protected: bool firstRun; HTTP::Parser H; HTTP::Websocket * webSock; uint32_t idleInterval; uint64_t idleLast; std::string getConnectedHost();//LTS std::string getConnectedBinHost();//LTS bool isTrustedProxy(const std::string & ip);//LTS }; }