|
|
|
|
@ -8,8 +8,10 @@ import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"net/http"
|
|
|
|
|
"strings"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
|
"github.com/spf13/cast"
|
|
|
|
|
"gorm.io/gorm"
|
|
|
|
|
)
|
|
|
|
|
@ -152,6 +154,57 @@ func UpdateHandleStatus(c *gin.Context) {
|
|
|
|
|
c.JSON(http.StatusOK, rsp.Success())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// @Tags Monkey相关 /api/monkey/v2/
|
|
|
|
|
// @Summary 获取Monkey任务的执行命令
|
|
|
|
|
// @Description 通过任务id获取任务的执行命令
|
|
|
|
|
// @accept x-www-form-urlencoded
|
|
|
|
|
// @Param task_id query int true "任务id"
|
|
|
|
|
// @Success 200 {object} models.Response "返回执行命令"
|
|
|
|
|
// @Router /api/monkey/v2/task/command [get]
|
|
|
|
|
func GetTaskCommand(c *gin.Context) {
|
|
|
|
|
rsp := controllers.NewResponse()
|
|
|
|
|
|
|
|
|
|
task_id := cast.ToInt(c.Query("task_id"))
|
|
|
|
|
|
|
|
|
|
if task_id < 1 {
|
|
|
|
|
c.JSON(http.StatusOK, rsp.Error("参数task_id错误:"+c.PostForm("task_id")))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var task models.MonkeyTask
|
|
|
|
|
db, err := dbsql.GetConn(dbsql.DSN)
|
|
|
|
|
if err != nil {
|
|
|
|
|
rsp.Error(err.Error())
|
|
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
defer dbsql.Close(db)
|
|
|
|
|
db.Where("id = ?", task_id).Find(&task)
|
|
|
|
|
|
|
|
|
|
cmd_content := "cd /home/app/monkey && nohup python3 main_adr.py" +
|
|
|
|
|
" -task_id " + cast.ToString(task.Id)
|
|
|
|
|
if task.PackageURL != "" {
|
|
|
|
|
pkg_path := "/home/tmp/pkg/" + cast.ToString(time.Now().Unix()) + ".apk"
|
|
|
|
|
log.Debug("需要下载apk:", task.PackageURL, "-O", pkg_path)
|
|
|
|
|
cmd_content += " -pkg_path " + pkg_path
|
|
|
|
|
log.Debug("下载完毕,安装包路径", pkg_path)
|
|
|
|
|
}
|
|
|
|
|
cmd_content += " -package " + task.PackageName
|
|
|
|
|
if task.LaunchActivity != "" {
|
|
|
|
|
cmd_content += " -launch_activity " + task.LaunchActivity
|
|
|
|
|
}
|
|
|
|
|
cmd_content += " -run_time " + cast.ToString(task.RunTime)
|
|
|
|
|
if task.Devices != "" {
|
|
|
|
|
cmd_content += " -device_udid " + task.Devices
|
|
|
|
|
} else {
|
|
|
|
|
cmd_content += " -device_udid [udid] "
|
|
|
|
|
}
|
|
|
|
|
cmd_content += " >> /home/app/logs/task_output/task_" + cast.ToString(task.Id) + ".log 2>&1"
|
|
|
|
|
|
|
|
|
|
rsp.Data = cmd_content
|
|
|
|
|
c.JSON(http.StatusOK, rsp.Success())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 根据id查询monkey任务信息,db传nil时会另外新建数据库链接
|
|
|
|
|
func getTaskById(id int, db *gorm.DB) (models.MonkeyTask, error) {
|
|
|
|
|
var task models.MonkeyTask
|
|
|
|
|
|