wire admin API feature flag

This commit is contained in:
2026-03-02 23:36:09 +01:00
parent 651413d494
commit 96e3b0e042
3 changed files with 13 additions and 2 deletions

View File

@@ -33,6 +33,7 @@ type Handler struct {
logger *slog.Logger logger *slog.Logger
logConfig logging.Config logConfig logging.Config
authSvc *auth.Service authSvc *auth.Service
adminAPI bool
} }
const ( const (
@@ -47,7 +48,7 @@ const (
serverMaxConnections = 1024 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 := chi.NewRouter()
r.Use(middleware.RequestID) r.Use(middleware.RequestID)
r.Use(middleware.Recoverer) r.Use(middleware.Recoverer)
@@ -61,6 +62,7 @@ func NewHandler(svc *service.ObjectService, logger *slog.Logger, logConfig loggi
logger: logger, logger: logger,
logConfig: logConfig, logConfig: logConfig,
authSvc: authSvc, authSvc: authSvc,
adminAPI: adminAPI,
} }
return h return h
} }
@@ -74,6 +76,9 @@ func (h *Handler) setupRoutes() {
h.router.Get("/metrics", h.handleMetrics) h.router.Get("/metrics", h.handleMetrics)
h.router.Head("/metrics", h.handleMetrics) h.router.Head("/metrics", h.handleMetrics)
h.router.Get("/", h.handleGetBuckets) h.router.Get("/", h.handleGetBuckets)
if h.adminAPI {
h.registerAdminRoutes()
}
h.router.Get("/{bucket}/", h.handleGetBucket) h.router.Get("/{bucket}/", h.handleGetBucket)
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) h.router.Delete("/{bucket}/*", h.handleDeleteObject)
} }
func (h *Handler) registerAdminRoutes() {
}
func (h *Handler) handleHealth(w http.ResponseWriter, r *http.Request) { func (h *Handler) handleHealth(w http.ResponseWriter, r *http.Request) {
if _, err := h.svc.ListBuckets(); err != nil { if _, err := h.svc.ListBuckets(); err != nil {
w.Header().Set("Content-Type", "text/plain; charset=utf-8") w.Header().Set("Content-Type", "text/plain; charset=utf-8")

View File

@@ -39,6 +39,7 @@ func main() {
"multipart_retention_hours", int(config.MultipartCleanupRetention/time.Hour), "multipart_retention_hours", int(config.MultipartCleanupRetention/time.Hour),
"auth_enabled", authConfig.Enabled, "auth_enabled", authConfig.Enabled,
"auth_region", authConfig.Region, "auth_region", authConfig.Region,
"admin_api_enabled", config.AdminAPIEnabled,
) )
if err := os.MkdirAll(config.DataPath, 0o755); err != nil { if err := os.MkdirAll(config.DataPath, 0o755); err != nil {
@@ -72,7 +73,7 @@ func main() {
return return
} }
handler := api.NewHandler(objectService, logger, logConfig, authService) handler := api.NewHandler(objectService, logger, logConfig, authService, config.AdminAPIEnabled)
addr := config.Address + ":" + strconv.Itoa(config.Port) addr := config.Address + ":" + strconv.Itoa(config.Port)
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)

View File

@@ -29,6 +29,7 @@ type Config struct {
AuthBootstrapAccessKey string AuthBootstrapAccessKey string
AuthBootstrapSecretKey string AuthBootstrapSecretKey string
AuthBootstrapPolicy string AuthBootstrapPolicy string
AdminAPIEnabled bool
} }
func NewConfig() *Config { func NewConfig() *Config {
@@ -55,6 +56,7 @@ func NewConfig() *Config {
AuthBootstrapAccessKey: strings.TrimSpace(os.Getenv("AUTH_BOOTSTRAP_ACCESS_KEY")), AuthBootstrapAccessKey: strings.TrimSpace(os.Getenv("AUTH_BOOTSTRAP_ACCESS_KEY")),
AuthBootstrapSecretKey: strings.TrimSpace(os.Getenv("AUTH_BOOTSTRAP_SECRET_KEY")), AuthBootstrapSecretKey: strings.TrimSpace(os.Getenv("AUTH_BOOTSTRAP_SECRET_KEY")),
AuthBootstrapPolicy: strings.TrimSpace(os.Getenv("AUTH_BOOTSTRAP_POLICY")), AuthBootstrapPolicy: strings.TrimSpace(os.Getenv("AUTH_BOOTSTRAP_POLICY")),
AdminAPIEnabled: envBool("ADMIN_API_ENABLED", true),
} }
if config.LogFormat != "json" && config.LogFormat != "text" { if config.LogFormat != "json" && config.LogFormat != "text" {