+#include <cstring>
+
#include "user.h"
USER::USER(const std::string & l,
- const std::string & pwd)
+ const std::string & pwd,
+ uint32_t i)
: login(l),
+ password(pwd),
+ ip(i),
+ aliveTimeout(0),
+ userTimeout(0),
phase(1),
- rnd(0),
- sock(0)
+ phaseChangeTime(0),
+ rnd(0)
{
-char key[IA_PASSWD_LEN];
+unsigned char key[IA_PASSWD_LEN];
memset(key, 0, IA_PASSWD_LEN);
-strncpy(key, password.c_str(), IA_PASSWD_LEN);
+strncpy((char *)key, password.c_str(), IA_PASSWD_LEN);
Blowfish_Init(&ctx, key, IA_PASSWD_LEN);
-}
-
-USER::~USER()
-{
-}
-void USER::Connect()
-{
+sock = socket(AF_INET, SOCK_DGRAM, 0);
}
-void USER::Disconnect()
+USER::~USER()
{
+close(sock);
}
#ifndef __USER_H__
#define __USER_H__
+#include <ctime>
#include <string>
#include "stg/os_int.h"
class USER {
public:
USER(const std::string & login,
- const std::string & password);
+ const std::string & password,
+ uint32_t ip);
~USER();
- void Connect();
- void Disconnect();
+ const std::string & GetLogin() const { return login; }
+ uint32_t GetIP() const { return ip; }
+ uint32_t GetAliveTimeout() const { return aliveTimeout; }
+ uint32_t GetUserTimeout() const { return userTimeout; }
+ int GetPhase() const { return phase; }
+ int GetRnd() const { return rnd; }
+ int GetSocket() const { return sock; }
+ time_t GetPhaseChangeTime() const { return phaseChangeTime; }
+
+ BLOWFISH_CTX * GetCtx() { return &ctx; }
+
+ void SetPhase(int p) { phase = p; time(&phaseChangeTime); }
+ void SetRnd(int r) { rnd = r; }
+ int IncRnd() { return ++rnd; }
+ void SetAliveTimeout(uint32_t timeout) { aliveTimeout = timeout; }
+ void SetUserTimeout(uint32_t timeout) { userTimeout = timeout; }
private:
- const std::string login;
+ std::string login;
+ std::string password;
+ uint32_t ip;
+ uint32_t aliveTimeout;
+ uint32_t userTimeout;
int phase;
+ time_t phaseChangeTime;
int rnd;
int sock;
BLOWFISH_CTX ctx;