diff options
Diffstat (limited to 'server/server.h')
-rw-r--r-- | server/server.h | 89 |
1 files changed, 7 insertions, 82 deletions
diff --git a/server/server.h b/server/server.h index c9028d3..4bc5e31 100644 --- a/server/server.h +++ b/server/server.h @@ -23,96 +23,21 @@ using boost::asio::ip::tcp; typedef boost::asio::ssl::stream<boost::asio::ip::tcp::socket> ssl_socket; -class session -{ -public: - session(boost::asio::io_service& io_service, boost::asio::ssl::context& context) : socket_(io_service, context) - {} - - ssl_socket::lowest_layer_type& socket() - { - return socket_.lowest_layer(); - } - void handle_handshake(const boost::system::error_code& error); - - void start() - { - socket_.async_handshake(boost::asio::ssl::stream_base::server, boost::bind(&session::handle_handshake, this, boost::asio::placeholders::error)); - } - -private: - void handle_read(const boost::system::error_code& error, size_t bytes_transferred); - -/* void handle_write(const boost::system::error_code& error) - { - if (!error) - { - socket_.async_read_some(boost::asio::buffer(data_, max_length), - boost::bind(&session::handle_read, this, - boost::asio::placeholders::error, - boost::asio::placeholders::bytes_transferred)); - } - else - { - delete this; - } - }*/ - - ssl_socket socket_; - enum { max_length = 128 }; - char data_[max_length]; -}; class server { public: - server(boost::asio::io_service& io_service, short port) - : io_service_(io_service), - acceptor_(io_service, tcp::endpoint(boost::asio::ip::address_v4(), port)), - context_(boost::asio::ssl::context::sslv23) - { - context_.set_options( - boost::asio::ssl::context::default_workarounds - | boost::asio::ssl::context::no_sslv2); - context_.set_password_callback(boost::bind(&server::get_password, this)); - context_.use_certificate_chain_file("/etc/restarter_server/serv.crt"); - context_.use_rsa_private_key_file("/etc/restarter_server/serv.key", boost::asio::ssl::context::pem); - context_.load_verify_file("/etc/restarter_server/ca.crt"); - context_.set_verify_mode(boost::asio::ssl::verify_peer | boost::asio::ssl::verify_client_once); - start_accept(); - } + server(boost::asio::io_service& io_service, short port); private: - void start_accept() - { - session* new_session = new session(io_service_, context_); - acceptor_.async_accept(new_session->socket(), - boost::bind(&server::handle_accept, this, new_session, - boost::asio::placeholders::error)); - } - std::string get_password() const - { - return ""; - } - - void handle_accept(session* new_session, - const boost::system::error_code& error) - { - if (!error) - { - new_session->start(); - } - else - { - delete new_session; - } + void start_accept(); + std::string get_password() const; - start_accept(); - } + void handle_accept(session* new_session, const boost::system::error_code& error); - boost::asio::io_service& io_service_; - boost::asio::ip::tcp::acceptor acceptor_; - boost::asio::ssl::context context_; + boost::asio::io_service& io_service_; + boost::asio::ip::tcp::acceptor acceptor_; + boost::asio::ssl::context context_; }; #endif |