]> git.stg.codes - stg.git/blob - projects/stargazer/plugins/other/radius/config.h
Sending attributes from <auth>/send section. (#13)
[stg.git] / projects / stargazer / plugins / other / radius / config.h
1 #pragma once
2
3 #include "stg/module_settings.h"
4 #include "stg/subscriptions.h"
5 #include "stg/logger.h"
6
7 #include <string>
8 #include <cstdint> //uint8_t, uint32_t
9
10 namespace STG
11 {
12     struct Settings;
13
14     class Config
15     {
16         public:
17             Config();
18
19             struct AttrValue
20             {
21                 enum class Type
22                 {
23                     PARAM_NAME,
24                     VALUE
25                 };
26                 std::string value;
27                 Type type;
28             };
29
30             struct ASection
31             {
32                 using Pairs = std::vector<std::pair<std::string, AttrValue>>;
33                 Pairs match;
34                 Pairs send;
35             };
36
37             const std::string& GetStrError() const { return m_errorStr; }
38             int ParseSettings(const ModuleSettings& s);
39
40             uint16_t GetPort() const { return m_port; }
41             const std::string& GetDictionaries() const { return m_dictionaries; }
42             const std::string& GetSecret() const { return m_secret; }
43             const ASection& getAuth() const { return m_auth; }
44             const ASection& getAutz() const { return m_autz; }
45
46         private:
47             std::vector<std::pair<std::string, AttrValue>> ParseRules(const std::string& value, const std::string& paramName);
48             ASection parseASection(const std::vector<ParamValue>& conf);
49
50             std::string m_errorStr;
51             uint16_t m_port;
52             std::string m_dictionaries;
53             std::string m_secret;
54
55             ASection m_auth;
56             ASection m_autz;
57
58             PluginLogger m_logger;
59     };
60 }