X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/ba979553b6c71b733d294ca7b3f461c9080e7f72..d6e4a058a37bdaea7df8c8d360978c0dc8848fff:/projects/stargazer/plugins/other/radius/config.cpp diff --git a/projects/stargazer/plugins/other/radius/config.cpp b/projects/stargazer/plugins/other/radius/config.cpp index 8e9f27a9..187620dd 100644 --- a/projects/stargazer/plugins/other/radius/config.cpp +++ b/projects/stargazer/plugins/other/radius/config.cpp @@ -126,6 +126,36 @@ std::string toString(const std::vector& values) return values[0]; } +uid_t toUID(const std::vector& values) +{ + if (values.empty()) + return -1; + uid_t res = str2uid(values[0]); + if (res == static_cast(-1)) + throw ParserError(0, "Invalid user name: '" + values[0] + "'"); + return res; +} + +gid_t toGID(const std::vector& values) +{ + if (values.empty()) + return -1; + gid_t res = str2gid(values[0]); + if (res == static_cast(-1)) + throw ParserError(0, "Invalid group name: '" + values[0] + "'"); + return res; +} + +mode_t toMode(const std::vector& values) +{ + if (values.empty()) + return -1; + mode_t res = str2mode(values[0]); + if (res == static_cast(-1)) + throw ParserError(0, "Invalid mode: '" + values[0] + "'"); + return res; +} + template T toInt(const std::vector& values) { @@ -192,6 +222,30 @@ Config::Section parseSection(const std::string& paramName, const std::vector& params) +{ + for (size_t i = 0; i < params.size(); ++i) + if (params[i].param == paramName) + return toUID(params[i].value); + return -1; +} + +gid_t parseGID(const std::string& paramName, const std::vector& params) +{ + for (size_t i = 0; i < params.size(); ++i) + if (params[i].param == paramName) + return toGID(params[i].value); + return -1; +} + +mode_t parseMode(const std::string& paramName, const std::vector& params) +{ + for (size_t i = 0; i < params.size(); ++i) + if (params[i].param == paramName) + return toMode(params[i].value); + return -1; +} + } // namespace anonymous Config::Config(const MODULE_SETTINGS& settings) @@ -204,6 +258,9 @@ Config::Config(const MODULE_SETTINGS& settings) address(parseString("bind_address", settings.moduleParams)), bindAddress(parseAddress(address)), connectionType(parseConnectionType(address)), - key(parseString("key", settings.moduleParams)) + key(parseString("key", settings.moduleParams)), + sockUID(parseUID("sock_owner", settings.moduleParams)), + sockGID(parseGID("sock_group", settings.moduleParams)), + sockMode(parseMode("sock_mode", settings.moduleParams)) { }