2018-10-30 06:20:13 +00:00
// Copyright 2018 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
// Package private includes all internal routes. The package name internal is ideal but Golang is not allowed, so we use private as package name instead.
package private
import (
2019-12-17 01:49:07 +00:00
"net/http"
2018-10-30 06:20:13 +00:00
"code.gitea.io/gitea/models"
2021-01-26 15:36:53 +00:00
"code.gitea.io/gitea/modules/context"
2021-06-23 19:38:19 +00:00
"code.gitea.io/gitea/modules/private"
2019-08-15 14:46:21 +00:00
"code.gitea.io/gitea/modules/timeutil"
2018-10-30 06:20:13 +00:00
)
2019-06-01 15:00:21 +00:00
// UpdatePublicKeyInRepo update public key and deploy key updates
2021-01-26 15:36:53 +00:00
func UpdatePublicKeyInRepo ( ctx * context . PrivateContext ) {
2018-10-30 06:20:13 +00:00
keyID := ctx . ParamsInt64 ( ":id" )
2019-06-01 15:00:21 +00:00
repoID := ctx . ParamsInt64 ( ":repoid" )
2018-10-30 06:20:13 +00:00
if err := models . UpdatePublicKeyUpdated ( keyID ) ; err != nil {
2021-06-23 19:38:19 +00:00
ctx . JSON ( http . StatusInternalServerError , private . Response {
Err : err . Error ( ) ,
2018-10-30 06:20:13 +00:00
} )
return
}
2019-06-01 15:00:21 +00:00
deployKey , err := models . GetDeployKeyByRepo ( keyID , repoID )
2018-10-30 06:20:13 +00:00
if err != nil {
2019-06-01 15:00:21 +00:00
if models . IsErrDeployKeyNotExist ( err ) {
2021-06-23 19:38:19 +00:00
ctx . PlainText ( http . StatusOK , [ ] byte ( "success" ) )
2019-06-01 15:00:21 +00:00
return
}
2021-06-23 19:38:19 +00:00
ctx . JSON ( http . StatusInternalServerError , private . Response {
Err : err . Error ( ) ,
2018-10-30 06:20:13 +00:00
} )
return
}
2019-08-15 14:46:21 +00:00
deployKey . UpdatedUnix = timeutil . TimeStampNow ( )
2019-06-01 15:00:21 +00:00
if err = models . UpdateDeployKeyCols ( deployKey , "updated_unix" ) ; err != nil {
2021-06-23 19:38:19 +00:00
ctx . JSON ( http . StatusInternalServerError , private . Response {
Err : err . Error ( ) ,
2019-02-03 23:56:53 +00:00
} )
return
}
2019-12-17 01:49:07 +00:00
ctx . PlainText ( http . StatusOK , [ ] byte ( "success" ) )
}
// AuthorizedPublicKeyByContent searches content as prefix (leak e-mail part)
// and returns public key found.
2021-01-26 15:36:53 +00:00
func AuthorizedPublicKeyByContent ( ctx * context . PrivateContext ) {
2021-07-29 01:42:15 +00:00
content := ctx . Form ( "content" )
2019-12-17 01:49:07 +00:00
publicKey , err := models . SearchPublicKeyByContent ( content )
if err != nil {
2021-06-23 19:38:19 +00:00
ctx . JSON ( http . StatusInternalServerError , private . Response {
Err : err . Error ( ) ,
2019-12-17 01:49:07 +00:00
} )
return
}
ctx . PlainText ( http . StatusOK , [ ] byte ( publicKey . AuthorizedString ( ) ) )
2018-10-30 06:20:13 +00:00
}