fix NetworkSettings decode for sing

This commit is contained in:
yuzuki999 2023-08-27 13:20:31 +08:00
parent de8402ecd5
commit e51591c7f7

View File

@ -86,6 +86,12 @@ func getInboundOptions(tag string, info *panel.NodeInfo, c *conf.Options) (optio
case "tcp": case "tcp":
t.Type = "" t.Type = ""
case "ws": case "ws":
var (
path string
ed int
headers map[string]option.Listable[string]
)
if len(n.NetworkSettings) != 0 {
network := WsNetworkConfig{} network := WsNetworkConfig{}
err := json.Unmarshal(n.NetworkSettings, &network) err := json.Unmarshal(n.NetworkSettings, &network)
if err != nil { if err != nil {
@ -96,25 +102,29 @@ func getInboundOptions(tag string, info *panel.NodeInfo, c *conf.Options) (optio
if err != nil { if err != nil {
return option.Inbound{}, fmt.Errorf("parse path error: %s", err) return option.Inbound{}, fmt.Errorf("parse path error: %s", err)
} }
ed, _ := strconv.Atoi(u.Query().Get("ed")) path = u.Path
h := make(map[string]option.Listable[string], len(network.Headers)) ed, _ = strconv.Atoi(u.Query().Get("ed"))
headers = make(map[string]option.Listable[string], len(network.Headers))
for k, v := range network.Headers { for k, v := range network.Headers {
h[k] = option.Listable[string]{ headers[k] = option.Listable[string]{
v, v,
} }
} }
}
t.WebsocketOptions = option.V2RayWebsocketOptions{ t.WebsocketOptions = option.V2RayWebsocketOptions{
Path: u.Path, Path: path,
EarlyDataHeaderName: "Sec-WebSocket-Protocol", EarlyDataHeaderName: "Sec-WebSocket-Protocol",
MaxEarlyData: uint32(ed), MaxEarlyData: uint32(ed),
Headers: h, Headers: headers,
} }
case "grpc": case "grpc":
if len(n.NetworkSettings) != 0 {
err := json.Unmarshal(n.NetworkSettings, &t.GRPCOptions) err := json.Unmarshal(n.NetworkSettings, &t.GRPCOptions)
if err != nil { if err != nil {
return option.Inbound{}, fmt.Errorf("decode NetworkSettings error: %s", err) return option.Inbound{}, fmt.Errorf("decode NetworkSettings error: %s", err)
} }
} }
}
if info.Type == "vless" { if info.Type == "vless" {
in.Type = "vless" in.Type = "vless"
in.VLESSOptions = option.VLESSInboundOptions{ in.VLESSOptions = option.VLESSInboundOptions{