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)
}
"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 {
})
}
+ 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
}
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"
"gitea.com/macaron/macaron"
"gitea.com/macaron/session"
"gitea.com/macaron/toolbox"
- "github.com/prometheus/client_golang/prometheus"
"github.com/tstranex/u2f"
)
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)
}