summaryrefslogtreecommitdiff
path: root/internal/commands/root.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/commands/root.go')
-rw-r--r--internal/commands/root.go102
1 files changed, 12 insertions, 90 deletions
diff --git a/internal/commands/root.go b/internal/commands/root.go
index e294cccfd..690779d07 100644
--- a/internal/commands/root.go
+++ b/internal/commands/root.go
@@ -1,13 +1,15 @@
package commands
import (
+ "errors"
"fmt"
"os"
"github.com/spf13/cobra"
"github.com/authelia/authelia/v4/internal/logging"
- "github.com/authelia/authelia/v4/internal/model"
+ "github.com/authelia/authelia/v4/internal/middlewares"
+ "github.com/authelia/authelia/v4/internal/service"
"github.com/authelia/authelia/v4/internal/utils"
)
@@ -82,102 +84,22 @@ func (ctx *CmdCtx) RootRunE(_ *cobra.Command, _ []string) (err error) {
ctx.log.Error(err)
}
- ctx.log.Fatalf("Errors occurred provisioning providers.")
+ ctx.log.Fatal("Errors occurred provisioning providers")
}
- doStartupChecks(ctx)
+ if err = ctx.providers.StartupChecks(ctx, true); err != nil {
+ var scerr *middlewares.ErrProviderStartupCheck
- ctx.cconfig = nil
-
- ctx.log.Trace("Starting Services")
-
- servicesRun(ctx)
-
- return nil
-}
-
-func doStartupChecks(ctx *CmdCtx) {
- var (
- failures []string
- err error
- )
-
- ctx.log.WithFields(map[string]any{logFieldProvider: providerNameStorage}).Trace(logMessageStartupCheckPerforming)
-
- if err = doStartupCheck(ctx, providerNameStorage, ctx.providers.StorageProvider, false); err != nil {
- ctx.log.WithError(err).WithField(logFieldProvider, providerNameStorage).Error(logMessageStartupCheckError)
-
- failures = append(failures, providerNameStorage)
- } else {
- ctx.log.WithFields(map[string]any{logFieldProvider: providerNameStorage}).Trace(logMessageStartupCheckSuccess)
- }
-
- ctx.log.WithFields(map[string]any{logFieldProvider: providerNameUser}).Trace(logMessageStartupCheckPerforming)
-
- if err = doStartupCheck(ctx, providerNameUser, ctx.providers.UserProvider, false); err != nil {
- ctx.log.WithError(err).WithField(logFieldProvider, providerNameUser).Error(logMessageStartupCheckError)
-
- failures = append(failures, providerNameUser)
- } else {
- ctx.log.WithFields(map[string]any{logFieldProvider: providerNameUser}).Trace(logMessageStartupCheckSuccess)
- }
-
- ctx.log.WithFields(map[string]any{logFieldProvider: providerNameNotification}).Trace(logMessageStartupCheckPerforming)
-
- if err = doStartupCheck(ctx, providerNameNotification, ctx.providers.Notifier, ctx.config.Notifier.DisableStartupCheck); err != nil {
- ctx.log.WithError(err).WithField(logFieldProvider, providerNameNotification).Error(logMessageStartupCheckError)
-
- failures = append(failures, providerNameNotification)
- } else {
- ctx.log.WithFields(map[string]any{logFieldProvider: providerNameNotification}).Trace(logMessageStartupCheckSuccess)
- }
-
- ctx.log.WithFields(map[string]any{logFieldProvider: providerNameNTP}).Trace(logMessageStartupCheckPerforming)
-
- if err = doStartupCheck(ctx, providerNameNTP, ctx.providers.NTP, ctx.config.NTP.DisableStartupCheck); err != nil {
- if !ctx.config.NTP.DisableFailure {
- ctx.log.WithError(err).WithField(logFieldProvider, providerNameNTP).Error(logMessageStartupCheckError)
-
- failures = append(failures, providerNameNTP)
+ if errors.As(err, &scerr) {
+ ctx.GetLogger().WithField("providers", scerr.Failed()).Fatalf("One or more providers had fatal failures performing startup checks, for more details check the error level logs")
} else {
- ctx.log.WithError(err).WithField(logFieldProvider, providerNameNTP).Warn(logMessageStartupCheckError)
+ ctx.log.Fatal("Errors occurred performing startup checks")
}
- } else {
- ctx.log.WithFields(map[string]any{logFieldProvider: providerNameNTP}).Trace(logMessageStartupCheckSuccess)
- }
-
- ctx.log.WithFields(map[string]any{logFieldProvider: providerNameExpressions}).Trace(logMessageStartupCheckPerforming)
-
- if err = doStartupCheck(ctx, providerNameExpressions, ctx.providers.UserAttributeResolver, false); err != nil {
- ctx.log.WithError(err).WithField(logFieldProvider, providerNameExpressions).Error(logMessageStartupCheckError)
-
- failures = append(failures, providerNameExpressions)
- } else {
- ctx.log.WithFields(map[string]any{logFieldProvider: providerNameExpressions}).Trace(logMessageStartupCheckSuccess)
- }
-
- if err = doStartupCheck(ctx, providerNameWebAuthnMetaData, ctx.providers.MetaDataService, !ctx.config.WebAuthn.Metadata.Enabled || ctx.providers.MetaDataService == nil); err != nil {
- ctx.log.WithError(err).WithField(logFieldProvider, providerNameWebAuthnMetaData).Error(logMessageStartupCheckError)
-
- failures = append(failures, providerNameWebAuthnMetaData)
- } else {
- ctx.log.WithFields(map[string]any{logFieldProvider: providerNameWebAuthnMetaData}).Trace("Startup Check Completed Successfully")
}
- if len(failures) != 0 {
- ctx.log.WithField("providers", failures).Fatalf("One or more providers had fatal failures performing startup checks, for more detail check the error level logs")
- }
-}
-
-func doStartupCheck(ctx *CmdCtx, name string, provider model.StartupCheck, disabled bool) error {
- if disabled {
- ctx.log.Debugf("%s provider: startup check skipped as it is disabled", name)
- return nil
- }
+ ctx.cconfig = nil
- if provider == nil {
- return fmt.Errorf("unrecognized provider or it is not configured properly")
- }
+ ctx.log.Trace("Starting Services")
- return provider.StartupCheck()
+ return service.RunAll(ctx)
}