diff options
Diffstat (limited to 'internal/commands/root.go')
| -rw-r--r-- | internal/commands/root.go | 102 |
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) } |
