You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
4.9 KiB
188 lines
4.9 KiB
2 years ago
|
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
|
||
|
// }
|