X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/fdfb7497dea6cc94a44133ef19e953ced167e855..3a9bc658f505e423b3be181948f1870a09915ea9:/stglibs/srvconf.lib/parser.cpp?ds=sidebyside

diff --git a/stglibs/srvconf.lib/parser.cpp b/stglibs/srvconf.lib/parser.cpp
index 89b2457c..40557e3c 100644
--- a/stglibs/srvconf.lib/parser.cpp
+++ b/stglibs/srvconf.lib/parser.cpp
@@ -33,10 +33,9 @@
 #include <arpa/inet.h>
 #include <string>
 
-#include "common.h"
-//#include "srvconf_common.h"
-#include "stg_const.h"
-#include "servconf.h"
+#include "stg/common.h"
+#include "stg/const.h"
+#include "stg/servconf.h"
 
 using namespace std;
 
@@ -46,8 +45,7 @@ using namespace std;
 PARSER_GET_USERS::PARSER_GET_USERS()
     : RecvUserDataCb(NULL),
       userDataCb(NULL),
-      depth(0),
-      error(false)
+      depth(0)
 {
 }
 //-----------------------------------------------------------------------------
@@ -387,8 +385,7 @@ userDataCb = data;
 PARSER_GET_USER::PARSER_GET_USER()
     : RecvUserDataCb(NULL),
       userDataCb(NULL),
-      depth(0),
-      error(false)
+      depth(0)
 {
 }
 //-----------------------------------------------------------------------------
@@ -664,8 +661,7 @@ userDataCb = data;
 PARSER_GET_SERVER_INFO::PARSER_GET_SERVER_INFO()
     : RecvServerInfoDataCb(NULL),
       serverInfoDataCb(NULL),
-      depth(0),
-      error(false)
+      depth(0)
 {
 }
 //-----------------------------------------------------------------------------
@@ -820,11 +816,60 @@ if (strcmp(attr[0], "value") == 0)
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
+PARSER_AUTH_BY::PARSER_AUTH_BY()
+    : RecvAuthByDataCb(NULL),
+      authByDataCb(NULL),
+      depth(0)
+{
+}
+//-----------------------------------------------------------------------------
+int PARSER_AUTH_BY::ParseStart(const char *el, const char **attr)
+{
+depth++;
+if (depth == 1)
+    {
+    if (strcasecmp(el, "AuthorizedBy") != 0)
+        {
+        list.erase(list.begin(), list.end());
+        //printf("%s\n", el);
+        }
+    }
+else
+    {
+    if (depth == 2)
+        {
+        if (strcasecmp(el, "Auth") == 0)
+            {
+            if (attr && attr[0] && attr[1])
+                list.push_back(attr[1]);
+            return 0;
+            }
+        }
+    }
+return 0;
+}
+//-----------------------------------------------------------------------------
+void PARSER_AUTH_BY::ParseEnd(const char *)
+{
+depth--;
+if (depth == 0)
+    {
+    RecvAuthByDataCb(list, authByDataCb);
+    }
+}
+//-----------------------------------------------------------------------------
+void PARSER_AUTH_BY::SetRecvCb(RecvAuthByDataCb_t f, void * data)
+{
+RecvAuthByDataCb = f;
+authByDataCb = data;
+}
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 PARSER_CHG_USER::PARSER_CHG_USER()
     : RecvChgUserCb(NULL),
       chgUserCbData(NULL),
-      depth(0),
-      error(false)
+      depth(0)
 {
 }
 //-----------------------------------------------------------------------------
@@ -873,8 +918,7 @@ chgUserCbData = data;
 PARSER_CHECK_USER::PARSER_CHECK_USER()
     : RecvCheckUserCb(NULL),
       checkUserCbData(NULL),
-      depth(0),
-      error(false)
+      depth(0)
 {
 }
 //-----------------------------------------------------------------------------
@@ -916,8 +960,7 @@ checkUserCbData = data;
 PARSER_SEND_MESSAGE::PARSER_SEND_MESSAGE()
     : RecvSendMessageCb(NULL),
       sendMessageCbData(NULL),
-      depth(0),
-      error(false)
+      depth(0)
 {
 }
 //-----------------------------------------------------------------------------