X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/c26f4f6b17d688b3defb790486daf42392068aa3..597f6f31e3801612273886481381df509d8bcd12:/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.cpp?ds=sidebyside diff --git a/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.cpp b/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.cpp index a4890e2c..d3fdba55 100644 --- a/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.cpp +++ b/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.cpp @@ -8,6 +8,7 @@ #include "stg/admin.h" #include "stg/module_settings.h" #include "stg/settings.h" +#include "stg/plugin_creator.h" #include "rpcconfig.h" #include "info_methods.h" @@ -16,27 +17,7 @@ #include "admins_methods.h" #include "messages_methods.h" -class RPC_CONFIG_CREATOR { -private: - RPC_CONFIG * rpcconfig; - -public: - RPC_CONFIG_CREATOR() - : rpcconfig(new RPC_CONFIG()) - { - } - ~RPC_CONFIG_CREATOR() - { - delete rpcconfig; - } - - RPC_CONFIG * GetPlugin() - { - return rpcconfig; - } -}; - -RPC_CONFIG_CREATOR rpcc; +PLUGIN_CREATOR rpcc; RPC_CONFIG_SETTINGS::RPC_CONFIG_SETTINGS() : errorStr(), @@ -45,24 +26,6 @@ RPC_CONFIG_SETTINGS::RPC_CONFIG_SETTINGS() { } -int RPC_CONFIG_SETTINGS::ParseIntInRange(const std::string & str, - int min, - int max, - int * val) -{ -if (str2x(str.c_str(), *val)) - { - errorStr = "Incorrect value \'" + str + "\'."; - return -1; - } -if (*val < min || *val > max) - { - errorStr = "Value \'" + str + "\' out of range."; - return -1; - } -return 0; -} - int RPC_CONFIG_SETTINGS::ParseSettings(const MODULE_SETTINGS & s) { int p; @@ -110,14 +73,21 @@ return rpcc.GetPlugin(); } RPC_CONFIG::RPC_CONFIG() - : users(NULL), + : errorStr(), + rpcConfigSettings(), + users(NULL), admins(NULL), tariffs(NULL), store(NULL), + settings(), + rpcRegistry(), rpcServer(NULL), running(false), stopped(true), - dayFee(0) + tid(), + cookies(), + dayFee(0), + dirNames() { } @@ -168,7 +138,10 @@ int RPC_CONFIG::Stop() { running = false; for (int i = 0; i < 5 && !stopped; ++i) - usleep(200000); + { + struct timespec ts = {0, 200000000}; + nanosleep(&ts, NULL); + } //rpcServer->terminate(); if (!stopped) { @@ -178,9 +151,13 @@ if (!stopped) printfd(__FILE__, "Failed to kill thread\n"); } for (int i = 0; i < 25 && !stopped; ++i) - usleep(200000); + { + struct timespec ts = {0, 200000000}; + nanosleep(&ts, NULL); + } if (!stopped) { + running = true; printfd(__FILE__, "Failed to stop RPC thread\n"); errorStr = "Failed to stop RPC thread"; return -1; @@ -195,6 +172,10 @@ return 0; void * RPC_CONFIG::Run(void * rc) { +sigset_t signalSet; +sigfillset(&signalSet); +pthread_sigmask(SIG_BLOCK, &signalSet, NULL); + RPC_CONFIG * config = static_cast(rc); config->stopped = false; @@ -239,7 +220,7 @@ bool RPC_CONFIG::CheckAdmin(const std::string & login, { ADMIN * admin = NULL; -if (!admins->AdminCorrect(login, password, &admin)) +if (!admins->Correct(login, password, &admin)) { return true; }