解决多容器缓存问题

This commit is contained in:
ZJY 2021-09-05 07:32:46 +08:00
parent 4ca2b1ed38
commit 8e62bd6986
5 changed files with 54 additions and 42 deletions

View File

@ -89,52 +89,58 @@ var handleMessage = func(msgs ...interface{}) interface{} {
rsp := cmd(fmt.Sprintf(`python3 test.py "%s"`, msg), &Sender{}) rsp := cmd(fmt.Sprintf(`python3 test.py "%s"`, msg), &Sender{})
logs.Info(rsp) logs.Info(rsp)
ss1 := regexp.MustCompile(`pin=([^;=\s]+);wskey=([^;=\s]+)`).FindAllStringSubmatch(msg, -1) ss1 := regexp.MustCompile(`pin=([^;=\s]+);wskey=([^;=\s]+)`).FindAllStringSubmatch(msg, -1)
if len(ss1) > 0 { if strings.Contains(rsp, "错误") {
for _, s := range ss1 { logs.Error("wskey错误")
ck := JdCookie{ } else {
PtPin: s[1],
PtKey: rsp,
WsKey: s[2],
}
ss := regexp.MustCompile(`pt_key=([^;=\s]+);pt_pin=([^;=\s]+)`).FindAllStringSubmatch(rsp, -1) if len(ss1) > 0 {
for _, s1 := range ss { for _, s := range ss1 {
ck.PtPin = s1[2] ck := JdCookie{
ck.PtKey = s1[1] PtPin: s[1],
} PtKey: rsp,
WsKey: s[2],
}
if sender.IsQQ() { ss := regexp.MustCompile(`pt_key=([^;=\s]+);pt_pin=([^;=\s]+)`).FindAllStringSubmatch(rsp, -1)
ck.QQ = sender.UserID for _, s1 := range ss {
} else if sender.IsTG() { ck.PtPin = s1[2]
ck.Telegram = sender.UserID ck.PtKey = s1[1]
} }
if nck, err := GetJdCookie(ck.PtPin); err == nil {
nck.InPool(ck.PtKey) if sender.IsQQ() {
if nck.WsKey == "" || len(nck.WsKey) == 0 { ck.QQ = sender.UserID
nck.Updates(JdCookie{ } else if sender.IsTG() {
WsKey: ck.WsKey, ck.Telegram = sender.UserID
}) }
msg := fmt.Sprintf("写入WsKey并更新账号%s", ck.PtPin) if nck, err := GetJdCookie(ck.PtPin); err == nil {
(&JdCookie{}).Push(msg) nck.InPool(ck.PtKey)
logs.Info(msg) 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 { } else {
msg := fmt.Sprintf("重复写入") NewJdCookie(&ck)
(&JdCookie{}).Push(msg) msg := fmt.Sprintf("添加账号,%s", ck.PtPin)
sender.Reply(fmt.Sprintf(msg, AddCoin(sender.UserID)))
logs.Info(msg) 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 { //tyt

View File

@ -355,7 +355,7 @@ func (c *Container) getToken() error {
version, err := GetQlVersion(c.Address) version, err := GetQlVersion(c.Address)
logs.Debug(err) logs.Debug(err)
if version == "2.9" { if version == "2.9" {
token, err := getSqlToken() token, err := getSqlToken(c.Address)
if err != nil { if err != nil {
logs.Error(err) logs.Error(err)
} }
@ -414,6 +414,7 @@ func getT(c *Container, token *Token) (error, bool) {
token.Token, _ = jsonparser.GetString(data, "data", "token") token.Token, _ = jsonparser.GetString(data, "data", "token")
zero, _ := time.ParseInLocation("2006-01-02", time.Now().Local().Format("2006-01-02"), time.Local) zero, _ := time.ParseInLocation("2006-01-02", time.Now().Local().Format("2006-01-02"), time.Local)
token.Expiration = zero token.Expiration = zero
token.Address = c.Address
setSqlToken(token) setSqlToken(token)
logs.Info(c.Token + token.Expiration.String()) logs.Info(c.Token + token.Expiration.String())
} else { } else {

View File

@ -130,6 +130,7 @@ var UnAvailable = "UnAvailable"
var PtKey = "PtKey" var PtKey = "PtKey"
var PtPin = "PtPin" var PtPin = "PtPin"
var WsKey = "WsKey" var WsKey = "WsKey"
var Address = "Address"
var Priority = "Priority" var Priority = "Priority"
var Nickname = "Nickname" var Nickname = "Nickname"
var BeanNum = "BeanNum" var BeanNum = "BeanNum"
@ -297,7 +298,7 @@ func setSqlToken(token *Token) error {
return tx.Commit().Error return tx.Commit().Error
} }
func getSqlToken() (*Token, error) { func getSqlToken(address string) (*Token, error) {
token := &Token{} token := &Token{}
return token, db.Order("expiration desc").First(token).Error return token, db.Where(Address+" = ?", address).Order("expiration desc").First(token).Error
} }

View File

@ -7,4 +7,5 @@ import (
type Token struct { type Token struct {
Expiration time.Time Expiration time.Time
Token string Token string
Address string
} }

View File

@ -5,7 +5,10 @@
secret: admin secret: admin
在青龙里面系统设置,添加应用后配置 在青龙里面系统设置,添加应用后配置
3.发送wskey即可自动添加账号 3.发送wskey即可自动添加账号
4.账号过期自动换key 暂未好 4.账号过期自动换key 更新修复完成
5.定时十二小时自动换key 暂未好 5.定时十二小时自动换key 暂未好
6.缓存token 6.缓存token
7.批量绑定wskey 7.批量绑定wskey
8.多容器 token缓存过期问题修复 暂未
9.wskey更新检测以及覆盖写入
10.解决%!(EXTRA 错误