]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/other/radius/radius.h
Merge remote-tracking branch 'github/master'
[stg.git] / projects / stargazer / plugins / other / radius / radius.h
index 8eedace11e83cdb822674b4564b9416f920b1c1f..59cbf0d5afc467ac290c6555716f18869790fb4f 100644 (file)
@@ -2,37 +2,22 @@
 
 #include "stg/auth.h"
 #include "stg/plugin.h"
+#include "config.h"
 #include "stg/module_settings.h"
 #include "stg/subscriptions.h"
 #include "stg/logger.h"
+#include "server.h"
 
+#include <boost/asio.hpp>
 #include <string>
+#include <memory>
 #include <mutex>
 #include <jthread.hpp>
 #include <cstdint> //uint8_t, uint32_t
 
 namespace STG
 {
-    struct Settings;
-
-    class RAD_SETTINGS
-    {
-        public:
-            RAD_SETTINGS();
-            virtual ~RAD_SETTINGS() {}
-            const std::string & GetStrError() const { return m_errorStr; }
-            int ParseSettings(const ModuleSettings & s);
-
-            uint16_t GetPort() const { return m_port; }
-            const std::string & GetDictionaries() const { return m_dictionaries; }
-            const std::string & GetSecret() const { return m_secret; }
-
-        private:
-            std::string m_errorStr;
-            uint16_t m_port;
-            std::string m_dictionaries;
-            std::string m_secret;
-    };
+    class Users;
 
     class RADIUS : public Auth
     {
@@ -41,36 +26,40 @@ namespace STG
             RADIUS(const RADIUS&) = delete;
             RADIUS& operator=(const RADIUS&) = delete;
 
-            void SetSettings(const ModuleSettings & s) override { m_settings = s; }
+            void SetUsers(Users* u) override { m_users = u; }
+            void SetSettings(const ModuleSettings& s) override { m_settings = s; }
             int ParseSettings() override;
 
             int Start() override;
             int Stop() override;
-            int Reload(const ModuleSettings & /*ms*/) override { return 0; }
+            int Reload(const ModuleSettings& /*ms*/) override { return 0; }
             bool IsRunning() override;
-            void SetRunning(bool val);
 
-            const std::string & GetStrError() const override { return m_errorStr; }
+            const std::string& GetStrError() const override { return m_errorStr; }
             std::string GetVersion() const override;
 
             uint16_t GetStartPosition() const override { return 0; }
             uint16_t GetStopPosition() const override { return 0; }
 
-            int SendMessage(const Message & msg, uint32_t ip) const override { return 0; }
+            int SendMessage(const Message& /*msg*/, uint32_t /*ip*/) const override { return 0; }
 
         private:
             std::mutex m_mutex;
 
+            boost::asio::io_context m_ioContext;
+            void SetRunning(bool val);
             int Run(std::stop_token token);
 
             mutable std::string m_errorStr;
-            RAD_SETTINGS m_radSettings;
+            Config m_config;
             ModuleSettings m_settings;
 
             bool m_running;
 
             std::jthread m_thread;
-
+            Users* m_users;
             PluginLogger m_logger;
+
+            std::unique_ptr<Server> m_server;
     };
 }