summaryrefslogtreecommitdiff
path: root/server/src/server_session.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2015-08-11 14:29:43 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2015-08-11 14:29:43 +0300
commit04edaab436dae1747270d7d10c0586a2a4c222bf (patch)
treee8c059076ec341861c734ce2efd0d8afef431a33 /server/src/server_session.cpp
parent1aaddd285d1c3ba2ba99eef006062a32c4dedafc (diff)
missed changes
Diffstat (limited to 'server/src/server_session.cpp')
-rw-r--r--server/src/server_session.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/server/src/server_session.cpp b/server/src/server_session.cpp
index 234f130..3b8c3b1 100644
--- a/server/src/server_session.cpp
+++ b/server/src/server_session.cpp
@@ -121,6 +121,65 @@ void server_session::handle_command(client_msg *msg)
{
switch(msg->type())
{
+ case CLIENT_MSG_TYPE::CLIENT_AUTH_REQUEST:
+ {
+ server_msg m;
+ m.set_type(SERVER_MSG_TYPE::SERVER_AUTH_REPLY);
+ //TODO: check for already existing auth token
+ std::string server_password = runtime_config.config_file.get<std::string>("server.password", "");
+ if(server_password.empty())
+ m.mutable_auth_reply()->set_status(true);
+ else
+ {
+ switch(msg->auth_info().hash_type())
+ {
+ case PASSWD_HASH_TYPE::HASH_NONE:
+ {
+ if(msg->auth_info().password() != server_password)
+ {
+ m.mutable_auth_reply()->set_status(false);
+ m.mutable_auth_reply()->set_error_description("wrong password");
+ }
+ else
+ m.mutable_auth_reply()->set_status(true);
+ }
+ break;
+ case PASSWD_HASH_TYPE::HASH_MD5:
+ {
+ //TODO:
+ }
+ break;
+ case PASSWD_HASH_TYPE::HASH_SHA2:
+ {
+ //TODO:
+ }
+ break;
+ case PASSWD_HASH_TYPE::HASH_SHA512:
+ {
+ unsigned char hash[64];
+ SHA512((unsigned char*)server_password.c_str(), server_password.length(), hash);
+ if(msg->auth_info().password() != std::string((const char*)hash))
+ {
+ m.mutable_auth_reply()->set_status(false);
+ m.mutable_auth_reply()->set_error_description("wrong password");
+ }
+ else
+ m.mutable_auth_reply()->set_status(true);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ if(m.auth_reply().status() == true)
+ {
+ client_auth_token = generate_auth_token();
+ m.mutable_auth_reply()->set_auth_token(client_auth_token);
+ //set auth token
+ }
+ send_message(&m);
+ }
+ break;
default:
break;
}