English / Русский / Українська / 简体中文 / فارسی
کلاینت VPN متنباز برای Android، مبتنی بر نسخهای نگهداریشده از sing-box.
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، فایل، clipboard، QR و deep link | بله |
| مسیریابی جداگانه برای برنامهها | بله |
| preset قوانین ترافیک و rule-set محلی | بله |
| فیلتر DNS از AdGuard | بله |
| بررسی بهروزرسانی و نصب APK در برنامه | بله |
| سرور رایگان داخلی | خیر |
| نسخهٔ قابل انتشار برای Windows، iOS و سایر پلتفرمها | خیر |
Etonify لینک سرورها، sing-box JSON، Xray JSON، Clash YAML، SIP008 و فایل پیکربندی WireGuard را وارد میکند. parserهای داخلی این موارد را میشناسند:
- VLESS، VMess و Trojan؛
- Shadowsocks و ShadowsocksR؛
- Hysteria و Hysteria2؛
- TUIC، WireGuard، AnyTLS و NaiveProxy؛
- پروکسیهای بالادستی HTTP و SOCKS.
سازگاری دقیق به فیلدها، transportها و extensionهای استفادهشده توسط ارائهدهنده بستگی دارد. outbound ناشناخته یا نامعتبر در گزارش خطا نمایش داده میشود و برنامه یک profile ناقص را بیصدا اجرا نمیکند.
- Android VPN TUN با گزینههای stack شامل
gVisor،systemوmixed. - mixed proxy محلی با احراز هویت برای کلاینتهای HTTP و SOCKS و امکان دسترسی اختیاری از LAN.
- VPN TUN و پروکسی محلی را میتوان جداگانه یا همزمان فعال کرد.
- foreground service برای حفظ tunnel هنگام بسته بودن رابط یا ایجاد دوبارهٔ پردازش Flutter توسط Android.
- مدیریت متمرکز تغییر Wi‑Fi، اینترنت موبایل، sleep، resume و default network.
- اعلان وضعیت شامل سرور انتخابشده، latency، سرعت فعلی یا مجموع ترافیک، همراه با کنترل تازهسازی latency و توقف VPN.
- import از HTTPS URL، QR code، فایل، clipboard، منوی Share اندروید و deep linkهای پشتیبانیشده.
- پشتیبانی از فرمتهای sing-box، Xray، Clash، SIP008، WireGuard و لینکهای رایج تکسرور.
- پشتیبانی از لینکهای
etonify://،happ://add،happ://crypt*وsing-box://import-remote-profile. - رمزگشایی محلی variantهای پشتیبانیشدهٔ Happ از
cryptتاcrypt5؛ اگر ارائهدهنده HWID بخواهد، ابتدا رضایت صریح گرفته میشود. - دادهٔ سازگاری Happ
crypt5در buildهای رسمی وجود دارد، اما بهصورت plaintext در source tree عمومی نگهداری نمیشود. - بهروزرسانی امن: پاسخ خالی، خراب، HTML یا خطای شبکه آخرین profile سالم را جایگزین نمیکند.
- backup و restore مرز profileها، نامها، سرورها، outbound انتخابشده، زمانبندی بهروزرسانی و URL منبع را حفظ میکند.
- پاسخهای بزرگ خارج از UI isolate پردازش میشوند و دادههای حجیم جدا از metadata فشردهٔ profile ذخیره میشوند.
اشتراک راهدور باید از HTTPS استفاده کند. HTTP معمولی فقط برای آدرسهای loopback صریح localhost، 127.0.0.1 و ::1 مجاز است.
- URLTest هدفمند برای سرور انتخابشده و بررسی گروهی asynchronous برای تمام profile.
- نتیجهٔ هر سرور به محض دریافت نمایش داده میشود و session قدیمی نمیتواند نتیجهٔ جدید را بازنویسی کند.
- گزینهٔ
lowestانتخاب واقعی URLTest هسته را نشان میدهد و latency یا پرچم جعلی نمایش نمیدهد. - مرتبسازی بر اساس ترتیب منبع، دسترسپذیری، latency، نام یا کشور.
- سرور ناموفق با وضعیت هشدار روشن نمایش داده میشود؛ جزئیات DNS، TLS، EOF و timeout در diagnostics باقی میماند.
- تشخیص IP خروجی، ترافیک اتصال، سرعت زنده، مجموع session و نمودار سبک ترافیک.
- امکان export لاگهای runtime، شبکه، حافظه و ساخت پیکربندی.
URLTest یک درخواست HTTP از داخل پروکسی است، نه ICMP ping. نتیجه شامل برقراری اتصال پروکسی، TLS و زمان پاسخ سرور آزمایشی است.
- split tunneling برای برنامهها در حالتهای «از VPN» و «دور زدن VPN».
- در هر لحظه فقط یک preset قانون ترافیک فعال است: سرویسهای روسی مستقیم، سرویسهای AI از VPN یا شبکههای اجتماعی از VPN.
- فایلهای geo-resource محلی
.srsبا نسخهبندی، جایگزینی تأییدشده و استفادهٔ آفلاین پس از دانلود. - فیلتر DNS از AdGuard که روی دستگاه ساخته میشود.
- دور زدن شبکهٔ محلی، strict routing و گزینههای جلوگیری از leak.
- DNS دستگاه و resolverهای سفارشی UDP، TCP، DoT و DoH با bootstrap امن.
- FakeIP، TCP Fast Open، TCP MultiPath، TLS fragmentation و سایر تنظیمات آزمایشی که بهروشنی علامتگذاری شدهاند.
- proxy chain برای اتصال یک outbound انتخابشده از طریق outbound دیگر در همان profile.
قوانین ترافیک و split tunneling در دو لایهٔ متفاوت عمل میکنند. اگر هر دو با یک ترافیک تطبیق داشته باشند، ابتدا سیاست برنامههای انتخابشدهٔ Android و سپس قوانین فعال sing-box اعمال میشوند.
- updater مبتنی بر GitHub Releases، APK متناسب با ABI دستگاه را انتخاب میکند و پیشرفت دانلود را نشان میدهد.
- قبل از نصب، نام package، حداقل نسخهٔ Android، گواهی امضا، اندازهٔ فایل و SHA-256 موجود در manifest انتشار بررسی میشود.
- تنظیمات، اشتراکها، credentialها و کلیدها با AES-GCM رمزگذاری میشوند؛ wrapping key در Android Keystore نگهداری میشود.
- اطلاعات حساس شناختهشده در لاگ Flutter، diagnostics اندروید و گزارشهای exportشده پنهان میشوند.
- گزینهٔ پذیرش گواهی نامعتبر برای اتصال پروکسی و دانلود اشتراک جداست؛ هر دو بهطور پیشفرض خاموشاند و هشدار امنیتی روشن دارند.
- redirect به origin دیگر headerهای حساس را حذف میکند و downgrade از HTTPS به HTTP مسدود است.
- Etonify کلاینت است، نه ارائهدهندهٔ VPN.
- Android تنها پلتفرم انتشار پشتیبانیشده است.
- بعضی extensionهای اختصاصی ارائهدهندگان ممکن است به نسخهٔ جدیدتر هسته یا parser نیاز داشته باشند.
- اشتراکهای بسیار بزرگ و بررسی کامل سرورها میتوانند موقتاً مصرف CPU، حافظه، شبکه و باتری را افزایش دهند.
- تنظیمات آزمایشی شبکه ممکن است سازگاری را کاهش دهند. اگر دلیل تغییر را نمیدانید، مقدار پیشفرض را حفظ کنید.
- برنامهها و دستگاههای LAN باید بهصورت دستی با آدرس، port و credential نمایشدادهشده در Etonify تنظیم شوند.
APK را از GitHub Releases دریافت کنید. بهتر است split APK متناسب با ABI دستگاه را انتخاب کنید؛ بیشتر گوشیهای جدید Android از arm64-v8a استفاده میکنند. Android ممکن است برای نصب از مرورگر یا file manager مجوز بخواهد.
تنظیمات موجود تا حد امکان migrate میشوند. پیش از یک بهروزرسانی بزرگ یا تغییر گزینههای پیشرفتهٔ DNS و routing، یک backup رمزگذاریشده تهیه کنید.
پیکربندی فعلی CI از این موارد استفاده میکند:
- Flutter 3.47.2 و Dart 3.11.4 یا جدیدتر؛
- Android SDK 36؛
- JDK 21 برای build کلاینت؛
- Gradle 9.1 و Android Gradle Plugin 9.0.1.
مخزن را همراه submodule هسته clone کنید و سپس اجرا کنید:
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برای build عمومی release، یک release keystore واقعی در android/key.properties تنظیم کنید. APK نسخهٔ release با debug signature فقط برای آزمایش محلی است.
فایل داخلی android/app/libs/libbox.aar از commit دقیق submodule etonify-core ساخته میشود. نسخه، commit بالادستی sing-box، toolchain، build tags و SHA-256 در libbox.provenance.json ثبت و همراه با libbox.sha256 بررسی میشوند.
workflow مخزن میتواند چهار artifact هسته را دوباره از source ثابتشده بسازد:
libbox.aar؛libbox-sources.jar؛libbox.provenance.json؛libbox.sha256.
- کانال Telegram: @etonify
- ارتباط مستقیم: Etonify Direct
- گزارش خطا و پیشنهاد قابلیت: فرمهای GitHub Issues
- راهنمای مشارکت: CONTRIBUTING.md
- گزارش امنیتی: SECURITY.md
MeowTeam پروژه را نگهداری میکند: yamixdev روی کلاینت Android، انتشارها و etonify-core کار میکند و dudosxdev در شبکه و پروتکلها همکاری دارد.
Etonify با GNU General Public License v3.0 یا جدیدتر منتشر میشود. اطلاعات componentهای داخلی، اقتباسشده و شخص ثالث در NOTICE.md و THIRD_PARTY_NOTICES.md آمده است.