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:
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
ALD::ALDAuthType
ALDAuthType
Набор способов аутентификации
Definition: ALDCore.h:28
ALD::IALDLdapConnection::EnumerateIndexes
virtual void EnumerateIndexes(ald_string_list &indexes)=0
Получение списка индексов
ALD::IALDLdapConnection
Абстрактный класс-интерфейс соединения с сервером LDAP.
Definition: ldap-wrapper.h:134
ALD::IALDLdapConnection::~IALDLdapConnection
virtual ~IALDLdapConnection()
Деструктор
Definition: ldap-wrapper.h:136
ALD::IALDLdapEntity::modified
virtual string modified()=0
время модификации (GeneralizedTime = LDAP UTCTime syntax - 1.3.6.1.4.1.1466.115.121....
ALD::IALDLdapConnection::AddDBLimit
virtual void AddDBLimit(const string &who, const string &limit)=0
Добавление лимита
ALD::IALDLdapEntity::Delete
virtual void Delete()=0
Удаление
ALD::IALDLdapConnection::RenameDN
virtual void RenameDN(const string &dn, const string &newrdn)=0
Переименование записи
ALD::IALDLdapConnection::IfReconnectNeeded
virtual bool IfReconnectNeeded()=0
Проверка нужна ли переустановка соединения
ALD::IALDLdapEntity::created
virtual string created()=0
время создания (GeneralizedTime = LDAP UTCTime syntax - 1.3.6.1.4.1.1466.115.121.1....
ALD::IALDLdapConnection::GetLdapProvider
virtual CALDLdapEntPtr GetLdapProvider(const string &domain)=0
Получение проавйдера LDAP по домену
ALD::IALDLdapWrapper::IALDLdapWrapper
IALDLdapWrapper(IALDCore &Core)
Конструктор
Definition: ldap-wrapper.h:319
ALD::IALDLdapConnection::GetAttrBinaryValue
virtual void * GetAttrBinaryValue(const string &dn, const string &attr, unsigned long &len)=0
Получение двоичного значения атрибута записи
ALD::IALDLdapConnection::LocalToUtf8
virtual string LocalToUtf8(const string &strLocal)=0
Перевод строки из локальной кодировки в UTF8.
ALD::IALDLdapConnection::IsConnected
virtual bool IsConnected()=0
Проверка установлено ли соединение
ALD::aloDELETE
@ aloDELETE
Удаление всех значений атрибута (удаление атрибута)
Definition: ldap-wrapper.h:37
ALD::IALDLdapEntity
Абстрактный класс-интерфейс LDAP записи
Definition: ldap-wrapper.h:46
ALD::IALDLdapConnection::SetAttrBinaryValue
virtual void SetAttrBinaryValue(const string &dn, const string &attr, const char *pval, unsigned long len, alOPERATION op=aloREPLACE)=0
Модификация двоичного значения атрибута записи
ALD::IALDLdapQuery::~IALDLdapQuery
virtual ~IALDLdapQuery()
Деструктор
Definition: ldap-wrapper.h:124
ALD::aloADD
@ aloADD
Добавление заданного значения
Definition: ldap-wrapper.h:34
ALD::IALDLdapConnection::DeleteDBLimit
virtual void DeleteDBLimit(const string &who)=0
Удаление лимита
ALD::IALDLdapWrapper::getDefaultURIs
virtual string getDefaultURIs()=0
Список серверов LDAP по умолчанию
ALD::IALDLdapConnection::DeleteSyncRepl
virtual void DeleteSyncRepl(string rid, string provider)=0
Удаление узла репликации SyncRepl.
ALD::IALDLdapEntity::~IALDLdapEntity
virtual ~IALDLdapEntity()
Деструктор
Definition: ldap-wrapper.h:99
ALD::IALDLdapConnection::AddDN
virtual void AddDN(const string &dn, ald_string_multimap &attrs)=0
Создание записи
ALD::alSCOPE
alSCOPE
Уровни просмотра LDAP дерева
Definition: ldap-wrapper.h:30
ALD::IALDLdapQuery::Fetch
virtual bool Fetch(CALDLdapEntPtr &Entity)=0
Получение записи
ALD::IALDLdapConnection::GetLastError
virtual long GetLastError()=0
Получение кода последней ошибки
ALD::IALDLdapConnection::IsLdapSchemaRegistered
virtual bool IsLdapSchemaRegistered(const string &schema)=0
Проверка зарегистрированна ли схема
ALD::IALDLdapEntity::ValsByAttr
virtual size_t ValsByAttr(const string &Attr, ald_string_list &vals, bool nullable=false)=0
Получение списка значений атрибута по имени
ALD::IALDLdapConnection::EnumerateDBLimits
virtual void EnumerateDBLimits(ald_string_map &limits)=0
Получение списка лимитов
ALD::IALDLdapConnection::AddDBUniqueness
virtual void AddDBUniqueness(const string &uniq)=0
Добавление ограничения уникальности
ALD::IALDLdapEntity::ValByAttr
virtual string ValByAttr(const string &Attr, bool nullable=false)=0
Получение значения атрибута по имени
ALD::CALDLdapWrapperPtr
shared_ptr< IALDLdapWrapper > CALDLdapWrapperPtr
Разделяемый указатель на интерфейс взаимодействия с LDAP IALDLdapWrapper.
Definition: ldap-wrapper.h:325
ALD::IALDLdapWrapper::RegisterLdapSchema
virtual void RegisterLdapSchema(const string &schema)=0
Регистрация заданной схемы на локальном сервере LDAP.
ALD::IALDLdapEntity::DN
string DN
Уникальное имя
Definition: ldap-wrapper.h:49
ALD::IALDLdapConnection::EnumerateDatabases
virtual void EnumerateDatabases(ald_string_map &dbs)=0
Получение списка объявленных баз данных
ALD::IALDCore
Абстрактный класс IALDCore - основной интерфейс клиента Astra Linux Directory, с помощью которого вып...
Definition: ALDCore.h:242
ALD::IALDLdapConnection::EnumerateLdapSchemas
virtual void EnumerateLdapSchemas(ald_string_list &schemas)=0
Получение списка зарегистрированных схем
ALD::alOPERATION
alOPERATION
Операции LDAP (префиксы при модификации записи LDAP)
Definition: ldap-wrapper.h:33
ALD::IALDLdapQuery::First
virtual void First()=0
Переход к первой записи набора
ALD::IALDLdapConnection::Connect
virtual bool Connect(const string &server, ALDAuthType at)=0
Установка соединения
ALD::IALDLdapConnection::EnsureOU
virtual void EnsureOU(const string &dn)=0
Автоматическое создание пути классов типа organizationalUnit для заданного уникального имени dn.
ALD::aloREPLACE
@ aloREPLACE
Установка заданного значения
Definition: ldap-wrapper.h:35
ALD::IALDLdapConnection::AllocEntity
virtual CALDLdapEntPtr AllocEntity()=0
Создание экземпляра связанного с соединением класса LDAP записи
ALD::IALDLdapQuery::Count
virtual int Count()=0
Количество записей в наборе
ALD::aloDELVAL
@ aloDELVAL
Удаление заданного значения
Definition: ldap-wrapper.h:36
ALD::IALDLdapConnection::DeleteAttr
virtual void DeleteAttr(const string &dn, const string &attr)=0
Удаление атрибута записи
ALD::IALDLdapConnection::SetAttrValue
virtual void SetAttrValue(const string &dn, const string &attr, const string &val, alOPERATION op=aloREPLACE)=0
Модификация значения атрибута записи
ALD::IALDLdapConnection::EnumerateModules
virtual void EnumerateModules(ald_string_list &modules)=0
Получение списка загруженных модулей
ALD::ald_string_map
map< string, string > ald_string_map
MAP строка => строка
Definition: ALDUtils.h:164
ALD::ald_string_multimap
multimap< string, string > ald_string_multimap
MultiMAP строка => строка
Definition: ALDUtils.h:166
ALD::IALDLdapEntity::Attrs
ald_string_multimap Attrs
Таблица значений атрибутов (имя, значение)
Definition: ldap-wrapper.h:50
ALD::IALDLdapConnection::DeleteDN
virtual void DeleteDN(const string &dn)=0
Удаление записи по уникальному имени dn.
ALD::CALDLdapEntPtr
shared_ptr< IALDLdapEntity > CALDLdapEntPtr
Разделяемый указатель на интерфейс записи LDAP IALDLdapEntity.
Definition: ldap-wrapper.h:102
ALD::IALDLdapEntity::IsValid
virtual bool IsValid()=0
Проверка валидности (не пустота DN)
ALD::ald_ldap_ent_list
list< CALDLdapEntPtr > ald_ldap_ent_list
Список разделяемых указателей на интерфейс записи LDAP IALDLdapEntity.
Definition: ldap-wrapper.h:104
ALD::IALDLdapConnection::DeleteLdapProvider
virtual void DeleteLdapProvider(const string &domain)=0
Удаление провайдера репликация для домена LDAP.
ALD::CALDLdapConnPtr
shared_ptr< IALDLdapConnection > CALDLdapConnPtr
Разделяемый указатель на интерфейс соединения с сервером LDAP.
Definition: ldap-wrapper.h:310
ALD::IALDLdapConnection::SetAttrValues
virtual void SetAttrValues(const string &dn, const string &attr, ald_string_list &vals, alOPERATION op=aloREPLACE)=0
Модификация значений атрибута записи
ALD::IALDLdapConnection::EnumerateSyncRepls
virtual void EnumerateSyncRepls(ald_string_list &syncrepls)=0
Получение списка узлов репликации SyncRepl (модуль syncprov)
common.h
Основной заголовочный файл, содержащий необходимый минимум предварительных объявлений и включений дру...
ALD::IALDLdapEntity::creator
virtual string creator()=0
dn создателя
ALD::IALDLdapConnection::AddDBIndex
virtual void AddDBIndex(const string &idx)=0
Добавление индекса idx.
ALD::IALDLdapConnection::DeleteDBIndex
virtual void DeleteDBIndex(const string &idx)=0
Удаление индекса idx.
ALD
Пространство имен основного интерфейса Astra Linux Directory.
Definition: action-definitions.h:10
ALD::IALDLdapConnection::AuthType
virtual ALDAuthType AuthType()=0
Текущий способ аутентификации
ALD::IALDLdapConnection::Disconnect
virtual void Disconnect()=0
Завершение соединения с сервером
ALD::IALDLdapEntity::Rename
virtual void Rename(const string &newrdn)=0
Переименование записи
ALD::IALDLdapConnection::EnumerateLdapProviders
virtual void EnumerateLdapProviders(ald_string_map &providers)=0
Получение списка провайдеров LDAP.
ALD::IALDLdapConnection::AddDBAccessRule
virtual void AddDBAccessRule(int idx, const string &rule)=0
Добавление правила доступа
ALD::CALDLdapQueryPtr
shared_ptr< IALDLdapQuery > CALDLdapQueryPtr
Разделяемый указатель на интерфейс результирующего набора записей LDAP IALDLdapQuery.
Definition: ldap-wrapper.h:127
ALD::IALDLdapConnection::DeleteDBAccessRule
virtual void DeleteDBAccessRule(int idx)=0
Удаление правила доступа по номеру idx.
ALD::IALDLdapWrapper::getConnection
virtual CALDLdapConnPtr getConnection()=0
Создание экземпляра соединения с сервером LDAP CALDLdapConnPtr.
LDAP_ITF_NAME
#define LDAP_ITF_NAME
Имя LDAP интерфейса
Definition: ldap-wrapper.h:24
ALDCore.h
Объявление основного интерфейса клиента Astra Linux Directory и необходимых для него типов и интерфей...
ALD::IALDLdapEntity::Clear
virtual void Clear()=0
Очистка экземпляра класса
ALD::IALDLdapConnection::EnumerateDBUniqueness
virtual void EnumerateDBUniqueness(ald_string_list &uniqs)=0
Получение списка ограничений уникальности
ALD::IALDLdapConnection::UpdateDN
virtual void UpdateDN(const string &dn, ald_string_multimap &modattrs)=0
Модификация записи
ALD::IALDLdapConnection::AdjustGecosType
virtual void AdjustGecosType()=0
Изменение типа поля gecos для поддержки русского языка
ALD::IALDLdapConnection::Utf8ToLocal
virtual string Utf8ToLocal(const string &strUtf8)=0
Перевод строки из UTF8 в локальную кодировку
ALD::CALDInterface
Базовый класс интерфейса
Definition: ALDCore.h:84
ALD::IALDLdapConnection::AddSyncRepl
virtual void AddSyncRepl(string rid, string provider)=0
Добавление узла репликации SyncRepl.
ALD::IALDLdapEntity::Create
virtual void Create()=0
Создание
ALD::IALDLdapConnection::DeleteDBUniqueness
virtual void DeleteDBUniqueness(const string &uniq)=0
Удаление ограничения уникальности
ALD::IALDLdapConnection::AddLdapProvider
virtual void AddLdapProvider(const string &domain, string uri, const string &pwd)=0
Добавление провайдера LDAP.
ALD::IALDLdapConnection::EnumerateDBAccessRules
virtual void EnumerateDBAccessRules(ald_string_list &rules)=0
Получение списка правил доступа к LDAP.
ALD::ald_string_list
list< string > ald_string_list
Список строк
Definition: ALDUtils.h:152
ALD::IALDLdapWrapper
Абстрактный класс-интерфейс взаимодействия с LDAP.
Definition: ldap-wrapper.h:317
ALD::IALDLdapConnection::Search
virtual CALDLdapQueryPtr Search(const string &basedn, const string &filter, ald_string_list &attrs, alSCOPE scope=alsSUBTREE)=0
Запрос к LDAP серверу
ALD::IALDLdapEntity::Update
virtual void Update(ald_string_multimap &modattrs, bool inplace=false)=0
Модификация записи
ALD::IALDLdapEntity::modifier
virtual string modifier()=0
dn модификатора
ALD::IALDLdapConnection::UpdateLdapProvider
virtual void UpdateLdapProvider(const string &domain, string uri)=0
Изменения адреса сервера LDAP для домена LDAP.
ALD::IALDLdapQuery
Абстрактный класс-интерфейс результирующего набора записей LDAP.
Definition: ldap-wrapper.h:112