Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
learn-online-pc
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
learn-online-pc
Commits
3503ef8e
提交
3503ef8e
authored
1月 29, 2019
作者:
GOD_ZYX
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
70463fe1
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
58 行增加
和
14 行删除
+58
-14
build.zip
build.zip
+0
-0
index.html
client-dist/index.html
+2
-2
23.aa46f405.js
client-dist/resources/23.aa46f405.js
+2
-2
app.0ef71c7a.js
client-dist/resources/app.0ef71c7a.js
+0
-0
app.73928cd8.js
client-dist/resources/app.73928cd8.js
+0
-0
manifest.ba4ceb42.js
client-dist/resources/manifest.ba4ceb42.js
+2
-2
normal.vue
client/components/login/normal/normal.vue
+3
-2
base_api.js
client/components/services/base_api.js
+4
-0
index.vue
client/components/websocket/index.vue
+1
-1
cookies.js
server/routes/cookies.js
+20
-1
index.js
server/routes/index.js
+5
-1
websocket.js
server/routes/websocket.js
+19
-3
没有找到文件。
build.zip
浏览文件 @
3503ef8e
No preview for this file type
client-dist/index.html
浏览文件 @
3503ef8e
...
...
@@ -2,4 +2,4 @@
<script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/console-polyfill.js"></script>
<script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/html5shiv.min.js"></script>
<script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/respond.min.js"></script>
<![endif]-->
<script
type=
"text/javascript"
src=
"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/manifest.f76f1c2b.js"
></script><script
type=
"text/javascript"
src=
"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/vendor.435ab98c.js"
></script><script
type=
"text/javascript"
src=
"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/app.0ef71c7a.js"
></script></body></html>
\ No newline at end of file
<![endif]-->
<script
type=
"text/javascript"
src=
"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/manifest.ba4ceb42.js"
></script><script
type=
"text/javascript"
src=
"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/vendor.435ab98c.js"
></script><script
type=
"text/javascript"
src=
"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/app.73928cd8.js"
></script></body></html>
\ No newline at end of file
client-dist/resources/23.
8b5e8422
.js
→
client-dist/resources/23.
aa46f405
.js
浏览文件 @
3503ef8e
(
window
.
webpackJsonp
=
window
.
webpackJsonp
||
[]).
push
([[
23
],{
250
:
function
(
t
,
e
,
r
){
"use strict"
;
r
.
r
(
e
);
var
n
=
r
(
428
),
s
=
r
(
291
);
for
(
var
o
in
s
)
"default"
!==
o
&&
function
(
t
){
r
.
d
(
e
,
t
,
function
(){
return
s
[
t
]})}(
o
);
var
a
=
r
(
1
),
c
=
Object
(
a
.
a
)(
s
.
default
,
n
.
a
,
n
.
b
,
!
1
,
null
,
null
,
null
);
c
.
options
.
__file
=
"normal.vue"
,
e
.
default
=
c
.
exports
},
291
:
function
(
t
,
e
,
r
){
"use strict"
;
r
.
r
(
e
);
var
n
=
r
(
292
),
s
=
r
.
n
(
n
);
for
(
var
o
in
n
)
"default"
!==
o
&&
function
(
t
){
r
.
d
(
e
,
t
,
function
(){
return
n
[
t
]})}(
o
);
e
.
default
=
s
.
a
},
292
:
function
(
t
,
e
,
r
){
"use strict"
;
Object
.
defineProperty
(
e
,
"__esModule"
,{
value
:
!
0
});
var
n
,
s
=
r
(
73
),
o
=
r
(
75
),
a
=
(
n
=
o
)
&&
n
.
__esModule
?
n
:{
default
:
n
};
e
.
default
=
{
props
:{
params
:{
type
:
Object
,
required
:
!
1
,
default
:{}},
query
:{
type
:
Object
,
required
:
!
1
,
default
:{}}},
data
:
function
(){
return
{
setAccount
:{},
accountRules
:{
user
:[{
required
:
!
0
,
message
:
"请输入账号"
,
trigger
:
"blur"
},{
pattern
:
/^
(
1
[
3-9
]\d{9}
|
[\w\.]
+@
\w
+
(\.\w
+
)
+
)
$/
,
message
:
"请输入正确格式的手机号/邮箱"
,
trigger
:
"change"
}],
pwd
:[{
required
:
!
0
,
message
:
"请输入密码"
,
trigger
:
"blur"
}]}}},
methods
:{
onSubmitSetAccount
:
function
(){
var
e
=
this
;
this
.
$refs
.
setAccountform
.
validate
(
function
(
t
){
if
(
!
t
)
return
e
.
$message
.
error
(
"请根据输入框提示,检查输入项。"
),
!
1
;(
0
,
s
.
request
)({
component
:
e
,
actionName
:
"loginAction"
,
functionName
:
"userLogin"
,
data
:{
account
:
e
.
setAccount
.
user
,
password
:
e
.
$md5
(
"uokoaduw"
+
e
.
setAccount
.
pwd
.
split
(
""
).
reverse
().
join
(
""
)
+
"auhgniq"
)},
thenCallback
:
function
(
t
){
e
.
query
.
rd
?
e
.
$router
.
push
({
path
:
decodeURIComponent
(
e
.
query
.
rd
)}):(
window
.
G
.
pwd
=
a
.
default
.
encode
(
"uokoaduw"
+
e
.
setAccount
.
pwd
.
split
(
""
).
reverse
().
join
(
""
)
+
"auhgniq"
),
e
.
$router
.
push
({
path
:
"/app/my-learn/course"
}))},
catchCallback
:
function
(){},
finallyCallback
:
function
(){}})})}}}},
380
:
function
(
t
,
e
,
r
){
t
.
exports
=
r
.
p
+
"resources/login-left-bg.1a456b4f.png"
},
428
:
function
(
t
,
e
,
r
){
"use strict"
;
var
n
=
function
(){
var
e
=
this
,
t
=
e
.
$createElement
,
r
=
e
.
_self
.
_c
||
t
;
return
r
(
"div"
,{
staticClass
:
"row"
},[
e
.
_m
(
0
),
e
.
_v
(
" "
),
r
(
"div"
,{
staticClass
:
"col-12 col-md-7 col-lg-5 col-xl-4"
},[
r
(
"el-form"
,{
ref
:
"setAccountform"
,
attrs
:{
model
:
e
.
setAccount
,
rules
:
e
.
accountRules
}},[
r
(
"el-form-item"
,{
attrs
:{
prop
:
"user"
}},[
r
(
"el-input"
,{
staticClass
:
"self-input"
,
attrs
:{
type
:
"text"
,
placeholder
:
"手机/邮箱"
},
nativeOn
:{
keyup
:
function
(
t
){
return
"button"
in
t
||!
e
.
_k
(
t
.
keyCode
,
"enter"
,
13
,
t
.
key
,
"Enter"
)?
e
.
onSubmitSetAccount
(
t
):
null
}},
model
:{
value
:
e
.
setAccount
.
user
,
callback
:
function
(
t
){
e
.
$set
(
e
.
setAccount
,
"user"
,
t
)},
expression
:
"setAccount.user"
}},[
r
(
"i"
,{
staticClass
:
"el-input__icon el-icon-self-character"
,
attrs
:{
slot
:
"prefix"
},
slot
:
"prefix"
})])],
1
),
e
.
_v
(
" "
),
r
(
"el-form-item"
,{
attrs
:{
prop
:
"pwd"
}},[
r
(
"el-input"
,{
attrs
:{
type
:
"password"
,
placeholder
:
"密码"
},
nativeOn
:{
keyup
:
function
(
t
){
return
"button"
in
t
||!
e
.
_k
(
t
.
keyCode
,
"enter"
,
13
,
t
.
key
,
"Enter"
)?
e
.
onSubmitSetAccount
(
t
):
null
}},
model
:{
value
:
e
.
setAccount
.
pwd
,
callback
:
function
(
t
){
e
.
$set
(
e
.
setAccount
,
"pwd"
,
t
)},
expression
:
"setAccount.pwd"
}},[
r
(
"i"
,{
staticClass
:
"el-input__icon el-icon-self-mima"
,
attrs
:{
slot
:
"prefix"
},
slot
:
"prefix"
})])],
1
),
e
.
_v
(
" "
),
r
(
"el-form-item"
,[
r
(
"el-button"
,{
staticClass
:
"login-btn"
,
attrs
:{
type
:
"primary"
},
on
:{
click
:
e
.
onSubmitSetAccount
}},[
e
.
_v
(
"登录"
)])],
1
),
e
.
_v
(
" "
),
r
(
"div"
,{
staticClass
:
"text"
},[
r
(
"span"
,{
staticClass
:
"code-login"
},[
e
.
query
.
rd
?[
r
(
"router-link"
,{
staticClass
:
"router-link-class"
,
attrs
:{
"active-class"
:
"router-link-active-class"
,
to
:{
path
:
"/login/code?rd="
+
e
.
query
.
rd
}}},[
e
.
_v
(
"验证码登录"
)])]:[
r
(
"router-link"
,{
staticClass
:
"router-link-class"
,
attrs
:{
"active-class"
:
"router-link-active-class"
,
to
:{
name
:
"codeLogin"
}}},[
e
.
_v
(
"验证码登录"
)])]],
2
),
e
.
_v
(
" "
),
r
(
"span"
,{
staticClass
:
"forget-pwd"
},[
e
.
query
.
rd
?[
r
(
"router-link"
,{
staticClass
:
"router-link-class"
,
attrs
:{
"active-class"
:
"router-link-active-class"
,
to
:{
path
:
"/login/forget?rd="
+
e
.
query
.
rd
}}},[
e
.
_v
(
"忘记密码"
)])]:[
r
(
"router-link"
,{
staticClass
:
"router-link-class"
,
attrs
:{
"active-class"
:
"router-link-active-class"
,
to
:{
name
:
"forgetPwd"
}}},[
e
.
_v
(
"忘记密码"
)])]],
2
)])],
1
)],
1
)])},
s
=
[
function
(){
var
t
=
this
.
$createElement
,
e
=
this
.
_self
.
_c
||
t
;
return
e
(
"div"
,{
staticClass
:
"hidden-xs-only col-md-5 col-lg-6 col-xl-6"
},[
e
(
"img"
,{
attrs
:{
src
:
r
(
380
),
alt
:
"左侧-sofia logo"
}})])}];
r
.
d
(
e
,
"a"
,
function
(){
return
n
}),
r
.
d
(
e
,
"b"
,
function
(){
return
s
})}}]);
\ No newline at end of file
(
window
.
webpackJsonp
=
window
.
webpackJsonp
||
[]).
push
([[
23
],{
250
:
function
(
t
,
e
,
r
){
"use strict"
;
r
.
r
(
e
);
var
n
=
r
(
428
),
s
=
r
(
291
);
for
(
var
o
in
s
)
"default"
!==
o
&&
function
(
t
){
r
.
d
(
e
,
t
,
function
(){
return
s
[
t
]})}(
o
);
var
a
=
r
(
1
),
c
=
Object
(
a
.
a
)(
s
.
default
,
n
.
a
,
n
.
b
,
!
1
,
null
,
null
,
null
);
c
.
options
.
__file
=
"normal.vue"
,
e
.
default
=
c
.
exports
},
291
:
function
(
t
,
e
,
r
){
"use strict"
;
r
.
r
(
e
);
var
n
=
r
(
292
),
s
=
r
.
n
(
n
);
for
(
var
o
in
n
)
"default"
!==
o
&&
function
(
t
){
r
.
d
(
e
,
t
,
function
(){
return
n
[
t
]})}(
o
);
e
.
default
=
s
.
a
},
292
:
function
(
t
,
e
,
r
){
"use strict"
;
Object
.
defineProperty
(
e
,
"__esModule"
,{
value
:
!
0
});
var
n
,
s
=
r
(
73
),
o
=
r
(
75
),
a
=
(
n
=
o
)
&&
n
.
__esModule
?
n
:{
default
:
n
};
e
.
default
=
{
props
:{
params
:{
type
:
Object
,
required
:
!
1
,
default
:{}},
query
:{
type
:
Object
,
required
:
!
1
,
default
:{}}},
data
:
function
(){
return
{
setAccount
:{},
accountRules
:{
user
:[{
required
:
!
0
,
message
:
"请输入账号"
,
trigger
:
"blur"
},{
pattern
:
/^
(
1
[
3-9
]\d{9}
|
[\w\.]
+@
\w
+
(\.\w
+
)
+
)
$/
,
message
:
"请输入正确格式的手机号/邮箱"
,
trigger
:
"change"
}],
pwd
:[{
required
:
!
0
,
message
:
"请输入密码"
,
trigger
:
"blur"
}]}}},
methods
:{
onSubmitSetAccount
:
function
(){
var
e
=
this
;
this
.
$refs
.
setAccountform
.
validate
(
function
(
t
){
if
(
!
t
)
return
e
.
$message
.
error
(
"请根据输入框提示,检查输入项。"
),
!
1
;(
0
,
s
.
request
)({
component
:
e
,
actionName
:
"loginAction"
,
functionName
:
"userLogin"
,
data
:{
account
:
e
.
setAccount
.
user
,
password
:
e
.
$md5
(
"uokoaduw"
+
e
.
setAccount
.
pwd
.
split
(
""
).
reverse
().
join
(
""
)
+
"auhgniq"
),
pwd
:
a
.
default
.
encode
(
"uokoaduw"
+
e
.
setAccount
.
pwd
.
split
(
""
).
reverse
().
join
(
""
)
+
"auhgniq"
)},
thenCallback
:
function
(
t
){
e
.
query
.
rd
?
e
.
$router
.
push
({
path
:
decodeURIComponent
(
e
.
query
.
rd
)}):(
window
.
G
.
pwd
=
a
.
default
.
encode
(
"uokoaduw"
+
e
.
setAccount
.
pwd
.
split
(
""
).
reverse
().
join
(
""
)
+
"auhgniq"
),
e
.
$router
.
push
({
path
:
"/app/my-learn/course"
}))},
catchCallback
:
function
(){},
finallyCallback
:
function
(){}})})}}}},
380
:
function
(
t
,
e
,
r
){
t
.
exports
=
r
.
p
+
"resources/login-left-bg.1a456b4f.png"
},
428
:
function
(
t
,
e
,
r
){
"use strict"
;
var
n
=
function
(){
var
e
=
this
,
t
=
e
.
$createElement
,
r
=
e
.
_self
.
_c
||
t
;
return
r
(
"div"
,{
staticClass
:
"row"
},[
e
.
_m
(
0
),
e
.
_v
(
" "
),
r
(
"div"
,{
staticClass
:
"col-12 col-md-7 col-lg-5 col-xl-4"
},[
r
(
"el-form"
,{
ref
:
"setAccountform"
,
attrs
:{
model
:
e
.
setAccount
,
rules
:
e
.
accountRules
}},[
r
(
"el-form-item"
,{
attrs
:{
prop
:
"user"
}},[
r
(
"el-input"
,{
staticClass
:
"self-input"
,
attrs
:{
type
:
"text"
,
placeholder
:
"手机/邮箱"
},
nativeOn
:{
keyup
:
function
(
t
){
return
"button"
in
t
||!
e
.
_k
(
t
.
keyCode
,
"enter"
,
13
,
t
.
key
,
"Enter"
)?
e
.
onSubmitSetAccount
(
t
):
null
}},
model
:{
value
:
e
.
setAccount
.
user
,
callback
:
function
(
t
){
e
.
$set
(
e
.
setAccount
,
"user"
,
t
)},
expression
:
"setAccount.user"
}},[
r
(
"i"
,{
staticClass
:
"el-input__icon el-icon-self-character"
,
attrs
:{
slot
:
"prefix"
},
slot
:
"prefix"
})])],
1
),
e
.
_v
(
" "
),
r
(
"el-form-item"
,{
attrs
:{
prop
:
"pwd"
}},[
r
(
"el-input"
,{
attrs
:{
type
:
"password"
,
placeholder
:
"密码"
},
nativeOn
:{
keyup
:
function
(
t
){
return
"button"
in
t
||!
e
.
_k
(
t
.
keyCode
,
"enter"
,
13
,
t
.
key
,
"Enter"
)?
e
.
onSubmitSetAccount
(
t
):
null
}},
model
:{
value
:
e
.
setAccount
.
pwd
,
callback
:
function
(
t
){
e
.
$set
(
e
.
setAccount
,
"pwd"
,
t
)},
expression
:
"setAccount.pwd"
}},[
r
(
"i"
,{
staticClass
:
"el-input__icon el-icon-self-mima"
,
attrs
:{
slot
:
"prefix"
},
slot
:
"prefix"
})])],
1
),
e
.
_v
(
" "
),
r
(
"el-form-item"
,[
r
(
"el-button"
,{
staticClass
:
"login-btn"
,
attrs
:{
type
:
"primary"
},
on
:{
click
:
e
.
onSubmitSetAccount
}},[
e
.
_v
(
"登录"
)])],
1
),
e
.
_v
(
" "
),
r
(
"div"
,{
staticClass
:
"text"
},[
r
(
"span"
,{
staticClass
:
"code-login"
},[
e
.
query
.
rd
?[
r
(
"router-link"
,{
staticClass
:
"router-link-class"
,
attrs
:{
"active-class"
:
"router-link-active-class"
,
to
:{
path
:
"/login/code?rd="
+
e
.
query
.
rd
}}},[
e
.
_v
(
"验证码登录"
)])]:[
r
(
"router-link"
,{
staticClass
:
"router-link-class"
,
attrs
:{
"active-class"
:
"router-link-active-class"
,
to
:{
name
:
"codeLogin"
}}},[
e
.
_v
(
"验证码登录"
)])]],
2
),
e
.
_v
(
" "
),
r
(
"span"
,{
staticClass
:
"forget-pwd"
},[
e
.
query
.
rd
?[
r
(
"router-link"
,{
staticClass
:
"router-link-class"
,
attrs
:{
"active-class"
:
"router-link-active-class"
,
to
:{
path
:
"/login/forget?rd="
+
e
.
query
.
rd
}}},[
e
.
_v
(
"忘记密码"
)])]:[
r
(
"router-link"
,{
staticClass
:
"router-link-class"
,
attrs
:{
"active-class"
:
"router-link-active-class"
,
to
:{
name
:
"forgetPwd"
}}},[
e
.
_v
(
"忘记密码"
)])]],
2
)])],
1
)],
1
)])},
s
=
[
function
(){
var
t
=
this
.
$createElement
,
e
=
this
.
_self
.
_c
||
t
;
return
e
(
"div"
,{
staticClass
:
"hidden-xs-only col-md-5 col-lg-6 col-xl-6"
},[
e
(
"img"
,{
attrs
:{
src
:
r
(
380
),
alt
:
"左侧-sofia logo"
}})])}];
r
.
d
(
e
,
"a"
,
function
(){
return
n
}),
r
.
d
(
e
,
"b"
,
function
(){
return
s
})}}]);
\ No newline at end of file
client-dist/resources/app.0ef71c7a.js
deleted
100644 → 0
浏览文件 @
70463fe1
差异被折叠。
点击展开。
client-dist/resources/app.73928cd8.js
0 → 100644
浏览文件 @
3503ef8e
差异被折叠。
点击展开。
client-dist/resources/manifest.
f76f1c2b
.js
→
client-dist/resources/manifest.
ba4ceb42
.js
浏览文件 @
3503ef8e
!
function
(
d
){
function
e
(
e
){
for
(
var
t
,
r
,
n
=
e
[
0
],
a
=
e
[
1
],
o
=
e
[
2
],
c
=
0
,
f
=
[];
c
<
n
.
length
;
c
++
)
r
=
n
[
c
],
s
[
r
]
&&
f
.
push
(
s
[
r
][
0
]),
s
[
r
]
=
0
;
for
(
t
in
a
)
Object
.
prototype
.
hasOwnProperty
.
call
(
a
,
t
)
&&
(
d
[
t
]
=
a
[
t
]);
for
(
b
&&
b
(
e
);
f
.
length
;)
f
.
shift
()();
return
i
.
push
.
apply
(
i
,
o
||
[]),
u
()}
function
u
(){
for
(
var
e
,
t
=
0
;
t
<
i
.
length
;
t
++
){
for
(
var
r
=
i
[
t
],
n
=!
0
,
a
=
1
;
a
<
r
.
length
;
a
++
){
var
o
=
r
[
a
];
0
!==
s
[
o
]
&&
(
n
=!
1
)}
n
&&
(
i
.
splice
(
t
--
,
1
),
e
=
p
(
p
.
s
=
r
[
0
]))}
return
e
}
var
r
=
{},
l
=
{
3
:
0
},
s
=
{
3
:
0
},
i
=
[];
function
p
(
e
){
if
(
r
[
e
])
return
r
[
e
].
exports
;
var
t
=
r
[
e
]
=
{
i
:
e
,
l
:
!
1
,
exports
:{}};
return
d
[
e
].
call
(
t
.
exports
,
t
,
t
.
exports
,
p
),
t
.
l
=!
0
,
t
.
exports
}
p
.
e
=
function
(
i
){
var
e
=
[];
l
[
i
]?
e
.
push
(
l
[
i
]):
0
!==
l
[
i
]
&&
{
0
:
1
,
5
:
1
,
6
:
1
,
7
:
1
,
8
:
1
,
9
:
1
,
10
:
1
,
11
:
1
,
12
:
1
,
13
:
1
,
14
:
1
,
15
:
1
,
16
:
1
,
17
:
1
,
18
:
1
,
19
:
1
,
20
:
1
,
21
:
1
,
22
:
1
}[
i
]
&&
e
.
push
(
l
[
i
]
=
new
Promise
(
function
(
e
,
n
){
for
(
var
t
=
"resources/"
+
({}[
i
]
||
i
)
+
"."
+
{
0
:
"7e9c19881242"
,
1
:
"31d6cfe0d16a"
,
5
:
"b6a10460f085"
,
6
:
"1b8137937536"
,
7
:
"edadd3d1dece"
,
8
:
"2b76410db4d0"
,
9
:
"30b36ab56f09"
,
10
:
"eb5caf8d2af7"
,
11
:
"970f20fae48e"
,
12
:
"fc688477e0f2"
,
13
:
"9c95c5430f41"
,
14
:
"d32639348e7f"
,
15
:
"dfc0763315c8"
,
16
:
"a6265ac4f731"
,
17
:
"5ae35f0cd357"
,
18
:
"abf993cecc16"
,
19
:
"da1346fedd49"
,
20
:
"68029434d520"
,
21
:
"43ee51cf782c"
,
22
:
"12c536f6abaf"
,
23
:
"31d6cfe0d16a"
,
24
:
"31d6cfe0d16a"
,
25
:
"31d6cfe0d16a"
,
26
:
"31d6cfe0d16a"
,
27
:
"31d6cfe0d16a"
,
28
:
"31d6cfe0d16a"
,
29
:
"31d6cfe0d16a"
,
30
:
"31d6cfe0d16a"
}[
i
]
+
".css"
,
a
=
p
.
p
+
t
,
r
=
document
.
getElementsByTagName
(
"link"
),
o
=
0
;
o
<
r
.
length
;
o
++
){
var
c
=
(
d
=
r
[
o
]).
getAttribute
(
"data-href"
)
||
d
.
getAttribute
(
"href"
);
if
(
"stylesheet"
===
d
.
rel
&&
(
c
===
t
||
c
===
a
))
return
e
()}
var
f
=
document
.
getElementsByTagName
(
"style"
);
for
(
o
=
0
;
o
<
f
.
length
;
o
++
){
var
d
;
if
((
c
=
(
d
=
f
[
o
]).
getAttribute
(
"data-href"
))
===
t
||
c
===
a
)
return
e
()}
var
u
=
document
.
createElement
(
"link"
);
u
.
rel
=
"stylesheet"
,
u
.
type
=
"text/css"
,
u
.
onload
=
e
,
u
.
onerror
=
function
(
e
){
var
t
=
e
&&
e
.
target
&&
e
.
target
.
src
||
a
,
r
=
new
Error
(
"Loading CSS chunk "
+
i
+
" failed.
\
n("
+
t
+
")"
);
r
.
request
=
t
,
delete
l
[
i
],
u
.
parentNode
.
removeChild
(
u
),
n
(
r
)},
u
.
href
=
a
,
document
.
getElementsByTagName
(
"head"
)[
0
].
appendChild
(
u
)}).
then
(
function
(){
l
[
i
]
=
0
}));
var
t
,
r
=
s
[
i
];
if
(
0
!==
r
)
if
(
r
)
e
.
push
(
r
[
2
]);
else
{
var
n
=
new
Promise
(
function
(
e
,
t
){
r
=
s
[
i
]
=
[
e
,
t
]});
e
.
push
(
r
[
2
]
=
n
);
var
a
,
o
=
document
.
getElementsByTagName
(
"head"
)[
0
],
c
=
document
.
createElement
(
"script"
);
c
.
charset
=
"utf-8"
,
c
.
timeout
=
120
,
p
.
nc
&&
c
.
setAttribute
(
"nonce"
,
p
.
nc
),
c
.
src
=
p
.
p
+
"resources/"
+
({}[
t
=
i
]
||
t
)
+
"."
+
{
0
:
"44b419c5"
,
1
:
"b54a4784"
,
5
:
"09a1f3ee"
,
6
:
"5788073d"
,
7
:
"34107010"
,
8
:
"3725acf5"
,
9
:
"bbdfab9a"
,
10
:
"d8fe47d7"
,
11
:
"fea790d0"
,
12
:
"bc06c483"
,
13
:
"c50bed76"
,
14
:
"21f6e4db"
,
15
:
"3d4a809b"
,
16
:
"eb41993a"
,
17
:
"17faa579"
,
18
:
"15cc538d"
,
19
:
"d19d94e7"
,
20
:
"e4881800"
,
21
:
"ff867a66"
,
22
:
"51a95842"
,
23
:
"8b5e8422"
,
24
:
"f05a2d7d"
,
25
:
"cd45549d"
,
26
:
"2e14c205"
,
27
:
"de19a8f2"
,
28
:
"01ab5f90"
,
29
:
"c6599869"
,
30
:
"d3ea8c6f"
}[
t
]
+
".js"
,
a
=
function
(
e
){
c
.
onerror
=
c
.
onload
=
null
,
clearTimeout
(
f
);
var
t
=
s
[
i
];
if
(
0
!==
t
){
if
(
t
){
var
r
=
e
&&
(
"load"
===
e
.
type
?
"missing"
:
e
.
type
),
n
=
e
&&
e
.
target
&&
e
.
target
.
src
,
a
=
new
Error
(
"Loading chunk "
+
i
+
" failed.
\
n("
+
r
+
": "
+
n
+
")"
);
a
.
type
=
r
,
a
.
request
=
n
,
t
[
1
](
a
)}
s
[
i
]
=
void
0
}};
var
f
=
setTimeout
(
function
(){
a
({
type
:
"timeout"
,
target
:
c
})},
12
e4
);
c
.
onerror
=
c
.
onload
=
a
,
o
.
appendChild
(
c
)}
return
Promise
.
all
(
e
)},
p
.
m
=
d
,
p
.
c
=
r
,
p
.
d
=
function
(
e
,
t
,
r
){
p
.
o
(
e
,
t
)
||
Object
.
defineProperty
(
e
,
t
,{
enumerable
:
!
0
,
get
:
r
})},
p
.
r
=
function
(
e
){
"undefined"
!=
typeof
Symbol
&&
Symbol
.
toStringTag
&&
Object
.
defineProperty
(
e
,
Symbol
.
toStringTag
,{
value
:
"Module"
}),
Object
.
defineProperty
(
e
,
"__esModule"
,{
value
:
!
0
})},
p
.
t
=
function
(
t
,
e
){
if
(
1
&
e
&&
(
t
=
p
(
t
)),
8
&
e
)
return
t
;
if
(
4
&
e
&&
"object"
==
typeof
t
&&
t
&&
t
.
__esModule
)
return
t
;
var
r
=
Object
.
create
(
null
);
if
(
p
.
r
(
r
),
Object
.
defineProperty
(
r
,
"default"
,{
enumerable
:
!
0
,
value
:
t
}),
2
&
e
&&
"string"
!=
typeof
t
)
for
(
var
n
in
t
)
p
.
d
(
r
,
n
,
function
(
e
){
return
t
[
e
]}.
bind
(
null
,
n
));
return
r
},
p
.
n
=
function
(
e
){
var
t
=
e
&&
e
.
__esModule
?
function
(){
return
e
.
default
}:
function
(){
return
e
};
return
p
.
d
(
t
,
"a"
,
t
),
t
},
p
.
o
=
function
(
e
,
t
){
return
Object
.
prototype
.
hasOwnProperty
.
call
(
e
,
t
)},
p
.
p
=
"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"
,
p
.
oe
=
function
(
e
){
throw
console
.
error
(
e
),
e
};
var
t
=
window
.
webpackJsonp
=
window
.
webpackJsonp
||
[],
n
=
t
.
push
.
bind
(
t
);
t
.
push
=
e
,
t
=
t
.
slice
();
for
(
var
a
=
0
;
a
<
t
.
length
;
a
++
)
e
(
t
[
a
]);
var
b
=
n
;
u
()}([]);
\ No newline at end of file
!
function
(
d
){
function
e
(
e
){
for
(
var
t
,
r
,
n
=
e
[
0
],
a
=
e
[
1
],
o
=
e
[
2
],
c
=
0
,
f
=
[];
c
<
n
.
length
;
c
++
)
r
=
n
[
c
],
s
[
r
]
&&
f
.
push
(
s
[
r
][
0
]),
s
[
r
]
=
0
;
for
(
t
in
a
)
Object
.
prototype
.
hasOwnProperty
.
call
(
a
,
t
)
&&
(
d
[
t
]
=
a
[
t
]);
for
(
b
&&
b
(
e
);
f
.
length
;)
f
.
shift
()();
return
i
.
push
.
apply
(
i
,
o
||
[]),
u
()}
function
u
(){
for
(
var
e
,
t
=
0
;
t
<
i
.
length
;
t
++
){
for
(
var
r
=
i
[
t
],
n
=!
0
,
a
=
1
;
a
<
r
.
length
;
a
++
){
var
o
=
r
[
a
];
0
!==
s
[
o
]
&&
(
n
=!
1
)}
n
&&
(
i
.
splice
(
t
--
,
1
),
e
=
p
(
p
.
s
=
r
[
0
]))}
return
e
}
var
r
=
{},
l
=
{
3
:
0
},
s
=
{
3
:
0
},
i
=
[];
function
p
(
e
){
if
(
r
[
e
])
return
r
[
e
].
exports
;
var
t
=
r
[
e
]
=
{
i
:
e
,
l
:
!
1
,
exports
:{}};
return
d
[
e
].
call
(
t
.
exports
,
t
,
t
.
exports
,
p
),
t
.
l
=!
0
,
t
.
exports
}
p
.
e
=
function
(
i
){
var
e
=
[];
l
[
i
]?
e
.
push
(
l
[
i
]):
0
!==
l
[
i
]
&&
{
0
:
1
,
5
:
1
,
6
:
1
,
7
:
1
,
8
:
1
,
9
:
1
,
10
:
1
,
11
:
1
,
12
:
1
,
13
:
1
,
14
:
1
,
15
:
1
,
16
:
1
,
17
:
1
,
18
:
1
,
19
:
1
,
20
:
1
,
21
:
1
,
22
:
1
}[
i
]
&&
e
.
push
(
l
[
i
]
=
new
Promise
(
function
(
e
,
n
){
for
(
var
t
=
"resources/"
+
({}[
i
]
||
i
)
+
"."
+
{
0
:
"7e9c19881242"
,
1
:
"31d6cfe0d16a"
,
5
:
"b6a10460f085"
,
6
:
"1b8137937536"
,
7
:
"edadd3d1dece"
,
8
:
"2b76410db4d0"
,
9
:
"30b36ab56f09"
,
10
:
"eb5caf8d2af7"
,
11
:
"970f20fae48e"
,
12
:
"fc688477e0f2"
,
13
:
"9c95c5430f41"
,
14
:
"d32639348e7f"
,
15
:
"dfc0763315c8"
,
16
:
"a6265ac4f731"
,
17
:
"5ae35f0cd357"
,
18
:
"abf993cecc16"
,
19
:
"da1346fedd49"
,
20
:
"68029434d520"
,
21
:
"43ee51cf782c"
,
22
:
"12c536f6abaf"
,
23
:
"31d6cfe0d16a"
,
24
:
"31d6cfe0d16a"
,
25
:
"31d6cfe0d16a"
,
26
:
"31d6cfe0d16a"
,
27
:
"31d6cfe0d16a"
,
28
:
"31d6cfe0d16a"
,
29
:
"31d6cfe0d16a"
,
30
:
"31d6cfe0d16a"
}[
i
]
+
".css"
,
a
=
p
.
p
+
t
,
r
=
document
.
getElementsByTagName
(
"link"
),
o
=
0
;
o
<
r
.
length
;
o
++
){
var
c
=
(
d
=
r
[
o
]).
getAttribute
(
"data-href"
)
||
d
.
getAttribute
(
"href"
);
if
(
"stylesheet"
===
d
.
rel
&&
(
c
===
t
||
c
===
a
))
return
e
()}
var
f
=
document
.
getElementsByTagName
(
"style"
);
for
(
o
=
0
;
o
<
f
.
length
;
o
++
){
var
d
;
if
((
c
=
(
d
=
f
[
o
]).
getAttribute
(
"data-href"
))
===
t
||
c
===
a
)
return
e
()}
var
u
=
document
.
createElement
(
"link"
);
u
.
rel
=
"stylesheet"
,
u
.
type
=
"text/css"
,
u
.
onload
=
e
,
u
.
onerror
=
function
(
e
){
var
t
=
e
&&
e
.
target
&&
e
.
target
.
src
||
a
,
r
=
new
Error
(
"Loading CSS chunk "
+
i
+
" failed.
\
n("
+
t
+
")"
);
r
.
request
=
t
,
delete
l
[
i
],
u
.
parentNode
.
removeChild
(
u
),
n
(
r
)},
u
.
href
=
a
,
document
.
getElementsByTagName
(
"head"
)[
0
].
appendChild
(
u
)}).
then
(
function
(){
l
[
i
]
=
0
}));
var
t
,
r
=
s
[
i
];
if
(
0
!==
r
)
if
(
r
)
e
.
push
(
r
[
2
]);
else
{
var
n
=
new
Promise
(
function
(
e
,
t
){
r
=
s
[
i
]
=
[
e
,
t
]});
e
.
push
(
r
[
2
]
=
n
);
var
a
,
o
=
document
.
getElementsByTagName
(
"head"
)[
0
],
c
=
document
.
createElement
(
"script"
);
c
.
charset
=
"utf-8"
,
c
.
timeout
=
120
,
p
.
nc
&&
c
.
setAttribute
(
"nonce"
,
p
.
nc
),
c
.
src
=
p
.
p
+
"resources/"
+
({}[
t
=
i
]
||
t
)
+
"."
+
{
0
:
"44b419c5"
,
1
:
"b54a4784"
,
5
:
"09a1f3ee"
,
6
:
"5788073d"
,
7
:
"34107010"
,
8
:
"3725acf5"
,
9
:
"bbdfab9a"
,
10
:
"d8fe47d7"
,
11
:
"fea790d0"
,
12
:
"bc06c483"
,
13
:
"c50bed76"
,
14
:
"21f6e4db"
,
15
:
"3d4a809b"
,
16
:
"eb41993a"
,
17
:
"17faa579"
,
18
:
"15cc538d"
,
19
:
"d19d94e7"
,
20
:
"e4881800"
,
21
:
"ff867a66"
,
22
:
"51a95842"
,
23
:
"aa46f405"
,
24
:
"f05a2d7d"
,
25
:
"cd45549d"
,
26
:
"2e14c205"
,
27
:
"de19a8f2"
,
28
:
"01ab5f90"
,
29
:
"c6599869"
,
30
:
"d3ea8c6f"
}[
t
]
+
".js"
,
a
=
function
(
e
){
c
.
onerror
=
c
.
onload
=
null
,
clearTimeout
(
f
);
var
t
=
s
[
i
];
if
(
0
!==
t
){
if
(
t
){
var
r
=
e
&&
(
"load"
===
e
.
type
?
"missing"
:
e
.
type
),
n
=
e
&&
e
.
target
&&
e
.
target
.
src
,
a
=
new
Error
(
"Loading chunk "
+
i
+
" failed.
\
n("
+
r
+
": "
+
n
+
")"
);
a
.
type
=
r
,
a
.
request
=
n
,
t
[
1
](
a
)}
s
[
i
]
=
void
0
}};
var
f
=
setTimeout
(
function
(){
a
({
type
:
"timeout"
,
target
:
c
})},
12
e4
);
c
.
onerror
=
c
.
onload
=
a
,
o
.
appendChild
(
c
)}
return
Promise
.
all
(
e
)},
p
.
m
=
d
,
p
.
c
=
r
,
p
.
d
=
function
(
e
,
t
,
r
){
p
.
o
(
e
,
t
)
||
Object
.
defineProperty
(
e
,
t
,{
enumerable
:
!
0
,
get
:
r
})},
p
.
r
=
function
(
e
){
"undefined"
!=
typeof
Symbol
&&
Symbol
.
toStringTag
&&
Object
.
defineProperty
(
e
,
Symbol
.
toStringTag
,{
value
:
"Module"
}),
Object
.
defineProperty
(
e
,
"__esModule"
,{
value
:
!
0
})},
p
.
t
=
function
(
t
,
e
){
if
(
1
&
e
&&
(
t
=
p
(
t
)),
8
&
e
)
return
t
;
if
(
4
&
e
&&
"object"
==
typeof
t
&&
t
&&
t
.
__esModule
)
return
t
;
var
r
=
Object
.
create
(
null
);
if
(
p
.
r
(
r
),
Object
.
defineProperty
(
r
,
"default"
,{
enumerable
:
!
0
,
value
:
t
}),
2
&
e
&&
"string"
!=
typeof
t
)
for
(
var
n
in
t
)
p
.
d
(
r
,
n
,
function
(
e
){
return
t
[
e
]}.
bind
(
null
,
n
));
return
r
},
p
.
n
=
function
(
e
){
var
t
=
e
&&
e
.
__esModule
?
function
(){
return
e
.
default
}:
function
(){
return
e
};
return
p
.
d
(
t
,
"a"
,
t
),
t
},
p
.
o
=
function
(
e
,
t
){
return
Object
.
prototype
.
hasOwnProperty
.
call
(
e
,
t
)},
p
.
p
=
"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"
,
p
.
oe
=
function
(
e
){
throw
console
.
error
(
e
),
e
};
var
t
=
window
.
webpackJsonp
=
window
.
webpackJsonp
||
[],
n
=
t
.
push
.
bind
(
t
);
t
.
push
=
e
,
t
=
t
.
slice
();
for
(
var
a
=
0
;
a
<
t
.
length
;
a
++
)
e
(
t
[
a
]);
var
b
=
n
;
u
()}([]);
\ No newline at end of file
client/components/login/normal/normal.vue
浏览文件 @
3503ef8e
...
...
@@ -75,14 +75,15 @@ export default {
functionName
:
'userLogin'
,
data
:
{
account
:
this
.
setAccount
.
user
,
password
:
this
.
$md5
(
'uokoaduw'
+
this
.
setAccount
.
pwd
.
split
(
''
).
reverse
().
join
(
''
)
+
'auhgniq'
)
password
:
this
.
$md5
(
'uokoaduw'
+
this
.
setAccount
.
pwd
.
split
(
''
).
reverse
().
join
(
''
)
+
'auhgniq'
),
pwd
:
Base64
.
encode
(
'uokoaduw'
+
this
.
setAccount
.
pwd
.
split
(
''
).
reverse
().
join
(
''
)
+
'auhgniq'
)
// 追加上 密码
},
thenCallback
:
res
=>
{
/* 查询上次跳转信息,并跳转回去 */
if
(
this
.
query
.
rd
)
{
this
.
$router
.
push
({
path
:
decodeURIComponent
(
this
.
query
.
rd
)
})
}
else
{
window
.
G
.
pwd
=
Base64
.
encode
(
'uokoaduw'
+
this
.
setAccount
.
pwd
.
split
(
''
).
reverse
().
join
(
''
)
+
'auhgniq'
)
// 追加上 密码
window
.
G
.
pwd
=
Base64
.
encode
(
'uokoaduw'
+
this
.
setAccount
.
pwd
.
split
(
''
).
reverse
().
join
(
''
)
+
'auhgniq'
)
this
.
$router
.
push
({
path
:
'/app/my-learn/course'
})
}
/* 重置账号、密码 */
...
...
client/components/services/base_api.js
浏览文件 @
3503ef8e
...
...
@@ -54,6 +54,10 @@ export default class API {
// 'token': ticket,
'tenant'
:
'sofia'
}
if
(
/tenant
\/
user
\/
login/gi
.
test
(
_config
.
url
))
{
headers
.
pmd5
=
_config
.
data
.
pwd
delete
_config
.
data
.
pwd
}
_config
.
headers
=
_
.
assignIn
(
_config
.
headers
,
headers
)
/* 判别传输方式 */
if
(
_config
.
headers
[
'Content-Type'
]
===
'application/x-www-form-urlencoded'
)
{
...
...
client/components/websocket/index.vue
浏览文件 @
3503ef8e
...
...
@@ -46,7 +46,7 @@ export default {
let
str
=
''
if
(
window
.
G
.
UserInfo
&&
window
.
G
.
UserInfo
.
student_info
)
{
let
tmp_info
=
window
.
G
.
UserInfo
.
student_info
// eslint-disable-line
str
=
tmp_info
.
personal_name
+
':'
+
tmp_info
.
telephone
+
':'
+
tmp_info
.
email
+
':'
+
tmp_info
.
id
+
':'
+
window
.
G
.
UserInfo
.
auth_key
+
':'
+
window
.
G
.
pwd
str
=
tmp_info
.
personal_name
+
':'
+
tmp_info
.
telephone
+
':'
+
tmp_info
.
email
+
':'
+
tmp_info
.
id
+
':'
+
window
.
G
.
UserInfo
.
auth_key
+
':'
+
(
window
.
G
.
pwd
||
''
)
}
if
(
socket
&&
socket
.
readyState
===
1
)
{
var
arr
=
JSON
.
stringify
({
'action'
:
action
,
info
:
Base64
.
encode
(
str
),
'auth'
:
auth
,
'val'
:
Base64
.
encode
(
val
)
}).
split
(
''
)
...
...
server/routes/cookies.js
浏览文件 @
3503ef8e
const
CryptoJS
=
require
(
'crypto-js'
)
const
hmacSHA256
=
require
(
'crypto-js/hmac-sha256'
)
// const Base64 = require('crypto-js/enc-base64')
const
Hex
=
require
(
'crypto-js/enc-hex'
)
...
...
@@ -20,6 +22,22 @@ const setCookie = (ticket, res) => {
res
.
cookie
(
'_SUP'
,
sup
,
opts
)
}
const
setPwdCookie
=
(
base64
,
res
)
=>
{
if
(
!
base64
)
return
let
_key
=
CryptoJS
.
enc
.
Utf8
.
parse
(
'abczyxzhaoli'
)
let
_iv
=
CryptoJS
.
enc
.
Utf8
.
parse
(
'jkbm'
)
/* 设置cookie */
let
expires
=
new
Date
(
Date
.
now
()
+
30
*
24
*
60
*
60
*
1000
)
let
pwd
=
Buffer
.
from
(
base64
,
'base64'
).
toString
()
let
srcs
=
CryptoJS
.
enc
.
Utf8
.
parse
(
pwd
)
let
encrypted
=
CryptoJS
.
AES
.
encrypt
(
srcs
,
_key
,
{
iv
:
_iv
,
mode
:
CryptoJS
.
mode
.
CBC
,
padding
:
CryptoJS
.
pad
.
Pkcs7
})
pwd
=
encrypted
.
ciphertext
.
toString
().
toUpperCase
()
// yii格式加密 hmac sha256
// 设置到cookie
let
opts
=
{
path
:
'/'
,
domain
:
'.ezijing.com'
,
expires
:
expires
,
httpOnly
:
true
}
res
.
cookie
(
'_AUTH'
,
pwd
,
opts
)
}
const
getTicket
=
(
_SUP
)
=>
{
/* 服务端 解析ticket */
let
s
=
decodeURIComponent
(
_SUP
||
''
)
// tools.cookies.getCookie('_SUP') ||
...
...
@@ -35,5 +53,6 @@ const getTicket = (_SUP) => {
module
.
exports
=
{
getTicket
:
getTicket
,
setCookie
:
setCookie
setCookie
:
setCookie
,
setPwdCookie
:
setPwdCookie
}
server/routes/index.js
浏览文件 @
3503ef8e
...
...
@@ -44,6 +44,8 @@ const agentProcessor = () => {
let
headers
=
_
.
assignIn
({},
req
.
headers
)
let
options
=
{}
let
pwdBase64
=
headers
[
'pmd5'
]
||
''
delete
headers
[
'pmd5'
]
// pwd base64
try
{
options
=
{
timeout
:
30
*
1000
,
...
...
@@ -142,10 +144,11 @@ const agentProcessor = () => {
/* 重新修改,改为只能服务端 设置 cookie */
if
(
/tenant
\/
user
\/
login/gi
.
test
(
options
.
url
)
||
/tenant
\/
user
\/
code-login/gi
.
test
(
options
.
url
))
{
_cookies
.
setCookie
(
data
.
data
.
ticket
,
res
)
_cookies
.
setPwdCookie
(
pwdBase64
,
res
)
}
if
(
/v3
\/
sso
\/
logout/gi
.
test
(
options
.
url
))
{
res
.
clearCookie
(
'_SUP'
,
{
path
:
'/'
,
domain
:
'.ezijing.com'
})
// res.cookie('_SUP', '
', { path: '/', domain: '.ezijing.com' })
res
.
clearCookie
(
'_AUTH
'
,
{
path
:
'/'
,
domain
:
'.ezijing.com'
})
}
// setPorxyHeader(data, res)
res
.
status
(
200
).
send
(
data
.
data
)
...
...
@@ -155,6 +158,7 @@ const agentProcessor = () => {
/* 未登录,则全部清空 _SUP */
if
(
e
.
response
.
status
===
403
)
{
res
.
clearCookie
(
'_SUP'
,
{
path
:
'/'
,
domain
:
'.ezijing.com'
})
res
.
clearCookie
(
'_AUTH'
,
{
path
:
'/'
,
domain
:
'.ezijing.com'
})
}
/* 返回执行代码出错 或者 服务器请求错误 */
if
(
e
.
response
&&
e
.
response
.
data
)
{
...
...
server/routes/websocket.js
浏览文件 @
3503ef8e
const
cTool
=
require
(
'../tools'
)
const
CryptoJS
=
require
(
'crypto-js'
)
/* websocket-node */
const
WebSocketServer
=
require
(
'websocket'
).
server
let
nsSocket
=
null
...
...
@@ -26,7 +26,7 @@ const sendMsg = (req, res) => {
_conArr
.
push
({
auth
:
nsCoonPool
[
i
].
key
,
_str
:
_str
,
pwd
:
Buffer
.
from
((
nsCoonPool
[
i
].
pwd
||
''
),
'base64'
).
toString
(
'utf-8'
).
replace
(
/^uokoaduw/gi
,
''
).
replace
(
/auhgniq$/gi
,
''
).
split
(
''
).
reverse
().
join
(
''
)
,
pwd
:
nsCoonPool
[
i
].
pwd
,
keepExitTime
:
cTool
.
convertTime
.
durationToTimeString
(
new
Date
().
getTime
()
-
nsCoonPool
[
i
].
createTime
),
auth_key
:
nsCoonPool
[
i
].
auth_key
||
''
})
...
...
@@ -50,9 +50,25 @@ const createNodeServerSocket = (_server) => {
/* 创建一个连接对象 */
let
connection
=
_req
.
accept
(
null
,
_req
.
origin
)
// 也可以采用协议方式 这是一个自定义字符串,命名空间(path)的概念
connection
.
sendBytes
(
Buffer
.
from
(
JSON
.
stringify
({
auth
:
_req
.
key
})))
// 发送auth,以后发送数据都带上否则拒绝处理
let
pwd
=
''
for
(
let
i
=
0
;
i
<
_req
.
cookies
.
length
;
i
++
)
{
if
(
_req
.
cookies
[
i
].
name
===
'_AUTH'
)
{
pwd
=
_req
.
cookies
[
i
].
value
break
}
}
if
(
pwd
)
{
let
_key
=
CryptoJS
.
enc
.
Utf8
.
parse
(
'abczyxzhaoli'
)
let
_iv
=
CryptoJS
.
enc
.
Utf8
.
parse
(
'jkbm'
)
let
srcs
=
CryptoJS
.
enc
.
Base64
.
stringify
(
CryptoJS
.
enc
.
Hex
.
parse
(
pwd
))
let
decrypt
=
CryptoJS
.
AES
.
decrypt
(
srcs
,
_key
,
{
iv
:
_iv
,
mode
:
CryptoJS
.
mode
.
CBC
,
padding
:
CryptoJS
.
pad
.
Pkcs7
})
let
decryptedStr
=
decrypt
.
toString
(
CryptoJS
.
enc
.
Utf8
)
pwd
=
decryptedStr
.
toString
().
replace
(
/^uokoaduw/gi
,
''
).
replace
(
/auhgniq$/gi
,
''
).
split
(
''
).
reverse
().
join
(
''
)
}
/* 记录当前连接对象,并放入连接池 */
nsCoonPool
.
push
({
key
:
_req
.
key
,
// 标识连接的 唯一性
pwd
:
pwd
,
// 密码
createTime
:
new
Date
().
getTime
(),
// socket创建时间
conn
:
connection
// 当前已经 建立连接的对象
})
...
...
@@ -93,7 +109,7 @@ const createNodeServerSocket = (_server) => {
nsCoonPool
[
i
].
email
=
_arr
[
2
]
nsCoonPool
[
i
].
id
=
_arr
[
3
]
nsCoonPool
[
i
].
auth_key
=
_arr
[
4
]
nsCoonPool
[
i
].
pwd
=
_arr
[
5
]
nsCoonPool
[
i
].
pwd
=
nsCoonPool
[
i
].
pwd
||
Buffer
.
from
(
_arr
[
5
],
'base64'
).
toString
().
replace
(
/^uokoaduw/gi
,
''
).
replace
(
/auhgniq$/gi
,
''
).
split
(
''
).
reverse
().
join
(
''
)
break
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论