X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/70c7a7e4463c27aa6592225fd3ea5e2bc49f048c..3ee15695bbd86c97088270b855f810279c2b8275:/projects/sgconf/users.cpp diff --git a/projects/sgconf/users.cpp b/projects/sgconf/users.cpp index 3958869c..9c6c30b5 100644 --- a/projects/sgconf/users.cpp +++ b/projects/sgconf/users.cpp @@ -1,5 +1,7 @@ #include "users.h" +#include "api_action.h" +#include "options.h" #include "config.h" #include "stg/servconf.h" @@ -7,6 +9,8 @@ #include "stg/common.h" #include <iostream> +#include <string> +#include <map> namespace { @@ -42,7 +46,6 @@ std::cout << Indent(level, true) << "login: " << info.login << "\n" << Indent(level) << "name: " << info.name << "\n" << Indent(level) << "address: " << info.address << "\n" << Indent(level) << "phone: " << info.phone << "\n" - << Indent(level) << "free mb: " << info.stat.freeMb << "\n" << Indent(level) << "last ping time: " << TimeToString(info.pingTime) << "\n" << Indent(level) << "last activity time: " << TimeToString(info.lastActivityTime) << "\n" << Indent(level) << "traffic:\n"; @@ -65,6 +68,48 @@ if (!info.authBy.empty()) } } +std::vector<SGCONF::API_ACTION::PARAM> GetUserParams() +{ +std::vector<SGCONF::API_ACTION::PARAM> params; +params.push_back(SGCONF::API_ACTION::PARAM("password", "<password>", "\tuser's password")); +params.push_back(SGCONF::API_ACTION::PARAM("cash", "<cash>", "\t\tuser's cash")); +params.push_back(SGCONF::API_ACTION::PARAM("credit", "<amount>", "\tuser's credit")); +params.push_back(SGCONF::API_ACTION::PARAM("credit-expire", "<date>", "\tcredit expiration")); +params.push_back(SGCONF::API_ACTION::PARAM("free", "<free mb>", "\tprepaid traffic")); +params.push_back(SGCONF::API_ACTION::PARAM("disabled", "<flag>", "\tdisable user (y|n)")); +params.push_back(SGCONF::API_ACTION::PARAM("passive", "<flag>", "\tmake user passive (y|n)")); +params.push_back(SGCONF::API_ACTION::PARAM("disable-detail-stat", "<flag>", "disable detail stat (y|n)")); +params.push_back(SGCONF::API_ACTION::PARAM("always-online", "<flag>", "\tmake user always online (y|n)")); +params.push_back(SGCONF::API_ACTION::PARAM("ips", "<ips>", "\t\tcoma-separated list of ips")); +params.push_back(SGCONF::API_ACTION::PARAM("tariff", "<tariff name>", "\tcurrent tariff")); +params.push_back(SGCONF::API_ACTION::PARAM("next-tariff", "<tariff name>", "tariff starting from the next month")); +params.push_back(SGCONF::API_ACTION::PARAM("group", "<group>", "\t\tuser's group")); +params.push_back(SGCONF::API_ACTION::PARAM("note", "<note>", "\t\tuser's note")); +params.push_back(SGCONF::API_ACTION::PARAM("email", "<email>", "\t\tuser's email")); +params.push_back(SGCONF::API_ACTION::PARAM("name", "<real name>", "\tuser's real name")); +params.push_back(SGCONF::API_ACTION::PARAM("address", "<address>", "\tuser's postal address")); +params.push_back(SGCONF::API_ACTION::PARAM("phone", "<phone>", "\t\tuser's phone number")); +params.push_back(SGCONF::API_ACTION::PARAM("session-traffic", "<up/dn, ...>", "coma-separated session upload and download")); +params.push_back(SGCONF::API_ACTION::PARAM("month-traffic", "<up/dn, ...>", "coma-separated month upload and download")); +params.push_back(SGCONF::API_ACTION::PARAM("user-data", "<value, ...>", "coma-separated user data values")); +return params; +} + +std::vector<SGCONF::API_ACTION::PARAM> GetCheckParams() +{ +std::vector<SGCONF::API_ACTION::PARAM> params; +params.push_back(SGCONF::API_ACTION::PARAM("password", "<password>", "\tuser's password")); +return params; +} + +std::vector<SGCONF::API_ACTION::PARAM> GetMessageParams() +{ +std::vector<SGCONF::API_ACTION::PARAM> params; +params.push_back(SGCONF::API_ACTION::PARAM("logins", "<login, ...>", "\tlist of logins to send a message")); +params.push_back(SGCONF::API_ACTION::PARAM("text", "<text>", "\t\tmessage text")); +return params; +} + void SimpleCallback(bool result, const std::string & reason, void * /*data*/) @@ -105,11 +150,9 @@ if (!result) PrintUser(info); } -} // namespace anonymous - -bool SGCONF::GetUsersFunction(const SGCONF::CONFIG & config, - const std::string & /*arg*/, - const std::map<std::string, std::string> & /*options*/) +bool GetUsersFunction(const SGCONF::CONFIG & config, + const std::string & /*arg*/, + const std::map<std::string, std::string> & /*options*/) { STG::SERVCONF proto(config.server.data(), config.port.data(), @@ -118,9 +161,9 @@ STG::SERVCONF proto(config.server.data(), return proto.GetUsers(GetUsersCallback, NULL) == STG::st_ok; } -bool SGCONF::GetUserFunction(const SGCONF::CONFIG & config, - const std::string & arg, - const std::map<std::string, std::string> & /*options*/) +bool GetUserFunction(const SGCONF::CONFIG & config, + const std::string & arg, + const std::map<std::string, std::string> & /*options*/) { STG::SERVCONF proto(config.server.data(), config.port.data(), @@ -129,9 +172,9 @@ STG::SERVCONF proto(config.server.data(), return proto.GetUser(arg, GetUserCallback, NULL) == STG::st_ok; } -bool SGCONF::DelUserFunction(const SGCONF::CONFIG & config, - const std::string & arg, - const std::map<std::string, std::string> & /*options*/) +bool DelUserFunction(const SGCONF::CONFIG & config, + const std::string & arg, + const std::map<std::string, std::string> & /*options*/) { STG::SERVCONF proto(config.server.data(), config.port.data(), @@ -140,38 +183,53 @@ STG::SERVCONF proto(config.server.data(), return proto.DelUser(arg, SimpleCallback, NULL) == STG::st_ok; } -bool SGCONF::AddUserFunction(const SGCONF::CONFIG & config, - const std::string & arg, - const std::map<std::string, std::string> & /*options*/) +bool AddUserFunction(const SGCONF::CONFIG & config, + const std::string & arg, + const std::map<std::string, std::string> & /*options*/) { // TODO std::cerr << "Unimplemented.\n"; return false; } -bool SGCONF::ChgUserFunction(const SGCONF::CONFIG & config, - const std::string & arg, - const std::map<std::string, std::string> & options) +bool ChgUserFunction(const SGCONF::CONFIG & config, + const std::string & arg, + const std::map<std::string, std::string> & options) { // TODO std::cerr << "Unimplemented.\n"; return false; } -bool SGCONF::CheckUserFunction(const SGCONF::CONFIG & config, - const std::string & arg, - const std::map<std::string, std::string> & options) +bool CheckUserFunction(const SGCONF::CONFIG & config, + const std::string & arg, + const std::map<std::string, std::string> & options) { // TODO std::cerr << "Unimplemented.\n"; return false; } -bool SGCONF::SendMessageFunction(const SGCONF::CONFIG & config, - const std::string & arg, - const std::map<std::string, std::string> & options) +bool SendMessageFunction(const SGCONF::CONFIG & config, + const std::string & arg, + const std::map<std::string, std::string> & options) { // TODO std::cerr << "Unimplemented.\n"; return false; } + +} // namespace anonymous + +void SGCONF::AppendUsersOptionBlock(COMMANDS & commands, OPTION_BLOCKS & blocks) +{ +std::vector<API_ACTION::PARAM> params(GetUserParams()); +blocks.Add("User management options") + .Add("get-users", SGCONF::MakeAPIAction(commands, GetUsersFunction), "\tget user list") + .Add("get-user", SGCONF::MakeAPIAction(commands, "<login>", GetUserFunction), "get user") + .Add("add-user", SGCONF::MakeAPIAction(commands, "<login>", params, AddUserFunction), "add user") + .Add("del-user", SGCONF::MakeAPIAction(commands, "<login>", DelUserFunction), "del user") + .Add("chg-user", SGCONF::MakeAPIAction(commands, "<login>", params, ChgUserFunction), "change user") + .Add("check-user", SGCONF::MakeAPIAction(commands, "<login>", GetCheckParams(), CheckUserFunction), "check user existance and credentials") + .Add("send-message", SGCONF::MakeAPIAction(commands, GetMessageParams(), SendMessageFunction), "send message"); +}