X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/2529ae443070ce292250061b8cd21519ea01ebc4..b4dba83ccd632236b4f6ac78caa6637bc0874e35:/projects/stargazer/user_impl.h diff --git a/projects/stargazer/user_impl.h b/projects/stargazer/user_impl.h index 412816c3..8bc69664 100644 --- a/projects/stargazer/user_impl.h +++ b/projects/stargazer/user_impl.h @@ -27,15 +27,7 @@ #ifndef USER_IMPL_H #define USER_IMPL_H -#include -#include -#include -#include -#include - #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" @@ -43,6 +35,15 @@ #include "stg/auth.h" #include "stg/message.h" #include "stg/noncopyable.h" +#include "stg/os_int.h" +#include "stg/const.h" + +#include +#include +#include +#include + +#include //----------------------------------------------------------------------------- class TARIFF; @@ -65,7 +66,7 @@ private: class CHG_PASSIVE_NOTIFIER : public PROPERTY_NOTIFIER_BASE, private NONCOPYABLE { public: - CHG_PASSIVE_NOTIFIER(USER_IMPL * u) : user(u) {} + explicit CHG_PASSIVE_NOTIFIER(USER_IMPL * u) : user(u) {} void Notify(const int & oldPassive, const int & newPassive); private: @@ -75,7 +76,7 @@ private: class CHG_DISABLED_NOTIFIER : public PROPERTY_NOTIFIER_BASE, private NONCOPYABLE { public: - CHG_DISABLED_NOTIFIER(USER_IMPL * u) : user(u) {} + explicit CHG_DISABLED_NOTIFIER(USER_IMPL * u) : user(u) {} void Notify(const int & oldValue, const int & newValue); private: @@ -85,7 +86,7 @@ private: class CHG_TARIFF_NOTIFIER : public PROPERTY_NOTIFIER_BASE, private NONCOPYABLE { public: - CHG_TARIFF_NOTIFIER(USER_IMPL * u) : user(u) {} + explicit CHG_TARIFF_NOTIFIER(USER_IMPL * u) : user(u) {} void Notify(const std::string & oldTariff, const std::string & newTariff); private: @@ -95,7 +96,7 @@ private: class CHG_CASH_NOTIFIER : public PROPERTY_NOTIFIER_BASE, private NONCOPYABLE { public: - CHG_CASH_NOTIFIER(USER_IMPL * u) : user(u) {} + explicit CHG_CASH_NOTIFIER(USER_IMPL * u) : user(u) {} void Notify(const double & oldCash, const double & newCash); private: @@ -105,7 +106,7 @@ private: class CHG_IPS_NOTIFIER : public PROPERTY_NOTIFIER_BASE, private NONCOPYABLE { public: - CHG_IPS_NOTIFIER(USER_IMPL * u) : user(u) {} + explicit CHG_IPS_NOTIFIER(USER_IMPL * u) : user(u) {} void Notify(const USER_IPS & oldIPs, const USER_IPS & newIPs); private: @@ -124,13 +125,15 @@ public: const STORE * store, const TARIFFS * tariffs, const ADMIN * sysAdmin, - const USERS * u); + const USERS * u, + const SERVICES & svcs); #else USER_IMPL(const SETTINGS_IMPL * settings, const STORE * store, const TARIFFS * tariffs, const ADMIN * sysAdmin, - const USERS * u); + const USERS * u, + const SERVICES & svcs); #endif USER_IMPL(const USER_IMPL & u); virtual ~USER_IMPL(); @@ -180,6 +183,8 @@ public: const DIR_TRAFF & GetSessionUpload() const { return sessionUpload; } const DIR_TRAFF & GetSessionDownload() const { return sessionDownload; } + time_t GetSessionUploadModificationTime() const { return sessionUploadModTime; } + time_t GetSessionDownloadModificationTime() const { return sessionDownloadModTime; } bool GetConnected() const { return connected; } time_t GetConnectedModificationTime() const { return connected.ModificationTime(); } @@ -187,7 +192,8 @@ public: 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); + void Unauthorize(const AUTH * auth, + const std::string & reason = std::string()); bool IsAuthorizedBy(const AUTH * auth) const; std::vector GetAuthorizers() const; @@ -196,7 +202,6 @@ public: void UpdatePingTime(time_t t = 0); time_t GetPingTime() const { return pingTime; } - void PrintUser() const; void Run(); const std::string & GetStrError() const { return errorStr; } @@ -213,16 +218,21 @@ public: void ProcessDayFee(); void ProcessDayFeeSpread(); void ProcessNewMonth(); + void ProcessDailyFee(); bool IsInetable(); - std::string GetEnabledDirs(); + std::string GetEnabledDirs() const; void OnAdd(); void OnDelete(); + virtual std::string GetParamValue(const std::string & name) const; + private: USER_IMPL & operator=(const USER_IMPL & rvalue); + void Init(); + const USERS * users; USER_PROPERTIES property; STG_LOGGER & WriteServLog; @@ -242,7 +252,6 @@ private: int id; bool __connected; USER_PROPERTY connected; - std::string lastDisconnectReason; bool enabledDirs[DIR_NUM]; @@ -252,6 +261,7 @@ private: USER_PROPERTY currIP; uint32_t lastIPForDisconnect; // User's ip after unauth but before disconnect + std::string lastDisconnectReason; time_t pingTime; @@ -261,6 +271,8 @@ private: const TARIFFS * tariffs; const TARIFF * tariff; + const SERVICES & m_services; + TRAFF_STAT traffStat; std::pair traffStatSaved; @@ -320,6 +332,8 @@ private: DIR_TRAFF sessionUpload; DIR_TRAFF sessionDownload; + time_t sessionUploadModTime; + time_t sessionDownloadModTime; CHG_PASSIVE_NOTIFIER passiveNotifier; CHG_DISABLED_NOTIFIER disabledNotifier;