MDM API

MDM API

This project shows the use of the MDM API, including locking the device and locking several separate functions of the device, as well as getting the location of the device.

Mdm Api Example

Приложение для демонстрации работы с MDM API под ОС Аврора.

Условия использования и участия

Исходный код проекта предоставляется по лицензии, которая позволяет использовать его в сторонних приложениях.

Соглашение участника регламентирует права, предоставляемые участниками компании «Открытая Мобильная Платформа».

Информация об участниках указана в файле AUTHORS.

Кодекс поведения — это действующий набор правил компании «Открытая Мобильная Платформа», который информирует об ожиданиях по взаимодействию между членами сообщества при общении и работе над проектами.

Структура проекта

Проект имеет стандартную структуру приложения на базе C++ и QML для ОС Аврора.

  • Подпроект ru.auroraos.MdmApiExample содержит исходный код UI-приложения.
    • Файл ru.auroraos.MdmApiExample.pro описывает структуру подпроекта ru.auroraos.MdmApiExample для системы сборки qmake.
    • Каталог icons содержит значки приложения для разных разрешений экрана.
    • Каталог qml содержит исходный код на QML и ресурсы интерфейса пользователя.
      • Каталог cover содержит реализации обложек приложения.
      • Каталог icons содержит дополнительные значки интерфейса пользователя.
      • Каталог pages содержит страницы приложения.
      • Файл MdmApiExample.qml предоставляет реализацию окна приложения.
    • Каталог src содержит исходный код на C++.
      • Файл main.cpp является точкой входа в приложение.
      • Файлы mdmapiexampledbusinterface.h и mdmapiexampledbusinterface.cpp содержат исходный код класса MdmApiExampleDBusInterface, являющегося прокси-классом для использования DBus-службы ru.auroraos.MdmApiExample.
    • Каталог translations содержит файлы перевода интерфейса пользователя.
    • Файл ru.auroraos.MdmApiExample.desktop определяет отображение и параметры запуска приложения.
  • Подпроект ru.auroraos.MdmApiExampleDaemon содержит исходный код MDM-службы, использующей MDM API.
    • Файл ru.auroraos.MdmApiExampleDaemon.pro описывает структуру подпроекта ru.auroraos.MdmApiExampleDaemon для системы сборки qmake.
    • Каталог src содержит исходный код на C++.
      • Файл main.cpp является точкой входа в MDM-службу.
      • Файлы mdmapiexampledbusadaptor.h и mdmapiexampledbusadaptor.cpp содержат исходный код класса MdmApiExampleDBusAdaptor, описывающего DBus-интерфейс ru.auroraos.MdmApiExample для управления функциями устройства.
      • Файлы featureslocker.h и featureslocker.cpp содержат исходный код класса FeaturesLocker, предоставляющего возможность блокировать и разблокировать функции устройства.
      • Файлы featureslockerrunner.h и featureslockerrunner.cpp содержат исходный код класса FeaturesLockerRunner, описывающего поток для обработки событий ввода пользователя от интерфейса командной строки.
      • Файлы filedownloader.h и filedownloader.cpp содержат исходный код класса FileDownloader, предоставляющего метод для загрузки файла по сети.
      • Файлы locationservice.h и locationservice.cpp содержат исходный код класса LocationService, предоставляющего методы для запуска и остановки процесса получения информации о местоположении.
    • Каталог dbus содержит файлы конфигурации для DBus-службы.
    • Каталог systemd содержит файл конфигурации для systemd-службы.
  • Каталог rpm содержит настройки сборки rpm-пакета.

Совместимость

Проект совместим с актуальными версиями ОС Аврора.

Схема архитектуры приложения

                                              ┌──────────────────┐
                                              │    Aurora OS     │
          ┌───────────────────┐               └────────▲─────────┘
          │    RPM-package    │                        │
User      ├───────────────────┴────────────────────────┼──────────────────────┐
          │                                            │MDM API               │
│ @ │     │    ┌────────────────┐           ┌──────────┴──────────┐           │
└─┬─┘     │    │     GUI        │    DBus   │   systemd-service   │           │
  │  ◄────┼───►│  MdmApiExample │◄─────────►│ MdmApiExampleDaemon │           │
┌─┴─┐     │    └────────────────┘           └──────────▲──────────┘           │
│   │     │                                            │                      │
          └────────────────────────────────────────────┼──────────────────────┘
                                                       │
                                                 ┌─────▼─────┐
                                                 │    TCP    │
                                                 └─────▲─────┘
                                                       │
                                                       │
                                                ┌──────▼───────┐
                                                │  MDM Server  │
                                                └──────────────┘

Функционал

Приложение было протестировано на соответствие следующему функционалу:

  • Приложение позволяет блокировать и разблокировать функции устройства (камеру, микрофон и WLAN).
  • Приложение позволяет загружать файл из сети интернет.
  • Приложение позволяет запускать и останавливать процесс получения информации о местоположении.

Заметки

К сожалению, невозможно реализовать запуск systemd-службы сразу после установки RPM-пакета: валидатор выдаст ошибку о невозможности описания скриптов в spec-файле. Поэтому для её запуска требуется либо перезагрузить устройство, либо подключиться к нему по SSH и выполнить следующие команды:

devel-su systemctl daemon-reload
devel-su systemctl restart ru.auroraos.MdmApiExampleDaemon

Замечания

Загрузка файлов по сети. Существует проблема со скачиванием файлов в рамках MDM-службы. Загруженный файл не может быть записан в файловую систему с ошибкой «Permission denied». Удалось найти только один путь, по которому MDM-служба может записать файл: /var/lib/sailfish-mdm.

Снимки экранов

screenshots

This document in English

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.