diff --git a/internal/smdclient/SMDclient.go b/internal/smdclient/SMDclient.go index c2c62fdf..19fb7392 100644 --- a/internal/smdclient/SMDclient.go +++ b/internal/smdclient/SMDclient.go @@ -47,6 +47,7 @@ type SMDClient struct { tokenEndpoint string accessToken string accessTokenMutex sync.Mutex + refreshLock sync.Mutex nodes map[string]NodeMapping components map[string]base.Component nodesMutex *sync.RWMutex @@ -160,7 +161,6 @@ func (s *SMDClient) StopCacheRefresh() { s.stopOnce.Do(func() { close(s.stopCacheRefresh) }) - close(s.stopCacheRefresh) } // ClusterName returns the name of the cluster @@ -295,7 +295,7 @@ func (s *SMDClient) PopulateNodes() { } var componentArray base.ComponentArray - if err := s.getSMD("/hsm/v2/State/Components", &componentArray); err != nil { + if err := s.getSMD("/hsm/v2/State/Components?type=Node", &componentArray); err != nil { log.Error().Err(err).Msg("Failed to get SMD component data") return } diff --git a/pkg/wgtunnel/tunnels.go b/pkg/wgtunnel/tunnels.go index f2197fe5..a04d87f5 100644 --- a/pkg/wgtunnel/tunnels.go +++ b/pkg/wgtunnel/tunnels.go @@ -147,6 +147,16 @@ func (m *InterfaceManager) IpForPeer(peerName string, publicKey string) string { return m.peers[peerName].IP.IP.String() } +func (m *InterfaceManager) GetPublicKey(peerName string) (string, bool) { + m.peersMutex.RLock() + defer m.peersMutex.RUnlock() + peer, ok := m.peers[peerName] + if !ok { + return "", false + } + return peer.PublicKey, true +} + func (m *InterfaceManager) RemovePeer(peerName string) error { m.peersMutex.RLock() peer, found := m.peers[peerName]