You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
212 lines
4.4 KiB
212 lines
4.4 KiB
package model |
|
|
|
import ( |
|
"crypto/md5" |
|
"encoding/hex" |
|
"fmt" |
|
"strconv" |
|
|
|
xtime "go-common/library/time" |
|
) |
|
|
|
const ( |
|
// EmptyFace empty face |
|
EmptyFace = "http://static.hdslb.com/images/member/noface.gif" |
|
|
|
_cloudSalt = "bi_clould_tencent_01" |
|
_leak = 1 |
|
) |
|
|
|
// FullFace account full face. |
|
func (m *Info) FullFace() string { |
|
if m.Face == "" { |
|
return EmptyFace |
|
} |
|
return fmt.Sprintf("http://i%d.hdslb.com%s", m.Mid%3, m.Face) |
|
} |
|
|
|
// Token token resp. |
|
type Token struct { |
|
Mid int64 `json:"mid"` |
|
AppID int32 `json:"appid"` |
|
AccessToken string `json:"access_key"` |
|
CreateAt int64 `json:"create_at"` |
|
UserID string `json:"userid"` |
|
Uname string `json:"uname"` |
|
Expires int64 `json:"expires"` |
|
Permission string `json:"permission"` |
|
} |
|
|
|
// LoginToken login token. |
|
type LoginToken struct { |
|
Mid int64 `json:"mid"` |
|
AccessKey string `json:"access_key"` |
|
Expires int64 `json:"expires"` |
|
} |
|
|
|
// RSAKey rsa key. |
|
type RSAKey struct { |
|
Hash string `json:"hash"` |
|
Key string `json:"key"` |
|
} |
|
|
|
// RenewToken renew token resp. |
|
type RenewToken struct { |
|
Expires int64 `json:"expires"` |
|
} |
|
|
|
// AsoAccount aso account. |
|
type AsoAccount struct { |
|
Mid int64 `json:"mid"` |
|
UserID string `json:"userid"` |
|
Uname string `json:"uname"` |
|
Pwd string `json:"pwd"` |
|
Salt string `json:"salt"` |
|
Email *string `json:"email"` |
|
Tel *string `json:"tel"` |
|
CountryID int64 `json:"country_id"` |
|
MobileVerified int8 `json:"mobile_verified"` |
|
Isleak int8 `json:"isleak"` |
|
Ctime xtime.Time `json:"-"` |
|
Mtime xtime.Time `json:"-"` |
|
} |
|
|
|
// ResRegV3 ResRegV3 |
|
type ResRegV3 struct { |
|
Mid int `json:"mid"` |
|
} |
|
|
|
// ResRegV2 ResRegV2 |
|
type ResRegV2 struct { |
|
Mid int `json:"mid"` |
|
AccessKey string `json:"accessKey"` |
|
} |
|
|
|
// ResReg ResReg |
|
type ResReg struct { |
|
Mid int `json:"mid"` |
|
} |
|
|
|
// ResByTel ResByTel |
|
type ResByTel struct { |
|
Mid int `json:"mid"` |
|
AccessKey string `json:"accessKey"` |
|
} |
|
|
|
// ResCaptcha ResCaptcha |
|
type ResCaptcha struct { |
|
Code int `json:"code"` |
|
Message string `json:"message"` |
|
Data CaptchaData `json:"data"` |
|
} |
|
|
|
// CaptchaData CaptchaData |
|
type CaptchaData struct { |
|
Token string `json:"token"` |
|
URL string `json:"url"` |
|
} |
|
|
|
// ArgRegV3 ArgRegV3 |
|
type ArgRegV3 struct { |
|
User string `form:"user" validate:"required"` |
|
Pwd string `form:"pwd" validate:"required"` |
|
Captcha string `form:"captcha"` |
|
Ctoken string `form:"ctoken"` |
|
} |
|
|
|
// ArgRegV2 ArgRegV2 |
|
type ArgRegV2 struct { |
|
Captcha string `form:"captcha"` |
|
Ctoken string `form:"ctoken"` |
|
} |
|
|
|
// ArgReg ArgReg |
|
type ArgReg struct { |
|
Email string `form:"email" validate:"required"` |
|
Userpwd string `form:"pwd" validate:"required"` |
|
User string `form:"user" validate:"required"` |
|
} |
|
|
|
// ArgByTel ArgByTel |
|
type ArgByTel struct { |
|
Tel string `form:"tel" validate:"required"` |
|
Uname string `form:"user" validate:"required"` |
|
Userpwd string `form:"pwd" validate:"required"` |
|
CountryID string `form:"country_id" validate:"required"` |
|
Captcha string `form:"captcha" validate:"required"` |
|
} |
|
|
|
// SendSms SendSms |
|
type SendSms struct { |
|
Tel string `form:"tel" validate:"required"` |
|
CountryID string `form:"country_id" validate:"required"` |
|
Captcha string `form:"captcha" ` |
|
Ctoken string `form:"ctoken" ` |
|
ResetPwd bool `form:"reset_pwd" ` |
|
} |
|
|
|
// TdoRegV3 TdoRegV3 |
|
type TdoRegV3 struct { |
|
Arg ArgRegV3 |
|
Cookie string |
|
IP string |
|
} |
|
|
|
// TdoRegV2 TdoRegV2 |
|
type TdoRegV2 struct { |
|
Arg ArgRegV2 |
|
Cookie string |
|
IP string |
|
} |
|
|
|
// TdoReg TdoReg |
|
type TdoReg struct { |
|
Arg ArgReg |
|
Cookie string |
|
IP string |
|
} |
|
|
|
// TdoByTel TdoByTel |
|
type TdoByTel struct { |
|
Arg ArgByTel |
|
Cookie string |
|
IP string |
|
} |
|
|
|
// TdoSendSms TdoSendSms |
|
type TdoSendSms struct { |
|
Arg SendSms |
|
Cookie string |
|
IP string |
|
} |
|
|
|
// Leak leak. |
|
func (a *AsoAccount) Leak() bool { |
|
return a.Isleak == _leak |
|
} |
|
|
|
// DefaultHash hash a plain text using default salt. |
|
func DefaultHash(plaintext string) string { |
|
return doHash(plaintext, _cloudSalt) |
|
} |
|
|
|
func doHash(plaintext, salt string) string { |
|
if plaintext == "" { |
|
return "" |
|
} |
|
hash := md5.New() |
|
hash.Write([]byte(plaintext)) |
|
hash.Write([]byte(salt)) |
|
md := hash.Sum(nil) |
|
return hex.EncodeToString(md) |
|
} |
|
|
|
// DefaultUserID get default user id. |
|
func DefaultUserID(mid int64) string { |
|
return "用户" + strconv.FormatInt(mid, 10) |
|
} |
|
|
|
// DefaultUname get default uname. |
|
func DefaultUname(mid int64) string { |
|
return "用户" + strconv.FormatInt(mid, 10) |
|
}
|
|
|