-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
Copy pathredis_signal_dash_zeroconf.go
71 lines (59 loc) · 1.6 KB
/
redis_signal_dash_zeroconf.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package main
import (
"encoding/json"
"github.com/Sirupsen/logrus"
"strings"
"strconv"
)
type DashboardConfigPayload struct {
DashboardConfig struct {
Hostname string
Port int
UseTLS bool
}
TimeStamp int64
}
func createConnectionStringFromDashboardObject(thisConfig DashboardConfigPayload) string {
thisHostname := "http://"
if thisConfig.DashboardConfig.UseTLS {
thisHostname = "https://"
}
thisHostname = thisHostname + thisConfig.DashboardConfig.Hostname
if thisConfig.DashboardConfig.Port != 0 {
strings.TrimRight(thisHostname, "/")
thisHostname = thisHostname + ":" + strconv.Itoa(thisConfig.DashboardConfig.Port)
}
return thisHostname
}
func HandleDashboardZeroConfMessage(payload string) {
// Decode the configuration from the payload
thisDashboardPayload := DashboardConfigPayload{}
err := json.Unmarshal([]byte(payload), &thisDashboardPayload)
if err != nil {
log.WithFields(logrus.Fields{
"prefix": "pub-sub",
}).Error("Failed to decode dashboard zeroconf payload")
return
}
if !config.UseDBAppConfigs {
return
}
if config.DisableDashboardZeroConf {
return
}
thisHostname := createConnectionStringFromDashboardObject(thisDashboardPayload)
setHostname := false
if config.DBAppConfOptions.ConnectionString == "" {
config.DBAppConfOptions.ConnectionString = thisHostname
setHostname = true
}
if config.Policies.PolicyConnectionString == "" {
config.Policies.PolicyConnectionString = thisHostname
setHostname = true
}
if setHostname {
log.WithFields(logrus.Fields{
"prefix": "pub-sub",
}).Info("Hostname set with dashboard zeroconf signal")
}
}