• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Агент Before New Mail Arrives

  • Автор темы Jhareg
  • Дата начала
J

Jhareg

Доброго времени суток!

Извините если вопрос повторяется. Просто ничем подобным еще не сталкивался.

Вопрос вот в чем:

Есть SCOM сообщения (уведомления о состоянии серверов), которые приходят по почте Lotus.
Эти сообщения делятся на 3 вида критичности: критическое, тревожное, информационное.
Нужно чтобы эти сообщения, сортировались и перенаправлялись другим пользователям по виду критичности.
И это все нужно сделать на клиентском приложении.

Мои действия:
Создаю агент и делаю событие до прихода почты
делаю код
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, doc2 As NotesDocument
Dim auth,subj As NotesItem

Set session = New NotesSession
Set doc = session.DocumentContext

Set auth = doc.Getitemvalue("FROM")
If auth="SCOM" Then
Set subj = doc.Getitemvalue("Subject")
If subj = "AD Op Master is inconsistent" Then
Call doc.Replaceitemvalue("SendTo","Пользователь_1")
Call doc.Replaceitemvalue("Subject", subj & " !!! Сообщение SCOM !!!")
End If
End if
Call doc.send ( True )

Но когда сохраняю пишет "You do not have execution access privileges for agent". It will not run.
Почта где тестирую своя и я там дизайнер. Агент подписал.
Не могу понять что не так помогите плиз.

Скажите еще где надо что-то надо настроить?
Просто я сам не админ а разработчик, нужно как-то обяснить нашим админам где и что делать

Большая ли разница при запуске агента на сервере?

ЗЫ: System Center Operations Manager (SCOM) (ранее Microsoft Operations Manager, MOM) — программа компании Microsoft для управления и мониторинга ИТ-сервисов, приложений, серверов
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
Jhareg
Но когда сохраняю пишет "You do not have execution access privileges for agent". It will not run.
Агент на сервере будет работать, надо на сервере права иметь на запуск.
 
J

Jhareg

А рули настроить не пробовали?

По Rules невозможно сделать выборку, т.к. необходимо делать выборку и распределять по теме сообщения.
Название темы может быть разной.


Добавлено:
Jhareg
Но когда сохраняю пишет "You do not have execution access privileges for agent". It will not run.
Агент на сервере будет работать, надо на сервере права иметь на запуск.

Не могли бы вы подробнее объяснить какие права и где задаются?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Потому что в коде ошибки.
Правильно так:
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, doc2 As NotesDocument
Dim auth,subj As String

Set session = New NotesSession
Set doc = session.DocumentContext

auth = doc.Getitemvalue("FROM")(0)
If auth="SCOM" Then
subj = doc.Getitemvalue("Subject")(0)
If subj = "AD Op Master is inconsistent" Then
Call doc.Replaceitemvalue("SendTo","Пользователь_1")
Call doc.Replaceitemvalue("Subject", subj & " !!! Сообщение SCOM !!!")
End If
End if
Call doc.send ( False )
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
И Send в конце не обязательно делать. Достаточно просто изменить получателей.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
Jhareg
Вставь обработчик ошибок в код:
Код:
Sub Initialize
On Error GoTo handler
Const FuncName = {Agent} ' имя агента

Print FuncName & " Start"

' Твой код агента

Print FuncName & " Finish"
Goto endh

handler:
Print FuncName & ": " & Err &", в стр " & Erl & " " & Error$ 'будет писать в Log.nsf
Resume endh
endh:

End Sub

Поищешь по логам потом, искать по имени агента. Чуть упростит жизнь.
 
I

ipopov

Доброго времени суток!

Извините если вопрос повторяется. Просто ничем подобным еще не сталкивался.

Вопрос вот в чем:

Есть SCOM сообщения (уведомления о состоянии серверов), которые приходят по почте Lotus.
Эти сообщения делятся на 3 вида критичности: критическое, тревожное, информационное.
Нужно чтобы эти сообщения, сортировались и перенаправлялись другим пользователям по виду критичности.
И это все нужно сделать на клиентском приложении.

Мои действия:
Создаю агент и делаю событие до прихода почты
делаю код
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, doc2 As NotesDocument
Dim auth,subj As NotesItem

Set session = New NotesSession
Set doc = session.DocumentContext

Set auth = doc.Getitemvalue("FROM")
If auth="SCOM" Then
Set subj = doc.Getitemvalue("Subject")
If subj = "AD Op Master is inconsistent" Then
Call doc.Replaceitemvalue("SendTo","Пользователь_1")
Call doc.Replaceitemvalue("Subject", subj & " !!! Сообщение SCOM !!!")
End If
End if
Call doc.send ( True )

Но когда сохраняю пишет "You do not have execution access privileges for agent". It will not run.
Почта где тестирую своя и я там дизайнер. Агент подписал.
Не могу понять что не так помогите плиз.

Скажите еще где надо что-то надо настроить?
Просто я сам не админ а разработчик, нужно как-то обяснить нашим админам где и что делать

Большая ли разница при запуске агента на сервере?

ЗЫ: System Center Operations Manager (SCOM) (ранее Microsoft Operations Manager, MOM) — программа компании Microsoft для управления и мониторинга ИТ-сервисов, приложений, серверов

На клиенте есть ECL (Execution Control List), скорее всего там у тебя руки и оторваны. Посмотри в File - Security - UserSecurity
 
J

Jhareg

