summaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2015-08-16 14:05:27 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2015-08-16 14:05:27 +0300
commit3627d42af059a52d2095efc783550fe589d68bcb (patch)
tree0ae26f664591260fa4e7754c2af9e4e45419e48a /server/src
parent04edaab436dae1747270d7d10c0586a2a4c222bf (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.cpp2
-rw-r--r--server/src/main.cpp4
-rw-r--r--server/src/server.cpp6
-rw-r--r--server/src/server_session.cpp17
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);