From 22fdf55d17030735828333523579f5f0c66615ac Mon Sep 17 00:00:00 2001 From: cdle <798731886@qq.com> Date: Fri, 10 Sep 2021 12:44:52 +0800 Subject: [PATCH] update --- develop/qinglong/config.go | 10 ++-- develop/qinglong/cron.go | 108 ++++++++++++++++++++++++++++++++++--- develop/qinglong/env.go | 33 ++++++------ develop/qinglong/init.go | 2 +- jd_cookie | 1 + 5 files changed, 122 insertions(+), 32 deletions(-) create mode 160000 jd_cookie diff --git a/develop/qinglong/config.go b/develop/qinglong/config.go index e3eba4f..ea6ae32 100644 --- a/develop/qinglong/config.go +++ b/develop/qinglong/config.go @@ -124,7 +124,7 @@ func init() { Rules: []string{`env disable ?`}, Admin: true, Handle: func(s im.Sender) interface{} { - if err := SetConfigEnv(Env{Name: s.Get(0), Status: 1}); err != nil { + if err := SetConfigEnv(Env{Name: s.Get(), Status: 1}); err != nil { return err } return "操作成功" @@ -134,7 +134,7 @@ func init() { Rules: []string{`env enable ?`}, Admin: true, Handle: func(s im.Sender) interface{} { - if err := SetConfigEnv(Env{Name: s.Get(0)}); err != nil { + if err := SetConfigEnv(Env{Name: s.Get()}); err != nil { return err } return "操作成功" @@ -145,14 +145,14 @@ func init() { func GetConfig() (string, error) { config := "data" - if err := req(CONFIG, &config, "/config.sh"); err != nil { + if err := Req(CONFIG, &config, "/config.sh"); err != nil { return "", err } return config, nil } func SvaeConfig(content string) error { - if err := req(POST, CONFIG, map[string]interface{}{ + if err := Req(POST, CONFIG, map[string]interface{}{ "name": "config.sh", "content": content, }, "/save"); err != nil { @@ -222,7 +222,7 @@ func SetConfigEnv(envs ...Env) error { h = "## " } if i <= 1 { - h = "export " + h += "export " } lines[j] = h + fmt.Sprintf("%s=\"%s\"", e.Name, e.Value) set = true diff --git a/develop/qinglong/cron.go b/develop/qinglong/cron.go index 01715f6..d71e09f 100644 --- a/develop/qinglong/cron.go +++ b/develop/qinglong/cron.go @@ -1,6 +1,7 @@ package qinglong import ( + "errors" "fmt" "regexp" "strings" @@ -39,7 +40,7 @@ func init() { return err } if len(crons) == 0 { - return "没有任务" + return "没有任务。" } es := []string{} for _, cron := range crons { @@ -49,26 +50,86 @@ func init() { }, }, { - Rules: []string{`cron get ?`}, + Rules: []string{`cron status ?`}, Admin: true, Handle: func(s im.Sender) interface{} { - name := s.Get() + keyword := s.Get() crons, err := GetCrons("") if err != nil { return err } es := []string{} for _, cron := range crons { - if cron.Name == name || regexp.MustCompile(name+"$").FindString(cron.Command) != "" { + if cron.ID == keyword { + es = append(es, formatCron(&cron)) + break + } + if regexp.MustCompile(keyword+"$").FindString(cron.Command) != "" { es = append(es, formatCron(&cron)) } } if len(es) == 0 { - return "找不到该任务" + return "找不到任务。" } return strings.Join(es, "\n\n") }, }, + { + Rules: []string{`cron run ?`}, + Admin: true, + Handle: func(s im.Sender) interface{} { + cron, err := GetCronID(s.Get()) + if err != nil { + return err + } + if err := Req(CRONS, PUT, "/run", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { + return err + } + return "操作成功" + }, + }, + { + Rules: []string{`cron stop ?`}, + Admin: true, + Handle: func(s im.Sender) interface{} { + cron, err := GetCronID(s.Get()) + if err != nil { + return err + } + if err := Req(CRONS, PUT, "/stop", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { + return err + } + return "操作成功" + }, + }, + { + Rules: []string{`cron enable ?`}, + Admin: true, + Handle: func(s im.Sender) interface{} { + cron, err := GetCronID(s.Get()) + if err != nil { + return err + } + if err := Req(CRONS, PUT, "/enable", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { + return err + } + return "操作成功" + }, + }, + { + Rules: []string{`cron disable ?`}, + Admin: true, + Handle: func(s im.Sender) interface{} { + cron, err := GetCronID(s.Get()) + if err != nil { + return err + } + if err := Req(CRONS, PUT, "/disable", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { + return err + } + return "操作成功" + }, + }, { Rules: []string{`cron find ?`}, Admin: true, @@ -94,7 +155,11 @@ func init() { Rules: []string{`cron logs ?`}, Admin: true, Handle: func(s im.Sender) interface{} { - data, err := GetCronLog(s.Get()) + cron, err := GetCronID(s.Get()) + if err != nil { + return err + } + data, err := GetCronLog(cron.ID) if err != nil { return err } @@ -106,7 +171,7 @@ func init() { func GetCrons(searchValue string) ([]Cron, error) { er := CronResponse{} - if err := req(CRONS, &er, "?searchValue="+searchValue); err != nil { + if err := Req(CRONS, &er, "?searchValue="+searchValue); err != nil { return nil, err } return er.Data, nil @@ -116,7 +181,7 @@ func GetCronLog(id string) (string, error) { c := &Carrier{ Get: "data", } - if err := req(CRONS, "/"+id+"/log", c); err != nil { + if err := Req(CRONS, "/"+id+"/log", c); err != nil { return "", err } return c.Value, nil @@ -138,3 +203,30 @@ func formatCron(cron *Cron) string { fmt.Sprintf("状态:%v", status), }, "\n") } + +func GetCronID(keyword string) (*Cron, error) { + crons, err := GetCrons("") + if err != nil { + return nil, err + } + cs := []Cron{} + for _, cron := range crons { + if cron.ID == keyword { + cs = append(cs, cron) + break + } + if cron.Name == keyword { + cs = append(cs, cron) + } + if regexp.MustCompile(keyword+"$").FindString(cron.Command) != "" { + cs = append(cs, cron) + } + } + if len(cs) == 0 { + return nil, errors.New("找不到任务。") + } + if len(cs) != 1 { + return nil, errors.New("搜索到多个任务,请再具体一些!") + } + return &cs[0], nil +} diff --git a/develop/qinglong/env.go b/develop/qinglong/env.go index 6e90598..0db3bf4 100644 --- a/develop/qinglong/env.go +++ b/develop/qinglong/env.go @@ -10,21 +10,20 @@ type EnvResponse struct { } type Env struct { - Value string `json:"value,omitempty"` - ID string `json:"_id,omitempty"` - Status int `json:"status,omitempty"` - Name string `json:"name,omitempty"` - Timestamp string `json:"timestamp,omitempty"` - Remarks string `json:"remarks,omitempty"` + Value string `json:"value,omitempty"` + ID string `json:"_id,omitempty"` + Status int `json:"status,omitempty"` + Name string `json:"name,omitempty"` + Remarks string `json:"remarks,omitempty"` } -func GetEnv(name string) (*Env, error) { +func GetEnv(id string) (*Env, error) { envs, err := GetEnvs("") if err != nil { return nil, err } for _, env := range envs { - if env.Name == name { + if env.ID == id { return &env, nil } } @@ -33,13 +32,13 @@ func GetEnv(name string) (*Env, error) { func GetEnvs(searchValue string) ([]Env, error) { er := EnvResponse{} - if err := req(ENVS, &er, "?searchValue="+searchValue); err != nil { + if err := Req(ENVS, &er, "?searchValue="+searchValue); err != nil { return nil, err } return er.Data, nil } -func SetEnv(e *Env) error { +func SetEnv(e Env) error { envs, err := GetEnvs("") if err != nil { return err @@ -55,14 +54,13 @@ func SetEnv(e *Env) error { if e.Name != "" { env.Name = e.Name } - env.Timestamp = "" - return req(PUT, ENVS, env) + return Req(PUT, ENVS, env) } } return AddEnv(e) } -func ModEnv(e *Env) error { +func ModEnv(e Env) error { envs, err := GetEnvs("") if err != nil { return err @@ -78,17 +76,16 @@ func ModEnv(e *Env) error { if e.Name != "" { env.Name = e.Name } - env.Timestamp = "" - return req(PUT, ENVS, env) + return Req(PUT, ENVS, env) } } return errors.New("找不到环境变量") } -func AddEnv(e *Env) error { - return req(POST, ENVS, []Env{*e}) +func AddEnv(e Env) error { + return Req(POST, ENVS, []Env{e}) } func RemEnv(e *Env) error { - return req(DELETE, ENVS, []byte(`["`+e.ID+`"]`)) + return Req(DELETE, ENVS, []byte(`["`+e.ID+`"]`)) } diff --git a/develop/qinglong/init.go b/develop/qinglong/init.go index 02dcece..dd37d88 100644 --- a/develop/qinglong/init.go +++ b/develop/qinglong/init.go @@ -71,7 +71,7 @@ func getToken() (string, error) { return token, nil } -func req(ps ...interface{}) error { +func Req(ps ...interface{}) error { token, err := getToken() if err != nil { return err diff --git a/jd_cookie b/jd_cookie new file mode 160000 index 0000000..23a9ef9 --- /dev/null +++ b/jd_cookie @@ -0,0 +1 @@ +Subproject commit 23a9ef914d428fe9d3410473f0343bd2e1bdcb54