mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	Fix SSH key bug in windows
This commit is contained in:
		| @@ -19,6 +19,8 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/Unknwon/com" | 	"github.com/Unknwon/com" | ||||||
|  |  | ||||||
|  | 	"github.com/gogits/gogs/modules/log" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| const ( | const ( | ||||||
| @@ -99,8 +101,8 @@ func AddPublicKey(key *PublicKey) (err error) { | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// Calculate fingerprint. | 	// Calculate fingerprint. | ||||||
| 	tmpPath := filepath.Join(os.TempDir(), fmt.Sprintf("%d", time.Now().Nanosecond()), | 	tmpPath := strings.Replace(filepath.Join(os.TempDir(), fmt.Sprintf("%d", time.Now().Nanosecond()), | ||||||
| 		"id_rsa.pub") | 		"id_rsa.pub"), "\\", "/", -1) | ||||||
| 	os.MkdirAll(path.Dir(tmpPath), os.ModePerm) | 	os.MkdirAll(path.Dir(tmpPath), os.ModePerm) | ||||||
| 	if err = ioutil.WriteFile(tmpPath, []byte(key.Content), os.ModePerm); err != nil { | 	if err = ioutil.WriteFile(tmpPath, []byte(key.Content), os.ModePerm); err != nil { | ||||||
| 		return err | 		return err | ||||||
| @@ -127,25 +129,11 @@ func AddPublicKey(key *PublicKey) (err error) { | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| // DeletePublicKey deletes SSH key information both in database and authorized_keys file. | func rewriteAuthorizedKeys(key *PublicKey, p, tmpP string) error { | ||||||
| func DeletePublicKey(key *PublicKey) (err error) { |  | ||||||
| 	// Delete SSH key in database. |  | ||||||
| 	has, err := orm.Id(key.Id).Get(key) |  | ||||||
| 	if err != nil { |  | ||||||
| 		return err |  | ||||||
| 	} else if !has { |  | ||||||
| 		return errors.New("Public key does not exist") |  | ||||||
| 	} |  | ||||||
| 	if _, err = orm.Delete(key); err != nil { |  | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Delete SSH key in SSH key file. | 	// Delete SSH key in SSH key file. | ||||||
| 	sshOpLocker.Lock() | 	sshOpLocker.Lock() | ||||||
| 	defer sshOpLocker.Unlock() | 	defer sshOpLocker.Unlock() | ||||||
|  |  | ||||||
| 	p := filepath.Join(sshPath, "authorized_keys") |  | ||||||
| 	tmpP := filepath.Join(sshPath, "authorized_keys.tmp") |  | ||||||
| 	fr, err := os.Open(p) | 	fr, err := os.Open(p) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| @@ -188,8 +176,29 @@ func DeletePublicKey(key *PublicKey) (err error) { | |||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
| 	if err = os.Remove(p); err != nil { | // DeletePublicKey deletes SSH key information both in database and authorized_keys file. | ||||||
|  | func DeletePublicKey(key *PublicKey) (err error) { | ||||||
|  | 	// Delete SSH key in database. | ||||||
|  | 	has, err := orm.Id(key.Id).Get(key) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} else if !has { | ||||||
|  | 		return errors.New("Public key does not exist") | ||||||
|  | 	} | ||||||
|  | 	if _, err = orm.Delete(key); err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	p := filepath.Join(sshPath, "authorized_keys") | ||||||
|  | 	tmpP := filepath.Join(sshPath, "authorized_keys.tmp") | ||||||
|  | 	log.Trace("ssh.DeletePublicKey(authorized_keys): %s", p) | ||||||
|  |  | ||||||
|  | 	if err = rewriteAuthorizedKeys(key, p, tmpP); err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} else if err = os.Remove(p); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	return os.Rename(tmpP, p) | 	return os.Rename(tmpP, p) | ||||||
|   | |||||||
| @@ -372,7 +372,7 @@ func RepoPath(userName, repoName string) string { | |||||||
| } | } | ||||||
|  |  | ||||||
| func UpdateRepository(repo *Repository) error { | func UpdateRepository(repo *Repository) error { | ||||||
| 	_, err := orm.Id(repo.Id).UseBool().Update(repo) | 	_, err := orm.Id(repo.Id).UseBool().Cols("description", "website").Update(repo) | ||||||
| 	return err | 	return err | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -201,7 +201,7 @@ func VerifyUserActiveCode(code string) (user *User) { | |||||||
|  |  | ||||||
| // UpdateUser updates user's information. | // UpdateUser updates user's information. | ||||||
| func UpdateUser(user *User) (err error) { | func UpdateUser(user *User) (err error) { | ||||||
| 	_, err = orm.Id(user.Id).UseBool().Update(user) | 	_, err = orm.Id(user.Id).UseBool().Cols("website", "location").Update(user) | ||||||
| 	return err | 	return err | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -49,6 +49,7 @@ func Toggle(options *ToggleOptions) martini.Handler { | |||||||
| 				ctx.Error(403) | 				ctx.Error(403) | ||||||
| 				return | 				return | ||||||
| 			} | 			} | ||||||
|  | 			ctx.Data["PageIsAdmin"] = true | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
| @@ -216,10 +216,6 @@ func InitContext() martini.Handler { | |||||||
| 			ctx.Data["SignedUserId"] = user.Id | 			ctx.Data["SignedUserId"] = user.Id | ||||||
| 			ctx.Data["SignedUserName"] = user.LowerName | 			ctx.Data["SignedUserName"] = user.LowerName | ||||||
| 			ctx.Data["IsAdmin"] = ctx.User.IsAdmin | 			ctx.Data["IsAdmin"] = ctx.User.IsAdmin | ||||||
|  |  | ||||||
| 			if ctx.User.IsAdmin { |  | ||||||
| 				ctx.Data["PageIsAdmin"] = true |  | ||||||
| 			} |  | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		// get or create csrf token | 		// get or create csrf token | ||||||
|   | |||||||
| @@ -28,3 +28,13 @@ func Issues(ctx *middleware.Context, params martini.Params) { | |||||||
|  |  | ||||||
| 	ctx.HTML(200, "repo/issues") | 	ctx.HTML(200, "repo/issues") | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func CreateIssue(ctx *middleware.Context, params martini.Params) { | ||||||
|  | 	if !ctx.Repo.IsOwner { | ||||||
|  | 		ctx.Error(404) | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  | 	// else if err = models.CreateIssue(userId, repoId, milestoneId, assigneeId, name, labels, mentions, content, isPull); err != nil { | ||||||
|  |  | ||||||
|  | 	// } | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Unknown
					Unknown