]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/authorization/inetaccess/inetaccess.h
Fix authorization in plugins
[stg.git] / projects / stargazer / plugins / authorization / inetaccess / inetaccess.h
index 7bc704db8f7d0db62406996783522a5fc9422cbf..5b2808803596ce8239e718718a2e559f5643cd91 100644 (file)
 #include <functional>
 #include <utility>
 
-#include "os_int.h"
-#include "auth.h"
-#include "store.h"
-#include "notifer.h"
-#include "user_ips.h"
-#include "user.h"
-#include "users.h"
-#include "ia_packets.h"
-#include "blowfish.h"
-#include "stg_logger.h"
-#include "utime.h"
+#include "stg/os_int.h"
+#include "stg/auth.h"
+#include "stg/store.h"
+#include "stg/notifer.h"
+#include "stg/user_ips.h"
+#include "stg/user.h"
+#include "stg/users.h"
+#include "stg/ia_packets.h"
+#include "stg/blowfish.h"
+#include "stg/logger.h"
+#include "stg/utime.h"
 
 extern "C" PLUGIN * GetPlugin();
 
@@ -118,7 +118,9 @@ private:
 //-----------------------------------------------------------------------------
 struct IA_USER {
     IA_USER()
-        : lastSendAlive(0),
+        : login(),
+          user(NULL),
+          lastSendAlive(0),
           rnd(random()),
           port(0),
           protoVer(0),
@@ -136,7 +138,8 @@ struct IA_USER {
     };
 
     IA_USER(const IA_USER & u)
-        : user(u.user),
+        : login(u.login),
+          user(u.user),
           phase(u.phase),
           lastSendAlive(u.lastSendAlive),
           rnd(u.rnd),
@@ -151,7 +154,8 @@ struct IA_USER {
         memcpy(&ctx, &u.ctx, sizeof(BLOWFISH_CTX));
     };
 
-    USER_PTR        user;
+    std::string     login;
+    CONST_USER_PTR  user;
     IA_PHASE        phase;
     UTIME           lastSendAlive;
     uint32_t        rnd;
@@ -177,7 +181,6 @@ public:
     FREEMB          GetFreeMbShowType() const { return freeMbShowType; };
 
 private:
-    int             ParseIntInRange(const std::string & str, int min, int max, int * val);
     int             userDelay;
     int             userTimeout;
     uint16_t        port;
@@ -185,17 +188,25 @@ private:
     FREEMB          freeMbShowType;
 };
 //-----------------------------------------------------------------------------
+class AUTH_IA;
+//-----------------------------------------------------------------------------
+class DEL_USER_NOTIFIER: public NOTIFIER_BASE<USER_PTR> {
+public:
+    DEL_USER_NOTIFIER(AUTH_IA & a) : auth(a) {}
+    virtual ~DEL_USER_NOTIFIER() {}
+
+    void Notify(const USER_PTR & user);
+private:
+    AUTH_IA & auth;
+};
+//-----------------------------------------------------------------------------
 class AUTH_IA :public AUTH {
-friend class DEL_USER_NONIFIER;
+friend class DEL_USER_NOTIFIER;
 public:
                         AUTH_IA();
     virtual             ~AUTH_IA();
 
     void                SetUsers(USERS * u) { users = u; }
-    void                SetTariffs(TARIFFS *) {}
-    void                SetAdmins(ADMINS *) {}
-    void                SetTraffcounter(TRAFFCOUNTER *) {}
-    void                SetStore(STORE *) {}
     void                SetStgSettings(const SETTINGS * s) { stgSettings = s; }
     void                SetSettings(const MODULE_SETTINGS & s) { settings = s; }
     int                 ParseSettings();
@@ -220,7 +231,7 @@ private:
     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);
@@ -275,8 +286,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);
 
-    bool                WaitPackets(int sd) const;
-
     BLOWFISH_CTX        ctxS;        //for loginS
 
     mutable std::string errorStr;
@@ -316,26 +325,14 @@ private:
 
     uint32_t            enabledDirs;
 
-    class DEL_USER_NONIFIER: public NOTIFIER_BASE<USER_PTR> {
-    public:
-        DEL_USER_NONIFIER(AUTH_IA & a) : auth(a) {}
-        virtual ~DEL_USER_NONIFIER() {}
-
-        void Notify(const USER_PTR & user)
-            {
-            auth.DelUser(user);
-            }
-
-    private:
-        AUTH_IA & auth;
-    } onDelUserNotifier;
+    DEL_USER_NOTIFIER   onDelUserNotifier;
 
     class UnauthorizeUser : std::unary_function<const std::pair<uint32_t, IA_USER> &, void> {
         public:
             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;
@@ -343,5 +340,10 @@ private:
 
 };
 //-----------------------------------------------------------------------------
+inline
+void DEL_USER_NOTIFIER::Notify(const USER_PTR & user)
+{
+    auth.DelUser(user);
+}
 
 #endif