Skip to content

Latest commit

 

History

History
190 lines (136 loc) · 16.6 KB

File metadata and controls

190 lines (136 loc) · 16.6 KB

Etonify

English / Русский / Українська / 简体中文 / فارسی

Главный экран Etonify

Android Flutter Core License Telegram

VPN-клиент с открытым исходным кодом для Android на базе поддерживаемой версии sing-box.

Скачать · История изменений · Сообщить о проблеме · Telegram

Etonify предназначен для тех, у кого уже есть VPN-подписка, ссылка на сервер или готовая конфигурация и кому нужны гибкая маршрутизация, диагностика и контроль соединения на Android. Клиент и его Android-компоненты развиваются вместе с yamixdev/etonify-core — стабильной базой sing-box с изменениями, которые поддерживаются специально для Etonify.

Important

Etonify не продаёт и не предоставляет VPN-серверы. Используйте только те подписки и конфигурации, которыми вы владеете или которые вам разрешено использовать.

Текущее состояние

Компонент Текущее значение
Версия исходного кода клиента 0.3.1+21
Поддержка Android Android 8.0 и новее (API 26+)
Встроенное ядро v1.14.0-etonify.1 на базе стабильного sing-box 1.14.0
Языки интерфейса Русский и английский
Релизная платформа Только Android

0.3.0 — текущая стабильная версия. Каталоги других Flutter-платформ остаются в репозитории для инструментов и будущей разработки, но сборки для Windows, Linux, macOS и iOS пока не поддерживаются.

Краткая таблица поддержки

Возможность Поддержка
Системный VPN через Android TUN Да
Локальный HTTP- и SOCKS-прокси Да
Одновременная работа VPN TUN и локального прокси Да
Подписки по URL, из файла, буфера обмена, QR-кода и deep link Да
Раздельная маршрутизация приложений Да
Пресеты правил трафика и локальные наборы правил Да
DNS-фильтр AdGuard Да
Проверка обновлений и установка APK из клиента Да
Встроенные бесплатные серверы Нет
Релизные сборки для Windows, iOS и других платформ Нет

Поддерживаемые конфигурации

Etonify импортирует ссылки на серверы, sing-box JSON, Xray JSON, Clash YAML, SIP008 и конфигурации WireGuard. Встроенные парсеры распознают:

  • VLESS, VMess и Trojan;
  • Shadowsocks и ShadowsocksR;
  • Hysteria и Hysteria2;
  • TUIC, WireGuard, AnyTLS и NaiveProxy;
  • внешние HTTP- и SOCKS-прокси.

Точная совместимость зависит от полей, транспортов и расширений, которые использует провайдер. Неизвестные или некорректные outbound-конфигурации попадают в отчёт об ошибке, а не запускаются в составе частично сломанного профиля.

Основные возможности

Подключение и интеграция с Android

  • Android VPN TUN со стеками gVisor, system и mixed.
  • Локальный mixed-прокси с авторизацией для HTTP- и SOCKS-клиентов и необязательным доступом из локальной сети.
  • VPN TUN и локальный прокси можно включать отдельно или одновременно.
  • Фоновый сервис поддерживает туннель, когда интерфейс закрыт или Android пересоздал процесс Flutter.
  • Смена Wi‑Fi и мобильной сети, сон, возврат из фона и изменение основной сети обрабатываются централизованно.
  • В уведомлении состояния отображаются выбранный сервер, задержка и текущая скорость или общий трафик; доступны обновление задержки и остановка VPN.

Подписки и профили

  • Импорт по HTTPS, из QR-кода, файла, буфера обмена, системного меню «Поделиться» и поддерживаемых deep links.
  • Поддержка форматов sing-box, Xray, Clash, SIP008, WireGuard и распространённых ссылок на отдельные серверы.
  • Обработка ссылок etonify://, happ://add, happ://crypt* и sing-box://import-remote-profile.
  • Локальная расшифровка поддерживаемых вариантов Happ от crypt до crypt5; если провайдеру нужен HWID, клиент сначала запрашивает явное согласие.
  • Данные совместимости Happ crypt5 входят в официальные сборки, но не хранятся в открытом виде в публичном дереве исходников.
  • Безопасное обновление: пустой, повреждённый, HTML-ответ или сетевая ошибка не заменяют последнюю рабочую версию профиля.
  • Резервная копия сохраняет границы профилей, названия, серверы, выбранный outbound, расписание обновления и исходный URL.
  • Большие ответы разбираются вне UI-isolate, а объёмные данные хранятся отдельно от компактных метаданных профилей.

Удалённая подписка должна использовать HTTPS. Обычный HTTP разрешён только для буквальных loopback-адресов: localhost, 127.0.0.1 и ::1.

