суббота, 10 октября 2009 г.

Lotus: меняем домен 3-го уровня…

«Такие вопросы с кандачка не решаются.
Нам надо посоветоваться с товарищами.
Зайдите на недельке!»



Уж так сложилось, что пришлось в «Доменной Адресной Книге» поменять у всех юзеров домен третьего уровня. Задача была поставлена так: внешнее мыло должно быть новым, но с возможностью получения почты в Lotus Notes из вне со старым e-mail.

Суть задания проста — нужен Агент, который бы в names.nsf поменял бы поле InternetAddress, при этом предыдущее значение занес бы в поле ShortName.



Первое, что пришло в голову — «собачий язык». Это достаточно просто и достаточно быстро (возможно, LotusScript пошустрее будет, но…).

(скипнуто все про «что и как и почему»)

Обзовем агента «Admin_Only\Change Internet E-mail» и пусть он работает только по выделенным элементам AK и вызывается из меню «Actions» (подменю «Admin_Only»). Агент превращает IIvanov@old1.domain.ru в IIvanov@new1.domain.ruPPetrov@old2.domain.ru в PPetrov@new2.domain.ru), оставляя возможность получать мыло на старый адрес (мы ведь третьим уровнем домена рулим сами ;-)).

Код («наколеночный вариант» — достаточно прост, но дело свое делает):
RFCAddr0:="old1.domain.ru" : "old2.domain.ru";
RFCAddr1:="new1.domain.ru" : "new2.domain.ru";

pos := @Member (@Right(InternetAddress;"@" ) ; RFCAddr0 );

@If( pos > 0 ;
@Do(
@SetField("ShortName" ; @Explode(@Implode(ShortName ; ";") + ";" + InternetAddress; ";") );
@SetField("InternetAddress" ; @Left(InternetAddress;"@" ) + "@" + @Subset(@Subset(RFCAddr1; pos ); -1) );
@Success
) ;
@Success
);

Комментариев нет:

Отправить комментарий