summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2017-04-19 11:45:01 +0800
committerGitHub <noreply@github.com>2017-04-19 11:45:01 +0800
commit2eeae84cbd80544157a82c7f031489eaaceaa873 (patch)
treea275f41a3bb552df39724d4eca3dcdffe47dff8f /routers
parentf42ec6120e8a2830407027020b65391ebf8e7f59 (diff)
downloadgitea-2eeae84cbd80544157a82c7f031489eaaceaa873.tar.gz
gitea-2eeae84cbd80544157a82c7f031489eaaceaa873.zip
Add internal routes for ssh hook comands (#1471)
* add internal routes for ssh hook comands * fix lint * add comment on why package named private not internal but the route name is internal * add comment above package private why package named private not internal but the route name is internal * remove exp time on internal access * move routes from /internal to /api/internal * add comment and defer on UpdatePublicKeyUpdated
Diffstat (limited to 'routers')
-rw-r--r--routers/private/internal.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/routers/private/internal.go b/routers/private/internal.go
new file mode 100644
index 0000000000..d662aa2c76
--- /dev/null
+++ b/routers/private/internal.go
@@ -0,0 +1,44 @@
+// Copyright 2017 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 (
+ "strings"
+
+ "code.gitea.io/gitea/models"
+ "code.gitea.io/gitea/modules/setting"
+ macaron "gopkg.in/macaron.v1"
+)
+
+// CheckInternalToken check internal token is set
+func CheckInternalToken(ctx *macaron.Context) {
+ tokens := ctx.Req.Header.Get("Authorization")
+ fields := strings.Fields(tokens)
+ if len(fields) != 2 || fields[0] != "Bearer" || fields[1] != setting.InternalToken {
+ ctx.Error(403)
+ }
+}
+
+// UpdatePublicKey update publick key updates
+func UpdatePublicKey(ctx *macaron.Context) {
+ keyID := ctx.ParamsInt64(":id")
+ if err := models.UpdatePublicKeyUpdated(keyID); err != nil {
+ ctx.JSON(500, map[string]interface{}{
+ "err": err.Error(),
+ })
+ return
+ }
+
+ ctx.PlainText(200, []byte("success"))
+}
+
+// RegisterRoutes registers all internal APIs routes to web application.
+// These APIs will be invoked by internal commands for example `gitea serv` and etc.
+func RegisterRoutes(m *macaron.Macaron) {
+ m.Group("/", func() {
+ m.Post("/ssh/:id/update", UpdatePublicKey)
+ }, CheckInternalToken)
+}