]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/authorization/inetaccess/inetaccess.h
Initialize class members in EVENT_LOOP constructor
[stg.git] / projects / stargazer / plugins / authorization / inetaccess / inetaccess.h
index a648ec04db0d3758994f56cc391252c44f5f6741..e55733c10814cf407223198bad4360a47ed5a7e6 100644 (file)
@@ -118,26 +118,27 @@ private:
 //-----------------------------------------------------------------------------
 struct IA_USER {
     IA_USER()
 //-----------------------------------------------------------------------------
 struct IA_USER {
     IA_USER()
-        : user(NULL),
+        : login(),
+          user(NULL),
           lastSendAlive(0),
           rnd(random()),
           port(0),
           protoVer(0),
           password("NO PASSWORD")
     {
           lastSendAlive(0),
           rnd(random()),
           port(0),
           protoVer(0),
           password("NO PASSWORD")
     {
-        // +++ Preparing CTX +++
-        unsigned char keyL[PASSWD_LEN];
-        memset(keyL, 0, PASSWD_LEN);
-        strncpy((char *)keyL, password.c_str(), PASSWD_LEN);
-        Blowfish_Init(&ctx, keyL, PASSWD_LEN);
-        // --- Preparing CTX ---
-        #ifdef IA_DEBUG
-        aliveSent = false;
-        #endif
+    unsigned char keyL[PASSWD_LEN];
+    memset(keyL, 0, PASSWD_LEN);
+    strncpy((char *)keyL, password.c_str(), PASSWD_LEN);
+    Blowfish_Init(&ctx, keyL, PASSWD_LEN);
+
+    #ifdef IA_DEBUG
+    aliveSent = false;
+    #endif
     };
 
     IA_USER(const IA_USER & u)
     };
 
     IA_USER(const IA_USER & u)
-        : user(u.user),
+        : login(u.login),
+          user(u.user),
           phase(u.phase),
           lastSendAlive(u.lastSendAlive),
           rnd(u.rnd),
           phase(u.phase),
           lastSendAlive(u.lastSendAlive),
           rnd(u.rnd),
@@ -146,13 +147,39 @@ struct IA_USER {
           protoVer(u.protoVer),
           password(u.password)
     {
           protoVer(u.protoVer),
           password(u.password)
     {
-        #ifdef IA_DEBUG
-        aliveSent  = u.aliveSent;
-        #endif
-        memcpy(&ctx, &u.ctx, sizeof(BLOWFISH_CTX));
+    #ifdef IA_DEBUG
+    aliveSent  = u.aliveSent;
+    #endif
+    memcpy(&ctx, &u.ctx, sizeof(BLOWFISH_CTX));
     };
 
     };
 
-    USER_PTR        user;
+    IA_USER(const std::string & l,
+            CONST_USER_PTR u,
+            uint16_t p,
+            int ver)
+        : login(l),
+          user(u),
+          phase(),
+          lastSendAlive(0),
+          rnd(random()),
+          port(p),
+          ctx(),
+          messagesToSend(),
+          protoVer(ver),
+          password(user->GetProperty().password.Get())
+    {
+    unsigned char keyL[PASSWD_LEN];
+    memset(keyL, 0, PASSWD_LEN);
+    strncpy((char *)keyL, password.c_str(), PASSWD_LEN);
+    Blowfish_Init(&ctx, keyL, PASSWD_LEN);
+
+    #ifdef IA_DEBUG
+    aliveSent = false;
+    #endif
+    }
+
+    std::string     login;
+    CONST_USER_PTR  user;
     IA_PHASE        phase;
     UTIME           lastSendAlive;
     uint32_t        rnd;
     IA_PHASE        phase;
     UTIME           lastSendAlive;
     uint32_t        rnd;
@@ -228,7 +255,7 @@ private:
     void                DelUser(USER_PTR u);
     int                 RecvData(char * buffer, int bufferSize);
     int                 CheckHeader(const char * buffer, int * protoVer);
     void                DelUser(USER_PTR u);
     int                 RecvData(char * buffer, int bufferSize);
     int                 CheckHeader(const char * buffer, int * protoVer);
-    int                 PacketProcessor(char * buff, int dataLen, uint32_t sip, uint16_t sport, int protoVer, USER_PTR user);
+    int                 PacketProcessor(char * buff, int dataLen, uint32_t sip, uint16_t sport, int protoVer, USER_PTR user);
 
     int                 Process_CONN_SYN_6(CONN_SYN_6 * connSyn, IA_USER * iaUser, uint32_t sip);
     int                 Process_CONN_SYN_7(CONN_SYN_7 * connSyn, IA_USER * iaUser, uint32_t sip);
 
     int                 Process_CONN_SYN_6(CONN_SYN_6 * connSyn, IA_USER * iaUser, uint32_t sip);
     int                 Process_CONN_SYN_7(CONN_SYN_7 * connSyn, IA_USER * iaUser, uint32_t sip);
@@ -283,8 +310,6 @@ private:
     int                 RealSendMessage7(const STG_MSG & msg, uint32_t ip, IA_USER & user);
     int                 RealSendMessage8(const STG_MSG & msg, uint32_t ip, IA_USER & user);
 
     int                 RealSendMessage7(const STG_MSG & msg, uint32_t ip, IA_USER & user);
     int                 RealSendMessage8(const STG_MSG & msg, uint32_t ip, IA_USER & user);
 
-    bool                WaitPackets(int sd) const;
-
     BLOWFISH_CTX        ctxS;        //for loginS
 
     mutable std::string errorStr;
     BLOWFISH_CTX        ctxS;        //for loginS
 
     mutable std::string errorStr;
@@ -331,7 +356,7 @@ private:
             UnauthorizeUser(AUTH_IA * a) : auth(a) {}
             void operator()(const std::pair<uint32_t, IA_USER> & p)
             {
             UnauthorizeUser(AUTH_IA * a) : auth(a) {}
             void operator()(const std::pair<uint32_t, IA_USER> & p)
             {
-                p.second.user->Unauthorize(auth);
+                auth->users->Unauthorize(p.second.user->GetLogin(), auth);
             }
         private:
             AUTH_IA * auth;
             }
         private:
             AUTH_IA * auth;