diff options
author | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2015-08-16 14:05:27 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2015-08-16 14:05:27 +0300 |
commit | 3627d42af059a52d2095efc783550fe589d68bcb (patch) | |
tree | 0ae26f664591260fa4e7754c2af9e4e45419e48a /server/src | |
parent | 04edaab436dae1747270d7d10c0586a2a4c222bf (diff) |
server:
some initial work on authentification part
client-qt:
some initial work on authentification part
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/client.cpp | 2 | ||||
-rw-r--r-- | server/src/main.cpp | 4 | ||||
-rw-r--r-- | server/src/server.cpp | 6 | ||||
-rw-r--r-- | server/src/server_session.cpp | 17 |
4 files changed, 19 insertions, 10 deletions
diff --git a/server/src/client.cpp b/server/src/client.cpp index 21ea62a..858b230 100644 --- a/server/src/client.cpp +++ b/server/src/client.cpp @@ -1,6 +1,6 @@ #include "client.h" -client::client() +client::client(std::string &client_auth_token) : auth_token(client_auth_token) { //ctor } diff --git a/server/src/main.cpp b/server/src/main.cpp index 30126fa..2786435 100644 --- a/server/src/main.cpp +++ b/server/src/main.cpp @@ -38,7 +38,7 @@ modules_handler *modules = nullptr; namespace bpo = boost::program_options; -std::map<std::string, client> clients; //auth token used for key +std::map<std::string, client*> clients; //auth token used for key runtime_config_s runtime_config; @@ -170,7 +170,7 @@ int main(int argc, char *argv[]) boost::asio::io_service io_service_server; try{ //TODO: server options ip address, interface name - serv = new server(io_service_server, runtime_config.config_file.get<int>("server.port", 6613)); + serv = new server(io_service_server, runtime_config, clients, runtime_config.config_file.get<int>("server.port", 6613)); } catch(std::exception &e) { diff --git a/server/src/server.cpp b/server/src/server.cpp index 818cc10..8c2c965 100644 --- a/server/src/server.cpp +++ b/server/src/server.cpp @@ -24,16 +24,14 @@ #include "server.h" #include "server_session.h" #include "utilities.h" -#include "config.h" #include "../../protocol/udm.pb.h" #include "socket_wraper.h" -extern runtime_config_s runtime_config; -server::server(boost::asio::io_service& io_service, short port) : io_service_(io_service), acceptor_(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port)) +server::server(boost::asio::io_service& io_service,runtime_config_s &config, std::map<std::string, client*> &clients_, short port) : io_service_(io_service), acceptor_(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port)), runtime_config(config), clients(clients_) { if(runtime_config.config_file.get<bool>("server.enable_encryption", false)) { @@ -50,7 +48,7 @@ server::server(boost::asio::io_service& io_service, short port) : io_service_(io void server::start_accept() { - server_session* new_session = new server_session(io_service_); + server_session* new_session = new server_session(io_service_, runtime_config, clients); if(runtime_config.config_file.get<bool>("server.enable_encryption", false)) acceptor_.async_accept(new_session->socket()->get_ssl_socket().lowest_layer(), boost::bind(&server::handle_accept, this, new_session, boost::asio::placeholders::error)); else diff --git a/server/src/server_session.cpp b/server/src/server_session.cpp index 3b8c3b1..811b411 100644 --- a/server/src/server_session.cpp +++ b/server/src/server_session.cpp @@ -24,15 +24,15 @@ #include "server_session.h" #include "../../protocol/udm.pb.h" #include "utilities.h" -#include "config.h" #include "socket_wraper.h" +#include "client.h" -extern runtime_config_s runtime_config; +extern std::map<std::string, client> clients; -server_session::server_session(boost::asio::io_service &s, boost::asio::ssl::context *c) : io_service_(s), context_(c) +server_session::server_session(boost::asio::io_service &s, runtime_config_s &config, std::map<std::string, client*> &clients_, boost::asio::ssl::context *c) : io_service_(s), context_(c), runtime_config(config), clients(clients_) { } @@ -175,6 +175,17 @@ void server_session::handle_command(client_msg *msg) { client_auth_token = generate_auth_token(); m.mutable_auth_reply()->set_auth_token(client_auth_token); + auto i = clients.find(client_auth_token); + if(i == clients.end()) + { + auto a = new client(client_auth_token); + clients[client_auth_token] = a; + client_ = a; + } + else + client_ = i->second; + + //set auth token } send_message(&m); |