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, если установлен)
* список атрибутов, которые требуется вернуть (может быть пустым)
Этот метод вызывается, когда от клиента поступает запрос 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 будет удалён.