X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/8c6fa3fbaccc22127280bf77a48fab5a3ee0716e..46b0747592074017ff0ea4b33d4a7194235886e5:/projects/stargazer/plugins/configuration/rpcconfig/admins_methods.cpp diff --git a/projects/stargazer/plugins/configuration/rpcconfig/admins_methods.cpp b/projects/stargazer/plugins/configuration/rpcconfig/admins_methods.cpp deleted file mode 100644 index 643f6e74..00000000 --- a/projects/stargazer/plugins/configuration/rpcconfig/admins_methods.cpp +++ /dev/null @@ -1,257 +0,0 @@ -#include // xmlrpc-c devs have missed something :) - -#include "stg/common.h" -#include "admins_methods.h" -#include "rpcconfig.h" - -//------------------------------------------------------------------------------ - -void METHOD_ADMIN_GET::execute(xmlrpc_c::paramList const & paramList, - xmlrpc_c::value * const retvalPtr) -{ -std::string cookie = paramList.getString(0); -std::string login = paramList.getString(1); -paramList.verifyEnd(2); - -std::map structVal; -ADMIN_INFO adminInfo; - -if (config->GetAdminInfo(cookie, &adminInfo)) - { - structVal["result"] = xmlrpc_c::value_boolean(false); - *retvalPtr = xmlrpc_c::value_struct(structVal); - return; - } - -ADMIN * admin; - -if (admins->Find(login, &admin)) - { - structVal["result"] = xmlrpc_c::value_boolean(false); - *retvalPtr = xmlrpc_c::value_struct(structVal); - return; - } - -structVal["result"] = xmlrpc_c::value_boolean(true); -structVal["login"] = xmlrpc_c::value_string(admin->GetLogin()); -structVal["password"] = xmlrpc_c::value_string(admin->GetPassword()); - -const PRIV * priv = admin->GetPriv(); - -structVal["user_stat"] = xmlrpc_c::value_boolean(priv->userStat); -structVal["user_conf"] = xmlrpc_c::value_boolean(priv->userConf); -structVal["user_cash"] = xmlrpc_c::value_boolean(priv->userCash); -structVal["user_passwd"] = xmlrpc_c::value_boolean(priv->userPasswd); -structVal["user_add_del"] = xmlrpc_c::value_boolean(priv->userAddDel); -structVal["admin_chg"] = xmlrpc_c::value_boolean(priv->adminChg); -structVal["tariff_chg"] = xmlrpc_c::value_boolean(priv->tariffChg); - -*retvalPtr = xmlrpc_c::value_struct(structVal); -} - -//------------------------------------------------------------------------------ - -void METHOD_ADMIN_ADD::execute(xmlrpc_c::paramList const & paramList, - xmlrpc_c::value * const retvalPtr) -{ -std::string cookie = paramList.getString(0); -std::string login = paramList.getString(1); -paramList.verifyEnd(2); - -ADMIN_INFO adminInfo; - -if (config->GetAdminInfo(cookie, &adminInfo)) - { - printfd(__FILE__, "METHOD_ADMIN_ADD::execute(): 'Not logged or cookie timeout'\n"); - *retvalPtr = xmlrpc_c::value_boolean(false); - return; - } - -ADMIN * admin; - -if (admins->Find(adminInfo.admin, &admin)) - { - printfd(__FILE__, "METHOD_ADMIN_ADD::execute(): 'Invalid admin (logged)'\n"); - *retvalPtr = xmlrpc_c::value_boolean(false); - return; - } - -if (admins->Add(login, admin)) - { - printfd(__FILE__, "METHOD_ADMIN_ADD::execute(): 'Failed to add admin'\n"); - *retvalPtr = xmlrpc_c::value_boolean(false); - return; - } - -*retvalPtr = xmlrpc_c::value_boolean(true); -} - -//------------------------------------------------------------------------------ - -void METHOD_ADMIN_DEL::execute(xmlrpc_c::paramList const & paramList, - xmlrpc_c::value * const retvalPtr) -{ -std::string cookie = paramList.getString(0); -std::string login = paramList.getString(1); -paramList.verifyEnd(2); - -ADMIN_INFO adminInfo; - -if (config->GetAdminInfo(cookie, &adminInfo)) - { - *retvalPtr = xmlrpc_c::value_boolean(false); - return; - } - -ADMIN * admin; - -if (admins->Find(adminInfo.admin, &admin)) - { - *retvalPtr = xmlrpc_c::value_boolean(false); - return; - } - -if (admins->Del(login, admin)) - { - *retvalPtr = xmlrpc_c::value_boolean(false); - return; - } - -*retvalPtr = xmlrpc_c::value_boolean(true); -} - -//------------------------------------------------------------------------------ - -void METHOD_ADMIN_CHG::execute(xmlrpc_c::paramList const & paramList, - xmlrpc_c::value * const retvalPtr) -{ -std::string cookie = paramList.getString(0); -std::string login = paramList.getString(1); -xmlrpc_c::value_struct info(paramList.getStruct(2)); -paramList.verifyEnd(3); - -ADMIN_INFO adminInfo; - -if (config->GetAdminInfo(cookie, &adminInfo)) - { - *retvalPtr = xmlrpc_c::value_boolean(false); - return; - } - -ADMIN * loggedAdmin; - -if (admins->Find(adminInfo.admin, &loggedAdmin)) - { - *retvalPtr = xmlrpc_c::value_boolean(false); - return; - } - -ADMIN * admin; - -if (admins->Find(login, &admin)) - { - *retvalPtr = xmlrpc_c::value_boolean(false); - return; - } - -ADMIN_CONF conf; - -conf.priv = *admin->GetPriv(); -conf.password = admin->GetPassword(); -conf.login = login; - -std::map structVal( - static_cast >(xmlrpc_c::value_struct(info)) - ); - -std::map::iterator it; - -if ((it = structVal.find("password")) != structVal.end()) - { - conf.password = xmlrpc_c::value_string(it->second); - } - -if ((it = structVal.find("user_stat")) != structVal.end()) - { - conf.priv.userStat = xmlrpc_c::value_boolean(it->second); - } - -if ((it = structVal.find("user_conf")) != structVal.end()) - { - conf.priv.userConf = xmlrpc_c::value_boolean(it->second); - } - -if ((it = structVal.find("user_cash")) != structVal.end()) - { - conf.priv.userCash = xmlrpc_c::value_boolean(it->second); - } - -if ((it = structVal.find("user_passwd")) != structVal.end()) - { - conf.priv.userPasswd = xmlrpc_c::value_boolean(it->second); - } - -if ((it = structVal.find("user_add_del")) != structVal.end()) - { - conf.priv.userAddDel = xmlrpc_c::value_boolean(it->second); - } - -if ((it = structVal.find("admin_chg")) != structVal.end()) - { - conf.priv.adminChg = xmlrpc_c::value_boolean(it->second); - } - -if ((it = structVal.find("tariff_chg")) != structVal.end()) - { - conf.priv.tariffChg = xmlrpc_c::value_boolean(it->second); - } - -if (admins->Change(conf, loggedAdmin)) - { - *retvalPtr = xmlrpc_c::value_boolean(false); - } - -*retvalPtr = xmlrpc_c::value_boolean(true); -} - -//------------------------------------------------------------------------------ - -void METHOD_ADMINS_GET::execute(xmlrpc_c::paramList const & paramList, - xmlrpc_c::value * const retvalPtr) -{ -std::string cookie = paramList.getString(0); -paramList.verifyEnd(1); - -std::map mainStructVal; -std::vector retval; -ADMIN_INFO adminInfo; - -if (config->GetAdminInfo(cookie, &adminInfo)) - { - mainStructVal["result"] = xmlrpc_c::value_boolean(false); - *retvalPtr = xmlrpc_c::value_struct(mainStructVal); - return; - } - -ADMIN_CONF ac; -int h = admins->OpenSearch(); - -while (admins->SearchNext(h, &ac) == 0) - { - std::map structVal; - structVal["result"] = xmlrpc_c::value_boolean(true); - structVal["login"] = xmlrpc_c::value_string(ac.login); - structVal["password"] = xmlrpc_c::value_string(ac.password); - structVal["user_stat"] = xmlrpc_c::value_boolean(ac.priv.userStat); - structVal["user_conf"] = xmlrpc_c::value_boolean(ac.priv.userConf); - structVal["user_cash"] = xmlrpc_c::value_boolean(ac.priv.userCash); - structVal["user_passwd"] = xmlrpc_c::value_boolean(ac.priv.userPasswd); - structVal["user_add_del"] = xmlrpc_c::value_boolean(ac.priv.userAddDel); - structVal["admin_chg"] = xmlrpc_c::value_boolean(ac.priv.adminChg); - structVal["tariff_chg"] = xmlrpc_c::value_boolean(ac.priv.tariffChg); - - retval.push_back(xmlrpc_c::value_struct(structVal)); - } - -*retvalPtr = xmlrpc_c::value_array(retval); -}