X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/ede91934442fd804d7b818971a44e3ad795cb01f..80aca6d78d4ff5d514216fe96c44e2ee75c4e933:/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.h diff --git a/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.h b/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.h index 58e8973a..707c30d5 100644 --- a/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.h +++ b/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.h @@ -1,79 +1,89 @@ -#ifndef __RPC_CONFIG_H__ -#define __RPC_CONFIG_H__ +#pragma once -#include - -#include -#include -#include +#include "stg/plugin.h" +#include "stg/admin_conf.h" +#include "stg/module_settings.h" +#include "stg/logger.h" #include #include #include -#include "os_int.h" -#include "plugin.h" -#include "admin_conf.h" +#include +#include +#include +#include +#include + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wshadow" +#include +#pragma GCC diagnostic pop #define RPC_CONFIG_VERSION "Stargazer RPC v. 0.2" -extern "C" PLUGIN * GetPlugin(); +namespace STG +{ + +struct Admins; +struct Tariffs; +struct Users; +struct Store; -class ADMINS; -class TARIFFS; -class USERS; -class STORE; +} class RPC_CONFIG_SETTINGS { public: RPC_CONFIG_SETTINGS(); - virtual ~RPC_CONFIG_SETTINGS() {}; - const std::string & GetStrError() const { return errorStr; }; - int ParseSettings(const MODULE_SETTINGS & s); - uint16_t GetPort() const { return port; }; - double GetCookieTimeout() const { return cookieTimeout; }; + virtual ~RPC_CONFIG_SETTINGS() {} + const std::string & GetStrError() const { return errorStr; } + int ParseSettings(const STG::ModuleSettings & s); + uint16_t GetPort() const { return port; } + double GetCookieTimeout() const { return cookieTimeout; } + private: - int ParseIntInRange(const std::string & str, - int min, - int max, - int * val); std::string errorStr; - int port; + uint16_t port; double cookieTimeout; }; struct ADMIN_INFO { + ADMIN_INFO() + : admin(), + accessTime(0), + priviledges() + {} + std::string admin; time_t accessTime; - PRIV priviledges; + STG::Priv priviledges; }; -class RPC_CONFIG :public PLUGIN +class RPC_CONFIG : public STG::Plugin { public: RPC_CONFIG(); - virtual ~RPC_CONFIG(); - - void SetUsers(USERS * u) { users = u; } - void SetTariffs(TARIFFS * t) { tariffs = t; } - void SetAdmins(ADMINS * a) { admins = a; } - void SetStore(STORE * s) { store = s; } - void SetTraffcounter(TRAFFCOUNTER *) {} - void SetStgSettings(const SETTINGS * s) { stgSettings = s; } - void SetSettings(const MODULE_SETTINGS & s) { settings = s; } - int ParseSettings(); - - int Start(); - int Stop(); - int Reload() { return 0; } - bool IsRunning() { return running && !stopped; } - - const string & GetStrError() const { return errorStr; } - const string GetVersion() const { return RPC_CONFIG_VERSION; } - uint16_t GetStartPosition() const { return 220; } - uint16_t GetStopPosition() const { return 220; } + ~RPC_CONFIG() override; + + void SetUsers(STG::Users * u) override { users = u; } + void SetTariffs(STG::Tariffs * t) override { tariffs = t; } + void SetAdmins(STG::Admins * a) override { admins = a; } + void SetStore(STG::Store * s) override { store = s; } + void SetStgSettings(const STG::Settings * s) override; + void SetSettings(const STG::ModuleSettings & s) override { settings = s; } + int ParseSettings() override; + + int Start() override; + int Stop() override; + int Reload(const STG::ModuleSettings & /*ms*/) override { return 0; } + bool IsRunning() override { return m_thread.joinable() && !stopped; } + + const std::string & GetStrError() const override { return errorStr; } + std::string GetVersion() const override { return RPC_CONFIG_VERSION; } + uint16_t GetStartPosition() const override { return 20; } + uint16_t GetStopPosition() const override { return 20; } bool GetAdminInfo(const std::string & cookie, ADMIN_INFO * info); @@ -83,25 +93,28 @@ public: bool LogoutAdmin(const std::string & cookie); private: - static void * Run(void *); + RPC_CONFIG(const RPC_CONFIG & rvalue); + RPC_CONFIG & operator=(const RPC_CONFIG & rvalue); + + void Run(std::stop_token token); std::string GetCookie() const; void InitiateRegistry(); - mutable string errorStr; + mutable std::string errorStr; RPC_CONFIG_SETTINGS rpcConfigSettings; - USERS * users; - ADMINS * admins; - TARIFFS * tariffs; - STORE * store; - MODULE_SETTINGS settings; - const SETTINGS * stgSettings; + STG::Users * users; + STG::Admins * admins; + STG::Tariffs * tariffs; + STG::Store * store; + STG::ModuleSettings settings; + int fd; xmlrpc_c::registry rpcRegistry; xmlrpc_c::serverAbyss * rpcServer; - bool running; bool stopped; - pthread_t tid; + std::jthread m_thread; std::map cookies; + size_t dayFee; + std::vector dirNames; + STG::PluginLogger logger; }; - -#endif