新增任务创建和执行接口
This commit is contained in:
@@ -78,7 +78,7 @@ func (self *BaseController) Auth() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
isHasAuth := strings.Contains(self.allowUrl, self.controllerName+"/"+self.actionName)
|
isHasAuth := strings.Contains(self.allowUrl, self.controllerName+"/"+self.actionName)
|
||||||
noAuth := "ajaxsave/table/loginin/loginout/getnodes/start"
|
noAuth := "ajaxsave/table/loginin/loginout/getnodes/start/apitask/apistart/apipause"
|
||||||
isNoAuth := strings.Contains(noAuth, self.actionName)
|
isNoAuth := strings.Contains(noAuth, self.actionName)
|
||||||
|
|
||||||
if isHasAuth == false && isNoAuth == false {
|
if isHasAuth == false && isNoAuth == false {
|
||||||
@@ -95,7 +95,12 @@ func (self *BaseController) Auth() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.userId == 0 && (self.controllerName != "login" && self.actionName != "loginin") {
|
if self.userId == 0 &&
|
||||||
|
(self.controllerName != "login" &&
|
||||||
|
self.actionName != "loginin" &&
|
||||||
|
self.actionName != "apistart" &&
|
||||||
|
self.actionName != "apitask" &&
|
||||||
|
self.actionName != "apipause") {
|
||||||
self.redirect(beego.URLFor("LoginController.Login"))
|
self.redirect(beego.URLFor("LoginController.Login"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/astaxie/beego"
|
"github.com/astaxie/beego"
|
||||||
"github.com/george518/PPGo_Job/crons"
|
"github.com/george518/PPGo_Job/crons"
|
||||||
"github.com/george518/PPGo_Job/jobs"
|
"github.com/george518/PPGo_Job/jobs"
|
||||||
@@ -46,8 +44,6 @@ func (self *TaskController) Add() {
|
|||||||
self.Data["serverGroup"] = serverLists(self.serverGroups, self.userId)
|
self.Data["serverGroup"] = serverLists(self.serverGroups, self.userId)
|
||||||
self.Data["isAdmin"] = self.userId
|
self.Data["isAdmin"] = self.userId
|
||||||
self.Data["adminInfo"] = AllAdminInfo("")
|
self.Data["adminInfo"] = AllAdminInfo("")
|
||||||
|
|
||||||
fmt.Println(self.Data["adminInfo"])
|
|
||||||
self.display()
|
self.display()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -295,6 +291,8 @@ func (self *TaskController) AjaxSave() {
|
|||||||
self.ajaxMsg("", MSG_OK)
|
self.ajaxMsg("", MSG_OK)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//检查是否含有禁用命令
|
//检查是否含有禁用命令
|
||||||
func checkCommand(command string) (string, bool) {
|
func checkCommand(command string) (string, bool) {
|
||||||
|
|
||||||
@@ -334,6 +332,8 @@ func (self *TaskController) AjaxNopass() {
|
|||||||
self.ajaxMsg("", MSG_OK)
|
self.ajaxMsg("", MSG_OK)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func (self *TaskController) AjaxStart() {
|
func (self *TaskController) AjaxStart() {
|
||||||
taskId, _ := self.GetInt("id")
|
taskId, _ := self.GetInt("id")
|
||||||
if taskId == 0 {
|
if taskId == 0 {
|
||||||
@@ -656,3 +656,139 @@ func (self *TaskController) Table() {
|
|||||||
|
|
||||||
self.ajaxList("成功", MSG_OK, count, list)
|
self.ajaxList("成功", MSG_OK, count, list)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *TaskController) ApiTask() {
|
||||||
|
task_id, _ := self.GetInt("id")
|
||||||
|
if task_id == 0 {
|
||||||
|
task := new(models.Task)
|
||||||
|
task.CreateId,_ = self.GetInt("create_id")
|
||||||
|
task.GroupId, _ = self.GetInt("group_id")
|
||||||
|
task.TaskName = strings.TrimSpace(self.GetString("task_name"))
|
||||||
|
task.Description = strings.TrimSpace(self.GetString("description"))
|
||||||
|
task.Concurrent, _ = self.GetInt("concurrent")
|
||||||
|
task.ServerId, _ = self.GetInt("server_id")
|
||||||
|
task.CronSpec = strings.TrimSpace(self.GetString("cron_spec"))
|
||||||
|
task.Command = strings.TrimSpace(self.GetString("command"))
|
||||||
|
task.Timeout, _ = self.GetInt("timeout")
|
||||||
|
task.IsNotify, _ = self.GetInt("is_notify")
|
||||||
|
task.NotifyType, _ = self.GetInt("notify_type")
|
||||||
|
task.NotifyTplId, _ = self.GetInt("notify_tpl_id")
|
||||||
|
task.NotifyUserIds = strings.TrimSpace(self.GetString("notify_user_ids"))
|
||||||
|
|
||||||
|
if task.IsNotify == 1 && task.NotifyTplId <= 0 {
|
||||||
|
self.ajaxMsg("请选择通知模板", MSG_ERR)
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, isBan := checkCommand(task.Command)
|
||||||
|
if !isBan {
|
||||||
|
self.ajaxMsg("含有禁止命令:"+msg, MSG_ERR)
|
||||||
|
}
|
||||||
|
|
||||||
|
task.CreateTime = time.Now().Unix()
|
||||||
|
task.UpdateTime = time.Now().Unix()
|
||||||
|
task.Status = 0 //接口不需要审核
|
||||||
|
|
||||||
|
if task.TaskName == "" || task.CronSpec == "" || task.Command == "" {
|
||||||
|
self.ajaxMsg("请填写完整信息", MSG_ERR)
|
||||||
|
}
|
||||||
|
var id int64
|
||||||
|
var err error
|
||||||
|
if _, err = cron.Parse(task.CronSpec); err != nil {
|
||||||
|
self.ajaxMsg("cron表达式无效", MSG_ERR)
|
||||||
|
}
|
||||||
|
|
||||||
|
if id, err = models.TaskAdd(task); err != nil {
|
||||||
|
self.ajaxMsg(err.Error(), MSG_ERR)
|
||||||
|
}
|
||||||
|
task_id = int(id)
|
||||||
|
self.ajaxMsg(task_id, MSG_OK)
|
||||||
|
}
|
||||||
|
|
||||||
|
task, _ := models.TaskGetById(task_id)
|
||||||
|
|
||||||
|
if task.Status == 1 {
|
||||||
|
self.ajaxMsg("运行状态无法编辑任务,请先暂停任务", MSG_ERR)
|
||||||
|
}
|
||||||
|
//修改
|
||||||
|
task.Id = task_id
|
||||||
|
task.UpdateTime = time.Now().Unix()
|
||||||
|
task.TaskName = strings.TrimSpace(self.GetString("task_name"))
|
||||||
|
task.Description = strings.TrimSpace(self.GetString("description"))
|
||||||
|
task.GroupId, _ = self.GetInt("group_id")
|
||||||
|
task.Concurrent, _ = self.GetInt("concurrent")
|
||||||
|
task.ServerId, _ = self.GetInt("server_id")
|
||||||
|
task.CronSpec = strings.TrimSpace(self.GetString("cron_spec"))
|
||||||
|
task.Command = strings.TrimSpace(self.GetString("command"))
|
||||||
|
task.Timeout, _ = self.GetInt("timeout")
|
||||||
|
task.IsNotify, _ = self.GetInt("is_notify")
|
||||||
|
task.NotifyType, _ = self.GetInt("notify_type")
|
||||||
|
task.NotifyTplId, _ = self.GetInt("notify_tpl_id")
|
||||||
|
task.NotifyUserIds = strings.TrimSpace(self.GetString("notify_user_ids"))
|
||||||
|
task.UpdateId , _ = self.GetInt("update_id")
|
||||||
|
task.Status = 0 //接口不需要
|
||||||
|
|
||||||
|
if task.IsNotify == 1 && task.NotifyTplId <= 0 {
|
||||||
|
self.ajaxMsg("请选择通知模板", MSG_ERR)
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, isBan := checkCommand(task.Command)
|
||||||
|
if !isBan {
|
||||||
|
self.ajaxMsg("含有禁止命令:"+msg, MSG_ERR)
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := cron.Parse(task.CronSpec); err != nil {
|
||||||
|
self.ajaxMsg("cron表达式无效", MSG_ERR)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := task.Update(); err != nil {
|
||||||
|
self.ajaxMsg(err.Error(), MSG_ERR)
|
||||||
|
}
|
||||||
|
self.ajaxMsg(task_id, MSG_OK)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *TaskController) ApiStart() {
|
||||||
|
taskId, _ := self.GetInt("id")
|
||||||
|
if taskId == 0 {
|
||||||
|
self.ajaxMsg("任务不存在", MSG_ERR)
|
||||||
|
}
|
||||||
|
|
||||||
|
task, err := models.TaskGetById(taskId)
|
||||||
|
if err != nil {
|
||||||
|
self.ajaxMsg("查不到该任务", MSG_ERR)
|
||||||
|
}
|
||||||
|
|
||||||
|
if task.Status != 0 {
|
||||||
|
self.ajaxMsg("任务状态有误", MSG_ERR)
|
||||||
|
}
|
||||||
|
|
||||||
|
job, err := jobs.NewJobFromTask(task)
|
||||||
|
if err != nil {
|
||||||
|
self.ajaxMsg("创建任务失败", MSG_ERR)
|
||||||
|
}
|
||||||
|
|
||||||
|
if jobs.AddJob(task.CronSpec, job) {
|
||||||
|
task.Status = 1
|
||||||
|
task.Update()
|
||||||
|
}
|
||||||
|
self.ajaxMsg("", MSG_OK)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *TaskController) ApiPause() {
|
||||||
|
taskId, _ := self.GetInt("id")
|
||||||
|
if taskId == 0 {
|
||||||
|
self.ajaxMsg("任务不存在", MSG_ERR)
|
||||||
|
}
|
||||||
|
|
||||||
|
task, err := models.TaskGetById(taskId)
|
||||||
|
if err != nil {
|
||||||
|
self.ajaxMsg("查不到该任务", MSG_ERR)
|
||||||
|
}
|
||||||
|
|
||||||
|
jobs.RemoveJob(taskId)
|
||||||
|
task.Status = 0
|
||||||
|
task.Update()
|
||||||
|
self.ajaxMsg("", MSG_OK)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user