VLESS practice: Use user-sent VLESS UUID's last byte as vlessRoute for routing rules

https://github.com/XTLS/Xray-core/pull/5009#issuecomment-3194262087
This commit is contained in:
RPRX
2025-08-17 13:55:18 +00:00
parent de23e51077
commit 105b306d07
15 changed files with 146 additions and 89 deletions

View File

@@ -217,6 +217,7 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection s
Buffer: buf.MultiBuffer{first},
}
var vlessRoute byte
var request *protocol.RequestHeader
var requestAddons *encoding.Addons
var err error
@@ -227,7 +228,7 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection s
if isfb && firstLen < 18 {
err = errors.New("fallback directly")
} else {
request, requestAddons, isfb, err = encoding.DecodeRequestHeader(isfb, first, reader, h.validator)
vlessRoute, request, requestAddons, isfb, err = encoding.DecodeRequestHeader(isfb, first, reader, h.validator)
}
if err != nil {
@@ -455,6 +456,7 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection s
}
inbound.Name = "vless"
inbound.User = request.User
inbound.VlessRoute = net.Port(vlessRoute)
account := request.User.Account.(*vless.MemoryAccount)