X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/f8054f164b10a7b42a5250856ec83dca71ad3545..448264c18905be2f577f0461be7cb417b67a8af1:/projects/stargazer/plugins/configuration/sgconfig/parser.cpp diff --git a/projects/stargazer/plugins/configuration/sgconfig/parser.cpp b/projects/stargazer/plugins/configuration/sgconfig/parser.cpp index bfe2f7bc..7deab3d0 100644 --- a/projects/stargazer/plugins/configuration/sgconfig/parser.cpp +++ b/projects/stargazer/plugins/configuration/sgconfig/parser.cpp @@ -64,13 +64,13 @@ answerList->push_back(""); sprintf(s, "", SERVER_VERSION); answerList->push_back(s); -sprintf(s, "", (unsigned long long)tariffs->Count()); +sprintf(s, "", static_cast(tariffs->Count())); answerList->push_back(s); sprintf(s, "", 2); answerList->push_back(s); -sprintf(s, "", (unsigned long long)users->Count()); +sprintf(s, "", static_cast(users->Count())); answerList->push_back(s); sprintf(s, "", un); @@ -84,7 +84,7 @@ answerList->push_back(s); for (int i = 0; i< DIR_NUM; i++) { - string dn2e; + std::string dn2e; Encode12str(dn2e, settings->GetDirName(i)); sprintf(s, "", i, dn2e.c_str()); answerList->push_back(s); @@ -124,8 +124,8 @@ return -1; //----------------------------------------------------------------------------- void PARSER_GET_USER::CreateAnswer() { -string s; -string enc; +std::string s; +std::string enc; USER_PTR u; @@ -133,8 +133,7 @@ answerList->erase(answerList->begin(), answerList->end()); if (users->FindByName(login, &u)) { - s = ""; - answerList->push_back(s); + answerList->push_back(""); return; } @@ -190,7 +189,7 @@ s = ""; answerList->push_back(s); -vector *> userdata; +std::vector *> userdata; userdata.push_back(u->GetProperty().userdata0.GetPointer()); userdata.push_back(u->GetProperty().userdata1.GetPointer()); userdata.push_back(u->GetProperty().userdata2.GetPointer()); @@ -202,7 +201,7 @@ userdata.push_back(u->GetProperty().userdata7.GetPointer()); userdata.push_back(u->GetProperty().userdata8.GetPointer()); userdata.push_back(u->GetProperty().userdata9.GetPointer()); -string tmpI; +std::string tmpI; for (unsigned i = 0; i < userdata.size(); i++) { Encode12str(enc, userdata[i]->Get()); @@ -230,7 +229,7 @@ answerList->push_back(s); strprintf(&s, "", u->GetPingTime()); answerList->push_back(s); -stringstream sstr; +std::ostringstream sstr; sstr << u->GetProperty().ips.Get(); strprintf(&s, "", sstr.str().c_str()); answerList->push_back(s); @@ -246,7 +245,7 @@ upload = u->GetProperty().up.Get(); for (int j = 0; j < DIR_NUM; j++) { - string s; + std::string s; x2str(upload[j], s); sprintf(st, " MU%d=\"%s\"", j, s.c_str()); strcat(ss, st); @@ -286,6 +285,13 @@ answerList->push_back(s); strprintf(&s, "", u->GetProperty().creditExpire.Get()); answerList->push_back(s); +s = ""; +std::vector list(u->GetAuthorizers()); +for (std::vector::const_iterator it = list.begin(); it != list.end(); ++it) + s += ""; +s += ""; +answerList->push_back(s); + strprintf(&s, ""); answerList->push_back(s); } @@ -342,16 +348,16 @@ void PARSER_GET_USERS::CreateAnswer() { answerList->erase(answerList->begin(), answerList->end()); -string s; -string userStart; -string traffStart; -string traffMiddle; -string traffFinish; -string middle; -string userFinish; +std::string s; +std::string userStart; +std::string traffStart; +std::string traffMiddle; +std::string traffFinish; +std::string middle; +std::string userFinish; -string enc; +std::string enc; USER_PTR u; @@ -362,7 +368,7 @@ if (!h) users->CloseSearch(h); return; } -string updateTime; +std::string updateTime; x2str(time(NULL), updateTime); if (lastUpdateFound) @@ -458,7 +464,7 @@ while (1) middle += s; } - vector *> userdata; + std::vector *> userdata; userdata.push_back(u->GetProperty().userdata0.GetPointer()); userdata.push_back(u->GetProperty().userdata1.GetPointer()); userdata.push_back(u->GetProperty().userdata2.GetPointer()); @@ -470,7 +476,7 @@ while (1) userdata.push_back(u->GetProperty().userdata8.GetPointer()); userdata.push_back(u->GetProperty().userdata9.GetPointer()); - string tmpI; + std::string tmpI; for (unsigned i = 0; i < userdata.size(); i++) { if (userdata[i]->ModificationTime() > lastUserUpdateTime) @@ -522,7 +528,7 @@ while (1) if (u->GetProperty().ips.ModificationTime() > lastUserUpdateTime) { - stringstream sstr; + std::ostringstream sstr; sstr << u->GetProperty().ips.Get(); strprintf(&s, "", sstr.str().c_str()); middle += s; @@ -540,7 +546,7 @@ while (1) { for (int j = 0; j < DIR_NUM; j++) { - string s; + std::string s; x2str(upload[j], s); sprintf(st, " MU%d=\"%s\" ", j, s.c_str()); traffMiddle += st; @@ -742,11 +748,11 @@ ucr = new USER_CONF_RES; upr = new RESETABLE[DIR_NUM]; downr = new RESETABLE[DIR_NUM]; -}; +} //----------------------------------------------------------------------------- -string PARSER_CHG_USER::EncChar2String(const char * strEnc) +std::string PARSER_CHG_USER::EncChar2String(const char * strEnc) { -string str; +std::string str; Decode21str(str, strEnc); return str; } @@ -917,7 +923,7 @@ else int dir; DIR_TRAFF dtu; DIR_TRAFF dtd; - unsigned long long t = 0; + uint64_t t = 0; while (attr[j]) { dir = attr[j][2] - '0'; @@ -1025,9 +1031,23 @@ if (check && alwaysOnline && !onlyOneIP) { printfd(__FILE__, "Requested change leads to a forbidden state: AlwaysOnline with multiple IP's\n"); GetStgLogger()("%s Requested change leads to a forbidden state: AlwaysOnline with multiple IP's", currAdmin->GetLogStr().c_str()); + res = -1; return -1; } +for (size_t i = 0; i < ucr->ips.const_data().Count(); ++i) + { + CONST_USER_PTR user; + uint32_t ip = ucr->ips.const_data().operator[](i).ip; + if (users->IsIPInUse(ip, login, &user)) + { + printfd(__FILE__, "Trying to assign an IP %s to '%s' that is already in use by '%s'\n", inet_ntostring(ip).c_str(), login.c_str(), user->GetLogin().c_str()); + GetStgLogger()("%s trying to assign an IP %s to '%s' that is currently in use by '%s'", currAdmin->GetLogStr().c_str(), inet_ntostring(ip).c_str(), login.c_str(), user->GetLogin().c_str()); + res = -1; + return -1; + } + } + if (!ucr->ips.res_empty()) if (!u->GetProperty().ips.Set(ucr->ips.const_data(), currAdmin, login, store)) res = -1; @@ -1074,7 +1094,7 @@ if (!ucr->note.res_empty()) if (!u->GetProperty().note.Set(ucr->note.const_data(), currAdmin, login, store)) res = -1; -vector *> userdata; +std::vector *> userdata; userdata.push_back(u->GetProperty().userdata0.GetPointer()); userdata.push_back(u->GetProperty().userdata1.GetPointer()); userdata.push_back(u->GetProperty().userdata2.GetPointer()); @@ -1288,7 +1308,7 @@ if (strcasecmp(el, "Message") == 0) printfd(__FILE__, "User not found. %s\n", logins[i].c_str()); continue; } - msg.header.creationTime = stgTime; + msg.header.creationTime = static_cast(stgTime); u->AddMessage(&msg); result = res_ok; } @@ -1342,11 +1362,11 @@ switch (result) break; case res_params_error: printfd(__FILE__, "res_params_error\n"); - answerList->push_back(""); + answerList->push_back(""); break; case res_unknown: printfd(__FILE__, "res_unknown\n"); - answerList->push_back(""); + answerList->push_back(""); break; default: printfd(__FILE__, "res_default\n"); @@ -1400,30 +1420,17 @@ else answerList->push_back(""); } //----------------------------------------------------------------------------- -/*void PARSERDELUSER::CreateAnswer(char * mes) -{ -//answerList->clear(); -answerList->erase(answerList->begin(), answerList->end()); - -char str[255]; -sprintf(str, "", mes); -answerList->push_back(str); -}*/ -//----------------------------------------------------------------------------- // CHECK USER // //----------------------------------------------------------------------------- int PARSER_CHECK_USER::ParseStart(void *, const char *el, const char **attr) { -result = false; - if (strcasecmp(el, "CheckUser") == 0) { if (attr[0] == NULL || attr[1] == NULL || attr[2] == NULL || attr[3] == NULL) { - result = false; - CreateAnswer(); + CreateAnswer("Invalid parameters."); printfd(__FILE__, "PARSER_CHECK_USER - attr err\n"); return 0; } @@ -1431,22 +1438,19 @@ if (strcasecmp(el, "CheckUser") == 0) USER_PTR user; if (users->FindByName(attr[1], &user)) { - result = false; - CreateAnswer(); + CreateAnswer("User not found."); printfd(__FILE__, "PARSER_CHECK_USER - login err\n"); return 0; } if (strcmp(user->GetProperty().password.Get().c_str(), attr[3])) { - result = false; - CreateAnswer(); + CreateAnswer("Wrong password."); printfd(__FILE__, "PARSER_CHECK_USER - passwd err\n"); return 0; } - result = true; - CreateAnswer(); + CreateAnswer(NULL); return 0; } return -1; @@ -1461,12 +1465,12 @@ if (strcasecmp(el, "CheckUser") == 0) return -1; } //----------------------------------------------------------------------------- -void PARSER_CHECK_USER::CreateAnswer() +void PARSER_CHECK_USER::CreateAnswer(const char * error) { -if (result) - answerList->push_back(""); +if (error) + answerList->push_back(std::string(""); else - answerList->push_back(""); + answerList->push_back(""); } //----------------------------------------------------------------------------- //-----------------------------------------------------------------------------