X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/641204dfbdb9fc870cdd2e7f9e3169a44693e7bf..e3c5fe3cce7be5d2b48bfcf11a1de20ca12fc7e0:/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..6473b57e 100644 --- a/projects/stargazer/plugins/authorization/stress/stress.cpp +++ b/projects/stargazer/plugins/authorization/stress/stress.cpp @@ -26,46 +26,30 @@ #include #include -#include -#include "stress.h" -#include "../../../user.h" +#include +#include -class STRESS_CREATOR -{ -private: - AUTH_STRESS * dc; +#include "stg/user.h" +#include "stg/common.h" +#include "stg/user_property.h" +#include "stg/plugin_creator.h" -public: - STRESS_CREATOR() - { - printfd(__FILE__, "constructor STRESS_CREATOR\n"); - dc = new AUTH_STRESS(); - }; - ~STRESS_CREATOR() - { - printfd(__FILE__, "destructor STRESS_CREATOR\n"); - delete dc; - }; +#include "stress.h" - BASE_PLUGIN * GetPlugin() - { - return dc; - }; -}; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -STRESS_CREATOR stressc; +PLUGIN_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 +57,7 @@ public: //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -BASE_PLUGIN * GetPlugin() +PLUGIN * GetPlugin() { //printf("BASE_CAPTURER * GetCapturer()\n"); return stressc.GetPlugin(); @@ -86,21 +70,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 +138,7 @@ int AUTH_STRESS::Start() GetUsers(); nonstop = true; -list::iterator users_iter; +list::iterator users_iter; onAddUserNotifier.SetAuthorizator(this); onDelUserNotifier.SetAuthorizator(this); @@ -189,7 +158,7 @@ users_iter = usersList.begin(); while (users_iter != usersList.end()) { Authorize(*users_iter); - users_iter++; + ++users_iter; } //isRunning = true; @@ -207,7 +176,8 @@ if (isRunning) { if (!isRunning) break; - stgUsleep(200000); + struct timespec ts = {0, 200000000}; + nanosleep(&ts, NULL); } //after 5 seconds waiting thread still running. now killing it @@ -235,15 +205,15 @@ return isRunning; //----------------------------------------------------------------------------- uint16_t AUTH_STRESS::GetStartPosition() const { -return 70; +return 30; } //----------------------------------------------------------------------------- uint16_t AUTH_STRESS::GetStopPosition() const { -return 70; +return 30; } //----------------------------------------------------------------------------- -void AUTH_STRESS::SetUserNotifiers(user_iter u) +void AUTH_STRESS::SetUserNotifiers(USER_PTR u) { // ---------- IP ------------------- CHG_BEFORE_NOTIFIER BeforeChgIPNotifier; @@ -257,12 +227,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 +247,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 +257,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 +265,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 +287,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 +296,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()) @@ -361,11 +331,11 @@ while (users_iter != usersList.end()) printfd(__FILE__, "User removed from list %s\n", u->GetLogin().c_str()); break; } - users_iter++; + ++users_iter; } } //----------------------------------------------------------------------------- -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; @@ -373,31 +343,30 @@ return -1; //----------------------------------------------------------------------------- void * AUTH_STRESS::Run(void * d) { -AUTH_STRESS * ia; -ia = (AUTH_STRESS *)d; +AUTH_STRESS * ia = static_cast(d); 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++; + ++users_iter; } sleep(1); @@ -406,17 +375,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); } //-----------------------------------------------------------------------------