@@ -27,6 +27,12 @@ import (
2727 "golang.org/x/net/proxy"
2828)
2929
30+ const (
31+ headerDashboardTitle = "X-Dashboard-Title"
32+ headerPanelTitle = "X-Panel-Title"
33+ headerReferer = "Referer"
34+ )
35+
3036// Clickhouse defines how to connect to a Clickhouse datasource
3137type Clickhouse struct {}
3238
@@ -439,6 +445,7 @@ func extractForwardedHeadersFromMessage(message json.RawMessage) (map[string]str
439445 return nil , errors .New ("Couldn't parse message as args" )
440446 }
441447
448+ var dashboard , pannel string
442449 httpHeaders := make (map [string ]string )
443450 if grafanaHttpHeaders , ok := messageArgs [sqlds .HeaderKey ]; ok {
444451 fwdHeaders , ok := grafanaHttpHeaders .(map [string ]interface {})
@@ -458,9 +465,23 @@ func extractForwardedHeadersFromMessage(message json.RawMessage) (map[string]str
458465 }
459466
460467 httpHeaders [k ] = strings .Join (strHeadersArr , "," )
468+
469+ if k == headerDashboardTitle {
470+ dashboard = httpHeaders [k ]
471+ }
472+
473+ if k == headerPanelTitle {
474+ pannel = httpHeaders [k ]
475+ }
461476 }
462477 }
463478
479+ if dashboard != "" || pannel != "" {
480+ httpHeaders [headerReferer ] = fmt .Sprintf ("Dashboard title: %q, pannel title: %q" , dashboard , pannel )
481+ } else {
482+ httpHeaders [headerReferer ] = "Explorer"
483+ }
484+
464485 return httpHeaders , nil
465486}
466487
0 commit comments