Release 3X-UI for Docker / build (push) Canceled after 0s
Release 3X-UI / build (386) (push) Canceled after 0s
Release 3X-UI / build (amd64) (push) Canceled after 0s
Release 3X-UI / build (arm64) (push) Canceled after 0s
Release 3X-UI / build (armv5) (push) Canceled after 0s
Release 3X-UI / build (armv6) (push) Canceled after 0s
Release 3X-UI / build (armv7) (push) Canceled after 0s
Release 3X-UI / build (s390x) (push) Canceled after 0s
Release 3X-UI / Build for Windows (amd64) (push) Canceled after 0s
Release 3X-UI / Publish rolling dev release (push) Canceled after 0s
35 lines
729 B
Go
35 lines
729 B
Go
package sub
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
// xray reads the route from UUID bytes 6-7 (net.PortFromBytes) and masks them to
|
|
// zero before auth, so baking a 0-65535 value into the 3rd group routes without
|
|
// breaking the user match. Empty/invalid/non-UUID input is returned unchanged.
|
|
func applyVlessRoute(id, route string) string {
|
|
route = strings.TrimSpace(route)
|
|
if route == "" {
|
|
return id
|
|
}
|
|
n, err := strconv.Atoi(route)
|
|
if err != nil || n < 0 || n > 65535 {
|
|
return id
|
|
}
|
|
u, err := uuid.Parse(id)
|
|
if err != nil {
|
|
return id
|
|
}
|
|
u[6] = byte(n >> 8)
|
|
u[7] = byte(n)
|
|
return u.String()
|
|
}
|
|
|
|
func hostVlessRoute(ep map[string]any) string {
|
|
v, _ := ep["vlessRoute"].(string)
|
|
return v
|
|
}
|