wireguard.go 630 B

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