Серверы и диагностика

  • Адресная проверка URLTest для выбранного сервера и асинхронная групповая проверка всего профиля.
  • Результаты появляются по мере ответов; устаревшая сессия проверки не может перезаписать новую.
  • lowest показывает реальный выбор URLTest из ядра, а не вымышленную задержку или флаг.
  • Сортировка по исходному порядку, доступности, задержке, названию или стране.
  • Нерабочие серверы получают понятный предупреждающий статус; подробности DNS, TLS, EOF и timeout остаются в диагностике.
  • Определение внешнего IP, трафик соединения, текущая скорость, итоги сессии и лёгкий график.
  • Экспортируемые журналы с данными о runtime, сети, памяти и сборке конфигурации.

URLTest — это HTTP-запрос через прокси, а не ICMP ping. Результат включает установку прокси-соединения, TLS и время ответа тестового сервера.

Маршрутизация и DNS

  • Раздельная маршрутизация приложений в режимах «через VPN» и «в обход VPN».
  • Одновременно действует только один пресет правил трафика: российские сервисы напрямую, нейросети через VPN или социальные сети через VPN.
  • Версионируемые локальные георесурсы .srs с проверенной заменой и работой без сети после скачивания.
  • Локально собираемый DNS-фильтр AdGuard.
  • Обход локальной сети, строгая маршрутизация и настройки защиты от утечек.
  • DNS устройства и собственные UDP, TCP, DoT и DoH-резолверы с безопасным bootstrap.
  • Необязательные FakeIP, TCP Fast Open, TCP MultiPath, фрагментация TLS и другие явно отмеченные экспериментальные параметры.
  • Цепочки прокси, в которых один выбранный outbound подключается через другой outbound того же профиля.

Правила трафика и раздельная маршрутизация работают на разных уровнях. Если совпали оба условия, сначала применяется политика выбранных Android-приложений, затем — активные правила маршрутизации sing-box.

Обновления и безопасность

  • Центр обновлений GitHub Releases выбирает APK под ABI устройства и показывает ход скачивания.
  • Перед установкой проверяются имя пакета, минимальная версия Android, сертификат подписи, размер файла и SHA-256 из манифеста релиза.
  • Настройки, подписки, учётные данные и ключи шифруются с помощью AES-GCM; оборачивающий ключ хранится в Android Keystore.
  • Известные секреты маскируются во Flutter-журнале, нативной диагностике Android и экспортируемых отчётах.
  • Разрешение недоверенных сертификатов для прокси и для скачивания подписок разделено на две настройки. Обе выключены по умолчанию и сопровождаются предупреждением о риске.
  • При переходе на другой origin чувствительные заголовки удаляются, а перенаправление с HTTPS на HTTP блокируется.

Ограничения

  • Etonify — клиент, а не VPN-провайдер.
  • Единственная поддерживаемая релизная платформа — Android.
  • Некоторые расширения провайдеров могут потребовать обновления ядра или парсера.
  • Очень большие подписки и полная проверка серверов временно увеличивают нагрузку на процессор, память, сеть и аккумулятор.
  • Экспериментальные сетевые параметры могут снизить совместимость. Оставьте значения по умолчанию, если не знаете, зачем их менять.
  • Приложения и устройства в локальной сети нужно вручную настроить на адрес, порт и учётные данные прокси, которые показывает Etonify.

Установка

Скачайте APK в разделе GitHub Releases. Лучше выбрать split APK для ABI вашего устройства; большинство современных Android-смартфонов используют arm64-v8a. Android может запросить разрешение на установку приложений из браузера или файлового менеджера.

Клиент по возможности переносит существующие настройки. Перед крупным обновлением или изменением расширенных параметров DNS и маршрутизации сохраните зашифрованную резервную копию.

Разработка

Текущая конфигурация CI использует:

  • Flutter 3.47.2 и Dart 3.11.4 или новее;
  • Android SDK 36;
  • JDK 21 для сборки клиента;
  • Gradle 9.1 и Android Gradle Plugin 9.0.1.

Клонируйте репозиторий вместе с submodule ядра и выполните:

git clone --recurse-submodules https://github.com/yamixdev/Etonify.git
cd Etonify
flutter pub get
flutter gen-l10n
flutter analyze
flutter test

Проверки Android в Windows:

cd android
.\gradlew.bat :app:testDebugUnitTest :app:lintDebug

Для публичной release-сборки настройте настоящий ключ подписи в android/key.properties. Release APK с debug-подписью предназначен только для локального тестирования.

Ядро и воспроизводимая сборка

Встроенный android/app/libs/libbox.aar собирается из точного коммита submodule etonify-core. Версия, исходный коммит sing-box, набор инструментов, build tags и SHA-256 записываются в libbox.provenance.json и проверяются вместе с libbox.sha256.

Workflow репозитория может заново собрать четыре отслеживаемых артефакта из закреплённых исходников:

  • libbox.aar;
  • libbox-sources.jar;
  • libbox.provenance.json;
  • libbox.sha256.

Сообщество и участие в разработке

Проект поддерживает MeowTeam: yamixdev занимается Android-клиентом, релизами и etonify-core; dudosxdev помогает с сетевой частью и протоколами.

Лицензия

Etonify распространяется под GNU General Public License v3.0 или новее. Сведения о встроенных, адаптированных и сторонних компонентах находятся в NOTICE.md и THIRD_PARTY_NOTICES.md.