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;
+}