X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/40079f3d50a559ea36705b72b2fe2d190a6cc354..c4456f2cae7261f7263e3708ff995bade7da722f:/stglibs/srvconf.lib/parser.cpp diff --git a/stglibs/srvconf.lib/parser.cpp b/stglibs/srvconf.lib/parser.cpp index a87266eb..62537359 100644 --- a/stglibs/srvconf.lib/parser.cpp +++ b/stglibs/srvconf.lib/parser.cpp @@ -822,6 +822,58 @@ if (strcmp(attr[0], "value") == 0) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- +PARSER_AUTH_BY::PARSER_AUTH_BY() + : RecvAuthByDataCb(NULL), + authByDataCb(NULL), + depth(0), + error(false), + list() +{ +} +//----------------------------------------------------------------------------- +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]) + list.push_back(attr[0]); + 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),