shadowsocks_2022.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package conf
  2. import (
  3. "github.com/golang/protobuf/proto"
  4. "github.com/xtls/xray-core/common/net"
  5. "github.com/xtls/xray-core/proxy/shadowsocks_2022"
  6. )
  7. type Shadowsocks2022ServerConfig struct {
  8. Cipher string `json:"method"`
  9. Key string `json:"key"`
  10. NetworkList *NetworkList `json:"network"`
  11. }
  12. func (v *Shadowsocks2022ServerConfig) Build() (proto.Message, error) {
  13. var network []net.Network
  14. if v.NetworkList != nil {
  15. network = v.NetworkList.Build()
  16. }
  17. return &shadowsocks_2022.ServerConfig{
  18. Method: v.Cipher,
  19. Key: v.Key,
  20. Network: network,
  21. }, nil
  22. }
  23. type Shadowsocks2022ClientConfig struct {
  24. Address *Address `json:"address"`
  25. Port uint16 `json:"port"`
  26. Cipher string `json:"method"`
  27. Key string `json:"key"`
  28. ReducedIvHeadEntropy bool `json:"reducedIvHeadEntropy"`
  29. }
  30. func (v *Shadowsocks2022ClientConfig) Build() (proto.Message, error) {
  31. if v.Address == nil {
  32. return nil, newError("shadowsocks 2022: missing server address")
  33. }
  34. return &shadowsocks_2022.ClientConfig{
  35. Address: v.Address.Build(),
  36. Port: uint32(v.Port),
  37. Method: v.Cipher,
  38. Key: v.Key,
  39. ReducedIvHeadEntropy: v.ReducedIvHeadEntropy,
  40. }, nil
  41. }