]> git.stg.codes - stg.git/commitdiff
Fix auth_stress plugin to be up-to-date with current plugin interface
authorMaxim Mamontov <faust@gts.dp.ua>
Wed, 4 May 2011 14:04:14 +0000 (17:04 +0300)
committerMaxim Mamontov <faust@gts.dp.ua>
Wed, 4 May 2011 14:04:14 +0000 (17:04 +0300)
projects/stargazer/plugins/authorization/stress/stress.cpp
projects/stargazer/plugins/authorization/stress/stress.h

index d0d86d02ba0fd162dcb3fdef6410e20c9549bd0c..756e6e1a5e79ab924a79d1c03110fa98f11d1dea 100644 (file)
 
 #include <stdio.h>
 #include <unistd.h>
 
 #include <stdio.h>
 #include <unistd.h>
-#include <signal.h>
+
+#include <csignal>
+#include <algorithm>
+
+#include "stg/user.h"
+#include "stg/common.h"
+#include "stg/user_property.h"
 
 #include "stress.h"
 
 #include "stress.h"
-#include "../../../user.h"
 
 class STRESS_CREATOR
 {
 
 class STRESS_CREATOR
 {
@@ -48,7 +53,7 @@ public:
         delete dc;
         };
 
         delete dc;
         };
 
-    BASE_PLUGIN * GetPlugin()
+    PLUGIN * GetPlugin()
     {
         return dc;
     };
     {
         return dc;
     };
@@ -62,10 +67,10 @@ STRESS_CREATOR stressc;
 //-----------------------------------------------------------------------------
 // ëÌÁÓÓ ÄÌÑ ÐÏÉÓËÁ ÀÚÅÒÁ × ÓÐÉÓËÅ ÎÏÔÉÆÉËÁÔÏÒÏ×
 template <typename varType>
 //-----------------------------------------------------------------------------
 // ëÌÁÓÓ ÄÌÑ ÐÏÉÓËÁ ÀÚÅÒÁ × ÓÐÉÓËÅ ÎÏÔÉÆÉËÁÔÏÒÏ×
 template <typename varType>
