4 #include "stg/plugin.h"
5 #include "stg/module_settings.h"
6 #include "stg/subscriptions.h"
7 #include "stg/logger.h"
10 #include <boost/asio.hpp>
14 #include <jthread.hpp>
15 #include <cstdint> //uint8_t, uint32_t
27 virtual ~RAD_SETTINGS() {}
42 using Pairs = std::vector<std::pair<std::string, AttrValue>>;
47 const std::string& GetStrError() const { return m_errorStr; }
48 int ParseSettings(const ModuleSettings& s);
50 uint16_t GetPort() const { return m_port; }
51 const std::string& GetDictionaries() const { return m_dictionaries; }
52 const std::string& GetSecret() const { return m_secret; }
53 const ASection& getAuth() const { return m_auth; }
54 const ASection& getAutz() const { return m_autz; }
57 std::vector<std::pair<std::string, AttrValue>> ParseRules(const std::string& value, const std::string& paramName);
58 ASection parseASection(const std::vector<ParamValue>& conf);
60 std::string m_errorStr;
62 std::string m_dictionaries;
68 PluginLogger m_logger;
71 class RADIUS : public Auth
75 RADIUS(const RADIUS&) = delete;
76 RADIUS& operator=(const RADIUS&) = delete;
78 void SetUsers(Users* u) override { m_users = u; }
79 void SetSettings(const ModuleSettings& s) override { m_settings = s; }
80 int ParseSettings() override;
84 int Reload(const ModuleSettings& /*ms*/) override { return 0; }
85 bool IsRunning() override;
86 void SetRunning(bool val);
88 const std::string& GetStrError() const override { return m_errorStr; }
89 std::string GetVersion() const override;
91 uint16_t GetStartPosition() const override { return 0; }
92 uint16_t GetStopPosition() const override { return 0; }
94 int SendMessage(const Message& /*msg*/, uint32_t /*ip*/) const override { return 0; }
99 boost::asio::io_context m_ioContext;
100 int Run(std::stop_token token);
102 mutable std::string m_errorStr;
103 RAD_SETTINGS m_radSettings;
104 ModuleSettings m_settings;
108 std::jthread m_thread;
110 PluginLogger m_logger;
112 std::unique_ptr<Server> m_server;