X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/641204dfbdb9fc870cdd2e7f9e3169a44693e7bf..3a45cd9275dc9279e133deb0932402ae5f4d0b5f:/projects/stargazer/plugins/authorization/stress/stress.cpp diff --git a/projects/stargazer/plugins/authorization/stress/stress.cpp b/projects/stargazer/plugins/authorization/stress/stress.cpp index d0d86d02..481444b5 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(); @@ -86,21 +91,6 @@ AUTH_STRESS_SETTINGS::AUTH_STRESS_SETTINGS() { } //----------------------------------------------------------------------------- -int AUTH_STRESS_SETTINGS::ParseIntInRange(const string & str, int min, int max, int * val) -{ -if (str2x(str.c_str(), *val)) - { - errorStr = "Incorrect value \'" + str + "\'."; - return -1; - } -if (*val < min || *val > max) - { - errorStr = "Value \'" + str + "\' out of range."; - return -1; - } -return 0; -} -//----------------------------------------------------------------------------- int AUTH_STRESS_SETTINGS::ParseSettings(const MODULE_SETTINGS & s) { PARAM_VALUE pv; @@ -169,7 +159,7 @@ int AUTH_STRESS::Start() GetUsers(); nonstop = true; -list::iterator users_iter; +list::iterator users_iter; onAddUserNotifier.SetAuthorizator(this); onDelUserNotifier.SetAuthorizator(this); @@ -207,7 +197,7 @@ if (isRunning) { if (!isRunning) break; - stgUsleep(200000); + usleep(200000); } //after 5 seconds waiting thread still running. now killing it @@ -243,7 +233,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 +247,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 +267,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 +277,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 +285,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 +307,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 +316,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 +355,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 +370,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 +396,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); } //-----------------------------------------------------------------------------