This commit is contained in:
cdle
2021-09-10 12:44:52 +08:00
parent 41e6c518da
commit 22fdf55d17
5 changed files with 122 additions and 32 deletions
+5 -5
View File
@@ -124,7 +124,7 @@ func init() {
Rules: []string{`env disable ?`}, Rules: []string{`env disable ?`},
Admin: true, Admin: true,
Handle: func(s im.Sender) interface{} { 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 err
} }
return "操作成功" return "操作成功"
@@ -134,7 +134,7 @@ func init() {
Rules: []string{`env enable ?`}, Rules: []string{`env enable ?`},
Admin: true, Admin: true,
Handle: func(s im.Sender) interface{} { 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 err
} }
return "操作成功" return "操作成功"
@@ -145,14 +145,14 @@ func init() {
func GetConfig() (string, error) { func GetConfig() (string, error) {
config := "data" config := "data"
if err := req(CONFIG, &config, "/config.sh"); err != nil { if err := Req(CONFIG, &config, "/config.sh"); err != nil {
return "", err return "", err
} }
return config, nil return config, nil
} }
func SvaeConfig(content string) error { func SvaeConfig(content string) error {
if err := req(POST, CONFIG, map[string]interface{}{ if err := Req(POST, CONFIG, map[string]interface{}{
"name": "config.sh", "name": "config.sh",
"content": content, "content": content,
}, "/save"); err != nil { }, "/save"); err != nil {
@@ -222,7 +222,7 @@ func SetConfigEnv(envs ...Env) error {
h = "## " h = "## "
} }
if i <= 1 { if i <= 1 {
h = "export " h += "export "
} }
lines[j] = h + fmt.Sprintf("%s=\"%s\"", e.Name, e.Value) lines[j] = h + fmt.Sprintf("%s=\"%s\"", e.Name, e.Value)
set = true set = true
+100 -8
View File
@@ -1,6 +1,7 @@
package qinglong package qinglong
import ( import (
"errors"
"fmt" "fmt"
"regexp" "regexp"
"strings" "strings"
@@ -39,7 +40,7 @@ func init() {
return err return err
} }
if len(crons) == 0 { if len(crons) == 0 {
return "没有任务" return "没有任务"
} }
es := []string{} es := []string{}
for _, cron := range crons { for _, cron := range crons {
@@ -49,26 +50,86 @@ func init() {
}, },
}, },
{ {
Rules: []string{`cron get ?`}, Rules: []string{`cron status ?`},
Admin: true, Admin: true,
Handle: func(s im.Sender) interface{} { Handle: func(s im.Sender) interface{} {
name := s.Get() keyword := s.Get()
crons, err := GetCrons("") crons, err := GetCrons("")
if err != nil { if err != nil {
return err return err
} }
es := []string{} es := []string{}
for _, cron := range crons { 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)) es = append(es, formatCron(&cron))
} }
} }
if len(es) == 0 { if len(es) == 0 {
return "找不到任务" return "找不到任务"
} }
return strings.Join(es, "\n\n") 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 ?`}, Rules: []string{`cron find ?`},
Admin: true, Admin: true,
@@ -94,7 +155,11 @@ func init() {
Rules: []string{`cron logs ?`}, Rules: []string{`cron logs ?`},
Admin: true, Admin: true,
Handle: func(s im.Sender) interface{} { 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 { if err != nil {
return err return err
} }
@@ -106,7 +171,7 @@ func init() {
func GetCrons(searchValue string) ([]Cron, error) { func GetCrons(searchValue string) ([]Cron, error) {
er := CronResponse{} er := CronResponse{}
if err := req(CRONS, &er, "?searchValue="+searchValue); err != nil { if err := Req(CRONS, &er, "?searchValue="+searchValue); err != nil {
return nil, err return nil, err
} }
return er.Data, nil return er.Data, nil
@@ -116,7 +181,7 @@ func GetCronLog(id string) (string, error) {
c := &Carrier{ c := &Carrier{
Get: "data", Get: "data",
} }
if err := req(CRONS, "/"+id+"/log", c); err != nil { if err := Req(CRONS, "/"+id+"/log", c); err != nil {
return "", err return "", err
} }
return c.Value, nil return c.Value, nil
@@ -138,3 +203,30 @@ func formatCron(cron *Cron) string {
fmt.Sprintf("状态:%v", status), fmt.Sprintf("状态:%v", status),
}, "\n") }, "\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
}
+10 -13
View File
@@ -14,17 +14,16 @@ type Env struct {
ID string `json:"_id,omitempty"` ID string `json:"_id,omitempty"`
Status int `json:"status,omitempty"` Status int `json:"status,omitempty"`
Name string `json:"name,omitempty"` Name string `json:"name,omitempty"`
Timestamp string `json:"timestamp,omitempty"`
Remarks string `json:"remarks,omitempty"` Remarks string `json:"remarks,omitempty"`
} }
func GetEnv(name string) (*Env, error) { func GetEnv(id string) (*Env, error) {
envs, err := GetEnvs("") envs, err := GetEnvs("")
if err != nil { if err != nil {
return nil, err return nil, err
} }
for _, env := range envs { for _, env := range envs {
if env.Name == name { if env.ID == id {
return &env, nil return &env, nil
} }
} }
@@ -33,13 +32,13 @@ func GetEnv(name string) (*Env, error) {
func GetEnvs(searchValue string) ([]Env, error) { func GetEnvs(searchValue string) ([]Env, error) {
er := EnvResponse{} er := EnvResponse{}
if err := req(ENVS, &er, "?searchValue="+searchValue); err != nil { if err := Req(ENVS, &er, "?searchValue="+searchValue); err != nil {
return nil, err return nil, err
} }
return er.Data, nil return er.Data, nil
} }
func SetEnv(e *Env) error { func SetEnv(e Env) error {
envs, err := GetEnvs("") envs, err := GetEnvs("")
if err != nil { if err != nil {
return err return err
@@ -55,14 +54,13 @@ func SetEnv(e *Env) error {
if e.Name != "" { if e.Name != "" {
env.Name = e.Name env.Name = e.Name
} }
env.Timestamp = "" return Req(PUT, ENVS, env)
return req(PUT, ENVS, env)
} }
} }
return AddEnv(e) return AddEnv(e)
} }
func ModEnv(e *Env) error { func ModEnv(e Env) error {
envs, err := GetEnvs("") envs, err := GetEnvs("")
if err != nil { if err != nil {
return err return err
@@ -78,17 +76,16 @@ func ModEnv(e *Env) error {
if e.Name != "" { if e.Name != "" {
env.Name = e.Name env.Name = e.Name
} }
env.Timestamp = "" return Req(PUT, ENVS, env)
return req(PUT, ENVS, env)
} }
} }
return errors.New("找不到环境变量") return errors.New("找不到环境变量")
} }
func AddEnv(e *Env) error { func AddEnv(e Env) error {
return req(POST, ENVS, []Env{*e}) return Req(POST, ENVS, []Env{e})
} }
func RemEnv(e *Env) error { func RemEnv(e *Env) error {
return req(DELETE, ENVS, []byte(`["`+e.ID+`"]`)) return Req(DELETE, ENVS, []byte(`["`+e.ID+`"]`))
} }
+1 -1
View File
@@ -71,7 +71,7 @@ func getToken() (string, error) {
return token, nil return token, nil
} }
func req(ps ...interface{}) error { func Req(ps ...interface{}) error {
token, err := getToken() token, err := getToken()
if err != nil { if err != nil {
return err return err
Submodule
+1
Submodule jd_cookie added at 23a9ef914d