-class IS_CONTAINS_USER: public binary_function<varType, user_iter, bool>
+class IS_CONTAINS_USER: public binary_function<varType, USER_PTR, bool>
 {
 public:
 {
 public:
-    bool operator()(varType notifier, user_iter user) const
+    bool operator()(varType notifier, USER_PTR user) const
         {
         return notifier.GetUser() == user;
         };
         {
         return notifier.GetUser() == user;
         };
@@ -73,7 +78,7 @@ public:
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-BASE_PLUGIN * GetPlugin()
+PLUGIN * GetPlugin()
 {
 //printf("BASE_CAPTURER * GetCapturer()\n");
 return stressc.GetPlugin();
 {
 //printf("BASE_CAPTURER * GetCapturer()\n");
 return stressc.GetPlugin();
@@ -169,7 +174,7 @@ int AUTH_STRESS::Start()
 GetUsers();
 nonstop = true;
 
 GetUsers();
 nonstop = true;
 
-list<user_iter>::iterator users_iter;
+list<USER_PTR>::iterator users_iter;
 
 onAddUserNotifier.SetAuthorizator(this);
 onDelUserNotifier.SetAuthorizator(this);
 
 onAddUserNotifier.SetAuthorizator(this);
 onDelUserNotifier.SetAuthorizator(this);
@@ -207,7 +212,7 @@ if (isRunning)
         {
         if (!isRunning)
             break;
         {
         if (!isRunning)
             break;
-        stgUsleep(200000);
+        usleep(200000);
         }
 
     //after 5 seconds waiting thread still running. now killing it
         }
 
     //after 5 seconds waiting thread still running. now killing it
@@ -243,7 +248,7 @@ uint16_t AUTH_STRESS::GetStopPosition() const
 return 70;
 }
 //-----------------------------------------------------------------------------
 return 70;
 }
 //-----------------------------------------------------------------------------
-void AUTH_STRESS::SetUserNotifiers(user_iter u)
+void AUTH_STRESS::SetUserNotifiers(USER_PTR u)
 {
 // ---------- IP -------------------
 CHG_BEFORE_NOTIFIER<USER_IPS> BeforeChgIPNotifier;
 {
 // ---------- IP -------------------
 CHG_BEFORE_NOTIFIER<USER_IPS> BeforeChgIPNotifier;
@@ -257,12 +262,12 @@ AfterChgIPNotifier.SetAuthorizator(this);
 AfterChgIPNotifier.SetUser(u);
 AfterChgIPNotifierList.push_front(AfterChgIPNotifier);
 
 AfterChgIPNotifier.SetUser(u);
 AfterChgIPNotifierList.push_front(AfterChgIPNotifier);
 
-u->property.ips.AddBeforeNotifier(&(*BeforeChgIPNotifierList.begin()));
-u->property.ips.AddAfterNotifier(&(*AfterChgIPNotifierList.begin()));
+u->GetProperty().ips.AddBeforeNotifier(&(*BeforeChgIPNotifierList.begin()));
+u->GetProperty().ips.AddAfterNotifier(&(*AfterChgIPNotifierList.begin()));
 // ---------- IP end ---------------
 }
 //-----------------------------------------------------------------------------
 // ---------- IP end ---------------
 }
 //-----------------------------------------------------------------------------
-void AUTH_STRESS::UnSetUserNotifiers(user_iter u)
+void AUTH_STRESS::UnSetUserNotifiers(USER_PTR u)
 {
 // ---          IP              ---
 IS_CONTAINS_USER<CHG_BEFORE_NOTIFIER<USER_IPS> > IsContainsUserIPB;
 {
 // ---          IP              ---
 IS_CONTAINS_USER<CHG_BEFORE_NOTIFIER<USER_IPS> > IsContainsUserIPB;
@@ -277,7 +282,7 @@ ipBIter = find_if(BeforeChgIPNotifierList.begin(),
 
 if (ipBIter != BeforeChgIPNotifierList.end())
     {
 
 if (ipBIter != BeforeChgIPNotifierList.end())
     {
-    ipBIter->GetUser()->property.ips.DelBeforeNotifier(&(*ipBIter));
+    ipBIter->GetUser()->GetProperty().ips.DelBeforeNotifier(&(*ipBIter));
     BeforeChgIPNotifierList.erase(ipBIter);
     }
 
     BeforeChgIPNotifierList.erase(ipBIter);
     }
 
@@ -287,7 +292,7 @@ ipAIter = find_if(AfterChgIPNotifierList.begin(),
 
 if (ipAIter != AfterChgIPNotifierList.end())
     {
 
 if (ipAIter != AfterChgIPNotifierList.end())
     {
-    ipAIter->GetUser()->property.ips.DelAfterNotifier(&(*ipAIter));
+    ipAIter->GetUser()->GetProperty().ips.DelAfterNotifier(&(*ipAIter));
     AfterChgIPNotifierList.erase(ipAIter);
     }
 // ---          IP end          ---
     AfterChgIPNotifierList.erase(ipAIter);
     }
 // ---          IP end          ---
@@ -295,7 +300,7 @@ if (ipAIter != AfterChgIPNotifierList.end())
 //-----------------------------------------------------------------------------
 void AUTH_STRESS::GetUsers()
 {
 //-----------------------------------------------------------------------------
 void AUTH_STRESS::GetUsers()
 {
-user_iter u;
+USER_PTR u;
 printfd(__FILE__, "users->OpenSearch() usernum=%d\n", users->GetUserNum());
 int h = users->OpenSearch();
 if (!h)
 printfd(__FILE__, "users->OpenSearch() usernum=%d\n", users->GetUserNum());
 int h = users->OpenSearch();
 if (!h)
@@ -317,7 +322,7 @@ while (1)
 users->CloseSearch(h);
 }
 //-----------------------------------------------------------------------------
 users->CloseSearch(h);
 }
 //-----------------------------------------------------------------------------
-void AUTH_STRESS::Unauthorize(user_iter u) const
+void AUTH_STRESS::Unauthorize(USER_PTR u) const
 {
 if (!u->IsAuthorizedBy(this))
     return;
 {
 if (!u->IsAuthorizedBy(this))
     return;
@@ -326,31 +331,31 @@ printfd(__FILE__, "Unauthorized user %s\n", u->GetLogin().c_str());
 u->Unauthorize(this);
 }
 //-----------------------------------------------------------------------------
 u->Unauthorize(this);
 }
 //-----------------------------------------------------------------------------
-void AUTH_STRESS::Authorize(user_iter u) const
+void AUTH_STRESS::Authorize(USER_PTR u) const
 {
 {
-USER_IPS ips = u->property.ips;
+USER_IPS ips = u->GetProperty().ips;
 if (ips.OnlyOneIP() && !u->IsAuthorizedBy(this))
     {
 if (ips.OnlyOneIP() && !u->IsAuthorizedBy(this))
     {
-    if (u->Authorize(ips[0].ip, "", 0xFFffFFff, this) == 0)
+    if (u->Authorize(ips[0].ip, 0xFFffFFff, this) == 0)
         {
         printfd(__FILE__, "Authorized user %s\n", u->GetLogin().c_str());
         }
     }
 }
 //-----------------------------------------------------------------------------
         {
         printfd(__FILE__, "Authorized user %s\n", u->GetLogin().c_str());
         }
     }
 }
 //-----------------------------------------------------------------------------
-void AUTH_STRESS::AddUser(user_iter u)
+void AUTH_STRESS::AddUser(USER_PTR u)
 {
 //printfd(__FILE__, "User added to list %s\n", u->GetLogin().c_str());
 SetUserNotifiers(u);
 usersList.push_back(u);
 }
 //-----------------------------------------------------------------------------
 {
 //printfd(__FILE__, "User added to list %s\n", u->GetLogin().c_str());
 SetUserNotifiers(u);
 usersList.push_back(u);
 }
 //-----------------------------------------------------------------------------
-void AUTH_STRESS::DelUser(user_iter u)
+void AUTH_STRESS::DelUser(USER_PTR u)
 {
 Unauthorize(u);
 UnSetUserNotifiers(u);
 
 {
 Unauthorize(u);
 UnSetUserNotifiers(u);
 
-list<user_iter>::iterator users_iter;
+list<USER_PTR>::iterator users_iter;
 users_iter = usersList.begin();
 
 while (users_iter != usersList.end())
 users_iter = usersList.begin();
 
 while (users_iter != usersList.end())
@@ -365,7 +370,7 @@ while (users_iter != usersList.end())
     }
 }
 //-----------------------------------------------------------------------------
     }
 }
 //-----------------------------------------------------------------------------
-int AUTH_STRESS::SendMessage(const STG_MSG & msg, uint32_t ip) const
+int AUTH_STRESS::SendMessage(const STG_MSG &, uint32_t) const
 {
 errorStr = "Authorization modele \'AUTH_STRESS\' does not support sending messages";
 return -1;
 {
 errorStr = "Authorization modele \'AUTH_STRESS\' does not support sending messages";
 return -1;
@@ -380,21 +385,21 @@ ia->isRunning = true;
 
 while (ia->nonstop)
     {
 
 while (ia->nonstop)
     {
-    printfd(__FILE__, "AUTH_STRESS::Run\n");
+    printfd(__FILE__, "AUTH_STRESS::Run - averageTime: %d\n", random() % (2*ia->stressSettings.GetAverageOnlineTime()));
 
 
-    list<user_iter>::iterator users_iter;
+    list<USER_PTR>::iterator users_iter;
     users_iter = ia->usersList.begin();
     while (users_iter != ia->usersList.end())
         {
     users_iter = ia->usersList.begin();
     while (users_iter != ia->usersList.end())
         {
-        if (random() % 2*ia->stressSettings.GetAverageOnlineTime() == 1)
+        if (random() % (2*ia->stressSettings.GetAverageOnlineTime()) == 1)
             {
             ia->Authorize(*users_iter);
             {
             ia->Authorize(*users_iter);
-            printfd(__FILE__, "AUTH_STRESS::Authorize\n");
+            printfd(__FILE__, "AUTH_STRESS::Authorize - user: '%s'\n", (*users_iter)->GetLogin().c_str());
             }
             }
-        if (random() % 2*ia->stressSettings.GetAverageOnlineTime() == 2)
+        if (random() % (2*ia->stressSettings.GetAverageOnlineTime()) == 2)
             {
             ia->Unauthorize(*users_iter);
             {
             ia->Unauthorize(*users_iter);
-            printfd(__FILE__, "AUTH_STRESS::Unauthorize\n");
+            printfd(__FILE__, "AUTH_STRESS::Unauthorize - user: '%s'\n", (*users_iter)->GetLogin().c_str());
             }
 
         users_iter++;
             }
 
         users_iter++;
@@ -406,17 +411,16 @@ while (ia->nonstop)
 ia->isRunning = false;
 return NULL;
 }
 ia->isRunning = false;
 return NULL;
 }
-
 //-----------------------------------------------------------------------------
 template <typename varParamType>
 //-----------------------------------------------------------------------------
 template <typename varParamType>
-void CHG_BEFORE_NOTIFIER<varParamType>::Notify(const varParamType & oldValue, const varParamType & newValue)
+void CHG_BEFORE_NOTIFIER<varParamType>::Notify(const varParamType &, const varParamType &)
 {
 auth->Unauthorize(user);
 }
 //-----------------------------------------------------------------------------
 template <typename varParamType>
 {
 auth->Unauthorize(user);
 }
 //-----------------------------------------------------------------------------
 template <typename varParamType>
-void CHG_AFTER_NOTIFIER<varParamType>::Notify(const varParamType & oldValue, const varParamType & newValue)
+void CHG_AFTER_NOTIFIER<varParamType>::Notify(const varParamType &, const varParamType &)
 {
 {
-auth->Unauthorize(user);
+auth->Authorize(user);
 }
 //-----------------------------------------------------------------------------
 }
 //-----------------------------------------------------------------------------
index 500835a487cd6680627620aef557e2c34eb3997e..85eb75be83094e5a22fd2722a7b9fe5ca8747712 100644 (file)
 #include <string>
 #include <list>
 
 #include <string>
 #include <list>
 
-#include "auth.h"
-#include "notifer.h"
-#include "user_ips.h"
-#include "users.h"
+#include "stg/auth.h"
+#include "stg/notifer.h"
+#include "stg/user_ips.h"
+#include "stg/users.h"
+#include "stg/module_settings.h"
 
 extern "C" PLUGIN * GetPlugin();
 
 
 extern "C" PLUGIN * GetPlugin();
 
@@ -46,12 +47,12 @@ template <typename varParamType>
 class CHG_BEFORE_NOTIFIER: public PROPERTY_NOTIFIER_BASE<varParamType> {
 public:
     void Notify(const varParamType & oldValue, const varParamType & newValue);
 class CHG_BEFORE_NOTIFIER: public PROPERTY_NOTIFIER_BASE<varParamType> {
 public:
     void Notify(const varParamType & oldValue, const varParamType & newValue);
-    void        SetUser(user_iter u) { user = u; }
-    user_iter   GetUser() {return user; }
+    void        SetUser(USER_PTR u) { user = u; }
+    USER_PTR    GetUser() {return user; }
     void        SetAuthorizator(const AUTH_STRESS * a) { auth = a; }
 
 private:
     void        SetAuthorizator(const AUTH_STRESS * a) { auth = a; }
 
 private:
-    user_iter   user;
+    USER_PTR    user;
     const       AUTH_STRESS * auth;
 };
 //-----------------------------------------------------------------------------
     const       AUTH_STRESS * auth;
 };
 //-----------------------------------------------------------------------------
@@ -59,19 +60,19 @@ template <typename varParamType>
 class CHG_AFTER_NOTIFIER: public PROPERTY_NOTIFIER_BASE<varParamType> {
 public:
     void        Notify(const varParamType & oldValue, const varParamType & newValue);
 class CHG_AFTER_NOTIFIER: public PROPERTY_NOTIFIER_BASE<varParamType> {
 public:
     void        Notify(const varParamType & oldValue, const varParamType & newValue);
-    void        SetUser(user_iter u) { user = u; }
-    user_iter   GetUser() {return user; }
+    void        SetUser(USER_PTR u) { user = u; }
+    USER_PTR    GetUser() {return user; }
     void        SetAuthorizator(const AUTH_STRESS * a) { auth = a; }
 
 private:
     void        SetAuthorizator(const AUTH_STRESS * a) { auth = a; }
 
 private:
-    user_iter   user;
+    USER_PTR   user;
     const AUTH_STRESS * auth;
 };
 //-----------------------------------------------------------------------------
 class AUTH_STRESS_SETTINGS {
 public:
                     AUTH_STRESS_SETTINGS();
     const AUTH_STRESS * auth;
 };
 //-----------------------------------------------------------------------------
 class AUTH_STRESS_SETTINGS {
 public:
                     AUTH_STRESS_SETTINGS();
-    const std::string &   GetStrError() const { return errorStr; }
+    const std::string & GetStrError() const { return errorStr; }
     int             ParseSettings(const MODULE_SETTINGS & s);
     int             GetAverageOnlineTime() const;
 private:
     int             ParseSettings(const MODULE_SETTINGS & s);
     int             GetAverageOnlineTime() const;
 private:
@@ -81,19 +82,22 @@ private:
 };
 //-----------------------------------------------------------------------------
 class AUTH_STRESS :public AUTH {
 };
 //-----------------------------------------------------------------------------
 class AUTH_STRESS :public AUTH {
+friend class CHG_BEFORE_NOTIFIER<USER_IPS>;
+friend class CHG_AFTER_NOTIFIER<USER_IPS>;
 public:
     AUTH_STRESS();
     virtual ~AUTH_STRESS() {}
 
     void                SetUsers(USERS * u);
 public:
     AUTH_STRESS();
     virtual ~AUTH_STRESS() {}
 
     void                SetUsers(USERS * u);
-    void                SetTariffs(TARIFFS * t) {}
-    void                SetAdmins(ADMINS * a) {}
-    void                SetTraffcounter(TRAFFCOUNTER * tc) {}
-    void                SetStore(STORE * ) {}
+    void                SetTariffs(TARIFFS *) {}
+    void                SetAdmins(ADMINS *) {}
+    void                SetTraffcounter(TRAFFCOUNTER *) {}
+    void                SetStore(STORE *) {}
     void                SetStgSettings(const SETTINGS *) {}
 
     int                 Start();
     int                 Stop();
     void                SetStgSettings(const SETTINGS *) {}
 
     int                 Start();
     int                 Stop();
+    int                 Reload() { return 0; }
     bool                IsRunning();
     void                SetSettings(const MODULE_SETTINGS & s);
     int                 ParseSettings();
     bool                IsRunning();
     void                SetSettings(const MODULE_SETTINGS & s);
     int                 ParseSettings();
@@ -102,27 +106,27 @@ public:
     uint16_t            GetStartPosition() const;
     uint16_t            GetStopPosition() const;
 
     uint16_t            GetStartPosition() const;
     uint16_t            GetStopPosition() const;
 
-    void                AddUser(user_iter u);
-    void                DelUser(user_iter u);
-
-    void                Authorize(user_iter u) const;
-    void                Unauthorize(user_iter u) const;
-
     int                 SendMessage(const STG_MSG & msg, uint32_t ip) const;
 
 private:
     void                GetUsers();
     int                 SendMessage(const STG_MSG & msg, uint32_t ip) const;
 
 private:
     void                GetUsers();
-    void                SetUserNotifiers(user_iter u);
-    void                UnSetUserNotifiers(user_iter u);
+    void                SetUserNotifiers(USER_PTR u);
+    void                UnSetUserNotifiers(USER_PTR u);
 
 
-    bool                nonstop;
+    void                AddUser(USER_PTR u);
+    void                DelUser(USER_PTR u);
+
+    void                Authorize(USER_PTR u) const;
+    void                Unauthorize(USER_PTR u) const;
 
     static void *       Run(void *);
 
 
     static void *       Run(void *);
 
+    bool                nonstop;
+
     mutable std::string errorStr;
     mutable std::string errorStr;
-    AUTH_STRESS_SETTINGS    stressSettings;
+    AUTH_STRESS_SETTINGS stressSettings;
     USERS             * users;
     USERS             * users;
-    std::list<user_iter> usersList;
+    std::list<USER_PTR> usersList;
     bool                isRunning;
     MODULE_SETTINGS     settings;
 
     bool                isRunning;
     MODULE_SETTINGS     settings;
 
@@ -132,13 +136,13 @@ private:
     std::list<CHG_BEFORE_NOTIFIER<USER_IPS> > BeforeChgIPNotifierList;
     std::list<CHG_AFTER_NOTIFIER<USER_IPS> > AfterChgIPNotifierList;
 
     std::list<CHG_BEFORE_NOTIFIER<USER_IPS> > BeforeChgIPNotifierList;
     std::list<CHG_AFTER_NOTIFIER<USER_IPS> > AfterChgIPNotifierList;
 
-    class ADD_USER_NONIFIER: public NOTIFIER_BASE<user_iter> {
+    class ADD_USER_NONIFIER: public NOTIFIER_BASE<USER_PTR> {
     public:
         ADD_USER_NONIFIER() {}
         virtual ~ADD_USER_NONIFIER() {}
 
         void SetAuthorizator(AUTH_STRESS * a) { auth = a; }
     public:
         ADD_USER_NONIFIER() {}
         virtual ~ADD_USER_NONIFIER() {}
 
         void SetAuthorizator(AUTH_STRESS * a) { auth = a; }
-        void Notify(const user_iter & user)
+        void Notify(const USER_PTR & user)
             {
             auth->AddUser(user);
             }
             {
             auth->AddUser(user);
             }
@@ -147,13 +151,13 @@ private:
         AUTH_STRESS * auth;
     } onAddUserNotifier;
 
         AUTH_STRESS * auth;
     } onAddUserNotifier;
 
-    class DEL_USER_NONIFIER: public NOTIFIER_BASE<user_iter> {
+    class DEL_USER_NONIFIER: public NOTIFIER_BASE<USER_PTR> {
     public:
         DEL_USER_NONIFIER() {}
         virtual ~DEL_USER_NONIFIER() {}
 
         void SetAuthorizator(AUTH_STRESS * a) { auth = a; }
     public:
         DEL_USER_NONIFIER() {}
         virtual ~DEL_USER_NONIFIER() {}
 
         void SetAuthorizator(AUTH_STRESS * a) { auth = a; }
-        void Notify(const user_iter & user)
+        void Notify(const USER_PTR & user)
             {
             auth->DelUser(user);
             }
             {
             auth->DelUser(user);
             }