.. _gl3_browser_plugin: Плагин ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :term:`Плагин <Плагин>` Gl3BrowserPlugin необходим для обеспечения функциональности, требующей доступа к контексту операционной системы, являющейся хостом для запущенного браузера. Без плагина веб-приложение ограничено песочницей, предоставляемой браузером, и не имеет доступа к окружению операционной системы. Функциональность и особенности API плагина ------------------------------------------------ При установке плагин регистрирует себя в двух разных транспортных механизмах, через которые может независимо получать :term:`команды <Команда>`: * Как обработчик на хосте сообщений от браузерного `Native messaging `_. Кроме обработки :ref:`специфицируемых команд ` данных механизм используется для обеспечения дуплексного канала связи при работе с последовательными портами через API :term:`AS`. .. Warning:: Для взаимодействия веб клиента AS с плагином по механизму нативных сообщений требуется установленное :ref:`браузерное расширение ` * Как обработчик специального `протокола `_ ``gs-global3-cmd`` uri ссылок. .. Warning:: Обработка протокола ``gs-global3-cmd`` производится только в :term:`ОС` Windows. .. Warning:: Протокол позволяет взаимодействовать с плагином без расширения, но браузер показывает окно с предупреждением при каждом переходе по ссылке URI, содержащей специальный протокол, для обработки которого зарегистрировано нативное приложение в ОС. .. tip:: Чтобы проверить версию установленного плагина, используя протокол ``gs-global3-cmd``, в адресной строке введите ``gs-global3-cmd:version``. После выполнения команды будет показан диалог с номером версии .. seealso:: * :java:type:`API работы с плагином через интерфейс CoreBrowserCmd ` * :java:ref:`API работы с последовательными портами через интерфейс CoreSerialManager ` Требования -------------- :term:`ОС`: - Windows 7 и выше - ALT Linux p10.2 и выше - Astra Linux .. seealso:: :ref:`command_support_table` .. _plugin_supported_commands: Список поддерживаемых команд --------------------------------- Набор команд ``edit`` ```````````````````````````````````````````` Команда ``local`` ~~~~~~~~~~~~~~~~~~~ Команда ``edit.local`` позволяет редактировать файлы, расположенные на компьютере пользователя, с помощью редактора по умолчанию. .. code-block:: json :caption: Формат команды { "cmd":"edit", "args": { "type":"local", "file": "%file_path" } } .. versionadded:: Gl3BrowserPlugin_0.8.1 .. versionchanged:: Gl3BrowserPlugin_0.19.1 Добавлена поддержка в Linux .. option:: file_path Имя редактируемого файла .. seealso:: ``edit.local`` обертка над :ref:`plugin_shellexec` с параметром ``wait == true``. Все ограничения наследуются. Команда ``remote`` ~~~~~~~~~~~~~~~~~~~ Команда ``edit.remote`` позволяет редактировать файлы, расположенные на сервере приложений, с помощью редактора по умолчанию. .. code-block:: json :caption: Формат команды { "cmd":"edit", "args": { "type":"remote", "file_name":"%file_name", "file_ext":"%file_ext", "download_url": "%download_url", "download_header": {"Authorization": "Bearer {{.AccessToken}}"}, "upload_type":"form", "upload_option":{"field_name":"%field_name"}, "upload_url": "%upload_url" "upload_header": {"Authorization": "Bearer {{.AccessToken}}"} } } .. versionadded:: Gl3BrowserPlugin_0.8.1 .. option:: file_name Имя редактируемого файла .. option:: file_ext Расширение редактируемого файла .. option:: download_url Url для временной загрузки файла на машину клиента .. note:: ``download_url`` пишется на языке `golang\\text\\temp `_ .. option:: upload_url Url для выгрузки отредактированного файла на сервер приложений .. note:: ``upload_url`` пишется на языке `golang\\text\\temp `_ .. option:: upload_option В этом параметре задаётся `field_name`, который используется в качестве имени заголовка POST-запроса выгрузки файла .. seealso:: ``edit.remote`` обертка над :ref:`plugin_shellexec` с параметром ``wait == true``. Все ограничения наследуются. .. code-block:: json :caption: Пример команды { "cmd":"edit", "args": { "type":"remote", "file_name":"%file_name", "file_ext":"%file_ext", "download_url": "{{.SrvUrlString}}/app/sys/rest/ss/pkg/Btk_FileRestPkg/ID_FILE=id", "download_header": {"Authorization": "Bearer {{.AccessToken}}"}, "upload_type":"form", "upload_option":{"field_name":"output_file.txt"}, "upload_url": "{{.SrvUrlString}}/app/sys/rest/ss/pkg/Btk_FileRestPkg/ID_FILE=id&CMD_ID={{.CmdID}}" "upload_header": {"Authorization": "Bearer {{.AccessToken}}"} } } Набор команд ``file`` `````````````````````````````````````` Набор команд ``file`` позволяет выполнять операции с использованием файловой системы пользователя Команда ``gettempfilename`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``gettempfilename`` возвращает уникальное имя во временном каталоге ОС. .. code-block:: json :caption: Формат команды { "cmd": "file", "args": { "cmd": "gettempfilename", "prefix": "%prefix", "suffix": "%suffix" } } .. versionadded:: Gl3BrowserPlugin_0.9.0 .. versionchanged:: Gl3BrowserPlugin_0.19.1 Добавлена поддержка в Linux .. option:: prefix Префикс имени файла .. option:: suffix Окончание имени файла с расширением Команда ``downloadfile`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``downloadfile`` сохраняет файл на клиенте и возвращает путь к сохранённому файлу на диске .. code-block:: json :caption: Формат команды { "cmd": "file", "args": { "cmd": "downloadfile", "filename": "%filename%", "download_url": "%download_url", "download_header": {"Authorization": "Bearer {{.AccessToken}}"} } } .. versionadded:: Gl3BrowserPlugin_0.9.0 .. versionchanged:: Gl3BrowserPlugin_0.19.1 Добавлена поддержка в Linux .. option:: filename Имя файла на диске, куда будет произведено сохранение. Если передан относительный путь, то файл будет сохранён во временной папке ОС .. option:: download_url Url для загрузки файла .. note:: ``download_url`` пишется на языке `golang\\text\\temp `_ Команда ``uploadfile`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``uploadfile`` выгружает файл с переданным именем с клиента на сервер .. code-block:: json :caption: Формат команды { "cmd": "file", "args": { "cmd": "uploadfile", "filename": "%filename%", "upload_type": "form", "upload_option": {"field_name":"%field_name%"}, "upload_url": "%upload_url%", "upload_header": {"Authorization": "Bearer {{.AccessToken}}"}, } } .. versionadded:: Gl3BrowserPlugin_0.18.0 .. versionchanged:: Gl3BrowserPlugin_0.19.1 Добавлена поддержка в Linux .. option:: filename Полное имя выгружаемого файла на диске. Если передан относительный путь, то файл будет искаться во временной папке ОС .. option:: field_name Формальный параметр ``name`` заголовка Content-Disposition HTTP-ответа, в котором указывается имя HTML-поля. Можно указать произвольно .. option:: upload_url Url для выгрузки файла .. note:: ``upload_url``, значение ``upload_header``, пишутся на языке `golang\\text\\temp `_ .. code-block:: json :caption: Пример команды { "cmd": "file", "args": { "cmd": "uploadfile", "filename": "C:\\test\\test.docx", "upload_type": "form", "upload_option": {"field_name":"file"}, "upload_url": "http://pgtest/app/sys/rest/ss/pkg/Btk_FileRestPkg/createFile", "upload_header": {"Authorization": "Bearer {{.AccessToken}}"}, } } .. _plugin_shellexec: Команда ``shellexec`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``shellexec`` открывает файл с помощью приложения по умолчанию, зарегистрированного в системе для данного типа файлов, или запускает исполняемый файл на выполнение. .. code-block:: :caption: Формат команды { "cmd": "file", "args": { "cmd": "shellexec", "filename": "%filename%", "wait": true | false, "params": "%params" } } .. versionadded:: Gl3BrowserPlugin_0.9.0 .. versionchanged:: Gl3BrowserPlugin_0.19.1 Добавлена поддержка команды в Linux .. versionchanged:: Gl3BrowserPlugin_0.19.1 Добавлена поддержка пользовательских обработчиков .. option:: filename Полное имя открываемого или исполняемого файла на диске .. list-table:: Поддержка по операционным системам :widths: 5 20 :header-rows: 1 * - ОС - Поддержка * - Windows - Открытие файлов ``doc``, ``docm``, ``docx``, ``dot``, ``dotx``, ``wbk`` производится редактором, который зарегистрируется в системе как :term:`OLE` объект ``Word.Application`` (Microsoft Office, Libre Office, Open Office) * - Linux - * Открытие файлов ``docx`` и ``xlsx`` производится исключительно установленным в системе LibreOffice * Приложение по умолчанию выбирается и вызывается утилитой ОС :program:`xdg-open` .. option:: wait Флаг ожидания завершения операции над файлом перед дальнейшим выполнением .. warning:: Ожидание возможно не для всех приложений и расширений. .. list-table:: Поддержка по операционным системам :widths: 5 20 :header-rows: 1 * - ОС - Поддержка * - Windows - * Для файлов, для редактирование которых создается новый единственный :term:`процесс <Процесс>`. * Для ``.doc``, ``.docm``, ``.docx``, ``.dot``, ``.dotx``, ``.wbk`` * - Linux - * Для файлов ``docx`` и ``xlsx`` и при установленном LibreOffice. * Для исполнения скриптов с расширением sh и исполняемых файлов без расширения. .. option:: params Параметры командной строки, передаваемые исполняемому файлу. .. Note:: При открытии файла приложением по умолчанию передача аргументов не выполняется. .. list-table:: Поддержка по операционным системам :widths: 5 20 :header-rows: 1 * - ОС - Поддержка * - Windows - Передача аргументов не поддерживается * - Linux - Передача аргументов происходит только в скрипты sh и исполняемые файлы без расширения. .. rubric:: Пользовательские обработчики В Linux открытие специфичных файлов или запуск на исполнение плагином выполняется путем использования обработчиков, зарегистрированных в файле :file:`config.handlers.default.ini`. Для любых типов файлов можно объявить пользовательские обработчики в файле :file:`config.handlers.user.ini` (если файл отсутствует, его следует создать рядом с :file:`config.handlers.default.ini`). .. _plugin_open_path: Команда ``openpath`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``openpath`` позволяет открывать сетевые и локальные ресурсы (файлы и каталоги) с помощью приложений по умолчанию .. note:: Данная команда используется сервером приложений для открытия сетевых ресурсов по клику по ссылке в ячейке списка .. seealso:: :ref:`Редактор гиперссылки (etHyperLink) ` .. code-block:: :caption: Формат команды { "cmd": "file", "args": { "cmd": "openpath", "path": "%path%" } } .. versionadded:: Gl3BrowserPlugin_0.12.0 .. option:: path путь к :term:`сетевому ` или локальному ресурсу .. code-block:: json :caption: Пример команды { "cmd": "file", "args": { "cmd": "openpath", "path": "\\s32\Обучение" } } .. _gs3_browsercmd_command_print: Команда ``print`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``print`` выполняет печать документа по ``%download_url%`` с именем ``%filename%`` на принтере по умолчанию. Для печати используется приложение, ассоциированное с типом переданного файла, и его зарегистрированная в реестре Windows команда `print `__. .. code-block:: json :caption: Формат команды { "cmd": "file", "args": { "cmd": "print", "filename": "%filename%", "download_url": "%download_url%", "download_header": {"Authorization": "Bearer {{.AccessToken}}"}, } } .. versionadded:: Gl3BrowserPlugin_0.13.0 .. option:: filename Имя файла, который будет распечатан. Используется для определения типа документа, а также может выводиться при печати. .. option:: download_url Url для загрузки файла .. note:: ``download_url`` пишется на языке `golang\\text\\temp `_ .. code-block:: json :caption: Пример команды { "cmd": "file", "args": { "cmd": "print", "filename": "report.pdf", "download_url": "http://globalfiles/f4545g4w32q21324cx4", "download_header": {"Authorization": "Bearer {{.AccessToken}}"}, } } Команда ``askfilename`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``askfilename`` отображает окно выбора файлов и после их выбора пользователем возвращает наборы полных путей к выбранным файлам. При выборе нескольких файлов имена разделяются переводом строки .. note:: Если пользователь в диалоге выбора файла нажмёт "Отмена", будет возвращена пустая строка .. code-block:: :caption: Формат команды { "cmd": "file", "args": { "cmd": "askfilename", "multiselect": true | false, "initialdir": "%initialdir%" } } .. versionadded:: Gl3BrowserPlugin_0.14.0 .. option:: multiselect Флаг доступности выбора сразу нескольких файлов в диалоге .. option:: initialdir Путь к папке по умолчанию, т.е. каталог, который будет открыт в диалоге .. code-block:: json :caption: Пример команды { "cmd": "file", "args": { "cmd": "askfilename", "multiselect": true, "initialdir": "d:\\tmp" } } Команда ``askfoldername`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``askfoldername`` отображает окно выбора папки и если пользователь осуществил выбор то возвращает полный путь до выбранной папки. .. note:: Если пользователь в диалоге выбора файла нажмёт "Отмена", будет возвращена пустая строка .. code-block:: :caption: Формат команды { "cmd": "file", "args": { "cmd": "askfoldername", "initialdir": "%initialdir%", "caption": "%caption%" } } .. versionadded:: Gl3BrowserPlugin_0.19.4 .. option:: initialdir Путь к папке по умолчанию, т.е. каталог, который будет открыт в диалоге .. option:: caption Необязательный параметр, текст отображается в диалоге выбора в поле описания. .. code-block:: json :caption: Пример команды { "cmd": "file", "args": { "cmd": "askfoldername", "initialdir": "с:\\docs", "caption": "Выбор каталога" } } Команда ``getdirfilelist`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда getdirfilelist возвращает список полных имен файлов, содержащихся в указанном каталоге (Path). Имена файлов разделяются переводом строки. .. code-block:: :caption: Формат команды { "cmd": "file", "args": { "cmd": "getdirfilelist", "path": "%path%" } } .. versionadded:: Gl3BrowserPlugin_0.19.4 .. option:: path Путь к каталогу .. code-block:: json :caption: Пример команды { "cmd": "file", "args": { "cmd": "getdirfilelist", "path": "c:\\docs\\income" } } Набор команд ``crypto`` ```````````````````````````````````````` Набор команд ``crypto`` позволяет выполнять команды взаимодействия с криптопровайдером с помощью :term:`криптоутилиты <Утилита>` `GlobalCryptoPlugin `_ Команда ``sign`` (deprecated) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда `sign` позволяет :term:`подписывать <ЭЦП>` файлы, расположенные на сервере приложений. Подпись производится с помощью личного :term:`сертификата <Цифровой сертификат>` клиента .. code-block:: :caption: Формат команды { "cmd":"crypto", "args":{ "cmd": "sign", "download_url": "%download_url", "download_header": %download_header, "upload_type": "form", "upload_option": {"field_name":"%field_name"}, "upload_url": "%upload_url", "upload_header": %upload_header, "useCertSelectionDialog": true|false, "certId": "%certId" } } .. deprecated:: Gl3BrowserPlugin_0.10.1 .. option:: download_url Url к zip-архиву с данными для подписи. Архив должен содержать коллекцию каталогов с одним файлом в каждом из них; название каталога - id подписываемого файла в этом каталоге: .. code-block:: none id1 (Папка с идентификатором файла в ней) data.bin (Данные для подписи) id2 data.bin id3 и т.д. .. note:: ``download_url`` пишется на языке `golang\\text\\temp `_ .. option:: upload_url Url для выгрузки zip-архива с подписанными данными. Архив содержит коллекцию каталогов с одним файлом в каждом из них; название каталога - id подписанного файла в этом каталоге: .. code-block:: none :caption: Структура архива id1 (Папка с идентификатором файла в ней) signed.bin (Данные с подписью) id2 signed.bin id3 и т.д. .. note:: ``upload_url`` пишется на языке `golang\\text\\temp `_ .. option:: useCertSelectionDialog Флаг необходимости открытия диалога для выбора сертификата вручную .. option:: certId id сертификата .. code-block:: json :caption: Пример команды { "cmd":"crypto", "args":{ "cmd": "sign", "download_url": "{{.SrvUrlString}}/app/sys/rest/ss/pkg/Btk_FileRestPkg/ID_FILE=id", "download_header": {"Authorization": "Bearer {{.AccessToken}}"}, "upload_type": "form", "upload_option": {"field_name":"output.zip"}, "upload_url": "{{.SrvUrlString}}/app/sys/rest/ss/pkg/Btk_FileRestPkg/ID_FILE=id&CMD_ID={{.CmdID}}", "upload_header": {"Authorization": "Bearer {{.AccessToken}}"}, "useCertSelectionDialog": false, "certId": "some_cert_id" } } Команда ``sign2`` ~~~~~~~~~~~~~~~~~~~~ Команда ``sign2`` позволяет подписывать файлы, расположенные на сервере приложений. Подпись производится с помощью личного :term:`сертификата <Цифровой сертификат>` клиента .. code-block:: :caption: Формат команды { "cmd":"crypto", "args":{ "cmd": "sign2", "download_url": "%download_url", "download_header": %download_header, "upload_type": "form", "upload_option": {"field_name":"%field_name"}, "upload_url": "%upload_url", "upload_header": %upload_header, "plugin": { "useCertSelectionDialog": true|false, "certId": "%certId", "detachedSignature": true|false } } } .. versionadded:: Gl3BrowserPlugin_0.10.1 .. option:: download_url Url к zip-архиву с данными для подписи. Архив должен содержать коллекцию каталогов с одним файлом в каждом из них; название каталога - id подписываемого файла в этом каталоге: .. code-block:: none :caption: Структура архива id1 (Папка с идентификатором файла в ней) data.bin (Данные для подписи) id2 data.bin id3 и т.д. .. note:: ``download_url`` пишется на языке `golang\\text\\temp `_ .. option:: upload_url Url для выгрузки zip-архива с подписанными данными. Архив содержит коллекцию каталогов с одним файлом в каждом из них; название каталога - id подписанного файла в этом каталоге: .. code-block:: none :caption: Структура архива id1 (Папка с идентификатором файла в ней) signed.bin (Данные с подписью) id2 signed.bin id3 и т.д. .. note:: ``upload_url`` пишется на языке `golang\\text\\temp `_ .. option:: plugin Параметры криптоутилиты :useCertSelectionDialog: Флаг необходимости открытия диалога для выбора сертификата вручную :certId: id сертификата :detachedSignature: Подписать с откреплённой подписью (при передаче ``true``) или прикреплённой (``false``) .. code-block:: json :caption: Пример команды { "cmd":"crypto", "args":{ "cmd": "sign2", "download_url": "{{.SrvUrlString}}/app/sys/rest/ss/pkg/Btk_FileRestPkg/ID_FILE=id", "download_header": {"Authorization": "Bearer {{.AccessToken}}"}, "upload_type": "form", "upload_option": {"field_name":"output.zip"}, "upload_url": "{{.SrvUrlString}}/app/sys/rest/ss/pkg/Btk_FileRestPkg/ID_FILE=id&CMD_ID={{.CmdID}}", "upload_header": {"Authorization": "Bearer {{.AccessToken}}"}, "plugin": { "useCertSelectionDialog": false, "certId": "some_cert_id", "detachedSignature": true } } } Команда ``verifymessage`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``verifymessage`` позволяет проводить проверку :term:`ЭЦП` набора файлов. .. code-block:: :caption: Формат команды { "cmd":"crypto", "args":{ "cmd": "verifymessage", "download_url": "%download_url", "download_header": {"Authorization": "Bearer {{.AccessToken}}"}, "plugin": { "detachedSignature": true|false } } } .. versionadded:: Gl3BrowserPlugin_0.11.0 .. option:: download_url Url к zip-архиву с данными для верификации подписи .. code-block:: none :caption: Структура архива id1 (Папка с идентификатором файла в ней) data.bin (Подписанные данные) sign.bin (Файл подписи) id2 data.bin sign.bin id3 и т.д. .. option:: plugin Параметры криптоутилиты :detachedSignature: Флаг проверки откреплённой подписи .. rubric:: Описание В случае успешного вызова криптоутилиты возвращает JSON-объект, в поле ``Value`` которого содержится JSON-объект с результатом: :resultCode: Код результата выполнения команды. 0 - команда выполнена успешно :result: JSON-массив верифицированных объектов :id: Идентификатор объекта :resultCode: Результат верификации данного объекта. Возможные значения ============ ======================================================= resultCode Результат ============ ======================================================= -1 Не задан файл с данными или подписью 0 Подпись подтверждена 1 Подпись не подтверждена 2 Ошибка при подтверждении подписи 3 Подпись подтверждена. Сертификат подписи не подтверждён 4 Подпись подтверждена. Сертификат подписи отозван ============ ======================================================= :resultText: Лог проверки подписи. Может содержать в себе: + Серийный номер сертификата, если подпись подтверждена + Сообщение об ошибке, если подпись не подтверждена .. code-block:: json :caption: Пример команды { "cmd":"crypto", "args":{ "cmd": "verifymessage", "download_url": "{{.SrvUrlString}}/app/sys/rest/ss/pkg/Btk_FileRestPkg/ID_FILE=id", "download_header": {"Authorization": "Bearer {{.AccessToken}}"}, "plugin": { "detachedSignature": false } } } .. code-block:: json :caption: Пример результата { "Value": { "resultCode" : 0, "result": [ { "id":"1", "resultCode":0, "resultText":"12005586992BD15F9173D0FF5C000100558699" }, { "id":"2", "resultCode":1, "resultText":"Подпись не подтверждена" } ] } } Команда ``verifycertificate`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``verifycertificate`` позволяет провести проверку сертификата на возможность его использовать, а именно: даты действия, построение цепочки сертификатов и т.д. В случае успешного вызова криптоутилиты возвращает JSON-объект, в поле ``Value`` которого содержится JSON-объект с кодом результата вызова в поле ``resultCode``. .. code-block:: json :caption: Формат команды { "cmd":"crypto", "args":{ "cmd": "verifycertificate", "plugin": { "certId": "%certId" } } } .. versionadded:: Gl3BrowserPlugin_0.11.0 .. option:: plugin Параметры криптоутилиты :certId: id проверяемого сертификата .. table:: Соответствие кодов и результатов +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |Код | Результат | +============+============================================================================================================================================================================================+ |0 | Сертификат подтверждён | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |1 | Истек срок действия сертификата конечного субъекта или одного из сертификатов цепочки | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |4 | Отозван сертификат конечного субъекта или один из сертификатов цепочки | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |8 | Невозможно проверить подпись для сертификата конечного субъекта или одного из сертификатов цепочки | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |16 | Сертификат используется для целей, отличающихся от указанных в поле "Расширенное использование ключа" (EKU) | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |32 | Цепочка сертификатов выстроена до корневого центра сертификации, но сертификат корневого центра сертификации отсутствует на компьютере в хранилище доверенных корневых центров сертификации| +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |64 | Подтверждение пути завершилось неудачей в результате ошибки проверки отзыва | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |128 | Цепочка сертификатов является циклической (то есть, один из сертификатов цепочки выдан центром сертификации, который сертифицирован исходным сертификатом) | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |65536 | Цепочка сертификата неполная. Ошибка обнаружения пути сертификата приводит к неполноте сертификата | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |131072 | CTL, использованный для создания этой цепочки, недействителен | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |262144 | CTL, использованный для создания этой цепочки, не имел действительной подписи | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |524288 | CTL, использованный для создания этой цепочки, не подходит для этого использования | +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. code-block:: json :caption: Пример команды { "cmd":"crypto", "args":{ "cmd": "verifycertificate", "plugin": { "certId": "120056B3E78FF14B4CB1FE6FAF00010056B3E7" } } } Команда ``getusercerts`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``getusercerts`` позволяет получить информацию о всех личных сертификатах пользователя. .. code-block:: json :caption: Формат команды { "cmd":"crypto", "args":{ "cmd": "getusercerts" } } .. versionadded:: Gl3BrowserPlugin_0.10.0 .. rubric:: Описание Возвращает JSON-объект, в поле ``Value`` которого содержится код результата выполнения команды (``resultCode``) и поле ``result`` - массив JSON-объектов с информацией о каждом сертификате, представленной в следующей таблице: .. _cert_info_table: .. table:: Поля информации о сертификате ====================== ========================================================================= Имя JSON-поля Информация о сертификате ====================== ========================================================================= ``notBefore`` Действителен с. Строка, содержащая дату в формате "dd.mm.yyyy hh:mm:ss" ``notAfter`` Действителен по. Строка, содержащая дату в формате "dd.mm.yyyy hh:mm:ss" ``serialNumber`` Серийный номер ``issuer`` Издатель ``thumbPrint`` Отпечаток ``signatureAlgorithm`` OID алгоритма подписи ``subjectName`` Субъект ====================== ========================================================================= .. code-block:: json :caption: Пример результата { "Value": { "resultCode" : 0, "result": [ { "serialNumber":"[SERIAL]", "signatureAlgorithm":"[OID]", "issuerName":"[ISSUER]", "notBefore":"[DATE]", "notAfter":"[DATE]", "subjectName":"[SUBJECT]", "thumbprint":"[THUMB]" }, { "serialNumber":"[SERIAL]", "signatureAlgorithm":"[OID]", "issuerName":"[ISSUER]", "notBefore":"[DATE]", "notAfter":"[DATE]", "subjectName":"[SUBJECT]", "thumbprint":"[THUMB]" } ] } } Команда ``getcertbydialog`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``getcertbydialog`` позволяет получить информацию о выбранном с помощью диалога сертификате пользователя. .. code-block:: json :caption: Формат команды { "cmd":"crypto", "args":{ "cmd": "getcertbydialog" } } .. versionadded:: Gl3BrowserPlugin_0.10.0 .. rubric:: Описание Возвращает JSON-объект, в поле ``Value`` которого содержится код результата выполнения команды (``resultCode``) и поле ``result`` - JSON-объект с информацией о выбранном пользователем сертификате (`Таблица полей сертификата `_) Набор команд ``host`` ```````````````````````````````````````` Набор команд ``host`` позволяет выполнять команды, связанные с машиной пользователя и подключенными к ней устройствами. Команда ``gethostid`` ~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``gethostid`` запрашивает уникальный идентификатор устройства, на котором запущен Gl3BrowserPlugin. .. code-block:: json :caption: Формат команды { "cmd":"host", "args":{ "cmd": "gethostid" } } Возвращает JSON-объект с полем ``hostid``, которое содержит уникальный строковый идентификатор устройства. .. code-block:: json :caption: Пример результата { "hostid": "TUSLW-W3HGA-L6Z4F" } .. versionadded:: Gl3BrowserPlugin_0.17.0 .. versionchanged:: Gl3BrowserPlugin_0.19.1 Добавлена поддержка в Linux .. _gl3_browser_plugin_getcomdevices: Команда ``getcomdevices`` ~~~~~~~~~~~~~~~~~~~~~~~~~ Команда ``getcomdevices`` запрашивает перечень доступных устройств, подключенных на стороне пользователя через последовательный порт. .. code-block:: json :caption: Формат команды { "cmd":"host", "args":{ "cmd": "getcomdevices" } } .. versionadded:: Gl3BrowserPlugin_0.17.0 .. versionchanged:: Gl3BrowserPlugin_0.19.1 Добавлена поддержка в Linux .. rubric:: Описание Возвращает JSON-объект с полем ``comdevices``, которое содержит массив объектов с информацией о доступных устройствах. .. table:: Поля информации об устройстве ====================== ========================================================================= Имя поля Описание ====================== ========================================================================= ``portname`` Имя порта. Может использоваться для подключения к устройству. Обязательное поле. ``pid`` Идентификатор продукта (Product ID). Необязательное поле. ``vid`` Идентификатор поставщика (Vendor ID). Необязательное поле. ``serialnumber`` Серийный номер устройства. Необязательное поле. ``productname`` Название продукта. Необязательное поле. ====================== ========================================================================= .. code-block:: json :caption: Пример результата { "comdevices" : [{ "portname": "Com1" }, { "portname": "Com2", "pid": "0x1234", "vid": "0x5678", "serialnumber": "SN0123456789", "productname": "USB Serial Device" }] } .. _command_support_table: Поддержка команд по операционным системам ------------------------------------------------------- .. list-table:: Поддержка команд по операционным системам :header-rows: 1 :align: left * - Команда - Windows - Alt Linux [#fn_plugin1]_ - Astra Linux [#fn_plugin2]_ * - edit.local - \+ - \+ - \? * - edit.remote - \+ - \- - \- * - file.gettempfilename - \+ - \+ - \+ * - file.downloadfile - \+ - \+ - \+ * - file.uploadfile - \+ - \+ - \? * - file.shellexec - \* - \+ - \? * - file.openpath - \+ - \- - \- * - file.print - \+ - \- - \- * - file.askfilename - \+ - \- - \- * - file.askfoldername - \+ - \- - \- * - crypto.sign - \+ - \- - \- * - crypto.sign2 - \+ - \- - \- * - crypto.verifymessage - \+ - \- - \- * - crypto.verifycertificate - \+ - \- - \- * - crypto.getusercerts - \+ - \- - \- * - crypto.getcertbydialog - \+ - \- - \- * - host.gethostid - \+ - \+ - \+ * - host.getcomdevices - \+ - \? - \? Обозначения: * ```+``` - поддерживается * ```-``` - не поддерживается * ```?``` - не протестировано * ```*``` - частичная поддержка .. [#fn_plugin1] Тестировалось на Alt Linux p10.2 .. [#fn_plugin2] Тестировалось на Astra Linux 1.7.4 .. _gl3_browser_plugin_logs: Логи ------------ Все ошибки и важные этапы работы логируются в файл на машине пользователя. Windows: :file:`%LOCALAPPDATA%/global-erp/gs3-browser-cmd/logs` Linux: :file:`~/.global-erp/gs3-browser-cmd/logs/`