#include <cstdlib>
#include <csignal>
+#include <vector>
+#include <algorithm>
+
#include "rpcconfig.h"
-#include "../../../admin.h"
-#include "../../../admins.h"
-#include "../../../users.h"
-#include "../../../tariffs.h"
-#include "../../../traffcounter.h"
+#include "admin.h"
+#include "module_settings.h"
#include "../../../settings.h"
-#include "base_store.h"
-#include "base_settings.h"
+#include "common.h"
#include "info_methods.h"
#include "users_methods.h"
#include "admins_methods.h"
#include "messages_methods.h"
-class RPC_CONFIG_CREATOR
-{
+class RPC_CONFIG_CREATOR {
private:
RPC_CONFIG * rpcconfig;
RPC_CONFIG_CREATOR()
: rpcconfig(new RPC_CONFIG())
{
- };
+ }
~RPC_CONFIG_CREATOR()
{
delete rpcconfig;
- };
+ }
RPC_CONFIG * GetPlugin()
{
return rpcconfig;
- };
+ }
};
RPC_CONFIG_CREATOR rpcc;
{
}
-int RPC_CONFIG_SETTINGS::ParseIntInRange(const string & str,
+int RPC_CONFIG_SETTINGS::ParseIntInRange(const std::string & str,
int min,
int max,
int * val)
{
int p;
PARAM_VALUE pv;
-vector<PARAM_VALUE>::const_iterator pvi;
+std::vector<PARAM_VALUE>::const_iterator pvi;
pv.param = "Port";
-pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
+pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
if (pvi == s.moduleParams.end())
{
errorStr = "Parameter \'Port\' not found.";
port = p;
pv.param = "CookieTimeout";
-pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
+pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
if (pvi == s.moduleParams.end())
{
cookieTimeout = 1800; // 30 * 60
return 0;
}
-BASE_PLUGIN * GetPlugin()
+PLUGIN * GetPlugin()
{
return rpcc.GetPlugin();
}
RPC_CONFIG::RPC_CONFIG()
- : rpcServer(NULL)
+ : users(NULL),
+ admins(NULL),
+ tariffs(NULL),
+ store(NULL),
+ rpcServer(NULL),
+ running(false),
+ stopped(true),
+ dayFee(0)
{
-
}
RPC_CONFIG::~RPC_CONFIG()
return ret;
}
+void RPC_CONFIG::SetStgSettings(const SETTINGS * settings)
+{
+ dayFee = settings->GetDayFee();
+ dirNames.erase(dirNames.begin(), dirNames.end());
+ for (size_t i = 0; i < DIR_NUM; ++i) {
+ dirNames.push_back(settings->GetDirName(i));
+ }
+}
+
int RPC_CONFIG::Start()
{
InitiateRegistry();
const std::string & password,
std::string * cookie)
{
-ADMIN admin;
+ADMIN * admin = NULL;
if (!admins->AdminCorrect(login, password, &admin))
{
ADMIN_INFO info;
time(&info.accessTime);
info.admin = login;
-info.priviledges = *admin.GetPriv();
+info.priviledges = *admin->GetPriv();
*cookie = GetCookie();
cookies[*cookie] = info;
xmlrpc_c::methodPtr const methodInfoPtr(new METHOD_INFO(
tariffs,
users,
- stgSettings
+ dayFee,
+ dirNames
));
rpcRegistry.addMethod("stargazer.info", methodInfoPtr);