X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/cdd6c43fceeb5a37867ae902bb71429abad7fa64..872ac0485ae3c7b74d6adb23e64677e835737f8e:/stglibs/srvconf.lib/parser.cpp?ds=sidebyside diff --git a/stglibs/srvconf.lib/parser.cpp b/stglibs/srvconf.lib/parser.cpp index 139c91bc..40557e3c 100644 --- a/stglibs/srvconf.lib/parser.cpp +++ b/stglibs/srvconf.lib/parser.cpp @@ -33,10 +33,9 @@ #include #include -#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) { } //----------------------------------------------------------------------------- @@ -165,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) @@ -379,8 +385,7 @@ userDataCb = data; PARSER_GET_USER::PARSER_GET_USER() : RecvUserDataCb(NULL), userDataCb(NULL), - depth(0), - error(false) + depth(0) { } //----------------------------------------------------------------------------- @@ -518,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; @@ -648,8 +661,7 @@ userDataCb = data; PARSER_GET_SERVER_INFO::PARSER_GET_SERVER_INFO() : RecvServerInfoDataCb(NULL), serverInfoDataCb(NULL), - depth(0), - error(false) + depth(0) { } //----------------------------------------------------------------------------- @@ -804,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) { } //----------------------------------------------------------------------------- @@ -857,8 +918,7 @@ chgUserCbData = data; PARSER_CHECK_USER::PARSER_CHECK_USER() : RecvCheckUserCb(NULL), checkUserCbData(NULL), - depth(0), - error(false) + depth(0) { } //----------------------------------------------------------------------------- @@ -900,8 +960,7 @@ checkUserCbData = data; PARSER_SEND_MESSAGE::PARSER_SEND_MESSAGE() : RecvSendMessageCb(NULL), sendMessageCbData(NULL), - depth(0), - error(false) + depth(0) { } //-----------------------------------------------------------------------------