#pragma once #include #include #include #include #include #include "cert_manager.h" #include /* TO-DO: use random port, test availability */ #define PROXY_PORT 58421 typedef unsigned __int64 SOCKET; class Proxy { public: Proxy(); ~Proxy(); bool Init(); void Shutdown(); CallbackEvent OnClientRequest; CallbackEvent OnServerResponse; private: void loop(); void handleClient(SOCKET clientSocket); bool initSSL(); void cleanupSSL(); SOCKET _listenSocket = 0; std::thread _workerThread; std::atomic _running = false; CertManager _certManager; SSL_CTX* _clientCtx = nullptr; };