Astra Linux Directory Client Core API  1.7.0
ALDRpcUtils.h
См. документацию.
1 
6 #ifndef ALD_RPC_UTILS
7 #define ALD_RPC_UTILS
8 
9 #include "common.h"
10 #include <iostream>
11 #include <memory>
12 #include "ald-rpc.h"
13 #include "rpc-definitions.h"
14 
15 using namespace std;
16 
17 namespace ALD
18 {
19 
26 void send_str(ostream& o, const string& s, bool checklen = true);
29 void read_str(istream& i, string& s, bool checklen = true);
30 
32 void send_size(ostream& o, size_t s);
34 void read_size(istream& i, size_t& s);
35 
36 class IALDRpcSession;
37 class CALDUser;
38 
39 // Privileged everybody authenticated authorized(CREDS) admins admin/admin
46  arckSystem};
47 
52 {
53 protected:
55  string m_strName;
56  string m_strDesc;
58 public:
60  inline const string &name() const {return m_strName;}
62  inline const string &desc() const {return m_strDesc;}
64  inline arcPrivKind kind() const {return m_PrivKind;}
65 
71  virtual void Run(ald_rpc_request &request, IALDRpcSession *session, void* extra) = 0;
72 
74  CALDRpcCommand(IALDCore& Core);
75  virtual ~CALDRpcCommand();
76 };
77 
79 typedef shared_ptr<CALDRpcCommand> CALDRpcCommandPtr;
80 
82 typedef map<string, CALDRpcCommandPtr> ald_rpc_command_map;
83 
88 {
89 public:
90  virtual ald_rpc_request& request() = 0;
91 
92  virtual bool IsAuthenticated() = 0;
94  virtual bool IsAuthorized() = 0;
95  virtual bool IsAdmin() = 0;
96  virtual bool IsSuperuser() = 0;
97  virtual bool IsService() = 0;
99  virtual string userId() = 0;
100 
101  virtual string localhost() = 0;
103  virtual int localport() = 0;
104  virtual string peerhost() = 0;
105  virtual int peerport() = 0;
107 
109  virtual ald_rpc_command_map& commands(const string &key) = 0;
110 
111  virtual ~IALDRpcSession(){}
112 };
113 
114 /* Actions */
116 #define ALD_LOAD_RPC_COMMANDS "LoadRpcCommands"
118 #define ALD_RPC_KEY "RPC"
119 #define ALD_LPC_KEY "LPC"
120 
124  ald_rpc_command_map* mapRpcCmds;
125  // cppcheck-suppress unusedStructMember
126  void *extra;
127 };
128 
130 const char* rpcmsgtype2str(unsigned short message);
131 
135  // cppcheck-suppress unusedStructMember
136  void *extra;
137 };
138 
140 #define MK_BROADCAST_MESSAGE(msg, arg) string(msg)+":"+arg
141 
143 bool SendBroadcastMessage(IALDCore &Core, const string& msg, ald_string_list *responses = NULL, int timeout = 3);
144 
146 
147 } // ALD
148 
149 #endif //ALD_RPC_UTILS
list< string > ald_string_list
Список строк
Definition: ALDUtils.h:152
void send_str(ostream &o, const string &s, bool checklen=true)
Запись строки в поток
Пространство имен основного интерфейса Astra Linux Directory.
Definition: action-definitions.h:9
shared_ptr< CALDRpcCommand > CALDRpcCommandPtr
Разделяемый указатель на RPC команду
Definition: ALDRpcUtils.h:79
string m_strDesc
Описание
Definition: ALDRpcUtils.h:56
Структура события ALD_STATISTICS.
Definition: ALDRpcUtils.h:133
string m_strName
Имя
Definition: ALDRpcUtils.h:55
STL namespace.
const string & name() const
Возвращает имя
Definition: ALDRpcUtils.h:60
const char * rpcmsgtype2str(unsigned short message)
Вовзращает описание типа сообщения
arcPrivKind
Класс безопасности команды
Definition: ALDRpcUtils.h:41
void read_size(istream &i, size_t &s)
Чтение размера из потока
map< string, CALDRpcCommandPtr > ald_rpc_command_map
Карта RPC команд (имя => разделяемый указатель на RPC команду)
Definition: ALDRpcUtils.h:82
map< string, string > ald_string_map
MAP строка => строка
Definition: ALDUtils.h:164
bool SendBroadcastMessage(IALDCore &Core, const string &msg, ald_string_list *responses=NULL, int timeout=3)
Отправка широковещательного сообщения
Структура RPC запроса
Definition: ald-rpc.h:78
Для аутентифицированных пользователей
Definition: ALDRpcUtils.h:43
void * extra
Доп. параметр
Definition: ALDRpcUtils.h:136
void read_str(istream &i, string &s, bool checklen=true)
Чтение строки из потока
IALDCore * m_pCore
Указатель на интерфейс ядра
Definition: ALDRpcUtils.h:54
ald_string_map * stats
Карта счетчиков статистики
Definition: ALDRpcUtils.h:134
void send_size(ostream &o, size_t s)
Запись размера в поток
arcPrivKind kind() const
Возвращает класс безопасности
Definition: ALDRpcUtils.h:64
Для привилегированных пользователей
Definition: ALDRpcUtils.h:45
Абстрактный интерфейс RPC сессии
Definition: ALDRpcUtils.h:87
arcPrivKind m_PrivKind
Класс безопасности (default arckPrivileged)
Definition: ALDRpcUtils.h:57
Структура события ALD_LOAD_RPC_COMMANDS.
Definition: ALDRpcUtils.h:123
ald_rpc_command_map * mapRpcCmds
Карта RPC команд
Definition: ALDRpcUtils.h:124
Для авторизованных пользователей
Definition: ALDRpcUtils.h:44
Класс RPC команды
Definition: ALDRpcUtils.h:51
Основной заголовочный файл, содержащий необходимый минимум предварительных объявлений и включений дру...
Объявление RPC интерфейса Astra Linux Directory.
Публичная
Definition: ALDRpcUtils.h:42
Объявление идентификаторов команд RPC интерфейса Astra Linux Directory (см. ald-rpc.h, ALDRpcUtils.h)
void * extra
Доп. параметр
Definition: ALDRpcUtils.h:126
const string & desc() const
Возвращает описание
Definition: ALDRpcUtils.h:62
Абстрактный класс IALDCore - основной интерфейс клиента Astra Linux Directory, с помощью которого вып...
Definition: ALDCore.h:241