X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/dbe17f5c90e7e51d8d98c734ddec23ffbaa7803e..b3e7d936e230298dc2a30f6d065464c453a7b33c:/projects/stargazer/plugins/configuration/sgconfig/configproto.cpp diff --git a/projects/stargazer/plugins/configuration/sgconfig/configproto.cpp b/projects/stargazer/plugins/configuration/sgconfig/configproto.cpp index c6218e94..088bbbcc 100644 --- a/projects/stargazer/plugins/configuration/sgconfig/configproto.cpp +++ b/projects/stargazer/plugins/configuration/sgconfig/configproto.cpp @@ -29,6 +29,16 @@ */ +#include "parser.h" +#include "parser_auth_by.h" +#include "parser_user_info.h" + +#include "stg/users.h" +#include "stg/admins.h" +#include "stg/tariffs.h" +#include "stg/logger.h" +#include "stg/common.h" + #include #include "configproto.h" @@ -40,26 +50,23 @@ CONFIGPROTO * cp = static_cast(data); if (cp->currParser) { - cp->currParser->SetAnswerList(&cp->answerList); - cp->currParser->SetCurrAdmin(cp->currAdmin); - cp->currParser->ParseStart(data, el, attr); + //cp->currParser->SetCurrAdmin(*cp->currAdmin); + cp->currParser->Start(data, el, attr); } else { - for (unsigned int i = 0; i < cp->dataParser.size(); i++) + for (size_t i = 0; i < cp->dataParser.size(); i++) { - cp->dataParser[i]->SetAnswerList(&cp->answerList); - //cp->currAdmin->SetAdminIP(cp->GetAdminIP()); - cp->dataParser[i]->SetCurrAdmin(cp->currAdmin); - cp->dataParser[i]->Reset(); - if (cp->dataParser[i]->ParseStart(data, el, attr) == 0) + //cp->dataParser[i]->SetCurrAdmin(*cp->currAdmin); + //cp->dataParser[i]->Reset(); + if (cp->dataParser[i]->Start(data, el, attr) == 0) { cp->currParser = cp->dataParser[i]; break; } else { - cp->dataParser[i]->Reset(); + //cp->dataParser[i]->Reset(); } } } @@ -70,81 +77,106 @@ void ParseXMLEnd(void *data, const char *el) CONFIGPROTO * cp = static_cast(data); if (cp->currParser) { - if (cp->currParser->ParseEnd(data, el) == 0) + if (cp->currParser->End(data, el) == 0) { + cp->dataAnswer = cp->currParser->GetAnswer(); cp->currParser = NULL; } } else { - for (unsigned int i = 0; i < cp->dataParser.size(); i++) + for (size_t i = 0; i < cp->dataParser.size(); i++) { - if (cp->dataParser[i]->ParseEnd(data, el) == 0) + if (cp->dataParser[i]->End(data, el) == 0) { + cp->dataAnswer = cp->currParser->GetAnswer(); + cp->currParser = NULL; break; } } } } //----------------------------------------------------------------------------- -CONFIGPROTO::CONFIGPROTO() - : adminIP(0), +CONFIGPROTO::CONFIGPROTO(PLUGIN_LOGGER & l) + : answerList(), + requestList(), + adminIP(0), + adminLogin(), + adminPassword(), port(0), - nonstop(1), + thrReciveSendConf(), + nonstop(true), state(0), - currAdmin(), - WriteServLog(GetStgLogger()), - outerSocket(0), - listenSocket(0), + currAdmin(NULL), + logger(l), + listenSocket(-1), + parserGetServInfo(), + parserGetUsers(), + parserGetUser(), + parserChgUser(), + parserAddUser(), + parserDelUser(), + parserCheckUser(), + parserSendMessage(), + parserAuthBy(), + parserGetAdmins(), + parserAddAdmin(), + parserDelAdmin(), + parserChgAdmin(), + parserGetTariffs(), + parserAddTariff(), + parserDelTariff(), + parserChgTariff(), admins(NULL), - //users(NULL), - //tariffs(NULL), - //store(NULL), - //settings(NULL), - currParser(NULL) -{ -dataParser.push_back(&parserGetServInfo); - -dataParser.push_back(&parserGetUsers); -dataParser.push_back(&parserGetUser); -dataParser.push_back(&parserChgUser); -dataParser.push_back(&parserAddUser); -dataParser.push_back(&parserDelUser); -dataParser.push_back(&parserCheckUser); -dataParser.push_back(&parserSendMessage); - -dataParser.push_back(&parserGetTariffs); -dataParser.push_back(&parserAddTariff); -dataParser.push_back(&parserDelTariff); -dataParser.push_back(&parserChgTariff); - -dataParser.push_back(&parserGetAdmins); -dataParser.push_back(&parserChgAdmin); -dataParser.push_back(&parserDelAdmin); -dataParser.push_back(&parserAddAdmin); + currParser(NULL), + dataParser(), + xmlParser(), + errorStr() +{ +/*dataParser.push_back(new PARSER_GET_SERVER_INFO); + +dataParser.push_back(new PARSER_GET_USERS); +dataParser.push_back(new PARSER_GET_USER); +dataParser.push_back(new PARSER_CHG_USER); +dataParser.push_back(new PARSER_ADD_USER); +dataParser.push_back(new PARSER_DEL_USER); +dataParser.push_back(new PARSER_CHECK_USER); +dataParser.push_back(new PARSER_SEND_MESSAGE); +dataParser.push_back(new PARSER_AUTH_BY); +dataParser.push_back(new PARSER_USER_INFO); + +dataParser.push_back(new PARSER_GET_TARIFFS); +dataParser.push_back(new PARSER_ADD_TARIFF); +dataParser.push_back(new PARSER_DEL_TARIFF); +dataParser.push_back(new PARSER_CHG_TARIFF); + +dataParser.push_back(new PARSER_GET_ADMINS); +dataParser.push_back(new PARSER_CHG_ADMIN); +dataParser.push_back(new PARSER_DEL_ADMIN); +dataParser.push_back(new PARSER_ADD_ADMIN);*/ xmlParser = XML_ParserCreate(NULL); if (!xmlParser) { - WriteServLog("Couldn't allocate memory for parser."); + logger("Couldn't allocate memory for parser."); exit(1); } -//XML_SetElementHandler(parser, ParseXMLStart, ParseXMLEnd); } //----------------------------------------------------------------------------- CONFIGPROTO::~CONFIGPROTO() { +for (size_t i = 0; i < dataParser.size(); ++i) + delete dataParser[i]; XML_ParserFree(xmlParser); } //----------------------------------------------------------------------------- int CONFIGPROTO::ParseCommand() { -list::iterator n; +std::list::iterator n; int done = 0; char str[9]; -int len; if (requestList.empty()) return 0; @@ -162,23 +194,23 @@ while(nonstop) { strncpy(str, (*n).c_str(), 8); str[8] = 0; - len = strlen(str); + size_t len = strlen(str); - n++; + ++n; if (n == requestList.end()) done = 1; - n--; + --n; - if (XML_Parse(xmlParser, (*n).c_str(), len, done) == XML_STATUS_ERROR) + if (XML_Parse(xmlParser, (*n).c_str(), static_cast(len), done) == XML_STATUS_ERROR) { - WriteServLog("Invalid configuration request"); + logger("Invalid configuration request"); printfd(__FILE__, "Parse error at line %d:\n%s\n", XML_GetCurrentLineNumber(xmlParser), XML_ErrorString(XML_GetErrorCode(xmlParser))); if (currParser) { printfd(__FILE__, "Parser reset\n"); - currParser->Reset(); + //currParser->Reset(); currParser = NULL; } @@ -188,7 +220,7 @@ while(nonstop) if (done) return 0; - n++; + ++n; } return 0; @@ -199,101 +231,8 @@ void CONFIGPROTO::SetPort(uint16_t p) port = p; } //----------------------------------------------------------------------------- -/*void CONFIGPROTO::SetHostAllow(HOSTALLOW *) -{ -//hostAllow = ha; -}*/ -//----------------------------------------------------------------------------- void CONFIGPROTO::SetAdmins(ADMINS * a) { admins = a; -for (unsigned int i = 0; i < dataParser.size(); i++) - { - dataParser[i]->SetAdmins(a); - } - -} -//----------------------------------------------------------------------------- -void CONFIGPROTO::SetUsers(USERS * u) -{ -//users = u; -for (unsigned int i = 0; i < dataParser.size(); i++) - { - dataParser[i]->SetUsers(u); - } - -} -//----------------------------------------------------------------------------- -void CONFIGPROTO::SetTariffs(TARIFFS * t) -{ -//tariffs = t; -for (unsigned int i = 0; i < dataParser.size(); i++) - { - dataParser[i]->SetTariffs(t); - } -} -//----------------------------------------------------------------------------- -void CONFIGPROTO::SetStore(BASE_STORE * s) -{ -//store = s; -for (unsigned int i = 0; i < dataParser.size(); i++) - { - dataParser[i]->SetStore(s); - } -} -//----------------------------------------------------------------------------- -void CONFIGPROTO::SetStgSettings(const SETTINGS * s) -{ -//settings = s; -for (unsigned int i = 0; i < dataParser.size(); i++) - { - dataParser[i]->SetStgSettings(s); - } -} -//----------------------------------------------------------------------------- -/*void CONFIGPROTO::Start() -{ -finished = false; -threadExited = false; -status = starting; - -xmlParser = XML_ParserCreate(NULL); - -if (!xmlParser) - { - WriteServLog("Couldn't allocate memory for parser."); - } - -pthread_create(&thrReciveSendConf, NULL, ReciveSendConf, this); -status = started; -}*/ -//----------------------------------------------------------------------------- -/*int CONFIGPROTO::Stop() -{ -nonstop = true; -close(outerSocket); -return 0; -}*/ -//----------------------------------------------------------------------------- -/*void CONFIGPROTO::Restart() -{ -//Stop(); -//Start(); -}*/ -//----------------------------------------------------------------------------- -/*CONF_STATUS CONFIGPROTO::Status() -{ -//return status; -} -//----------------------------------------------------------------------------- -*/ -const string & CONFIGPROTO::GetStrError() const -{ -return errorStr; -} -//----------------------------------------------------------------------------- -uint32_t CONFIGPROTO::GetAdminIP() const -{ -return adminIP; } //-----------------------------------------------------------------------------