]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/configuration/sgconfig/configproto.cpp
Handle string for encryption properly.
[stg.git] / projects / stargazer / plugins / configuration / sgconfig / configproto.cpp
index ec3e3ee3c86e765a5a048e3fe8fe920e596091b4..84e57bb2a2fe4eed4f561518fa550df498cdfd26 100644 (file)
 
 #include "configproto.h"
 
+#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>
 
 //-----------------------------------------------------------------------------
@@ -39,7 +49,6 @@ CONFIGPROTO * cp = static_cast<CONFIGPROTO *>(data);
 
 if (cp->currParser)
     {
-    cp->currParser->SetAnswerList(&cp->answerList);
     cp->currParser->SetCurrAdmin(*cp->currAdmin);
     cp->currParser->ParseStart(data, el, attr);
     }
@@ -47,7 +56,6 @@ else
     {
     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)
@@ -70,6 +78,7 @@ if (cp->currParser)
     {
     if (cp->currParser->ParseEnd(data, el) == 0)
         {
+        cp->dataAnswer = cp->currParser->GetAnswer();
         cp->currParser = NULL;
         }
     }
@@ -79,6 +88,8 @@ else
         {
         if (cp->dataParser[i]->ParseEnd(data, el) == 0)
             {
+            cp->dataAnswer = cp->currParser->GetAnswer();
+            cp->currParser = NULL;
             break;
             }
         }
@@ -96,27 +107,27 @@ CONFIGPROTO::CONFIGPROTO(PLUGIN_LOGGER & l)
       admins(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(&parserAuthBy);
-dataParser.push_back(&parserUserInfo);
-
-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);
 
@@ -130,6 +141,8 @@ if (!xmlParser)
 //-----------------------------------------------------------------------------
 CONFIGPROTO::~CONFIGPROTO()
 {
+for (size_t i = 0; i < dataParser.size(); ++i)
+    delete dataParser[i];
 XML_ParserFree(xmlParser);
 }
 //-----------------------------------------------------------------------------