Trifle VPN

Trifle VPN

An example demonstrating the API for developing a VPN application for Aurora OS.

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-пакета.
  • Каталог plugin содержит плагин для интеграции в connman.
  • Каталог settings содержит плагин для интеграции в системные настройки.
  • Каталог translations содержит файлы перевода интерфейса пользователя.

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

Проект совместим с актуальными версиями ОС Аврора. На Аврора 4 есть ограничения валидатора для установки пакетов, рекомендуется отключить валидацию пакетов.

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

screenshots

This document in English

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

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