mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-24 17:14:30 +02:00 
			
		
		
		
	add publickey
This commit is contained in:
		
							parent
							
								
									bbf5345004
								
							
						
					
					
						commit
						d42c194aad
					
				| @ -3,17 +3,37 @@ package models | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"os/exec" | ||||
| 	"path/filepath" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	publicKeyRootPath string | ||||
| 	sshPath           string = "/Users/lunny/.ssh" | ||||
| 	appPath           string | ||||
| 	tmplPublicKey     = "### autogenerated by gitgos, DO NOT EDIT\n" + | ||||
| 		"command=\"gitosis-serve %s\",no-port-forwarding," + | ||||
| 		"no-X11-forwarding,no-agent-forwarding,no-pty %s" | ||||
| 		"command=\"%s serv key-%d\",no-port-forwarding," + | ||||
| 		"no-X11-forwarding,no-agent-forwarding,no-pty %s\n" | ||||
| ) | ||||
| 
 | ||||
| func exePath() (string, error) { | ||||
| 	file, err := exec.LookPath(os.Args[0]) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	return filepath.Abs(file) | ||||
| } | ||||
| 
 | ||||
| func init() { | ||||
| 	var err error | ||||
| 	appPath, err = exePath() | ||||
| 	if err != nil { | ||||
| 		println(err.Error()) | ||||
| 		os.Exit(2) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| type PublicKey struct { | ||||
| 	Id      int64 | ||||
| 	OwnerId int64     `xorm:"index"` | ||||
| @ -23,8 +43,8 @@ type PublicKey struct { | ||||
| 	Updated time.Time `xorm:"updated"` | ||||
| } | ||||
| 
 | ||||
| func GenAuthorizedKey(user, key string) string { | ||||
| 	return fmt.Sprintf(tmplPublicKey, user, key) | ||||
| func GenAuthorizedKey(keyId int64, key string) string { | ||||
| 	return fmt.Sprintf(tmplPublicKey, appPath, keyId, key) | ||||
| } | ||||
| 
 | ||||
| func AddPublicKey(key *PublicKey, user string) error { | ||||
| @ -33,7 +53,7 @@ func AddPublicKey(key *PublicKey, user string) error { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	err = SaveAuthorizedKeyFile(user, key.Content) | ||||
| 	err = SaveAuthorizedKeyFile(key) | ||||
| 	if err != nil { | ||||
| 		_, err2 := orm.Delete(key) | ||||
| 		if err2 != nil { | ||||
| @ -45,11 +65,13 @@ func AddPublicKey(key *PublicKey, user string) error { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func SaveAuthorizedKeyFile(user, key string) error { | ||||
| 	f, err := os.Create(filepath.Join(publicKeyRootPath, user+".pub")) | ||||
| func SaveAuthorizedKeyFile(key *PublicKey) error { | ||||
| 	p := filepath.Join(sshPath, "authorized_keys") | ||||
| 	f, err := os.Create(p) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	_, err = f.WriteString(GenAuthorizedKey(user, key)) | ||||
| 	os.Chmod(p, 0600) | ||||
| 	_, err = f.WriteString(GenAuthorizedKey(key.Id, key.Content)) | ||||
| 	return err | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user