Подпись криптопровайдером выгруженного xml

seoman2

Lotus team
17.02.2010
473
1
#1
Как правильно организовать всё:
Есть лотус документ, я его выгружаю в XML-ку на винт в папочку.
Есть криптопровайдер (надстройка для браузера, работающая с криптопро) под браузер, он открывает XML-ку с папочки винта, подписывает её.
Потом надо подписанную XML-ку закинуть обратно в документ лотуса в атач.

Как бы сделать так, чтобы Lotus клиент сам закидывал в атач подписанную XML-ку?
Вообще интересует опыт в данном вопросе.
 

savl

Lotus team
28.10.2011
2 136
105
#2
RTFM
Код:
Set rtitem_body = New NotesRichTextItem( doc_mail, "Body" )
Call rtitem_body.EmbedObject ( EMBED_ATTACHMENT, "", File_name)
 

seoman2

Lotus team
17.02.2010
473
1
#3
Этот код можно в кнопочку на форме закинуть, а я хочу автоматически, чтобы как XML-ка будет подписана и сохранена в опред. папочку на винте, лотус её сам подхватывал и кидал в атач.
А на клиенте же не запустить агента по расписанию, чтобы он "слушал" папку.
У криптопровайдера нет никаких апи. Можно только с лотуса его запустить, параметром указать файл для подписи.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 233
18
#4
1) при закрытии дока кидать этот XML - но только не в этот же док а в отдельную БД с ключом на этот док
2) при сохранении дока
3) по лотусиному таймеру

так как док ты будешь подписывать множество раз, а история подписания всех будет важна всегда
 

seoman2

Lotus team
17.02.2010
473
1
#5
А как с помошью функции Timer() мониторить в папочке наличие файла с опред. именем?

1) при закрытии дока кидать этот XML - но только не в этот же док а в отдельную БД с ключом на этот док
- можно поподробнее? не понял.

Интересен опыт форумчан по работе лотус + внешний криптопровайдер.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 599
277
#6
короткий ответ - домино здесь сбоку
в ф-ции домины не входит:
-контроль ФС
-взаимодействие со внешними свистоперделками, без АПИ
-контроль процессов в ОС
если эти пункты к-л реализовать самому (кучка кастылей) - то вопрос магическим образом разрешится :)
[DOUBLEPOST=1427723007,1427722761][/DOUBLEPOST]в виндядке есть убогие свистульки по контролю ФС, но их вызов сопряжен в проганием через виндовзскрипт + КОМу
таймер, рекомендованный выше - еще тот кастыль (можно и JS задействовать)
про контроль и поиск процессов - я уже здесь постил
 

alexas1

Lotus team
10.04.2014
734
149
#7
А как с помошью функции Timer() мониторить в папочке наличие файла с опред. именем?
Запускаем таймер:
В Postopen Database Script -
Set TimerG = New NotesTimer(60) 'чекаем ежеминутно
On Event Alarm From TimerG Call FileExists(MyFile)

Function FileExists(sFileName As String) As Integer
Dim iPos As Integer, iPrevPos As Integer
Dim sFile As String 'имя с путём
iPos = 0
Do
iPrevPos = iPos
iPos = Instr(iPos + 1, sFileName, "\")
Loop Until iPos = 0
iPos = iPrevPos
sFile = Right$(sFileName, Len(sFileName) - iPos)
If Dir$(sFileName) = sFile Then
FileExists = True
Else
FileExists = False
End If
End Function
По результату аттачим в док.
---------------------
JS таймер для проверки лучше. Чекнул - нажал JS-ом кнопку с LS для аттача.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 599
277
#8
@alexas1, как-то... ну не очень :)
если хмл не один и надо обработать пачку и время обработки неизвестно
может в виде плагина оформить...
 

savl

Lotus team
28.10.2011
2 136
105
#9
Этот код можно в кнопочку на форме закинуть, а я хочу автоматически, чтобы как XML-ка будет подписана и сохранена в опред. папочку на винте, лотус её сам подхватывал и кидал в атач.
А на клиенте же не запустить агента по расписанию, чтобы он "слушал" папку.
У криптопровайдера нет никаких апи. Можно только с лотуса его запустить, параметром указать файл для подписи.
Хм... То есть момент сохранения все равно ручной, верно?
Если это так, то что мешает сделать одного агента, который состоит из 3 частей:
1. Выгрузка в XML на диск.
2. Вызвать подпись XML ( Можно только с лотуса его запустить, параметром указать файл для подписи. )
3. Приаттачить подписанный XML.
Повесить запуск этого агента в кнопку "Подписать" и все ок.
Или я не понимаю сути?
[DOUBLEPOST=1427727487,1427727423][/DOUBLEPOST]Зачем ждать пока файл сохранится, затем подпишется, если можно сделать все сразу?
 

