Astra Linux Directory Client Core API  1.7.0
ldap-wrapper.h
См. документацию.
1 
6 #ifndef ALD_LDAP_WRAPPER
7 #define ALD_LDAP_WRAPPER
8 
9 #include "common.h"
10 #include "ALDCore.h"
11 #include <map>
12 #include <memory>
13 
14 using namespace std;
15 
16 namespace ALD
17 {
23 #define LDAP_ITF_NAME "ldap"
25 
27 #define LDAP_ATTR_NULLABLE true
28 
30 enum alSCOPE {alsBASE, alsONELEVEL, alsSUBTREE, alsCHILDREN};
31 
34  aloADD = '+',
35  aloREPLACE = '=',
36  aloDELVAL = '-',
37  aloDELETE = '!'
38 };
39 
46 {
47 public:
48 
49  string DN;
51 
57  virtual string ValByAttr(const string& Attr, bool nullable = false) = 0;
58 
65  virtual size_t ValsByAttr(const string& Attr, ald_string_list &vals, bool nullable = false) = 0;
66 
67 
68  virtual void Clear() = 0;
69  virtual bool IsValid() = 0;
70  virtual void Create() = 0;
71  virtual void Delete() = 0;
72 
73 
87  virtual void Update(ald_string_multimap &modattrs, bool inplace = false) = 0;
88 
92  virtual void Rename(const string &newrdn) = 0;
93 
94  virtual string creator() = 0;
95  virtual string modifier() = 0;
96  virtual string created() = 0;
97  virtual string modified() = 0;
98 
99  virtual ~IALDLdapEntity(){}
100 };
101 
102 typedef shared_ptr<IALDLdapEntity> CALDLdapEntPtr;
103 
104 typedef list<CALDLdapEntPtr> ald_ldap_ent_list;
105 
112 {
113 public:
114  virtual void First() = 0;
115 
120  virtual bool Fetch(CALDLdapEntPtr &Entity) = 0;
121 
122  virtual int Count() = 0;
123 
124  virtual ~IALDLdapQuery(){}
125 };
126 
127 typedef shared_ptr<IALDLdapQuery> CALDLdapQueryPtr;
128 
134 {
135 public:
136  virtual ~IALDLdapConnection(){}
137 
138  virtual ALDAuthType AuthType() = 0;
139 
145  virtual bool Connect(const string &server, ALDAuthType at) = 0;
146  virtual bool IsConnected() = 0;
147  virtual void Disconnect() = 0;
148 
149  // utils
150  virtual long GetLastError() = 0;
151  virtual bool IfReconnectNeeded() = 0;
152  virtual string LocalToUtf8(const string &strLocal) = 0;
153  virtual string Utf8ToLocal(const string &strUtf8) = 0;
154  virtual void AdjustGecosType() = 0;
155 
156  // operations
157  virtual CALDLdapEntPtr AllocEntity() = 0;
158 
167  virtual CALDLdapQueryPtr Search(const string &basedn, const string &filter,
168  ald_string_list &attrs, alSCOPE scope = alsSUBTREE) = 0;
169 
174  virtual void DeleteAttr(const string &dn, const string &attr) = 0;
175 
182  virtual void SetAttrValue(const string &dn, const string &attr, const string &val,
183  alOPERATION op = aloREPLACE) = 0;
184 
191  virtual void SetAttrValues(const string &dn, const string &attr, ald_string_list &vals,
192  alOPERATION op = aloREPLACE) = 0;
193 
206  virtual void UpdateDN(const string &dn, ald_string_multimap &modattrs) = 0;
207 
208  virtual void DeleteDN(const string &dn) = 0;
209 
217  virtual void AddDN(const string &dn, ald_string_multimap &attrs) = 0;
218 
223  virtual void RenameDN(const string &dn, const string &newrdn) = 0;
224 
232  virtual void SetAttrBinaryValue(const string &dn, const string &attr,
233  const char* pval, unsigned long len,
234  alOPERATION op = aloREPLACE) = 0;
235 
242  virtual void* GetAttrBinaryValue(const string &dn, const string &attr,
243  unsigned long &len) = 0;
244 
245  // maintaining
246  virtual void EnsureOU(const string &dn) = 0;
247 
248  virtual void EnumerateIndexes(ald_string_list &indexes) = 0;
249  virtual void AddDBIndex(const string &idx) = 0;
250  virtual void DeleteDBIndex(const string &idx) = 0;
251 
255  virtual void EnumerateDBAccessRules(ald_string_list &rules) = 0;
256 
258  #define ALD_LDAP_ACCESS_POS_FIRST 0
259  #define ALD_LDAP_ACCESS_POS_LAST -1
261 
266  virtual void AddDBAccessRule(int idx, const string &rule) = 0;
267 
268  virtual void DeleteDBAccessRule(int idx) = 0;
269 
270  virtual void EnumerateLdapSchemas(ald_string_list &schemas) = 0;
271  virtual bool IsLdapSchemaRegistered(const string &schema) = 0;
272 
273  virtual void EnumerateModules(ald_string_list &modules) = 0;
274 
275  virtual void EnumerateDatabases(ald_string_map &dbs) = 0;
276 
277  virtual void EnumerateDBUniqueness(ald_string_list &uniqs) = 0;
278  virtual void AddDBUniqueness(const string &uniq) = 0;
279  virtual void DeleteDBUniqueness(const string &uniq) = 0;
280 
281  virtual void EnumerateDBLimits(ald_string_map &limits) = 0;
282  virtual void AddDBLimit(const string &who, const string &limit) = 0;
283  virtual void DeleteDBLimit(const string &who) = 0;
284 
285  //replication
286  virtual void EnumerateSyncRepls(ald_string_list &syncrepls) = 0;
287  virtual void AddSyncRepl(string rid, string provider) = 0;
288  virtual void DeleteSyncRepl(string rid, string provider) = 0;
289 
290  //referral
291  virtual void EnumerateLdapProviders(ald_string_map &providers) = 0;
292 
298  virtual void AddLdapProvider(const string &domain, string uri, const string &pwd) = 0;
299 
304  virtual CALDLdapEntPtr GetLdapProvider(const string &domain) = 0;
305 
306  virtual void UpdateLdapProvider(const string &domain, string uri) = 0;
307  virtual void DeleteLdapProvider(const string &domain) = 0;
308 };
309 
310 typedef shared_ptr<IALDLdapConnection> CALDLdapConnPtr;
311 
317 {
318 public:
320  virtual CALDLdapConnPtr getConnection() = 0;
321  virtual void RegisterLdapSchema(const string &schema) = 0;
322  virtual string getDefaultURIs() = 0;
323 };
324 
325 typedef shared_ptr<IALDLdapWrapper> CALDLdapWrapperPtr;
326 
328 
329 } // ALD
330 
331 #endif // ALD_LDAP_WRAPPER
list< CALDLdapEntPtr > ald_ldap_ent_list
Список разделяемых указателей на интерфейс записи LDAP IALDLdapEntity.
Definition: ldap-wrapper.h:104
list< string > ald_string_list
Список строк
Definition: ALDUtils.h:152
Объявление основного интерфейса клиента Astra Linux Directory и необходимых для него типов и интерфей...
Удаление заданного значения
Definition: ldap-wrapper.h:36
void RegisterLdapSchema(IALDCore &Core, const string &schema)
Регистрирует указанную схему LDAP.
shared_ptr< IALDLdapEntity > CALDLdapEntPtr
Разделяемый указатель на интерфейс записи LDAP IALDLdapEntity.
Definition: ldap-wrapper.h:102
Пространство имен основного интерфейса Astra Linux Directory.
Definition: action-definitions.h:9
alOPERATION
Операции LDAP (префиксы при модификации записи LDAP)
Definition: ldap-wrapper.h:33
#define LDAP_ITF_NAME
Имя LDAP интерфейса
Definition: ldap-wrapper.h:24
STL namespace.
shared_ptr< IALDLdapConnection > CALDLdapConnPtr
Разделяемый указатель на интерфейс соединения с сервером LDAP.
Definition: ldap-wrapper.h:310
Базовый класс интерфейса
Definition: ALDCore.h:83
virtual ~IALDLdapEntity()
Деструктор
Definition: ldap-wrapper.h:99
Добавление заданного значения
Definition: ldap-wrapper.h:34
Абстрактный класс-интерфейс результирующего набора записей LDAP.
Definition: ldap-wrapper.h:111
map< string, string > ald_string_map
MAP строка => строка
Definition: ALDUtils.h:164
multimap< string, string > ald_string_multimap
MultiMAP строка => строка
Definition: ALDUtils.h:166
Удаление всех значений атрибута (удаление атрибута)
Definition: ldap-wrapper.h:37
Абстрактный класс-интерфейс LDAP записи
Definition: ldap-wrapper.h:45
shared_ptr< IALDLdapWrapper > CALDLdapWrapperPtr
Разделяемый указатель на интерфейс взаимодействия с LDAP IALDLdapWrapper.
Definition: ldap-wrapper.h:325
Установка заданного значения
Definition: ldap-wrapper.h:35
Абстрактный класс-интерфейс взаимодействия с LDAP.
Definition: ldap-wrapper.h:316
alSCOPE
Уровни просмотра LDAP дерева
Definition: ldap-wrapper.h:30
virtual ~IALDLdapQuery()
Деструктор
Definition: ldap-wrapper.h:124
virtual ~IALDLdapConnection()
Деструктор
Definition: ldap-wrapper.h:136
ald_string_multimap Attrs
Таблица значений атрибутов (имя, значение)
Definition: ldap-wrapper.h:50
string DN
Уникальное имя
Definition: ldap-wrapper.h:49
IALDLdapWrapper(IALDCore &Core)
Конструктор
Definition: ldap-wrapper.h:319
Основной заголовочный файл, содержащий необходимый минимум предварительных объявлений и включений дру...
Абстрактный класс-интерфейс соединения с сервером LDAP.
Definition: ldap-wrapper.h:133
ALDAuthType
Набор способов аутентификации
Definition: ALDCore.h:28
Абстрактный класс IALDCore - основной интерфейс клиента Astra Linux Directory, с помощью которого вып...
Definition: ALDCore.h:241
shared_ptr< IALDLdapQuery > CALDLdapQueryPtr
Разделяемый указатель на интерфейс результирующего набора записей LDAP IALDLdapQuery.
Definition: ldap-wrapper.h:127