From 8164f3e1611e3d7ae7a0334ddd7ac45fd1c7d9c5 Mon Sep 17 00:00:00 2001 From: cdle <798731886@qq.com> Date: Sat, 2 Oct 2021 10:40:20 +0800 Subject: [PATCH] update --- .gitignore | 3 ++- develop/qinglong/config.go | 4 ++-- develop/qinglong/cron.go | 18 +++++++-------- develop/qinglong/env.go | 12 +++++----- develop/qinglong/init.go | 45 +++++++++++++++++++------------------- 5 files changed, 42 insertions(+), 40 deletions(-) diff --git a/.gitignore b/.gitignore index 6041b21..954d93c 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ logs/* jd_* data dwz -replies \ No newline at end of file +replies +qinglongs \ No newline at end of file diff --git a/develop/qinglong/config.go b/develop/qinglong/config.go index 56a87f9..1049372 100644 --- a/develop/qinglong/config.go +++ b/develop/qinglong/config.go @@ -144,14 +144,14 @@ func init() { func GetConfig() (string, error) { config := "data" - if err := Req(CONFIG, &config, "/config.sh"); err != nil { + if err := Config.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 := Config.Req(POST, CONFIG, map[string]interface{}{ "name": "config.sh", "content": content, }, "/save"); err != nil { diff --git a/develop/qinglong/cron.go b/develop/qinglong/cron.go index 75a4530..d54ef51 100644 --- a/develop/qinglong/cron.go +++ b/develop/qinglong/cron.go @@ -81,7 +81,7 @@ func init() { if err != nil { return err } - if err := Req(CRONS, PUT, "/run", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { + if err := Config.Req(CRONS, PUT, "/run", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { return err } return fmt.Sprintf("已运行 %v", cron.Name) @@ -95,7 +95,7 @@ func init() { if err != nil { return err } - if err := Req(CRONS, PUT, "/stop", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { + if err := Config.Req(CRONS, PUT, "/stop", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { return err } return "操作成功" @@ -109,7 +109,7 @@ func init() { if err != nil { return err } - if err := Req(CRONS, PUT, "/enable", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { + if err := Config.Req(CRONS, PUT, "/enable", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { return err } return "操作成功" @@ -123,7 +123,7 @@ func init() { if err != nil { return err } - if err := Req(CRONS, PUT, "/disable", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { + if err := Config.Req(CRONS, PUT, "/disable", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { return err } return "操作成功" @@ -173,7 +173,7 @@ func init() { if err != nil { return err } - if err := Req(CRONS, PUT, "/run", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { + if err := Config.Req(CRONS, PUT, "/run", []byte(fmt.Sprintf(`["%s"]`, cron.ID))); err != nil { return err } return "操作成功" @@ -230,7 +230,7 @@ func init() { continue } if strings.Contains(crons[i].Command, "jd_disable.py") { - Req(CRONS, PUT, "/disable", []byte(fmt.Sprintf(`["%s"]`, crons[i].ID))) + Config.Req(CRONS, PUT, "/disable", []byte(fmt.Sprintf(`["%s"]`, crons[i].ID))) continue } if task, ok := tasks[crons[i].Name]; ok { @@ -241,7 +241,7 @@ func init() { dup = task tasks[crons[i].Name] = crons[i] } - if err := Req(CRONS, PUT, "/disable", []byte(fmt.Sprintf(`["%s"]`, dup.ID))); err != nil { + if err := Config.Req(CRONS, PUT, "/disable", []byte(fmt.Sprintf(`["%s"]`, dup.ID))); err != nil { s.Reply(fmt.Sprintf("隐藏 %v %v %v", dup.Name, dup.Command, err)) } else { s.Reply(fmt.Sprintf("已隐藏重复任务 %v %v", dup.Name, dup.Command), core.N) @@ -258,7 +258,7 @@ func init() { func GetCrons(searchValue string) ([]Cron, error) { er := CronResponse{} - if err := Req(CRONS, &er, "?searchValue="+searchValue); err != nil { + if err := Config.Req(CRONS, &er, "?searchValue="+searchValue); err != nil { return nil, err } return er.Data, nil @@ -268,7 +268,7 @@ func GetCronLog(id string) (string, error) { c := &Carrier{ Get: "data", } - if err := Req(CRONS, "/"+id+"/log", c); err != nil { + if err := Config.Req(CRONS, "/"+id+"/log", c); err != nil { return "", err } return c.Value, nil diff --git a/develop/qinglong/env.go b/develop/qinglong/env.go index 8f17111..1bd56b1 100644 --- a/develop/qinglong/env.go +++ b/develop/qinglong/env.go @@ -32,7 +32,7 @@ func GetEnv(id string) (*Env, error) { func GetEnvs(searchValue string) ([]Env, error) { er := EnvResponse{} - if err := Req(ENVS, &er, "?searchValue="+searchValue); err != nil { + if err := Config.Req(ENVS, &er, "?searchValue="+searchValue); err != nil { return nil, err } return er.Data, nil @@ -54,14 +54,14 @@ func SetEnv(e Env) error { if e.Name != "" { env.Name = e.Name } - return Req(PUT, ENVS, env) + return Config.Req(PUT, ENVS, env) } } return AddEnv(e) } func UdpEnv(env Env) error { - return Req(PUT, ENVS, env) + return Config.Req(PUT, ENVS, env) } func ModEnv(e Env) error { @@ -80,16 +80,16 @@ func ModEnv(e Env) error { if e.Name != "" { env.Name = e.Name } - return Req(PUT, ENVS, env) + return Config.Req(PUT, ENVS, env) } } return errors.New("找不到环境变量") } func AddEnv(e Env) error { - return Req(POST, ENVS, []Env{e}) + return Config.Req(POST, ENVS, []Env{e}) } func RemEnv(e *Env) error { - return Req(DELETE, ENVS, []byte(`["`+e.ID+`"]`)) + return Config.Req(DELETE, ENVS, []byte(`["`+e.ID+`"]`)) } diff --git a/develop/qinglong/init.go b/develop/qinglong/init.go index a99773c..7680e98 100644 --- a/develop/qinglong/init.go +++ b/develop/qinglong/init.go @@ -15,16 +15,16 @@ import ( "github.com/cdle/sillyGirl/core" ) -type Yaml struct { - Host string - ClientID string `yaml:"client_id"` - ClientSecret string `yaml:"client_secret"` +type QingLong struct { + Host string `json:"host"` + ClientID string `json:"client_id"` + ClientSecret string `json:"client_secret"` + Token string } -var Config Yaml +var Config *QingLong var qinglong = core.NewBucket("qinglong") -var token string var expiration int64 var GET = "GET" var PUT = "PUT" @@ -40,23 +40,27 @@ type Carrier struct { } func init() { + Config = &QingLong{} Config.Host = qinglong.Get("host") Config.ClientID = qinglong.Get("client_id") Config.ClientSecret = qinglong.Get("client_secret") + if Config.Host == "" { + return + } if v := regexp.MustCompile(`^(https?://[\.\w]+:?\d*)`).FindStringSubmatch(Config.Host); len(v) == 2 { Config.Host = v[1] } - _, err := getToken() + _, err := Config.GetToken() if err == nil { logs.Info("青龙已连接") } } -func getToken() (string, error) { - if token != "" && expiration > time.Now().Unix() { - return token, nil +func (ql *QingLong) GetToken() (string, error) { + if ql.Token != "" && expiration > time.Now().Unix() { + return ql.Token, nil } - req := httplib.Get(fmt.Sprintf("%s/open/auth/token?client_id=%s&client_secret=%s", Config.Host, Config.ClientID, Config.ClientSecret)) + req := httplib.Get(fmt.Sprintf("%s/open/auth/token?client_id=%s&client_secret=%s", ql.Host, ql.ClientID, ql.ClientSecret)) data, err := req.Bytes() if err != nil { msg := fmt.Sprintf("青龙连接失败:%v", err) @@ -69,13 +73,13 @@ func getToken() (string, error) { logs.Warn(msg) return "", errors.New(msg) } - token, _ = jsonparser.GetString(data, "data", "token") + ql.Token, _ = jsonparser.GetString(data, "data", "token") expiration, _ = jsonparser.GetInt(data, "data", "expiration") - return token, nil + return ql.Token, nil } -func Req(ps ...interface{}) error { - token, err := getToken() +func (ql *QingLong) Req(ps ...interface{}) error { + token, err := ql.GetToken() if err != nil { return err } @@ -116,22 +120,19 @@ func Req(ps ...interface{}) error { api = strings.Trim(api, " ") switch method { case GET: - req = httplib.Get(Config.Host + "/open/" + api) + req = httplib.Get(ql.Host + "/open/" + api) case POST: - req = httplib.Post(Config.Host + "/open/" + api) + req = httplib.Post(ql.Host + "/open/" + api) case DELETE: - req = httplib.Delete(Config.Host + "/open/" + api) + req = httplib.Delete(ql.Host + "/open/" + api) case PUT: - req = httplib.Put(Config.Host + "/open/" + api) + req = httplib.Put(ql.Host + "/open/" + api) } req.Header("Authorization", fmt.Sprintf("Bearer %s", token)) req.Header("Content-Type", "application/json;charset=UTF-8") if method != GET { req.Body(body) } - // fmt.Println(Config.Host + "/open/" + api) - // fmt.Println(method) - // fmt.Println(string(body)) data, err := req.Bytes() if err != nil { return err