Commit graph

2 commits

Author SHA1 Message Date
reza
b0d9fe156b feat(socks): add IsSocksLike helper, info-modal display, and tests
Second-pass on the SOCKS5 inbound scaffold (PR #4452). This commit
ticks off two of the 'help wanted' items from the scaffold's TODO
list and tightens the existing dispatcher so that adding a new
protocol-without-link in the future is a one-line change instead
of an audit through every switch.

Backend (Go)
------------
* database/model/model.go: new IsSocksLike(p) helper that returns
  true for both 'socks' and 'mixed'. Mirrors the existing IsHysteria
  pattern (one helper, two underlying constants) so call sites
  don't have to re-list both protocols every time they need to
  treat 'this inbound speaks SOCKS5' uniformly.

* database/model/model_test.go:
  - TestSocksProtocolConstant pins the wire value 'socks' so a
    future refactor can't silently rename it (which would orphan
    every stored inbound row).
  - TestIsSocksLike covers Socks, Mixed, every other declared
    protocol, the empty Protocol, and a wrong-case input.

* sub/subService.go GetLink:
  - Replace bare string literals ('vmess', 'vless', …) with the
    typed model.* constants so a typo can't silently fall through.
  - Add an explicit link-less case for
    Socks/Mixed/HTTP/Tunnel/WireGuard with a comment explaining
    why we don't emit 'socks://…' URLs (follow-up #1 in the
    scaffold PR description).

Frontend (JS/Vue)
-----------------
* frontend/src/models/dbinbound.js: add 'isSocks' getter (pure
  SOCKS5 inbound) and 'isSocksLike' getter (Socks OR Mixed), matching
  the pattern used by isMixed/isHTTP/isWireguard above.

* frontend/src/pages/inbounds/InboundInfoModal.vue: the existing
  'Mixed' info block (auth/UDP/IP/accounts) now also renders for
  the new SOCKS protocol via isSocksLike, since Xray's mixed and
  socks inbounds accept the exact same settings keys. Without
  this, opening the info modal for a SOCKS inbound would show an
  empty body. Header comment updated to list SOCKS alongside
  Mixed/HTTP/Tunnel.

Still outstanding from the scaffold's TODO list:
  - Xray runtime AddUser hooks (web/service/inbound.go)
  - Translations for the 'socks' label across all 13 locales
  - Routing UI protocol == socks helper
2026-05-18 14:56:41 +00:00
pwnnex
eb4791a1cd hysteria: also accept "hysteria2" protocol string
UI stores v1 and v2 both as "hysteria" with settings.version, but
inbounds that came in from imports / manual SQL can carry the
literal "hysteria2" string and get silently dropped everywhere we
switch on protocol.

Add Hysteria2 constant + IsHysteria helper, use it in the places
that gate on protocol (sub SQL, getLink, genHysteriaLink, clash
buildProxy, json gen, inbound.go validation, xray AddUser).

Existing "hysteria" inbounds are untouched.

closes #4081
2026-04-22 18:55:09 +03:00