package mqttdisp // import ( // "encoding/json" // "fmt" // "net/http" // "strings" // "time" // // "usecases/usecases_server/utils/cyllib/re" // "usecases/usecases_server/utils" // mqtt "usecases/usecases_server/utils/cyllib/mqtt" // "usecases/usecases_server/utils/cyllib/serial" // "usecases/usecases_server/utils/cyllib/ssh" // MQTT "github.com/eclipse/paho.mqtt.golang" // "github.com/gin-gonic/gin" // // "go.bug.st/serial" // ) // type MqttController struct { // } // func (s *MqttController) GetSaveInfo(c *gin.Context) { // msg := &gin.H{ // "user": "root", // "password": "Pat123456", // "host": "192.168.0.", // } // c.JSON(http.StatusOK, &msg) // } // func (s *MqttController) ConnectDev(c *gin.Context) { // flag := false // typ := c.Query("typ") // data := c.Query("data") // id := utils.GetId(c) // msg := ssh.SSHMsg{} // json.Unmarshal([]byte(data), &msg) // data, _, err := ssh.SSHExeOutput("whoami", msg, true) // if err != nil { // fmt.Println("ssh.Dial error3:", err) // goto Loop // } // data = strings.ReplaceAll(data, "\n", "") // data = strings.ReplaceAll(data, "\r", "") // if typ == "dev" { // if strings.Contains(strings.ToLower(data), strings.ToLower(msg.User)) { // flag = true // mqtt.SetConnectMapDevice(id, msg) // } // } else if typ == "gateway" { // if data == msg.User { // flag = true // mqtt.SetConnectMapGatway(id, msg) // } // } // Loop: // c.JSON(http.StatusOK, &gin.H{"flag": flag}) // } // func (s *MqttController) ResetService(c *gin.Context) { // flag := false // typ := c.Query("typ") // id := utils.GetId(c) // if typ == "dev" { // dev:=*mqtt.GetConnectMapDevice(id) // client, _ := ssh.NewSshClient(dev) // go func() { // client.Run("taskkill -f /im usecases_proxy.exe") // go client.Run("C:/1.MyFile/A_File/Go/src/4-19/usecases/usecases_proxy/usecases_proxy.exe") // }() // time.Sleep(time.Millisecond * 500) //等待usecases_proxy程序启动后再查询是否启动 // if utils.CheckMqttMsg(dev) { // flag = true // } // client.Close() // } else if typ == "gateway" { // gw:=*mqtt.GetConnectMapGateway(id) // client, _ := ssh.NewSshClient(gw) // data, _ := client.Run("pidof usecases_proxy") // if data != "" { // if utils.CheckMqttMsg(gw) { // flag = true // } // } else { // go func() { // client.Run("/gateway/usecases.sh 0") // go client.Run("/gateway/usecases.sh 1 &") // }() // time.Sleep(time.Millisecond * 500) //等待usecases_proxy程序启动后再查询是否启动 // if utils.CheckMqttMsg(gw) { // flag = true // } // } // } // c.JSON(http.StatusOK, &gin.H{"flag": flag}) // } // func (s *MqttController) UartPorts(c *gin.Context) { // device:=mqtt.GetConnectMapDevice(utils.GetId(c)) // var commap map[string]interface{} // var ch = make(chan bool, 1) // go func() { // tim := utils.DelayOnce(time.Second, func() { // ch <- true // mqtt.UnSubscribe(mqtt.SubReplay) // }) // mqtt.Subscribe(mqtt.SubReplay, func(c MQTT.Client, m MQTT.Message) { // replay := mqtt.Mqtt_GetReplay(m) // if replay.Name == "GetPorts" && replay.Ip == device.Host { // commap = replay.Data.(map[string]interface{}) // ch <- true // tim.Stop() // mqtt.UnSubscribe(mqtt.SubReplay) // } // }) // }() // port := mqtt.Message{ // Ip: device.Host, // Name: "GetPorts", // Data: "", // } // mqtt.Push(mqtt.PushInstr, port) // <-ch // comlist := commap["comlist"] // chks := commap["chks"] // c.JSON(http.StatusOK, &gin.H{"comlist": comlist, "chks": chks}) // } // func StartStatistical(c *gin.Context) bool { // fmt.Println("StartStatistical") // var uartdata serial.Uart // var ch = make(chan bool, 1) // uartdatas := c.Query("uartdata") // json.Unmarshal([]byte(uartdatas), &uartdata) // id := utils.GetId(c) // device:=mqtt.GetConnectMapDevice(id) // gateway:=mqtt.GetConnectMapGateway(id) // mqtt.SetConnectMapUart(id, uartdata) // // 等待启动终端 // go func() { // fldev, flgw := false, false // tim := utils.DelayOnce(time.Second*2, func() { // ch <- utils.TernaryVal(fldev && flgw, true, false).(bool) // mqtt.UnSubscribe(mqtt.SubReplay) // }) // mqtt.Subscribe(mqtt.SubReplay, func(c MQTT.Client, m MQTT.Message) { // replay := mqtt.Mqtt_GetReplay(m) // fmt.Println("1 ", replay) // if replay.Ip == device.Host { // fldev = (replay.Name == "success") // } else if replay.Ip == gateway.Host { // flgw = (replay.Name == "success") // } // if fldev && flgw { // fmt.Println(fldev, flgw) // ch <- true // tim.Stop() // mqtt.UnSubscribe(mqtt.SubReplay) // } // }) // }() // mqtt.Push(mqtt.PushInstr, mqtt.Message{ // Ip: gateway.Host, // Name: "Gateway", // Data: "", // }) // mqtt.Push(mqtt.PushInstr, mqtt.Message{ // Ip: device.Host, // Name: "Terminal", // Data: uartdatas, // }) // fl := <-ch // if !fl { // // 这里关闭已经开启的通道 // } // fmt.Println(fl) // return fl // }