package models import ( "io" "os" "strings" "github.com/beego/beego/v2/client/httplib" "github.com/beego/beego/v2/core/logs" ) type Task struct { ID int Cron string Path string Enable bool Mode string //obo alo Word string Run func() Name string } type Env struct { Name string Value string } func initTask() { for i := range Config.Tasks { if Config.Tasks[i].Name == "" { slice := strings.Split(Config.Tasks[i].Path, "/") len := len(slice) if len == 0 { return } Config.Tasks[i].Name = slice[len-1] } createTask(&Config.Tasks[i]) } } func createTask(task *Task) { id, err := c.AddFunc(task.Cron, func() { runTask(task) }) if err != nil { logs.Warn(task.Word, "任务创建失败:", err) } else { task.ID = int(id) logs.Info(task.Word, "任务创建成功:", err) } } func runTask(task *Task) { var path = ExecPath + "/scripts/" + task.Name if strings.Contains(task.Path, "http") { f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777) if err != nil { logs.Warn("打开%s失败,", path, err) } url := task.Path if strings.Contains(url, "raw.githubusercontent.com") { url = GhProxy + url } r, err := httplib.Get(url).Response() if err != nil { logs.Warn("下载%s失败,", task.Path, err) } io.Copy(f, r.Body) f.Close() } // lan := Config.Node // if strings.Contains(task.Name, ".py") { // lan = Config.Python // } // cmd := exec.Command(lan, ) }