diff --git a/routers/metrics.go b/routers/metrics.go index f2381c274..db2fb8de4 100644 --- a/routers/metrics.go +++ b/routers/metrics.go @@ -6,29 +6,29 @@ package routers import ( "crypto/subtle" + "net/http" - "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/setting" "github.com/prometheus/client_golang/prometheus/promhttp" ) // Metrics validate auth token and render prometheus metrics -func Metrics(ctx *context.Context) { +func Metrics(resp http.ResponseWriter, req *http.Request) { if setting.Metrics.Token == "" { - promhttp.Handler().ServeHTTP(ctx.Resp, ctx.Req.Request) + promhttp.Handler().ServeHTTP(resp, req) return } - header := ctx.Req.Header.Get("Authorization") + header := req.Header.Get("Authorization") if header == "" { - ctx.Error(401) + http.Error(resp, "", 401) return } got := []byte(header) want := []byte("Bearer " + setting.Metrics.Token) if subtle.ConstantTimeCompare(got, want) != 1 { - ctx.Error(401) + http.Error(resp, "", 401) return } - promhttp.Handler().ServeHTTP(ctx.Resp, ctx.Req.Request) + promhttp.Handler().ServeHTTP(resp, req) } diff --git a/routers/routes/chi.go b/routers/routes/chi.go index 116504077..4575f1ea9 100644 --- a/routers/routes/chi.go +++ b/routers/routes/chi.go @@ -17,12 +17,15 @@ import ( "time" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/metrics" "code.gitea.io/gitea/modules/public" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/storage" + "code.gitea.io/gitea/routers" "github.com/go-chi/chi" "github.com/go-chi/chi/middleware" + "github.com/prometheus/client_golang/prometheus" ) type routerLoggerOptions struct { @@ -251,6 +254,18 @@ func NormalRoutes() http.Handler { }) } + r.Get("/apple-touch-icon.png", func(w http.ResponseWriter, req *http.Request) { + http.Redirect(w, req, path.Join(setting.StaticURLPrefix, "img/apple-touch-icon.png"), 301) + }) + + // prometheus metrics endpoint + if setting.Metrics.Enabled { + c := metrics.NewCollector() + prometheus.MustRegister(c) + + r.Get("/metrics", routers.Metrics) + } + return r } diff --git a/routers/routes/macaron.go b/routers/routes/macaron.go index 7178ead67..1f0b21a74 100644 --- a/routers/routes/macaron.go +++ b/routers/routes/macaron.go @@ -6,14 +6,12 @@ package routes import ( "encoding/gob" - "path" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/lfs" "code.gitea.io/gitea/modules/log" - "code.gitea.io/gitea/modules/metrics" "code.gitea.io/gitea/modules/options" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/templates" @@ -43,7 +41,6 @@ import ( "gitea.com/macaron/macaron" "gitea.com/macaron/session" "gitea.com/macaron/toolbox" - "github.com/prometheus/client_golang/prometheus" "github.com/tstranex/u2f" ) @@ -978,23 +975,11 @@ func RegisterMacaronRoutes(m *macaron.Macaron) { private.RegisterRoutes(m) }) - m.Get("/apple-touch-icon.png", func(ctx *context.Context) { - ctx.Redirect(path.Join(setting.StaticURLPrefix, "img/apple-touch-icon.png"), 301) - }) - // Progressive Web App m.Get("/manifest.json", templates.JSONRenderer(), func(ctx *context.Context) { ctx.HTML(200, "pwa/manifest_json") }) - // prometheus metrics endpoint - if setting.Metrics.Enabled { - c := metrics.NewCollector() - prometheus.MustRegister(c) - - m.Get("/metrics", routers.Metrics) - } - // Not found handler. m.NotFound(routers.NotFound) }