| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- // +build json
- package transport
- import (
- "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
- }
|