mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-17 15:47:14 +00:00
feat(sub): add Happ client integration, routing presets, and app management (#6434)
* feat(sub): add Happ client integration, routing presets, and app management Implement comprehensive Happ proxy client integration according to official developer specifications. - Fix header emission on disabled routing and hidden settings to send explicit '0' headers rather than omitting, allowing Happ clients to reset cached settings. - Add support for 'happ://routing/off' deeplink in routing validation. - Preserve '?serverDescription=' query parameters in link fragments without escaping to support Happ server subtitles across VMess, VLESS, Trojan and SS. - Add Happ application management headers: ProviderID, New-Url, Fallback-Url, Sub-Info banners, Sub-Expire notifications, No-Limit mode, hardware ID enforcement, TUN modes/types, route exclusions, APNS exclusions, and per-app proxy settings. - Add curated routing presets (Iran Bypass, China Direct, AdBlock, Global) and interactive visual rule generator in frontend settings. - Synchronize all 13 translation locales with native Persian, Russian, and Chinese translations. * fix(sub): keep Happ header overrides behind the auto-detect opt-in The Routing-Enable/Hide-Settings off values were emitted on the User-Agent alone, so every panel that upgraded would push "Routing-Enable: 0" — documented by happ.su as disabling routing globally — to every Happ client without the operator enabling anything. They now ride subHappAutoDetect like every other Happ header. Two further mismatches against the vendor spec: - serverDescription was written as a key of the VMess base64 JSON object. happ.su documents it as a "#Title?serverDescription=<base64>" link parameter or a JSON "meta" entry, so the caption never reached Happ while every other VMess consumer received an unknown key. Dropped rather than moved: emitting the documented form is unsafe here because our own parser base64-decodes the whole VMess body (internal/util/link/outbound.go). - The TUN Mode dropdown stored the literal "default", forwarded as "Tun-Mode: default", where happ.su documents system|gvisor only. It now stores the unset value so no header is sent. TUN Type "default" is a documented value and is unchanged. Each fix carries a test that fails without it.
This commit is contained in:
@@ -1466,7 +1466,99 @@
|
||||
"subExpiredTemplate": "قالب پیام انقضا",
|
||||
"subExpiredTemplateDesc": "قالب کانفیگ نمایشی زمانی که اشتراک کاربر منقضی شده است.",
|
||||
"subTrafficDepletedTemplate": "قالب پیام اتمام حجم",
|
||||
"subTrafficDepletedTemplateDesc": "قالب کانفیگ نمایشی زمانی که حجم اشتراک کاربر به پایان رسیده است."
|
||||
"subTrafficDepletedTemplateDesc": "قالب کانفیگ نمایشی زمانی که حجم اشتراک کاربر به پایان رسیده است.",
|
||||
"subHappAutoDetect": "تشخیص خودکار کلاینت Happ",
|
||||
"subHappAutoDetectDesc": "تزریق خودکار هدرها و روتینگ Happ هنگامی که User-Agent کلاینت مربوط به برنامه Happ باشد.",
|
||||
"subHappProviderId": "شناسه ارائهدهنده (Provider ID)",
|
||||
"subHappProviderIdDesc": "شناسه یکتا جهت مدیریت کلاینت Happ، اتصال به کانفیگ ریموت و مهاجرت کاربران.",
|
||||
"subHappNewUrl": "لینک اشتراک جدید (مهاجرت)",
|
||||
"subHappNewUrlDesc": "آدرس اشتراک جدید جهت انتقال خودکار؛ برنامه Happ پس از دریافت، آدرس اشتراک را به این لینک تغییر میدهد.",
|
||||
"subHappFallbackUrl": "لینک اشتراک پشتیبان (Fallback)",
|
||||
"subHappFallbackUrlDesc": "آدرس اشتراک جایگزین در صورت در دسترس نبودن سرور اصلی اشتراک.",
|
||||
"subHappSubInfoText": "متن بنر اعلانات",
|
||||
"subHappSubInfoTextDesc": "پیام اعلان سفارشی در بالای صفحه برنامه Happ (حداکثر ۲۰۰ نویسه).",
|
||||
"subHappSubInfoColor": "رنگ بنر اعلانات",
|
||||
"subHappSubInfoColorDesc": "تم رنگی بنر اعلان (پیشفرض، اطلاعرسانی، موفقیت، هشدار یا اخطار).",
|
||||
"subHappSubInfoButtonText": "متن دکمه بنر",
|
||||
"subHappSubInfoButtonTextDesc": "عنوان دکمه اقدام در بنر اعلان (حداکثر ۲۵ نویسه).",
|
||||
"subHappSubInfoButtonLink": "لینک دکمه بنر",
|
||||
"subHappSubInfoButtonLinkDesc": "آدرسی که با کلیک روی دکمه بنر باز میشود.",
|
||||
"subHappSubExpire": "بنر اشتراک منقضیشده",
|
||||
"subHappSubExpireDesc": "نمایش بنر تمدید در برنامه Happ در صورت اتمام ترافیک یا زمان اشتراک کاربر.",
|
||||
"subHappSubExpireButtonLink": "لینک تمدید اشتراک",
|
||||
"subHappSubExpireButtonLinkDesc": "آدرس صفحه خرید یا تمدید اشتراک منقضیشده.",
|
||||
"subHappNotificationExpire": "اعلان انقضای اشتراک",
|
||||
"subHappNotificationExpireDesc": "نمایش هشدار انقضای اشتراک به کاربر پیش از پایان اعتبار در برنامه Happ.",
|
||||
"subHappNoLimit": "حذف محدودیت تعداد قوانین",
|
||||
"subHappNoLimitDesc": "اجازه اعمال تعداد نامحدود قوانین روتینگ بدون برش خوردن روی سیستمهای تلفن همراه.",
|
||||
"subHappAlwaysHwid": "الزام شناسه سختافزاری (HWID)",
|
||||
"subHappAlwaysHwidDesc": "قفل کردن درخواستهای اشتراک به شناسه سختافزاری دستگاه جهت جلوگیری از اشتراکگذاری اکانت.",
|
||||
"subHappTunMode": "حالت تونل (TUN Mode)",
|
||||
"subHappTunModeDesc": "حالت رابط شبکه مجازی TUN در برنامه Happ (پیشفرض، سیستمی یا سختگیرانه).",
|
||||
"subHappTunType": "موتور شبکه TUN",
|
||||
"subHappTunTypeDesc": "پشته شبکه مورد استفاده برای TUN (سیستمی، gVisor یا ترکیبی).",
|
||||
"subHappExcludeRoutes": "مستثنی کردن مسیرهای CIDR",
|
||||
"subHappExcludeRoutesDesc": "رنجهای IP جدا شده با کاما جهت دور زدن تونل VPN (مانند 192.168.0.0/16, 10.0.0.0/8).",
|
||||
"subHappExcludeApns": "مستثنی کردن سرویسهای اعلان اپل (APNs)",
|
||||
"subHappExcludeApnsDesc": "دور زدن سرویسهای اعلان اپل برای اطمینان از دریافت پایدار ناتیفیکیشنها در iOS.",
|
||||
"subHappColorProfile": "پروفایل رنگ و پوسته",
|
||||
"subHappColorProfileDesc": "پوسته ظاهری برنامه Happ (بنفش، فیروزهای، سایبرپانک یا JSON سفارشی).",
|
||||
"subHappPingType": "روش تست پینگ",
|
||||
"subHappPingTypeDesc": "پروتکل اندازهگیری تأخیر گرهها در برنامه Happ (icmp، tcp یا http).",
|
||||
"subHappAutoConnect": "اتصال خودکار هنگام اجرا",
|
||||
"subHappAutoConnectDesc": "اتصال خودکار به ویپیان با باز شدن برنامه Happ.",
|
||||
"subHappAutoConnectType": "راهبرد اتصال خودکار",
|
||||
"subHappAutoConnectTypeDesc": "هدف اتصال خودکار: سریعترین سرور یا آخرین سرور استفادهشده.",
|
||||
"subHappPerAppMode": "پراکسی انتخابی برنامهها در اندروید",
|
||||
"subHappPerAppModeDesc": "مدیریت عبور ترافیک برنامههای اندروید: خاموش، عبور فقط برنامههای منتخب یا مستثنی کردن آنها.",
|
||||
"subHappPerAppList": "نام بستههای برنامههای اندروید",
|
||||
"subHappPerAppListDesc": "نام بستههای اپلیکیشنهای اندروید جدا شده با کاما (مانند com.telegram.messenger).",
|
||||
"subHappPresetIran": "دور زدن سایتهای ایران (Iran Bypass)",
|
||||
"subHappPresetChina": "دور زدن چین (China Direct)",
|
||||
"subHappPresetAdblock": "مسدودسازی تبلیغات (AdBlock)",
|
||||
"subHappPresetGlobal": "پراکسی کل ترافیک (Global)",
|
||||
"subHappPresetOff": "غیرفعالسازی روتینگ (happ://routing/off)",
|
||||
"subHappColorBlue": "آبی (استاندارد / پیشفرض)",
|
||||
"subHappColorGreen": "سبز (موفقیت)",
|
||||
"subHappColorRed": "قرمز (هشدار / خطر)",
|
||||
"subHappTunModeDefault": "پیشفرض",
|
||||
"subHappTunModeSystem": "سیستم (استک استاندارد سیستمعامل)",
|
||||
"subHappTunModeGvisor": "gVisor (استک فضای کاربری)",
|
||||
"subHappTunTypeSingbox": "sing-box",
|
||||
"subHappTunTypeTun2proxy": "tun2proxy",
|
||||
"subHappTunTypeDefault": "پیشفرض (Happ TUN)",
|
||||
"subHappTunTypeXray": "Xray TUN",
|
||||
"subHappPingProxy": "از طریق پروکسی (تأخیر GET)",
|
||||
"subHappPingProxyHead": "از طریق پروکسی (تأخیر HEAD)",
|
||||
"subHappPingTcp": "پینگ دستدادن TCP",
|
||||
"subHappPingIcmp": "پینگ ICMP",
|
||||
"subHappAutoConnectLowestDelay": "کمترین تأخیر (سریعترین نود)",
|
||||
"subHappAutoConnectLastUsed": "آخرین نود استفادهشده",
|
||||
"subHappAutoConnectRandom": "نود تصادفی",
|
||||
"subHappPerAppOff": "خاموش",
|
||||
"subHappPerAppOn": "روشن (فقط برنامههای فهرستشده)",
|
||||
"subHappPerAppBypass": "بایپس (مستثنیکردن برنامههای فهرستشده)",
|
||||
"subHappPresetApplied": "الگوی روتینگ Happ اعمال شد",
|
||||
"subHappPresets": "الگوهای آماده روتینگ",
|
||||
"subHappPresetsDesc": "الگوهای آماده و بهینهسازیشده برای روتینگ در برنامه Happ.",
|
||||
"subHappVisualBuilder": "سازنده بصری قوانین",
|
||||
"subHappVisualBuilderDesc": "ایجاد آسان دیپلینک روتینگ سفارشی بر اساس دامنهها و آیپیها.",
|
||||
"subHappBuildDeeplink": "تولید دیپلینک",
|
||||
"subHappModalTitle": "سازنده بصری قوانین روتینگ Happ",
|
||||
"subHappDirectDomains": "دامنههای مستقیم (Direct)",
|
||||
"subHappProxyDomains": "دامنههای پراکسی (Proxy)",
|
||||
"subHappBlockDomains": "دامنههای مسدود (Block)",
|
||||
"subHappDirectIPs": "آیپیهای مستقیم (Direct CIDRs)",
|
||||
"subHappProxyIPs": "آیپیهای پراکسی (Proxy CIDRs)",
|
||||
"subHappBlockIPs": "آیپیهای مسدود (Block CIDRs)",
|
||||
"subHappDeeplinkGenerated": "دیپلینک تولید و در قوانین روتینگ اعمال شد",
|
||||
"subHappGroupRouting": "قوانین و روتینگ",
|
||||
"subHappGroupBanners": "اعلانات و بنرهای هوشمند",
|
||||
"subHappGroupNetwork": "تنظیمات شبکه و TUN",
|
||||
"subHappGroupThemes": "ظاهر و پوسته برنامه",
|
||||
"subHappGroupFailover": "مهاجرت و مدیریت کلاینت",
|
||||
"subHappGroupAndroid": "پراکسی برنامههای اندروید"
|
||||
|
||||
},
|
||||
"xray": {
|
||||
"save": "ذخیره",
|
||||
|
||||
Reference in New Issue
Block a user