X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/e19d853bbf16b7ba8c58c71c1da488b9034e0fb3..e1b5c9b23eae58f71765d458321bdb1691b26288:/projects/sgconf/common_sg.cpp diff --git a/projects/sgconf/common_sg.cpp b/projects/sgconf/common_sg.cpp index a15f7588..2901832a 100644 --- a/projects/sgconf/common_sg.cpp +++ b/projects/sgconf/common_sg.cpp @@ -47,10 +47,11 @@ const int usageInfo = 1; const int TO_KOI8 = 0; const int FROM_KOI8 = 1; //----------------------------------------------------------------------------- -struct GetUserCbData +struct GetUserData { - void * data; - bool * result; + GetUserData(REQUEST & req, bool res) : request(req), result(res) {} + REQUEST & request; + bool result; }; //--------------------------------------------------------------------------- struct HelpParams @@ -291,18 +292,9 @@ ConvertKOI8(src, dst, TO_KOI8); //----------------------------------------------------------------------------- int RecvSetUserAnswer(const char * ans, void * d) { -GetUserCbData * gucbd; -gucbd = (GetUserCbData *)d; +GetUserData * data = static_cast(d); -bool * result = gucbd->result; - -//REQUEST * req = (REQUEST *)gucbd->data; - -//printf("ans=%s\n", ans); -if (strcasecmp("Ok", ans) == 0) - *result = true; -else - *result = false; +data->result = (strcasecmp("Ok", ans) == 0); return 0; } @@ -311,35 +303,30 @@ struct StringReqParams { string name; RESETABLE reqParam; - string * value; + const string * value; }; //----------------------------------------------------------------------------- -void RecvUserData(USERDATA * ud, void * d) +void GetUserCallback(const PARSER_GET_USER::INFO & info, void * d) { -GetUserCbData * gucbd; -gucbd = (GetUserCbData *)d; +GetUserData * data = static_cast(d); -bool * result = gucbd->result; - -REQUEST * req = (REQUEST *)gucbd->data; - -if (ud->login == "") +if (info.login == "") { - *result = false; + data->result = false; return; } -if (!req->cash.res_empty()) - cout << "cash=" << ud->cash << endl; +if (!data->request.cash.res_empty()) + cout << "cash = " << info.cash << endl; -if (!req->credit.res_empty()) - cout << "credit=" << ud->credit << endl; +if (!data->request.credit.res_empty()) + cout << "credit = " << info.credit << endl; -if (!req->creditExpire.res_empty()) +if (!data->request.creditExpire.res_empty()) { char buf[32]; struct tm brokenTime; - time_t tt = ud->creditExpire; + time_t tt = info.creditExpire; brokenTime.tm_wday = 0; brokenTime.tm_yday = 0; @@ -352,53 +339,61 @@ if (!req->creditExpire.res_empty()) strftime(buf, 32, "%Y-%m-%d", &brokenTime); - cout << "creditExpire=" << buf << endl; + cout << "creditExpire = " << buf << endl; } -if (!req->down.res_empty()) - cout << "down=" << ud->down << endl; +if (!data->request.down.res_empty()) + cout << "down = " << info.down << endl; -if (!req->passive.res_empty()) - cout << "passive=" << ud->passive << endl; +if (!data->request.passive.res_empty()) + cout << "passive = " << info.passive << endl; -if (!req->disableDetailStat.res_empty()) - cout << "disableDetailStat=" << ud->disableDetailStat << endl; +if (!data->request.disableDetailStat.res_empty()) + cout << "disableDetailStat = " << info.disableDetailStat << endl; -if (!req->alwaysOnline.res_empty()) - cout << "alwaysOnline=" << ud->alwaysOnline << endl; +if (!data->request.alwaysOnline.res_empty()) + cout << "alwaysOnline = " << info.alwaysOnline << endl; -if (!req->prepaidTraff.res_empty()) - cout << "prepaidTraff=" << ud->prepaidTraff << endl; +if (!data->request.prepaidTraff.res_empty()) + cout << "prepaidTraff = " << info.prepaidTraff << endl; for (int i = 0; i < DIR_NUM; i++) { - if (!req->u[i].res_empty()) - cout << "u" << i << "=" << ud->stat.mu[i] << endl; - if (!req->d[i].res_empty()) - cout << "d" << i << "=" << ud->stat.md[i] << endl; + if (!data->request.sessionUpload[i].res_empty()) + cout << "session upload for dir " << i << " = " << info.stat.su[i] << endl; + if (!data->request.sessionDownload[i].res_empty()) + cout << "session download for dir " << i << "=" << info.stat.sd[i] << endl; + } + +for (int i = 0; i < DIR_NUM; i++) + { + if (!data->request.monthUpload[i].res_empty()) + cout << "month upload for dir " << i << " = " << info.stat.mu[i] << endl; + if (!data->request.monthDownload[i].res_empty()) + cout << "month download for dir " << i << " = " << info.stat.md[i] << endl; } for (int i = 0; i < USERDATA_NUM; i++) { - if (!req->ud[i].res_empty()) + if (!data->request.userData[i].res_empty()) { string str; - ConvertFromKOI8(ud->userData[i], &str); - cout << "userdata" << i << "=" << str << endl; + ConvertFromKOI8(info.userData[i], &str); + cout << "user data " << i << " = " << str << endl; } } StringReqParams strReqParams[] = { - {"note", req->note, &ud->note}, - {"name", req->name, &ud->name}, - {"address", req->address, &ud->address}, - {"email", req->email, &ud->email}, - {"phone", req->phone, &ud->phone}, - {"group", req->group, &ud->group}, - {"tariff", req->tariff, &ud->tariff}, - {"password", req->usrPasswd, &ud->password}, - {"ip", req->ips, &ud->ips} // IP-address of user + {"note", data->request.note, &info.note}, + {"name", data->request.name, &info.name}, + {"address", data->request.address, &info.address}, + {"email", data->request.email, &info.email}, + {"phone", data->request.phone, &info.phone}, + {"group", data->request.group, &info.group}, + {"tariff", data->request.tariff, &info.tariff}, + {"password", data->request.usrPasswd, &info.password}, + {"ip", data->request.ips, &info.ips} // IP-address of user }; for (unsigned i = 0; i < sizeof(strReqParams) / sizeof(StringReqParams); i++) { @@ -406,10 +401,10 @@ for (unsigned i = 0; i < sizeof(strReqParams) / sizeof(StringReqParams); i++) { string str; ConvertFromKOI8(*strReqParams[i].value, &str); - cout << strReqParams[i].name << "=" << str << endl; + cout << strReqParams[i].name << " = " << str << endl; } } -*result = true; +data->result = true; } //----------------------------------------------------------------------------- void RecvAuthByData(const PARSER_AUTH_BY::INFO & list, void *) @@ -431,26 +426,22 @@ SERVCONF sc; bool result = false; - -sc.SetServer(server.c_str()); // õÓÔÁÎÁ×ÌÉ×ÁÅÍ ÉÍÑ ÓÅÒ×ÅÒÁ Ó ËÏÔÏÒÇÏ ÚÁÂÉÒÁÔØ ÉÎÆÕ -sc.SetPort(port); // ÁÄÍÉÎÓËÉÊ ÐÏÒÔ ÓÅÒ×ÅÒÁÐÏÒÔ -sc.SetAdmLogin(admLogin.c_str()); // ÷ÙÓÔÁ×ÌÑÅÍ ÌÏÇÉÎ É ÐÁÒÏÌØ ÁÄÍÉÎÁ +sc.SetServer(server.c_str()); +sc.SetPort(port); +sc.SetAdmLogin(admLogin.c_str()); sc.SetAdmPassword(admPasswd.c_str()); -// TODO Good variable name :) -GetUserCbData gucbd; - -gucbd.data = data; -gucbd.result = &result; +REQUEST request; +GetUserData cbdata(request, false); if (isMessage) { - sc.SetSendMessageCb(RecvSetUserAnswer, &gucbd); + sc.SetSendMessageCb(RecvSetUserAnswer, &cbdata); sc.MsgUser(str.c_str()); } else { - sc.SetChgUserCb(RecvSetUserAnswer, &gucbd); + sc.SetChgUserCb(RecvSetUserAnswer, &cbdata); sc.ChgUser(str.c_str()); } @@ -473,27 +464,22 @@ int ProcessGetUser(const std::string &server, const std::string &admLogin, const std::string &admPasswd, const std::string &login, - void * data) + REQUEST & request) { SERVCONF sc; -bool result = false; - -sc.SetServer(server.c_str()); // õÓÔÁÎÁ×ÌÉ×ÁÅÍ ÉÍÑ ÓÅÒ×ÅÒÁ Ó ËÏÔÏÒÇÏ ÚÁÂÉÒÁÔØ ÉÎÆÕ -sc.SetPort(port); // ÁÄÍÉÎÓËÉÊ ÐÏÒÔ ÓÅÒ×ÅÒÁÐÏÒÔ -sc.SetAdmLogin(admLogin.c_str()); // ÷ÙÓÔÁ×ÌÑÅÍ ÌÏÇÉÎ É ÐÁÒÏÌØ ÁÄÍÉÎÁ +sc.SetServer(server.c_str()); +sc.SetPort(port); +sc.SetAdmLogin(admLogin.c_str()); sc.SetAdmPassword(admPasswd.c_str()); // TODO Good variable name :) -GetUserCbData gucbd; +GetUserData data(request, false); -gucbd.data = data; -gucbd.result = &result; - -sc.SetGetUserDataRecvCb(RecvUserData, &gucbd); +sc.SetGetUserCallback(GetUserCallback, &data); sc.GetUser(login.c_str()); -if (result) +if (data.result) { printf("Ok\n"); return 0; @@ -512,7 +498,7 @@ int ProcessAuthBy(const std::string &server, const std::string &admLogin, const std::string &admPasswd, const std::string &login, - void * data) + REQUEST & request) { SERVCONF sc;