|
@@ -8,23 +8,23 @@ import (
|
|
|
"log"
|
|
|
"github.com/go-xweb/httpsession"
|
|
|
"jfw/jyutil"
|
|
|
- "net/url"
|
|
|
"fmt"
|
|
|
)
|
|
|
|
|
|
-type Login struct {
|
|
|
+type PcHelper struct {
|
|
|
*xweb.Action
|
|
|
- login xweb.Mapper `xweb:"/jypc/login"` //pc助手登录
|
|
|
- getSubscribeToken xweb.Mapper `xweb:"/jypc/getST"` //获取订阅记录token
|
|
|
- toPcPushView xweb.Mapper `xweb:"/jypc/toPcPushView"` //跳转到订阅记录页面
|
|
|
- pcPushView xweb.Mapper `xweb:"/jypc/pcPushView"` //订阅记录列表
|
|
|
+ login xweb.Mapper `xweb:"/jypc/login"` //pc助手登录
|
|
|
+ getSubscribeToken xweb.Mapper `xweb:"/jypc/getST"` //获取订阅记录token
|
|
|
+ toPushView xweb.Mapper `xweb:"/jypc/toPushView"` //跳转到订阅记录页面
|
|
|
+ pushView xweb.Mapper `xweb:"/jypc/pushView"` //订阅记录列表
|
|
|
+ logout xweb.Mapper `xweb:"/jypc/logout"` //退出登录
|
|
|
}
|
|
|
|
|
|
func init() {
|
|
|
- xweb.AddAction(&Login{})
|
|
|
+ xweb.AddAction(&PcHelper{})
|
|
|
}
|
|
|
|
|
|
-func (l *Login) Login() error {
|
|
|
+func (l *PcHelper) Login() error {
|
|
|
defer util.Catch()
|
|
|
//登录页面
|
|
|
if l.Method() == "GET" {
|
|
@@ -59,7 +59,7 @@ func (l *Login) Login() error {
|
|
|
}
|
|
|
if (*user)["s_nickname"] != nil {
|
|
|
reNickname = (*user)["s_nickname"].(string)
|
|
|
- }else if (*user)["s_phone"] != nil {
|
|
|
+ } else if (*user)["s_phone"] != nil {
|
|
|
reNickname = (*user)["s_phone"].(string)
|
|
|
}
|
|
|
reToken = getUToken(mac, phone)
|
|
@@ -88,7 +88,7 @@ func (l *Login) Login() error {
|
|
|
}
|
|
|
if (*user)["s_nickname"] != nil {
|
|
|
reNickname = (*user)["s_nickname"].(string)
|
|
|
- }else if (*user)["s_phone"] != nil {
|
|
|
+ } else if (*user)["s_phone"] != nil {
|
|
|
reNickname = (*user)["s_phone"].(string)
|
|
|
}
|
|
|
reToken = getUToken(mac, phone)
|
|
@@ -96,7 +96,7 @@ func (l *Login) Login() error {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }else if reqType == "sendIdentCode" {
|
|
|
+ } else if reqType == "sendIdentCode" {
|
|
|
//phone := jyutil.CheckSendMsg(l.GetString("token"))
|
|
|
phone := l.GetString("phone")
|
|
|
//手机号验证不通过
|
|
@@ -109,9 +109,9 @@ func (l *Login) Login() error {
|
|
|
return 1
|
|
|
}
|
|
|
return 0
|
|
|
- }else if reqType == "autoLogin" {
|
|
|
+ } else if reqType == "autoLogin" {
|
|
|
token := l.GetString("token")
|
|
|
- deMac,phone := decryptUToken(token)
|
|
|
+ deMac, phone := decryptUToken(token)
|
|
|
if phone != "" && mac == deMac {
|
|
|
query := map[string]interface{}{
|
|
|
"i_appid": 2,
|
|
@@ -125,7 +125,7 @@ func (l *Login) Login() error {
|
|
|
}
|
|
|
if (*user)["s_nickname"] != nil {
|
|
|
reNickname = (*user)["s_nickname"].(string)
|
|
|
- }else if (*user)["s_phone"] != nil {
|
|
|
+ } else if (*user)["s_phone"] != nil {
|
|
|
reNickname = (*user)["s_phone"].(string)
|
|
|
}
|
|
|
reToken = getUToken(mac, phone)
|
|
@@ -150,10 +150,18 @@ func (l *Login) Login() error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
-func (l *Login) GetSubscribeToken() error {
|
|
|
+func (l *PcHelper) Logout() {
|
|
|
+ l.DelSession("pc_s_m_openid")
|
|
|
+ deleteIdentSession_(l.Session())
|
|
|
+ l.ServeJson(map[string]interface{}{
|
|
|
+ "status": 1,
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+func (l *PcHelper) GetSubscribeToken() error {
|
|
|
mac := l.GetString("mac")
|
|
|
token := l.GetString("token")
|
|
|
- deMac,phone := decryptUToken(token)
|
|
|
+ deMac, phone := decryptUToken(token)
|
|
|
reToken := ""
|
|
|
if phone != "" && mac == deMac {
|
|
|
reToken = getSToken(token)
|
|
@@ -167,18 +175,23 @@ func (l *Login) GetSubscribeToken() error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
-func (l *Login) ToPcPushView() error {
|
|
|
- l.SetSession("pc_s_m_openid",l.GetString("openid"))
|
|
|
- return l.Render("/pcHelper/pushView.html", &l.T)
|
|
|
+func (l *PcHelper) ToPushView() error {
|
|
|
+ token := l.GetString("token")
|
|
|
+ mac := l.GetString("mac")
|
|
|
+ if token != "" && mac != "" {
|
|
|
+ deMac, phone := decryptSToken(token)
|
|
|
+ if phone != "" && mac == deMac {
|
|
|
+ l.SetSession("pc_s_m_openid", phone)
|
|
|
+ return l.Render("/pchelper/pushView.html")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return l.Redirect("/")
|
|
|
}
|
|
|
|
|
|
-func (l *Login) PcPushView() error {
|
|
|
+func (l *PcHelper) PushView() error {
|
|
|
defer util.Catch()
|
|
|
lasttime, _ := l.GetInt("lasttime")
|
|
|
myopenid, _ := l.GetSession("pc_s_m_openid").(string)
|
|
|
- if myopenid == "" {
|
|
|
- myopenid = "oilZj0ZXGqqOfirMHt8MRT3b4U"
|
|
|
- }
|
|
|
res := map[string]interface{}{}
|
|
|
res["success"] = false
|
|
|
if myopenid != "" && lasttime > 0 {
|
|
@@ -226,34 +239,35 @@ func deleteIdentSession_(session *httpsession.Session) {
|
|
|
func getSToken(token string) string {
|
|
|
v, err := jyutil.AC.Encrypt(token)
|
|
|
if err != nil {
|
|
|
- log.Println("Encrypt error", err)
|
|
|
+ log.Println("SToken Encrypt error", err)
|
|
|
return ""
|
|
|
}
|
|
|
return v
|
|
|
}
|
|
|
|
|
|
-func decryptSToken(token string) (string,string) {
|
|
|
+func decryptSToken(token string) (string, string) {
|
|
|
if token == "" {
|
|
|
return "", ""
|
|
|
}
|
|
|
- log.Println("UToken解析前token", token)
|
|
|
- token, e := url.QueryUnescape(token)
|
|
|
- if e != nil {
|
|
|
- log.Println("UToken QueryUnescape error", e)
|
|
|
- }
|
|
|
+ log.Println("SToken解析前token", token)
|
|
|
v, err := jyutil.AC.Decrypt(token)
|
|
|
if err != nil {
|
|
|
- log.Println("UToken Decrypt error", err)
|
|
|
+ log.Println("SToken Decrypt aes 1 error", err)
|
|
|
return "", ""
|
|
|
}
|
|
|
- log.Println("UToken解析后token", v)
|
|
|
+ v, err = jyutil.AC.Decrypt(string(v))
|
|
|
+ if err != nil {
|
|
|
+ log.Println("SToken Decrypt aes 2 error", err)
|
|
|
+ return "", ""
|
|
|
+ }
|
|
|
+ log.Println("SToken解析后token", v)
|
|
|
vs := strings.Split(v, "_")
|
|
|
if len(vs) != 4 {
|
|
|
- log.Println("UToken error", vs)
|
|
|
+ log.Println("SToken Decrypt length error", vs)
|
|
|
return "", ""
|
|
|
}
|
|
|
if vs[3] != util.GetMd5String(fmt.Sprintf("%s&%s&%s", vs[0], vs[1], vs[2])) {
|
|
|
- log.Println("UToken mx error", vs)
|
|
|
+ log.Println("SToken Decrypt mx error", vs)
|
|
|
return "", ""
|
|
|
}
|
|
|
return vs[0], vs[1]
|
|
@@ -269,7 +283,7 @@ func getUToken(params ...string) string {
|
|
|
mxE := util.GetMd5String(mac + "&" + phone + "&" + date)
|
|
|
v, err := jyutil.AC.Encrypt(mac + "_" + phone + "_" + date + "_" + mxE)
|
|
|
if err != nil {
|
|
|
- log.Println("Encrypt error", err)
|
|
|
+ log.Println("UToken Encrypt error", err)
|
|
|
return ""
|
|
|
}
|
|
|
return v
|
|
@@ -283,23 +297,19 @@ func decryptUToken(token string) (string, string) {
|
|
|
return "", ""
|
|
|
}
|
|
|
log.Println("UToken解析前token", token)
|
|
|
- token, e := url.QueryUnescape(token)
|
|
|
- if e != nil {
|
|
|
- log.Println("UToken QueryUnescape error", e)
|
|
|
- }
|
|
|
v, err := jyutil.AC.Decrypt(token)
|
|
|
if err != nil {
|
|
|
- log.Println("UToken Decrypt error", err)
|
|
|
+ log.Println("UToken Decrypt aes error", err)
|
|
|
return "", ""
|
|
|
}
|
|
|
log.Println("UToken解析后token", v)
|
|
|
vs := strings.Split(v, "_")
|
|
|
if len(vs) != 4 {
|
|
|
- log.Println("UToken error", vs)
|
|
|
+ log.Println("UToken Decrypt length error", vs)
|
|
|
return "", ""
|
|
|
}
|
|
|
if vs[3] != util.GetMd5String(fmt.Sprintf("%s&%s&%s", vs[0], vs[1], vs[2])) {
|
|
|
- log.Println("UToken mx error", vs)
|
|
|
+ log.Println("UToken Decrypt mx error", vs)
|
|
|
return "", ""
|
|
|
}
|
|
|
return vs[0], vs[1]
|