garrick

Lotus team
26.10.2009
911
61
#10
savl+
Код как запустить внешнюю программу в Windows через LotusScript и подождать пока она выполнится публиковали уже миллион раз.
 

alexas1

Lotus team
10.04.2014
734
149
#11
Канеш - концепт же:)
XML-а будет подписана и сохранена в опред. папочку на винте
Т.е. есть некая директория, куда попадают подписанные XML-ки. Перебираем там их все и по условию Dir$(FullPath+FileName) <> "" аттачим и киляем.
FileName берём из сохранённого списка, который получается при детаче. seoman2 своим софтом хочет.
 

rinsk

Lotus team
12.11.2009
904
44
#13
А как лотусскрипт увидет, что файл подписали?
Обычно подпись имеет некоторую сигнатуру в конце файла и в самом LS можно анализировать наличие подписи.
Для примера -
********
...
10:44:00@@@
===
o000000Щ†Й“пїЅ%пїЅrпїЅSZпїЅjпїЅпїЅпїЅпїЅs$пїЅпїЅпїЅ=|"+пїЅ
.....
По наличию "==="+crlf+"o000000" определяется что файл подписан.
 

seoman2

Lotus team
17.02.2010
473
1
#15
Т.е. есть некая директория, куда попадают подписанные XML-ки.
Сначала я кнопкой на форме у клиента нажимаю "подписать", лотусовый док выгружается в директорию в виде файола XML, XML открывается в криптопровайдере.
После этого, в браузерном криптопровайдере кнопкой подписывается XML-ка, и уже подписанная скидывается в папочку. Подписывается только 1 файл.
Надо как то автоматизировать средствами лотуса: что как только подписанная XML-ка появилася в папке, закинуть её обратно в лотус документ в аттач. Файлы все стереть.
 

savl

Lotus team
28.10.2011
2 136
105
#16
@seoman2, вы утверждаете, что Можно только с лотуса его запустить, параметром указать файл для подписи.
Что в этом случае происходит?
Сама подпись или открывается браузер где есть кнопка?
Что именно за криптопровайдер?
 

rinsk

Lotus team
12.11.2009
904
44
#17
браузерном криптопровайдере
Браузер ИЕ? В качестве версии - интересно, заведется ли криптопровайдер в форме с IE обьектом...
Если да, то снаружи формы можно контроллировать весь процесс подписания и аттача. даже делать все это автоматом при открытии формы в клиенте))
 

alexas1

Lotus team
10.04.2014
734
149
#18
Сначала я кнопкой на форме у клиента нажимаю "подписать", лотусовый док выгружается в директорию в виде файола XML, XML открывается в криптопровайдере.
После этого, в браузерном криптопровайдере кнопкой подписывается XML-ка, и уже подписанная скидывается в папочку. Подписывается только 1 файл.
Надо как то автоматизировать средствами лотуса: что как только подписанная XML-ка появилася в папке, закинуть её обратно в лотус документ в аттач. Файлы все стереть.
Ну, наколенный вариант сразу просматривается:
Кнопа на форме:
1 выгружает файл
2 берёт его размер и запоминает
3 запускает таймер и чекает файл на изменение размера (хоть ежесекундно): размер изменился - значит подписан. Берёт файл и аттачит, затем удаляет. Если хочется - прочти сигнатуру, как rinck писал.

Dir - наличие файла
Filelen() - размер
Open "path+name" For Input As fileNum% - открываем (для чека сигнатуры)
Kill - удаляем
==================
ЗЫ
Лучче использовать JS таймер. Он будет давить на кнопу, которая чекает и аттачит взад.
var f = document.forms[0];
var intID = setInterval("f.КнопаЧек.click() ",1000);
когда свершилось - глушим таймер: clearInterval(intID);
 
Последнее редактирование модератором:

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 599
277
#19
что за алгоритм? - может нуегонах - этот бровсер с плугином?
 

seoman2

Lotus team
17.02.2010
473
1
#20
Коллеги сделали криптопровайдер - при запуске криптопровайдера запускается вебсервер, формируется страница html с яваскприптами,
при этом используется "криптопро plug-in", у нас это надстройка над браузером хром,
Криптопровайдер запускается на компе с клиентом лотуса,
Криптопровайдеру при запуске можно передать файл для открытия, путь для сохранения файла (папка)
 
Последнее редактирование модератором: