Всем привет!
Сталкивался ли кто с вопросом динамического создания/удаления агентов?
Как решался вопрос?
Сталкивался ли кто с вопросом динамического создания/удаления агентов?
Как решался вопрос?
15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby
За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.
На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.
Запись на курс до 25 апреля. Получить промодоступ ...
С порядком выполнения и сохранения кода вопросов нет.КМК, создавать можно через DXL, удалять — через NotesNoteCollection.
Также есть вариант не создавать/удалять агента, а в агенте вызывать Execute, код сохранять в документе, ноту документа передавать агенту, агент после вызова удалял бы документ.
Может это следует разнести? Один агент "живёт" постоянно, а агент по расписанию, пускающий первый, настраивается динамически. Такой подход применяют, когда в агенте используется включаемая библиотека, недоступная заказчику (при изменении расписания он не перекомпилируется).Дело в том что хотелось бы создавать агент и менять время запуска.
походу забыли doc.sign после импорта...Через DXL пробовал... но ничего не получилось. Что делал:
-по юниду взял агента;
-экспортировал в xml;
-удалил агент;
-импортировал из xml;
Результат 0. Ошибок экспорта/импорта нет. Все отрабатывает нормально
Ну так чтоб посигнить док - его надо получить. А по последнему импортированному документу ничего не возвращаетсяпоходу забыли doc.sign после импорта...
Откуда не возвращается? В чем проблема найти ноту, если вы ее только что сами импортировали? Или импорт не срабатывает и агент не появляется?Ну так чтоб посигнить док - его надо получить. А по последнему импортированному документу ничего не возвращается
Агент не импортируется.Откуда не возвращается? В чем проблема найти ноту, если вы ее только что сами импортировали? Или импорт не срабатывает и агент не появляется?
Код покажете, или будем играть в угадайку?
import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
DxlFactory.createAgent("James Bond", DxlAgent.LOTUSSCRIPT).addCodeEvent("Initialize", "Sub Initialize\n'Shaken, not stirred.\nEnd Sub").toDesignElement(agentContext.getCurrentDatabase());
} catch(Exception e) {
e.printStackTrace();
}
}
}
Код показать не хотите? Тогда продолжим читатьАгент не импортируется.
Импорт якобы происходит.. но в результате ничего не импортируется.
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim agentNote As NotesDocument
Set agentNote = getFirstAgent( db )
Call setAgentName( agentNote , "Copy of " + getAgentName(agentNote) )
Dim exporter As NotesDXLExporter, importer As NotesDXLImporter
Set exporter = session.CreateDXLExporter( agentNote )
Set importer = session.CreateDXLImporter(exporter, db)
importer.DesignImportOption = DXLIMPORTOPTION_CREATE
Call exporter.process
Print " agent created: " & getAgentName(agentNote)
End Sub
Private Function getFirstAgent(db As NotesDatabase) As NotesDocument
Dim nc As NotesNoteCollection
Set nc = db.CreateNoteCollection( False )
nc.SelectAgents = True
Call nc.BuildCollection
Set getFirstAgent = db.GetDocumentByID( nc.GetFirstNoteId )
End Function
Private Function getAgentName( agentNote As NotesDocument ) As String
getAgentName = agentNote.getItemValue("$Title")(0)
End Function
Private Sub setAgentName( agentNote As NotesDocument , title As String )
Call agentNote.ReplaceItemValue( "$Title" , title )
End Sub
Откуда не возвращается? В чем проблема найти ноту, если вы ее только что сами импортировали? Или импорт не срабатывает и агент не появляется?
Код покажете, или будем играть в угадайку?
Dim session As New NotesSession
Dim db As NotesDatabase
Dim docAgent As NotesDocument
Dim importer As NotesDXLImporter
Dim dxl As String
On Error Resume Next
dxl = |<?xml version='1.0'?>
<!DOCTYPE agent SYSTEM 'xmlschemas/domino_8_5_2.dtd'>
<agent name='tmplAgent' xmlns='http://www.lotus.com/dxl' version='8.5' maintenanceversion='2.0'
replicaid='0123456789ABCDEF' hide='v3' publicaccess='false' designerversion='8.5.2'
activatable='false'>
<trigger type='scheduled'>
<schedule type='byminutes' hours='1' minutes='0' runlocation='specific' /></trigger>
<documentset type='modified'/><code event='options'><lotusscript>
Option Public
Option Declare
</lotusscript></code><code event='initialize'><lotusscript>Sub Initialize
MessageBox "TEST!!!!!"
End Sub</lotusscript></code>
<rundata processeddocs='0' exitcode='0'>
</rundata></agent>
|
'** create a new doc using the DXL above
Set db = session.CurrentDatabase
'Set importer = session.CreateDXLImporter(dxl, db)
Set importer = session.CreateDXLImporter
importer.ReplicaRequiredForReplaceOrUpdate = False
importer.DocumentImportOption = DXLIMPORTOPTION_CREATE
Call importer.Import(dxl, db)
'Call importer.Process
Set docAgent = db.GetDocumentByID(importer.GetFirstImportedNoteId)
'** get the button from the doc we just created and append it to
'** the rich text item we were given
' Call Db.Sign( DBSIGN_DOC_DATA, False, importer.GetFirstImportedNoteId, True )
'Call docAgent.Save(True, False, True)
MessageBox importer.Log
не хватаетDesignImportOption не забыли?
importer.DesignImportOption = DXLIMPORTOPTION_CREATE
domino_8_5_M2.dtd сказал(а):<!-- Specifies the host system on which a scheduled operation runs. -->
<!-- Choices:
local: The local system
any: Any server system
choose: Choose when agent is enabled
server: A specific server specified by the runserver attribute
-->
<!ENTITY % schedule.runlocations "
local |
any |
choose |
server
">
а что же не получилось?; )Почти все получилось
Ну просто я задал вопрос... а потом понял что вопрос глупый а удалить пост уже не мог... вот и пришлось переписать сообщение15:08:2011, 11:48 - а что же не получилось?; )
28:11:2011, 20:39 - Все получилось
Путь оказался тернист
Выложили бы тут код/ссылку, может кто поспособствовал . Всё-таки задача востребованная.В нете нашел пример с использованием API, который позволяет редактировать атрибуты, но под Windows. Вот думаю переписать код под Unix, но пока нет времени
Обучение наступательной кибербезопасности в игровой форме. Начать игру!