Пример kpa_example

Пример демонстрирует работу с KPA-пакетами в решении на базе KasperskyOS:

Директория примера в SDK

Код примера и скрипты для сборки находятся по следующему пути:

/opt/KasperskyOS-Community-Edition-<platform>-<version>/examples/kpa_example

Список программ

При сборке примера для целевой аппаратной платформы в решение автоматически включаются платформенно-зависимые драйверы:

Описание инициализации

Файл описания инициализации решения init.yaml генерируется в процессе сборки решения на основе шаблона ./einit/src/init.yaml.in. Макросы вида @INIT_*@, которые содержатся в шаблоне, автоматически раскрываются в итоговом файле init.yaml. Подробнее см. "Шаблон init.yaml.in".

Описание политики безопасности

Файл security.psl содержит описание политики безопасности решения на базе KasperskyOS и находится в директории ./einit/src. Декларации в PSL-файле снабжены комментариями, которые поясняют назначение этих деклараций.

Описание политики безопасности решения в этом примере разрешает любые взаимодействия процессов между собой и ядром. Эту политику можно использовать только в качестве заглушки на ранних стадиях разработки решения, чтобы модуль безопасности не препятствовал взаимодействиям. В реальном решении на KasperskyOS применять такую политику недопустимо.

Ресурс

Сценарий работы

Программа Client выполняет следующие действия:

  1. Проверяет доступность сети. Если сеть не доступна, отправляет сообщение в журнал с использованием макроса LOG компонента LogRR и завершает работу.
  2. Загружает KPA-пакет DownloadedApp.kpa с HTTP-сервера.
  3. Отправляет сообщение в журнал со списком доступных KPA-пакетов: Application.kpa и DownloadedApp.kpa. Сборка KPA-пакета Application.kpa выполняется при сборке решения в файле ./application/CMakeLists.txt.
  4. Получает с использованием функций CreatePackageManager() и GetPackageController() указатели на экземпляры интерфейсов IPackageManager и IPackageController соответственно, необходимые для работы с компонентом PackageManager.
  5. Устанавливает KPA-пакет Application.kpa с использованием функции InstallPackage() интерфейса IPackageController.
  6. Отправляет сообщение в журнал со списком уникальных идентификаторов установленных KPA-пакетов: kpa_example.application и kpa_example.preinstalled_app. Сборка KPA-пакета PreinstalledApp.kpa и его предварительная установка в собираемый образ решения выполняется в файле ./preinstalled_app/CMakeLists.txt.
  7. Отправляет сообщение в журнал о получении данных о манифесте KPA-пакета Application.kpa с использованием функции GetManifest() интерфейса IPackageController.
  8. Получает с использованием функции DcmConnect() указатель на экземпляр интерфейса IExecutionManager. Для соединения с процессом ExecutionManager используется системная программа DCM.
  9. Используя указатель на экземпляр интерфейса IExecutionManager получает доступ к интерфейсу IProcessControl.
  10. Запускает процесс из исполняемого файла, поставляемого в KPА-пакете Application.kpa. В цикле получает состояния запущенного процесса с использованием функции GetProcessState() интерфейса IProcessControl и отправляет сообщения о полученных состояниях в журнал. Процесс самостоятельно завершает свою работу.
  11. Запускает с задержкой 60 сек процесс из исполняемого файла, поставляемого в KPА-пакете Application.kpa.
  12. Используя указатель на экземпляр интерфейса IExecutionManager получает доступ к интерфейсу ISystemController. Получает сведения о процессах, запущенных с использованием компонента ExecutionManager, с использованием функции GetSystemInfo() интерфейса ISystemController и отправляет сообщения с полученными сведениями в журнал. Через 5 сек принудительно завершает работу запущенного процесса с использованием функции StopProcess() интерфейса IProcessControl.

Сборка и запуск примера

Для сборки и запуска примера используется система CMake из состава KasperskyOS Community Edition.

Для эмулятора QEMU после сборки примера, но перед его запуском, необходимо:

  1. Дополнительно собрать KPA-пакет DownloadedApp.kpa. (Исходный код для сборки находится в файле ./downloaded_kpa/CMakeLists.txt.) Для сборки KPA-пакета выполните команду:

    cmake --build build --target DownloadedKpa

  2. Запустить HTTP-сервер, который будет предоставлять доступ к файлам из директории ./build/kpa/ на порту 8080. Для этого в отдельном сеансе терминала выполните команду:

    python3 -m http.server -d ./build/kpa/ 8080

    Чтобы проверить доступность KPA-пакета DownloadedApp.kpa, откройте в браузере страницу по адресу http://localhost:8080 и убедитесь, что файл присутствует в списке.

Для целевых аппаратных платформ необходимо запустить HTTP-сервер до запуска образа, содержащего пример.

См. "Сборка и запуск примеров".

В начало