Plugin proxy: Handle URL parsing errors (#29093)

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
This commit is contained in:
Arve Knudsen
2020-11-13 19:38:09 +01:00
committed by GitHub
parent 113e288668
commit fbf0d2c086
3 changed files with 15 additions and 5 deletions

View File

@@ -56,8 +56,12 @@ func updateURL(route *plugins.AppPluginRoute, orgId int64, appID string) (string
}
// NewApiPluginProxy create a plugin proxy
func NewApiPluginProxy(ctx *models.ReqContext, proxyPath string, route *plugins.AppPluginRoute, appID string, cfg *setting.Cfg) *httputil.ReverseProxy {
targetURL, _ := url.Parse(route.URL)
func NewApiPluginProxy(ctx *models.ReqContext, proxyPath string, route *plugins.AppPluginRoute, appID string,
cfg *setting.Cfg) (*httputil.ReverseProxy, error) {
targetURL, err := url.Parse(route.URL)
if err != nil {
return nil, err
}
director := func(req *http.Request) {
req.URL.Scheme = targetURL.Scheme
@@ -115,5 +119,5 @@ func NewApiPluginProxy(ctx *models.ReqContext, proxyPath string, route *plugins.
// log.Tracef("Proxying plugin request: %s", string(reqBytes))
}
return &httputil.ReverseProxy{Director: director}
return &httputil.ReverseProxy{Director: director}, nil
}

View File

@@ -140,7 +140,8 @@ func getPluginProxiedRequest(ctx *models.ReqContext, cfg *setting.Cfg, route *pl
ReqRole: models.ROLE_EDITOR,
}
}
proxy := NewApiPluginProxy(ctx, "", route, "", cfg)
proxy, err := NewApiPluginProxy(ctx, "", route, "", cfg)
So(err, ShouldBeNil)
req, err := http.NewRequest(http.MethodGet, route.URL, nil)
So(err, ShouldBeNil)