X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/641204dfbdb9fc870cdd2e7f9e3169a44693e7bf..1c324d5b2380a68f209e65969079677dbaf1c511:/projects/stargazer/plugins/configuration/sgconfig/configproto.h diff --git a/projects/stargazer/plugins/configuration/sgconfig/configproto.h b/projects/stargazer/plugins/configuration/sgconfig/configproto.h index 29369867..c5ddd579 100644 --- a/projects/stargazer/plugins/configuration/sgconfig/configproto.h +++ b/projects/stargazer/plugins/configuration/sgconfig/configproto.h @@ -16,128 +16,93 @@ /* * Author : Boris Mikhailenko + * Author : Maxim Mamontov */ - /* - $Revision: 1.14 $ - $Date: 2010/10/04 20:24:14 $ - $Author: faust $ - */ +#pragma once +#include "parser.h" -#ifndef CONFIGPROTO_H -#define CONFIGPROTO_H - -#include -#include -#include +#include "stg/module_settings.h" #include +#include +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wshadow" +#include +#pragma GCC diagnostic pop +#include + +#include +#include +#include -#include "parser.h" -#include "../../../users.h" -#include "../../../admins.h" -#include "../../../tariffs.h" -#include "stg_logger.h" - -using namespace std; - -#define STG_HEADER "SG04" -#define OK_HEADER "OKHD" -#define ERR_HEADER "ERHD" -#define OK_LOGIN "OKLG" -#define ERR_LOGIN "ERLG" -#define OK_LOGINS "OKLS" -#define ERR_LOGINS "ERLS" - -//----------------------------------------------------------------------------- -class CONFIGPROTO +namespace STG { + +struct Settings; +struct Admins; +struct Tariffs; +struct Users; +struct Services; +struct Corporations; +struct Store; +class PluginLogger; + +class Conn; + +} + +class CONFIGPROTO { public: - CONFIGPROTO(); + explicit CONFIGPROTO(STG::PluginLogger & l); ~CONFIGPROTO(); - void SetPort(uint16_t port); - //void SetHostAllow(HOSTALLOW * ha); - void SetAdmins(ADMINS * a); - void SetUsers(USERS * u); - void SetTariffs(TARIFFS * t); - void SetStore(BASE_STORE * s); - void SetStgSettings(const SETTINGS * s); - const string & GetAdminLogin(); - uint32_t GetAdminIP(); - int Prepare(); - int Stop(); - const string & GetStrError(); - static void * Run(void * a); + void SetPort(uint16_t port) { m_port = port; } + void SetBindAddress(const std::string & address) { m_bindAddress = address; } + void SetSettings(const STG::Settings * settings) { m_settings = settings; } + void SetAdmins(STG::Admins * admins) { m_admins = admins; } + void SetTariffs(STG::Tariffs * tariffs) { m_tariffs = tariffs; } + void SetUsers(STG::Users * users) { m_users = users; } + void SetStore(STG::Store * store) { m_store = store; } + void SetServices(STG::Services * services) { m_services = services; } + void SetCorporations(STG::Corporations * corporations) { m_corporations = corporations; } + + int Prepare(); + int Stop(); + const std::string & GetStrError() const { return m_errorStr; } + void Run(std::stop_token token); private: - int RecvHdr(int sock); - int RecvLogin(int sock); - int SendLoginAnswer(int sock, int err); - int SendHdrAnswer(int sock, int err); - int RecvLoginS(int sock); - int SendLoginSAnswer(int sock, int err); - int RecvData(int sock); - int SendDataAnswer(int sock); - void SendError(const char * text); - void WriteLogAccessFailed(uint32_t ip); - - int ParseCommand(); - - list answerList; - list requestList; - uint32_t adminIP; - string adminLogin; - uint16_t port; - pthread_t thrReciveSendConf; - bool nonstop; - int state; - //HOSTALLOW * hostAllow; - ADMIN currAdmin; - STG_LOGGER & WriteServLog; - - int outerSocket; - int listenSocket; - struct sockaddr_in outerAddr; - socklen_t outerAddrLen; - - PARSER_GET_SERVER_INFO parserGetServInfo; - - PARSER_GET_USERS parserGetUsers; - PARSER_GET_USER parserGetUser; - PARSER_CHG_USER parserChgUser; - PARSER_ADD_USER parserAddUser; - PARSER_DEL_USER parserDelUser; - PARSER_CHECK_USER parserCheckUser; - PARSER_SEND_MESSAGE parserSendMessage; - - PARSER_GET_ADMINS parserGetAdmins; - PARSER_ADD_ADMIN parserAddAdmin; - PARSER_DEL_ADMIN parserDelAdmin; - PARSER_CHG_ADMIN parserChgAdmin; - - PARSER_GET_TARIFFS parserGetTariffs; - PARSER_ADD_TARIFF parserAddTariff; - PARSER_DEL_TARIFF parserDelTariff; - PARSER_CHG_TARIFF parserChgTariff; - - ADMINS * admins; - //USERS * users; - //TARIFFS * tariffs; - //BASE_STORE * store; - //const SETTINGS * settings; - - BASE_PARSER * currParser; - vector dataParser; - - XML_Parser xmlParser; - - string errorStr; - - friend void ParseXMLStart(void *data, const char *el, const char **attr); - friend void ParseXMLEnd(void *data, const char *el); -}; -//----------------------------------------------------------------------------- -#endif //CONFIGPROTO_H + CONFIGPROTO(const CONFIGPROTO & rvalue); + CONFIGPROTO & operator=(const CONFIGPROTO & rvalue); + + const STG::Settings * m_settings; + STG::Admins * m_admins; + STG::Tariffs * m_tariffs; + STG::Users * m_users; + STG::Services * m_services; + STG::Corporations * m_corporations; + STG::Store * m_store; + + uint16_t m_port; + std::string m_bindAddress; + bool m_stopped; + STG::PluginLogger & m_logger; + int m_listenSocket; + + std::string m_errorStr; + BASE_PARSER::REGISTRY m_registry; + std::deque m_conns; + + bool Bind(); + + void RegisterParsers(); + + int MaxFD() const; + void BuildFDSet(fd_set & fds) const; + void CleanupConns(); + void HandleEvents(const fd_set & fds); + void AcceptConnection(); +};