]> git.stg.codes - stg.git/blob - projects/stargazer/plugins/other/radius/radius.h
Update CMakeLists.txt
[stg.git] / projects / stargazer / plugins / other / radius / radius.h
1 #pragma once
2
3 #include "stg/auth.h"
4 #include "stg/plugin.h"
5 #include "stg/module_settings.h"
6 #include "stg/subscriptions.h"
7 #include "stg/logger.h"
8
9 #include <string>
10 #include <mutex>
11 #include <jthread.hpp>
12 #include <cstdint> //uint8_t, uint32_t
13
14 namespace STG
15 {
16     struct Settings;
17
18     class RAD_SETTINGS
19     {
20         public:
21             RAD_SETTINGS();
22             virtual ~RAD_SETTINGS() {}
23             const std::string & GetStrError() const { return m_errorStr; }
24             int ParseSettings(const ModuleSettings & s);
25
26             uint16_t GetPort() const { return m_port; }
27             const std::string & GetDictionaries() const { return m_dictionaries; }
28             const std::string & GetSecret() const { return m_secret; }
29
30         private:
31             std::string m_errorStr;
32             uint16_t m_port;
33             std::string m_dictionaries;
34             std::string m_secret;
35     };
36
37     class RADIUS : public Auth
38     {
39         public:
40             RADIUS();
41             RADIUS(const RADIUS&) = delete;
42             RADIUS& operator=(const RADIUS&) = delete;
43
44             void SetSettings(const ModuleSettings & s) override { m_settings = s; }
45             int ParseSettings() override;
46
47             int Start() override;
48             int Stop() override;
49             int Reload(const ModuleSettings & /*ms*/) override { return 0; }
50             bool IsRunning() override;
51             void SetRunning(bool val);
52
53             const std::string & GetStrError() const override { return m_errorStr; }
54             std::string GetVersion() const override;
55
56             uint16_t GetStartPosition() const override { return 0; }
57             uint16_t GetStopPosition() const override { return 0; }
58
59             int SendMessage(const Message & msg, uint32_t ip) const override { return 0; }
60
61         private:
62             std::mutex m_mutex;
63
64             int Run(std::stop_token token);
65
66             mutable std::string m_errorStr;
67             RAD_SETTINGS m_radSettings;
68             ModuleSettings m_settings;
69
70             bool m_running;
71
72             std::jthread m_thread;
73
74             PluginLogger m_logger;
75     };
76 }