connection_json.go 600 B

123456789101112131415161718192021222324252627
  1. // +build json
  2. package internet
  3. import (
  4. "encoding/json"
  5. v2net "github.com/v2ray/v2ray-core/common/net"
  6. )
  7. func (this *StreamSettings) UnmarshalJSON(data []byte) error {
  8. type JSONConfig struct {
  9. Network v2net.NetworkList `json:"network"`
  10. }
  11. this.Type = StreamConnectionTypeRawTCP
  12. jsonConfig := new(JSONConfig)
  13. if err := json.Unmarshal(data, jsonConfig); err != nil {
  14. return err
  15. }
  16. if jsonConfig.Network.HasNetwork(v2net.KCPNetwork) {
  17. this.Type |= StreamConnectionTypeKCP
  18. }
  19. if jsonConfig.Network.HasNetwork(v2net.TCPNetwork) {
  20. this.Type |= StreamConnectionTypeTCP
  21. }
  22. return nil
  23. }