]> git.stg.codes - stg.git/blob - projects/stargazer/plugins/configuration/rpcconfig/info_methods.cpp
a689cd99de2fa8370c7e791ca771aa78ed003dfd
[stg.git] / projects / stargazer / plugins / configuration / rpcconfig / info_methods.cpp
1 #include <sys/utsname.h>
2
3 #include "info_methods.h"
4 #include "version.h"
5 #include "rpcconfig.h"
6 #include "common.h"
7
8 void METHOD_INFO::execute(xmlrpc_c::paramList const & paramList,
9                           xmlrpc_c::value *   const   retvalPtr)
10 {
11 paramList.verifyEnd(0);
12 std::map<std::string, xmlrpc_c::value> structVal;
13
14 std::string un;
15 struct utsname utsn;
16
17 uname(&utsn);
18 un[0] = 0;
19
20 un += utsn.sysname;
21 un += " ";
22 un += utsn.release;
23 un += " ";
24 un += utsn.machine;
25 un += " ";
26 un += utsn.nodename;
27
28 structVal["version"] = xmlrpc_c::value_string(SERVER_VERSION);
29 structVal["tariff_num"] = xmlrpc_c::value_int(tariffs->GetTariffsNum());
30 structVal["tariff"] = xmlrpc_c::value_int(2);
31 structVal["users_num"] = xmlrpc_c::value_int(users->GetUserNum());
32 structVal["uname"] = xmlrpc_c::value_string(un);
33 structVal["dir_num"] = xmlrpc_c::value_int(DIR_NUM);
34 structVal["day_fee"] = xmlrpc_c::value_int(dayFee);
35
36 std::vector<xmlrpc_c::value> dirnameVal;
37
38 for (int i = 0; i< DIR_NUM; i++)
39     {
40     std::string dn2e;
41     Encode12str(dn2e, dirNames[i]);
42     dirnameVal.push_back(xmlrpc_c::value_string(dn2e));
43     }
44
45 structVal["dir_names"] = xmlrpc_c::value_array(dirnameVal);
46
47 *retvalPtr = xmlrpc_c::value_struct(structVal);
48 }
49
50 void METHOD_LOGIN::execute(xmlrpc_c::paramList const & paramList,
51                            xmlrpc_c::value *   const   retvalPtr)
52 {
53 std::string login = paramList.getString(0);
54 std::string password = paramList.getString(1);
55 paramList.verifyEnd(2);
56
57 std::map<std::string, xmlrpc_c::value> structVal;
58
59 std::string cookie;
60 if (config->CheckAdmin(login, password, &cookie))
61     {
62     structVal["result"] = xmlrpc_c::value_boolean(false);
63     structVal["cookie"] = xmlrpc_c::value_string("");
64     }
65 else
66     {
67     structVal["result"] = xmlrpc_c::value_boolean(true);
68     structVal["cookie"] = xmlrpc_c::value_string(cookie);
69     }
70
71 *retvalPtr = xmlrpc_c::value_struct(structVal);
72 }
73
74 void METHOD_LOGOUT::execute(xmlrpc_c::paramList const & paramList,
75                             xmlrpc_c::value *   const   retvalPtr)
76 {
77 std::string cookie = paramList.getString(0);
78 paramList.verifyEnd(1);
79
80 std::map<std::string, xmlrpc_c::value> structVal;
81
82 if (config->LogoutAdmin(cookie))
83     {
84     *retvalPtr = xmlrpc_c::value_boolean(false);
85     }
86 else
87     {
88     *retvalPtr = xmlrpc_c::value_boolean(true);
89     }
90 }