// Proxy.h #pragma once #include #include #include #include "Socket.h" #define SMTP_STATE_WAIT_FOR_HELO 0 #define SMTP_STATE_WAIT_FOR_MAILFROM 1 #define SMTP_STATE_WAIT_FOR_RCPTTO 2 #define SMTP_STATE_WAIT_FOR_DATA 3 class Proxy { public: Proxy(); void setOutside(Socket& socket); void run(const std::string& peer_address); private: boost::asio::io_context io_context_; boost::asio::ssl::context ssl_context; Socket* outside_socket_; };