*/
+#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 <unistd.h>
#include "configproto.h"
if (cp->currParser)
{
- cp->currParser->SetAnswerList(&cp->answerList);
cp->currParser->SetCurrAdmin(*cp->currAdmin);
cp->currParser->ParseStart(data, el, attr);
}
{
for (size_t i = 0; i < cp->dataParser.size(); i++)
{
- cp->dataParser[i]->SetAnswerList(&cp->answerList);
cp->dataParser[i]->SetCurrAdmin(*cp->currAdmin);
cp->dataParser[i]->Reset();
if (cp->dataParser[i]->ParseStart(data, el, attr) == 0)
{
if (cp->currParser->ParseEnd(data, el) == 0)
{
+ cp->dataAnswer = cp->currParser->GetAnswer();
cp->currParser = NULL;
}
}
{
if (cp->dataParser[i]->ParseEnd(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()),
- 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),
- currParser(NULL)
+ currParser(NULL),
+ dataParser(),
+ xmlParser(),
+ errorStr()
{
-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);
+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);
}
//-----------------------------------------------------------------------------
CONFIGPROTO::~CONFIGPROTO()
{
+for (size_t i = 0; i < dataParser.size(); ++i)
+ delete dataParser[i];
XML_ParserFree(xmlParser);
}
//-----------------------------------------------------------------------------
int CONFIGPROTO::ParseCommand()
{
-list<string>::iterator n;
+std::list<std::string>::iterator n;
int done = 0;
char str[9];
-int len;
if (requestList.empty())
return 0;
{
strncpy(str, (*n).c_str(), 8);
str[8] = 0;
- len = strlen(str);
+ size_t len = strlen(str);
++n;
if (n == requestList.end())
done = 1;
--n;
- if (XML_Parse(xmlParser, (*n).c_str(), len, done) == XML_STATUS_ERROR)
+ if (XML_Parse(xmlParser, (*n).c_str(), static_cast<int>(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)));