SLAPD-PERL(5)

НАЗВАНИЕ

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).

new

Этот метод вызывается, когда в файле конфигурации встречается строка perlModule. Указанный в этой строке модуль импортируется командой use в интерпретатор perl, а затем для создания нового объекта вызывается метод new. Обратите внимание, что, как и с любым классом perl, может быть создано несколько экземпляров такого объекта. В качестве аргумента метод new получает имя класса.

search

Этот метод вызывается, когда от клиента поступает запрос search. Аргументы данного метода следующие:

  * ссылка на объект
  * базовое DN
  * диапазон поиска
  * политика разыменования псевдонимов
  * ограничение по размеру
  * ограничение по времени
  * строка фильтра
  * флаг возвращения только типов атрибутов (1, если установлен)
  * список атрибутов, которые требуется вернуть (может быть пустым)

Возвращаемое значение: (результирующий_код, ldif-запись, ldif-запись, ...)

compare

Этот метод вызывается, когда от клиента поступает запрос compare. Аргументы данного метода следующие:

  * ссылка на объект
  * dn
  * строка утверждения значения атрибута
modify

Этот метод вызывается, когда от клиента поступает запрос modify. Аргументы данного метода следующие:

  * ссылка на объект
  * dn
  * список, отформатированный следующим образом
    ({ "ADD" | "DELETE" | "REPLACE" },
     тип_атрибута, значение...)...
add

Этот метод вызывается, когда от клиента поступает запрос add. Аргументы данного метода следующие:

  * ссылка на объект
  * запись в строковом формате
modrdn

Этот метод вызывается, когда от клиента поступает запрос modrdn. Аргументы данного метода следующие:

  * ссылка на объект
  * dn
  * новый rdn
  * флаг удаления старого dn (1, если установлен)
delete

Этот метод вызывается, когда от клиента поступает запрос delete. Аргументы данного метода следующие:

  * ссылка на объект
  * dn
config

Этот метод вызывается каждый раз, когда в конфигурационном файле slapd.conf(5) встречается строка perlModuleConfig. Аргументы данного метода следующие:

  * ссылка на объект
  * массив аргументов в строке

Возвращаемое значение: ненулевое, если данная опция является неверной.

init

Этот метод вызывается после инициализации механизма манипуляции данными. Аргументы данного метода следующие:

  * ссылка на объект

Возвращаемое значение: ненулевое, если инициализация не удалась.

КОНФИГУРАЦИЯ

Приведённые ниже директивы slapd.conf применяются к базам данных механизма манипуляции данными PERL. То есть, они должны следовать за строкой "database perl" и находиться до последующих строк "backend" или "database". Другие относящиеся к базам данных директивы описаны в man-странице slapd.conf(5).

perlModulePath /path/to/libs

Добавляет указанный путь к переменной perl @INC.

perlModule ModName

Импортирует (`use') модуль с именем ModName из файла ModName.pm

filterSearchResults

Определяет, будут ли результаты поиска, возвращаемые механизмом манипуляции данными, рассматриваться как кандидаты, которых необходимо отфильтровать (с помощью фильтра, указанного в поисковом запросе), а не напрямую отправляться клиенту.

perlModuleConfig <аргументы>

Вызывает определённый в модуле метод 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 будет удалён.

ФАЙЛЫ

/usr/local/etc/openldap/slapd.conf

конфигурационный файл slapd по умолчанию.

СМОТРИТЕ ТАКЖЕ

slapd.conf(5), slapd(8), perl(1).

OpenLDAP 2.4.47 SLAPD-PERL(5) 2018/12/19