mirror of
https://github.com/netbirdio/netbird.git
synced 2026-05-08 01:39:55 +00:00
Compare commits
4 Commits
dns-skip-f
...
feature/us
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a8dbef89b | ||
|
|
569ebb400b | ||
|
|
8ec17daf3a | ||
|
|
8bccbf9304 |
@@ -12,6 +12,7 @@ import (
|
|||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
|
"github.com/netbirdio/netbird/management/internals/controllers/network_map"
|
||||||
nbpeer "github.com/netbirdio/netbird/management/server/peer"
|
nbpeer "github.com/netbirdio/netbird/management/server/peer"
|
||||||
|
|
||||||
resourcetypes "github.com/netbirdio/netbird/management/server/networks/resources/types"
|
resourcetypes "github.com/netbirdio/netbird/management/server/networks/resources/types"
|
||||||
@@ -82,24 +83,26 @@ type CapabilityProvider interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Manager struct {
|
type Manager struct {
|
||||||
store store.Store
|
store store.Store
|
||||||
accountManager account.Manager
|
accountManager account.Manager
|
||||||
permissionsManager permissions.Manager
|
permissionsManager permissions.Manager
|
||||||
proxyController proxy.Controller
|
proxyController proxy.Controller
|
||||||
capabilities CapabilityProvider
|
networkMapController network_map.Controller
|
||||||
clusterDeriver ClusterDeriver
|
capabilities CapabilityProvider
|
||||||
exposeReaper *exposeReaper
|
clusterDeriver ClusterDeriver
|
||||||
|
exposeReaper *exposeReaper
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewManager creates a new service manager.
|
// 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{
|
mgr := &Manager{
|
||||||
store: store,
|
store: store,
|
||||||
accountManager: accountManager,
|
accountManager: accountManager,
|
||||||
permissionsManager: permissionsManager,
|
permissionsManager: permissionsManager,
|
||||||
proxyController: proxyController,
|
proxyController: proxyController,
|
||||||
capabilities: capabilities,
|
networkMapController: networkMapController,
|
||||||
clusterDeriver: clusterDeriver,
|
capabilities: capabilities,
|
||||||
|
clusterDeriver: clusterDeriver,
|
||||||
}
|
}
|
||||||
mgr.exposeReaper = &exposeReaper{manager: mgr}
|
mgr.exposeReaper = &exposeReaper{manager: mgr}
|
||||||
return mgr
|
return mgr
|
||||||
@@ -151,13 +154,7 @@ func (m *Manager) replaceHostByLookup(ctx context.Context, accountID string, s *
|
|||||||
for _, target := range s.Targets {
|
for _, target := range s.Targets {
|
||||||
switch target.TargetType {
|
switch target.TargetType {
|
||||||
case service.TargetTypePeer:
|
case service.TargetTypePeer:
|
||||||
peer, err := m.store.GetPeerByID(ctx, store.LockingStrengthNone, accountID, target.TargetId)
|
target.Host = m.getPeerTargetHost(ctx, accountID, target)
|
||||||
if err != nil {
|
|
||||||
log.WithContext(ctx).Warnf("failed to get peer by id %s for service %s: %v", target.TargetId, s.ID, err)
|
|
||||||
target.Host = unknownHostPlaceholder
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
target.Host = peer.IP.String()
|
|
||||||
case service.TargetTypeHost:
|
case service.TargetTypeHost:
|
||||||
resource, err := m.store.GetNetworkResourceByID(ctx, store.LockingStrengthNone, accountID, target.TargetId)
|
resource, err := m.store.GetNetworkResourceByID(ctx, store.LockingStrengthNone, accountID, target.TargetId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -184,6 +181,26 @@ func (m *Manager) replaceHostByLookup(ctx context.Context, accountID string, s *
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Manager) getPeerTargetHost(ctx context.Context, accountID string, target *service.Target) string {
|
||||||
|
peer, err := m.store.GetPeerByID(ctx, store.LockingStrengthNone, accountID, target.TargetId)
|
||||||
|
if err != nil {
|
||||||
|
log.WithContext(ctx).Warnf("failed to get peer by id %s for service %s: %v", target.TargetId, target.ServiceID, err)
|
||||||
|
return unknownHostPlaceholder
|
||||||
|
}
|
||||||
|
|
||||||
|
if target.Protocol == "https" {
|
||||||
|
settings, err := m.accountManager.GetAccountSettings(ctx, accountID, activity.SystemInitiator)
|
||||||
|
if err != nil {
|
||||||
|
log.WithContext(ctx).Warnf("failed to get account settings for service %s: %v", target.ServiceID, err)
|
||||||
|
return unknownHostPlaceholder
|
||||||
|
}
|
||||||
|
dnsDomain := m.networkMapController.GetDNSDomain(settings)
|
||||||
|
return peer.FQDN(dnsDomain)
|
||||||
|
}
|
||||||
|
|
||||||
|
return peer.IP.String()
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Manager) GetService(ctx context.Context, accountID, userID, serviceID string) (*service.Service, error) {
|
func (m *Manager) GetService(ctx context.Context, accountID, userID, serviceID string) (*service.Service, error) {
|
||||||
ok, err := m.permissionsManager.ValidateUserPermissions(ctx, accountID, userID, modules.Services, operations.Read)
|
ok, err := m.permissionsManager.ValidateUserPermissions(ctx, accountID, userID, modules.Services, operations.Read)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ func (s *BaseServer) RecordsManager() records.Manager {
|
|||||||
|
|
||||||
func (s *BaseServer) ServiceManager() service.Manager {
|
func (s *BaseServer) ServiceManager() service.Manager {
|
||||||
return Create(s, func() 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())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ func BuildApiBlackBoxWithDBState(t testing_tools.TB, sqlFile string, expectedPee
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to create proxy controller: %v", err)
|
t.Fatalf("Failed to create proxy controller: %v", err)
|
||||||
}
|
}
|
||||||
serviceManager := reverseproxymanager.NewManager(store, am, permissionsManager, serviceProxyController, proxyMgr, domainManager)
|
serviceManager := reverseproxymanager.NewManager(store, am, permissionsManager, serviceProxyController, proxyMgr, domainManager, networkMapController)
|
||||||
proxyServiceServer.SetServiceManager(serviceManager)
|
proxyServiceServer.SetServiceManager(serviceManager)
|
||||||
am.SetServiceManager(serviceManager)
|
am.SetServiceManager(serviceManager)
|
||||||
|
|
||||||
@@ -244,7 +244,7 @@ func BuildApiBlackBoxWithDBStateAndPeerChannel(t testing_tools.TB, sqlFile strin
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to create proxy controller: %v", err)
|
t.Fatalf("Failed to create proxy controller: %v", err)
|
||||||
}
|
}
|
||||||
serviceManager := reverseproxymanager.NewManager(store, am, permissionsManager, serviceProxyController, proxyMgr, domainManager)
|
serviceManager := reverseproxymanager.NewManager(store, am, permissionsManager, serviceProxyController, proxyMgr, domainManager, networkMapController)
|
||||||
proxyServiceServer.SetServiceManager(serviceManager)
|
proxyServiceServer.SetServiceManager(serviceManager)
|
||||||
am.SetServiceManager(serviceManager)
|
am.SetServiceManager(serviceManager)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user