| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // +build json
- package transport
- import (
- "encoding/json"
- "v2ray.com/core/common/loader"
- 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"
- )
- 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 {
- this.NetworkSettings = append(this.NetworkSettings, &internet.NetworkSettings{
- Network: v2net.Network_TCP,
- Settings: loader.NewTypedSettings(jsonConfig.TCPConfig),
- })
- }
- if jsonConfig.KCPConfig != nil {
- this.NetworkSettings = append(this.NetworkSettings, &internet.NetworkSettings{
- Network: v2net.Network_KCP,
- Settings: loader.NewTypedSettings(jsonConfig.KCPConfig),
- })
- }
- if jsonConfig.WSConfig != nil {
- this.NetworkSettings = append(this.NetworkSettings, &internet.NetworkSettings{
- Network: v2net.Network_WebSocket,
- Settings: loader.NewTypedSettings(jsonConfig.WSConfig),
- })
- }
- return nil
- }
|