Skip to content
14 changes: 13 additions & 1 deletion infra/conf/vless.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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`)
}
Expand Down
3 changes: 2 additions & 1 deletion proxy/vless/vless.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@
package vless

const (
XRV = "xtls-rprx-vision"
None = "none"
XRV = "xtls-rprx-vision"
)
Loading