К основному контенту

LS_ActiveDirectory_Lib. Документация и примеры использования. Часть 1. ADConnector

LS_ActiveDirectory_Lib - свободно распространяемая библиотека на языке LotusScript с открытым исходным кодом. Библиотека поставляется "как есть". Вы можете использовать ее на свой страх и риск. Автор не несет ответственности за последствия использования библиотеки. При использовании библиотеки автор не ограничивает изменение кода библиотеки под свои нужды. Тем не менее, рекомендуется переопределение классов и методов в соответствии с принципами ООП.

Библиотека LS_ActiveDirectory_Lib предоставляет интерфейс взаимодействия с Microsoft Active Directory (MS AD) для IBM Notes/Domino. Взаимодействия происходит по протоколу LDAP. Для подключения используется OLE-объект ADODB.Connection.

Часть 2 и Часть 3 документации.


Документация описывает только публичные классы и методы.

ADConnector (класс)

Основной класс, устанавливающий соединение с MS AD. Так же используется для выполнения запросов (получения объектов) к MS AD.
Конструктор класса принимает в качестве параметров:
domainName: Строка. Имя домена для подключения. Можно указать конкретный контроллер домена для подключения. Если передано пустое значение, будет выброшена ошибка AD_ERR_PARAMEMPTY (3500)
userName: Строка. Логин учетной записи, под которой необходимо выполнить подключение. Логин следует вводить с указанием домена. Если передать пустое значение (""), подключение будет произведено с использованием текущей учетной записи.
userPwd: Строка. Пароль для учетной записи, под которой необходимо выполнить подключение, если параметр userName не пуст. Игнорируется, если параметр userName пуст.

При подключении проверятся, что контроллер, к которому произошло подключение - RW. В противном случае происходит поиск RW-контроллеров и переподключение.

Примеры использования:
Dim ad As New ADConnector("MyOrg.org", "", "") 'Подключение к домену с использованием текущей учетной записи.
'---------------------------------------------------------------------------------
Dim ad As New ADConnector("controller-1.MyOrg.org", "MyOrg\LotusAccount", "qwerty") 'Подключение

Свойства класса (публичные поля):

DomainControllerName: String GET

Возвращает текущее имя котроллера домена, к которому было выполнено подключение.

DomainName: String GET

Возвращает текущее имя домена.

Методы класса:

ConvertToADAttribute: String

