From 8e62bd6986acd6d2c7d2702fd7aa49d06a5d54a6 Mon Sep 17 00:00:00 2001 From: ZJY <764763903@qq.com> Date: Sun, 5 Sep 2021 07:32:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=A4=9A=E5=AE=B9=E5=99=A8?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/bot.go | 82 ++++++++++++++++++++++++--------------------- models/container.go | 3 +- models/db.go | 5 +-- models/toekn.go | 1 + readme.txt | 5 ++- 5 files changed, 54 insertions(+), 42 deletions(-) diff --git a/models/bot.go b/models/bot.go index d576edb..6fb2492 100644 --- a/models/bot.go +++ b/models/bot.go @@ -89,52 +89,58 @@ var handleMessage = func(msgs ...interface{}) interface{} { rsp := cmd(fmt.Sprintf(`python3 test.py "%s"`, msg), &Sender{}) logs.Info(rsp) ss1 := regexp.MustCompile(`pin=([^;=\s]+);wskey=([^;=\s]+)`).FindAllStringSubmatch(msg, -1) - if len(ss1) > 0 { - for _, s := range ss1 { - ck := JdCookie{ - PtPin: s[1], - PtKey: rsp, - WsKey: s[2], - } + if strings.Contains(rsp, "错误") { + logs.Error("wskey错误") + } else { - ss := regexp.MustCompile(`pt_key=([^;=\s]+);pt_pin=([^;=\s]+)`).FindAllStringSubmatch(rsp, -1) - for _, s1 := range ss { - ck.PtPin = s1[2] - ck.PtKey = s1[1] - } + if len(ss1) > 0 { + for _, s := range ss1 { + ck := JdCookie{ + PtPin: s[1], + PtKey: rsp, + WsKey: s[2], + } - if sender.IsQQ() { - ck.QQ = sender.UserID - } else if sender.IsTG() { - ck.Telegram = sender.UserID - } - if nck, err := GetJdCookie(ck.PtPin); err == nil { - nck.InPool(ck.PtKey) - if nck.WsKey == "" || len(nck.WsKey) == 0 { - nck.Updates(JdCookie{ - WsKey: ck.WsKey, - }) - msg := fmt.Sprintf("写入WsKey,并更新账号%s", ck.PtPin) - (&JdCookie{}).Push(msg) - logs.Info(msg) + ss := regexp.MustCompile(`pt_key=([^;=\s]+);pt_pin=([^;=\s]+)`).FindAllStringSubmatch(rsp, -1) + for _, s1 := range ss { + ck.PtPin = s1[2] + ck.PtKey = s1[1] + } + + if sender.IsQQ() { + ck.QQ = sender.UserID + } else if sender.IsTG() { + ck.Telegram = sender.UserID + } + if nck, err := GetJdCookie(ck.PtPin); err == nil { + nck.InPool(ck.PtKey) + if nck.WsKey == "" || len(nck.WsKey) == 0 { + nck.Updates(JdCookie{ + WsKey: ck.WsKey, + }) + msg := fmt.Sprintf("写入WsKey,并更新账号%s", ck.PtPin) + (&JdCookie{}).Push(msg) + logs.Info(msg) + } else { + msg := fmt.Sprintf("重复写入") + (&JdCookie{}).Push(msg) + logs.Info(msg) + } } else { - msg := fmt.Sprintf("重复写入") - (&JdCookie{}).Push(msg) + NewJdCookie(&ck) + msg := fmt.Sprintf("添加账号,%s", ck.PtPin) + sender.Reply(fmt.Sprintf(msg, AddCoin(sender.UserID))) logs.Info(msg) } - } else { - NewJdCookie(&ck) - msg := fmt.Sprintf("添加账号,%s", ck.PtPin) - sender.Reply(fmt.Sprintf(msg, AddCoin(sender.UserID))) - logs.Info(msg) - } + } + go func() { + Save <- &JdCookie{} + }() + return nil } - go func() { - Save <- &JdCookie{} - }() - return nil } + } } { //tyt diff --git a/models/container.go b/models/container.go index 01a8eb3..a084f12 100644 --- a/models/container.go +++ b/models/container.go @@ -355,7 +355,7 @@ func (c *Container) getToken() error { version, err := GetQlVersion(c.Address) logs.Debug(err) if version == "2.9" { - token, err := getSqlToken() + token, err := getSqlToken(c.Address) if err != nil { logs.Error(err) } @@ -414,6 +414,7 @@ func getT(c *Container, token *Token) (error, bool) { token.Token, _ = jsonparser.GetString(data, "data", "token") zero, _ := time.ParseInLocation("2006-01-02", time.Now().Local().Format("2006-01-02"), time.Local) token.Expiration = zero + token.Address = c.Address setSqlToken(token) logs.Info(c.Token + token.Expiration.String()) } else { diff --git a/models/db.go b/models/db.go index 4f2976b..420f839 100644 --- a/models/db.go +++ b/models/db.go @@ -130,6 +130,7 @@ var UnAvailable = "UnAvailable" var PtKey = "PtKey" var PtPin = "PtPin" var WsKey = "WsKey" +var Address = "Address" var Priority = "Priority" var Nickname = "Nickname" var BeanNum = "BeanNum" @@ -297,7 +298,7 @@ func setSqlToken(token *Token) error { return tx.Commit().Error } -func getSqlToken() (*Token, error) { +func getSqlToken(address string) (*Token, error) { token := &Token{} - return token, db.Order("expiration desc").First(token).Error + return token, db.Where(Address+" = ?", address).Order("expiration desc").First(token).Error } diff --git a/models/toekn.go b/models/toekn.go index 76895d3..d2e0878 100644 --- a/models/toekn.go +++ b/models/toekn.go @@ -7,4 +7,5 @@ import ( type Token struct { Expiration time.Time Token string + Address string } diff --git a/readme.txt b/readme.txt index d481d20..5f6958b 100644 --- a/readme.txt +++ b/readme.txt @@ -5,7 +5,10 @@ secret: admin 在青龙里面系统设置,添加应用后配置 3.发送wskey即可自动添加账号 - 4.账号过期自动换key 暂未好 + 4.账号过期自动换key 更新修复完成 5.定时十二小时自动换key 暂未好 6.缓存token 7.批量绑定wskey + 8.多容器 token缓存过期问题修复 暂未 + 9.wskey更新检测,以及覆盖写入 + 10.解决%!(EXTRA 错误