mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-22 09:46:37 +08:00
feat(tls,reality): port xray TLS/REALITY fields, cert-hash helpers, fallback UX
TLS: add verifyPeerCertByName (vcn) to inbound settings + emit in both share-link generators (frontend + Go sub) and outbound parser; the allowInsecure replacement xray removed after 2026-06-01. Add server-side curvePreferences, masterKeyLog, echSockopt (passthrough + form) at tlsSettings top-level so they survive the panel-only settings strip. REALITY: add limitFallbackUpload/Download (afterBytes/bytesPerSec/burstBytesPerSec) with per-field tooltips, plus masterKeyLog. Verified field names/semantics against pinned xray v1.260327.1 (bytesPerSec=0 disables). Hosts: fix verify_peer_cert_by_name column bool->string (xray expects comma-separated names) with an idempotent, history-gate-free migration (SQLite typeof blank; Postgres ALTER once); emit vcn for hosts/external proxies. Server: add getCertHash (local cert DER SHA-256) and getRemoteCertHash (xray tls ping) endpoints + api-docs; wire pinned-cert field buttons. Drop the meaningless random-hash button. Xray UI: metrics endpoint (listen/tag) config in Basics; import/export for routing rules and outbounds. Fallbacks card: compact empty state, header-aligned actions, responsive labeled grid rows. i18n: add all new keys to every locale; drop unused generateRandomPin.
This commit is contained in:
@@ -591,7 +591,6 @@
|
||||
"pinnedPeerCertSha256": "SHA-256 لشهادة النظير المثبَّتة",
|
||||
"pinnedPeerCertSha256Tip": "تجزئات SHA-256 لشهادة النظير كسلسلة سداسية عشرية (مثل e8e2d3…)، مفصولة بفواصل. للوحة فقط — لا تُكتب في إعدادات xray على الخادم، لكنها تُضمَّن في روابط المشاركة ليتمكَّن العملاء من تثبيت الشهادة.",
|
||||
"pinnedPeerCertSha256Placeholder": "تجزئة (تجزئات) سداسية عشرية، مفصولة بفواصل",
|
||||
"generateRandomPin": "إنشاء تجزئة عشوائية",
|
||||
"getNewEchCert": "احصل على شهادة ECH جديدة",
|
||||
"show": "عرض",
|
||||
"xver": "Xver",
|
||||
@@ -620,7 +619,28 @@
|
||||
"node": "عنوان العقدة",
|
||||
"listen": "عنوان استماع الوارد",
|
||||
"custom": "مخصص"
|
||||
}
|
||||
},
|
||||
"echSockopt": "ECH Sockopt",
|
||||
"echSockoptTip": "خيارات السوكيت للاتصال اللي Xray بتستخدمه عشان تجيب قائمة إعدادات ECH (مثلاً توجيه الاستعلام عبر صادر dialerProxy). سيبه متعطّل عشان تستخدم الإعدادات الافتراضية.",
|
||||
"curvePreferences": "تفضيلات المنحنى",
|
||||
"curvePreferencesTip": "بتقصر منحنيات تبادل مفاتيح TLS اللي السيرفر بيعرضها، بترتيب الأفضلية (مثلاً X25519MLKEM768, X25519). سيبه فاضي عشان تستخدم الإعدادات الافتراضية لـ Xray-core.",
|
||||
"masterKeyLog": "سجل المفتاح الرئيسي",
|
||||
"masterKeyLogTip": "المسار اللي هتتكتب فيه مفاتيح TLS الرئيسية (بصيغة SSLKEYLOGFILE) عشان التصحيح باستخدام Wireshark. سيبه فاضي في الإنتاج — لإنه بيخلي أي حد عنده الملف يقدر يفك تشفير المرور.",
|
||||
"verifyPeerCertByName": "التحقق من شهادة النظير بالاسم",
|
||||
"verifyPeerCertByNameTip": "بيقول للعملاء يتحققوا من شهادة السيرفر مقابل الاسم ده بدل الـ SNI. الأسماء بتتفصل بفاصلة. للوحة بس — بيتضاف في روابط المشاركة (vcn). ده البديل الحديث لـ allowInsecure اللي شالته Xray بعد 2026-06-01.",
|
||||
"pinFromCert": "املأ من شهادة الوارد ده",
|
||||
"pinFromRemote": "اجلب الهاش عبر ping على الـ SNI (xray tls ping)",
|
||||
"pinFromRemoteNoSni": "حدّد الـ SNI (serverName) الأول عشان تعمل ping للشهادة البعيدة.",
|
||||
"pinFromRemoteFailed": "تعذّر جلب هاش الشهادة البعيدة.",
|
||||
"limitFallback": "تحديد الـ Fallback",
|
||||
"limitFallbackUpload": "تحديد رفع الـ Fallback",
|
||||
"limitFallbackDownload": "تحديد تنزيل الـ Fallback",
|
||||
"afterBytes": "بعد البايتات",
|
||||
"afterBytesTip": "خلي الـ fallback يشتغل بالسرعة الكاملة لعدد البايتات ده، وبعدين يبدأ التحجيم. 0 = حجّم من أول بايت.",
|
||||
"bytesPerSec": "بايت في الثانية",
|
||||
"bytesPerSecTip": "حد السرعة (بايت/ثانية) المطبّق على مرور الـ fallback بعد العتبة، عشان الفحوصات ماتقدرش تستخدم سيرفرك كنطاق ترددي مجاني للهدف. 0 = بلا حد (بيعطّل الاتجاه ده).",
|
||||
"burstBytesPerSec": "بايت في الثانية للدفقة",
|
||||
"burstBytesPerSecTip": "السماح بدفقات قصيرة فوق المعدل الثابت (حجم token-bucket). لو أقل من بايت في الثانية بيترفع ليطابقه."
|
||||
},
|
||||
"info": {
|
||||
"mode": "الوضع",
|
||||
@@ -1340,6 +1360,14 @@
|
||||
"Outbounds": "الصادرات",
|
||||
"OutboundSubscriptions": "اشتراكات الصادرات",
|
||||
"OutboundSubscriptionsDesc": "استورد الصادرات من روابط اشتراك بعيدة (vmess/vless/trojan/ss/...). الوسوم بتفضل ثابتة عشان تستخدمها في موازنات التحميل وقواعد التوجيه. التحديثات بتتم تلقائياً.",
|
||||
"importRules": "استيراد القواعد",
|
||||
"exportRules": "تصدير القواعد",
|
||||
"importOutbounds": "استيراد الصادرات",
|
||||
"exportOutbounds": "تصدير الصادرات",
|
||||
"importInvalidJson": "JSON غير صالح — المتوقع مصفوفة أو كائن بمفتاح مطابق.",
|
||||
"metricsListen": "نقطة نهاية المقاييس",
|
||||
"metricsListenDesc": "بتعرض مقاييس Xray بنمط Prometheus على العنوان:المنفذ ده (مثلاً 127.0.0.1:11111). سيبه فاضي عشان تعطّله. اربطه بـ localhost وحطّ قدامه reverse-proxy — لإنه من غير مصادقة.",
|
||||
"metricsTag": "وسم المقاييس",
|
||||
"Balancers": "موازنات التحميل",
|
||||
"balancerTagRequired": "الوسم مطلوب",
|
||||
"balancerSelectorRequired": "اختر صادراً واحداً على الأقل",
|
||||
@@ -1729,7 +1757,6 @@
|
||||
"alpn": "ALPN",
|
||||
"fingerprint": "بصمة",
|
||||
"pins": "SHA-256 للشهادة المثبّتة",
|
||||
"verifyPeerCertByName": "التحقق من شهادة النظير بالاسم",
|
||||
"allowInsecure": "السماح بغير الآمن",
|
||||
"echConfigList": "قائمة إعدادات ECH",
|
||||
"muxParams": "Mux",
|
||||
@@ -1741,7 +1768,8 @@
|
||||
"shuffleHost": "خلط المضيف",
|
||||
"tags": "وسوم",
|
||||
"nodeGuids": "النودز",
|
||||
"excludeFromSubTypes": "استبعاد من الصيغ"
|
||||
"excludeFromSubTypes": "استبعاد من الصيغ",
|
||||
"verifyPeerCertByName": "التحقق من شهادة النظير بالاسم"
|
||||
},
|
||||
"hints": {
|
||||
"address": "اتركه فارغاً ليرث عنوان الوارد نفسه.",
|
||||
@@ -2015,4 +2043,4 @@
|
||||
"statusDown": "غير متصل",
|
||||
"statusUp": "متصل"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user