@@ -56,13 +56,17 @@ func main() {
56
56
http .Handle (* metricsPath , newHandler (! * disableExporterMetrics ))
57
57
58
58
http .HandleFunc ("/" , func (w http.ResponseWriter , r * http.Request ) {
59
- w .Write ([]byte (`<html>
59
+ if r .Method == "GET" {
60
+ w .Write ([]byte (`<html>
60
61
<head><title>Spectrum Virtualize exporter</title></head>
61
62
<body>
62
63
<h1>Spectrum Virtualize exporter</h1>
63
64
<p><a href='` + * metricsPath + `'>Metrics</a></p>
64
65
</body>
65
66
</html>` ))
67
+ } else {
68
+ http .Error (w , "403 Forbidden" , 403 )
69
+ }
66
70
})
67
71
// http.Handle(*metricsPath, prometheus.Handler()) // Normal metrics endpoint for Spectrum Virtualize exporter itself.
68
72
@@ -76,14 +80,13 @@ func targetsForRequest(r *http.Request) ([]utils.Targets, error) {
76
80
if reqTarget == "" {
77
81
return cfg .Targets , nil
78
82
}
79
-
80
83
for _ , t := range cfg .Targets {
81
84
if t .IpAddress == reqTarget {
82
85
return []utils.Targets {t }, nil
83
86
}
84
87
}
85
88
86
- return nil , fmt .Errorf ("the target '%s' os not defined in the configuration file" , reqTarget )
89
+ return nil , fmt .Errorf ("The target '%s' os not defined in the configuration file" , reqTarget )
87
90
}
88
91
89
92
func newHandler (includeExporterMetrics bool ) * handler {
@@ -104,21 +107,24 @@ func newHandler(includeExporterMetrics bool) *handler {
104
107
105
108
// ServeHTTP implements http.Handler.
106
109
func (h * handler ) ServeHTTP (w http.ResponseWriter , r * http.Request ) {
107
-
108
- targets , err := targetsForRequest (r )
109
- if err != nil {
110
- http .Error (w , err .Error (), 400 )
111
- }
112
-
113
- handler , err := h .innerHandler (targets ... )
114
- if err != nil {
115
- log .Warnln ("Couldn't create metrics handler:" , err )
116
- w .WriteHeader (http .StatusBadRequest )
117
- w .Write ([]byte (fmt .Sprintf ("Couldn't create metrics handler: %s" , err )))
118
- return
110
+ if r .Method == "GET" {
111
+ targets , err := targetsForRequest (r )
112
+ if err != nil {
113
+ http .Error (w , err .Error (), 400 )
114
+ return
115
+ } else {
116
+ handler , err := h .innerHandler (targets ... )
117
+ if err != nil {
118
+ log .Warnln ("Couldn't create metrics handler:" , err )
119
+ w .WriteHeader (http .StatusBadRequest )
120
+ w .Write ([]byte (fmt .Sprintf ("Couldn't create metrics handler: %s" , err )))
121
+ return
122
+ }
123
+ handler .ServeHTTP (w , r )
124
+ }
125
+ } else {
126
+ http .Error (w , "403 Forbidden" , 403 )
119
127
}
120
- handler .ServeHTTP (w , r )
121
-
122
128
}
123
129
124
130
func (h * handler ) innerHandler (targets ... utils.Targets ) (http.Handler , error ) {
0 commit comments