// 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) }