缓存token 更改readme readme相关问题不在解答
This commit is contained in:
parent
792274f6f0
commit
68f2929ba1
@ -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 {
|
||||
|
||||
31
models/db.go
31
models/db.go
@ -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
|
||||
}
|
||||
|
||||
@ -5,7 +5,6 @@ import (
|
||||
)
|
||||
|
||||
type Token struct {
|
||||
ID int
|
||||
CreatedAt time.Time
|
||||
Token string
|
||||
expiration time.Time
|
||||
Token string
|
||||
}
|
||||
|
||||
11
readme.txt
11
readme.txt
@ -1 +1,10 @@
|
||||
自用、学习、爱用不用。我就是上传数据也不叫偷,我自己脚本还不是想咋写就咋写,整天偷偷偷的,毛病。
|
||||
自用、学习、爱用不用。我就是上传数据也不叫偷,我自己脚本还不是想咋写就咋写,整天偷偷偷的,毛病。
|
||||
##注意事项
|
||||
1. master: 的值即为密码,后面不可带注释,全匹配方可登录,也不要pt_pin 可自定义
|
||||
2. 2.9+版本需要配置 cid: admin
|
||||
secret: admin
|
||||
在青龙里面系统设置,添加应用后配置
|
||||
3.发送wskey即可自动添加账号
|
||||
4.账号过期自动换key 暂未好
|
||||
5.定时十二小时自动换key 暂未好
|
||||
6.缓存token
|
||||
|
||||
Loading…
Reference in New Issue
Block a user