From 19804c540e90f3de744710f2d4d45c6ddc7b29de Mon Sep 17 00:00:00 2001 From: cdle <798731886@qq.com> Date: Thu, 9 Sep 2021 19:28:23 +0800 Subject: [PATCH] update --- .gitignore | 3 +- develop/jd_help/help.go | 2 +- develop/qinglong/config.go | 139 ++++++++++++++++++++++++++++-- develop/qinglong/env.go | 171 +++++++------------------------------ 4 files changed, 166 insertions(+), 149 deletions(-) diff --git a/.gitignore b/.gitignore index e01d859..138d68b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ test sillyGirl .vscode dev.go -.DS_Store \ No newline at end of file +.DS_Store +develop/jd_cookie \ No newline at end of file diff --git a/develop/jd_help/help.go b/develop/jd_help/help.go index b4c1802..ff8c17a 100644 --- a/develop/jd_help/help.go +++ b/develop/jd_help/help.go @@ -102,7 +102,7 @@ func init() { Value: f[i], }) } - qinglong.SetEnv(envs...) + qinglong.SetConfigEnv(envs...) return } } diff --git a/develop/qinglong/config.go b/develop/qinglong/config.go index 87e85b2..e3eba4f 100644 --- a/develop/qinglong/config.go +++ b/develop/qinglong/config.go @@ -25,6 +25,124 @@ func init() { }) } +func init() { + core.AddCommand("ql", []core.Function{ + { + Rules: []string{`envs`}, + Admin: true, + Handle: func(_ im.Sender) interface{} { + envs, err := GetConfigEnvs("") + if err != nil { + return err + } + if len(envs) == 0 { + return "未设置任何环境变量" + } + es := []string{} + for _, env := range envs { + es = append(es, formatEnv(&env)) + } + return strings.Join(es, "\n\n") + }, + }, + { + Rules: []string{`env get ?`}, + Admin: true, + Handle: func(s im.Sender) interface{} { + name := s.Get() + envs, err := GetConfigEnvs(name) + if err != nil { + return err + } + if len(envs) == 0 { + return "未设置该环境变量" + } + es := []string{} + for _, env := range envs { + if env.Name == name { + es = append(es, formatEnv(&env)) + } + } + return strings.Join(es, "\n\n") + }, + }, + { + Rules: []string{`env find ?`}, + Admin: true, + Handle: func(s im.Sender) interface{} { + m := s.Get() + envs, err := GetConfigEnvs(m) + if err != nil { + return err + } + if len(envs) == 0 { + return "找不到环境变量" + } + es := []string{} + for _, env := range envs { + es = append(es, formatEnv(&env)) + } + return strings.Join(es, "\n\n") + }, + }, + { + Rules: []string{`env set ? ?`}, + Admin: true, + Handle: func(s im.Sender) interface{} { + err := SetConfigEnv(Env{ + Name: s.Get(0), + Value: s.Get(1), + Status: 3, + }) + if err != nil { + return err + } + return fmt.Sprintf("操作成功") + }, + }, + // { + // Rules: []string{`env delete ?`}, + // Admin: true, + // Handle: func(s im.Sender) interface{} { + // if err := DelEnv(&Env{ID: s.Get()}); err != nil { + // return err + // } + // return "操作成功" + // }, + // }, + { + Rules: []string{`env remark ? ?`}, + Admin: true, + Handle: func(s im.Sender) interface{} { + if err := SetConfigEnv(Env{Name: s.Get(0), Remarks: s.Get(1), Status: 3}); err != nil { + return err + } + return "操作成功" + }, + }, + { + Rules: []string{`env disable ?`}, + Admin: true, + Handle: func(s im.Sender) interface{} { + if err := SetConfigEnv(Env{Name: s.Get(0), Status: 1}); err != nil { + return err + } + return "操作成功" + }, + }, + { + Rules: []string{`env enable ?`}, + Admin: true, + Handle: func(s im.Sender) interface{} { + if err := SetConfigEnv(Env{Name: s.Get(0)}); err != nil { + return err + } + return "操作成功" + }, + }, + }) +} + func GetConfig() (string, error) { config := "data" if err := req(CONFIG, &config, "/config.sh"); err != nil { @@ -43,7 +161,7 @@ func SvaeConfig(content string) error { return nil } -func GetEnvs(searchValue string) ([]Env, error) { +func GetConfigEnvs(searchValue string) ([]Env, error) { envs := []Env{} content, err := GetConfig() if err != nil { @@ -70,13 +188,16 @@ func GetEnvs(searchValue string) ([]Env, error) { return envs, nil } -func SetEnv(envs ...Env) error { +func SetConfigEnv(envs ...Env) error { config, err := GetConfig() if err != nil { return err } lines := strings.Split(config, "\n") for _, env := range envs { + if env.Name == "" { + continue + } set := false for j, line := range lines { for i, pattern := range []string{`^\s*export\s+([^'"=\s]+)=[ '"]?(.*?)['"]?$`, `^\s*#[#\s]*export\s+([^'"=\s]+)=[ '"]?(.*?)['"]?$`, `^\s*([^'"=\s]+)=[ '"]?(.*?)['"]?$`, `^\s*#[#\s]*([^'"=\s]+)=[ '"]?(.*?)['"]?$`} { @@ -90,15 +211,15 @@ func SetEnv(envs ...Env) error { if env.Name != e.Name { continue } - if env.Value != e.Value { + if env.Value != "" && env.Value != e.Value { e.Value = env.Value } - if env.Status != e.Status { + if env.Status < 2 { e.Status = env.Status } h := "" if e.Status == 1 { - h = "# " + h = "## " } if i <= 1 { h = "export " @@ -115,3 +236,11 @@ func SetEnv(envs ...Env) error { } return SvaeConfig(strings.Join(lines, "\n")) } + +func formatEnv(env *Env) string { + status := "已启用" + if env.Status != 0 { + status = "已禁用" + } + return fmt.Sprintf("名称:%v\n状态:%v\n值:%v", env.Name, status, env.Value) +} diff --git a/develop/qinglong/env.go b/develop/qinglong/env.go index 8fb8815..6e90598 100644 --- a/develop/qinglong/env.go +++ b/develop/qinglong/env.go @@ -2,11 +2,6 @@ package qinglong import ( "errors" - "fmt" - "strings" - - "github.com/cdle/sillyGirl/core" - "github.com/cdle/sillyGirl/im" ) type EnvResponse struct { @@ -23,103 +18,6 @@ type Env struct { Remarks string `json:"remarks,omitempty"` } -func init() { - core.AddCommand("ql", []core.Function{ - { - Rules: []string{`envs`}, - Admin: true, - Handle: func(_ im.Sender) interface{} { - envs, err := GetEnvs("") - if err != nil { - return err - } - if len(envs) == 0 { - return "未设置任何环境变量" - } - es := []string{} - for _, env := range envs { - es = append(es, formatEnv(&env)) - } - return strings.Join(es, "\n\n") - }, - }, - { - Rules: []string{`env get ?`}, - Admin: true, - Handle: func(s im.Sender) interface{} { - name := s.Get() - envs, err := GetEnvs(name) - if err != nil { - return err - } - if len(envs) == 0 { - return "未设置该环境变量" - } - es := []string{} - for _, env := range envs { - if env.Name == name { - es = append(es, formatEnv(&env)) - } - } - return strings.Join(es, "\n\n") - }, - }, - { - Rules: []string{`env find ?`}, - Admin: true, - Handle: func(s im.Sender) interface{} { - m := s.Get() - envs, err := GetEnvs(m) - if err != nil { - return err - } - if len(envs) == 0 { - return "找不到环境变量" - } - es := []string{} - for _, env := range envs { - es = append(es, formatEnv(&env)) - } - return strings.Join(es, "\n\n") - }, - }, - { - Rules: []string{`env set ? ?`}, - Admin: true, - Handle: func(s im.Sender) interface{} { - err := SetEnv(Env{ - Name: s.Get(0), - Value: s.Get(1), - }) - if err != nil { - return err - } - return fmt.Sprintf("操作成功") - }, - }, - { - Rules: []string{`env del ?`}, - Admin: true, - Handle: func(s im.Sender) interface{} { - if err := RemEnv(&Env{ID: s.Get()}); err != nil { - return err - } - return "操作成功" - }, - }, - { - Rules: []string{`env remark ? ?`}, - Admin: true, - Handle: func(s im.Sender) interface{} { - if err := ModEnv(&Env{ID: s.Get(0), Remarks: s.Get(1)}); err != nil { - return err - } - return "操作成功" - }, - }, - }) -} - func GetEnv(name string) (*Env, error) { envs, err := GetEnvs("") if err != nil { @@ -133,39 +31,36 @@ func GetEnv(name string) (*Env, error) { return nil, nil } -// func GetEnvs(searchValue string) ([]Env, error) { -// er := EnvResponse{} -// if err := req(ENVS, &er, "?searchValue="+searchValue); err != nil { -// return nil, err -// } -// return er.Data, nil -// } +func GetEnvs(searchValue string) ([]Env, error) { + er := EnvResponse{} + if err := req(ENVS, &er, "?searchValue="+searchValue); err != nil { + return nil, err + } + return er.Data, nil +} -// func SetEnv(e *Env) error { -// if e.Name == "JD_COOKIE" { -// return errors.New("不支持的操作") -// } -// envs, err := GetEnvs("") -// if err != nil { -// return err -// } -// for _, env := range envs { -// if env.Name == e.Name { -// if e.Remarks != "" { -// env.Remarks = e.Remarks -// } -// if e.Value != "" { -// env.Value = e.Value -// } -// if e.Name != "" { -// env.Name = e.Name -// } -// env.Timestamp = "" -// return req(PUT, ENVS, env) -// } -// } -// return AddEnv(e) -// } +func SetEnv(e *Env) error { + envs, err := GetEnvs("") + if err != nil { + return err + } + for _, env := range envs { + if env.Name == e.Name { + if e.Remarks != "" { + env.Remarks = e.Remarks + } + if e.Value != "" { + env.Value = e.Value + } + if e.Name != "" { + env.Name = e.Name + } + env.Timestamp = "" + return req(PUT, ENVS, env) + } + } + return AddEnv(e) +} func ModEnv(e *Env) error { envs, err := GetEnvs("") @@ -197,11 +92,3 @@ func AddEnv(e *Env) error { func RemEnv(e *Env) error { return req(DELETE, ENVS, []byte(`["`+e.ID+`"]`)) } - -func formatEnv(env *Env) string { - status := "已启用" - if env.Status != 0 { - status = "已禁用" - } - return fmt.Sprintf("名称:%v\n备注:%v\n状态:%v\n值:%v", env.Name, env.Remarks, status, env.Value) -}