| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | // +build jsonpackage transportimport (	"encoding/json"	v2net "v2ray.com/core/common/net"	"v2ray.com/core/transport/internet"	"v2ray.com/core/transport/internet/kcp"	"v2ray.com/core/transport/internet/tcp"	"v2ray.com/core/transport/internet/ws"	"github.com/golang/protobuf/ptypes")func (this *Config) UnmarshalJSON(data []byte) error {	type JsonConfig struct {		TCPConfig *tcp.Config `json:"tcpSettings"`		KCPConfig *kcp.Config `json:"kcpSettings"`		WSConfig  *ws.Config  `json:"wsSettings"`	}	jsonConfig := &JsonConfig{}	if err := json.Unmarshal(data, jsonConfig); err != nil {		return err	}	if jsonConfig.TCPConfig != nil {		any, err := ptypes.MarshalAny(jsonConfig.TCPConfig)		if err != nil {			return err		}		this.NetworkSettings = append(this.NetworkSettings, &internet.NetworkSettings{			Network:  v2net.Network_TCP,			Settings: any,		})	}	if jsonConfig.KCPConfig != nil {		any, err := ptypes.MarshalAny(jsonConfig.KCPConfig)		if err != nil {			return err		}		this.NetworkSettings = append(this.NetworkSettings, &internet.NetworkSettings{			Network:  v2net.Network_KCP,			Settings: any,		})	}	if jsonConfig.WSConfig != nil {		any, err := ptypes.MarshalAny(jsonConfig.WSConfig)		if err != nil {			return err		}		this.NetworkSettings = append(this.NetworkSettings, &internet.NetworkSettings{			Network:  v2net.Network_WebSocket,			Settings: any,		})	}	return nil}
 |