From 1de7accd7cfea4aa834fbcf80ff05e0f072971b4 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Tue, 16 Sep 2025 13:41:05 +0200 Subject: vnext removed --- sub/subJsonService.go | 59 ++++++++++++++------------------------------------- sub/subService.go | 8 ------- 2 files changed, 16 insertions(+), 51 deletions(-) (limited to 'sub') diff --git a/sub/subJsonService.go b/sub/subJsonService.go index def8b855..d3eceb55 100644 --- a/sub/subJsonService.go +++ b/sub/subJsonService.go @@ -292,34 +292,25 @@ func (s *SubJsonService) realityData(rData map[string]any) map[string]any { func (s *SubJsonService) genVnext(inbound *model.Inbound, streamSettings json_util.RawMessage, client model.Client, encryption string) json_util.RawMessage { outbound := Outbound{} - usersData := make([]UserVnext, 1) - - usersData[0].ID = client.ID - usersData[0].Level = 8 - if inbound.Protocol == model.VMESS { - usersData[0].Security = client.Security - } - if inbound.Protocol == model.VLESS { - usersData[0].Flow = client.Flow - usersData[0].Encryption = encryption - } - - vnextData := make([]VnextSetting, 1) - vnextData[0] = VnextSetting{ - Address: inbound.Listen, - Port: inbound.Port, - Users: usersData, - } - outbound.Protocol = string(inbound.Protocol) outbound.Tag = "proxy" if s.mux != "" { outbound.Mux = json_util.RawMessage(s.mux) } outbound.StreamSettings = streamSettings - outbound.Settings = OutboundSettings{ - Vnext: vnextData, + // Emit flattened settings inside Settings to match new Xray format + settings := make(map[string]any) + settings["address"] = inbound.Listen + settings["port"] = inbound.Port + settings["id"] = client.ID + if inbound.Protocol == model.VLESS { + settings["flow"] = client.Flow + settings["encryption"] = encryption + } + if inbound.Protocol == model.VMESS { + settings["security"] = client.Security } + outbound.Settings = settings result, _ := json.MarshalIndent(outbound, "", " ") return result @@ -356,8 +347,8 @@ func (s *SubJsonService) genServer(inbound *model.Inbound, streamSettings json_u outbound.Mux = json_util.RawMessage(s.mux) } outbound.StreamSettings = streamSettings - outbound.Settings = OutboundSettings{ - Servers: serverData, + outbound.Settings = map[string]any{ + "servers": serverData, } result, _ := json.MarshalIndent(outbound, "", " ") @@ -369,28 +360,10 @@ type Outbound struct { Tag string `json:"tag"` StreamSettings json_util.RawMessage `json:"streamSettings"` Mux json_util.RawMessage `json:"mux,omitempty"` - ProxySettings map[string]any `json:"proxySettings,omitempty"` - Settings OutboundSettings `json:"settings,omitempty"` -} - -type OutboundSettings struct { - Vnext []VnextSetting `json:"vnext,omitempty"` - Servers []ServerSetting `json:"servers,omitempty"` -} - -type VnextSetting struct { - Address string `json:"address"` - Port int `json:"port"` - Users []UserVnext `json:"users"` + Settings map[string]any `json:"settings,omitempty"` } -type UserVnext struct { - Encryption string `json:"encryption,omitempty"` - Flow string `json:"flow,omitempty"` - ID string `json:"id"` - Security string `json:"security,omitempty"` - Level int `json:"level"` -} +// Legacy vnext-related structs removed for flattened schema type ServerSetting struct { Password string `json:"password"` diff --git a/sub/subService.go b/sub/subService.go index ffad23a2..9f2d93f5 100644 --- a/sub/subService.go +++ b/sub/subService.go @@ -5,7 +5,6 @@ import ( "fmt" "net" "net/url" - "strconv" "strings" "time" @@ -1139,10 +1138,3 @@ func getHostFromXFH(s string) (string, error) { } return s, nil } - -func parseInt64(s string) (int64, error) { - // handle potential quotes - s = strings.Trim(s, "\"'") - n, err := strconv.ParseInt(s, 10, 64) - return n, err -} -- cgit v1.2.3