code.gitea.io/gitea@v1.21.7/routers/web/metrics.go (about) 1 // Copyright 2018 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package web 5 6 import ( 7 "crypto/subtle" 8 "net/http" 9 10 "code.gitea.io/gitea/modules/setting" 11 12 "github.com/prometheus/client_golang/prometheus/promhttp" 13 ) 14 15 // Metrics validate auth token and render prometheus metrics 16 func Metrics(resp http.ResponseWriter, req *http.Request) { 17 if setting.Metrics.Token == "" { 18 promhttp.Handler().ServeHTTP(resp, req) 19 return 20 } 21 header := req.Header.Get("Authorization") 22 if header == "" { 23 http.Error(resp, "", http.StatusUnauthorized) 24 return 25 } 26 got := []byte(header) 27 want := []byte("Bearer " + setting.Metrics.Token) 28 if subtle.ConstantTimeCompare(got, want) != 1 { 29 http.Error(resp, "", http.StatusUnauthorized) 30 return 31 } 32 promhttp.Handler().ServeHTTP(resp, req) 33 }