summaryrefslogtreecommitdiffstats
path: root/routers/web/user/setting/packages.go
diff options
context:
space:
mode:
authorKN4CK3R <admin@oldschoolhack.me>2023-02-06 02:49:21 +0100
committerGitHub <noreply@github.com>2023-02-06 09:49:21 +0800
commitd987ac6bf1d78b3a9bbd213e73b871ebc687acb2 (patch)
treec1f4840d675f6f99b38eb9684c7f6d2342f010d5 /routers/web/user/setting/packages.go
parentff18d1744273d093d854f548662a0c204f220c16 (diff)
downloadgitea-d987ac6bf1d78b3a9bbd213e73b871ebc687acb2.tar.gz
gitea-d987ac6bf1d78b3a9bbd213e73b871ebc687acb2.zip
Add Chef package registry (#22554)
This PR implements a [Chef registry](https://chef.io/) to manage cookbooks. This package type was a bit complicated because Chef uses RSA signed requests as authentication with the registry. ![grafik](https://user-images.githubusercontent.com/1666336/213747995-46819fd8-c3d6-45a2-afd4-a4c3c8505a4a.png) ![grafik](https://user-images.githubusercontent.com/1666336/213748145-d01c9e81-d4dd-41e3-a3cc-8241862c3166.png) Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'routers/web/user/setting/packages.go')
-rw-r--r--routers/web/user/setting/packages.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/routers/web/user/setting/packages.go b/routers/web/user/setting/packages.go
index b3f8a3e41d..0d2eb14c20 100644
--- a/routers/web/user/setting/packages.go
+++ b/routers/web/user/setting/packages.go
@@ -5,10 +5,14 @@ package setting
import (
"net/http"
+ "strings"
+ user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/context"
+ chef_module "code.gitea.io/gitea/modules/packages/chef"
"code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/util"
shared "code.gitea.io/gitea/routers/web/shared/packages"
)
@@ -95,3 +99,21 @@ func RebuildCargoIndex(ctx *context.Context) {
ctx.Redirect(setting.AppSubURL + "/user/settings/packages")
}
+
+func RegenerateChefKeyPair(ctx *context.Context) {
+ priv, pub, err := util.GenerateKeyPair(chef_module.KeyBits)
+ if err != nil {
+ ctx.ServerError("GenerateKeyPair", err)
+ return
+ }
+
+ if err := user_model.SetUserSetting(ctx.Doer.ID, chef_module.SettingPublicPem, pub); err != nil {
+ ctx.ServerError("SetUserSetting", err)
+ return
+ }
+
+ ctx.ServeContent(strings.NewReader(priv), &context.ServeHeaderOptions{
+ ContentType: "application/x-pem-file",
+ Filename: ctx.Doer.Name + ".priv",
+ })
+}