X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/de673871df0a5f56ce8c8ee1c075eb405b019f70..040deac4b8ae0728e3ff7635bb16595ec08d5817:/include/stg/user_property.h diff --git a/include/stg/user_property.h b/include/stg/user_property.h index 7c0f4da1..f024f457 100644 --- a/include/stg/user_property.h +++ b/include/stg/user_property.h @@ -18,7 +18,9 @@ $Author: faust $ #include "stg/logger.h" #include "stg/locker.h" +#include "stg/settings.h" #include "stg/scriptexecuter.h" +#include "stg/common.h" #include "store.h" #include "admin.h" @@ -32,6 +34,8 @@ public: virtual std::string ToString() const = 0; }; //----------------------------------------------------------------------------- +typedef std::map REGISTRY; +//----------------------------------------------------------------------------- template class USER_PROPERTY : public USER_PROPERTY_BASE { public: @@ -73,11 +77,12 @@ public: bool isPassword, bool isStat, STG_LOGGER & logger, - const std::string & sd, - std::map & properties); + const SETTINGS & s, + REGISTRY & properties); virtual ~USER_PROPERTY_LOGGED() {} USER_PROPERTY_LOGGED * GetPointer() throw() { return this; } + const USER_PROPERTY_LOGGED * GetPointer() const throw() { return this; } const varT & Get() const { return USER_PROPERTY::ConstData(); } const std::string & GetName() const { return name; } bool Set(const varT & val, @@ -108,7 +113,7 @@ private: bool isPassword; bool isStat; std::string name; - const std::string scriptsDir; + const SETTINGS& settings; }; //----------------------------------------------------------------------------- class USER_PROPERTIES : private NONCOPYABLE { @@ -124,9 +129,9 @@ private: USER_STAT stat; USER_CONF conf; - std::map properties; + REGISTRY properties; public: - USER_PROPERTIES(const std::string & sd); + USER_PROPERTIES(const SETTINGS& s); USER_STAT & Stat() { return stat; } USER_CONF & Conf() { return conf; } @@ -211,7 +216,7 @@ template inline void USER_PROPERTY::Set(const varT & rvalue) { -STG_LOCKER locker(&mutex, __FILE__, __LINE__); +STG_LOCKER locker(&mutex); typename std::set *>::iterator ni; @@ -241,7 +246,7 @@ template inline void USER_PROPERTY::AddBeforeNotifier(PROPERTY_NOTIFIER_BASE * n) { -STG_LOCKER locker(&mutex, __FILE__, __LINE__); +STG_LOCKER locker(&mutex); beforeNotifiers.insert(n); } //----------------------------------------------------------------------------- @@ -249,7 +254,7 @@ template inline void USER_PROPERTY::DelBeforeNotifier(const PROPERTY_NOTIFIER_BASE * n) { -STG_LOCKER locker(&mutex, __FILE__, __LINE__); +STG_LOCKER locker(&mutex); beforeNotifiers.erase(const_cast *>(n)); } //----------------------------------------------------------------------------- @@ -257,7 +262,7 @@ template inline void USER_PROPERTY::AddAfterNotifier(PROPERTY_NOTIFIER_BASE * n) { -STG_LOCKER locker(&mutex, __FILE__, __LINE__); +STG_LOCKER locker(&mutex); afterNotifiers.insert(n); } //----------------------------------------------------------------------------- @@ -265,7 +270,7 @@ template inline void USER_PROPERTY::DelAfterNotifier(const PROPERTY_NOTIFIER_BASE * n) { -STG_LOCKER locker(&mutex, __FILE__, __LINE__); +STG_LOCKER locker(&mutex); afterNotifiers.erase(const_cast *>(n)); } //----------------------------------------------------------------------------- @@ -278,17 +283,17 @@ USER_PROPERTY_LOGGED::USER_PROPERTY_LOGGED(varT & val, bool isPass, bool isSt, STG_LOGGER & logger, - const std::string & sd, - std::map & properties) + const SETTINGS& s, + REGISTRY & properties) : USER_PROPERTY(val), stgLogger(logger), isPassword(isPass), isStat(isSt), name(n), - scriptsDir(sd) + settings(s) { -properties.insert(std::make_pair(name, this)); +properties.insert(std::make_pair(ToLower(name), this)); } //------------------------------------------------------------------------- template @@ -363,7 +368,12 @@ stgLogger("%s User \'%s\': \'%s\' parameter changed from \'%s\' to \'%s\'. %s", newValue.c_str(), msg.c_str()); -store->WriteUserChgLog(login, admin->GetLogin(), admin->GetIP(), parameter, oldValue, newValue, msg); +for (size_t i = 0; i < settings.GetFilterParamsLog().size(); ++i) + if (settings.GetFilterParamsLog()[i] == "*" || strcasecmp(settings.GetFilterParamsLog()[i].c_str(), parameter.c_str()) == 0) + { + store->WriteUserChgLog(login, admin->GetLogin(), admin->GetIP(), parameter, oldValue, newValue, msg); + return; + } } //------------------------------------------------------------------------- template @@ -373,7 +383,7 @@ void USER_PROPERTY_LOGGED::OnChange(const std::string & login, const std::string & newValue, const ADMIN * admin) { -std::string filePath = scriptsDir + "/OnChange"; +static std::string filePath = settings.GetScriptsDir() + "/OnChange"; if (access(filePath.c_str(), X_OK) == 0) { @@ -391,7 +401,7 @@ else inline std::string USER_PROPERTIES::GetPropertyValue(const std::string & name) const { -std::map::const_iterator it = properties.find(name); +REGISTRY::const_iterator it = properties.find(ToLower(name)); if (it == properties.end()) return ""; return it->second->ToString(); @@ -400,7 +410,7 @@ return it->second->ToString(); inline bool USER_PROPERTIES::Exists(const std::string & name) const { -return properties.find(name) != properties.end(); +return properties.find(ToLower(name)) != properties.end(); } //------------------------------------------------------------------------- //-------------------------------------------------------------------------