X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/e767204dbf56ac466489c142f0acdaebd5d0b935..38da2fa514bbfb11197fa17ecb1cde480bb9e2cc:/projects/stargazer/user_property.h diff --git a/projects/stargazer/user_property.h b/projects/stargazer/user_property.h index c7019216..b269389a 100644 --- a/projects/stargazer/user_property.h +++ b/projects/stargazer/user_property.h @@ -12,12 +12,9 @@ $Author: faust $ #include #include #include -#include #include "store.h" -#include "stg_logger.h" #include "admin.h" -#include "settings.h" #include "notifer.h" #include "stg_logger.h" #include "stg_locker.h" @@ -29,16 +26,16 @@ extern const volatile time_t stgTime; template class USER_PROPERTY { public: - USER_PROPERTY(varT& val); + USER_PROPERTY(varT & val); virtual ~USER_PROPERTY(); void Set(const varT & rvalue); - USER_PROPERTY& operator= (const varT & rvalue); - USER_PROPERTY& operator-= (const varT & rvalue); + USER_PROPERTY & operator= (const varT & rvalue); + USER_PROPERTY & operator-= (const varT & rvalue); const varT * operator&() const throw(); - const varT& ConstData() const throw(); + const varT & ConstData() const throw(); operator const varT&() const throw() { @@ -55,57 +52,56 @@ public: void ModifyTime() throw(); private: - varT & value; - time_t modificationTime; - set *> beforeNotifiers; - set *> afterNotifiers; - mutable pthread_mutex_t mutex; + varT & value; + time_t modificationTime; + std::set *> beforeNotifiers; + std::set *> afterNotifiers; + pthread_mutex_t mutex; }; //----------------------------------------------------------------------------- template class USER_PROPERTY_LOGGED: public USER_PROPERTY { public: USER_PROPERTY_LOGGED(varT & val, - const string n, + const std::string n, bool isPassword, bool isStat, STG_LOGGER & logger, - const SETTINGS * s); + const std::string & sd); virtual ~USER_PROPERTY_LOGGED(); USER_PROPERTY_LOGGED * GetPointer() throw(); const varT & Get() const; - const string & GetName() const; + const std::string & GetName() const; bool Set(const varT & val, const ADMIN * admin, - const string & login, + const std::string & login, const STORE * store, - const string & msg = ""); + const std::string & msg = ""); private: - void WriteAccessDenied(const string & login, + void WriteAccessDenied(const std::string & login, const ADMIN * admin, - const string & parameter); + const std::string & parameter); - void WriteSuccessChange(const string & login, + void WriteSuccessChange(const std::string & login, const ADMIN * admin, - const string & parameter, - const string & oldValue, - const string & newValue, - const string & msg, + const std::string & parameter, + const std::string & oldValue, + const std::string & newValue, + const std::string & msg, const STORE * store); - void OnChange(const string & login, - const string & paramName, - const string & oldValue, - const string & newValue, + void OnChange(const std::string & login, + const std::string & paramName, + const std::string & oldValue, + const std::string & newValue, const ADMIN * admin); - string name; // parameter name. needed for logging - bool isPassword; // is parameter password. when true, it will be logged as ******* - bool isStat; // is parameter a stat data or conf data? - mutable pthread_mutex_t mutex; - STG_LOGGER & stgLogger; // server's logger - const SETTINGS * settings; + STG_LOGGER & stgLogger; + bool isPassword; + bool isStat; + std::string name; + const std::string scriptsDir; }; //----------------------------------------------------------------------------- class USER_PROPERTIES { @@ -122,7 +118,7 @@ private: USER_CONF conf; public: - USER_PROPERTIES(const SETTINGS * settings); + USER_PROPERTIES(const std::string & sd); USER_STAT & Stat() { return stat; } USER_CONF & Conf() { return conf; } @@ -142,32 +138,32 @@ public: USER_PROPERTY_LOGGED freeMb; USER_PROPERTY_LOGGED lastActivityTime; - USER_PROPERTY_LOGGED password; + USER_PROPERTY_LOGGED password; USER_PROPERTY_LOGGED passive; USER_PROPERTY_LOGGED disabled; USER_PROPERTY_LOGGED disabledDetailStat; USER_PROPERTY_LOGGED alwaysOnline; - USER_PROPERTY_LOGGED tariffName; - USER_PROPERTY_LOGGED nextTariff; - USER_PROPERTY_LOGGED address; - USER_PROPERTY_LOGGED note; - USER_PROPERTY_LOGGED group; - USER_PROPERTY_LOGGED email; - USER_PROPERTY_LOGGED phone; - USER_PROPERTY_LOGGED realName; + USER_PROPERTY_LOGGED tariffName; + USER_PROPERTY_LOGGED nextTariff; + USER_PROPERTY_LOGGED address; + USER_PROPERTY_LOGGED note; + USER_PROPERTY_LOGGED group; + USER_PROPERTY_LOGGED email; + USER_PROPERTY_LOGGED phone; + USER_PROPERTY_LOGGED realName; USER_PROPERTY_LOGGED credit; USER_PROPERTY_LOGGED creditExpire; USER_PROPERTY_LOGGED ips; - USER_PROPERTY_LOGGED userdata0; - USER_PROPERTY_LOGGED userdata1; - USER_PROPERTY_LOGGED userdata2; - USER_PROPERTY_LOGGED userdata3; - USER_PROPERTY_LOGGED userdata4; - USER_PROPERTY_LOGGED userdata5; - USER_PROPERTY_LOGGED userdata6; - USER_PROPERTY_LOGGED userdata7; - USER_PROPERTY_LOGGED userdata8; - USER_PROPERTY_LOGGED userdata9; + USER_PROPERTY_LOGGED userdata0; + USER_PROPERTY_LOGGED userdata1; + USER_PROPERTY_LOGGED userdata2; + USER_PROPERTY_LOGGED userdata3; + USER_PROPERTY_LOGGED userdata4; + USER_PROPERTY_LOGGED userdata5; + USER_PROPERTY_LOGGED userdata6; + USER_PROPERTY_LOGGED userdata7; + USER_PROPERTY_LOGGED userdata8; + USER_PROPERTY_LOGGED userdata9; }; //============================================================================= @@ -175,7 +171,7 @@ public: //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- template -USER_PROPERTY::USER_PROPERTY(varT& val) +USER_PROPERTY::USER_PROPERTY(varT & val) : value(val) { pthread_mutex_init(&mutex, NULL); @@ -190,7 +186,7 @@ USER_PROPERTY::~USER_PROPERTY() template void USER_PROPERTY::ModifyTime() throw() { - modificationTime = stgTime; +modificationTime = stgTime; } //----------------------------------------------------------------------------- template @@ -198,7 +194,7 @@ void USER_PROPERTY::Set(const varT & rvalue) { STG_LOCKER locker(&mutex, __FILE__, __LINE__); -typename set *>::iterator ni; +typename std::set *>::iterator ni; varT oldVal = value; @@ -215,7 +211,7 @@ while (ni != afterNotifiers.end()) } //----------------------------------------------------------------------------- template -USER_PROPERTY& USER_PROPERTY::operator= (const varT & newValue) +USER_PROPERTY & USER_PROPERTY::operator= (const varT & newValue) { Set(newValue); return *this; @@ -236,7 +232,7 @@ return &value; } //----------------------------------------------------------------------------- template -const varT& USER_PROPERTY::ConstData() const throw() +const varT & USER_PROPERTY::ConstData() const throw() { return value; } @@ -278,22 +274,20 @@ return modificationTime; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- template -USER_PROPERTY_LOGGED::USER_PROPERTY_LOGGED(varT& val, - string n, +USER_PROPERTY_LOGGED::USER_PROPERTY_LOGGED(varT & val, + std::string n, bool isPass, bool isSt, STG_LOGGER & logger, - const SETTINGS * s) + const std::string & sd) : USER_PROPERTY(val), - stgLogger(logger) + stgLogger(logger), + isPassword(isPass), + isStat(isSt), + name(n), + scriptsDir(sd) { -pthread_mutex_init(&mutex, NULL); -STG_LOCKER locker(&mutex, __FILE__, __LINE__); -isPassword = isPass; -isStat = isSt; -name = n; -settings = s; } //----------------------------------------------------------------------------- template @@ -314,7 +308,7 @@ return USER_PROPERTY::ConstData(); }; //------------------------------------------------------------------------- template -const string & USER_PROPERTY_LOGGED::GetName() const +const std::string & USER_PROPERTY_LOGGED::GetName() const { return name; }; @@ -322,17 +316,18 @@ return name; template bool USER_PROPERTY_LOGGED::Set(const varT & val, const ADMIN * admin, - const string & login, + const std::string & login, const STORE * store, - const string & msg) + const std::string & msg) { -STG_LOCKER locker(&mutex, __FILE__, __LINE__); - const PRIV * priv = admin->GetPriv(); -string adm_login = admin->GetLogin(); -string adm_ip = admin->GetIPStr(); +std::string adm_login = admin->GetLogin(); +std::string adm_ip = admin->GetIPStr(); -if ((priv->userConf && !isStat) || (priv->userStat && isStat) || (priv->userPasswd && isPassword) || (priv->userCash && name == "cash")) +if ((priv->userConf && !isStat) || + (priv->userStat && isStat) || + (priv->userPasswd && isPassword) || + (priv->userCash && name == "cash")) { stringstream oldVal; stringstream newVal; @@ -365,21 +360,21 @@ return true; } //------------------------------------------------------------------------- template -void USER_PROPERTY_LOGGED::WriteAccessDenied(const string & login, - const ADMIN * admin, - const string & parameter) +void USER_PROPERTY_LOGGED::WriteAccessDenied(const std::string & login, + const ADMIN * admin, + const std::string & parameter) { stgLogger("%s Change user \'%s.\' Parameter \'%s\'. Access denied.", admin->GetLogStr().c_str(), login.c_str(), parameter.c_str()); } //------------------------------------------------------------------------- template -void USER_PROPERTY_LOGGED::WriteSuccessChange(const string & login, +void USER_PROPERTY_LOGGED::WriteSuccessChange(const std::string & login, const ADMIN * admin, - const string & parameter, - const string & oldValue, - const string & newValue, - const string & msg, + const std::string & parameter, + const std::string & oldValue, + const std::string & newValue, + const std::string & msg, const STORE * store) { stgLogger("%s User \'%s\': \'%s\' parameter changed from \'%s\' to \'%s\'. %s", @@ -394,36 +389,27 @@ store->WriteUserChgLog(login, admin->GetLogin(), admin->GetIP(), parameter, oldV } //------------------------------------------------------------------------- template -void USER_PROPERTY_LOGGED::OnChange(const string & login, - const string & paramName, - const string & oldValue, - const string & newValue, +void USER_PROPERTY_LOGGED::OnChange(const std::string & login, + const std::string & paramName, + const std::string & oldValue, + const std::string & newValue, const ADMIN * admin) { -string str1; - -str1 = settings->GetConfDir() + "/OnChange"; +std::string filePath = scriptsDir + "/OnChange"; -if (access(str1.c_str(), X_OK) == 0) +if (access(filePath.c_str(), X_OK) == 0) { - string str2("\"" + str1 + "\" \"" + login + "\" \"" + paramName + "\" \"" + oldValue + "\" \"" + newValue + "\" \"" + admin->GetLogin() + "\" \"" + admin->GetIPStr() + "\""); - ScriptExec(str2); + std::string execString("\"" + filePath + "\" \"" + login + "\" \"" + paramName + "\" \"" + oldValue + "\" \"" + newValue + "\" \"" + admin->GetLogin() + "\" \"" + admin->GetIPStr() + "\""); + ScriptExec(execString); } else { - stgLogger("Script OnChange cannot be executed. File %s not found.", str1.c_str()); + stgLogger("Script OnChange cannot be executed. File %s not found.", filePath.c_str()); } } //------------------------------------------------------------------------- //------------------------------------------------------------------------- //------------------------------------------------------------------------- -/*template -stringstream & operator<< (stringstream & s, const USER_PROPERTY & v) -{ -s << v.ConstData(); -return s; -}*/ -//----------------------------------------------------------------------------- template ostream & operator<< (ostream & stream, const USER_PROPERTY & value) {