summaryrefslogtreecommitdiff
path: root/server/server.h
diff options
context:
space:
mode:
Diffstat (limited to 'server/server.h')
-rw-r--r--server/server.h89
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