zhangzengfei
2023-09-04 e8e536d1cb52d2126c8c7ce2ba1c7a76f7208678
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
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:"保存成功"}
}