From 9bcb4c5fb927f99a69b0e36df99404c5f355338a Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Mon, 20 Oct 2025 21:27:35 +0200 Subject: [PATCH] extract modules --- management/internals/server/boot.go | 35 ++++++++++------------ management/internals/server/controllers.go | 3 +- management/internals/server/modules.go | 2 +- management/server/grpcserver.go | 3 +- management/server/http/handler.go | 24 ++------------- 5 files changed, 23 insertions(+), 44 deletions(-) diff --git a/management/internals/server/boot.go b/management/internals/server/boot.go index 16e93a549..9a9919b27 100644 --- a/management/internals/server/boot.go +++ b/management/internals/server/boot.go @@ -11,6 +11,7 @@ import ( "time" "github.com/google/uuid" + "github.com/gorilla/mux" grpcMiddleware "github.com/grpc-ecosystem/go-grpc-middleware/v2" "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/realip" log "github.com/sirupsen/logrus" @@ -18,12 +19,11 @@ import ( "google.golang.org/grpc/credentials" "google.golang.org/grpc/keepalive" - "github.com/netbirdio/management-integrations/integrations" "github.com/netbirdio/netbird/encryption" "github.com/netbirdio/netbird/formatter/hook" - nbconfig "github.com/netbirdio/netbird/management/internals/server/config" "github.com/netbirdio/netbird/management/server" "github.com/netbirdio/netbird/management/server/activity" + activitystore "github.com/netbirdio/netbird/management/server/activity/store" nbContext "github.com/netbirdio/netbird/management/server/context" nbhttp "github.com/netbirdio/netbird/management/server/http" "github.com/netbirdio/netbird/management/server/store" @@ -31,6 +31,8 @@ import ( mgmtProto "github.com/netbirdio/netbird/shared/management/proto" ) +const apiPrefix = "/api" + var ( kaep = keepalive.EnforcementPolicy{ MinTime: 15 * time.Second, @@ -68,32 +70,18 @@ func (s *BaseServer) Store() store.Store { func (s *BaseServer) EventStore() activity.Store { return Create(s, func() activity.Store { - integrationMetrics, err := integrations.InitIntegrationMetrics(context.Background(), s.Metrics()) - if err != nil { - log.Fatalf("failed to initialize integration metrics: %v", err) - } - - eventStore, key, err := integrations.InitEventStore(context.Background(), s.config.Datadir, s.config.DataStoreEncryptionKey, integrationMetrics) + store, err := activitystore.NewSqlStore(context.Background(), s.config.Datadir, s.config.DataStoreEncryptionKey) if err != nil { log.Fatalf("failed to initialize event store: %v", err) } - if s.config.DataStoreEncryptionKey != key { - log.WithContext(context.Background()).Infof("update config with activity store key") - s.config.DataStoreEncryptionKey = key - err := updateMgmtConfig(context.Background(), nbconfig.MgmtConfigPath, s.config) - if err != nil { - log.Fatalf("failed to update config with activity store: %v", err) - } - } - - return eventStore + return store }) } func (s *BaseServer) APIHandler() http.Handler { return Create(s, func() http.Handler { - httpAPIHandler, err := nbhttp.NewAPIHandler(context.Background(), s.AccountManager(), s.NetworksManager(), s.ResourcesManager(), s.RoutesManager(), s.GroupsManager(), s.GeoLocationManager(), s.AuthManager(), s.Metrics(), s.IntegratedValidator(), s.ProxyController(), s.PermissionsManager(), s.PeersManager(), s.SettingsManager()) + httpAPIHandler, err := nbhttp.NewAPIHandler(s.Router(), s.AccountManager(), s.NetworksManager(), s.ResourcesManager(), s.RoutesManager(), s.GroupsManager(), s.GeoLocationManager(), s.AuthManager(), s.Metrics(), s.PermissionsManager(), s.SettingsManager()) if err != nil { log.Fatalf("failed to create API handler: %v", err) } @@ -101,6 +89,15 @@ func (s *BaseServer) APIHandler() http.Handler { }) } +func (s *BaseServer) Router() *mux.Router { + return Create(s, func() *mux.Router { + rootRouter := mux.NewRouter() + prefix := apiPrefix + router := rootRouter.PathPrefix(prefix).Subrouter() + return router + }) +} + func (s *BaseServer) GRPCServer() *grpc.Server { return Create(s, func() *grpc.Server { trustedPeers := s.config.ReverseProxy.TrustedPeers diff --git a/management/internals/server/controllers.go b/management/internals/server/controllers.go index ddd81daa2..0e2a62cff 100644 --- a/management/internals/server/controllers.go +++ b/management/internals/server/controllers.go @@ -26,7 +26,8 @@ func (s *BaseServer) IntegratedValidator() integrated_validator.IntegratedValida context.Background(), s.PeersManager(), s.SettingsManager(), - s.EventStore()) + s.EventStore(), + nil) if err != nil { log.Errorf("failed to create integrated peer validator: %v", err) } diff --git a/management/internals/server/modules.go b/management/internals/server/modules.go index daec4ef6f..301021a4d 100644 --- a/management/internals/server/modules.go +++ b/management/internals/server/modules.go @@ -35,7 +35,7 @@ func (s *BaseServer) GeoLocationManager() geolocation.Geolocation { func (s *BaseServer) PermissionsManager() permissions.Manager { return Create(s, func() permissions.Manager { - return integrations.InitPermissionsManager(s.Store()) + return permissions.NewManager(s.Store()) }) } diff --git a/management/server/grpcserver.go b/management/server/grpcserver.go index 12b59b691..df6e3d96f 100644 --- a/management/server/grpcserver.go +++ b/management/server/grpcserver.go @@ -936,7 +936,8 @@ func (s *GRPCServer) GetPKCEAuthorizationFlow(ctx context.Context, req *proto.En }, } - flowInfoResp := s.integratedPeerValidator.ValidateFlowResponse(ctx, peerKey.String(), initInfoFlow) + // flowInfoResp := s.integratedPeerValidator.ValidateFlowResponse(ctx, peerKey.String(), initInfoFlow) + flowInfoResp := initInfoFlow encryptedResp, err := encryption.EncryptMessage(peerKey, s.wgKey, flowInfoResp) if err != nil { diff --git a/management/server/http/handler.go b/management/server/http/handler.go index 3d4de31d0..12decad11 100644 --- a/management/server/http/handler.go +++ b/management/server/http/handler.go @@ -1,19 +1,14 @@ package http import ( - "context" - "fmt" "net/http" "github.com/gorilla/mux" "github.com/rs/cors" - "github.com/netbirdio/management-integrations/integrations" - "github.com/netbirdio/netbird/management/server/account" "github.com/netbirdio/netbird/management/server/settings" - "github.com/netbirdio/netbird/management/server/integrations/port_forwarding" "github.com/netbirdio/netbird/management/server/permissions" "github.com/netbirdio/netbird/management/server/auth" @@ -30,19 +25,15 @@ import ( "github.com/netbirdio/netbird/management/server/http/handlers/setup_keys" "github.com/netbirdio/netbird/management/server/http/handlers/users" "github.com/netbirdio/netbird/management/server/http/middleware" - "github.com/netbirdio/netbird/management/server/integrations/integrated_validator" nbnetworks "github.com/netbirdio/netbird/management/server/networks" "github.com/netbirdio/netbird/management/server/networks/resources" "github.com/netbirdio/netbird/management/server/networks/routers" - nbpeers "github.com/netbirdio/netbird/management/server/peers" "github.com/netbirdio/netbird/management/server/telemetry" ) -const apiPrefix = "/api" - // NewAPIHandler creates the Management service HTTP API handler registering all the available endpoints. func NewAPIHandler( - ctx context.Context, + router *mux.Router, accountManager account.Manager, networksManager nbnetworks.Manager, resourceManager resources.Manager, @@ -51,10 +42,7 @@ func NewAPIHandler( LocationManager geolocation.Geolocation, authManager auth.Manager, appMetrics telemetry.AppMetrics, - integratedValidator integrated_validator.IntegratedValidator, - proxyController port_forwarding.Controller, permissionsManager permissions.Manager, - peersManager nbpeers.Manager, settingsManager settings.Manager, ) (http.Handler, error) { @@ -67,18 +55,10 @@ func NewAPIHandler( corsMiddleware := cors.AllowAll() - rootRouter := mux.NewRouter() metricsMiddleware := appMetrics.HTTPMiddleware() - prefix := apiPrefix - router := rootRouter.PathPrefix(prefix).Subrouter() - router.Use(metricsMiddleware.Handler, corsMiddleware.Handler, authMiddleware.Handler) - if _, err := integrations.RegisterHandlers(ctx, prefix, router, accountManager, integratedValidator, appMetrics.GetMeter(), permissionsManager, peersManager, proxyController, settingsManager); err != nil { - return nil, fmt.Errorf("register integrations endpoints: %w", err) - } - accounts.AddEndpoints(accountManager, settingsManager, router) peers.AddEndpoints(accountManager, router) users.AddEndpoints(accountManager, router) @@ -92,5 +72,5 @@ func NewAPIHandler( events.AddEndpoints(accountManager, router) networks.AddEndpoints(networksManager, resourceManager, routerManager, groupsManager, accountManager, router) - return rootRouter, nil + return router, nil }