wireguard.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package v4
  2. import (
  3. "github.com/golang/protobuf/proto"
  4. "github.com/v2fly/v2ray-core/v4/common/protocol"
  5. "github.com/v2fly/v2ray-core/v4/infra/conf/cfgcommon"
  6. "github.com/v2fly/v2ray-core/v4/proxy/wireguard"
  7. )
  8. type WireGuardClientConfig struct {
  9. Address *cfgcommon.Address `json:"address"`
  10. Port uint16 `json:"port"`
  11. Network cfgcommon.Network `json:"network"`
  12. LocalAddresses cfgcommon.StringList `json:"localAddresses"`
  13. PrivateKey string `json:"privateKey"`
  14. PeerPublicKey string `json:"peerPublicKey"`
  15. PreSharedKey string `json:"preSharedKey"`
  16. MTU uint32 `json:"mtu"`
  17. UserLevel uint32 `json:"userLevel"`
  18. }
  19. func (v *WireGuardClientConfig) Build() (proto.Message, error) {
  20. config := &wireguard.Config{
  21. Server: &protocol.ServerEndpoint{
  22. Address: v.Address.Build(),
  23. Port: uint32(v.Port),
  24. },
  25. Network: v.Network.Build(),
  26. LocalAddress: v.LocalAddresses,
  27. PrivateKey: v.PrivateKey,
  28. PeerPublicKey: v.PeerPublicKey,
  29. PreSharedKey: v.PreSharedKey,
  30. Mtu: v.MTU,
  31. UserLevel: v.UserLevel,
  32. }
  33. return config, nil
  34. }