feat(tls): surface pinnedPeerCertSha256 in panel, share links, and subs

Adds a panel-only `pinnedPeerCertSha256` field on TLS settings with a tags input and a random-hash generator. The hashes ride share links as `pcs` (v2rayN-compatible), Clash sub as `pin-sha256`, and JSON sub as `pinnedPeerCertSha256`, while remaining stripped from the run-config sent to xray-core.
This commit is contained in:
MHSanaei
2026-05-28 19:32:10 +02:00
parent c5b5606bf5
commit 3f0b7fbe97
23 changed files with 320 additions and 1 deletions
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "بناء السلسلة",
"echKey": "ECH key",
"echConfig": "تكوين ECH",
"pinnedPeerCertSha256": "SHA-256 لشهادة النظير المثبَّتة",
"pinnedPeerCertSha256Tip": "تجزئات SHA-256 المُرمَّزة بـ Base64 لشهادة النظير. للوحة فقط — لا تُكتب في إعدادات xray على الخادم، لكنها تُضمَّن في روابط المشاركة ليتمكَّن العملاء من تثبيت الشهادة.",
"pinnedPeerCertSha256Placeholder": "تجزئة (تجزئات) base64، مفصولة بفواصل",
"generateRandomPin": "إنشاء تجزئة عشوائية",
"getNewEchCert": "احصل على شهادة ECH جديدة",
"show": "عرض",
"xver": "Xver",
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "Build Chain",
"echKey": "ECH key",
"echConfig": "ECH config",
"pinnedPeerCertSha256": "Pinned Peer Cert SHA-256",
"pinnedPeerCertSha256Tip": "Base64-encoded SHA-256 hashes of the peer certificate. Panel-only — not written to the server's xray config, but included in share links so clients can pin the certificate.",
"pinnedPeerCertSha256Placeholder": "base64 hash(es), comma-separated",
"generateRandomPin": "Generate random hash",
"getNewEchCert": "Get New ECH Cert",
"show": "Show",
"xver": "Xver",
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "Construir cadena",
"echKey": "ECH key",
"echConfig": "Config ECH",
"pinnedPeerCertSha256": "SHA-256 del cert. del par fijado",
"pinnedPeerCertSha256Tip": "Hashes SHA-256 codificados en Base64 del certificado del par. Solo en el panel — no se escribe en la config xray del servidor, pero se incluye en los enlaces para que los clientes puedan fijar el certificado.",
"pinnedPeerCertSha256Placeholder": "hash(es) base64, separados por comas",
"generateRandomPin": "Generar hash aleatorio",
"getNewEchCert": "Obtener nuevo cert ECH",
"show": "Mostrar",
"xver": "Xver",
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "ساخت زنجیره",
"echKey": "کلید ECH",
"echConfig": "پیکربندی ECH",
"pinnedPeerCertSha256": "SHA-256 پین‌شدهٔ گواهی همتا",
"pinnedPeerCertSha256Tip": "هش‌های SHA-256 با کدگذاری Base64 از گواهی همتا. فقط در پنل — در پیکربندی xray سرور نوشته نمی‌شود، اما در لینک‌های اشتراک‌گذاری گنجانده می‌شود تا کلاینت‌ها بتوانند گواهی را پین کنند.",
"pinnedPeerCertSha256Placeholder": "هش(های) base64، با کاما جدا شوند",
"generateRandomPin": "تولید هش تصادفی",
"getNewEchCert": "دریافت گواهی ECH جدید",
"show": "نمایش",
"xver": "Xver",
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "Bangun rantai",
"echKey": "ECH key",
"echConfig": "Konfig ECH",
"pinnedPeerCertSha256": "SHA-256 Sertifikat Peer Tersemat",
"pinnedPeerCertSha256Tip": "Hash SHA-256 berenkode Base64 dari sertifikat peer. Hanya panel — tidak ditulis ke konfig xray server, tetapi disertakan dalam link berbagi agar klien dapat menyematkan sertifikat.",
"pinnedPeerCertSha256Placeholder": "hash base64, dipisah koma",
"generateRandomPin": "Hasilkan hash acak",
"getNewEchCert": "Dapatkan sertifikat ECH baru",
"show": "Tampilkan",
"xver": "Xver",
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "Build Chain",
"echKey": "ECH key",
"echConfig": "ECH config",
"pinnedPeerCertSha256": "ピン留めピア証明書 SHA-256",
"pinnedPeerCertSha256Tip": "ピア証明書の Base64 エンコード SHA-256 ハッシュ。パネルのみ — サーバーの xray 設定には書き込まれませんが、共有リンクには含まれ、クライアントが証明書をピン留めできます。",
"pinnedPeerCertSha256Placeholder": "Base64 ハッシュ、カンマ区切り",
"generateRandomPin": "ランダムハッシュを生成",
"getNewEchCert": "新しい ECH 証明書を取得",
"show": "表示",
"xver": "Xver",
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "Construir cadeia",
"echKey": "ECH key",
"echConfig": "Config ECH",
"pinnedPeerCertSha256": "SHA-256 do cert. do par fixado",
"pinnedPeerCertSha256Tip": "Hashes SHA-256 codificados em Base64 do certificado do par. Apenas no painel — não é gravado na config xray do servidor, mas é incluído nos links de compartilhamento para que clientes possam fixar o certificado.",
"pinnedPeerCertSha256Placeholder": "hash(es) base64, separados por vírgula",
"generateRandomPin": "Gerar hash aleatório",
"getNewEchCert": "Obter novo certificado ECH",
"show": "Mostrar",
"xver": "Xver",
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "Build Chain",
"echKey": "ECH key",
"echConfig": "ECH config",
"pinnedPeerCertSha256": "Закреплённый SHA-256 сертификата пира",
"pinnedPeerCertSha256Tip": "SHA-256-хеши сертификата пира в кодировке Base64. Только для панели — не записывается в конфиг xray сервера, но включается в ссылки-приглашения, чтобы клиенты могли закрепить сертификат.",
"pinnedPeerCertSha256Placeholder": "Base64-хеш(и), через запятую",
"generateRandomPin": "Сгенерировать случайный хеш",
"getNewEchCert": "Получить новый ECH-сертификат",
"show": "Показать",
"xver": "Xver",
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "Zincir oluştur",
"echKey": "ECH key",
"echConfig": "ECH yapılandırması",
"pinnedPeerCertSha256": "Sabitlenmiş Peer Sertifikası SHA-256",
"pinnedPeerCertSha256Tip": "Peer sertifikasının Base64 kodlu SHA-256 hash'leri. Sadece panel — sunucunun xray yapılandırmasına yazılmaz, ancak istemcilerin sertifikayı sabitleyebilmesi için paylaşım bağlantılarına eklenir.",
"pinnedPeerCertSha256Placeholder": "base64 hash(ler), virgülle ayrılmış",
"generateRandomPin": "Rastgele hash üret",
"getNewEchCert": "Yeni ECH sertifikası al",
"show": "Göster",
"xver": "Xver",
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "Build Chain",
"echKey": "ECH key",
"echConfig": "ECH config",
"pinnedPeerCertSha256": "Закріплений SHA-256 сертифіката пира",
"pinnedPeerCertSha256Tip": "SHA-256-хеші сертифіката пира в кодуванні Base64. Лише панель — не записується в конфіг xray сервера, але додається до посилань спільного доступу, щоб клієнти могли закріпити сертифікат.",
"pinnedPeerCertSha256Placeholder": "Base64-хеш(і), через кому",
"generateRandomPin": "Згенерувати випадковий хеш",
"getNewEchCert": "Отримати новий ECH-сертифікат",
"show": "Показати",
"xver": "Xver",
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "Tạo chuỗi",
"echKey": "ECH key",
"echConfig": "Cấu hình ECH",
"pinnedPeerCertSha256": "SHA-256 chứng chỉ peer đã ghim",
"pinnedPeerCertSha256Tip": "Hash SHA-256 mã hóa Base64 của chứng chỉ peer. Chỉ panel — không ghi vào cấu hình xray máy chủ, nhưng được đưa vào liên kết chia sẻ để client có thể ghim chứng chỉ.",
"pinnedPeerCertSha256Placeholder": "hash base64, phân tách bằng dấu phẩy",
"generateRandomPin": "Tạo hash ngẫu nhiên",
"getNewEchCert": "Lấy chứng chỉ ECH mới",
"show": "Hiện",
"xver": "Xver",
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "构建证书链",
"echKey": "ECH key",
"echConfig": "ECH 配置",
"pinnedPeerCertSha256": "固定对端证书 SHA-256",
"pinnedPeerCertSha256Tip": "对端证书的 Base64 编码 SHA-256 哈希。仅面板使用 — 不写入服务器的 xray 配置,但会包含在分享链接中,以便客户端固定证书。",
"pinnedPeerCertSha256Placeholder": "base64 哈希,逗号分隔",
"generateRandomPin": "生成随机哈希",
"getNewEchCert": "获取新 ECH 证书",
"show": "显示",
"xver": "Xver",
+4
View File
@@ -536,6 +536,10 @@
"buildChain": "建立憑證鏈",
"echKey": "ECH key",
"echConfig": "ECH 設定",
"pinnedPeerCertSha256": "釘選對端憑證 SHA-256",
"pinnedPeerCertSha256Tip": "對端憑證的 Base64 編碼 SHA-256 雜湊。僅面板使用 — 不寫入伺服器的 xray 設定,但會包含在分享連結中,以便用戶端釘選憑證。",
"pinnedPeerCertSha256Placeholder": "base64 雜湊,以逗號分隔",
"generateRandomPin": "產生隨機雜湊",
"getNewEchCert": "取得新 ECH 憑證",
"show": "顯示",
"xver": "Xver",