Files
elmprodvpn/docs/phase-e/E5_SINGBOX_CLIENT_FORM_MATRIX.md

4.4 KiB
Raw Permalink Blame History

E5 SingBox Client Form Matrix (UI-first, VLESS baseline)

Дата: 2026-03-09
Статус: active
Владелец: Engineering

1) Что берём из твоего примера

  • Берём структуру "блоками", как на скрине:
    • базовый блок,
    • transport,
    • security,
    • sniffing,
    • advanced toggles.
  • Не копируем серверные поля биллинга/лимитов/истечения, потому что это не клиентский outbound.

2) Что исключаем (server-only)

  • Email, Subscription, Total used, Traffic reset, Expire date, Fallbacks (как серверный inbound list), и прочие учёт/статистика-поля.

3) Клиентская форма (VLESS + Reality) — целевая MVP

3.1 Block A: Profile

UI field JSON path Required Notes
Profile name profile.name yes имя карточки
Enabled profile.enabled yes локальный toggle
Protocol outbound.type yes для этого шаблона фикс vless

3.2 Block B: Server/Auth

UI field JSON path Required Notes
Address outbound.server yes домен/IP
Port outbound.server_port yes 1..65535
UUID outbound.uuid yes vless user id
Flow outbound.flow no напр. xtls-rprx-vision
Packet encoding outbound.packet_encoding no default none

3.3 Block C: Transport

UI field JSON path Required Notes
Transport type outbound.transport.type no `tcp
Path outbound.transport.path depends для ws/http/httpupgrade
Host/Headers outbound.transport.headers no advanced
Service name outbound.transport.service_name depends для grpc

3.4 Block D: Security

UI field JSON path Required Notes
Security mode outbound.tls.enabled + outbound.tls.reality.enabled yes `none
SNI outbound.tls.server_name depends для tls/reality
uTLS fingerprint outbound.tls.utls.fingerprint no `chrome
Reality public key outbound.tls.reality.public_key depends must для reality
Reality short id outbound.tls.reality.short_id no обычно короткий hex
Insecure outbound.tls.insecure no advanced toggle

3.5 Block E: Sniffing/Local inbound (опционально)

UI field JSON path Required Notes
Sniffing enabled inbounds[*].sniff no если используем локальный socks inbound в generated config
Sniff override destination inbounds[*].sniff_override_destination no advanced

3.6 Block F: Advanced Dial

UI field JSON path Required Notes
Network outbound.network no `tcp
Connect timeout outbound.connect_timeout no duration
Bind interface outbound.bind_interface no advanced
Routing mark outbound.routing_mark no advanced
Multiplex outbound.multiplex no advanced group
UDP over TCP outbound.udp_over_tcp no advanced group

4) Guardrails (обязательные)

  • CV-001: при security=reality автоматически tls.enabled=true, tls.reality.enabled=true.
  • CV-002: при security=reality поле reality.public_key обязательно.
  • CV-003: при transport=grpc поле service_name обязательно.
  • CV-004: при transport=ws|http|httpupgrade поле path обязательно.
  • CV-005: address/port/uuid обязательны всегда.

5) UI-компоновка (desktop)

  • Compact panel:
    • Profile,
    • Server/Auth,
    • Transport,
    • Security,
    • collapsed Advanced.
  • Actions:
    • Preview render,
    • Validate profile,
    • Apply profile,
    • History,
    • Rollback profile.

6) Расширение на другие протоколы

  • Сохраняем те же блоки UI, меняются только поля блока Server/Auth + часть Security/Transport.
  • То есть форма будет модульной, а не отдельное "окно под каждый протокол".