feat(warp): register WARP over MASQUE from the WARP modal

xray-core's masque transport reaches Cloudflare WARP with an enrolled
ECDSA P-256 key, the endpoint's public key and the assigned tunnel
addresses, which only a WARP enrollment hands out.

A new regMasque action on /panel/api/xray/warp/:action registers a
separate WARP device and enrolls a secp256r1 key for the masque tunnel
(the API revision and client version the WARP apps enroll MASQUE keys
with). Enrolling replaces a device's WireGuard key, so it never touches
the stored WireGuard registration. It returns the PEM key pair, the
addresses and the endpoint, and the WARP modal turns them into a
warp-masque outbound (HTTP/3, Cloudflare's MASQUE SNI), or refreshes
the one already there.
This commit is contained in:
MHSanaei
2026-10-11 10:31:01 +02:00
parent b04039c2bd
commit 04cccef311
25 changed files with 477 additions and 16 deletions
+3 -1
View File
@@ -2229,7 +2229,9 @@
"warpPlusData": "بيانات WARP+",
"quota": "الحصة",
"usage": "الاستخدام",
"addOutbound": "إضافة صادر"
"addOutbound": "إضافة صادر",
"masqueDesc": "يسجّل جهاز WARP منفصلًا مخصصًا لـ MASQUE؛ ولا يتأثر تسجيل WireGuard أعلاه.",
"addMasqueOutbound": "إضافة outbound لـ WARP عبر MASQUE"
},
"dns": {
"enable": "فعل DNS",
+3 -1
View File
@@ -2347,7 +2347,9 @@
"warpPlusData": "WARP+ data",
"quota": "Quota",
"usage": "Usage",
"addOutbound": "Add outbound"
"addOutbound": "Add outbound",
"masqueDesc": "Registers a separate WARP device enrolled for MASQUE; the WireGuard registration above is not affected.",
"addMasqueOutbound": "Add WARP over MASQUE outbound"
},
"dns": {
"enable": "Enable DNS",
+3 -1
View File
@@ -2229,7 +2229,9 @@
"warpPlusData": "Datos WARP+",
"quota": "Cuota",
"usage": "Uso",
"addOutbound": "Añadir salida"
"addOutbound": "Añadir salida",
"masqueDesc": "Registra un dispositivo WARP aparte inscrito para MASQUE; el registro de WireGuard de arriba no se ve afectado.",
"addMasqueOutbound": "Añadir outbound de WARP sobre MASQUE"
},
"dns": {
"enable": "Habilitar DNS",
+3 -1
View File
@@ -2229,7 +2229,9 @@
"warpPlusData": "داده WARP+",
"quota": "سهمیه",
"usage": "مصرف",
"addOutbound": "افزودن خروجی"
"addOutbound": "افزودن خروجی",
"masqueDesc": "یک دستگاه WARP جداگانه برای MASQUE ثبت می‌کند؛ ثبت WireGuard بالا تغییری نمی‌کند.",
"addMasqueOutbound": "افزودن outbound برای WARP روی MASQUE"
},
"dns": {
"enable": "فعال کردن حل دامنه",
+3 -1
View File
@@ -2229,7 +2229,9 @@
"warpPlusData": "Data WARP+",
"quota": "Kuota",
"usage": "Penggunaan",
"addOutbound": "Tambah outbound"
"addOutbound": "Tambah outbound",
"masqueDesc": "Mendaftarkan perangkat WARP terpisah untuk MASQUE; pendaftaran WireGuard di atas tidak terpengaruh.",
"addMasqueOutbound": "Tambah outbound WARP melalui MASQUE"
},
"dns": {
"enable": "Aktifkan DNS",
+3 -1
View File
@@ -2229,7 +2229,9 @@
"warpPlusData": "WARP+ データ",
"quota": "クォータ",
"usage": "使用量",
"addOutbound": "アウトバウンドを追加"
"addOutbound": "アウトバウンドを追加",
"masqueDesc": "MASQUE 用に別の WARP デバイスを登録します。上の WireGuard の登録には影響しません。",
"addMasqueOutbound": "WARP over MASQUE のアウトバウンドを追加"
},
"dns": {
"enable": "DNSを有効にする",
+3 -1
View File
@@ -2229,7 +2229,9 @@
"warpPlusData": "Dados WARP+",
"quota": "Quota",
"usage": "Uso",
"addOutbound": "Adicionar saída"
"addOutbound": "Adicionar saída",
"masqueDesc": "Registra um dispositivo WARP separado inscrito para MASQUE; o registro WireGuard acima não é afetado.",
"addMasqueOutbound": "Adicionar outbound WARP via MASQUE"
},
"dns": {
"enable": "Ativar DNS",
+3 -1
View File
@@ -2229,7 +2229,9 @@
"warpPlusData": "WARP+ data",
"quota": "Квота",
"usage": "Использование",
"addOutbound": "Добавить исходящий"
"addOutbound": "Добавить исходящий",
"masqueDesc": "Регистрирует отдельное устройство WARP для MASQUE; регистрация WireGuard выше не затрагивается.",
"addMasqueOutbound": "Добавить аутбаунд WARP через MASQUE"
},
"dns": {
"enable": "Включить DNS",
+3 -1
View File
@@ -2229,7 +2229,9 @@
"warpPlusData": "WARP+ Veri",
"quota": "Kota",
"usage": "Kullanım",
"addOutbound": "Giden Bağlantı Ekle"
"addOutbound": "Giden Bağlantı Ekle",
"masqueDesc": "MASQUE için ayrı bir WARP cihazı kaydeder; yukarıdaki WireGuard kaydı etkilenmez.",
"addMasqueOutbound": "MASQUE üzerinden WARP outbound ekle"
},
"dns": {
"enable": "DNS'yi Etkinleştir",
+3 -1
View File
@@ -2229,7 +2229,9 @@
"warpPlusData": "WARP+ data",
"quota": "Квота",
"usage": "Використання",
"addOutbound": "Додати вихідний"
"addOutbound": "Додати вихідний",
"masqueDesc": "Реєструє окремий пристрій WARP для MASQUE; реєстрація WireGuard вище не змінюється.",
"addMasqueOutbound": "Додати аутбаунд WARP через MASQUE"
},
"dns": {
"enable": "Увімкнути DNS",
+3 -1
View File
@@ -2229,7 +2229,9 @@
"warpPlusData": "Dữ liệu WARP+",
"quota": "Hạn ngạch",
"usage": "Sử dụng",
"addOutbound": "Thêm outbound"
"addOutbound": "Thêm outbound",
"masqueDesc": "Đăng ký một thiết bị WARP riêng cho MASQUE; đăng ký WireGuard ở trên không bị ảnh hưởng.",
"addMasqueOutbound": "Thêm outbound WARP qua MASQUE"
},
"dns": {
"enable": "Kích hoạt DNS",
+3 -1
View File
@@ -2229,7 +2229,9 @@
"warpPlusData": "WARP+ 数据",
"quota": "配额",
"usage": "使用",
"addOutbound": "添加出站"
"addOutbound": "添加出站",
"masqueDesc": "为 MASQUE 单独注册一个 WARP 设备;上方的 WireGuard 注册不受影响。",
"addMasqueOutbound": "添加 WARP over MASQUE 出站"
},
"dns": {
"enable": "启用 DNS",
+3 -1
View File
@@ -2229,7 +2229,9 @@
"warpPlusData": "WARP+ 資料",
"quota": "配額",
"usage": "使用",
"addOutbound": "新增出站"
"addOutbound": "新增出站",
"masqueDesc": "為 MASQUE 另外註冊一個 WARP 裝置;上方的 WireGuard 註冊不受影響。",
"addMasqueOutbound": "新增 WARP over MASQUE 出站"
},
"dns": {
"enable": "啟用 DNS",