X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/578eb285e1182156da434bac44822ac26c503005..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 44d5ed85..74e483a5 100644 --- a/projects/stargazer/plugins/other/radius/config.h +++ b/projects/stargazer/plugins/other/radius/config.h @@ -1,107 +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 // uid_t, gid_t -#include // mode_t - -class USER; +#include //uint8_t, uint32_t namespace STG { + struct Settings; -struct Config -{ - typedef std::map Pairs; - typedef std::pair Pair; - enum Type { UNIX, TCP }; - enum ReturnCode - { - REJECT, // Reject the request immediately. - FAIL, // Module failed. - OK, // Module is OK, continue. - HANDLED, // The request is handled, no further handling. - INVALID, // The request is invalud. - USERLOCK, // Reject the request, user is locked. - NOTFOUND, // User not found. - NOOP, // Module performed no action. - UPDATED // Module sends some updates. - }; - - class Authorize + class Config { public: - Authorize() : m_auth(false) {} - Authorize(const Pairs& cond) : m_auth(true), m_cond(cond) {} + 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; } - bool check(const USER& user, const Pairs& radiusData) const; - bool exists() const { return m_auth; } private: - bool m_auth; - Pairs m_cond; - }; - - struct Section - { - Section() {} - Section(const Pairs& ma, const Pairs& mo, const Pairs& re, ReturnCode code, const Authorize& auth) - : match(ma), modify(mo), reply(re), returnCode(code), authorize(auth) {} - Pairs match; - Pairs modify; - Pairs reply; - ReturnCode returnCode; - Authorize authorize; - }; - - Config() {} - Config(const MODULE_SETTINGS& settings); + std::vector> ParseRules(const std::string& value, const std::string& paramName); + ASection parseASection(const std::vector& conf); - Section autz; - Section auth; - Section postauth; - Section preacct; - Section acct; + std::string m_errorStr; + uint16_t m_port; + std::string m_dictionaries; + std::string m_secret; - bool verbose; + ASection m_auth; + ASection m_autz; - std::string address; - Type connectionType; - std::string bindAddress; - std::string portStr; - uint16_t port; - std::string key; - - uid_t sockUID; - gid_t sockGID; - mode_t sockMode; -}; - -} // namespace STG - -#endif + PluginLogger m_logger; + }; +}