Пользовательский интерфейс программ
23 января 2025
ID 271512
В Kaspersky IoT Secure Gateway 1000 SDK реализована возможность разработки программ с пользовательским интерфейсом, отображаемом в веб-плагине управления Kaspersky IoT Secure Gateway 1000 веб-консоли Kaspersky Security Center. Вы можете использовать существующий базовый пользовательский интерфейс, вызвав функцию generate_application_kpa() в командах сборки CMake со значением параметра UI_RESOURCE_NAME, установленным в default.
Базовый пользовательский интерфейс предоставляет следующие элементы управления:
- поле для ввода конфигурации программы в виде произвольного текста;
- кнопку для загрузки дополнительных файлов, доступных программе;
- список загруженных файлов.
Вы можете посмотреть использование базового пользовательского интерфейса в примере default_ui_example_package.
Содержимое ресурсов базового пользовательского интерфейса
Файлы ресурсов базового пользовательского интерфейса имеют формат JSON и располагаются в директории /opt/KasperskyOS-SDK-KISG-Platform-<version>/share/ksc/ui/default. Директория содержит две поддиректории, перемещать, переименовывать или удалять которые не следует:
handler_declarationsСодержит файл
handler_declarations.jsonс описанием обработчиков действий.schemesСодержит файл
APP_CONFIGURATION.jsonс описанием схемы разметки, которая преобразуется в html-разметку при открытии программы в веб-плагине управления Kaspersky IoT Secure Gateway 1000 веб-консоли Kaspersky Security Center.
Доработка базового пользовательского интерфейса
Не рекомендуется использовать типы элементов интерфейса или обработчиков, не перечисленные в файлах базового пользовательского интерфейса APP_CONFIGURATION.json и handler_declarations.json, так как это может привести к неработоспособности пользовательского интерфейса программы.
Вы можете доработать базовый пользовательский интерфейс под нужды вашей программы. Для этого вам потребуется скопировать ресурсы базового пользовательского интерфейса в директорию с ресурсами вашей программы и вызвать функцию generate_application_kpa() в командах сборки CMake с параметром UI_RESOURCE_NAME, установленным в значение пути до ресурсов доработанного пользовательского интерфейса относительно пути, указанного в параметре RESOURCES.
Формат обмена данными между вашей программой и веб-плагином управления Kaspersky IoT Secure Gateway 1000 веб-консоли Kaspersky Security Center строго определен.
Чтобы связать вашу программу с ресурсами пользовательского интерфейса, вам потребуется внести в файлы ресурсов базового пользовательского интерфейса следующие изменения:
- Заменить все вхождения
@APP_ID_ORIGINAL@в файлеAPP_CONFIGURATION.jsonна идентификатор вашей программы. Идентификатор программы вы можете получить из параметра"application": { "id": "..." }шаблона манифеста или из параметраAPP_IDфункцииgenerate_application_kpa()команд сборки CMake. - Заменить все вхождения
@APP_ID_CAMEL_CASE@в файлахAPP_CONFIGURATION.jsonиhandler_declarations.jsonна идентификатор вашей программы в стиле camelCase, удалив из идентификатора программы точки. - Заменить все вхождения
@APP_NAME@на отображаемое название программы. Отображаемое название программы вы можете получить из параметра"application": { "name": "..." }шаблона манифеста или из параметраAPP_NAMEфункцииgenerate_application_kpa()команд сборки CMake. - Заменить все вхождения
@APP_ID_LOWER_CASE@в файлеhandler_declarations.jsonна идентификатор вашей программы в нижнем регистре, удалив из идентификатора программы точки.
Мы не рекомендуем вручную добавлять новые элементы интерфейса в файл APP_CONFIGURATION.json. Вместо этого, воспользуйтесь реализацией схемы разметки из базового пользовательского интерфейса или используйте файл APP_CONFIGURATION.json из примеров message_sender_example_package и message_receiver_example_package.
Элементы интерфейса, с которыми пользователь может взаимодействовать, размещены в поле "json": {...} файла APP_CONFIGURATION.json. Вы можете перемещать, удалять и изменять элементы интерфейса под нужды вашей программы. Если вы создаете новый элемент интерфейса, с которым нужно взаимодействовать, то вам потребуется связать его с действием, описанным в файле handler_declarations.json. Связывание осуществляется вызовом обработчика действия из файла handler_declarations.json по имени "handlerName": "..." при описании типа взаимодействия пользователя с элементом интерфейса. Например, при нажатии на кнопку, вызывается обработчик загрузки файла:
APP_CONFIGURATION.json (фрагмент)
...
{
"type": "button",
"label": "Upload files",
"click_handler": "plugins.kasperskyKisgExample.appConfiguration.uploadFiles",
...
}
...
handler_declarations.json (фрагмент)
...
{
"handlerName": "plugins.kasperskyKisgExample.appConfiguration.uploadFiles",
"joinMemberName": "kiotsg.pluginHelpers.uploadFilesCb",
...
}
...
Вы можете посмотреть пример доработки базового пользовательского интерфейса в ресурсах примера vpn_config_example_package.