| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | // +build jsonpackage internetimport (	"encoding/json"	"strings"	"errors"	"github.com/golang/protobuf/ptypes"	v2net "v2ray.com/core/common/net"	v2tls "v2ray.com/core/transport/internet/tls")func (this *StreamConfig) UnmarshalJSON(data []byte) error {	type JSONConfig struct {		Network     *v2net.Network `json:"network"`		Security    string         `json:"security"`		TLSSettings *v2tls.Config  `json:"tlsSettings"`	}	this.Network = v2net.Network_RawTCP	jsonConfig := new(JSONConfig)	if err := json.Unmarshal(data, jsonConfig); err != nil {		return err	}	if jsonConfig.Network != nil {		this.Network = *jsonConfig.Network	}	this.SecurityType = SecurityType_None	if strings.ToLower(jsonConfig.Security) == "tls" {		this.SecurityType = SecurityType_TLS	}	if jsonConfig.TLSSettings != nil {		anyTLSSettings, err := ptypes.MarshalAny(jsonConfig.TLSSettings)		if err != nil {			return errors.New("Internet: Failed to parse TLS settings: " + err.Error())		}		this.SecuritySettings = append(this.SecuritySettings, &SecuritySettings{			Type:     SecurityType_TLS,			Settings: anyTLSSettings,		})	}	return nil}
 |