mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Mulitple Gitea Doctor improvements (#10943)
* Add `gitea doctor --list` flag to list the checks that will be run, including those by default * Add `gitea doctor --run` to run specific checks * Add `gitea doctor --all` to run all checks * Add db version checker * Add non-default recalculate merge bases check/fixer to doctor * Add hook checker (Fix #9878) and ensure hooks are executable (Fix #6319) * Fix authorized_keys checker - slight change of functionality here because parsing the command is fragile and we should just check if the authorized_keys file is essentially the same as what gitea would produce. (This is still not perfect as order matters - we should probably just md5sum the two files.) * Add SCRIPT_TYPE check (Fix #10977) * Add `gitea doctor --fix` to attempt to fix what is possible to easily fix * Add `gitea doctor --log-file` to set the log-file, be it a file, stdout or to switch off completely. (Fixes previously undetected bug with certain xorm logging configurations - see @6543 comment.) Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		@@ -15,6 +15,7 @@ import (
 | 
			
		||||
	"encoding/pem"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"math/big"
 | 
			
		||||
	"os"
 | 
			
		||||
@@ -701,7 +702,21 @@ func rewriteAllPublicKeys(e Engine) error {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = e.Iterate(new(PublicKey), func(idx int, bean interface{}) (err error) {
 | 
			
		||||
	if err := regeneratePublicKeys(e, t); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	t.Close()
 | 
			
		||||
	return os.Rename(tmpPath, fPath)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RegeneratePublicKeys regenerates the authorized_keys file
 | 
			
		||||
func RegeneratePublicKeys(t io.StringWriter) error {
 | 
			
		||||
	return regeneratePublicKeys(x, t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func regeneratePublicKeys(e Engine, t io.StringWriter) error {
 | 
			
		||||
	err := e.Iterate(new(PublicKey), func(idx int, bean interface{}) (err error) {
 | 
			
		||||
		_, err = t.WriteString((bean.(*PublicKey)).AuthorizedString())
 | 
			
		||||
		return err
 | 
			
		||||
	})
 | 
			
		||||
@@ -709,6 +724,7 @@ func rewriteAllPublicKeys(e Engine) error {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fPath := filepath.Join(setting.SSH.RootPath, "authorized_keys")
 | 
			
		||||
	if com.IsExist(fPath) {
 | 
			
		||||
		f, err := os.Open(fPath)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
@@ -729,9 +745,7 @@ func rewriteAllPublicKeys(e Engine) error {
 | 
			
		||||
		}
 | 
			
		||||
		f.Close()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	t.Close()
 | 
			
		||||
	return os.Rename(tmpPath, fPath)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ________                .__                 ____  __.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user