X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/641204dfbdb9fc870cdd2e7f9e3169a44693e7bf..4afaecdd25eb53949f523e5d4891d5dbbfadb63d:/stglibs/srvconf.lib/parser.cpp?ds=inline
diff --git a/stglibs/srvconf.lib/parser.cpp b/stglibs/srvconf.lib/parser.cpp
index 7c96b2ed..40557e3c 100644
--- a/stglibs/srvconf.lib/parser.cpp
+++ b/stglibs/srvconf.lib/parser.cpp
@@ -33,30 +33,20 @@
#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;
-//-----------------------------------------------------------------------------
-PARSER::PARSER()
-{
-}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
PARSER_GET_USERS::PARSER_GET_USERS()
+ : RecvUserDataCb(NULL),
+ userDataCb(NULL),
+ depth(0)
{
-depth = 0;
-error = false;
-RecvUserDataCb = NULL;
-}
-//-----------------------------------------------------------------------------
-void PARSER_GET_USERS::Reset()
-{
-
}
//-----------------------------------------------------------------------------
int PARSER_GET_USERS::ParseStart(const char *el, const char **attr)
@@ -173,6 +163,14 @@ if (strcasecmp(el, "credit") == 0)
}
}
+if (strcasecmp(el, "creditExpire") == 0)
+ {
+ if (str2x(attr[1], user.creditExpire) < 0)
+ {
+ return;
+ }
+ }
+
/*if (strcasecmp(el, "freemb") == 0)
{
if (strtodouble2(attr[1], user.freeMb) < 0)
@@ -385,15 +383,10 @@ userDataCb = data;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
PARSER_GET_USER::PARSER_GET_USER()
+ : RecvUserDataCb(NULL),
+ userDataCb(NULL),
+ depth(0)
{
-depth = 0;
-error = false;
-RecvUserDataCb = NULL;
-}
-//-----------------------------------------------------------------------------
-void PARSER_GET_USER::Reset()
-{
-
}
//-----------------------------------------------------------------------------
int PARSER_GET_USER::ParseStart(const char *el, const char **attr)
@@ -530,6 +523,14 @@ if (strcasecmp(el, "currip") == 0)
user.ip = inet_addr(attr[1]);
}
+if (strcasecmp(el, "creditExpire") == 0)
+ {
+ if (str2x(attr[1], user.creditExpire) < 0)
+ {
+ return;
+ }
+ }
+
for (int i = 0; i < USERDATA_NUM; i++)
{
string num;
@@ -658,15 +659,10 @@ userDataCb = data;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
PARSER_GET_SERVER_INFO::PARSER_GET_SERVER_INFO()
+ : RecvServerInfoDataCb(NULL),
+ serverInfoDataCb(NULL),
+ depth(0)
{
-depth = 0;
-error = false;
-RecvServerInfoDataCb = NULL;
-}
-//-----------------------------------------------------------------------------
-void PARSER_GET_SERVER_INFO::Reset()
-{
-
}
//-----------------------------------------------------------------------------
int PARSER_GET_SERVER_INFO::ParseStart(const char *el, const char **attr)
@@ -820,11 +816,61 @@ 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)
{
-depth = 0;
-error = false;
-RecvChgUserCb = NULL;
}
//-----------------------------------------------------------------------------
int PARSER_CHG_USER::ParseStart(const char *el, const char **attr)
@@ -851,11 +897,6 @@ return 0;
void PARSER_CHG_USER::ParseEnd(const char *)
{
depth--;
-}
-//-----------------------------------------------------------------------------
-void PARSER_CHG_USER::Reset()
-{
-
}
//-----------------------------------------------------------------------------
void PARSER_CHG_USER::ParseAnswer(const char *, const char **attr)
@@ -875,10 +916,10 @@ chgUserCbData = data;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
PARSER_CHECK_USER::PARSER_CHECK_USER()
+ : RecvCheckUserCb(NULL),
+ checkUserCbData(NULL),
+ depth(0)
{
-depth = 0;
-error = false;
-RecvCheckUserCb = NULL;
}
//-----------------------------------------------------------------------------
int PARSER_CHECK_USER::ParseStart(const char *el, const char **attr)
@@ -917,10 +958,10 @@ checkUserCbData = data;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
PARSER_SEND_MESSAGE::PARSER_SEND_MESSAGE()
+ : RecvSendMessageCb(NULL),
+ sendMessageCbData(NULL),
+ depth(0)
{
-depth = 0;
-error = false;
-RecvSendMessageCb = NULL;
}
//-----------------------------------------------------------------------------
int PARSER_SEND_MESSAGE::ParseStart(const char *el, const char **attr)
@@ -939,11 +980,6 @@ return 0;
void PARSER_SEND_MESSAGE::ParseEnd(const char *)
{
depth--;
-}
-//-----------------------------------------------------------------------------
-void PARSER_SEND_MESSAGE::Reset()
-{
-
}
//-----------------------------------------------------------------------------
void PARSER_SEND_MESSAGE::ParseAnswer(const char *, const char **attr)
@@ -958,4 +994,3 @@ RecvSendMessageCb = f;
sendMessageCbData = data;
}
//-----------------------------------------------------------------------------
-