package webui import ( "strings" "git.openpdu.org/OpenPDU/openpdu/config" "git.openpdu.org/OpenPDU/openpdu/mqtt" "gopkg.in/macaron.v1" ) type MQTTReconfigFunction func() var mqttReconfigFunction MQTTReconfigFunction func SetMQTTReconfigFunction(f MQTTReconfigFunction) { mqttReconfigFunction = f } func mqttPage(ctx *macaron.Context) { ctx.Data["schema"] = config.GetString("Mqtt.Schema") ctx.Data["host"] = config.GetString("Mqtt.Host") ctx.Data["port"] = config.GetString("Mqtt.Port") ctx.Data["clientid"] = config.GetString("Mqtt.CliendID") ctx.Data["prefix"] = config.GetString("Mqtt.Prefix") ctx.Data["username"] = config.GetString("Mqtt.Username") ctx.Data["password"] = config.GetString("Mqtt.Password") ctx.Data["lwttopic"] = config.GetString("Mqtt.LWTTopic") ctx.Data["lwtonline"] = config.GetString("Mqtt.LWTMessageOnline") ctx.Data["lwtoffline"] = config.GetString("Mqtt.LWTMessageOffline") ctx.Data["homeassistant"] = config.GetString("Mqtt.homeassistant") if mqtt.Connected() { ctx.Data["mqttstatus"] = "Connected" } else { ctx.Data["mqttstatus"] = "Disconnected" } ctx.Data["schemas"] = []string{"tcp", "ssl", "ws"} ctx.HTML(200, "mqtt") } type MQTTPostForm struct { Schema string `form:"schema" binding:"Required"` Host string `form:"host" binding:"Required"` Port string `form:"port" binding:"Required"` Prefix string `form:"prefix" binding:"Required"` ClientID string `form:"clientid" binding:"Required"` Username string `form:"username"` Password string `form:"password"` LWTTopic string `form:"lwttopic"` LWTMessageOnline string `form:"lwtonline"` LWTMessageOffline string `form:"lwtoffline"` HomeAssistant bool `form:"homeassistant"` } func mqttPost(ctx *macaron.Context, f MQTTPostForm) { schema := strings.ToLower(strings.TrimSpace(f.Schema)) switch schema { case "tcp", "ssl", "ws": config.Set("Mqtt.Schema", schema) default: mqttPage(ctx) return } config.Set("Mqtt.Host", strings.ToLower(strings.TrimSpace(f.Host))) config.Set("Mqtt.Port", strings.ToLower(strings.TrimSpace(f.Port))) config.Set("Mqtt.CliendID", strings.TrimSpace(f.ClientID)) config.Set("Mqtt.Prefix", strings.TrimSpace(f.Prefix)) config.Set("Mqtt.Username", strings.TrimSpace(f.Username)) config.Set("Mqtt.Password", f.Password) config.Set("Mqtt.LWTTopic", strings.TrimSpace(f.LWTTopic)) config.Set("Mqtt.LWTMessageOnline", strings.TrimSpace(f.LWTMessageOnline)) config.Set("Mqtt.LWTMessageOffline", strings.TrimSpace(f.LWTMessageOffline)) config.Set("Mqtt.HomeAssistant", f.HomeAssistant) config.WriteConfig() if mqttReconfigFunction != nil { go mqttReconfigFunction() } mqttPage(ctx) }