Files
honoka-chan/internal/session/ghome.go
T
2026-04-28 11:44:56 +08:00

49 lines
1.0 KiB
Go

package session
import (
"errors"
ghomemodel "honoka-chan/internal/model/ghome"
)
func (ss *Session) GetDeviceID() string {
return ss.Ctx.Request.Header.Get("X-DEVICEID")
}
func (ss *Session) GetRandKey() []byte {
deviceKey := ghomemodel.DeviceKey{}
has, err := ss.UserEng.Table(new(ghomemodel.DeviceKey)).
Where("device_id = ?", ss.GetDeviceID()).Get(&deviceKey)
if ss.CheckErr(err) {
return nil
}
if !has {
return nil
}
return []byte(deviceKey.RandKey)
}
func (ss *Session) SetRandKey(key string) {
var err error
if ss.GetRandKey() == nil {
_, err = ss.UserEng.Insert(&ghomemodel.DeviceKey{
DeviceID: ss.GetDeviceID(),
RandKey: key,
})
} else {
_, err = ss.UserEng.Table(new(ghomemodel.DeviceKey)).
Where("device_id = ?", ss.GetDeviceID()).Update(&ghomemodel.DeviceKey{RandKey: key})
}
if ss.CheckErr(err) {
return
}
}
func (ss *Session) Get3DESRandKey() ([]byte, error) {
randKey := ss.GetRandKey()
if len(randKey) < 24 {
return nil, errors.New("invalid rand key")
}
return randKey[:24], nil
}