Всем спасибо!
вроде все работает, но я не могу понять почему размер сообщения значительно увеличился?
раньше было 2 кб, теперь стал 100 кб
думаю это от того что я делаю reply
Код:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, doc2 As NotesDocument
Dim auth,subj As String
Dim c_subj As Integer
Set db = session.Currentdatabase
Set session = New NotesSession
Set doc = session.DocumentContext
Set doc2 = New NotesDocument (db)
auth = doc.Getitemvalue("FROM")(0)			
If auth="scom" Then
subj = doc.Getitemvalue("Subject")(0)
If InStr(1,subj,"A problem has been detected with the trust relationship between two domains") > 1 _ 
Or InStr(1,subj,"WMI Probe Module Failed Execution") >1 
Then
doc2.Subject(0) = subj & " *** КРИТИЧЕСКОЕ ***"
doc2.Body(0) = doc.Getitemvalue("Body")
doc2.SendTo(0) = "автор1, автор2, автор3" ' пользователи по списку
Call doc2.send(true)
Else
doc2.Subject(0) = subj & " *** НОВОЕ *** "
doc2.Body(0) = doc.Getitemvalue("Body")
doc2.SendTo(0) = "автор1"
End If
End If
End Sub
но код не работает. помогите
 
I

ipopov

Доброго времени суток!

Извините если вопрос повторяется. Просто ничем подобным еще не сталкивался.

Вопрос вот в чем:

Есть SCOM сообщения (уведомления о состоянии серверов), которые приходят по почте Lotus.
Эти сообщения делятся на 3 вида критичности: критическое, тревожное, информационное.
Нужно чтобы эти сообщения, сортировались и перенаправлялись другим пользователям по виду критичности.
И это все нужно сделать на клиентском приложении.

Мои действия:
Создаю агент и делаю событие до прихода почты
делаю код
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, doc2 As NotesDocument
Dim auth,subj As NotesItem

Set session = New NotesSession
Set doc = session.DocumentContext

Set auth = doc.Getitemvalue("FROM")
If auth="SCOM" Then
Set subj = doc.Getitemvalue("Subject")
If subj = "AD Op Master is inconsistent" Then
Call doc.Replaceitemvalue("SendTo","Пользователь_1")
Call doc.Replaceitemvalue("Subject", subj & " !!! Сообщение SCOM !!!")
End If
End if
Call doc.send ( True )

Но когда сохраняю пишет "You do not have execution access privileges for agent". It will not run.
Почта где тестирую своя и я там дизайнер. Агент подписал.
Не могу понять что не так помогите плиз.

Скажите еще где надо что-то надо настроить?
Просто я сам не админ а разработчик, нужно как-то обяснить нашим админам где и что делать

Большая ли разница при запуске агента на сервере?

ЗЫ: System Center Operations Manager (SCOM) (ранее Microsoft Operations Manager, MOM) — программа компании Microsoft для управления и мониторинга ИТ-сервисов, приложений, серверов

раз: права на запуск/создание агентов на сервере, закладка Security в Server Document
два: ты уже сказал
Dim session As New NotesSession
Зачем потом
Set session = New NotesSession ?!!
 
J

Jhareg

раз: права на запуск/создание агентов на сервере, закладка Security в Server Document
два: ты уже сказал
Dim session As New NotesSession
Зачем потом
Set session = New NotesSession ?!!

1) права на запуск есть
2) это уже убрал
но код все равно не отрабатывает
стоит обработчик ошибок, но ничего не показывает
как посмотреть где тормозит?
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
В логах что?
Как обработчик выглядит? Если мой ищи в Log.Nsf сервера по имени агента.
Если есть Start и Finish и без ошибок, то проблема может быть в условии:
If auth="scom" Then - просто не выполняется и идет на выход.
auth - если это имя сервера, то скорее всего ты неверно сравниваешь... Оно каноническое будет CN=..
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
создать пускалку в интерактиве (агент, с целью None)
@Command([ToolsRunMacro];"ProcessIn");
@All
где вместо "ProcessIn" имя своего маилин и отлаживать спокойно :mail:
 
J

Jhareg

В логах что?
Как обработчик выглядит? Если мой ищи в Log.Nsf сервера по имени агента.
Если есть Start и Finish и без ошибок, то проблема может быть в условии:
If auth="scom" Then - просто не выполняется и идет на выход.
auth - если это имя сервера, то скорее всего ты неверно сравниваешь... Оно каноническое будет CN=..
в логах агент запускается и вот что пишет
189, в стр 76 Illegal use of PROPERTY

76 строка это:
Код:
75:	 Then
76:			doc2.Subject(0) = subj & " *** КРИТИЧЕСКОЕ ***"
77:			doc2.Body(0) = doc.Getitemvalue("Body")
78:			doc2.SendTo(0) = "автор1, автор2, автор3" ' пользователи по списку
79:			Call doc2.send(true)
80:		Else
получается неправильно делаю присвоение темы и тело сообщении для нового документа.
это я делаю для того, чтобы размер файла при отправке не изменялся, а то получается как reply и размер соответственно увеличивается
может я что делаю не так?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Я ещё в посте #7 написал как надо делать. auth, subj должны быть типа String, а NotesItem.
 
J

Jhareg

Ричтекст-поля так не присвоишь, RTFM.
а как надо присваивать?


Добавлено:
Я ещё в посте #7 написал как надо делать. auth, subj должны быть типа String, а NotesItem.
они сейчас стоят как String

актуальный код в посте #11
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
Jhareg
Используй копирование NotesItem.
Код:
Set BodyItem = doc.GetFirstItem( "Body" )
if BodyItem is Nothing Then Error 5005, "No Body in mail" 'Это как проверка на существование, можно и убрать.
Set BodyItem2 = BodyItem.CopyItemToDocument( doc2, "Body" )
 
Мы в соцсетях:

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