mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2026-06-22 10:02:15 +00:00
fix(doctor): ensure the doctor runs with the same settings.AppPath as Forgejo (#12901)
Attempt to address #11705 and #11028. The docker container runs gitea by default:1d12151086/docker/root/etc/s6/gitea/runWhereas a user might run `forgejo doctor ...` (which is symlinked to gitea). So the doctor expects a different value for the authorized_keys command. This fix does the opposite of syncAppConfForGit: it fetches the `AppPath` from the database to ensure it is the same as forgejo:1d12151086/routers/init.go (L76-L87)### Testing 1. Make a symlink called `forgejo`, pointing to gitea `ln -s gitea forgejo` 2. Run `./gitea` and add a ssh key to a user 3. Stop `./gitea` 4. Run `./forgejo doctor check --run authorized-keys` Without this fix, the last command should fail. With the fix, the last command should succeed and print: ``` - [I] AppPath changed from '/home/forgejo/forgejo' to '/home/forgejo/gitea' ``` - I ran... - [x] `make pr-go` before pushing ### Documentation - [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change. - [x] I did not document these changes and I do not expect someone else to do it. ### Release notes - [x] This change will be noticed by a Forgejo user or admin (feature, bug fix, performance, etc.). I suggest to include a release note for this change. - [ ] This change is not visible to a Forgejo user or admin (refactor, dependency upgrade, etc.). I think there is no need to add a release note for this change. *The decision if the pull request will be shown in the release notes is up to the mergers / release team.* The content of the `release-notes/<pull request number>.md` file will serve as the basis for the release notes. If the file does not exist, the title of the pull request will be used instead. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/12901 Reviewed-by: Mathieu Fenniak <mfenniak@noreply.codeberg.org>
This commit is contained in:
parent
3005420885
commit
b1b47e64d7
1 changed files with 16 additions and 0 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue