mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09: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