Files
3m-ui/backend/internal/system
Z User a3ee711f5d feat(warp): add MASQUE protocol option (Cloudflare WARP default)
Cloudflare WARP now defaults to the MASQUE protocol (RFC 9298) per the
registration API's policy.tunnel_protocol field. Add a new
WARPMasqueTemplate that emits mihomo's masque outbound schema
(https://wiki.metacubex.one/config/proxies/masque/):
proxies:
- name: WARP-Masque
type: masque
server: engage.cloudflareclient.com
port: 2408
ip: 172.16.0.2/32
ipv6: 2606:4700:110:.../128
private-key: <same X25519 key as wireguard>
public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
udp: true
mtu: 1280
Key differences vs WireGuard WARP:
- ip/ipv6 carry CIDR (/32 / /128) per masque schema
- No reserved field (wireguard-only)
- Optional network field: '' (UDP) | 'h2' | 'h3-l4proxy'
- Same X25519 keypair from WARP register (no separate registration needed)
Backend:
- New WARPMasqueTemplate function + ensureCIDR helper
- WARPRegisterResult gains MasqueYAML field (always populated alongside YAML)
- /system/templates/warp/register endpoint accepts ?mode= query param:
- mode=wireguard (default) → returns WireGuard YAML in 'yaml' field
- mode=masque → returns MASQUE YAML in 'yaml' field
- mode=both → returns full result with both YAMLs
- 4 new unit tests for masque template (CIDR, network, validation, existing CIDR)
Frontend:
- Settings page WARP card adds Segmented toggle (WireGuard / MASQUE)
- Register button label reflects selected protocol
- i18n: warpWireguard + warpMasque keys across 18 locales
Tests: 23/23 backend PASS, frontend lint 0 errors.
feat(warp): add MASQUE protocol option (Cloudflare WARP default)
Cloudflare WARP now defaults to the MASQUE protocol (RFC 9298) per the
registration API's policy.tunnel_protocol field. Add a new
WARPMasqueTemplate that emits mihomo's masque outbound schema
(https://wiki.metacubex.one/config/proxies/masque/):
proxies:
- name: WARP-Masque
type: masque
server: engage.cloudflareclient.com
port: 2408
ip: 172.16.0.2/32
ipv6: 2606:4700:110:.../128
private-key: <same X25519 key as wireguard>
public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
udp: true
mtu: 1280
Key differences vs WireGuard WARP:
- ip/ipv6 carry CIDR (/32 / /128) per masque schema
- No reserved field (wireguard-only)
- Optional network field: '' (UDP) | 'h2' | 'h3-l4proxy'
- Same X25519 keypair from WARP register (no separate registration needed)
Backend:
- New WARPMasqueTemplate function + ensureCIDR helper
- WARPRegisterResult gains MasqueYAML field (always populated alongside YAML)
- /system/templates/warp/register endpoint accepts ?mode= query param:
- mode=wireguard (default) → returns WireGuard YAML in 'yaml' field
- mode=masque → returns MASQUE YAML in 'yaml' field
- mode=both → returns full result with both YAMLs
- 4 new unit tests for masque template (CIDR, network, validation, existing CIDR)
Frontend:
- Settings page WARP card adds Segmented toggle (WireGuard / MASQUE)
- Register button label reflects selected protocol
- i18n: warpWireguard + warpMasque keys across 18 locales
Tests: 23/23 backend PASS, frontend lint 0 errors.
feat(warp): add MASQUE protocol option (Cloudflare WARP default)
Cloudflare WARP now defaults to the MASQUE protocol (RFC 9298) per the
registration API's policy.tunnel_protocol field. Add a new
WARPMasqueTemplate that emits mihomo's masque outbound schema
(https://wiki.metacubex.one/config/proxies/masque/):
proxies:
- name: WARP-Masque
type: masque
server: engage.cloudflareclient.com
port: 2408
ip: 172.16.0.2/32
ipv6: 2606:4700:110:.../128
private-key: <same X25519 key as wireguard>
public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
udp: true
mtu: 1280
Key differences vs WireGuard WARP:
- ip/ipv6 carry CIDR (/32 / /128) per masque schema
- No reserved field (wireguard-only)
- Optional network field: '' (UDP) | 'h2' | 'h3-l4proxy'
- Same X25519 keypair from WARP register (no separate registration needed)
Backend:
- New WARPMasqueTemplate function + ensureCIDR helper
- WARPRegisterResult gains MasqueYAML field (always populated alongside YAML)
- /system/templates/warp/register endpoint accepts ?mode= query param:
- mode=wireguard (default) → returns WireGuard YAML in 'yaml' field
- mode=masque → returns MASQUE YAML in 'yaml' field
- mode=both → returns full result with both YAMLs
- 4 new unit tests for masque template (CIDR, network, validation, existing CIDR)
Frontend:
- Settings page WARP card adds Segmented toggle (WireGuard / MASQUE)
- Register button label reflects selected protocol
- i18n: warpWireguard + warpMasque keys across 18 locales
Tests: 23/23 backend PASS, frontend lint 0 errors.
feat(warp): add MASQUE protocol option (Cloudflare WARP default)
Cloudflare WARP now defaults to the MASQUE protocol (RFC 9298) per the
registration API's policy.tunnel_protocol field. Add a new
WARPMasqueTemplate that emits mihomo's masque outbound schema
(https://wiki.metacubex.one/config/proxies/masque/):
proxies:
- name: WARP-Masque
type: masque
server: engage.cloudflareclient.com
port: 2408
ip: 172.16.0.2/32
ipv6: 2606:4700:110:.../128
private-key: <same X25519 key as wireguard>
public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
udp: true
mtu: 1280
Key differences vs WireGuard WARP:
- ip/ipv6 carry CIDR (/32 / /128) per masque schema
- No reserved field (wireguard-only)
- Optional network field: '' (UDP) | 'h2' | 'h3-l4proxy'
- Same X25519 keypair from WARP register (no separate registration needed)
Backend:
- New WARPMasqueTemplate function + ensureCIDR helper
- WARPRegisterResult gains MasqueYAML field (always populated alongside YAML)
- /system/templates/warp/register endpoint accepts ?mode= query param:
- mode=wireguard (default) → returns WireGuard YAML in 'yaml' field
- mode=masque → returns MASQUE YAML in 'yaml' field
- mode=both → returns full result with both YAMLs
- 4 new unit tests for masque template (CIDR, network, validation, existing CIDR)
Frontend:
- Settings page WARP card adds Segmented toggle (WireGuard / MASQUE)
- Register button label reflects selected protocol
- i18n: warpWireguard + warpMasque keys across 18 locales
Tests: 23/23 backend PASS, frontend lint 0 errors.
feat(warp): add MASQUE protocol option (Cloudflare WARP default)
Cloudflare WARP now defaults to the MASQUE protocol (RFC 9298) per the
registration API's policy.tunnel_protocol field. Add a new
WARPMasqueTemplate that emits mihomo's masque outbound schema
(https://wiki.metacubex.one/config/proxies/masque/):
proxies:
- name: WARP-Masque
type: masque
server: engage.cloudflareclient.com
port: 2408
ip: 172.16.0.2/32
ipv6: 2606:4700:110:.../128
private-key: <same X25519 key as wireguard>
public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
udp: true
mtu: 1280
Key differences vs WireGuard WARP:
- ip/ipv6 carry CIDR (/32 / /128) per masque schema
- No reserved field (wireguard-only)
- Optional network field: '' (UDP) | 'h2' | 'h3-l4proxy'
- Same X25519 keypair from WARP register (no separate registration needed)
Backend:
- New WARPMasqueTemplate function + ensureCIDR helper
- WARPRegisterResult gains MasqueYAML field (always populated alongside YAML)
- /system/templates/warp/register endpoint accepts ?mode= query param:
- mode=wireguard (default) → returns WireGuard YAML in 'yaml' field
- mode=masque → returns MASQUE YAML in 'yaml' field
- mode=both → returns full result with both YAMLs
- 4 new unit tests for masque template (CIDR, network, validation, existing CIDR)
Frontend:
- Settings page WARP card adds Segmented toggle (WireGuard / MASQUE)
- Register button label reflects selected protocol
- i18n: warpWireguard + warpMasque keys across 18 locales
Tests: 23/23 backend PASS, frontend lint 0 errors.
feat(warp): add MASQUE protocol option (Cloudflare WARP default)
Cloudflare WARP now defaults to the MASQUE protocol (RFC 9298) per the
registration API's policy.tunnel_protocol field. Add a new
WARPMasqueTemplate that emits mihomo's masque outbound schema
(https://wiki.metacubex.one/config/proxies/masque/):
proxies:
- name: WARP-Masque
type: masque
server: engage.cloudflareclient.com
port: 2408
ip: 172.16.0.2/32
ipv6: 2606:4700:110:.../128
private-key: <same X25519 key as wireguard>
public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
udp: true
mtu: 1280
Key differences vs WireGuard WARP:
- ip/ipv6 carry CIDR (/32 / /128) per masque schema
- No reserved field (wireguard-only)
- Optional network field: '' (UDP) | 'h2' | 'h3-l4proxy'
- Same X25519 keypair from WARP register (no separate registration needed)
Backend:
- New WARPMasqueTemplate function + ensureCIDR helper
- WARPRegisterResult gains MasqueYAML field (always populated alongside YAML)
- /system/templates/warp/register endpoint accepts ?mode= query param:
- mode=wireguard (default) → returns WireGuard YAML in 'yaml' field
- mode=masque → returns MASQUE YAML in 'yaml' field
- mode=both → returns full result with both YAMLs
- 4 new unit tests for masque template (CIDR, network, validation, existing CIDR)
Frontend:
- Settings page WARP card adds Segmented toggle (WireGuard / MASQUE)
- Register button label reflects selected protocol
- i18n: warpWireguard + warpMasque keys across 18 locales
Tests: 23/23 backend PASS, frontend lint 0 errors.
feat(warp): add MASQUE protocol option (Cloudflare WARP default)
Cloudflare WARP now defaults to the MASQUE protocol (RFC 9298) per the
registration API's policy.tunnel_protocol field. Add a new
WARPMasqueTemplate that emits mihomo's masque outbound schema
(https://wiki.metacubex.one/config/proxies/masque/):
proxies:
- name: WARP-Masque
type: masque
server: engage.cloudflareclient.com
port: 2408
ip: 172.16.0.2/32
ipv6: 2606:4700:110:.../128
private-key: <same X25519 key as wireguard>
public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
udp: true
mtu: 1280
Key differences vs WireGuard WARP:
- ip/ipv6 carry CIDR (/32 / /128) per masque schema
- No reserved field (wireguard-only)
- Optional network field: '' (UDP) | 'h2' | 'h3-l4proxy'
- Same X25519 keypair from WARP register (no separate registration needed)
Backend:
- New WARPMasqueTemplate function + ensureCIDR helper
- WARPRegisterResult gains MasqueYAML field (always populated alongside YAML)
- /system/templates/warp/register endpoint accepts ?mode= query param:
- mode=wireguard (default) → returns WireGuard YAML in 'yaml' field
- mode=masque → returns MASQUE YAML in 'yaml' field
- mode=both → returns full result with both YAMLs
- 4 new unit tests for masque template (CIDR, network, validation, existing CIDR)
Frontend:
- Settings page WARP card adds Segmented toggle (WireGuard / MASQUE)
- Register button label reflects selected protocol
- i18n: warpWireguard + warpMasque keys across 18 locales
Tests: 23/23 backend PASS, frontend lint 0 errors.
feat(warp): add MASQUE protocol option (Cloudflare WARP default)
Cloudflare WARP now defaults to the MASQUE protocol (RFC 9298) per the
registration API's policy.tunnel_protocol field. Add a new
WARPMasqueTemplate that emits mihomo's masque outbound schema
(https://wiki.metacubex.one/config/proxies/masque/):
proxies:
- name: WARP-Masque
type: masque
server: engage.cloudflareclient.com
port: 2408
ip: 172.16.0.2/32
ipv6: 2606:4700:110:.../128
private-key: <same X25519 key as wireguard>
public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
udp: true
mtu: 1280
Key differences vs WireGuard WARP:
- ip/ipv6 carry CIDR (/32 / /128) per masque schema
- No reserved field (wireguard-only)
- Optional network field: '' (UDP) | 'h2' | 'h3-l4proxy'
- Same X25519 keypair from WARP register (no separate registration needed)
Backend:
- New WARPMasqueTemplate function + ensureCIDR helper
- WARPRegisterResult gains MasqueYAML field (always populated alongside YAML)
- /system/templates/warp/register endpoint accepts ?mode= query param:
- mode=wireguard (default) → returns WireGuard YAML in 'yaml' field
- mode=masque → returns MASQUE YAML in 'yaml' field
- mode=both → returns full result with both YAMLs
- 4 new unit tests for masque template (CIDR, network, validation, existing CIDR)
Frontend:
- Settings page WARP card adds Segmented toggle (WireGuard / MASQUE)
- Register button label reflects selected protocol
- i18n: warpWireguard + warpMasque keys across 18 locales
Tests: 23/23 backend PASS, frontend lint 0 errors.
feat(warp): add MASQUE protocol option (Cloudflare WARP default)
Cloudflare WARP now defaults to the MASQUE protocol (RFC 9298) per the
registration API's policy.tunnel_protocol field. Add a new
WARPMasqueTemplate that emits mihomo's masque outbound schema
(https://wiki.metacubex.one/config/proxies/masque/):
proxies:
- name: WARP-Masque
type: masque
server: engage.cloudflareclient.com
port: 2408
ip: 172.16.0.2/32
ipv6: 2606:4700:110:.../128
private-key: <same X25519 key as wireguard>
public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
udp: true
mtu: 1280
Key differences vs WireGuard WARP:
- ip/ipv6 carry CIDR (/32 / /128) per masque schema
- No reserved field (wireguard-only)
- Optional network field: '' (UDP) | 'h2' | 'h3-l4proxy'
- Same X25519 keypair from WARP register (no separate registration needed)
Backend:
- New WARPMasqueTemplate function + ensureCIDR helper
- WARPRegisterResult gains MasqueYAML field (always populated alongside YAML)
- /system/templates/warp/register endpoint accepts ?mode= query param:
- mode=wireguard (default) → returns WireGuard YAML in 'yaml' field
- mode=masque → returns MASQUE YAML in 'yaml' field
- mode=both → returns full result with both YAMLs
- 4 new unit tests for masque template (CIDR, network, validation, existing CIDR)
Frontend:
- Settings page WARP card adds Segmented toggle (WireGuard / MASQUE)
- Register button label reflects selected protocol
- i18n: warpWireguard + warpMasque keys across 18 locales
Tests: 23/23 backend PASS, frontend lint 0 errors.
feat(warp): add MASQUE protocol option (Cloudflare WARP default)
Cloudflare WARP now defaults to the MASQUE protocol (RFC 9298) per the
registration API's policy.tunnel_protocol field. Add a new
WARPMasqueTemplate that emits mihomo's masque outbound schema
(https://wiki.metacubex.one/config/proxies/masque/):
proxies:
- name: WARP-Masque
type: masque
server: engage.cloudflareclient.com
port: 2408
ip: 172.16.0.2/32
ipv6: 2606:4700:110:.../128
private-key: <same X25519 key as wireguard>
public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
udp: true
mtu: 1280
Key differences vs WireGuard WARP:
- ip/ipv6 carry CIDR (/32 / /128) per masque schema
- No reserved field (wireguard-only)
- Optional network field: '' (UDP) | 'h2' | 'h3-l4proxy'
- Same X25519 keypair from WARP register (no separate registration needed)
Backend:
- New WARPMasqueTemplate function + ensureCIDR helper
- WARPRegisterResult gains MasqueYAML field (always populated alongside YAML)
- /system/templates/warp/register endpoint accepts ?mode= query param:
- mode=wireguard (default) → returns WireGuard YAML in 'yaml' field
- mode=masque → returns MASQUE YAML in 'yaml' field
- mode=both → returns full result with both YAMLs
- 4 new unit tests for masque template (CIDR, network, validation, existing CIDR)
Frontend:
- Settings page WARP card adds Segmented toggle (WireGuard / MASQUE)
- Register button label reflects selected protocol
- i18n: warpWireguard + warpMasque keys across 18 locales
Tests: 23/23 backend PASS, frontend lint 0 errors.
feat(warp): add MASQUE protocol option (Cloudflare WARP default)
Cloudflare WARP now defaults to the MASQUE protocol (RFC 9298) per the
registration API's policy.tunnel_protocol field. Add a new
WARPMasqueTemplate that emits mihomo's masque outbound schema
(https://wiki.metacubex.one/config/proxies/masque/):
proxies:
- name: WARP-Masque
type: masque
server: engage.cloudflareclient.com
port: 2408
ip: 172.16.0.2/32
ipv6: 2606:4700:110:.../128
private-key: <same X25519 key as wireguard>
public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
udp: true
mtu: 1280
Key differences vs WireGuard WARP:
- ip/ipv6 carry CIDR (/32 / /128) per masque schema
- No reserved field (wireguard-only)
- Optional network field: '' (UDP) | 'h2' | 'h3-l4proxy'
- Same X25519 keypair from WARP register (no separate registration needed)
Backend:
- New WARPMasqueTemplate function + ensureCIDR helper
- WARPRegisterResult gains MasqueYAML field (always populated alongside YAML)
- /system/templates/warp/register endpoint accepts ?mode= query param:
- mode=wireguard (default) → returns WireGuard YAML in 'yaml' field
- mode=masque → returns MASQUE YAML in 'yaml' field
- mode=both → returns full result with both YAMLs
- 4 new unit tests for masque template (CIDR, network, validation, existing CIDR)
Frontend:
- Settings page WARP card adds Segmented toggle (WireGuard / MASQUE)
- Register button label reflects selected protocol
- i18n: warpWireguard + warpMasque keys across 18 locales
Tests: 23/23 backend PASS, frontend lint 0 errors.
feat(warp): add MASQUE protocol option (Cloudflare WARP default)
Cloudflare WARP now defaults to the MASQUE protocol (RFC 9298) per the
registration API's policy.tunnel_protocol field. Add a new
WARPMasqueTemplate that emits mihomo's masque outbound schema
(https://wiki.metacubex.one/config/proxies/masque/):
proxies:
- name: WARP-Masque
type: masque
server: engage.cloudflareclient.com
port: 2408
ip: 172.16.0.2/32
ipv6: 2606:4700:110:.../128
private-key: <same X25519 key as wireguard>
public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
udp: true
mtu: 1280
Key differences vs WireGuard WARP:
- ip/ipv6 carry CIDR (/32 / /128) per masque schema
- No reserved field (wireguard-only)
- Optional network field: '' (UDP) | 'h2' | 'h3-l4proxy'
- Same X25519 keypair from WARP register (no separate registration needed)
Backend:
- New WARPMasqueTemplate function + ensureCIDR helper
- WARPRegisterResult gains MasqueYAML field (always populated alongside YAML)
- /system/templates/warp/register endpoint accepts ?mode= query param:
- mode=wireguard (default) → returns WireGuard YAML in 'yaml' field
- mode=masque → returns MASQUE YAML in 'yaml' field
- mode=both → returns full result with both YAMLs
- 4 new unit tests for masque template (CIDR, network, validation, existing CIDR)
Frontend:
- Settings page WARP card adds Segmented toggle (WireGuard / MASQUE)
- Register button label reflects selected protocol
- i18n: warpWireguard + warpMasque keys across 18 locales
Tests: 23/23 backend PASS, frontend lint 0 errors.
2026-09-15 11:04:02 +00:00
..