wireguard.go 733 B

123456789101112131415161718192021222324252627282930
  1. package serverctl
  2. import (
  3. "github.com/gravitl/netmaker/functions"
  4. "golang.zx2c4.com/wireguard/wgctrl"
  5. )
  6. func GetPeers(networkName string) (map[string]string, error) {
  7. peers := make(map[string]string)
  8. network, err := functions.GetParentNetwork(networkName)
  9. if err != nil {
  10. return peers, err
  11. }
  12. iface := network.DefaultInterface
  13. client, err := wgctrl.New()
  14. if err != nil {
  15. return peers, err
  16. }
  17. device, err := client.Device(iface)
  18. if err != nil {
  19. return nil, err
  20. }
  21. for _, peer := range device.Peers {
  22. if functions.IsBase64(peer.PublicKey.String()) && peer.Endpoint != nil && functions.CheckEndpoint(peer.Endpoint.String()) {
  23. peers[peer.PublicKey.String()] = peer.Endpoint.String()
  24. }
  25. }
  26. return peers, nil
  27. }