#include "stg/os_int.h"
#include "stg/auth.h"
#include "stg/module_settings.h"
-#include "stg/notifer.h"
-#include "stg/user_ips.h"
-#include "stg/user.h"
-#include "stg/users.h"
-#include "stg/blowfish.h"
-#include "stg/rad_packets.h"
#include "stg/logger.h"
-extern "C" PLUGIN * GetPlugin();
+#include "config.h"
+#include "conn.h"
-#define RAD_DEBUG (1)
+#include <string>
+#include <deque>
+#include <set>
-class RADIUS;
-//-----------------------------------------------------------------------------
-class RAD_SETTINGS {
-public:
- RAD_SETTINGS()
- : port(0), errorStr(), password(),
- authServices(), acctServices()
- {}
- virtual ~RAD_SETTINGS() {}
- const std::string & GetStrError() const { return errorStr; }
- int ParseSettings(const MODULE_SETTINGS & s);
- uint16_t GetPort() const { return port; }
- const std::string & GetPassword() const { return password; }
- const std::list<std::string> & GetAuthServices() const { return authServices; }
- const std::list<std::string> & GetAcctServices() const { return acctServices; }
+#include <pthread.h>
+#include <unistd.h>
+#include <sys/select.h>
+#include <sys/types.h>
-private:
- int ParseServices(const std::vector<std::string> & str, std::list<std::string> * lst);
+extern "C" PLUGIN * GetPlugin();
- uint16_t port;
- std::string errorStr;
- std::string password;
- std::list<std::string> authServices;
- std::list<std::string> acctServices;
-};
-//-----------------------------------------------------------------------------
-struct RAD_SESSION {
- RAD_SESSION() : userName(), serviceType() {}
- std::string userName;
- std::string serviceType;
-};
-//-----------------------------------------------------------------------------
-class RADIUS :public AUTH {
+class STORE;
+class USERS;
+
+class RADIUS : public AUTH {
public:
- RADIUS();
- virtual ~RADIUS() {}
+ RADIUS();
+ virtual ~RADIUS() {}
- void SetUsers(USERS * u) { users = u; }
- void SetStore(STORE * s) { store = s; }
- void SetStgSettings(const SETTINGS *) {}
- void SetSettings(const MODULE_SETTINGS & s) { settings = s; }
- int ParseSettings();
+ void SetUsers(USERS* u) { m_users = u; }
+ void SetStore(STORE* s) { m_store = s; }
+ void SetStgSettings(const SETTINGS*) {}
+ void SetSettings(const MODULE_SETTINGS& s) { m_settings = s; }
+ int ParseSettings();
- int Start();
- int Stop();
- int Reload(const MODULE_SETTINGS & /*ms*/) { return 0; }
- bool IsRunning() { return isRunning; }
+ int Start();
+ int Stop();
- int Reload() { return 0; }
++ int Reload(const MODULE_SETTINGS & /*ms*/) { return 0; }
+ bool IsRunning() { return m_running; }
- const std::string & GetStrError() const { return errorStr; }
- std::string GetVersion() const { return "RADIUS data access plugin v 0.6"; }
- uint16_t GetStartPosition() const { return 30; }
- uint16_t GetStopPosition() const { return 30; }
+ const std::string& GetStrError() const { return m_error; }
+ std::string GetVersion() const { return "RADIUS data access plugin v. 2.0"; }
+ uint16_t GetStartPosition() const { return 30; }
+ uint16_t GetStopPosition() const { return 30; }
- int SendMessage(const STG_MSG &, uint32_t) const { return 0; }
+ int SendMessage(const STG_MSG&, uint32_t) const { return 0; }
+
+ void authorize(const USER& user);
+ void unauthorize(const std::string& login, const std::string& reason);
private:
RADIUS(const RADIUS & rvalue);
#include <vector>
#include "stg/settings.h"
+ #include "stg/common.h"
#include "stg/module_settings.h"
+#include "stg/ref.h"
//-----------------------------------------------------------------------------
enum DETAIL_STAT_PERIOD {
class SETTINGS_IMPL : public SETTINGS {
public:
SETTINGS_IMPL(const std::string &);
- SETTINGS_IMPL(const SETTINGS_IMPL &);
++ SETTINGS_IMPL(const SETTINGS_IMPL & rhs);
virtual ~SETTINGS_IMPL() {}
+ SETTINGS_IMPL & operator=(const SETTINGS_IMPL &);
+
int Reload() { return ReadSettings(); }
int ReadSettings();
{ return modulesSettings; }
const std::vector<std::string> & GetScriptParams() const { return scriptParams; }
-private:
++ int ParseModuleSettings(const DOTCONFDocumentNode * node, std::vector<PARAM_VALUE> * params);
+
- int ParseDetailStatWritePeriod(const std::string & str);
- int ParseModuleSettings(const DOTCONFDocumentNode * dirNameNode, std::vector<PARAM_VALUE> * params);
+private:
static void ErrorCallback(void * data, const char * buf);