diff --git a/infra/conf/vless.go b/infra/conf/vless.go index 5d4ace6f..1a7341b3 100644 --- a/infra/conf/vless.go +++ b/infra/conf/vless.go @@ -32,12 +32,20 @@ type VLessInboundConfig struct { Clients []json.RawMessage `json:"clients"` Decryption string `json:"decryption"` Fallbacks []*VLessInboundFallback `json:"fallbacks"` + Flow string `json:"flow"` } // Build implements Buildable func (c *VLessInboundConfig) Build() (proto.Message, error) { config := new(inbound.Config) config.Clients = make([]*protocol.User, len(c.Clients)) + switch c.Flow { + case vless.None: + c.Flow = "" + case "", vless.XRV: + default: + return nil, errors.New(`VLESS "settings.flow" doesn't support "` + c.Flow + `" in this version`) + } for idx, rawUser := range c.Clients { user := new(protocol.User) if err := json.Unmarshal(rawUser, user); err != nil { @@ -55,7 +63,11 @@ func (c *VLessInboundConfig) Build() (proto.Message, error) { account.Id = u.String() switch account.Flow { - case "", vless.XRV: + case "": + account.Flow = c.Flow + case vless.None: + account.Flow = "" + case vless.XRV: default: return nil, errors.New(`VLESS clients: "flow" doesn't support "` + account.Flow + `" in this version`) } diff --git a/proxy/vless/vless.go b/proxy/vless/vless.go index ed63b641..bdebdca6 100644 --- a/proxy/vless/vless.go +++ b/proxy/vless/vless.go @@ -6,5 +6,6 @@ package vless const ( - XRV = "xtls-rprx-vision" + None = "none" + XRV = "xtls-rprx-vision" )