X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/5c19a000ed76d49fae019ed50955a1a530d161f0..2529ae443070ce292250061b8cd21519ea01ebc4:/projects/stargazer/user_impl.h?ds=inline diff --git a/projects/stargazer/user_impl.h b/projects/stargazer/user_impl.h index 3701bdd0..412816c3 100644 --- a/projects/stargazer/user_impl.h +++ b/projects/stargazer/user_impl.h @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -67,6 +68,16 @@ public: CHG_PASSIVE_NOTIFIER(USER_IMPL * u) : user(u) {} void Notify(const int & oldPassive, const int & newPassive); +private: + USER_IMPL * user; +}; +//----------------------------------------------------------------------------- +class CHG_DISABLED_NOTIFIER : public PROPERTY_NOTIFIER_BASE, + private NONCOPYABLE { +public: + CHG_DISABLED_NOTIFIER(USER_IMPL * u) : user(u) {} + void Notify(const int & oldValue, const int & newValue); + private: USER_IMPL * user; }; @@ -103,6 +114,7 @@ private: //----------------------------------------------------------------------------- class USER_IMPL : public USER { friend class CHG_PASSIVE_NOTIFIER; +friend class CHG_DISABLED_NOTIFIER; friend class CHG_TARIFF_NOTIFIER; friend class CHG_CASH_NOTIFIER; friend class CHG_IPS_NOTIFIER; @@ -135,17 +147,17 @@ public: uint32_t GetCurrIP() const { return currIP; } time_t GetCurrIPModificationTime() const { return currIP.ModificationTime(); } - void AddCurrIPBeforeNotifier(PROPERTY_NOTIFIER_BASE *); - void DelCurrIPBeforeNotifier(PROPERTY_NOTIFIER_BASE *); + void AddCurrIPBeforeNotifier(CURR_IP_NOTIFIER * notifier); + void DelCurrIPBeforeNotifier(const CURR_IP_NOTIFIER * notifier); - void AddCurrIPAfterNotifier(PROPERTY_NOTIFIER_BASE *); - void DelCurrIPAfterNotifier(PROPERTY_NOTIFIER_BASE *); + void AddCurrIPAfterNotifier(CURR_IP_NOTIFIER * notifier); + void DelCurrIPAfterNotifier(const CURR_IP_NOTIFIER * notifier); - void AddConnectedBeforeNotifier(PROPERTY_NOTIFIER_BASE *); - void DelConnectedBeforeNotifier(PROPERTY_NOTIFIER_BASE *); + void AddConnectedBeforeNotifier(CONNECTED_NOTIFIER * notifier); + void DelConnectedBeforeNotifier(const CONNECTED_NOTIFIER * notifier); - void AddConnectedAfterNotifier(PROPERTY_NOTIFIER_BASE *); - void DelConnectedAfterNotifier(PROPERTY_NOTIFIER_BASE *); + void AddConnectedAfterNotifier(CONNECTED_NOTIFIER * notifier); + void DelConnectedAfterNotifier(const CONNECTED_NOTIFIER * notifier); int GetID() const { return id; } @@ -171,10 +183,13 @@ public: bool GetConnected() const { return connected; } time_t GetConnectedModificationTime() const { return connected.ModificationTime(); } - int GetAuthorized() const { return authorizedBy.size(); } + const std::string & GetLastDisconnectReason() const { return lastDisconnectReason; } + int GetAuthorized() const { return static_cast(authorizedBy.size()); } + time_t GetAuthorizedModificationTime() const { return authorizedModificationTime; } int Authorize(uint32_t ip, uint32_t enabledDirs, const AUTH * auth); void Unauthorize(const AUTH * auth); bool IsAuthorizedBy(const AUTH * auth) const; + std::vector GetAuthorizers() const; int AddMessage(STG_MSG * msg); @@ -186,8 +201,8 @@ public: const std::string & GetStrError() const { return errorStr; } - USER_PROPERTIES & GetProperty() { return property; }; - const USER_PROPERTIES & GetProperty() const { return property; }; + USER_PROPERTIES & GetProperty() { return property; } + const USER_PROPERTIES & GetProperty() const { return property; } void SetDeleted() { deleted = true; } bool GetDeleted() const { return deleted; } @@ -196,7 +211,6 @@ public: void MidnightResetSessionStat(); void ProcessDayFee(); - void SetPrepaidTraff(); void ProcessDayFeeSpread(); void ProcessNewMonth(); @@ -207,6 +221,8 @@ public: void OnDelete(); private: + USER_IMPL & operator=(const USER_IMPL & rvalue); + const USERS * users; USER_PROPERTIES property; STG_LOGGER & WriteServLog; @@ -215,6 +231,8 @@ 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(); @@ -224,6 +242,7 @@ private: int id; bool __connected; USER_PROPERTY connected; + std::string lastDisconnectReason; bool enabledDirs[DIR_NUM]; @@ -252,6 +271,7 @@ private: #endif std::set authorizedBy; + time_t authorizedModificationTime; std::list messages; @@ -302,9 +322,10 @@ private: DIR_TRAFF sessionDownload; CHG_PASSIVE_NOTIFIER passiveNotifier; + CHG_DISABLED_NOTIFIER disabledNotifier; CHG_TARIFF_NOTIFIER tariffNotifier; CHG_CASH_NOTIFIER cashNotifier; - CHG_IPS_NOTIFIER ipNotifier; + CHG_IPS_NOTIFIER ipNotifier; mutable pthread_mutex_t mutex;