Изменение имен элементов



Изменение имен элементов

Последние операции с LDAP, которые мы рассмотрим, касаются двух типов изменений элементов LDAP. Первый тип - это изменение DN- и RDN-имен. Преобразовать RDN-имя элемента просто, и эта операция поддерживается обоими модулями. Вот версия для Mozilla: : LDAP:

use Mozilla::LDAP::Conn:

$c->modifyRDN($newRDN.SoldDN.$delold) or

die "Невозможно переименовать элемент'".

$c->getErrO''St":pg(). "\n".

В приведенном отрывке все должно быть понятно, за исключением параметра $delod метода Mjai;'yRDN(). Если он равен 0, то LDAP-библиотеки удалят из элементов значения, совпадающие с измененными RDN-именами. Например, если первично в RDN-имени элемента содержался атрибут ; (от «location», местоположение), но само RDN-имя было изменено, то старый атрибут 1 элемента будет удален и останется только новое значение.

Вот эквивалентный вариант для переименования элемента в Net: : LUA:

use Net::iDAP;

$res = $c->inoddn($oldDN

newrdn => SnewRDN.

deleteoldrdn => 1);

"Невозможно переименовать, код ошибки it".

$res->code() if $ies->oede()

В действительности метод moddn() модуля Net;: LDAP может гораздо больше, чем показано в предыдущем примере. До сих пор изменялось только RDN-имя элемента, в то время как местоположение элемента в иерархии дерева каталогов оставалось прежним. В LDAP версии 3 появилась более мощная операция для переименования, позволяющая произвольным образом менять местоположение элемента в дереве каталогов. Метод moddn(), вызванный с дополнительным параметром т„ superior, предоставляет доступ к такой возможности. Если добавить параметр таким образом:

Sresult = $c->nioddn($oldDN.

newrdn => SnewRDN,

deleteoldrdn => 1,

newsuperioi" => SparentDN);

die "Невозможно переименовать, код ошибки #".

$res->code() if $res->codef).

то элемент из SoldDN будет перенесен и станет дочерним элементом DN-имени, определенного в SparentDN. Гораздо эффективнее использовать этот метод, а не последовательность add() или delete(), как требовалось раньше, для перемещения элементов в дереве каталогов, но подобная возможность поддерживается не всеми LDAP-серверами. В любом случае, если вы скрупулезно проектируете структуру дерева каталогов, вам реже придется переносить элементы с места на место.



Содержание раздела