Плагин#
Плагин Gl3BrowserPlugin необходим для обеспечения функциональности, требующей доступа к контексту операционной системы, являющейся хостом для запущенного браузера. Без плагина веб-приложение ограничено песочницей, предоставляемой браузером, и не имеет доступа к окружению операционной системы.
Функциональность и особенности API плагина#
При установке плагин регистрирует себя в двух разных транспортных механизмах, через которые может независимо получать команды:
Как обработчик на хосте сообщений от браузерного Native messaging. Кроме обработки специфицируемых команд данных механизм используется для обеспечения дуплексного канала связи при работе с последовательными портами через API AS.
Warning
Для взаимодействия веб клиента AS с плагином по механизму нативных сообщений требуется установленное браузерное расширение
Как обработчик специального протокола
gs-global3-cmd
uri ссылок.Warning
Обработка протокола
gs-global3-cmd
производится только в ОС Windows.Warning
Протокол позволяет взаимодействовать с плагином без расширения, но браузер показывает окно с предупреждением при каждом переходе по ссылке URI, содержащей специальный протокол, для обработки которого зарегистрировано нативное приложение в ОС.
Tip
Чтобы проверить версию установленного плагина, используя протокол gs-global3-cmd
, в адресной строке введите gs-global3-cmd:version
. После выполнения команды будет показан диалог с номером версии
Требования#
ОС:
Windows 7 и выше
ALT Linux p10.2 и выше
Astra Linux
Список поддерживаемых команд#
Набор команд edit
#
Команда local
#
Команда edit.local
позволяет редактировать файлы, расположенные на компьютере пользователя, с помощью редактора по умолчанию.
{
"cmd":"edit",
"args":
{
"type":"local",
"file": "%file_path"
}
}
New in version Gl3BrowserPlugin_0.8.1.
Changed in version Gl3BrowserPlugin_0.19.1: Добавлена поддержка в Linux
- file_path#
Имя редактируемого файла
See also
edit.local
обертка над Команда shellexec с параметром wait == true
. Все ограничения наследуются.
Команда remote
#
Команда edit.remote
позволяет редактировать файлы, расположенные на сервере приложений, с помощью редактора по умолчанию.
{
"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}}"}
}
}
New in version Gl3BrowserPlugin_0.8.1.
- file_name#
Имя редактируемого файла
- file_ext#
Расширение редактируемого файла
- download_url#
Url для временной загрузки файла на машину клиента
Note
download_url
пишется на языке golang\text\temp
- upload_url#
Url для выгрузки отредактированного файла на сервер приложений
Note
upload_url
пишется на языке golang\text\temp
- upload_option#
В этом параметре задаётся field_name, который используется в качестве имени заголовка POST-запроса выгрузки файла
See also
edit.remote
обертка над Команда shellexec с параметром wait == true
. Все ограничения наследуются.
{
"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
возвращает уникальное имя во временном каталоге ОС.
{
"cmd": "file",
"args": {
"cmd": "gettempfilename",
"prefix": "%prefix",
"suffix": "%suffix"
}
}
New in version Gl3BrowserPlugin_0.9.0.
Changed in version Gl3BrowserPlugin_0.19.1: Добавлена поддержка в Linux
- prefix#
Префикс имени файла
- suffix#
Окончание имени файла с расширением
Команда downloadfile
#
Команда downloadfile
сохраняет файл на клиенте и возвращает путь к сохранённому файлу на диске
{
"cmd": "file",
"args": {
"cmd": "downloadfile",
"filename": "%filename%",
"download_url": "%download_url",
"download_header": {"Authorization": "Bearer {{.AccessToken}}"}
}
}
New in version Gl3BrowserPlugin_0.9.0.
Changed in version Gl3BrowserPlugin_0.19.1: Добавлена поддержка в Linux
- filename#
Имя файла на диске, куда будет произведено сохранение. Если передан относительный путь, то файл будет сохранён во временной папке ОС
- download_url#
Url для загрузки файла
Note
download_url
пишется на языке golang\text\temp
Команда uploadfile
#
Команда uploadfile
выгружает файл с переданным именем с клиента на сервер
{
"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}}"},
}
}
New in version Gl3BrowserPlugin_0.18.0.
Changed in version Gl3BrowserPlugin_0.19.1: Добавлена поддержка в Linux
- filename#
Полное имя выгружаемого файла на диске. Если передан относительный путь, то файл будет искаться во временной папке ОС
- field_name#
Формальный параметр
name
заголовка Content-Disposition HTTP-ответа, в котором указывается имя HTML-поля. Можно указать произвольно
- upload_url#
Url для выгрузки файла
Note
upload_url
, значениеupload_header
, пишутся на языке golang\text\temp
{
"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}}"},
}
}
Команда shellexec
#
Команда shellexec
открывает файл с помощью приложения по умолчанию, зарегистрированного в системе для данного типа файлов, или запускает
исполняемый файл на выполнение.
{
"cmd": "file",
"args": {
"cmd": "shellexec",
"filename": "%filename%",
"wait": true | false,
"params": "%params"
}
}
New in version Gl3BrowserPlugin_0.9.0.
Changed in version Gl3BrowserPlugin_0.19.1: Добавлена поддержка команды в Linux
Changed in version Gl3BrowserPlugin_0.19.1: Добавлена поддержка пользовательских обработчиков
- filename#
Полное имя открываемого или исполняемого файла на диске
# ОС
Поддержка
Windows
Открытие файлов
doc
,docm
,docx
,dot
,dotx
,wbk
производится редактором, который зарегистрируется в системе как OLE объектWord.Application
(Microsoft Office, Libre Office, Open Office)Linux
Открытие файлов
docx
иxlsx
производится исключительно установленным в системе LibreOfficeПриложение по умолчанию выбирается и вызывается утилитой ОС xdg-open
- wait#
Флаг ожидания завершения операции над файлом перед дальнейшим выполнением
Warning
Ожидание возможно не для всех приложений и расширений.
- params#
Параметры командной строки, передаваемые исполняемому файлу.
Note
При открытии файла приложением по умолчанию передача аргументов не выполняется.
# ОС
Поддержка
Windows
Передача аргументов не поддерживается
Linux
Передача аргументов происходит только в скрипты sh и исполняемые файлы без расширения.
Пользовательские обработчики
В Linux открытие специфичных файлов или запуск на исполнение плагином выполняется путем использования обработчиков, зарегистрированных в файле config.handlers.default.ini
. Для любых типов файлов можно объявить пользовательские обработчики в файле config.handlers.user.ini
(если файл отсутствует, его следует создать рядом с config.handlers.default.ini
).
Команда openpath
#
Команда openpath
позволяет открывать сетевые и локальные ресурсы (файлы и каталоги) с помощью приложений по умолчанию
Note
Данная команда используется сервером приложений для открытия сетевых ресурсов по клику по ссылке в ячейке списка .. seealso:: Редактор гиперссылки (etHyperLink)
{
"cmd": "file",
"args": {
"cmd": "openpath",
"path": "%path%"
}
}
New in version Gl3BrowserPlugin_0.12.0.
{
"cmd": "file",
"args": {
"cmd": "openpath",
"path": "\\s32\Обучение"
}
}
Команда print
#
Команда print
выполняет печать документа по %download_url%
с именем %filename%
на принтере по умолчанию. Для печати используется приложение, ассоциированное с типом переданного файла, и его зарегистрированная в реестре Windows команда print.
{
"cmd": "file",
"args": {
"cmd": "print",
"filename": "%filename%",
"download_url": "%download_url%",
"download_header": {"Authorization": "Bearer {{.AccessToken}}"},
}
}
New in version Gl3BrowserPlugin_0.13.0.
- filename#
Имя файла, который будет распечатан. Используется для определения типа документа, а также может выводиться при печати.
- download_url#
Url для загрузки файла
Note
download_url
пишется на языке golang\text\temp
{
"cmd": "file",
"args": {
"cmd": "print",
"filename": "report.pdf",
"download_url": "http://globalfiles/f4545g4w32q21324cx4",
"download_header": {"Authorization": "Bearer {{.AccessToken}}"},
}
}
Команда askfilename
#
Команда askfilename
отображает окно выбора файлов и после их выбора пользователем возвращает наборы полных путей к выбранным файлам.
При выборе нескольких файлов имена разделяются переводом строки
Note
Если пользователь в диалоге выбора файла нажмёт “Отмена”, будет возвращена пустая строка
{
"cmd": "file",
"args": {
"cmd": "askfilename",
"multiselect": true | false,
"initialdir": "%initialdir%"
}
}
New in version Gl3BrowserPlugin_0.14.0.
- multiselect#
Флаг доступности выбора сразу нескольких файлов в диалоге
- initialdir#
Путь к папке по умолчанию, т.е. каталог, который будет открыт в диалоге
{
"cmd": "file",
"args": {
"cmd": "askfilename",
"multiselect": true,
"initialdir": "d:\\tmp"
}
}
Набор команд crypto
#
Набор команд crypto
позволяет выполнять команды взаимодействия с криптопровайдером с
помощью криптоутилиты GlobalCryptoPlugin
Команда sign
(deprecated)#
Команда sign позволяет подписывать файлы, расположенные на сервере приложений. Подпись производится с помощью личного сертификата клиента
{ "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 since version Gl3BrowserPlugin_0.10.1.
- download_url#
Url к zip-архиву с данными для подписи. Архив должен содержать коллекцию каталогов с одним файлом в каждом из них; название каталога - id подписываемого файла в этом каталоге:
id1 (Папка с идентификатором файла в ней) data.bin (Данные для подписи) id2 data.bin id3 и т.д.
Note
download_url
пишется на языке golang\text\temp
- upload_url#
Url для выгрузки zip-архива с подписанными данными. Архив содержит коллекцию каталогов с одним файлом в каждом из них; название каталога - id подписанного файла в этом каталоге:
id1 (Папка с идентификатором файла в ней) signed.bin (Данные с подписью) id2 signed.bin id3 и т.д.
Note
upload_url
пишется на языке golang\text\temp
- useCertSelectionDialog#
Флаг необходимости открытия диалога для выбора сертификата вручную
- certId#
id сертификата
{ "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
позволяет подписывать файлы, расположенные на сервере приложений.
Подпись производится с помощью личного сертификата клиента
{ "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
}
}
}
New in version Gl3BrowserPlugin_0.10.1.
- download_url#
Url к zip-архиву с данными для подписи. Архив должен содержать коллекцию каталогов с одним файлом в каждом из них; название каталога - id подписываемого файла в этом каталоге:
id1 (Папка с идентификатором файла в ней) data.bin (Данные для подписи) id2 data.bin id3 и т.д.
Note
download_url
пишется на языке golang\text\temp
- upload_url#
Url для выгрузки zip-архива с подписанными данными. Архив содержит коллекцию каталогов с одним файлом в каждом из них; название каталога - id подписанного файла в этом каталоге:
id1 (Папка с идентификатором файла в ней) signed.bin (Данные с подписью) id2 signed.bin id3 и т.д.
Note
upload_url
пишется на языке golang\text\temp
- plugin#
Параметры криптоутилиты
- UseCertSelectionDialog
Флаг необходимости открытия диалога для выбора сертификата вручную
- CertId
id сертификата
- DetachedSignature
Подписать с откреплённой подписью (при передаче
true
) или прикреплённой (false
)
{ "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
позволяет проводить проверку ЭЦП набора файлов.
{ "cmd":"crypto",
"args":{
"cmd": "verifymessage",
"download_url": "%download_url",
"download_header": {"Authorization": "Bearer {{.AccessToken}}"},
"plugin": {
"detachedSignature": true|false
}
}
}
New in version Gl3BrowserPlugin_0.11.0.
- download_url#
Url к zip-архиву с данными для верификации подписи
id1 (Папка с идентификатором файла в ней) data.bin (Подписанные данные) sign.bin (Файл подписи) id2 data.bin sign.bin id3 и т.д.
- plugin#
Параметры криптоутилиты
- DetachedSignature
Флаг проверки откреплённой подписи
Описание
В случае успешного вызова криптоутилиты возвращает JSON-объект, в поле Value
которого содержится JSON-объект с результатом:
- resultCode
Код результата выполнения команды. 0 - команда выполнена успешно
- result
JSON-массив верифицированных объектов
- id
Идентификатор объекта
- resultCode
Результат верификации данного объекта. Возможные значения
resultCode
Результат
-1
Не задан файл с данными или подписью
0
Подпись подтверждена
1
Подпись не подтверждена
2
Ошибка при подтверждении подписи
3
Подпись подтверждена. Сертификат подписи не подтверждён
4
Подпись подтверждена. Сертификат подписи отозван
- resultText
Лог проверки подписи. Может содержать в себе:
Серийный номер сертификата, если подпись подтверждена
Сообщение об ошибке, если подпись не подтверждена
{ "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
}
}
}
{
"Value": {
"resultCode" : 0,
"result": [
{
"id":"1",
"resultCode":0,
"resultText":"12005586992BD15F9173D0FF5C000100558699"
},
{
"id":"2",
"resultCode":1,
"resultText":"Подпись не подтверждена"
}
]
}
}
Команда verifycertificate
#
Команда verifycertificate
позволяет провести проверку сертификата на возможность его использовать,
а именно: даты действия, построение цепочки сертификатов и т.д. В случае успешного вызова криптоутилиты возвращает JSON-объект,
в поле Value
которого содержится JSON-объект с кодом результата вызова в поле resultCode
.
{ "cmd":"crypto",
"args":{
"cmd": "verifycertificate",
"plugin": {
"certId": "%certId"
}
}
}
New in version Gl3BrowserPlugin_0.11.0.
- plugin#
Параметры криптоутилиты
- CertId
id проверяемого сертификата
Код |
Результат |
---|---|
0 |
Сертификат подтверждён |
1 |
Истек срок действия сертификата конечного субъекта или одного из сертификатов цепочки |
4 |
Отозван сертификат конечного субъекта или один из сертификатов цепочки |
8 |
Невозможно проверить подпись для сертификата конечного субъекта или одного из сертификатов цепочки |
16 |
Сертификат используется для целей, отличающихся от указанных в поле “Расширенное использование ключа” (EKU) |
32 |
Цепочка сертификатов выстроена до корневого центра сертификации, но сертификат корневого центра сертификации отсутствует на компьютере в хранилище доверенных корневых центров сертификации |
64 |
Подтверждение пути завершилось неудачей в результате ошибки проверки отзыва |
128 |
Цепочка сертификатов является циклической (то есть, один из сертификатов цепочки выдан центром сертификации, который сертифицирован исходным сертификатом) |
65536 |
Цепочка сертификата неполная. Ошибка обнаружения пути сертификата приводит к неполноте сертификата |
131072 |
CTL, использованный для создания этой цепочки, недействителен |
262144 |
CTL, использованный для создания этой цепочки, не имел действительной подписи |
524288 |
CTL, использованный для создания этой цепочки, не подходит для этого использования |
{ "cmd":"crypto",
"args":{
"cmd": "verifycertificate",
"plugin": {
"certId": "120056B3E78FF14B4CB1FE6FAF00010056B3E7"
}
}
}
Команда getusercerts
#
Команда getusercerts
позволяет получить информацию о всех личных сертификатах пользователя.
{ "cmd":"crypto",
"args":{
"cmd": "getusercerts"
}
}
New in version Gl3BrowserPlugin_0.10.0.
Описание
Возвращает JSON-объект, в поле Value
которого содержится код результата выполнения команды (resultCode
) и поле result
-
массив JSON-объектов с информацией о каждом сертификате, представленной в следующей таблице:
Имя JSON-поля |
Информация о сертификате |
---|---|
|
Действителен с. Строка, содержащая дату в формате “dd.mm.yyyy hh:mm:ss” |
|
Действителен по. Строка, содержащая дату в формате “dd.mm.yyyy hh:mm:ss” |
|
Серийный номер |
|
Издатель |
|
Отпечаток |
|
OID алгоритма подписи |
|
Субъект |
{
"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
позволяет получить информацию о выбранном с помощью диалога сертификате пользователя.
{ "cmd":"crypto",
"args":{
"cmd": "getcertbydialog"
}
}
New in version Gl3BrowserPlugin_0.10.0.
Описание
Возвращает JSON-объект, в поле Value
которого содержится код результата выполнения команды (resultCode
) и поле result
-
JSON-объект с информацией о выбранном пользователем сертификате (Таблица полей сертификата)
Набор команд host
#
Набор команд host
позволяет выполнять команды, связанные с машиной пользователя и подключенными к ней устройствами.
Команда gethostid
#
Команда gethostid
запрашивает уникальный идентификатор устройства, на котором запущен Gl3BrowserPlugin.
{ "cmd":"host",
"args":{
"cmd": "gethostid"
}
}
Возвращает JSON-объект с полем hostid
, которое содержит уникальный строковый идентификатор устройства.
{
"hostid": "TUSLW-W3HGA-L6Z4F"
}
New in version Gl3BrowserPlugin_0.17.0.
Changed in version Gl3BrowserPlugin_0.19.1: Добавлена поддержка в Linux
Команда getcomdevices
#
Команда getcomdevices
запрашивает перечень доступных устройств, подключенных на стороне пользователя через последовательный порт.
{ "cmd":"host",
"args":{
"cmd": "getcomdevices"
}
}
New in version Gl3BrowserPlugin_0.17.0.
Changed in version Gl3BrowserPlugin_0.19.1: Добавлена поддержка в Linux
Описание
Возвращает JSON-объект с полем comdevices
, которое содержит массив объектов с информацией о доступных устройствах.
Имя поля |
Описание |
---|---|
|
Имя порта. Может использоваться для подключения к устройству. Обязательное поле. |
|
Идентификатор продукта (Product ID). Необязательное поле. |
|
Идентификатор поставщика (Vendor ID). Необязательное поле. |
|
Серийный номер устройства. Необязательное поле. |
|
Название продукта. Необязательное поле. |
{
"comdevices" :
[{
"portname": "Com1"
},
{
"portname": "Com2",
"pid": "0x1234",
"vid": "0x5678",
"serialnumber": "SN0123456789",
"productname": "USB Serial Device"
}]
}
Поддержка команд по операционным системам#
Команда |
Windows |
Alt Linux 1 |
Astra Linux 2 |
---|---|---|---|
edit.local |
+ |
+ |
? |
edit.remote |
+ |
- |
- |
file.gettempfilename |
+ |
+ |
+ |
file.downloadfile |
+ |
+ |
+ |
file.uploadfile |
+ |
+ |
? |
file.shellexec |
* |
+ |
? |
file.openpath |
+ |
- |
- |
file.print |
+ |
- |
- |
file.askfilename |
+ |
- |
- |
crypto.sign |
+ |
- |
- |
crypto.sign2 |
+ |
- |
- |
crypto.verifymessage |
+ |
- |
- |
crypto.verifycertificate |
+ |
- |
- |
crypto.getusercerts |
+ |
- |
- |
crypto.getcertbydialog |
+ |
- |
- |
host.gethostid |
+ |
+ |
+ |
host.getcomdevices |
+ |
? |
? |
Обозначения:
`+`
- поддерживается`-`
- не поддерживается`?`
- не протестировано`*`
- частичная поддержка
Логи#
Все ошибки и важные этапы работы логируются в файл на машине пользователя.
- Windows:
%LOCALAPPDATA%/global-erp/gs3-browser-cmd/logs
- Linux:
~/.global-erp/gs3-browser-cmd/logs/