X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/becf6dfe4fe2ecd43792aa53a302c5866483f306..9596c437646f369c3924dc78b20872762f3a47b9:/projects/stargazer/user_impl.h?ds=sidebyside diff --git a/projects/stargazer/user_impl.h b/projects/stargazer/user_impl.h index 1c84ba1c..ba69ced1 100644 --- a/projects/stargazer/user_impl.h +++ b/projects/stargazer/user_impl.h @@ -24,101 +24,91 @@ $Author: faust $ */ -#ifndef USER_H -#define USER_H +#ifndef USER_IMPL_H +#define USER_IMPL_H #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 "auth.h" #include "stg_message.h" #include "noncopyable.h" -using namespace std; - //----------------------------------------------------------------------------- -class USER; class TARIFF; class TARIFFS; class ADMIN; -typedef list::iterator user_iter; -typedef list::const_iterator const_user_iter; +class USER_IMPL; //----------------------------------------------------------------------------- -class USER_ID_GENERATOR -{ -friend class USER; +class USER_ID_GENERATOR { +friend class USER_IMPL; private: USER_ID_GENERATOR() {} int GetNextID() { static int id = 0; return id++; } }; //----------------------------------------------------------------------------- class CHG_PASSIVE_NOTIFIER : public PROPERTY_NOTIFIER_BASE, - private NONCOPYABLE -{ + private NONCOPYABLE { public: - CHG_PASSIVE_NOTIFIER(USER * u) : user(u) {} + CHG_PASSIVE_NOTIFIER(USER_IMPL * u) : user(u) {} void Notify(const int & oldPassive, const int & newPassive); private: - USER * user; + USER_IMPL * user; }; //----------------------------------------------------------------------------- -class CHG_TARIFF_NOTIFIER : public PROPERTY_NOTIFIER_BASE, - private NONCOPYABLE -{ +class CHG_TARIFF_NOTIFIER : public PROPERTY_NOTIFIER_BASE, + private NONCOPYABLE { public: - CHG_TARIFF_NOTIFIER(USER * u) : user(u) {} - void Notify(const string & oldTariff, const string & newTariff); + CHG_TARIFF_NOTIFIER(USER_IMPL * u) : user(u) {} + void Notify(const std::string & oldTariff, const std::string & newTariff); private: - USER * user; + USER_IMPL * user; }; //----------------------------------------------------------------------------- class CHG_CASH_NOTIFIER : public PROPERTY_NOTIFIER_BASE, - private NONCOPYABLE -{ + private NONCOPYABLE { public: - CHG_CASH_NOTIFIER(USER * u) : user(u) {} + CHG_CASH_NOTIFIER(USER_IMPL * u) : user(u) {} void Notify(const double & oldCash, const double & newCash); private: - USER * user; + USER_IMPL * user; }; //----------------------------------------------------------------------------- class CHG_IP_NOTIFIER : public PROPERTY_NOTIFIER_BASE, - private NONCOPYABLE -{ + private NONCOPYABLE { public: - CHG_IP_NOTIFIER(USER * u) : user(u) {} + CHG_IP_NOTIFIER(USER_IMPL * u) : user(u) {} void Notify(const uint32_t & oldCash, const uint32_t & newCash); private: - USER * user; + USER_IMPL * user; }; //----------------------------------------------------------------------------- -class USER -{ +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; public: - USER(const SETTINGS * settings, - const BASE_STORE * store, - const TARIFFS * tariffs, - const ADMIN & sysAdmin, - const map * ipIndex); - USER(const USER & u); - ~USER(); + USER_IMPL(const SETTINGS * settings, + const STORE * store, + const TARIFFS * tariffs, + const ADMIN * sysAdmin, + const USERS * u); + USER_IMPL(const USER_IMPL & u); + virtual ~USER_IMPL(); int ReadConf(); int ReadStat(); @@ -126,8 +116,8 @@ public: int WriteStat(); int WriteMonthStat(); - string const & GetLogin() const { return login; } - void SetLogin(string const & l); + std::string const & GetLogin() const { return login; } + void SetLogin(std::string const & l); uint32_t GetCurrIP() const { return currIP; } time_t GetCurrIPModificationTime() const { return currIP.ModificationTime(); } @@ -163,11 +153,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; - void OnAdd(); - void OnDelete(); + 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); @@ -177,9 +165,10 @@ public: void PrintUser() const; void Run(); - const string & GetStrError() const { return errorStr; } + const std::string & GetStrError() const { return errorStr; } - USER_PROPERTIES property; + USER_PROPERTIES & GetProperty() { return property; }; + const USER_PROPERTIES & GetProperty() const { return property; }; void SetDeleted() { deleted = true; } bool GetDeleted() const { return deleted; } @@ -193,9 +182,14 @@ public: void ProcessNewMonth(); bool IsInetable(); - string GetEnabledDirs(); + std::string GetEnabledDirs(); + + void OnAdd(); + void OnDelete(); private: + const USERS * users; + USER_PROPERTIES property; STG_LOGGER & WriteServLog; void Connect(bool fakeConnect = false); @@ -204,9 +198,10 @@ private: int SendMessage(STG_MSG & msg) const; void ScanMessage(); + time_t lastScanMessages; - string login; + std::string login; int id; bool __connected; USER_PROPERTY connected; @@ -226,8 +221,8 @@ private: time_t pingTime; - const ADMIN sysAdmin; - const BASE_STORE * store; + const ADMIN * sysAdmin; + const STORE * store; const TARIFFS * tariffs; const TARIFF * tariff; @@ -237,11 +232,9 @@ private: const SETTINGS * settings; - set authorizedBy; - - const map * ipIndex; + std::set authorizedBy; - list messages; + std::list messages; bool deleted; @@ -257,32 +250,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 @@ -296,7 +289,7 @@ private: mutable pthread_mutex_t mutex; - string errorStr; + std::string errorStr; }; //-----------------------------------------------------------------------------