gauthd
 
Loading...
Searching...
No Matches
D:/pwsrc2.0/docs/gauthd/gquerypasswd.hpp
Go to the documentation of this file.
1
6
7#ifndef __GNET_GQUERYPASSWD_HPP
8#define __GNET_GQUERYPASSWD_HPP
9
10#include "rpcdefs.h"
11#include "callid.hxx"
12#include "state.hxx"
13#include "security.h"
14
15#include "gquerypasswdarg"
16#include "gquerypasswdres"
17#include <string>
18
19namespace GNET
20{
21
30class GQueryPasswd : public Rpc
31{
32#define RPC_BASECLASS Rpc
33 #include "gquerypasswd"
34#undef RPC_BASECLASS
35
36public:
50 void Server(Rpc::Data *argument, Rpc::Data *result, Manager *manager, Manager::Session::ID sid)
51 {
52 GQueryPasswdArg *arg = static_cast<GQueryPasswdArg*>(argument);
53 GQueryPasswdRes *res = static_cast<GQueryPasswdRes*>(result);
54
55 Octets password;
56 // Преобразование account в числовой userid
57 res->userid = std::atoi(std::string(
58 reinterpret_cast<char*>(arg->account.begin()),
59 arg->account.size()).c_str());
60
61 // Проверка валидности userid
62 if (res->userid % 16 != 0 || res->userid == 0)
63 {
64 res->retcode = ERR_INVALID_ACCOUNT;
65 return;
66 }
67
68 password = arg->account;
69
70 // Генерация MD5-хеша
71 MD5Hash md5;
72 Octets digest;
73
74 md5.Update(arg->account);
75 md5.Update(password);
76 md5.Final(digest);
77
78 res->response.swap(digest);
79 res->retcode = ERR_SUCCESS;
80 }
81
90 void Client(Rpc::Data *argument, Rpc::Data *result, Manager *manager, Manager::Session::ID sid)
91 {
92 // GQueryPasswdArg *arg = static_cast<GQueryPasswdArg*>(argument);
93 // GQueryPasswdRes *res = static_cast<GQueryPasswdRes*>(result);
94 // TODO: Реализовать клиентскую логику
95 }
96
103 {
104 // TODO: Реализовать обработку таймаутов
105 }
106};
107
108} // namespace GNET
109
110#endif // __GNET_GQUERYPASSWD_HPP
Класс для обработки RPC-запросов проверки паролей
void Client(Rpc::Data *argument, Rpc::Data *result, Manager *manager, Manager::Session::ID sid)
Метод обработки запроса на стороне клиента (заглушка)
void Server(Rpc::Data *argument, Rpc::Data *result, Manager *manager, Manager::Session::ID sid)
Метод обработки запроса на стороне сервера
void OnTimeout()
Обработчик таймаута запроса (клиентская часть)
Основное пространство имен для сетевых компонентов системы.