From 96e3b0e0421d153d5566c2ab310bbd4eebc4d6e3 Mon Sep 17 00:00:00 2001 From: Andrej Mickov Date: Mon, 2 Mar 2026 23:36:09 +0100 Subject: [PATCH] wire admin API feature flag --- api/api.go | 10 +++++++++- main.go | 3 ++- utils/config.go | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/api/api.go b/api/api.go index 69ccfa9..824b502 100644 --- a/api/api.go +++ b/api/api.go @@ -33,6 +33,7 @@ type Handler struct { logger *slog.Logger logConfig logging.Config authSvc *auth.Service + adminAPI bool } const ( @@ -47,7 +48,7 @@ const ( serverMaxConnections = 1024 ) -func NewHandler(svc *service.ObjectService, logger *slog.Logger, logConfig logging.Config, authSvc *auth.Service) *Handler { +func NewHandler(svc *service.ObjectService, logger *slog.Logger, logConfig logging.Config, authSvc *auth.Service, adminAPI bool) *Handler { r := chi.NewRouter() r.Use(middleware.RequestID) r.Use(middleware.Recoverer) @@ -61,6 +62,7 @@ func NewHandler(svc *service.ObjectService, logger *slog.Logger, logConfig loggi logger: logger, logConfig: logConfig, authSvc: authSvc, + adminAPI: adminAPI, } return h } @@ -74,6 +76,9 @@ func (h *Handler) setupRoutes() { h.router.Get("/metrics", h.handleMetrics) h.router.Head("/metrics", h.handleMetrics) h.router.Get("/", h.handleGetBuckets) + if h.adminAPI { + h.registerAdminRoutes() + } h.router.Get("/{bucket}/", h.handleGetBucket) h.router.Get("/{bucket}", h.handleGetBucket) @@ -93,6 +98,9 @@ func (h *Handler) setupRoutes() { h.router.Delete("/{bucket}/*", h.handleDeleteObject) } +func (h *Handler) registerAdminRoutes() { +} + func (h *Handler) handleHealth(w http.ResponseWriter, r *http.Request) { if _, err := h.svc.ListBuckets(); err != nil { w.Header().Set("Content-Type", "text/plain; charset=utf-8") diff --git a/main.go b/main.go index e416ad5..e776c14 100644 --- a/main.go +++ b/main.go @@ -39,6 +39,7 @@ func main() { "multipart_retention_hours", int(config.MultipartCleanupRetention/time.Hour), "auth_enabled", authConfig.Enabled, "auth_region", authConfig.Region, + "admin_api_enabled", config.AdminAPIEnabled, ) if err := os.MkdirAll(config.DataPath, 0o755); err != nil { @@ -72,7 +73,7 @@ func main() { return } - handler := api.NewHandler(objectService, logger, logConfig, authService) + handler := api.NewHandler(objectService, logger, logConfig, authService, config.AdminAPIEnabled) addr := config.Address + ":" + strconv.Itoa(config.Port) ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) diff --git a/utils/config.go b/utils/config.go index 7d7313c..0191668 100644 --- a/utils/config.go +++ b/utils/config.go @@ -29,6 +29,7 @@ type Config struct { AuthBootstrapAccessKey string AuthBootstrapSecretKey string AuthBootstrapPolicy string + AdminAPIEnabled bool } func NewConfig() *Config { @@ -55,6 +56,7 @@ func NewConfig() *Config { AuthBootstrapAccessKey: strings.TrimSpace(os.Getenv("AUTH_BOOTSTRAP_ACCESS_KEY")), AuthBootstrapSecretKey: strings.TrimSpace(os.Getenv("AUTH_BOOTSTRAP_SECRET_KEY")), AuthBootstrapPolicy: strings.TrimSpace(os.Getenv("AUTH_BOOTSTRAP_POLICY")), + AdminAPIEnabled: envBool("ADMIN_API_ENABLED", true), } if config.LogFormat != "json" && config.LogFormat != "text" {