diff --git a/management/internals/modules/reverseproxy/service/manager/manager.go b/management/internals/modules/reverseproxy/service/manager/manager.go index ed9d4201b..d55df5f33 100644 --- a/management/internals/modules/reverseproxy/service/manager/manager.go +++ b/management/internals/modules/reverseproxy/service/manager/manager.go @@ -12,6 +12,7 @@ import ( log "github.com/sirupsen/logrus" + "github.com/netbirdio/netbird/management/internals/controllers/network_map" nbpeer "github.com/netbirdio/netbird/management/server/peer" resourcetypes "github.com/netbirdio/netbird/management/server/networks/resources/types" @@ -82,24 +83,26 @@ type CapabilityProvider interface { } type Manager struct { - store store.Store - accountManager account.Manager - permissionsManager permissions.Manager - proxyController proxy.Controller - capabilities CapabilityProvider - clusterDeriver ClusterDeriver - exposeReaper *exposeReaper + store store.Store + accountManager account.Manager + permissionsManager permissions.Manager + proxyController proxy.Controller + networkMapController network_map.Controller + capabilities CapabilityProvider + clusterDeriver ClusterDeriver + exposeReaper *exposeReaper } // NewManager creates a new service manager. -func NewManager(store store.Store, accountManager account.Manager, permissionsManager permissions.Manager, proxyController proxy.Controller, capabilities CapabilityProvider, clusterDeriver ClusterDeriver) *Manager { +func NewManager(store store.Store, accountManager account.Manager, permissionsManager permissions.Manager, proxyController proxy.Controller, capabilities CapabilityProvider, clusterDeriver ClusterDeriver, networkMapController network_map.Controller) *Manager { mgr := &Manager{ - store: store, - accountManager: accountManager, - permissionsManager: permissionsManager, - proxyController: proxyController, - capabilities: capabilities, - clusterDeriver: clusterDeriver, + store: store, + accountManager: accountManager, + permissionsManager: permissionsManager, + proxyController: proxyController, + networkMapController: networkMapController, + capabilities: capabilities, + clusterDeriver: clusterDeriver, } mgr.exposeReaper = &exposeReaper{manager: mgr} return mgr @@ -157,7 +160,16 @@ func (m *Manager) replaceHostByLookup(ctx context.Context, accountID string, s * target.Host = unknownHostPlaceholder continue } - target.Host = peer.IP.String() + if target.Protocol == "https" { + settings, err := m.accountManager.GetAccountSettings(ctx, accountID, activity.SystemInitiator) + if err != nil { + return fmt.Errorf("failed to get account settings for DNS domain lookup: %w", err) + } + dnsDomain := m.networkMapController.GetDNSDomain(settings) + target.Host = peer.FQDN(dnsDomain) + } else { + target.Host = peer.IP.String() + } case service.TargetTypeHost: resource, err := m.store.GetNetworkResourceByID(ctx, store.LockingStrengthNone, accountID, target.TargetId) if err != nil { diff --git a/management/internals/server/modules.go b/management/internals/server/modules.go index 9b2ec2989..1bc9fb8d0 100644 --- a/management/internals/server/modules.go +++ b/management/internals/server/modules.go @@ -197,7 +197,7 @@ func (s *BaseServer) RecordsManager() records.Manager { func (s *BaseServer) ServiceManager() service.Manager { return Create(s, func() service.Manager { - return nbreverseproxy.NewManager(s.Store(), s.AccountManager(), s.PermissionsManager(), s.ServiceProxyController(), s.ProxyManager(), s.ReverseProxyDomainManager()) + return nbreverseproxy.NewManager(s.Store(), s.AccountManager(), s.PermissionsManager(), s.ServiceProxyController(), s.ProxyManager(), s.ReverseProxyDomainManager(), s.NetworkMapController()) }) }