Skip to content

Commit 6967f38

Browse files
committed
Format Referer header on X-Dashboard-Title and X-Panel-Title
1 parent 57469c1 commit 6967f38

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

pkg/plugin/driver.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
3137
type 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

Comments
 (0)