#ifndef USER_H
#define USER_H
-#include <ctime>
-#include <string>
-
-#include "os_int.h"
#include "notifer.h"
-#include "stg_message.h"
+#include "message.h"
#include "tariff.h"
#include "user_traff.h"
+#include "os_int.h"
+
+#include <vector>
+#include <string>
+
+#include <ctime>
class USER_PROPERTIES;
class AUTH;
+typedef PROPERTY_NOTIFIER_BASE<uint32_t> CURR_IP_NOTIFIER;
+typedef PROPERTY_NOTIFIER_BASE<bool> CONNECTED_NOTIFIER;
+
class USER {
public:
+ virtual ~USER() {}
virtual int WriteConf() = 0;
virtual int WriteStat() = 0;
virtual uint32_t GetCurrIP() const = 0;
virtual time_t GetCurrIPModificationTime() const = 0;
- virtual void AddCurrIPBeforeNotifier(PROPERTY_NOTIFIER_BASE<uint32_t> * notifier) = 0;
- virtual void DelCurrIPBeforeNotifier(PROPERTY_NOTIFIER_BASE<uint32_t> * notifier) = 0;
+ virtual void AddCurrIPBeforeNotifier(CURR_IP_NOTIFIER * notifier) = 0;
+ virtual void DelCurrIPBeforeNotifier(const CURR_IP_NOTIFIER * notifier) = 0;
- virtual void AddCurrIPAfterNotifier(PROPERTY_NOTIFIER_BASE<uint32_t> * notifier) = 0;
- virtual void DelCurrIPAfterNotifier(PROPERTY_NOTIFIER_BASE<uint32_t> * notifier) = 0;
+ virtual void AddCurrIPAfterNotifier(CURR_IP_NOTIFIER * notifier) = 0;
+ virtual void DelCurrIPAfterNotifier(const CURR_IP_NOTIFIER * notifier) = 0;
- virtual void AddConnectedBeforeNotifier(PROPERTY_NOTIFIER_BASE<bool> * notifier) = 0;
- virtual void DelConnectedBeforeNotifier(PROPERTY_NOTIFIER_BASE<bool> * notifier) = 0;
+ virtual void AddConnectedBeforeNotifier(CONNECTED_NOTIFIER * notifier) = 0;
+ virtual void DelConnectedBeforeNotifier(const CONNECTED_NOTIFIER * notifier) = 0;
- virtual void AddConnectedAfterNotifier(PROPERTY_NOTIFIER_BASE<bool> * notifier) = 0;
- virtual void DelConnectedAfterNotifier(PROPERTY_NOTIFIER_BASE<bool> * notifier) = 0;
+ virtual void AddConnectedAfterNotifier(CONNECTED_NOTIFIER * notifier) = 0;
+ virtual void DelConnectedAfterNotifier(const CONNECTED_NOTIFIER * notifier) = 0;
virtual int GetID() const = 0;
virtual const TARIFF * GetTariff() const = 0;
virtual void ResetNextTariff() = 0;
- #ifdef TRAFF_STAT_WITH_PORTS
- virtual void AddTraffStatU(int dir, uint32_t ip, uint16_t port, uint32_t len) = 0;
- virtual void AddTraffStatD(int dir, uint32_t ip, uint16_t port, uint32_t len) = 0;
- #else
- virtual void AddTraffStatU(int dir, uint32_t ip, uint32_t len) = 0;
- virtual void AddTraffStatD(int dir, uint32_t ip, uint32_t len) = 0;
- #endif
-
virtual const DIR_TRAFF & GetSessionUpload() const = 0;
virtual const DIR_TRAFF & GetSessionDownload() const = 0;
virtual bool GetConnected() const = 0;
virtual time_t GetConnectedModificationTime() const = 0;
+ virtual const std::string & GetLastDisconnectReason() const = 0;
virtual int GetAuthorized() const = 0;
- virtual int Authorize(uint32_t ip,
- uint32_t enabledDirs,
- const AUTH * auth) = 0;
- virtual void Unauthorize(const AUTH * auth) = 0;
+ virtual time_t GetAuthorizedModificationTime() const = 0;
+
virtual bool IsAuthorizedBy(const AUTH * auth) const = 0;
+ virtual std::vector<std::string> GetAuthorizers() const = 0;
virtual int AddMessage(STG_MSG * msg) = 0;
virtual time_t GetLastWriteStatTime() const = 0;
virtual bool IsInetable() = 0;
- virtual std::string GetEnabledDirs() = 0;
+ virtual std::string GetEnabledDirs() const = 0;
virtual void OnAdd() = 0;
virtual void OnDelete() = 0;
+
+ virtual std::string GetParamValue(const std::string & name) const = 0;
};
typedef USER * USER_PTR;
+typedef const USER * CONST_USER_PTR;
#endif