diff --git a/models/available.go b/models/available.go index df1cc1a..3b1e55c 100644 --- a/models/available.go +++ b/models/available.go @@ -137,7 +137,6 @@ func initCookie() { } func CookieOK(ck *JdCookie) bool { - // fmt.Println(ck.PtPin) cookie := "pt_key=" + ck.PtKey + ";pt_pin=" + ck.PtPin + ";" // fmt.Println(cookie) // jdzz(cookie, make(chan int64)) @@ -169,7 +168,7 @@ func CookieOK(ck *JdCookie) bool { //临时使用别人代码 JdCookie{}.Push(fmt.Sprintf("失效账号,%s", ck.Nickname)) var pinky = fmt.Sprintf("pin=%s;wskey=%s;", ck.PtPin, ck.WsKey) - msg1 := cmd(fmt.Sprintf(`wskey="%s" python3 wspt.py`, pinky), &Sender{}) + msg1 := cmd(fmt.Sprintf(`python3 test.py "%s"`, pinky), &Sender{}) JdCookie{}.Push(fmt.Sprintf("自动转换wskey---%s", msg1)) ss := regexp.MustCompile(`pt_key=([^;=\s]+);pt_pin=([^;=\s]+)`).FindAllStringSubmatch(msg1, -1) if len(ss) > 0 { diff --git a/models/bot.go b/models/bot.go index 849643b..a861d15 100644 --- a/models/bot.go +++ b/models/bot.go @@ -89,20 +89,17 @@ 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], - } - - 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 strings.Contains(rsp, "错误") { + logs.Error("wskey错误") + } else { + 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() { @@ -122,8 +119,9 @@ var handleMessage = func(msgs ...interface{}) interface{} { (&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 { @@ -136,12 +134,15 @@ var handleMessage = func(msgs ...interface{}) interface{} { logs.Info(msg) } + + } + go func() { + Save <- &JdCookie{} + }() + return nil } - go func() { - Save <- &JdCookie{} - }() - return nil } + } } { //tyt diff --git a/models/command.go b/models/command.go index 12cbfe7..e322372 100644 --- a/models/command.go +++ b/models/command.go @@ -7,8 +7,6 @@ import ( "strings" "time" - "github.com/beego/beego/v2/client/httplib" - "github.com/beego/beego/v2/server/web" "gorm.io/gorm" ) @@ -77,8 +75,8 @@ func (sender *Sender) handleJdCookies(handle func(ck *JdCookie)) error { } } if !ok { - sender.Reply("你尚未绑定🐶东账号,请对我说扫码,扫码后即可查询账户资产信息。") - return errors.New("你尚未绑定🐶东账号,请对我说扫码,扫码后即可查询账户资产信息。") + sender.Reply("你尚未绑定🐶东账号,请提交wskey,提交后即可查询账户资产信息。") + return errors.New("你尚未绑定🐶东账号,请提交wskey,提交后即可查询账户资产信息。") } } else { cks = LimitJdCookie(cks, a) @@ -132,7 +130,7 @@ var codeSignals = []CodeSignal{ if zero.Unix() > u.ActiveAt.Unix() { first = true } else { - return fmt.Sprintf("你打过卡了,许愿币余额%d。", u.Coin) + return fmt.Sprintf("你打过卡了,东币余额%d。", u.Coin) } } if first { @@ -149,7 +147,7 @@ var codeSignals = []CodeSignal{ "coin": gorm.Expr(fmt.Sprintf("coin+%d", coin)), }) u.Coin += coin - sender.Reply(fmt.Sprintf("你是打卡第%d人,奖励%d个许愿币,许愿币余额%d。", total[0]+1, coin, u.Coin)) + sender.Reply(fmt.Sprintf("你是打卡第%d人,奖励%d个东币,东币余额%d。", total[0]+1, coin, u.Coin)) ReturnCoin(sender) return "" } @@ -157,25 +155,12 @@ var codeSignals = []CodeSignal{ }, }, { - Command: []string{"coin", "许愿币", "余额", "yu", "yue"}, + Command: []string{"coin", "东币", "余额", "yu", "yue"}, Handle: func(sender *Sender) interface{} { - return fmt.Sprintf("余额%d", GetCoin(sender.UserID)) - }, - }, - { - Command: []string{"qrcode", "扫码", "二维码", "scan"}, - Handle: func(sender *Sender) interface{} { - url := fmt.Sprintf("http://127.0.0.1:%d/api/login/qrcode.png?tp=%s&uid=%d&gid=%d", web.BConfig.Listen.HTTPPort, sender.Type, sender.UserID, sender.ChatID) - if sender.Type == "tgg" { - url += fmt.Sprintf("&mid=%v&unm=%v", sender.MessageID, sender.Username) - } - rsp, err := httplib.Get(url).Response() - if err != nil { - return nil - } - return rsp + return fmt.Sprintf("东币余额%d", GetCoin(sender.UserID)) }, }, + { Command: []string{"升级", "更新", "update", "upgrade"}, Admin: true, @@ -183,7 +168,7 @@ var codeSignals = []CodeSignal{ if err := Update(sender); err != nil { return err.Error() } - sender.Reply("小滴滴重启程序") + sender.Reply("重启程序") Daemon() return nil }, @@ -192,7 +177,7 @@ var codeSignals = []CodeSignal{ Command: []string{"重启", "reload", "restart", "reboot"}, Admin: true, Handle: func(sender *Sender) interface{} { - sender.Reply("小滴滴重启程序") + sender.Reply("重启程序") Daemon() return nil }, @@ -202,11 +187,11 @@ var codeSignals = []CodeSignal{ Handle: func(sender *Sender) interface{} { if !sender.IsAdmin { coin := GetCoin(sender.UserID) - if coin < 0 { - return "许愿币不足以查看UserAgent。" + if coin < 10 { + return "东币不足以查看UserAgent。" } - sender.Reply("查看一次扣1个许愿币。") - RemCoin(sender.UserID, 1) + sender.Reply("查看一次扣10个东币。") + RemCoin(sender.UserID, 10) } return ua }, @@ -262,7 +247,7 @@ var codeSignals = []CodeSignal{ }, }, { - Command: []string{"翻翻乐"}, + Command: []string{"赌一把"}, Handle: func(sender *Sender) interface{} { cost := Int(sender.JoinContens()) if cost <= 0 || cost > 10000 { @@ -270,7 +255,7 @@ var codeSignals = []CodeSignal{ } u := &User{} if err := db.Where("number = ?", sender.UserID).First(u).Error; err != nil || u.Coin < cost { - return "许愿币不足,先去打卡吧。" + return "东币不足,先去打卡吧。" } baga := 0 if u.Coin > 100000 { @@ -279,18 +264,18 @@ var codeSignals = []CodeSignal{ } r := time.Now().Nanosecond() % 10 if r < 5 || baga > 0 { - sender.Reply(fmt.Sprintf("很遗憾你失去了%d枚许愿币。", cost)) + sender.Reply(fmt.Sprintf("很遗憾你失去了%d枚东币。", cost)) cost = -cost } else { if r == 9 { cost *= 2 - sender.Reply(fmt.Sprintf("恭喜你幸运暴击获得%d枚许愿币,20秒后自动转入余额。", cost)) + sender.Reply(fmt.Sprintf("恭喜你幸运暴击获得%d枚东币,20秒后自动转入余额。", cost)) time.Sleep(time.Second * 20) } else { - sender.Reply(fmt.Sprintf("很幸运你获得%d枚许愿币,10秒后自动转入余额。", cost)) + sender.Reply(fmt.Sprintf("很幸运你获得%d枚东币,10秒后自动转入余额。", cost)) time.Sleep(time.Second * 10) } - sender.Reply(fmt.Sprintf("%d枚许愿币已到账。", cost)) + sender.Reply(fmt.Sprintf("%d枚东币已到账。", cost)) } db.Model(u).Update("coin", gorm.Expr(fmt.Sprintf("coin + %d", cost))) return nil @@ -336,7 +321,7 @@ var codeSignals = []CodeSignal{ u := &User{} if err := tx.Where("number = ?", sender.UserID).First(u).Error; err != nil { tx.Rollback() - return "许愿币不足,先去打卡吧。" + return "东币不足,先去打卡吧。" } w := &Wish{ Content: ct, @@ -345,7 +330,7 @@ var codeSignals = []CodeSignal{ } if u.Coin < cost { tx.Rollback() - return fmt.Sprintf("许愿币不足,需要%d个许愿币。", cost) + return fmt.Sprintf("东币不足,需要%d个东币。", cost) } if err := tx.Create(w).Error; err != nil { tx.Rollback() @@ -357,7 +342,7 @@ var codeSignals = []CodeSignal{ } tx.Commit() (&JdCookie{}).Push(fmt.Sprintf("有人许愿%s,愿望id为%d。", w.Content, w.ID)) - return fmt.Sprintf("收到愿望,已扣除%d个许愿币。", cost) + return fmt.Sprintf("收到愿望,已扣除%d个东币。", cost) }, }, { @@ -523,7 +508,7 @@ var codeSignals = []CodeSignal{ ).RowsAffected == 0 { return "先去打卡吧你。" } - return "许愿币+1" + return "东币+1" }, }, { @@ -606,7 +591,7 @@ var codeSignals = []CodeSignal{ db.Model(User{}).Where("number = ?", sender.UserID).Updates(map[string]interface{}{ "coin": gorm.Expr(fmt.Sprintf("coin - %d", cost)), }) - return fmt.Sprintf("转账成功,扣除手续费%d枚许愿币。", cost) + return fmt.Sprintf("转账成功,扣除手续费%d枚东币。", cost) } if amount > 10000 { return "单笔转账限额10000。" @@ -625,7 +610,7 @@ var codeSignals = []CodeSignal{ if !sender.IsAdmin { if amount <= cost { tx.Rollback() - return fmt.Sprintf("转账失败,手续费需要%d个许愿币。", cost) + return fmt.Sprintf("转账失败,手续费需要%d个东币。", cost) } real = amount - cost } else { @@ -707,15 +692,15 @@ func ReturnCoin(sender *Sender) { "coin", gorm.Expr(fmt.Sprintf("coin + %d", w.Coin)), ).RowsAffected == 0 { tx.Rollback() - sender.Reply("愿望未达成退还许愿币失败。") + sender.Reply("愿望未达成退还东币失败。") return } - sender.Reply(fmt.Sprintf("愿望未达成退还%d枚许愿币。", w.Coin)) + sender.Reply(fmt.Sprintf("愿望未达成退还%d枚东币。", w.Coin)) if tx.Model(&w).Update( "status", 1, ).RowsAffected == 0 { tx.Rollback() - sender.Reply("愿望未达成退还许愿币失败。") + sender.Reply("愿望未达成退还东币失败。") return } } 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..8012b5d 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" @@ -272,6 +273,31 @@ func NewJdCookie(ck *JdCookie) error { return tx.Commit().Error } +func UpdateCookie(ck *JdCookie) error { + if ck.Hack == "" { + ck.Hack = False + } + ck.Priority = Config.DefaultPriority + date := Date() + ck.CreateAt = date + tx := db.Begin() + if err := tx.Updates(ck).Error; err != nil { + tx.Rollback() + return err + } + go test2(fmt.Sprintf("pt_key=%s;pt_pin=%s;", ck.PtKey, ck.PtPin)) + if err := tx.Create(&JdCookiePool{ + PtPin: ck.PtPin, + PtKey: ck.PtKey, + WsKey: ck.WsKey, + CreateAt: date, + }).Error; err != nil { + tx.Rollback() + return err + } + return tx.Commit().Error +} + func CheckIn(pin, key string) int { if !HasPin(pin) { NewJdCookie(&JdCookie{ @@ -297,7 +323,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/models/version.go b/models/version.go index 72bbda7..47d7ec9 100644 --- a/models/version.go +++ b/models/version.go @@ -11,8 +11,8 @@ import ( "github.com/beego/beego/v2/core/logs" ) -var version = "20210903" -var describe = "维护更新" +var version = "20210905" +var describe = "BUG维护" var AppName = "xdd" var pname = regexp.MustCompile(`/([^/\s]+)`).FindStringSubmatch(os.Args[0])[1] 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 错误