config: add metrics_basic_auth option (#1917)

* config: add metrics_basic_auth option

* remove println

* use constant time compare
This commit is contained in:
Caleb Doxsey 2021-02-22 13:37:18 -07:00 committed by GitHub
parent 03d8ffaee2
commit 8b42eb5ebd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 309 additions and 170 deletions

View file

@ -15,6 +15,7 @@ type MetricsManager struct {
mu sync.Mutex
serviceName string
addr string
basicAuth string
srv *http.Server
}
@ -60,7 +61,7 @@ func (mgr *MetricsManager) updateInfo(cfg *Config) {
}
func (mgr *MetricsManager) updateServer(cfg *Config) {
if cfg.Options.MetricsAddr == mgr.addr {
if cfg.Options.MetricsAddr == mgr.addr && cfg.Options.MetricsBasicAuth == mgr.basicAuth {
return
}
@ -73,6 +74,7 @@ func (mgr *MetricsManager) updateServer(cfg *Config) {
}
mgr.addr = cfg.Options.MetricsAddr
mgr.basicAuth = cfg.Options.MetricsBasicAuth
if mgr.addr == "" {
log.Info().Msg("metrics: http server disabled")
return
@ -86,6 +88,10 @@ func (mgr *MetricsManager) updateServer(cfg *Config) {
return
}
if username, password, ok := cfg.Options.GetMetricsBasicAuth(); ok {
handler = httputil.RequireBasicAuth(handler, username, password)
}
mgr.srv, err = httputil.NewServer(&httputil.ServerOptions{
Addr: mgr.addr,
Insecure: true,