Browse Source

Set User-Agent header in all proxied datasource requests

Header value will be Grafana/%version%, i.e. Grafana/5.3.0
Marcus Efraimsson 7 years ago
parent
commit
13921902b5
2 changed files with 9 additions and 8 deletions
  1. 1 1
      pkg/api/pluginproxy/ds_proxy.go
  2. 8 7
      pkg/api/pluginproxy/ds_proxy_test.go

+ 1 - 1
pkg/api/pluginproxy/ds_proxy.go

@@ -203,7 +203,7 @@ func (proxy *DataSourceProxy) getDirector() func(req *http.Request) {
 		req.Header.Del("X-Forwarded-Host")
 		req.Header.Del("X-Forwarded-Host")
 		req.Header.Del("X-Forwarded-Port")
 		req.Header.Del("X-Forwarded-Port")
 		req.Header.Del("X-Forwarded-Proto")
 		req.Header.Del("X-Forwarded-Proto")
-		req.Header.Set("User-Agent", fmt.Sprintf("Grafana/%s Proxied-DS-Request %s", setting.BuildVersion, proxy.ds.Type))
+		req.Header.Set("User-Agent", fmt.Sprintf("Grafana/%s", setting.BuildVersion))
 
 
 		// set X-Forwarded-For header
 		// set X-Forwarded-For header
 		if req.RemoteAddr != "" {
 		if req.RemoteAddr != "" {

+ 8 - 7
pkg/api/pluginproxy/ds_proxy_test.go

@@ -212,20 +212,21 @@ func TestDSRouteRule(t *testing.T) {
 		})
 		})
 
 
 		Convey("When proxying graphite", func() {
 		Convey("When proxying graphite", func() {
+			setting.BuildVersion = "5.3.0"
 			plugin := &plugins.DataSourcePlugin{}
 			plugin := &plugins.DataSourcePlugin{}
 			ds := &m.DataSource{Url: "htttp://graphite:8080", Type: m.DS_GRAPHITE}
 			ds := &m.DataSource{Url: "htttp://graphite:8080", Type: m.DS_GRAPHITE}
 			ctx := &m.ReqContext{}
 			ctx := &m.ReqContext{}
 
 
 			proxy := NewDataSourceProxy(ds, plugin, ctx, "/render")
 			proxy := NewDataSourceProxy(ds, plugin, ctx, "/render")
+			req, err := http.NewRequest(http.MethodGet, "http://grafana.com/sub", nil)
+			So(err, ShouldBeNil)
 
 
-			requestURL, _ := url.Parse("http://grafana.com/sub")
-			req := http.Request{URL: requestURL, Header: http.Header{}}
-
-			proxy.getDirector()(&req)
+			proxy.getDirector()(req)
 
 
 			Convey("Can translate request url and path", func() {
 			Convey("Can translate request url and path", func() {
 				So(req.URL.Host, ShouldEqual, "graphite:8080")
 				So(req.URL.Host, ShouldEqual, "graphite:8080")
 				So(req.URL.Path, ShouldEqual, "/render")
 				So(req.URL.Path, ShouldEqual, "/render")
+				So(req.Header.Get("User-Agent"), ShouldEqual, "Grafana/5.3.0")
 			})
 			})
 		})
 		})
 
 
@@ -243,10 +244,10 @@ func TestDSRouteRule(t *testing.T) {
 			ctx := &m.ReqContext{}
 			ctx := &m.ReqContext{}
 			proxy := NewDataSourceProxy(ds, plugin, ctx, "")
 			proxy := NewDataSourceProxy(ds, plugin, ctx, "")
 
 
-			requestURL, _ := url.Parse("http://grafana.com/sub")
-			req := http.Request{URL: requestURL, Header: http.Header{}}
+			req, err := http.NewRequest(http.MethodGet, "http://grafana.com/sub", nil)
+			So(err, ShouldBeNil)
 
 
-			proxy.getDirector()(&req)
+			proxy.getDirector()(req)
 
 
 			Convey("Should add db to url", func() {
 			Convey("Should add db to url", func() {
 				So(req.URL.Path, ShouldEqual, "/db/site/")
 				So(req.URL.Path, ShouldEqual, "/db/site/")