diff --git a/services/doctor/authorizedkeys.go b/services/doctor/authorizedkeys.go index 52e5ea1d3b..cbbcba235b 100644 --- a/services/doctor/authorizedkeys.go +++ b/services/doctor/authorizedkeys.go @@ -13,6 +13,7 @@ import ( asymkey_model "forgejo.org/models/asymkey" "forgejo.org/modules/log" "forgejo.org/modules/setting" + "forgejo.org/modules/system" ) func checkAuthorizedKeys(ctx context.Context, logger log.Logger, autofix bool) error { @@ -20,6 +21,21 @@ func checkAuthorizedKeys(ctx context.Context, logger log.Logger, autofix bool) e return nil } + // make sure the doctor has the same AppPath as forgejo + // they can differ due to symlinks + // https://codeberg.org/forgejo/forgejo/pulls/12901 + if err := system.Init(); err != nil { + return err + } + runtimeState := new(system.RuntimeState) + if err := system.AppState.Get(ctx, runtimeState); err != nil { + return err + } + if setting.AppPath != runtimeState.LastAppPath { + logger.Info("AppPath set to '%s' (was '%s')", runtimeState.LastAppPath, setting.AppPath) + setting.AppPath = runtimeState.LastAppPath + } + findings, err := asymkey_model.InspectPublicKeys(ctx) if err != nil { return fmt.Errorf("inspect authorized_keys failed: %w", err)