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

Тема в разделе "Lotus - Программирование", создана пользователем seoman2, 30 мар 2015.

Метки:
  1. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Как правильно организовать всё:
    Есть лотус документ, я его выгружаю в XML-ку на винт в папочку.
    Есть криптопровайдер (надстройка для браузера, работающая с криптопро) под браузер, он открывает XML-ку с папочки винта, подписывает её.
    Потом надо подписанную XML-ку закинуть обратно в документ лотуса в атач.

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

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    RTFM
    Код (LotusScript):
    Set rtitem_body = New NotesRichTextItem( doc_mail, "Body" )
    Call rtitem_body.EmbedObject ( EMBED_ATTACHMENT, "", File_name)
     
  3. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Этот код можно в кнопочку на форме закинуть, а я хочу автоматически, чтобы как XML-ка будет подписана и сохранена в опред. папочку на винте, лотус её сам подхватывал и кидал в атач.
    А на клиенте же не запустить агента по расписанию, чтобы он "слушал" папку.
    У криптопровайдера нет никаких апи. Можно только с лотуса его запустить, параметром указать файл для подписи.
     
  4. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    1) при закрытии дока кидать этот XML - но только не в этот же док а в отдельную БД с ключом на этот док
    2) при сохранении дока
    3) по лотусиному таймеру

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

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    А как с помошью функции Timer() мониторить в папочке наличие файла с опред. именем?

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

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    короткий ответ - домино здесь сбоку
    в ф-ции домины не входит:
    -контроль ФС
    -взаимодействие со внешними свистоперделками, без АПИ
    -контроль процессов в ОС
    если эти пункты к-л реализовать самому (кучка кастылей) - то вопрос магическим образом разрешится :)
    [DOUBLEPOST=1427723007,1427722761][/DOUBLEPOST]в виндядке есть убогие свистульки по контролю ФС, но их вызов сопряжен в проганием через виндовзскрипт + КОМу
    таймер, рекомендованный выше - еще тот кастыль (можно и JS задействовать)
    про контроль и поиск процессов - я уже здесь постил
     
  7. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
    Запускаем таймер:
    В 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 для аттача.
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    @alexas1, как-то... ну не очень :)
    если хмл не один и надо обработать пачку и время обработки неизвестно
    может в виде плагина оформить...
     
  9. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Хм... То есть момент сохранения все равно ручной, верно?
    Если это так, то что мешает сделать одного агента, который состоит из 3 частей:
    1. Выгрузка в XML на диск.
    2. Вызвать подпись XML ( Можно только с лотуса его запустить, параметром указать файл для подписи. )
    3. Приаттачить подписанный XML.
    Повесить запуск этого агента в кнопку "Подписать" и все ок.
    Или я не понимаю сути?
    [DOUBLEPOST=1427727487,1427727423][/DOUBLEPOST]Зачем ждать пока файл сохранится, затем подпишется, если можно сделать все сразу?
     
  10. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    savl+
    Код как запустить внешнюю программу в Windows через LotusScript и подождать пока она выполнится публиковали уже миллион раз.
     
  11. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
    Канеш - концепт же:)
    Т.е. есть некая директория, куда попадают подписанные XML-ки. Перебираем там их все и по условию Dir$(FullPath+FileName) <> "" аттачим и киляем.
    FileName берём из сохранённого списка, который получается при детаче.
    seoman2 своим софтом хочет.
     
  12. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    А как лотусскрипт увидет, что файл подписали? Вариант с таймером?
     
  13. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    797
    Симпатии:
    78
    Обычно подпись имеет некоторую сигнатуру в конце файла и в самом LS можно анализировать наличие подписи.
    Для примера -
    ********
    ...
    10:44:00@@@
    ===
    o000000Щ†Й“пїЅ%пїЅrпїЅSZпїЅjпїЅпїЅпїЅпїЅs$пїЅпїЅпїЅ=|"+пїЅ
    .....
    По наличию "==="+crlf+"o000000" определяется что файл подписан.
     
  14. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
    По размеру.
    По хешу.
    По времени изменения.
     
  15. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Сначала я кнопкой на форме у клиента нажимаю "подписать", лотусовый док выгружается в директорию в виде файола XML, XML открывается в криптопровайдере.
    После этого, в браузерном криптопровайдере кнопкой подписывается XML-ка, и уже подписанная скидывается в папочку. Подписывается только 1 файл.
    Надо как то автоматизировать средствами лотуса: что как только подписанная XML-ка появилася в папке, закинуть её обратно в лотус документ в аттач. Файлы все стереть.
     
  16. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    @seoman2, вы утверждаете, что Можно только с лотуса его запустить, параметром указать файл для подписи.
    Что в этом случае происходит?
    Сама подпись или открывается браузер где есть кнопка?
    Что именно за криптопровайдер?
     
  17. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    797
    Симпатии:
    78
    Браузер ИЕ? В качестве версии - интересно, заведется ли криптопровайдер в форме с IE обьектом...
    Если да, то снаружи формы можно контроллировать весь процесс подписания и аттача. даже делать все это автоматом при открытии формы в клиенте))
     
  18. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
    Ну, наколенный вариант сразу просматривается:
    Кнопа на форме:
    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);
     
    #18 alexas1, 31 мар 2015
    Последнее редактирование модератором: 31 мар 2015
  19. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    что за алгоритм? - может нуегонах - этот бровсер с плугином?
     
  20. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Коллеги сделали криптопровайдер - при запуске криптопровайдера запускается вебсервер, формируется страница html с яваскприптами,
    при этом используется "криптопро plug-in", у нас это надстройка над браузером хром,
    Криптопровайдер запускается на компе с клиентом лотуса,
    Криптопровайдеру при запуске можно передать файл для открытия, путь для сохранения файла (папка)
     
    #20 seoman2, 31 мар 2015
    Последнее редактирование модератором: 31 мар 2015
Загрузка...
Похожие Темы - Подпись криптопровайдером выгруженного
  1. ToxaRat
    Ответов:
    7
    Просмотров:
    1.715
  2. ymerla91
    Ответов:
    0
    Просмотров:
    1.176
  3. webymax
    Ответов:
    0
    Просмотров:
    1.204
  4. lmike
    Ответов:
    5
    Просмотров:
    1.745
  5. xak
    Ответов:
    3
    Просмотров:
    2.619

Поделиться этой страницей