package controllers
|
|
import (
|
"basic.com/valib/bhomeclient.git"
|
"basic.com/valib/logger.git"
|
"encoding/json"
|
"io/ioutil"
|
"os"
|
"vamicro/extend/util"
|
"vamicro/system-service/sys"
|
"vamicro/system-service/vo"
|
)
|
|
type MqttController struct {
|
|
}
|
|
//获取mqtt配置
|
func (mc *MqttController) GetConfig(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply{
|
r := &bhomeclient.Reply{ Success:true }
|
mqttf := util.GetVamicroPath()+"/mqtt.config"
|
if util.FileExists(mqttf) {
|
b, err := ioutil.ReadFile(mqttf)
|
if err == nil {
|
var set vo.MqttConf
|
if err = json.Unmarshal(b, &set);err == nil {
|
r.Data = set
|
}
|
}
|
}
|
|
return r
|
}
|
|
//保存mqtt配置
|
func (mc *MqttController) SaveConfig(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply{
|
var reqBody vo.MqttConf
|
if err :=c.BindJSON(&reqBody);err !=nil {
|
return &bhomeclient.Reply{Msg:err.Error()}
|
}
|
if !reqBody.AnonymousEnable && (reqBody.Username == "" || reqBody.Password == "") {
|
return &bhomeclient.Reply{ Msg:"用户名和密码不能为空" }
|
}
|
|
b, err := json.Marshal(reqBody)
|
if err != nil {
|
return &bhomeclient.Reply{Msg:err.Error()}
|
}
|
|
mqttf := util.GetVamicroPath()+"/mqtt.config"
|
err = ioutil.WriteFile(mqttf, b, os.ModePerm)
|
if err != nil {
|
return &bhomeclient.Reply{Msg:err.Error()}
|
}
|
//1.检查mosquitto 是否安装 (apt安装,配置文件在/etc/mosquitto目录下)
|
if ex :=sys.ExistService("mosquitto");ex == "" {
|
return &bhomeclient.Reply{ Msg:"mqtt server 尚未安装,请先安装服务" }
|
}
|
err = sys.SetMqttConf(&reqBody)
|
if err != nil {
|
logger.Error("SetMqttConf err:", err)
|
return &bhomeclient.Reply{Msg:err.Error()}
|
}
|
|
return &bhomeclient.Reply{Success:true, Msg:"保存成功"}
|
}
|