Skip to content

Latest commit

 

History

History
190 lines (136 loc) · 16.4 KB

File metadata and controls

190 lines (136 loc) · 16.4 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-rc.1-etonify.2 на базі sing-box 1.14.0-rc.1
Мови інтерфейсу Англійська та російська
Платформа випуску Лише 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.0 і 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.