|
@@ -13,6 +13,7 @@ import (
|
|
|
"time"
|
|
"time"
|
|
|
|
|
|
|
|
mqtt "github.com/eclipse/paho.mqtt.golang"
|
|
mqtt "github.com/eclipse/paho.mqtt.golang"
|
|
|
|
|
+ "github.com/sirupsen/logrus"
|
|
|
gps "hnyfkj.com.cn/rtu/linux/air530z"
|
|
gps "hnyfkj.com.cn/rtu/linux/air530z"
|
|
|
mcu "hnyfkj.com.cn/rtu/xy_v/mcu_ctrl_board"
|
|
mcu "hnyfkj.com.cn/rtu/xy_v/mcu_ctrl_board"
|
|
|
|
|
|
|
@@ -386,17 +387,55 @@ func (r *MQTTReporter) execOneCmd(msg mqtt.Message) {
|
|
|
if err == nil {
|
|
if err == nil {
|
|
|
resp, _ = jsonrpc2.BuildResult(req, map[string]string{"filename": rf})
|
|
resp, _ = jsonrpc2.BuildResult(req, map[string]string{"filename": rf})
|
|
|
} else {
|
|
} else {
|
|
|
- resp = jsonrpc2.BuildError(req, -32700, fmt.Sprintf("拍照失败: %s", err.Error()))
|
|
|
|
|
|
|
+ resp = jsonrpc2.BuildError(req, -32700, err.Error())
|
|
|
}
|
|
}
|
|
|
// 下发升级指令
|
|
// 下发升级指令
|
|
|
case "upgrade_app":
|
|
case "upgrade_app":
|
|
|
|
|
+ server, user, pass, rf, md5val1, err := parseUpgradeAppReq(req.Params)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ resp = jsonrpc2.BuildError(req, -32700, err.Error())
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ mcu.GlobalWorkState.Add(mcu.AppUpgrading)
|
|
|
|
|
+ defer mcu.GlobalWorkState.Remove(mcu.AppUpgrading)
|
|
|
|
|
+
|
|
|
|
|
+ lf, err := ftpclient.DownloadFileFromFtp(r.ctx, server, user, pass, rf, ftpclient.DefaultDownloadTimeout)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ resp = jsonrpc2.BuildError(req, -32700, err.Error())
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ md5val2, err := FileMD5(lf)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ resp = jsonrpc2.BuildError(req, -32700, err.Error())
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if !strings.EqualFold(md5val1, md5val2) {
|
|
|
|
|
+ resp = jsonrpc2.BuildError(req, -32700, fmt.Sprintf("MD5校验失败(%s != %s)", md5val1, md5val2))
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ cmdStr := "tar xzf " + lf + " -C " + filepath.Dir(baseapp.EXEC_DIR)
|
|
|
|
|
+ cmd := exec.Command("sh", "-c", cmdStr)
|
|
|
|
|
+ cmd.Stdout = baseapp.Logger.WriterLevel(logrus.DebugLevel)
|
|
|
|
|
+ cmd.Stderr = baseapp.Logger.WriterLevel(logrus.ErrorLevel)
|
|
|
|
|
+ err = cmd.Run()
|
|
|
|
|
+ os.Remove(lf)
|
|
|
|
|
+ if err == nil {
|
|
|
|
|
+ resp, _ = jsonrpc2.BuildResult(req, "Success")
|
|
|
|
|
+ } else {
|
|
|
|
|
+ resp = jsonrpc2.BuildError(req, -32700, err.Error())
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
// 下发重启指令
|
|
// 下发重启指令
|
|
|
case "reboot":
|
|
case "reboot":
|
|
|
cmd := exec.Command("reboot")
|
|
cmd := exec.Command("reboot")
|
|
|
if err := cmd.Run(); err == nil {
|
|
if err := cmd.Run(); err == nil {
|
|
|
resp, _ = jsonrpc2.BuildResult(req, "Success")
|
|
resp, _ = jsonrpc2.BuildResult(req, "Success")
|
|
|
} else {
|
|
} else {
|
|
|
- resp = jsonrpc2.BuildError(req, -32700, fmt.Sprintf("重启失败: %s", err.Error()))
|
|
|
|
|
|
|
+ resp = jsonrpc2.BuildError(req, -32700, err.Error())
|
|
|
}
|
|
}
|
|
|
// 调用无效方法
|
|
// 调用无效方法
|
|
|
default:
|
|
default:
|