From: Maxim Mamontov Date: Wed, 4 May 2011 14:04:14 +0000 (+0300) Subject: Fix auth_stress plugin to be up-to-date with current plugin interface X-Git-Tag: 2.407-p1~39 X-Git-Url: https://git.stg.codes/stg.git/commitdiff_plain/ce4df22d851ab9ba93374415363809aba1f43b59?hp=52f80d6ec77e44660f353e19c71e7994df59496d Fix auth_stress plugin to be up-to-date with current plugin interface --- diff --git a/projects/stargazer/plugins/authorization/stress/stress.cpp b/projects/stargazer/plugins/authorization/stress/stress.cpp index d0d86d02..756e6e1a 100644 --- a/projects/stargazer/plugins/authorization/stress/stress.cpp +++ b/projects/stargazer/plugins/authorization/stress/stress.cpp @@ -26,10 +26,15 @@ #include #include -#include + +#include +#include + +#include "stg/user.h" +#include "stg/common.h" +#include "stg/user_property.h" #include "stress.h" -#include "../../../user.h" class STRESS_CREATOR { @@ -48,7 +53,7 @@ public: delete dc; }; - BASE_PLUGIN * GetPlugin() + PLUGIN * GetPlugin() { return dc; }; @@ -62,10 +67,10 @@ STRESS_CREATOR stressc; //----------------------------------------------------------------------------- // ëÌÁÓÓ ÄÌÑ ÐÏÉÓËÁ ÀÚÅÒÁ × ÓÐÉÓËÅ ÎÏÔÉÆÉËÁÔÏÒÏ× template -class IS_CONTAINS_USER: public binary_function +class IS_CONTAINS_USER: public binary_function { public: - bool operator()(varType notifier, user_iter user) const + bool operator()(varType notifier, USER_PTR user) const { return notifier.GetUser() == user; }; @@ -73,7 +78,7 @@ public: //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -BASE_PLUGIN * GetPlugin() +PLUGIN * GetPlugin() { //printf("BASE_CAPTURER * GetCapturer()\n"); return stressc.GetPlugin(); @@ -169,7 +174,7 @@ int AUTH_STRESS::Start() GetUsers(); nonstop = true; -list::iterator users_iter; +list::iterator users_iter; onAddUserNotifier.SetAuthorizator(this); onDelUserNotifier.SetAuthorizator(this); @@ -207,7 +212,7 @@ if (isRunning) { if (!isRunning) break; - stgUsleep(200000); + usleep(200000); } //after 5 seconds waiting thread still running. now killing it @@ -243,7 +248,7 @@ uint16_t AUTH_STRESS::GetStopPosition() const return 70; } //----------------------------------------------------------------------------- -void AUTH_STRESS::SetUserNotifiers(user_iter u) +void AUTH_STRESS::SetUserNotifiers(USER_PTR u) { // ---------- IP ------------------- CHG_BEFORE_NOTIFIER BeforeChgIPNotifier; @@ -257,12 +262,12 @@ AfterChgIPNotifier.SetAuthorizator(this); 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 --------------- } //----------------------------------------------------------------------------- -void AUTH_STRESS::UnSetUserNotifiers(user_iter u) +void AUTH_STRESS::UnSetUserNotifiers(USER_PTR u) { // --- IP --- IS_CONTAINS_USER > IsContainsUserIPB; @@ -277,7 +282,7 @@ ipBIter = find_if(BeforeChgIPNotifierList.begin(), if (ipBIter != BeforeChgIPNotifierList.end()) { - ipBIter->GetUser()->property.ips.DelBeforeNotifier(&(*ipBIter)); + ipBIter->GetUser()->GetProperty().ips.DelBeforeNotifier(&(*ipBIter)); BeforeChgIPNotifierList.erase(ipBIter); } @@ -287,7 +292,7 @@ ipAIter = find_if(AfterChgIPNotifierList.begin(), if (ipAIter != AfterChgIPNotifierList.end()) { - ipAIter->GetUser()->property.ips.DelAfterNotifier(&(*ipAIter)); + ipAIter->GetUser()->GetProperty().ips.DelAfterNotifier(&(*ipAIter)); AfterChgIPNotifierList.erase(ipAIter); } // --- IP end --- @@ -295,7 +300,7 @@ if (ipAIter != AfterChgIPNotifierList.end()) //----------------------------------------------------------------------------- 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) @@ -317,7 +322,7 @@ while (1) users->CloseSearch(h); } //----------------------------------------------------------------------------- -void AUTH_STRESS::Unauthorize(user_iter u) const +void AUTH_STRESS::Unauthorize(USER_PTR u) const { if (!u->IsAuthorizedBy(this)) return; @@ -326,31 +331,31 @@ printfd(__FILE__, "Unauthorized user %s\n", u->GetLogin().c_str()); 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 (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()); } } } //----------------------------------------------------------------------------- -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); } //----------------------------------------------------------------------------- -void AUTH_STRESS::DelUser(user_iter u) +void AUTH_STRESS::DelUser(USER_PTR u) { Unauthorize(u); UnSetUserNotifiers(u); -list::iterator users_iter; +list::iterator users_iter; 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; @@ -380,21 +385,21 @@ ia->isRunning = true; while (ia->nonstop) { - printfd(__FILE__, "AUTH_STRESS::Run\n"); + printfd(__FILE__, "AUTH_STRESS::Run - averageTime: %d\n", random() % (2*ia->stressSettings.GetAverageOnlineTime())); - list::iterator users_iter; + list::iterator users_iter; 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); - 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); - printfd(__FILE__, "AUTH_STRESS::Unauthorize\n"); + printfd(__FILE__, "AUTH_STRESS::Unauthorize - user: '%s'\n", (*users_iter)->GetLogin().c_str()); } users_iter++; @@ -406,17 +411,16 @@ while (ia->nonstop) ia->isRunning = false; return NULL; } - //----------------------------------------------------------------------------- template -void CHG_BEFORE_NOTIFIER::Notify(const varParamType & oldValue, const varParamType & newValue) +void CHG_BEFORE_NOTIFIER::Notify(const varParamType &, const varParamType &) { auth->Unauthorize(user); } //----------------------------------------------------------------------------- template -void CHG_AFTER_NOTIFIER::Notify(const varParamType & oldValue, const varParamType & newValue) +void CHG_AFTER_NOTIFIER::Notify(const varParamType &, const varParamType &) { -auth->Unauthorize(user); +auth->Authorize(user); } //----------------------------------------------------------------------------- diff --git a/projects/stargazer/plugins/authorization/stress/stress.h b/projects/stargazer/plugins/authorization/stress/stress.h index 500835a4..85eb75be 100644 --- a/projects/stargazer/plugins/authorization/stress/stress.h +++ b/projects/stargazer/plugins/authorization/stress/stress.h @@ -33,10 +33,11 @@ #include #include -#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(); @@ -46,12 +47,12 @@ template class CHG_BEFORE_NOTIFIER: public PROPERTY_NOTIFIER_BASE { 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: - user_iter user; + USER_PTR user; const AUTH_STRESS * auth; }; //----------------------------------------------------------------------------- @@ -59,19 +60,19 @@ template class CHG_AFTER_NOTIFIER: public PROPERTY_NOTIFIER_BASE { 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: - user_iter user; + USER_PTR user; 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: @@ -81,19 +82,22 @@ private: }; //----------------------------------------------------------------------------- class AUTH_STRESS :public AUTH { +friend class CHG_BEFORE_NOTIFIER; +friend class CHG_AFTER_NOTIFIER; 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(); + int Reload() { return 0; } bool IsRunning(); void SetSettings(const MODULE_SETTINGS & s); int ParseSettings(); @@ -102,27 +106,27 @@ public: 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(); - 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 *); + bool nonstop; + mutable std::string errorStr; - AUTH_STRESS_SETTINGS stressSettings; + AUTH_STRESS_SETTINGS stressSettings; USERS * users; - std::list usersList; + std::list usersList; bool isRunning; MODULE_SETTINGS settings; @@ -132,13 +136,13 @@ private: std::list > BeforeChgIPNotifierList; std::list > AfterChgIPNotifierList; - class ADD_USER_NONIFIER: public NOTIFIER_BASE { + class ADD_USER_NONIFIER: public NOTIFIER_BASE { 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); } @@ -147,13 +151,13 @@ private: AUTH_STRESS * auth; } onAddUserNotifier; - class DEL_USER_NONIFIER: public NOTIFIER_BASE { + class DEL_USER_NONIFIER: public NOTIFIER_BASE { 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); }