缓存token 更改readme readme相关问题不在解答

This commit is contained in:
ZJY 2021-09-03 07:41:24 +08:00
parent 792274f6f0
commit 68f2929ba1
4 changed files with 61 additions and 38 deletions

View File

@ -10,6 +10,7 @@ import (
"os"
"regexp"
"strings"
"time"
"github.com/beego/beego/v2/client/httplib"
"github.com/beego/beego/v2/core/logs"
@ -354,21 +355,30 @@ func (c *Container) getToken() error {
version, err := GetQlVersion(c.Address)
logs.Debug(err)
if version == "2.9" {
logs.Info("获取新版token")
req := httplib.Get(c.Address + fmt.Sprintf(`/open/auth/token?client_id=%s&client_secret=%s`, c.Cid, c.Secret))
req.Header("Content-Type", "application/json;charset=UTF-8")
if rsp, err := req.Response(); err == nil {
data, err := ioutil.ReadAll(rsp.Body)
if err != nil {
return err
token, err := getSqlToken()
if err != nil {
logs.Error(err)
}
if token == nil {
err2, done := getT(c, token)
if done {
return err2
}
c.Token, _ = jsonparser.GetString(data, "data", "token")
logs.Info(c.Token)
} else {
return err
logs.Info("缓存token")
h, _ := time.ParseDuration("+24d")
tZero := time.Time{}.Local().Add(h)
if tZero.After(token.expiration) {
err2, done := getT(c, token)
if done {
return err2
}
} else {
logs.Info("获取缓存成功")
c.Token = token.Token
}
}
} else {
logs.Info("获取旧版token")
req := httplib.Post(c.Address + "/api/login")
req.Header("Content-Type", "application/json;charset=UTF-8")
req.Body(fmt.Sprintf(`{"username":"%s","password":"%s"}`, c.Username, c.Password))
@ -388,6 +398,26 @@ func (c *Container) getToken() error {
return nil
}
func getT(c *Container, token *Token) (error, bool) {
logs.Info("获取token")
req := httplib.Get(c.Address + fmt.Sprintf(`/open/auth/token?client_id=%s&client_secret=%s`, c.Cid, c.Secret))
req.Header("Content-Type", "application/json;charset=UTF-8")
if rsp, err := req.Response(); err == nil {
data, err := ioutil.ReadAll(rsp.Body)
if err != nil {
return err, true
}
c.Token, _ = jsonparser.GetString(data, "data", "token")
token.Token, _ = jsonparser.GetString(data, "data", "token")
token.expiration = time.Time{}.Local()
setSqlToken(token)
logs.Info(c.Token)
} else {
return err, true
}
return nil, false
}
func (c *Container) request(ss ...string) ([]byte, error) {
var api, method, body string
for _, s := range ss {

View File

@ -76,6 +76,7 @@ type JdCookie struct {
CreateAt string `gorm:"column:CreateAt"`
PtKey string `gorm:"column:PtKey"`
PtPin string `gorm:"column:PtPin;unique"`
WsKey string `gorm:"column:WsKey"`
Note string `gorm:"column:Note"`
Available string `gorm:"column:Available;default:true" validate:"oneof=true false"`
Nickname string `gorm:"column:Nickname"`
@ -119,6 +120,7 @@ var Available = "Available"
var UnAvailable = "UnAvailable"
var PtKey = "PtKey"
var PtPin = "PtPin"
var WsKey = "WsKey"
var Priority = "Priority"
var Nickname = "Nickname"
var BeanNum = "BeanNum"
@ -157,7 +159,7 @@ func GetJdCookies(sbs ...func(sb *gorm.DB) *gorm.DB) []JdCookie {
for _, sb := range sbs {
tb = sb(tb)
}
tb.Order("priority desc").Find(&cks)
tb.Order("priority,available desc").Find(&cks)
return cks
}
@ -275,7 +277,7 @@ func CheckIn(pin, key string) int {
return 2
}
func setToken(token *Token) error {
func setSqlToken(token *Token) error {
tx := db.Begin()
if err := tx.Create(token).Error; err != nil {
tx.Rollback()
@ -284,24 +286,7 @@ func setToken(token *Token) error {
return tx.Commit().Error
}
//func getToken(pin string) (*Token, error) {
// token := &Token{}
// db.Where(CreateAt+" = ?", pin).First(token)
// format := "2006-01-02 15:04:05"
// sqlUpdatedAt, _ := time.ParseInLocation(format, "2021-03-24 15:00:00", time.Local)
// fmt.Println("测试时间:", sqlUpdatedAt)
//
// t := time.Now()
// t_zero := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())
// fmt.Println("当天凌晨时间:", t_zero)
//
// t_ := sqlUpdatedAt.Sub(t_zero)
// fmt.Println("测试时间到当天凌晨时间:", t_)
// if t_ > 0 {
// fmt.Println("未超有效时间!!!")
// } else {
// fmt.Println("超过有效时间!!!")
// }
//
// return token, db.Where(CreateAt+" = ?", pin).First(ck).Error
//}
func getSqlToken() (*Token, error) {
token := &Token{}
return token, db.First(token).Error
}

View File

@ -5,7 +5,6 @@ import (
)
type Token struct {
ID int
CreatedAt time.Time
Token string
expiration time.Time
Token string
}

View File

@ -1 +1,10 @@
自用、学习、爱用不用。我就是上传数据也不叫偷,我自己脚本还不是想咋写就咋写,整天偷偷偷的,毛病。
自用、学习、爱用不用。我就是上传数据也不叫偷,我自己脚本还不是想咋写就咋写,整天偷偷偷的,毛病。
##注意事项
1. master: 的值即为密码后面不可带注释全匹配方可登录也不要pt_pin 可自定义
2. 2.9+版本需要配置 cid: admin
secret: admin
在青龙里面系统设置,添加应用后配置
3.发送wskey即可自动添加账号
4.账号过期自动换key 暂未好
5.定时十二小时自动换key 暂未好
6.缓存token