wireguard.go 588 B

12345678910111213141516171819202122232425
  1. package logic
  2. import (
  3. "github.com/gravitl/netmaker/models"
  4. "golang.zx2c4.com/wireguard/wgctrl"
  5. )
  6. func GetSystemPeers(node *models.Node) (map[string]string, error) {
  7. peers := make(map[string]string)
  8. client, err := wgctrl.New()
  9. if err != nil {
  10. return peers, err
  11. }
  12. device, err := client.Device(node.Interface)
  13. if err != nil {
  14. return nil, err
  15. }
  16. for _, peer := range device.Peers {
  17. if IsBase64(peer.PublicKey.String()) && peer.Endpoint != nil && CheckEndpoint(peer.Endpoint.String()) {
  18. peers[peer.PublicKey.String()] = peer.Endpoint.String()
  19. }
  20. }
  21. return peers, nil
  22. }