| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package api
- import (
- "net"
- "net/http"
- "net/http/httputil"
- "net/url"
- "time"
- m "github.com/grafana/grafana/pkg/models"
- "github.com/grafana/grafana/pkg/setting"
- "github.com/grafana/grafana/pkg/util"
- )
- var grafanaComProxyTransport = &http.Transport{
- Proxy: http.ProxyFromEnvironment,
- Dial: (&net.Dialer{
- Timeout: 30 * time.Second,
- KeepAlive: 30 * time.Second,
- DualStack: true,
- }).Dial,
- TLSHandshakeTimeout: 10 * time.Second,
- }
- func ReverseProxyGnetReq(proxyPath string) *httputil.ReverseProxy {
- url, _ := url.Parse(setting.GrafanaComUrl)
- director := func(req *http.Request) {
- req.URL.Scheme = url.Scheme
- req.URL.Host = url.Host
- req.Host = url.Host
- req.URL.Path = util.JoinURLFragments(url.Path+"/api", proxyPath)
- // clear cookie headers
- req.Header.Del("Cookie")
- req.Header.Del("Set-Cookie")
- req.Header.Del("Authorization")
- }
- return &httputil.ReverseProxy{Director: director}
- }
- func ProxyGnetRequest(c *m.ReqContext) {
- proxyPath := c.Params("*")
- proxy := ReverseProxyGnetReq(proxyPath)
- proxy.Transport = grafanaComProxyTransport
- proxy.ServeHTTP(c.Resp, c.Req.Request)
- c.Resp.Header().Del("Set-Cookie")
- }
|