• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Запретить удаление правил

  • Автор темы azat20
  • Дата начала
A

azat20

Добрый день! Все сталкивались с тем, что правила продолжают работать после их удаления во включенном состоянии. Я решил написать что-то вроде того, чтобы на Querydocumentdelete если правило включено (Enable=1), поле Enable сбрасывалось на 0, сохранялось, а далее правило удалялось. Но почему то в почтовом шаблоне написанные мною строки в данном методе не отрабатывают... Никто не знает, как можно решить описанную проблему?
 
N

nvyush

КМК, лучше в данном случае выводить пользователю соответствующее сообщение и отменять удаление (Continue = False).
 
A

Akupaka

Все сталкивались с тем
Я не сталкивался...

Но почему то в почтовом шаблоне написанные мною строки в данном методе не отрабатывают
А ты этим шаблоном базу накрыл потом?
Открой в дизайнере накрытую базу и поищи свой код. Если есть, но не работает, то перезагрузи нотес, если все-равно не работает, попробуй убить файл cache.ndk.
Если все-равно не работает, то надо смотреть, может где-то не так написал...
 

VladSh

начинающий
Lotus Team
11.12.2009
1 786
157
BIT
78
Azat
Багов, связанных с правилами, море. Особенно с удалением.
Всё дело в том, что правила-документы - это интерфейсная штука, на самом деле сами "правила" хранятся в специальном профайле.
С удалением были баги в том, что при удалении не пересчитывался порядок следования, для этого где-то на IBM гулял специальный агент, который это (и ещё некоторые траблы) корректировал.

Если Вы хотите запретить/изменить удаление, то попробуйте разобраться с этими профайлами и/или с QueryDocumentDelete почтовой базы.
 
K

Klido

лучше в данном случае выводить пользователю соответствующее сообщение и отменять удаление (Continue = False).
:)
кнопка ВЫКЛ юзеру доступна - пусть делают все как надо...

при удалении не пересчитывался порядок следования
ну там на выключении/удалении можно посмотреть что происходит... если выключить и удалить - в целом все ОК
 
D

divankin

Как уже правильно сказали, роутер работает не по тем правилам, которые в документах, а по тем, которые хранятся в профиле CalendarProfile.
В шестом дизайне ExtMailR6 версии 6.5.4 есть код, который обрабатывает удаление правила и удаляет его из профиля. Я думаю и в более поздних версиях почтового шаблона тоже есть.

Скорей всего проблема в другом. В профиле каждому правилу соответствует поле $FilterFormula_X, где X - номер правила в папке Rules. Этот номер хранится в поле OrderNum.
В библиотеке Rules есть функция CompactMailRules, которая делает следующее: удаляет все правила в профиле, выдает номера всем правилам в папке и копирует все активные правила в профиль.
Эта функция вызывается при создании правила, при изменении порядка, при копипасте. Номера выдаются начиная с 1.
Однако есть секретной правило, по которому оповещения попадают в MiniView. У этого правила номер 0. И по неизвестным мне причинам иногда обычное правило копируется на место правила номер 0.
В результате при выключении правила, оно фактически остается в профиле и продолжает действовать.

Как понять, что это ваш случай: поставить Ytria (погуглите), открыть в SkanEz почтовую базу, открыть CalendarProfile, посмотреть, что хранится в поле $FilterFormula_0. Если не пустота и нет слова $MiniView, то удаленное правило прописалось здесь.

Что делать? Можно в CompactMailRules добавить перерасчет правила номер 0. Можно научить тех.поддержку передергивать его. В последнем случае нужно просто открыть Сервис-Параметры и на вкладке Календарь и задачи->Вывод выключить и включить галочку "Помещать документы календаря и планирования в специальное мини-представление 'Новые извещения' для обработки". (В вашем шаблоне все может называться немного по-другому, ищете поле Use_CalendarRule
 
A

azat20

КМК, лучше в данном случае выводить пользователю соответствующее сообщение и отменять удаление (Continue = False).
я хочу выводить сообщение, и ждать ответа от пользователя, если говорит удалить, то отключить правило и удалить его. Дело в том, что в Querydocumentdelete даже это окно не отображается!

Код:
Set tempcol=source.Documents
Set tempdoc=tempcol.GetFirstDocument
If Not (tempdoc Is Nothing) Then
If tempdoc.GetFirstItem("form").text="Mailrule" Then
If tempdoc.GetFirstItem("Enable").text="1" Then
If 1=ws.Prompt(2,"Ошибка удаления правила","Невозможно удалить включенное правило. Отключить его, а затем удалить?") Then
'отключаем и удаляем
Call tempdoc.ReplaceItemValue("Enable","0")
Call tempdoc.Save(True,False)
Else
Exit Sub
End If
End If
End If
End If


Я не сталкивался...
Вам очень повезло значит. У нас пользователи никак данную фичу не могут запомнить...

А ты этим шаблоном базу накрыл потом?
Сорри, тут не шаблон. Я сразу изменения в своей почтовой базе, в которой дизайн не обновляется.

Всё дело в том, что правила-документы - это интерфейсная штука, на самом деле сами "правила" хранятся в специальном профайле.Если Вы хотите запретить/изменить удаление, то попробуйте разобраться с этими профайлами и/или с QueryDocumentDelete почтовой базы.
Но ведь сами правила в виде документов хранятся в почтовой базе. С querydocumentdelete я и хочу разобраться... В других базах все работает.
 
D

divankin

Версия почтового шаблона у вас какая?
 
A

azat20

Всем спасибо за ответы! Второй раз уже сталкиваюсь с этой еще одной неприятной фичей... Код правильный, и работает верно, но так как дизайнер был запущен с это базой, querydocumentdelete не отрабатывался... Пора бы уж запомнить ;)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!