Интерактивная система просмотра системных руководств (man-ов)
slapo-retcode (5)
>> slapo-retcode (5) ( Русские man: Форматы файлов )
НАЗВАНИЕ
slapo-retcode - наложение генерации результирующих кодов для slapd
ОБЗОР
/usr/local/etc/openldap/slapd.conf
ОПИСАНИЕ
Наложение
slapd(8)
retcode
полезно для тестирования поведения клиентов при возникновении сгенерированных сервером ошибочных или
необычных ответов, например, кодов ошибок, отсылок, чрезмерного времени отклика и т.п.
Ошибочные ответы генерируются в соответствии с различными стратегиями.
Согласно первой стратегии, все операции, нацеленные на определённое конфигурируемое поддерево,
приводят к поиску объекта, связанного с запрашиваемым DN, и проверке этого объекта на наличие данных
кода возврата: кода ответа, а также опциональных полей (текстового сообщения, настраиваемой задержки,
поля matched DN и, если код ответа был "referral", отсылки (или списка отсылок)).
В файле retcode.conf представлены широко известные коды ответов из документов, определяющих
стандарты. Этот файл может быть включён после инициализации экземпляра данного наложения.
Во втором режиме при возвращении в качестве промежуточных ответов на поисковый запрос объектов,
построенных на объектных классах, унаследованных от errAbsObject, таких как errObject
или errAuxObject, они преобразуются в ответ, обусловленный содержимым этих объектов.
В третьем режиме в базе данных, к которой применяется наложение, ищутся объекты, построенные на
объектных классах, унаследованных от errAbsObject; в случае нахождения таких объектов, их
содержимое используется для вычисления соответствующего ответа.
Данное поведение отключается путём использования элемента управления manageDSAit (RFC 3296);
в этом случае результирующий объект, независимо от того, присутствует ли он в каталоге, динамически
генерируется наложением или содержится в запросе, обрабатывается как обычно.
Специфичные для наложения
retcode
директивы конфигурации должны иметь префикс
retcode-,
во избежание конфликтов с директивами базы данных, к которой применяется это наложение, или с другими
наложениями, применяемыми к той же базе данных. Для конфигурации наложения могут быть использованы
следующие директивы:
retcode-parent <DN>
Эта директива определяет родительское DN поддерева, где будут находиться динамически сгенерированные
записи. Если она не задана, используется суффикс базы данных, к которой применяется наложение.
Динамически сгенерированная запись, расположенная в поддереве retcode-parent. В качестве
errCode указывается номер кода ответа; он может задаваться в любом формате, который поддерживает
strtol(3).
Опциональное поле oplist представляет собой список операций, вызов которых приведёт к генерации
кода ответа; при его отсутствии действие директивы распространяется на все операции. Параметр
matched представляет собой "совпавшее" DN, которое будет возвращено вместе с ошибкой, а
параметр text - опциональное диагностическое сообщение. Параметр ref разрешено использовать
только для кода возврата referral. Задание параметра sleeptime приведёт к тому, что
slapd(8)
выполнит задержку перед обработкой операции на указанное количество секунд. Параметр unsolicited
может быть использован для возврата определённых в RFC 4511 сообщений произвольных уведомлений; если
указанный в этом параметре OID отличен от "0", генерируется расширенный ответ с добавлением
опциональных данных data. Если в параметре flags содержится disconnect или
pre-disconnect,
slapd(8)
выполнит внезапное разъединение без отправки уведомления; при post-disconnect разъединение
произойдёт непосредственно после отправки положенного ответа.
retcode-indir
Включает использование хранимых в каталоге объектов с объектным классом errAbsObject. Это может
привести к большому количеству излишней нагрузки на каталог.
retcode-sleep [-]<n>
Определяет время задержки в секундах перед фактической обработкой какой-либо операции. Если указано
отрицательное число, в качестве времени задержки используется случайное количество секунд в
промежутке от нуля до абсолютного значения аргумента данной директивы.
НАБОР СХЕМЫ ДАННЫХ
Наложение
retcode
использует описанный ниже набор схемы данных "return code". Этот набор схемы специально разработан
для использования с данным наложением и для других целей не предназначен. Также имейте ввиду, что
работа над этим набором схемы продолжается, и потому изменения могут вноситься без уведомления.
Набор схемы автоматически загружается наложением.
Данный набор схемы включает несколько объектных классов и связанных с ними типов атрибутов, которые
описаны ниже.
Время задержки, по прошествии которой ответ фактически возвращается клиенту:
( 1.3.6.1.4.1.4203.666.11.4.1.4
NAME ( 'errSleepTime' )
DESC 'Time to wait before returning the error'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )
Возвращаемое клиенту "совпавшее" DN:
( 1.3.6.1.4.1.4203.666.11.4.1.5
NAME ( 'errMatchedDN' )
DESC 'Value to be returned as matched DN'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
SINGLE-VALUE )
OID, который требуется вернуть в качестве OID расширенного ответа в определённых в RFC 4511 ответах
произвольных уведомлений (при значении "0" генерируется стандартный ответ, в котором идентификатор
сообщения messageID установлен в 0):
( 1.3.6.1.4.1.4203.666.11.4.1.6
NAME ( 'errUnsolicitedOID' )
DESC 'OID to be returned within unsolicited response'
EQUALITY objectIdentifierMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
SINGLE-VALUE )
Строка октетов, которую требуется вернуть в качестве данных в определённом в RFC 4511 ответе
произвольного уведомления:
( 1.3.6.1.4.1.4203.666.11.4.1.7
NAME ( 'errUnsolicitedData' )
DESC 'Data to be returned within unsolicited response'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
SINGLE-VALUE )
Если значение этого атрибута TRUE,
slapd(8)
производит внезапное отключение без уведомления; если FALSE, он отключается по мере необходимости
после отправки ответа:
( 1.3.6.1.4.1.4203.666.11.4.1.8
NAME ( 'errDisconnect' )
DESC 'Disconnect without notice'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
SINGLE-VALUE )
Абстрактный класс, наличие которого вызывает срабатывание наложения:
( 1.3.6.1.4.1.4203.666.11.4.3.0
NAME ( 'errAbsObject' )
SUP top ABSTRACT
MUST ( errCode )
MAY ( cn $ description $ errOp $ errText $ errSleepTime
$ errMatchedDN ) )
Автономный структурный объектный класс для объекта данных, специально созданного для возврата
ответного сообщения:
( 1.3.6.1.4.1.4203.666.11.4.3.1
NAME ( 'errObject' )
SUP errAbsObject STRUCTURAL )
Вспомогательный объектный класс, предназначенный для изменения поведения существующих объектов:
( 1.3.6.1.4.1.4203.666.11.4.3.2
NAME ( 'errAuxObject' )
SUP errAbsObject AUXILIARY )
ПРИМЕР
overlay retcode
retcode-parent "ou=RetCodes,dc=example,dc=com"
# retcode.conf можно найти в директории tests/data/ дерева исходных кодов
include ./retcode.conf
# Подождать 10 секунд, затем вернуть success (0x00)
retcode-item "cn=Success after 10 seconds" 0x00 sleeptime=10
# Подождать 10 секунд, затем вернуть timelimitExceeded (0x03)
retcode-item "cn=Timelimit after 10 seconds" 0x03 sleeptime=10