slapd-perl - механизм манипуляции данными для slapd perl
/usr/local/etc/openldap/slapd.conf
Механизм манипуляции данными для slapd(8) perl работает путём встраивания интерпретатора perl(1) в slapd(8). В каждом разделе базы данных perl конфигурационного файла slapd.conf(5) необходимо указать, какой модуль Perl использовать. После этого slapd создаёт новый объект Perl, который будет обрабатывать все запросы для этого конкретного экземпляра базы данных механизма манипуляции данными.
Вам необходимо создать метод для каждого из следующих действий:
* new # создаёт новый объект,
* search # выполняет поиск ldap,
* compare # производит сравнение,
* modify # модифицирует запись,
* add # добавляет запись в базу данных механизма манипуляции данными,
* modrdn # модифицирует rdn записи,
* delete # удаляет запись ldap,
* config # обрабатывает специфичные для этого модуля директивы конфигурации,
* init # вызывается после инициализации механизма манипуляции данными.
Если не определено иное, эти методы возвращают результирующий код, который будет возвращён клиенту. Нереализованные действия могут просто вернуть unwillingToPerform (53).
Этот метод вызывается, когда в файле конфигурации встречается строка perlModule. Указанный в этой строке модуль импортируется командой use в интерпретатор perl, а затем для создания нового объекта вызывается метод new. Обратите внимание, что, как и с любым классом perl, может быть создано несколько экземпляров такого объекта. В качестве аргумента метод new получает имя класса.
Этот метод вызывается, когда от клиента поступает запрос search. Аргументы данного метода следующие:
* ссылка на объект
* базовое DN
* диапазон поиска
* политика разыменования псевдонимов
* ограничение по размеру
* ограничение по времени
* строка фильтра
* флаг возвращения только типов атрибутов (1, если установлен)
* список атрибутов, которые требуется вернуть (может быть пустым)
Возвращаемое значение: (результирующий_код, ldif-запись, ldif-запись, ...)
Этот метод вызывается, когда от клиента поступает запрос compare. Аргументы данного метода следующие:
* ссылка на объект
* dn
* строка утверждения значения атрибута
Этот метод вызывается, когда от клиента поступает запрос modify. Аргументы данного метода следующие:
* ссылка на объект
* dn
* список, отформатированный следующим образом
({ "ADD" | "DELETE" | "REPLACE" },
тип_атрибута, значение...)...
Этот метод вызывается, когда от клиента поступает запрос add. Аргументы данного метода следующие:
* ссылка на объект
* запись в строковом формате
Этот метод вызывается, когда от клиента поступает запрос modrdn. Аргументы данного метода следующие:
* ссылка на объект
* dn
* новый rdn
* флаг удаления старого dn (1, если установлен)
Этот метод вызывается, когда от клиента поступает запрос delete. Аргументы данного метода следующие:
* ссылка на объект
* dn
Этот метод вызывается каждый раз, когда в конфигурационном файле slapd.conf(5) встречается строка perlModuleConfig. Аргументы данного метода следующие:
* ссылка на объект
* массив аргументов в строке
Возвращаемое значение: ненулевое, если данная опция является неверной.
Этот метод вызывается после инициализации механизма манипуляции данными. Аргументы данного метода следующие:
* ссылка на объект
Возвращаемое значение: ненулевое, если инициализация не удалась.
Приведённые ниже директивы slapd.conf применяются к базам данных механизма манипуляции данными PERL. То есть, они должны следовать за строкой "database perl" и находиться до последующих строк "backend" или "database". Другие относящиеся к базам данных директивы описаны в man-странице slapd.conf(5).
Добавляет указанный путь к переменной perl @INC.
Импортирует (`use') модуль с именем ModName из файла ModName.pm
Определяет, будут ли результаты поиска, возвращаемые механизмом манипуляции данными, рассматриваться как кандидаты, которых необходимо отфильтровать (с помощью фильтра, указанного в поисковом запросе), а не напрямую отправляться клиенту.
Вызывает определённый в модуле метод config с заданными аргументами.
Пример модуля Perl `SampleLDAP' находится в директории slapd/back-perl/ дерева исходных кодов OpenLDAP.
Механизм манипуляции данными perl не соблюдает каких-либо семантик контроля доступа, описанных в man-странице slapd.access(5); контроль доступа целиком делегируется PERL-скрипту, обрабатывающему запросы. Выполняется только проверка доступа на чтение read (=r) для псевдо-атрибута entry и других значений атрибутов записей, возвращаемых операцией search, поскольку она выполняется механизмом frontend.
Интерфейс этого механизма манипуляции данными к модулю perl МОЖЕТ измениться. Любые предложения приветствуются.
Примечание: в предыдущих версиях любые нераспознанные строки файла slapd.conf передавались в метод config модуля perl. Такое поведение является устаревшим (но все ещё допустимым для обеспечения обратной совместимости), а для вызова метода config теперь следует использовать директиву perlModuleConfig. В будущем функционал обратной совместимости по вызову метода config будет удалён.
конфигурационный файл slapd по умолчанию.
slapd.conf(5), slapd(8), perl(1).
OpenLDAP 2.4.47 | SLAPD-PERL(5) | 2018/12/19 |