X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/250a7d6e7a4c8ffd644931b7b3964289a8f99151..cea081452750a357baae9edf2764dcd4f3b78ca9:/projects/stargazer/plugins/configuration/sgconfig/parser_admins.cpp diff --git a/projects/stargazer/plugins/configuration/sgconfig/parser_admins.cpp b/projects/stargazer/plugins/configuration/sgconfig/parser_admins.cpp index c75dc8a7..1de533d6 100644 --- a/projects/stargazer/plugins/configuration/sgconfig/parser_admins.cpp +++ b/projects/stargazer/plugins/configuration/sgconfig/parser_admins.cpp @@ -22,7 +22,8 @@ #include "parser_admins.h" #include "stg/admins.h" -#include "stg/common.h" +#include "stg/admin.h" +#include "stg/admin_conf.h" #include // strcasecmp @@ -31,41 +32,40 @@ using STG::PARSER::ADD_ADMIN; using STG::PARSER::DEL_ADMIN; using STG::PARSER::CHG_ADMIN; +const char * GET_ADMINS::tag = "GetAdmins"; +const char * ADD_ADMIN::tag = "AddAdmin"; +const char * DEL_ADMIN::tag = "DelAdmin"; +const char * CHG_ADMIN::tag = "ChgAdmin"; + void GET_ADMINS::CreateAnswer() { - const PRIV * priv = currAdmin.GetPriv(); - if (!priv->adminChg) + const auto& priv = m_currAdmin.priv(); + if (!priv.adminChg) { - answer = ""; + m_answer = ""; return; } - answer.clear(); - - answer += GetOpenTag(); - ADMIN_CONF ac; - int h = m_admins.OpenSearch(); - - while (m_admins.SearchNext(h, &ac) == 0) - { - unsigned int p = (ac.priv.userStat << 0) + - (ac.priv.userConf << 2) + - (ac.priv.userCash << 4) + - (ac.priv.userPasswd << 6) + - (ac.priv.userAddDel << 8) + - (ac.priv.adminChg << 10) + - (ac.priv.tariffChg << 12); - answer += ""; - } - m_admins.CloseSearch(h); - answer += GetCloseTag(); + m_answer = ""; + m_admins.fmap([this](const Admin& admin) + { + const unsigned int p = (admin.priv().userStat << 0) + + (admin.priv().userConf << 2) + + (admin.priv().userCash << 4) + + (admin.priv().userPasswd << 6) + + (admin.priv().userAddDel << 8) + + (admin.priv().adminChg << 10) + + (admin.priv().tariffChg << 12); + m_answer += ""; + }); + m_answer += ""; } int DEL_ADMIN::Start(void *, const char * el, const char ** attr) { - if (strcasecmp(el, tag.c_str()) == 0) + if (strcasecmp(el, m_tag.c_str()) == 0) { - admin = attr[1]; + m_admin = attr[1]; return 0; } return -1; @@ -73,17 +73,17 @@ int DEL_ADMIN::Start(void *, const char * el, const char ** attr) void DEL_ADMIN::CreateAnswer() { - if (m_admins.Del(admin, &currAdmin) == 0) - answer = "<" + tag + " Result=\"Ok\"/>"; + if (m_admins.del(m_admin, m_currAdmin) == 0) + m_answer = "<" + m_tag + " Result=\"Ok\"/>"; else - answer = "<" + tag + " Result=\"Error. " + m_admins.GetStrError() + "\"/>"; + m_answer = "<" + m_tag + " Result=\"Error. " + m_admins.strError() + "\"/>"; } int ADD_ADMIN::Start(void *, const char *el, const char **attr) { - if (strcasecmp(el, tag.c_str()) == 0) + if (strcasecmp(el, m_tag.c_str()) == 0) { - admin = attr[1]; + m_admin = attr[1]; return 0; } return -1; @@ -91,15 +91,15 @@ int ADD_ADMIN::Start(void *, const char *el, const char **attr) void ADD_ADMIN::CreateAnswer() { - if (m_admins.Add(admin, &currAdmin) == 0) - answer = "<" + tag + " Result=\"Ok\"/>"; + if (m_admins.add(m_admin, m_currAdmin) == 0) + m_answer = "<" + m_tag + " Result=\"Ok\"/>"; else - answer = "<" + tag + " Result=\"Error. " + m_admins.GetStrError() + "\"/>"; + m_answer = "<" + m_tag + " Result=\"Error. " + m_admins.strError() + "\"/>"; } int CHG_ADMIN::Start(void *, const char * el, const char ** attr) { - if (strcasecmp(el, tag.c_str()) == 0) + if (strcasecmp(el, m_tag.c_str()) == 0) { for (size_t i = 0; i < 6; i += 2) { @@ -135,36 +135,36 @@ void CHG_ADMIN::CreateAnswer() { if (!login.empty()) { - ADMIN * origAdmin = NULL; + Admin * origAdmin = NULL; - if (m_admins.Find(login, &origAdmin)) + if (m_admins.find(login, &origAdmin)) { - answer = "<" + tag + " Result = \"Admin '" + login + "' is not found.\"/>"; + m_answer = "<" + m_tag + " Result = \"Admin '" + login + "' is not found.\"/>"; return; } - ADMIN_CONF conf(origAdmin->GetConf()); + AdminConf conf(origAdmin->conf()); - if (!password.empty()) - conf.password = password.data(); + if (password) + conf.password = password.value(); - if (!privAsString.empty()) + if (privAsString) { int p = 0; - if (str2x(privAsString.data().c_str(), p) < 0) + if (str2x(privAsString.value().c_str(), p) < 0) { - answer = "<" + tag + " Result = \"Incorrect parameter Priv.\"/>"; + m_answer = "<" + m_tag + " Result = \"Incorrect parameter Priv.\"/>"; return; } - conf.priv.FromInt(p); + conf.priv = Priv(p); } - if (m_admins.Change(conf, &currAdmin) != 0) - answer = "<" + tag + " Result = \"" + m_admins.GetStrError() + "\"/>"; + if (m_admins.change(conf, m_currAdmin) != 0) + m_answer = "<" + m_tag + " Result = \"" + m_admins.strError() + "\"/>"; else - answer = "<" + tag + " Result = \"Ok\"/>"; + m_answer = "<" + m_tag + " Result = \"Ok\"/>"; } else - answer = "<" + tag + " Result = \"Incorrect parameter login.\"/>"; + m_answer = "<" + m_tag + " Result = \"Incorrect parameter login.\"/>"; }