2018-10-30 11:50:13 +05:30
// Copyright 2018 The Gitea Authors. All rights reserved.
2022-11-27 23:50:29 +05:30
// SPDX-License-Identifier: MIT
2018-10-30 11:50:13 +05:30
// 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 07:19:07 +05:30
"net/http"
2021-12-10 13:44:24 +05:30
asymkey_model "code.gitea.io/gitea/models/asymkey"
2021-01-26 21:06:53 +05:30
"code.gitea.io/gitea/modules/context"
2021-06-24 01:08:19 +05:30
"code.gitea.io/gitea/modules/private"
2019-08-15 20:16:21 +05:30
"code.gitea.io/gitea/modules/timeutil"
2018-10-30 11:50:13 +05:30
)
2019-06-01 20:30:21 +05:30
// UpdatePublicKeyInRepo update public key and deploy key updates
2021-01-26 21:06:53 +05:30
func UpdatePublicKeyInRepo ( ctx * context . PrivateContext ) {
2018-10-30 11:50:13 +05:30
keyID := ctx . ParamsInt64 ( ":id" )
2019-06-01 20:30:21 +05:30
repoID := ctx . ParamsInt64 ( ":repoid" )
2021-12-10 13:44:24 +05:30
if err := asymkey_model . UpdatePublicKeyUpdated ( keyID ) ; err != nil {
2021-06-24 01:08:19 +05:30
ctx . JSON ( http . StatusInternalServerError , private . Response {
Err : err . Error ( ) ,
2018-10-30 11:50:13 +05:30
} )
return
}
2022-05-20 19:38:52 +05:30
deployKey , err := asymkey_model . GetDeployKeyByRepo ( ctx , keyID , repoID )
2018-10-30 11:50:13 +05:30
if err != nil {
2021-12-10 13:44:24 +05:30
if asymkey_model . IsErrDeployKeyNotExist ( err ) {
2021-12-15 12:29:57 +05:30
ctx . PlainText ( http . StatusOK , "success" )
2019-06-01 20:30:21 +05:30
return
}
2021-06-24 01:08:19 +05:30
ctx . JSON ( http . StatusInternalServerError , private . Response {
Err : err . Error ( ) ,
2018-10-30 11:50:13 +05:30
} )
return
}
2019-08-15 20:16:21 +05:30
deployKey . UpdatedUnix = timeutil . TimeStampNow ( )
2021-12-10 13:44:24 +05:30
if err = asymkey_model . UpdateDeployKeyCols ( deployKey , "updated_unix" ) ; err != nil {
2021-06-24 01:08:19 +05:30
ctx . JSON ( http . StatusInternalServerError , private . Response {
Err : err . Error ( ) ,
2019-02-04 05:26:53 +05:30
} )
return
}
2021-12-15 12:29:57 +05:30
ctx . PlainText ( http . StatusOK , "success" )
2019-12-17 07:19:07 +05:30
}
// AuthorizedPublicKeyByContent searches content as prefix (leak e-mail part)
// and returns public key found.
2021-01-26 21:06:53 +05:30
func AuthorizedPublicKeyByContent ( ctx * context . PrivateContext ) {
2021-08-11 06:01:13 +05:30
content := ctx . FormString ( "content" )
2019-12-17 07:19:07 +05:30
2022-05-20 19:38:52 +05:30
publicKey , err := asymkey_model . SearchPublicKeyByContent ( ctx , content )
2019-12-17 07:19:07 +05:30
if err != nil {
2021-06-24 01:08:19 +05:30
ctx . JSON ( http . StatusInternalServerError , private . Response {
Err : err . Error ( ) ,
2019-12-17 07:19:07 +05:30
} )
return
}
2021-12-15 12:29:57 +05:30
ctx . PlainText ( http . StatusOK , publicKey . AuthorizedString ( ) )
2018-10-30 11:50:13 +05:30
}