| 12345678910111213141516171819202122232425262728293031323334 |
- 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
- }
|