]> git.stg.codes - stg.git/blob - projects/sgauthstress/user.h
Implemented some user management functions.
[stg.git] / projects / sgauthstress / user.h
1 #ifndef __USER_H__
2 #define __USER_H__
3
4 #include <ctime>
5 #include <string>
6
7 #include "stg/os_int.h"
8 #include "stg/blowfish.h"
9
10 class USER {
11     public:
12         USER(const std::string & login,
13              const std::string & password,
14              uint32_t ip);
15         USER(const USER & rvalue);
16         ~USER();
17
18         USER & operator=(const USER & rvalue);
19
20         bool InitNetwork();
21
22         const std::string & GetLogin() const { return login; }
23         uint32_t GetIP() const { return ip; }
24         uint32_t GetAliveTimeout() const { return aliveTimeout; }
25         uint32_t GetUserTimeout() const { return userTimeout; }
26         int GetPhase() const { return phase; }
27         uint32_t GetRnd() const { return rnd; }
28         int GetSocket() const { return sock; }
29         time_t GetPhaseChangeTime() const { return phaseChangeTime; }
30
31         BLOWFISH_CTX * GetCtx() { return &ctx; }
32
33         void SetPhase(int p) { phase = p; time(&phaseChangeTime); }
34         void SetRnd(uint32_t r) { rnd = r; }
35         uint32_t IncRnd() { return ++rnd; }
36         void SetAliveTimeout(uint32_t timeout) { aliveTimeout = timeout; }
37         void SetUserTimeout(uint32_t timeout) { userTimeout = timeout; }
38
39     private:
40         std::string login;
41         std::string password;
42         uint32_t ip;
43         uint32_t aliveTimeout;
44         uint32_t userTimeout;
45         int phase;
46         time_t phaseChangeTime;
47         uint32_t rnd;
48         int sock;
49         BLOWFISH_CTX ctx;
50 };
51
52 #endif