]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/configuration/sgconfig/configproto.cpp
Minor changes in plugin interface.
[stg.git] / projects / stargazer / plugins / configuration / sgconfig / configproto.cpp
index 38b423fb8b6b7410faa15faf4e628e1393da20af..eb8fbcdea81e30eb687eca0a8a2f03b573eca8e7 100644 (file)
  $Author: faust $
  */
 
+#include "configproto.h"
 
-#include <unistd.h>
+#include "parser.h"
+#include "parser_auth_by.h"
+#include "parser_user_info.h"
 
-#include "configproto.h"
+#include "stg/users.h"
+#include "stg/admins.h"
+#include "stg/tariffs.h"
+#include "stg/logger.h"
+#include "stg/common.h"
+
+#include <unistd.h>
 
 //-----------------------------------------------------------------------------
 void ParseXMLStart(void *data, const char *el, const char **attr)
@@ -40,26 +49,23 @@ 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);
+    //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 +76,81 @@ void ParseXMLEnd(void *data, const char *el)
 CONFIGPROTO * cp = static_cast<CONFIGPROTO *>(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()
+CONFIGPROTO::CONFIGPROTO(PLUGIN_LOGGER & l)
     : adminIP(0),
       port(0),
-      nonstop(1),
+      nonstop(true),
       state(0),
-      currAdmin(),
-      WriteServLog(GetStgLogger()),
-      outerSocket(0),
-      listenSocket(0),
+      currAdmin(NULL),
+      logger(l),
+      listenSocket(-1),
       admins(NULL),
-      //users(NULL),
-      //tariffs(NULL),
-      //store(NULL),
-      //settings(NULL),
       currParser(NULL)
 {
-dataParser.push_back(&parserGetServInfo);
+/*dataParser.push_back(new PARSER_GET_SERVER_INFO);
 
-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(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(&parserGetTariffs);
-dataParser.push_back(&parserAddTariff);
-dataParser.push_back(&parserDelTariff);
-dataParser.push_back(&parserChgTariff);
+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(&parserGetAdmins);
-dataParser.push_back(&parserChgAdmin);
-dataParser.push_back(&parserDelAdmin);
-dataParser.push_back(&parserAddAdmin);
+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<string>::iterator n;
+std::list<std::string>::iterator n;
 int done = 0;
 char str[9];
-int len;
 
 if (requestList.empty())
     return 0;
@@ -162,23 +168,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<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)));
         if (currParser)
             {
             printfd(__FILE__, "Parser reset\n");
-            currParser->Reset();
+            //currParser->Reset();
             currParser = NULL;
             }
 
@@ -188,112 +194,14 @@ while(nonstop)
     if (done)
         return 0;
 
-    n++;
+    ++n;
     }
 
 return 0;
 }
 //-----------------------------------------------------------------------------
-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()
-{
-return errorStr;
-}
-//-----------------------------------------------------------------------------
-uint32_t CONFIGPROTO::GetAdminIP()
-{
-return adminIP;
 }
 //-----------------------------------------------------------------------------