X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/49ac42e64c982c16ca4421a50d15f36574ca0c10..24d957224650e26f7c2117ed5116d2412b0dbc60:/projects/sgconf/users.cpp diff --git a/projects/sgconf/users.cpp b/projects/sgconf/users.cpp index ca555a11..018556df 100644 --- a/projects/sgconf/users.cpp +++ b/projects/sgconf/users.cpp @@ -137,7 +137,7 @@ for (size_t i = 0; i < lhs.size() && i < rhs.size(); ++i) RESETABLE ConvString(const std::string & value) { -return value; +return RESETABLE(value); } void ConvStringList(std::string value, std::vector > & res) @@ -268,6 +268,21 @@ if (!result) PrintUser(info); } +void AuthByCallback(bool result, + const std::string & reason, + const std::vector & info, + void * /*data*/) +{ +if (!result) + { + std::cerr << "Failed to get authorizer list. Reason: '" << reason << "'." << std::endl; + return; + } +std::cout << "Authorized by:\n"; +for (size_t i = 0; i < info.size(); ++i) + std::cout << Indent(1, true) << info[i] << "\n"; +} + bool GetUsersFunction(const SGCONF::CONFIG & config, const std::string & /*arg*/, const std::map & /*options*/) @@ -424,6 +439,19 @@ STG::SERVCONF proto(config.server.data(), return proto.SendMessage(logins, text, SimpleCallback, NULL) == STG::st_ok; } +bool AuthByFunction(const SGCONF::CONFIG & config, + const std::string & arg, + const std::map & /*options*/) +{ +STG::SERVCONF proto(config.server.data(), + config.port.data(), + config.localAddress.data(), + config.localPort.data(), + config.userName.data(), + config.userPass.data()); +return proto.AuthBy(arg, AuthByCallback, NULL) == STG::st_ok; +} + } // namespace anonymous void SGCONF::AppendUsersOptionBlock(COMMANDS & commands, OPTION_BLOCKS & blocks) @@ -436,5 +464,6 @@ blocks.Add("User management options") .Add("del-user", SGCONF::MakeAPIAction(commands, "", DelUserFunction), "delete user") .Add("chg-user", SGCONF::MakeAPIAction(commands, "", params, ChgUserFunction), "change user") .Add("check-user", SGCONF::MakeAPIAction(commands, "", GetCheckParams(), CheckUserFunction), "check user existance and credentials") - .Add("send-message", SGCONF::MakeAPIAction(commands, GetMessageParams(), SendMessageFunction), "send message"); + .Add("send-message", SGCONF::MakeAPIAction(commands, GetMessageParams(), SendMessageFunction), "send message") + .Add("auth-by", SGCONF::MakeAPIAction(commands, "", AuthByFunction), "a list of authorizers user authorized by"); }