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:"保存成功"} }