TrifleVPN
Пример демонтрирующий API для разработки VPN приложения для Аврора ОС.
Проект является базовым примером, позволяющий разработчикам VPN-решений понять, как выстраивать свои проекты. Он показывает базовую универсальную логику, не завязываясь на конкретный настоящий провайдер.
В качестве VPN-провайдера используется несуществующий провайдер (название Trifle можно перевести как «игрушечный»).
Сервера, к которому выполняется подключение, не существует, поэтому сразу возвращается результат "успешно подключено". При этом можно увидеть и отладить, как работает клиентская часть.
Проект содержит пример игрушечного vpn-провайдера Trifle, плагин для connman и для системных настроек (jolla-settings), а также GUI-приложение для общения с плагином.
Установка
Для корректной работы необходимо установить два rpm пакета:
- ru.auroraos.TrifleVPN-{version}.{arch}.rpm - пакет содержит приложение, плагин для настроек, плагин для Connman.
- ru.auroraos.TrifleVPN-provider-{version}.{arch}.rpm - пакет содержит провайдер, вызываемый плагином для соединения.
VPN провайдер
Бинарное приложение, устанавливающее VPN соединение. Может быть запущено пользователем с помощью системного меню настроек или с помощью собственного декстопного приложения.
Приложение может выполнить конфигурацию сетевого устройства с помощью плагина connman. Существует проблема с установкой пакета ru.auroraos.TrifleVPN-provider-{version}.{arch}.rpm через sdk. Этот пакет можно установить 2 варианнтами:
- Используя подпись системным ключом.
- Отключением валидации пакетов (нужен dev mode).
Через psdk пакет ставится стандартно.
Плагин для интеграции в connman
Плагин определяет необходимое поведение для запуска VPN тоннеля и устанавливает канал общения с тоннелем, через который может осуществляться конфигурация TUN/TAP интерфейса.
- triflevpn_plugin.c — содержит необходимые функции для регистрации плагина в Connman VPN.
Плагин для интеграции в системные настройки
Включает в себя .qml
файлы, которые будут динамически загружаться системными настройками:
и плагин QQmlExtensionPlugin
:
VPN приложение
Позволяет управлять соединениями, относящимся к данному VPN.
IPC между VPN провайдером и VPN приложением
Приложение получает сокет для общения с провайдером через обращение к DBus сервису, который регистрирует провайдер:
- Получение сокета на стороне приложения.
- Регистрация сервиса на стороне провайдера.
Чтобы приложение имело доступ к DBus сервису, который регистрирует провайдер, провайдер должен зарегистрировать
сервис с именеми ORG_NAME.APP_NAME
, где APP_NAME
- имя приложения.
Важно
Для установки приложения его RPM-пакет должен быть подписан ключом с профилем extended.
Условия использования и участия
Исходный код проекта предоставляется по лицензии, которая позволяет использовать его в сторонних приложениях.
Соглашение участника регламентирует права, предоставляемые участниками компании «Открытая Мобильная Платформа».
Информация об участниках указана в файле AUTHORS.
Кодекс поведения — это действующий набор правил компании «Открытая Мобильная Платформа», который информирует об ожиданиях по взаимодействию между членами сообщества при общении и работе над проектами.
Структура проекта
- Каталог application содержит реализацию приложения для реактирования настроек соединений.
- Файл application.pro описывает структуру подпроекта для системы сборки qmake.
- Каталог icons содержит изображения приложения для поддерживаемых разрешений экрана.
- Каталог qml содержит исходный код на QML и ресурсы интерфейса пользователя.
- Каталог components содержит пользовательские QML-компоненты, которые реализуют поля ввода данных.
- Каталог cover содержит реализации обложек приложения.
- Каталог images содержит дополнительные иконки интерфейса пользователя.
- Каталог pages содержит страницы приложения.
- Файл TrifleVPN.qml предоставляет реализацию окна приложения.
- Каталог src содержит исходный код на C++.
- Файл main.cpp является точкой входа в приложение.
- Файл ru.auroraos.TrifleVPN.desktop определяет отображение и параметры запуска приложения.
- Каталог provider содержит реализацию VPN провайдера.
- Каталог rpm содержит настройки сборки rpm-пакета.
- Файл ru.auroraos.TrifleVPN.spec используется инструментом rpmbuild.
- Каталог plugin содержит плагин для интеграции в connman.
- Каталог settings содержит плагин для интеграции в системные настройки.
- Каталог translations содержит файлы перевода интерфейса пользователя.
Совместимость
Проект совместим с актуальными версиями ОС Аврора. На Аврора 4 есть ограничения валидатора для установки пакетов, рекомендуется отключить валидацию пакетов.