X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/c5f062cd6510b042c8fab3725f95a0588369b089..4fe07d7c76c7c9006780389a5babb524560b3ff0:/projects/stargazer/plugins/other/radius/config.h diff --git a/projects/stargazer/plugins/other/radius/config.h b/projects/stargazer/plugins/other/radius/config.h index 28da964e..74e483a5 100644 --- a/projects/stargazer/plugins/other/radius/config.h +++ b/projects/stargazer/plugins/other/radius/config.h @@ -1,59 +1,60 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/* - * Author : Maxim Mamontov - */ - -#ifndef __STG_RADIUS_CONFIG_H__ -#define __STG_RADIUS_CONFIG_H__ +#pragma once #include "stg/module_settings.h" +#include "stg/subscriptions.h" +#include "stg/logger.h" -#include "stg/os_int.h" - -#include #include +#include //uint8_t, uint32_t namespace STG { - -struct Config -{ - typedef std::map Pairs; - typedef std::pair Pair; - enum Type { UNIX, TCP }; - - Config() {} - Config(const MODULE_SETTINGS& settings); - - Pairs match; - Pairs modify; - Pairs reply; - - bool verbose; - - std::string address; - std::string bindAddress; - Type connectionType; - std::string portStr; - uint16_t port; - std::string key; -}; - -} // namespace STG - -#endif + struct Settings; + + class Config + { + public: + Config(); + + struct AttrValue + { + enum class Type + { + PARAM_NAME, + VALUE + }; + std::string value; + Type type; + }; + + struct ASection + { + using Pairs = std::vector>; + Pairs match; + Pairs send; + }; + + 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; } + const ASection& getAuth() const { return m_auth; } + const ASection& getAutz() const { return m_autz; } + + private: + std::vector> ParseRules(const std::string& value, const std::string& paramName); + ASection parseASection(const std::vector& conf); + + std::string m_errorStr; + uint16_t m_port; + std::string m_dictionaries; + std::string m_secret; + + ASection m_auth; + ASection m_autz; + + PluginLogger m_logger; + }; +}