X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/dce2fb0b94691ade4653096256eee1d76cfa1728..b463b9f9a916554458fc576342125ff2f22efdac:/projects/sgconf/common_sg.cpp diff --git a/projects/sgconf/common_sg.cpp b/projects/sgconf/common_sg.cpp index 09fcfd77..9bbe62d7 100644 --- a/projects/sgconf/common_sg.cpp +++ b/projects/sgconf/common_sg.cpp @@ -34,10 +34,10 @@ #include #include +#include "stg/common.h" +#include "sg_error_codes.h" #include "common_sg.h" #include "version_sg.h" -#include "common.h" -#include "sg_error_codes.h" using namespace std; @@ -47,10 +47,10 @@ const int usageInfo = 1; const int TO_KOI8 = 0; const int FROM_KOI8 = 1; //----------------------------------------------------------------------------- -struct GetUserCbData +struct GetUserData { - void * data; - bool * result; + REQUEST & request; + bool result; }; //--------------------------------------------------------------------------- struct HelpParams @@ -81,9 +81,10 @@ HelpParams hp[] = { {"set tariff", "get tariff", "-t", ""}, {"set credit", "get credit", "-r", ""}, + {"set credit expire", "get credit expire", "-E", ""}, {"set password", "get password", "-o", ""}, {"set prepaid traffic", "get prepaid traffic", "-e", ""}, - {"set IP-addresses", "get IP-addresses", "-I", "<*|ip_addr[,ip_addr...]>"}, + {"set IP-addresses", "get IP-addresses", "-I", "<*|ip_addr[,ip_addr...]>"}, {"set name", "get name", "-A", ""}, {"set note", "get note", "-N", ""}, {"set street address", "get street address", "-D", "
"}, @@ -121,6 +122,9 @@ printf("sgconf set -s -p -a -w -u -- printf("To get userdata<0...9> use:\n"); printf("sgconf get -s -p -a -w -u --ud0 [--ud1 ...]\n\n"); +printf("To get user's authorizers list use:\n"); +printf("sgconf get -s -p -a -w -u --authorized-by\n\n"); + printf("To send message use:\n"); printf("sgconf set -s -p -a -w -u -m \n\n"); @@ -148,6 +152,7 @@ for (int i = 0; i < (int)strlen(login); i++) if (!(( login[i] >= 'a' && login[i] <= 'z') || (login[i] >= 'A' && login[i] <= 'Z') || (login[i] >= '0' && login[i] <= '9') + || login[i] == '.' || login[i] == '_' || login[i] == '-')) { @@ -309,71 +314,96 @@ struct StringReqParams string * value; }; //----------------------------------------------------------------------------- -void RecvUserData(USERDATA * ud, void * d) +void GetUserCallback(const PARSER_GET_USER::INFO & info, void * d) { -GetUserCbData * gucbd; -gucbd = (GetUserCbData *)d; - -bool * result = gucbd->result; +GetUserData * data = static_cast(d); 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 (!data->requst.credit.res_empty()) + cout << "credit=" << info.credit << endl; -if (!req->credit.res_empty()) - cout << "credit=" << ud->credit << endl; +if (!data->requst.creditExpire.res_empty()) + { + char buf[32]; + struct tm brokenTime; + time_t tt = info.creditExpire; + + brokenTime.tm_wday = 0; + brokenTime.tm_yday = 0; + brokenTime.tm_isdst = 0; + brokenTime.tm_hour = 0; + brokenTime.tm_min = 0; + brokenTime.tm_sec = 0; + + gmtime_r(&tt, &brokenTime); -if (!req->down.res_empty()) - cout << "down=" << ud->down << endl; + strftime(buf, 32, "%Y-%m-%d", &brokenTime); + + cout << "creditExpire=" << buf << endl; + } -if (!req->passive.res_empty()) - cout << "passive=" << ud->passive << endl; +if (!data->requst.down.res_empty()) + cout << "down=" << info.down << endl; -if (!req->disableDetailStat.res_empty()) - cout << "disableDetailStat=" << ud->disableDetailStat << endl; +if (!data->requst.passive.res_empty()) + cout << "passive=" << info.passive << endl; -if (!req->alwaysOnline.res_empty()) - cout << "alwaysOnline=" << ud->alwaysOnline << endl; +if (!data->requst.disableDetailStat.res_empty()) + cout << "disableDetailStat=" << info.disableDetailStat << endl; -if (!req->prepaidTraff.res_empty()) - cout << "prepaidTraff=" << ud->prepaidTraff << endl; +if (!data->requst.alwaysOnline.res_empty()) + cout << "alwaysOnline=" << info.alwaysOnline << endl; + +if (!data->requst.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->requst.up[i].res_empty()) + cout << "session upload for dir" << i << "=" << info.stat.su[i] << endl; + if (!data->requst.down[i].res_empty()) + cout << "session download for dir" << i << "=" << info.stat.sd[i] << endl; + } + +for (int i = 0; i < DIR_NUM; i++) + { + if (!data->requst.monthUp[i].res_empty()) + cout << "month upload for dir" << i << "=" << info.stat.mu[i] << endl; + if (!data->requst.monthDown[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->requst.ud[i].res_empty()) { string str; - ConvertFromKOI8(ud->userData[i], &str); + ConvertFromKOI8(info.userData[i], &str); cout << "userdata" << 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->requst.note, &info.note}, + {"name", data->requst.name, &info.name}, + {"address", data->requst.address, &info.address}, + {"email", data->requst.email, &info.email}, + {"phone", data->requst.phone, &info.phone}, + {"group", data->requst.group, &info.group}, + {"tariff", data->requst.tariff, &info.tariff}, + {"password", data->requst.usrPasswd, &info.password}, + {"ip", data->requst.ips, &info.ips} // IP-address of user }; for (unsigned i = 0; i < sizeof(strReqParams) / sizeof(StringReqParams); i++) { @@ -384,7 +414,14 @@ for (unsigned i = 0; i < sizeof(strReqParams) / sizeof(StringReqParams); i++) cout << strReqParams[i].name << "=" << str << endl; } } -*result = true; +data->result = true; +} +//----------------------------------------------------------------------------- +void RecvAuthByData(const PARSER_AUTH_BY::INFO & list, void *) +{ +for (std::vector::const_iterator it = list.begin(); it != list.end(); ++it) + cout << *it << "\n"; +cout << endl; } //----------------------------------------------------------------------------- int ProcessSetUser(const std::string &server, @@ -400,9 +437,9 @@ 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 :) @@ -441,24 +478,24 @@ 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; -gucbd.data = data; +gucbd.data = &request; gucbd.result = &result; -sc.SetGetUserDataRecvCb(RecvUserData, &gucbd); +sc.SetGetUserCallback(GetUserCallback, &gucbd); sc.GetUser(login.c_str()); if (result) @@ -475,5 +512,30 @@ else return 0; } //----------------------------------------------------------------------------- +int ProcessAuthBy(const std::string &server, + int port, + const std::string &admLogin, + const std::string &admPasswd, + const std::string &login, + REQUEST & request) +{ +SERVCONF sc; + +sc.SetServer(server.c_str()); +sc.SetPort(port); +sc.SetAdmLogin(admLogin.c_str()); +sc.SetAdmPassword(admPasswd.c_str()); +sc.SetAuthByCallback(RecvAuthByData, NULL); +sc.AuthBy(login.c_str()); +if (sc.GetError()) + { + printf("Error\n"); + return -1; + } + +printf("Ok\n"); +return 0; +} +//-----------------------------------------------------------------------------