openpdu/src/mqtt_ui.go

57 lines
1.5 KiB
Go

package main
import (
"strings"
"github.com/spf13/viper"
"gopkg.in/macaron.v1"
)
func mqttPage(ctx *macaron.Context) {
ctx.Data["schema"] = viper.GetString("Mqtt.Schema")
ctx.Data["host"] = viper.GetString("Mqtt.Host")
ctx.Data["port"] = viper.GetString("Mqtt.Port")
ctx.Data["clientid"] = viper.GetString("Mqtt.CliendID")
ctx.Data["prefix"] = viper.GetString("Mqtt.Prefix")
ctx.Data["username"] = viper.GetString("Mqtt.Username")
ctx.Data["password"] = viper.GetString("Mqtt.Password")
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"`
}
func mqttPost(ctx *macaron.Context, f MQTTPostForm) {
schema := strings.ToLower(strings.TrimSpace(f.Schema))
switch schema {
case
"tcp",
"ssl",
"ws":
viper.Set("MqttSchema", schema)
default:
mqttPage(ctx)
return
}
viper.Set("Mqtt.Host", strings.ToLower(strings.TrimSpace(f.Host)))
viper.Set("Mqtt.Port", strings.ToLower(strings.TrimSpace(f.Port)))
viper.Set("Mqtt.CliendID", strings.TrimSpace(f.ClientID))
viper.Set("Mqtt.Prefix", strings.TrimSpace(f.Prefix))
viper.Set("Mqtt.Username", strings.TrimSpace(f.Username))
viper.Set("Mqtt.Password", f.Password)
viper.WriteConfig()
mqttPage(ctx)
}