X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/6f7160dd027c8ce7e2760aa369768ba39ab80181..324028b1d412ab7308d2be18be2b8e4e30310d27:/projects/stargazer/user_impl.h diff --git a/projects/stargazer/user_impl.h b/projects/stargazer/user_impl.h index dc21f696..2fc2729e 100644 --- a/projects/stargazer/user_impl.h +++ b/projects/stargazer/user_impl.h @@ -30,27 +30,29 @@ #include #include #include -#include #include -#include "user.h" -#include "os_int.h" -#include "stg_const.h" -#include "user_stat.h" -#include "user_conf.h" -#include "user_ips.h" -#include "user_property.h" -#include "base_auth.h" -#include "stg_message.h" -#include "noncopyable.h" - -using namespace std; +#include "stg/user.h" +#include "stg/os_int.h" +#include "stg/const.h" +#include "stg/user_stat.h" +#include "stg/user_conf.h" +#include "stg/user_ips.h" +#include "stg/user_property.h" +#include "stg/auth.h" +#include "stg/message.h" +#include "stg/noncopyable.h" //----------------------------------------------------------------------------- class TARIFF; class TARIFFS; class ADMIN; class USER_IMPL; +#ifdef USE_ABSTRACT_SETTINGS +class SETTINGS; +#else +class SETTINGS_IMPL; +#endif //----------------------------------------------------------------------------- class USER_ID_GENERATOR { friend class USER_IMPL; @@ -66,16 +68,22 @@ public: void Notify(const int & oldPassive, const int & newPassive); private: + CHG_PASSIVE_NOTIFIER(const CHG_PASSIVE_NOTIFIER & rvalue); + CHG_PASSIVE_NOTIFIER & operator=(const CHG_PASSIVE_NOTIFIER & rvalue); + USER_IMPL * user; }; //----------------------------------------------------------------------------- -class CHG_TARIFF_NOTIFIER : public PROPERTY_NOTIFIER_BASE, +class CHG_TARIFF_NOTIFIER : public PROPERTY_NOTIFIER_BASE, private NONCOPYABLE { public: CHG_TARIFF_NOTIFIER(USER_IMPL * u) : user(u) {} - void Notify(const string & oldTariff, const string & newTariff); + void Notify(const std::string & oldTariff, const std::string & newTariff); private: + CHG_TARIFF_NOTIFIER(const CHG_TARIFF_NOTIFIER & rvalue); + CHG_TARIFF_NOTIFIER & operator=(const CHG_TARIFF_NOTIFIER & rvalue); + USER_IMPL * user; }; //----------------------------------------------------------------------------- @@ -86,14 +94,20 @@ public: void Notify(const double & oldCash, const double & newCash); private: + CHG_CASH_NOTIFIER(const CHG_CASH_NOTIFIER & rvalue); + CHG_CASH_NOTIFIER & operator=(const CHG_CASH_NOTIFIER & rvalue); + USER_IMPL * user; }; //----------------------------------------------------------------------------- -class CHG_IP_NOTIFIER : public PROPERTY_NOTIFIER_BASE, - private NONCOPYABLE { +class CHG_IPS_NOTIFIER : public PROPERTY_NOTIFIER_BASE, + private NONCOPYABLE { public: - CHG_IP_NOTIFIER(USER_IMPL * u) : user(u) {} - void Notify(const uint32_t & oldCash, const uint32_t & newCash); + CHG_IPS_NOTIFIER(const CHG_IPS_NOTIFIER & rvalue); + CHG_IPS_NOTIFIER & operator=(const CHG_IPS_NOTIFIER & rvalue); + + CHG_IPS_NOTIFIER(USER_IMPL * u) : user(u) {} + void Notify(const USER_IPS & oldIPs, const USER_IPS & newIPs); private: USER_IMPL * user; @@ -103,13 +117,21 @@ class USER_IMPL : public USER { friend class CHG_PASSIVE_NOTIFIER; friend class CHG_TARIFF_NOTIFIER; friend class CHG_CASH_NOTIFIER; -friend class CHG_IP_NOTIFIER; +friend class CHG_IPS_NOTIFIER; public: +#ifdef USE_ABSTRACT_SETTINGS USER_IMPL(const SETTINGS * settings, - const BASE_STORE * store, + const STORE * store, + const TARIFFS * tariffs, + const ADMIN * sysAdmin, + const USERS * u); +#else + USER_IMPL(const SETTINGS_IMPL * settings, + const STORE * store, const TARIFFS * tariffs, - const ADMIN & sysAdmin, + const ADMIN * sysAdmin, const USERS * u); +#endif USER_IMPL(const USER_IMPL & u); virtual ~USER_IMPL(); @@ -119,8 +141,8 @@ public: int WriteStat(); int WriteMonthStat(); - string const & GetLogin() const { return login; } - void SetLogin(string const & l); + const std::string & GetLogin() const { return login; } + void SetLogin(std::string const & l); uint32_t GetCurrIP() const { return currIP; } time_t GetCurrIPModificationTime() const { return currIP.ModificationTime(); } @@ -131,6 +153,12 @@ public: void AddCurrIPAfterNotifier(PROPERTY_NOTIFIER_BASE *); void DelCurrIPAfterNotifier(PROPERTY_NOTIFIER_BASE *); + void AddConnectedBeforeNotifier(PROPERTY_NOTIFIER_BASE *); + void DelConnectedBeforeNotifier(PROPERTY_NOTIFIER_BASE *); + + void AddConnectedAfterNotifier(PROPERTY_NOTIFIER_BASE *); + void DelConnectedAfterNotifier(PROPERTY_NOTIFIER_BASE *); + int GetID() const { return id; } double GetPassiveTimePart() const; @@ -156,9 +184,9 @@ public: bool GetConnected() const { return connected; } time_t GetConnectedModificationTime() const { return connected.ModificationTime(); } int GetAuthorized() const { return authorizedBy.size(); } - int Authorize(uint32_t ip, const string & iface, uint32_t enabledDirs, const BASE_AUTH * auth); - void Unauthorize(const BASE_AUTH * auth); - bool IsAuthorizedBy(const BASE_AUTH * auth) const; + int Authorize(uint32_t ip, uint32_t enabledDirs, const AUTH * auth); + void Unauthorize(const AUTH * auth); + bool IsAuthorizedBy(const AUTH * auth) const; int AddMessage(STG_MSG * msg); @@ -168,7 +196,7 @@ public: void PrintUser() const; void Run(); - const string & GetStrError() const { return errorStr; } + const std::string & GetStrError() const { return errorStr; } USER_PROPERTIES & GetProperty() { return property; }; const USER_PROPERTIES & GetProperty() const { return property; }; @@ -180,17 +208,18 @@ public: void MidnightResetSessionStat(); void ProcessDayFee(); - void SetPrepaidTraff(); void ProcessDayFeeSpread(); void ProcessNewMonth(); bool IsInetable(); - string GetEnabledDirs(); + std::string GetEnabledDirs(); void OnAdd(); void OnDelete(); private: + USER_IMPL & operator=(const USER_IMPL & rvalue); + const USERS * users; USER_PROPERTIES property; STG_LOGGER & WriteServLog; @@ -199,12 +228,14 @@ private: void Disconnect(bool fakeDisconnect, const std::string & reason); int SaveMonthStat(int month, int year); + void SetPrepaidTraff(); + int SendMessage(STG_MSG & msg) const; void ScanMessage(); time_t lastScanMessages; - string login; + std::string login; int id; bool __connected; USER_PROPERTY connected; @@ -213,19 +244,15 @@ private: USER_ID_GENERATOR userIDGenerator; - uint32_t __currIP; // ôÅËÕÝÉÊ ÁÄÒÅÓ ÐÏÌØÚÏ×ÁÔÅÌÑ + uint32_t __currIP; // Current user's ip USER_PROPERTY currIP; - /* - ë ÔÏÍÕ ÍÏÍÅÎÔÕ ËÁË ÍÙ ÕÖÅ ÎÅ Á×ÔÏÒÉÚÏ×ÁÎÉÙ, ÎÏ ÅÝÅ ÎÅ ×ÙÐÏÌÎÅÎ Disconnect, - currIP ÕÖÅ ÓÂÒÏÛÅÎ. ðÏÓÌÅÄÎÅÅ ÚÎÁÞÅÎÉÅ currIP ÓÏÈÒÁÎÑÅÍ × lastIPForDisconnect - */ - uint32_t lastIPForDisconnect; + uint32_t lastIPForDisconnect; // User's ip after unauth but before disconnect time_t pingTime; - const ADMIN & sysAdmin; - const BASE_STORE * store; + const ADMIN * sysAdmin; + const STORE * store; const TARIFFS * tariffs; const TARIFF * tariff; @@ -233,16 +260,20 @@ private: TRAFF_STAT traffStat; std::pair traffStatSaved; +#ifdef USE_ABSTRACT_SETTINGS const SETTINGS * settings; +#else + const SETTINGS_IMPL * settings; +#endif - set authorizedBy; + std::set authorizedBy; - list messages; + std::list messages; bool deleted; - time_t lastWriteStat; // ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÊ ÚÁÐÉÓÉ ÓÔÁÔÉÓÔÉËÉ - time_t lastWriteDeatiledStat; // ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÊ ÚÁÐÉÓÉ ÄÅÔÁÌØÎÏÊ ÓÔÁÔÉÓÔÉËÉ + time_t lastWriteStat; + time_t lastWriteDetailedStat; // Properties USER_PROPERTY & cash; @@ -253,32 +284,32 @@ private: USER_PROPERTY & lastCashAddTime; USER_PROPERTY & freeMb; USER_PROPERTY & lastActivityTime; - USER_PROPERTY & password; + USER_PROPERTY & password; USER_PROPERTY & passive; USER_PROPERTY & disabled; USER_PROPERTY & disabledDetailStat; USER_PROPERTY & alwaysOnline; - USER_PROPERTY & tariffName; - USER_PROPERTY & nextTariff; - USER_PROPERTY & address; - USER_PROPERTY & note; - USER_PROPERTY & group; - USER_PROPERTY & email; - USER_PROPERTY & phone; - USER_PROPERTY & realName; + USER_PROPERTY & tariffName; + USER_PROPERTY & nextTariff; + USER_PROPERTY & address; + USER_PROPERTY & note; + USER_PROPERTY & group; + USER_PROPERTY & email; + USER_PROPERTY & phone; + USER_PROPERTY & realName; USER_PROPERTY & credit; USER_PROPERTY & creditExpire; USER_PROPERTY & ips; - USER_PROPERTY & userdata0; - USER_PROPERTY & userdata1; - USER_PROPERTY & userdata2; - USER_PROPERTY & userdata3; - USER_PROPERTY & userdata4; - USER_PROPERTY & userdata5; - USER_PROPERTY & userdata6; - USER_PROPERTY & userdata7; - USER_PROPERTY & userdata8; - USER_PROPERTY & userdata9; + USER_PROPERTY & userdata0; + USER_PROPERTY & userdata1; + USER_PROPERTY & userdata2; + USER_PROPERTY & userdata3; + USER_PROPERTY & userdata4; + USER_PROPERTY & userdata5; + USER_PROPERTY & userdata6; + USER_PROPERTY & userdata7; + USER_PROPERTY & userdata8; + USER_PROPERTY & userdata9; // End properties @@ -288,12 +319,14 @@ private: CHG_PASSIVE_NOTIFIER passiveNotifier; CHG_TARIFF_NOTIFIER tariffNotifier; CHG_CASH_NOTIFIER cashNotifier; - CHG_IP_NOTIFIER ipNotifier; + CHG_IPS_NOTIFIER ipNotifier; mutable pthread_mutex_t mutex; - string errorStr; + std::string errorStr; }; //----------------------------------------------------------------------------- +typedef USER_IMPL * USER_IMPL_PTR; + #endif //USER_H