X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/3886ef930e3fd54894b8798ab17ef4d3bc0b995a..9d093a68b5f3e5a22e243c92ec2e0bd24b10ea38:/projects/stargazer/plugins/configuration/sgconfig-ng/parser_getusers.cpp?ds=sidebyside diff --git a/projects/stargazer/plugins/configuration/sgconfig-ng/parser_getusers.cpp b/projects/stargazer/plugins/configuration/sgconfig-ng/parser_getusers.cpp new file mode 100644 index 00000000..e2895704 --- /dev/null +++ b/projects/stargazer/plugins/configuration/sgconfig-ng/parser_getusers.cpp @@ -0,0 +1,135 @@ +// TODO: Fix this shit! +#include "../../../admin.h" +#include "../../../users.h" + +#include "parser_getusers.h" + +PARSER_GET_USERS::PARSER_GET_USERS(const ADMIN * ca, USERS * u) + : PARSER(), + result(""), + currAdmin(ca), + users(u) +{ +} + +PARSER_GET_USERS::~PARSER_GET_USERS() +{ +} + +bool PARSER_GET_USERS::StartTag(const char * name, const char ** attr) +{ + std::string tag(name); + if (tag != "GetUsers") { + return false; + } + + return true; +} + +bool PARSER_GET_USERS::EndTag(const char * name) +{ + std::string tag(name); + if (tag != "GetUsers") { + return false; + } + + int handle = users->OpenSearch(); + if (!handle) { + printfd(__FILE__, "PARSER_GET_USERS::EndTag() OpenSearch error\n"); + users->CloseSearch(handle); + result = ""; + return false; + } + + std::stringstream answer; + + answer << "\n"; + + while (1) { + user_iter ui; + + if (users->SearchNext(handle, &ui)) { + break; + } + + answer << "\t\n"; + answer << "\t\tGetLogin() << "\"/>\n"; + if (currAdmin->GetPriv()->userConf || currAdmin->GetPriv()->userPasswd) { + answer << "\t\tproperty.password.Get() << "\"/>\n"; + } else { + answer << "\t\t\n"; + } + answer << "\t\tproperty.cash.Get() << "\"/>\n"; + answer << "\t\tproperty.freeMb.Get() << "\"/>\n"; + answer << "\t\tproperty.credit.Get() << "\"/>\n"; + if (ui->property.nextTariff.Get() != "") { + answer << "\t\tproperty.tariffName.Get() + << "/" << ui->property.nextTariff.Get() << "\"/>\n"; + } else { + answer << "\t\tproperty.tariffName.Get() << "\"/>\n"; + } + + std::string encoded; + Encode12str(encoded, ui->property.note.Get()); + answer << "\t\t\n"; + Encode12str(encoded, ui->property.phone.Get()); + answer << "\t\t\n"; + Encode12str(encoded, ui->property.address.Get()); + answer << "\t\t
\n"; + Encode12str(encoded, ui->property.email.Get()); + answer << "\t\t\n"; + Encode12str(encoded, ui->property.realName.Get()); + answer << "\t\t\n"; + Encode12str(encoded, ui->property.group.Get()); + answer << "\t\t\n"; + + // TODO: Fix this shit! + // + Encode12str(encoded, ui->property.userdata0.Get()); answer << "\t\t\n"; + Encode12str(encoded, ui->property.userdata1.Get()); answer << "\t\t\n"; + Encode12str(encoded, ui->property.userdata2.Get()); answer << "\t\t\n"; + Encode12str(encoded, ui->property.userdata3.Get()); answer << "\t\t\n"; + Encode12str(encoded, ui->property.userdata4.Get()); answer << "\t\t\n"; + Encode12str(encoded, ui->property.userdata5.Get()); answer << "\t\t\n"; + Encode12str(encoded, ui->property.userdata6.Get()); answer << "\t\t\n"; + Encode12str(encoded, ui->property.userdata7.Get()); answer << "\t\t\n"; + Encode12str(encoded, ui->property.userdata8.Get()); answer << "\t\t\n"; + Encode12str(encoded, ui->property.userdata9.Get()); answer << "\t\t\n"; + // + + answer << "\t\tGetConnected() << "\"/>\n"; + answer << "\t\tproperty.alwaysOnline.Get() << "\"/>\n"; + answer << "\t\tGetCurrIP()) << "\"/>\n"; + answer << "\t\tGetPingTime() << "\"/>\n"; + answer << "\t\tproperty.ips.Get() << "\"/>\n"; + answer << "\t\tproperty.lastCashAdd.Get() << "\"/>\n"; + answer << "\t\tproperty.lastCashAddTime.Get() << "\"/>\n"; + answer << "\t\tproperty.lastActivityTime.Get() << "\"/>\n"; + answer << "\t\tproperty.creditExpire.Get() << "\"/>\n"; + answer << "\t\tproperty.disabled.Get() << "\"/>\n"; + answer << "\t\tproperty.passive.Get() << "\"/>\n"; + answer << "\t\tproperty.disabledDetailStat.Get() << "\"/>\n"; + + // TODO: Fix this shit! + // + answer << "\t\tproperty.up.Get()); + DIR_TRAFF down(ui->property.down.Get()); + for (int i = 0; i < DIR_NUM; ++i) { + answer << "MU" << i << "=\"" << up[i] << "\" "; + answer << "MD" << i << "=\"" << down[i] << "\" "; + } + answer << "/>\n"; + // + + answer << "\t\n"; + } + + answer << ""; + + users->CloseSearch(handle); + + result = answer.str(); + + return true; +}