Конвертирует переданное значение, удаляя спец. символы (, " « ») и обрезая значение до 64 символов.
Параметр:
srcString: Строка - значение, которое необходимо сконвертировать

CreateADObject: ADObject

Создает новый объект в MS AD заданного типа. Внимание! Метод не сохраняет объект, для сохранения объекта, необходимо вызвать метод Save() в экземпляре класса ADObject.
Параметры:
objType: Строка - тип создаваемого объекта, одно из значений:
  • AD_OBJECT_OU - контейнер
  • AD_OBJECT_USER - пользователь
  • AD_OBJECT_GROUP - группа
  • AD_OBJECT_COMPUTER - устройство. на текущий момент не поддерживается. При передаче этого значения возникнет ошибка.
fullName: Строка - имя объекта
objContainer: Строка - контейнер, содержащий новый объект. Если в качестве значения будут передан Nothing, будет выброшена ошибка AD_ERROR_PARAMNOTHING (3501)

Примеры использования:
Dim ad As New ADConnector("MyOrg.org", "", "")
Dim adContainer As ADOU
Dim adUser As ADUser

Set adContainer = ad.FindObj(Nothing, AD_OBJECT_OU, "UserContainer", AD_ATTRIBUTE_NAME) 'Поиск контейнера, где будет создан объект
Set adUser = ad.CreateADObject(AD_OBJECT_USER, "Petrov-IS", adContainer) 'Создание объекта

Delete

Деструктор. Освобождение ресурсов.
FindObj: ADObject
Производит поиск объекта в MS AD в заданными параметрами. Возвращает только один (первый) объект, удовлетворяющий критериям поиска. Если объект не найден, вернет Nothing.
Параметры:
topObj: ADOU - объект-контейнер, в поддереве которого следует производить поиск. Если значение параметра Nothing - поиск будет происходит от корня.
objType: Строка - тип искомого объекта, одно из значений:
  • AD_OBJECT_OU - контейнер
  • AD_OBJECT_USER - пользователь
  • AD_OBJECT_GROUP - группа
  • AD_OBJECT_COMPUTER - устройство
objName: Строка - ключ поиска
searchAtrr: Строка - атрибут объекта, по которому производится поиск. Значение можно задать через уже определнные константы библиотеки:
  • AD_ATTRIBUTE_DISTINGUISHEDNAME
  • AD_ATTRIBUTE_SAMACCOUNTNAME
  • AD_ATTRIBUTE_CN
  • AD_ATTRIBUTE_NAME
  • AD_ATTRIBUTE_DESCRIP
или вручную, задав любой атрибут.

Примеры использования:
Dim ad As New ADConnector("MyOrg.org", "", "")
Dim adContainer As ADOU
Dim adUser As ADUser

Set adContainer = ad.FindObj(Nothing, AD_OBJECT_OU, "UserContainer", AD_ATTRIBUTE_NAME) 'Поиск контейнера
Set adUser = ad.FindObj(adContainer, AD_OBJECT_USER, "Petrov-IS", AD_ATTRIBUTE_SAMACCOUNTNAME) 'Поиск пользователя в поддереве контейнера

'----------------------------------------------------------------------------------------
Dim ad As New ADConnector("MyOrg.org", "", "")
Dim adContainer As ADOU
Dim adUser As ADUser

Set adUser = ad.FindObj(Nothing, AD_OBJECT_USER, "Petrov-IS", AD_ATTRIBUTE_SAMACCOUNTNAME) 'Поиск пользователя по всему дереву

GetADObject: ADObject

Преобразовывает (оборачивает) OLE-объект в экземпляр класса ADObject.
Параметры:
objType: Строка - тип объекта, одно из значений
  • AD_OBJECT_OU - контейнер
  • AD_OBJECT_USER - пользователь
  • AD_OBJECT_GROUP - группа
  • AD_OBJECT_COMPUTER - устройство
adObj: Variant - OLE-объект

InitObj: Variant

Получает OLE-объект MS AD по его полному пути. Если получить объект не удалось, будет выброшена ошибка AD_ERR_ADOBJECTNOTFOUND (3504)
Параметры:
objPath: String - путь к объекту в каноническом виде (CN=...)

Комментарии

Популярные сообщения из этого блога

Занимательные алгоритмы. Поиск цикла в односвязном списке

И снова про тараканов, которые иногда возникают в голове. Как-то раз, засыпая, я задумался на курьезными задачками из своей сферы деятельности (Lotus Notes), которые можно было бы задать на собеседовании, плавно перешел к воспоминаниям о своих первых собеседования, когда опыта работы еще не было. Опыт самих собеседований у меня не велик а места, где задавались действительно интересные задачи (а не задачки типа: написать сортировку массива любым известным способом) вообще равны одному - это ABBYY. Как минимум одна задачка в списке на знание и понимание классических алгоритмов, описанных в книге Дональда Кнута -  Искусство программирования .

Unit-testing object validation when validator has DI

Summary Unit test object validation when validator(s) has a dependency. For instance, we have some custom field and cross-field validators. Want to test their combination. Additionally some of validators have dependencies, injected through constructor or setters. You're not using property injection, right? Shortcut If you are just searching for an answer, here's the fast way: Declare CustomConstraintValidatorFactory that implements javax.validation.ConstraintValidatorFactory Override getInstance method and on facing your constraint validator class instantiate it Otherwise delegate validator construction to org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorFactoryImpl Build validator factory and provide it your CustomConstraintValidatorFactory Build validator, using that factory... Go to demo project on GitHub for details:  https://github.com/MrArtemAA/blog-demos/blob/master/test-validator-with-injection/src/test/java/ru/artemaa/d

Lotus Notes FAQ. 8/9 Eclipse. Как настроить уведомления о Sametime сообщениях

Н а написание данной "инструкцию" натолкнул мой коллега. Помню, первый раз сам долго искал, как отключить постоянно выпрыгивающие уведомления о новых сообщениях в Sametime. И так, речь идет о клиентах IBM Notes 8+ версии Standart (Eclipse based). Как настроить уведомления о Sametime сообщениях?