Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
S
srvpro
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
srvpro
Commits
ce5b7b96
Commit
ce5b7b96
authored
Aug 19, 2016
by
mercury233
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update socket connections
parent
ab79baf5
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
121 additions
and
122 deletions
+121
-122
ygopro-server.coffee
ygopro-server.coffee
+60
-57
ygopro-server.js
ygopro-server.js
+59
-63
ygopro.coffee
ygopro.coffee
+1
-1
ygopro.js
ygopro.js
+1
-1
No files found.
ygopro-server.coffee
View file @
ce5b7b96
...
@@ -73,9 +73,9 @@ ban_user = (name) ->
...
@@ -73,9 +73,9 @@ ban_user = (name) ->
for
room
in
ROOM_all
when
room
and
room
.
established
for
room
in
ROOM_all
when
room
and
room
.
established
for
player
in
room
.
players
for
player
in
room
.
players
if
player
and
player
.
name
==
name
if
player
and
player
.
name
==
name
settings
.
ban
.
banned_ip
.
push
(
player
.
remoteAddress
)
settings
.
ban
.
banned_ip
.
push
(
player
.
ip
)
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
player
.
name
}
被系统请出了房间"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
player
.
name
}
被系统请出了房间"
,
ygopro
.
constants
.
COLORS
.
RED
)
player
.
end
()
player
.
destroy
()
continue
continue
return
return
...
@@ -198,7 +198,7 @@ ROOM_find_or_create_random = (type, player_ip)->
...
@@ -198,7 +198,7 @@ ROOM_find_or_create_random = (type, player_ip)->
return
room
and
room
.
random_type
!=
''
and
!
room
.
started
and
return
room
and
room
.
random_type
!=
''
and
!
room
.
started
and
((
type
==
''
and
room
.
random_type
!=
'T'
)
or
room
.
random_type
==
type
)
and
((
type
==
''
and
room
.
random_type
!=
'T'
)
or
room
.
random_type
==
type
)
and
room
.
get_playing_player
().
length
<
max_player
and
room
.
get_playing_player
().
length
<
max_player
and
(
room
.
get_host
()
==
null
or
room
.
get_host
().
remoteAddress
!=
ROOM_players_oppentlist
[
player_ip
])
and
(
room
.
get_host
()
==
null
or
room
.
get_host
().
ip
!=
ROOM_players_oppentlist
[
player_ip
])
and
(
playerbanned
==
room
.
deprecated
)
(
playerbanned
==
room
.
deprecated
)
if
result
if
result
result
.
welcome
=
'对手已经在等你了,开始决斗吧!'
result
.
welcome
=
'对手已经在等你了,开始决斗吧!'
...
@@ -506,7 +506,7 @@ class Room
...
@@ -506,7 +506,7 @@ class Room
@
watcher_buffers
=
[]
@
watcher_buffers
=
[]
@
recorder_buffers
=
[]
@
recorder_buffers
=
[]
@
players
=
[]
@
players
=
[]
@
watcher
.
end
()
if
@
watcher
@
watcher
.
destroy
()
if
@
watcher
@
deleted
=
true
@
deleted
=
true
index
=
_
.
indexOf
(
ROOM_all
,
this
)
index
=
_
.
indexOf
(
ROOM_all
,
this
)
ROOM_all
[
index
]
=
null
unless
index
==
-
1
ROOM_all
[
index
]
=
null
unless
index
==
-
1
...
@@ -543,24 +543,16 @@ class Room
...
@@ -543,24 +543,16 @@ class Room
connect
:
(
client
)
->
connect
:
(
client
)
->
@
players
.
push
client
@
players
.
push
client
client
.
ip
=
client
.
remoteAddress
connect_count
=
0
if
client
.
remoteAddress
!=
'::ffff:127.0.0.1'
if
connect_count
=
ROOM_connected_ip
[
client
.
remoteAddress
]
connect_count
++
else
connect_count
=
1
ROOM_connected_ip
[
client
.
remoteAddress
]
=
connect_count
if
@
random_type
if
@
random_type
client
.
abuse_count
=
0
client
.
abuse_count
=
0
host_player
=
@
get_host
()
host_player
=
@
get_host
()
if
host_player
&&
(
host_player
!=
client
)
if
host_player
&&
(
host_player
!=
client
)
# 进来时已经有人在等待了,互相记录为匹配过
# 进来时已经有人在等待了,互相记录为匹配过
ROOM_players_oppentlist
[
host_player
.
remoteAddress
]
=
client
.
remoteAddress
ROOM_players_oppentlist
[
host_player
.
ip
]
=
client
.
ip
ROOM_players_oppentlist
[
client
.
remoteAddress
]
=
host_player
.
remoteAddress
ROOM_players_oppentlist
[
client
.
ip
]
=
host_player
.
ip
else
else
# 第一个玩家刚进来,还没就位
# 第一个玩家刚进来,还没就位
ROOM_players_oppentlist
[
client
.
remoteAddress
]
=
null
ROOM_players_oppentlist
[
client
.
ip
]
=
null
if
@
established
if
@
established
roomlist
.
update
(
this
)
if
!
@
private
and
!
@
started
and
settings
.
modules
.
enable_websocket_roomlist
roomlist
.
update
(
this
)
if
!
@
private
and
!
@
started
and
settings
.
modules
.
enable_websocket_roomlist
...
@@ -596,6 +588,13 @@ class Room
...
@@ -596,6 +588,13 @@ class Room
# 网络连接
# 网络连接
net
.
createServer
(
client
)
->
net
.
createServer
(
client
)
->
client
.
ip
=
client
.
remoteAddress
connect_count
=
ROOM_connected_ip
[
client
.
ip
]
or
0
if
client
.
ip
!=
'::ffff:127.0.0.1'
connect_count
++
ROOM_connected_ip
[
client
.
ip
]
=
connect_count
#log.info "connect", client.ip, ROOM_connected_ip[client.ip]
# server stand for the connection to ygopro server process
# server stand for the connection to ygopro server process
server
=
new
net
.
Socket
()
server
=
new
net
.
Socket
()
client
.
server
=
server
client
.
server
=
server
...
@@ -610,11 +609,12 @@ net.createServer (client) ->
...
@@ -610,11 +609,12 @@ net.createServer (client) ->
if
connect_count
>
0
if
connect_count
>
0
connect_count
--
connect_count
--
ROOM_connected_ip
[
client
.
ip
]
=
connect_count
ROOM_connected_ip
[
client
.
ip
]
=
connect_count
#log.info "disconnect", client.ip, ROOM_connected_ip[client.ip]
tribute
(
client
)
tribute
(
client
)
unless
client
.
closed
unless
client
.
closed
client
.
closed
=
true
client
.
closed
=
true
room
.
disconnect
(
client
)
if
room
room
.
disconnect
(
client
)
if
room
server
.
end
()
server
.
destroy
()
return
return
client
.
on
'error'
,
(
error
)
->
client
.
on
'error'
,
(
error
)
->
...
@@ -624,42 +624,45 @@ net.createServer (client) ->
...
@@ -624,42 +624,45 @@ net.createServer (client) ->
if
connect_count
>
0
if
connect_count
>
0
connect_count
--
connect_count
--
ROOM_connected_ip
[
client
.
ip
]
=
connect_count
ROOM_connected_ip
[
client
.
ip
]
=
connect_count
#log.info "err disconnect", client.ip, ROOM_connected_ip[client.ip]
tribute
(
client
)
tribute
(
client
)
unless
client
.
closed
unless
client
.
closed
client
.
closed
=
error
client
.
closed
=
error
room
.
disconnect
(
client
,
error
)
if
room
room
.
disconnect
(
client
,
error
)
if
room
server
.
end
()
server
.
destroy
()
return
return
client
.
on
'timeout'
,
()
->
client
.
on
'timeout'
,
()
->
server
.
end
()
server
.
destroy
()
return
return
server
.
on
'close'
,
(
had_error
)
->
server
.
on
'close'
,
(
had_error
)
->
#log.info "server closed", client.name, had_error
#log.info "server closed", client.name, had_error
room
=
ROOM_all
[
client
.
rid
]
room
=
ROOM_all
[
client
.
rid
]
#log.info "server close", client.ip, ROOM_connected_ip[client.ip]
tribute
(
server
)
tribute
(
server
)
room
.
disconnector
=
'server'
if
room
room
.
disconnector
=
'server'
if
room
server
.
closed
=
true
unless
server
.
closed
server
.
closed
=
true
unless
server
.
closed
unless
client
.
closed
unless
client
.
closed
ygopro
.
stoc_send_chat
(
client
,
"服务器关闭了连接"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat
(
client
,
"服务器关闭了连接"
,
ygopro
.
constants
.
COLORS
.
RED
)
client
.
end
()
client
.
destroy
()
return
return
server
.
on
'error'
,
(
error
)
->
server
.
on
'error'
,
(
error
)
->
#log.info "server error", client.name, error
#log.info "server error", client.name, error
room
=
ROOM_all
[
client
.
rid
]
room
=
ROOM_all
[
client
.
rid
]
#log.info "server err close", client.ip, ROOM_connected_ip[client.ip]
tribute
(
server
)
tribute
(
server
)
room
.
disconnector
=
'server'
if
room
room
.
disconnector
=
'server'
if
room
server
.
closed
=
error
server
.
closed
=
error
unless
client
.
closed
unless
client
.
closed
ygopro
.
stoc_send_chat
(
client
,
"服务器错误:
#{
error
}
"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat
(
client
,
"服务器错误:
#{
error
}
"
,
ygopro
.
constants
.
COLORS
.
RED
)
client
.
end
()
client
.
destroy
()
return
return
if
ROOM_bad_ip
[
client
.
remoteAddress
]
>
5
if
ROOM_bad_ip
[
client
.
ip
]
>
5
log
.
info
'BAD IP'
,
client
.
remoteAddress
log
.
info
'BAD IP'
,
client
.
ip
client
.
end
()
client
.
destroy
()
return
return
if
settings
.
modules
.
enable_cloud_replay
if
settings
.
modules
.
enable_cloud_replay
...
@@ -673,11 +676,11 @@ net.createServer (client) ->
...
@@ -673,11 +676,11 @@ net.createServer (client) ->
if
err
if
err
log
.
info
"cloud replay unzip error: "
+
err
log
.
info
"cloud replay unzip error: "
+
err
ygopro
.
stoc_send_chat
(
client
,
"播放录像出错"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat
(
client
,
"播放录像出错"
,
ygopro
.
constants
.
COLORS
.
RED
)
client
.
end
()
client
.
destroy
()
return
return
ygopro
.
stoc_send_chat
(
client
,
"正在观看云录像:R#
#{
replay
.
replay_id
}
#{
replay
.
player_names
}
#{
replay
.
date_time
}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
)
ygopro
.
stoc_send_chat
(
client
,
"正在观看云录像:R#
#{
replay
.
replay_id
}
#{
replay
.
player_names
}
#{
replay
.
date_time
}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
)
client
.
write
replay_buffer
client
.
write
replay_buffer
client
.
end
()
client
.
destroy
()
return
return
return
return
...
@@ -734,14 +737,14 @@ net.createServer (client) ->
...
@@ -734,14 +737,14 @@ net.createServer (client) ->
looplimit
++
looplimit
++
#log.info(looplimit)
#log.info(looplimit)
if
looplimit
>
800
or
ROOM_bad_ip
[
client
.
remoteAddress
]
>
5
if
looplimit
>
800
or
ROOM_bad_ip
[
client
.
ip
]
>
5
log
.
info
(
"error ctos"
,
client
.
name
,
client
.
remoteAddress
)
log
.
info
(
"error ctos"
,
client
.
name
,
client
.
ip
)
bad_ip_count
=
ROOM_bad_ip
[
client
.
remoteAddress
]
bad_ip_count
=
ROOM_bad_ip
[
client
.
ip
]
if
bad_ip_count
if
bad_ip_count
ROOM_bad_ip
[
client
.
remoteAddress
]
=
bad_ip_count
+
1
ROOM_bad_ip
[
client
.
ip
]
=
bad_ip_count
+
1
else
else
ROOM_bad_ip
[
client
.
remoteAddress
]
=
1
ROOM_bad_ip
[
client
.
ip
]
=
1
client
.
end
()
client
.
destroy
()
break
break
if
client
.
established
if
client
.
established
...
@@ -804,7 +807,7 @@ net.createServer (client) ->
...
@@ -804,7 +807,7 @@ net.createServer (client) ->
#log.info(looplimit)
#log.info(looplimit)
if
looplimit
>
800
if
looplimit
>
800
log
.
info
(
"error stoc"
,
client
.
name
)
log
.
info
(
"error stoc"
,
client
.
name
)
server
.
end
()
server
.
destroy
()
break
break
client
.
write
buffer
for
buffer
in
datas
client
.
write
buffer
for
buffer
in
datas
...
@@ -835,7 +838,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
...
@@ -835,7 +838,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
else
if
info
.
pass
.
toUpperCase
()
==
"R"
and
settings
.
modules
.
enable_cloud_replay
else
if
info
.
pass
.
toUpperCase
()
==
"R"
and
settings
.
modules
.
enable_cloud_replay
ygopro
.
stoc_send_chat
(
client
,
"以下是您近期的云录像,密码处输入 R#录像编号 即可观看"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
)
ygopro
.
stoc_send_chat
(
client
,
"以下是您近期的云录像,密码处输入 R#录像编号 即可观看"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
)
redisdb
.
lrange
client
.
remoteAddress
+
":replays"
,
0
,
2
,
(
err
,
result
)
->
redisdb
.
lrange
client
.
ip
+
":replays"
,
0
,
2
,
(
err
,
result
)
->
_
.
each
result
,
(
replay_id
,
id
)
->
_
.
each
result
,
(
replay_id
,
id
)
->
redisdb
.
hgetall
"replay:"
+
replay_id
,
(
err
,
replay
)
->
redisdb
.
hgetall
"replay:"
+
replay_id
,
(
err
,
replay
)
->
if
err
or
!
replay
if
err
or
!
replay
...
@@ -851,13 +854,13 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
...
@@ -851,13 +854,13 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
msg
:
1
msg
:
1
code
:
2
code
:
2
}
}
client
.
end
()
client
.
destroy
()
return
),
500
return
),
500
else
if
info
.
pass
[
0
...
2
].
toUpperCase
()
==
"R#"
and
settings
.
modules
.
enable_cloud_replay
else
if
info
.
pass
[
0
...
2
].
toUpperCase
()
==
"R#"
and
settings
.
modules
.
enable_cloud_replay
replay_id
=
info
.
pass
.
split
(
"#"
)[
1
]
replay_id
=
info
.
pass
.
split
(
"#"
)[
1
]
if
(
replay_id
>
0
and
replay_id
<=
9
)
if
(
replay_id
>
0
and
replay_id
<=
9
)
redisdb
.
lindex
client
.
remoteAddress
+
":replays"
,
replay_id
-
1
,
(
err
,
replay_id
)
->
redisdb
.
lindex
client
.
ip
+
":replays"
,
replay_id
-
1
,
(
err
,
replay_id
)
->
if
err
or
!
replay_id
if
err
or
!
replay_id
log
.
info
"cloud replay replayid error: "
+
err
if
err
log
.
info
"cloud replay replayid error: "
+
err
if
err
ygopro
.
stoc_die
(
client
,
"没有找到录像"
)
ygopro
.
stoc_die
(
client
,
"没有找到录像"
)
...
@@ -879,7 +882,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
...
@@ -879,7 +882,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
msg
:
4
msg
:
4
code
:
settings
.
version
code
:
settings
.
version
}
}
client
.
end
()
client
.
destroy
()
else
if
!
info
.
pass
.
length
and
!
settings
.
modules
.
enable_random_duel
and
!
settings
.
modules
.
enable_windbot
else
if
!
info
.
pass
.
length
and
!
settings
.
modules
.
enable_random_duel
and
!
settings
.
modules
.
enable_windbot
ygopro
.
stoc_die
(
client
,
"房间名为空,请填写主机密码"
)
ygopro
.
stoc_die
(
client
,
"房间名为空,请填写主机密码"
)
...
@@ -998,38 +1001,38 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
...
@@ -998,38 +1001,38 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
else
if
!
client
.
name
or
client
.
name
==
""
else
if
!
client
.
name
or
client
.
name
==
""
ygopro
.
stoc_die
(
client
,
"请输入正确的用户名"
)
ygopro
.
stoc_die
(
client
,
"请输入正确的用户名"
)
else
if
ROOM_connected_ip
[
client
.
remoteAddress
]
>
10
else
if
ROOM_connected_ip
[
client
.
ip
]
>
5
log
.
warn
(
"MULTI LOGIN"
,
client
.
name
,
client
.
remoteAddress
)
log
.
warn
(
"MULTI LOGIN"
,
client
.
name
,
client
.
ip
)
ygopro
.
stoc_die
(
client
,
"同时开启的客户端数量过多 "
+
client
.
remoteAddress
)
ygopro
.
stoc_die
(
client
,
"同时开启的客户端数量过多 "
+
client
.
ip
)
else
if
_
.
indexOf
(
settings
.
ban
.
banned_user
,
client
.
name
)
>
-
1
#账号被封
else
if
_
.
indexOf
(
settings
.
ban
.
banned_user
,
client
.
name
)
>
-
1
#账号被封
settings
.
ban
.
banned_ip
.
push
(
client
.
remoteAddress
)
settings
.
ban
.
banned_ip
.
push
(
client
.
ip
)
log
.
warn
(
"BANNED USER LOGIN"
,
client
.
name
,
client
.
remoteAddress
)
log
.
warn
(
"BANNED USER LOGIN"
,
client
.
name
,
client
.
ip
)
ygopro
.
stoc_die
(
client
,
"您的账号已被封禁"
)
ygopro
.
stoc_die
(
client
,
"您的账号已被封禁"
)
else
if
_
.
indexOf
(
settings
.
ban
.
banned_ip
,
client
.
remoteAddress
)
>
-
1
#IP被封
else
if
_
.
indexOf
(
settings
.
ban
.
banned_ip
,
client
.
ip
)
>
-
1
#IP被封
log
.
warn
(
"BANNED IP LOGIN"
,
client
.
name
,
client
.
remoteAddress
)
log
.
warn
(
"BANNED IP LOGIN"
,
client
.
name
,
client
.
ip
)
ygopro
.
stoc_die
(
client
,
"您的账号已被封禁"
)
ygopro
.
stoc_die
(
client
,
"您的账号已被封禁"
)
else
if
_
.
any
(
settings
.
ban
.
badword_level3
,
(
badword
)
->
else
if
_
.
any
(
settings
.
ban
.
badword_level3
,
(
badword
)
->
regexp
=
new
RegExp
(
badword
,
'i'
)
regexp
=
new
RegExp
(
badword
,
'i'
)
return
name
.
match
(
regexp
)
return
name
.
match
(
regexp
)
,
name
=
client
.
name
)
,
name
=
client
.
name
)
log
.
warn
(
"BAD NAME LEVEL 3"
,
client
.
name
,
client
.
remoteAddress
)
log
.
warn
(
"BAD NAME LEVEL 3"
,
client
.
name
,
client
.
ip
)
ygopro
.
stoc_die
(
client
,
"您的用户名存在不适当的内容"
)
ygopro
.
stoc_die
(
client
,
"您的用户名存在不适当的内容"
)
else
if
_
.
any
(
settings
.
ban
.
badword_level2
,
(
badword
)
->
else
if
_
.
any
(
settings
.
ban
.
badword_level2
,
(
badword
)
->
regexp
=
new
RegExp
(
badword
,
'i'
)
regexp
=
new
RegExp
(
badword
,
'i'
)
return
name
.
match
(
regexp
)
return
name
.
match
(
regexp
)
,
name
=
client
.
name
)
,
name
=
client
.
name
)
log
.
warn
(
"BAD NAME LEVEL 2"
,
client
.
name
,
client
.
remoteAddress
)
log
.
warn
(
"BAD NAME LEVEL 2"
,
client
.
name
,
client
.
ip
)
ygopro
.
stoc_die
(
client
,
"您的用户名存在不适当的内容"
)
ygopro
.
stoc_die
(
client
,
"您的用户名存在不适当的内容"
)
else
if
_
.
any
(
settings
.
ban
.
badword_level1
,
(
badword
)
->
else
if
_
.
any
(
settings
.
ban
.
badword_level1
,
(
badword
)
->
regexp
=
new
RegExp
(
badword
,
'i'
)
regexp
=
new
RegExp
(
badword
,
'i'
)
return
name
.
match
(
regexp
)
return
name
.
match
(
regexp
)
,
name
=
client
.
name
)
,
name
=
client
.
name
)
log
.
warn
(
"BAD NAME LEVEL 1"
,
client
.
name
,
client
.
remoteAddress
)
log
.
warn
(
"BAD NAME LEVEL 1"
,
client
.
name
,
client
.
ip
)
ygopro
.
stoc_die
(
client
,
"您的用户名存在不适当的内容,请注意更改"
)
ygopro
.
stoc_die
(
client
,
"您的用户名存在不适当的内容,请注意更改"
)
else
if
info
.
pass
.
length
&&
!
ROOM_validate
(
info
.
pass
)
else
if
info
.
pass
.
length
&&
!
ROOM_validate
(
info
.
pass
)
...
@@ -1045,7 +1048,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
...
@@ -1045,7 +1048,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
ygopro
.
stoc_send_chat
(
client
,
"您的版本号过低,可能出现未知问题,电脑用户请升级版本,YGOMobile用户请等待作者更新"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
)
ygopro
.
stoc_send_chat
(
client
,
"您的版本号过低,可能出现未知问题,电脑用户请升级版本,YGOMobile用户请等待作者更新"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
)
#log.info 'join_game',info.pass, client.name
#log.info 'join_game',info.pass, client.name
room
=
ROOM_find_or_create_by_name
(
info
.
pass
,
client
.
remoteAddress
)
room
=
ROOM_find_or_create_by_name
(
info
.
pass
,
client
.
ip
)
if
!
room
if
!
room
ygopro
.
stoc_die
(
client
,
"服务器已经爆满,请稍候再试"
)
ygopro
.
stoc_die
(
client
,
"服务器已经爆满,请稍候再试"
)
else
if
room
.
error
else
if
room
.
error
...
@@ -1221,7 +1224,7 @@ ygopro.ctos_follow 'HS_KICK', true, (buffer, info, client, server)->
...
@@ -1221,7 +1224,7 @@ ygopro.ctos_follow 'HS_KICK', true, (buffer, info, client, server)->
if
client
.
kick_count
>=
5
if
client
.
kick_count
>=
5
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
client
.
name
}
被系统请出了房间"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
client
.
name
}
被系统请出了房间"
,
ygopro
.
constants
.
COLORS
.
RED
)
ROOM_ban_player
(
player
.
name
,
player
.
ip
,
"挂房间"
)
ROOM_ban_player
(
player
.
name
,
player
.
ip
,
"挂房间"
)
client
.
end
()
client
.
destroy
()
return
true
return
true
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
player
.
name
}
被请出了房间"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
player
.
name
}
被请出了房间"
,
ygopro
.
constants
.
COLORS
.
RED
)
return
false
return
false
...
@@ -1263,7 +1266,7 @@ wait_room_start = (room, time)->
...
@@ -1263,7 +1266,7 @@ wait_room_start = (room, time)->
if
player
and
player
.
is_host
if
player
and
player
.
is_host
ROOM_ban_player
(
player
.
name
,
player
.
ip
,
"挂房间"
)
ROOM_ban_player
(
player
.
name
,
player
.
ip
,
"挂房间"
)
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
player
.
name
}
被系统请出了房间"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
player
.
name
}
被系统请出了房间"
,
ygopro
.
constants
.
COLORS
.
RED
)
player
.
end
()
player
.
destroy
()
return
return
#tip
#tip
...
@@ -1320,7 +1323,7 @@ ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server)->
...
@@ -1320,7 +1323,7 @@ ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server)->
room
.
dueling_players
=
[]
room
.
dueling_players
=
[]
for
player
in
room
.
players
when
player
.
pos
!=
7
for
player
in
room
.
players
when
player
.
pos
!=
7
room
.
dueling_players
[
player
.
pos
]
=
player
room
.
dueling_players
[
player
.
pos
]
=
player
room
.
player_datas
.
push
ip
:
player
.
remoteAddress
,
name
:
player
.
name
room
.
player_datas
.
push
ip
:
player
.
ip
,
name
:
player
.
name
if
settings
.
modules
.
tips
if
settings
.
modules
.
tips
ygopro
.
stoc_send_random_tip
(
client
)
ygopro
.
stoc_send_random_tip
(
client
)
return
return
...
@@ -1363,7 +1366,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
...
@@ -1363,7 +1366,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
if
!
(
room
and
room
.
random_type
)
if
!
(
room
and
room
.
random_type
)
return
cancel
return
cancel
if
client
.
abuse_count
>=
5
if
client
.
abuse_count
>=
5
log
.
warn
"BANNED CHAT"
,
client
.
name
,
client
.
remoteAddress
,
msg
log
.
warn
"BANNED CHAT"
,
client
.
name
,
client
.
ip
,
msg
ygopro
.
stoc_send_chat
(
client
,
"您已被禁言!"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat
(
client
,
"您已被禁言!"
,
ygopro
.
constants
.
COLORS
.
RED
)
return
true
return
true
oldmsg
=
msg
oldmsg
=
msg
...
@@ -1371,13 +1374,13 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
...
@@ -1371,13 +1374,13 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
regexp
=
new
RegExp
(
badword
,
'i'
)
regexp
=
new
RegExp
(
badword
,
'i'
)
return
msg
.
match
(
regexp
)
return
msg
.
match
(
regexp
)
,
msg
))
,
msg
))
log
.
warn
"BAD WORD LEVEL 3"
,
client
.
name
,
client
.
remoteAddress
,
oldmsg
log
.
warn
"BAD WORD LEVEL 3"
,
client
.
name
,
client
.
ip
,
oldmsg
cancel
=
true
cancel
=
true
if
client
.
abuse_count
>
0
if
client
.
abuse_count
>
0
ygopro
.
stoc_send_chat
(
client
,
"您的发言存在严重不适当的内容,禁止您使用随机对战功能!"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat
(
client
,
"您的发言存在严重不适当的内容,禁止您使用随机对战功能!"
,
ygopro
.
constants
.
COLORS
.
RED
)
ROOM_ban_player
(
client
.
name
,
client
.
ip
,
"发言违规"
)
ROOM_ban_player
(
client
.
name
,
client
.
ip
,
"发言违规"
)
ROOM_ban_player
(
client
.
name
,
client
.
ip
,
"发言违规"
,
3
)
ROOM_ban_player
(
client
.
name
,
client
.
ip
,
"发言违规"
,
3
)
client
.
end
()
client
.
destroy
()
return
true
return
true
else
else
client
.
abuse_count
=
client
.
abuse_count
+
4
client
.
abuse_count
=
client
.
abuse_count
+
4
...
@@ -1386,7 +1389,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
...
@@ -1386,7 +1389,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
regexp
=
new
RegExp
(
badword
,
'i'
)
regexp
=
new
RegExp
(
badword
,
'i'
)
return
msg
.
match
(
regexp
)
return
msg
.
match
(
regexp
)
,
msg
))
,
msg
))
log
.
warn
"BAD WORD LEVEL 2"
,
client
.
name
,
client
.
remoteAddress
,
oldmsg
log
.
warn
"BAD WORD LEVEL 2"
,
client
.
name
,
client
.
ip
,
oldmsg
client
.
abuse_count
=
client
.
abuse_count
+
3
client
.
abuse_count
=
client
.
abuse_count
+
3
ygopro
.
stoc_send_chat
(
client
,
"您的发言存在不适当的内容,发送失败!"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat
(
client
,
"您的发言存在不适当的内容,发送失败!"
,
ygopro
.
constants
.
COLORS
.
RED
)
cancel
=
true
cancel
=
true
...
@@ -1398,7 +1401,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
...
@@ -1398,7 +1401,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
return
return
,
msg
)
,
msg
)
if
oldmsg
!=
msg
if
oldmsg
!=
msg
log
.
warn
"BAD WORD LEVEL 1"
,
client
.
name
,
client
.
remoteAddress
,
oldmsg
log
.
warn
"BAD WORD LEVEL 1"
,
client
.
name
,
client
.
ip
,
oldmsg
client
.
abuse_count
=
client
.
abuse_count
+
1
client
.
abuse_count
=
client
.
abuse_count
+
1
ygopro
.
stoc_send_chat
(
client
,
"请使用文明用语!"
)
ygopro
.
stoc_send_chat
(
client
,
"请使用文明用语!"
)
struct
=
ygopro
.
structs
[
"chat"
]
struct
=
ygopro
.
structs
[
"chat"
]
...
@@ -1409,7 +1412,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
...
@@ -1409,7 +1412,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
regexp
=
new
RegExp
(
badword
,
'i'
)
regexp
=
new
RegExp
(
badword
,
'i'
)
return
msg
.
match
(
regexp
)
return
msg
.
match
(
regexp
)
,
msg
))
,
msg
))
log
.
info
"BAD WORD LEVEL 0"
,
client
.
name
,
client
.
remoteAddress
,
oldmsg
log
.
info
"BAD WORD LEVEL 0"
,
client
.
name
,
client
.
ip
,
oldmsg
if
client
.
abuse_count
>=
5
if
client
.
abuse_count
>=
5
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
client
.
name
}
已被禁言!"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
client
.
name
}
已被禁言!"
,
ygopro
.
constants
.
COLORS
.
RED
)
ROOM_ban_player
(
client
.
name
,
client
.
ip
,
"发言违规"
)
ROOM_ban_player
(
client
.
name
,
client
.
ip
,
"发言违规"
)
...
@@ -1548,7 +1551,7 @@ setInterval ()->
...
@@ -1548,7 +1551,7 @@ setInterval ()->
room
.
last_active_time
=
moment
()
room
.
last_active_time
=
moment
()
ROOM_ban_player
(
room
.
waiting_for_player
.
name
,
room
.
waiting_for_player
.
ip
,
"挂机"
)
ROOM_ban_player
(
room
.
waiting_for_player
.
name
,
room
.
waiting_for_player
.
ip
,
"挂机"
)
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
room
.
waiting_for_player
.
name
}
被系统请出了房间"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
room
.
waiting_for_player
.
name
}
被系统请出了房间"
,
ygopro
.
constants
.
COLORS
.
RED
)
room
.
waiting_for_player
.
server
.
end
()
room
.
waiting_for_player
.
server
.
destroy
()
else
if
time_passed
>=
(
settings
.
modules
.
hang_timeout
-
20
)
and
not
(
time_passed
%
10
)
else
if
time_passed
>=
(
settings
.
modules
.
hang_timeout
-
20
)
and
not
(
time_passed
%
10
)
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
room
.
waiting_for_player
.
name
}
已经很久没有操作了,若继续挂机,将于
#{
settings
.
modules
.
hang_timeout
-
time_passed
}
秒后被请出房间"
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send_chat_to_room
(
room
,
"
#{
room
.
waiting_for_player
.
name
}
已经很久没有操作了,若继续挂机,将于
#{
settings
.
modules
.
hang_timeout
-
time_passed
}
秒后被请出房间"
,
ygopro
.
constants
.
COLORS
.
RED
)
return
return
...
...
ygopro-server.js
View file @
ce5b7b96
...
@@ -98,9 +98,9 @@
...
@@ -98,9 +98,9 @@
for
(
l
=
0
,
len1
=
ref
.
length
;
l
<
len1
;
l
++
)
{
for
(
l
=
0
,
len1
=
ref
.
length
;
l
<
len1
;
l
++
)
{
player
=
ref
[
l
];
player
=
ref
[
l
];
if
(
player
&&
player
.
name
===
name
)
{
if
(
player
&&
player
.
name
===
name
)
{
settings
.
ban
.
banned_ip
.
push
(
player
.
remoteAddress
);
settings
.
ban
.
banned_ip
.
push
(
player
.
ip
);
ygopro
.
stoc_send_chat_to_room
(
room
,
player
.
name
+
"
被系统请出了房间
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat_to_room
(
room
,
player
.
name
+
"
被系统请出了房间
"
,
ygopro
.
constants
.
COLORS
.
RED
);
player
.
end
();
player
.
destroy
();
continue
;
continue
;
}
}
}
}
...
@@ -283,7 +283,7 @@
...
@@ -283,7 +283,7 @@
max_player
=
type
===
'
T
'
?
4
:
2
;
max_player
=
type
===
'
T
'
?
4
:
2
;
playerbanned
=
bannedplayer
&&
bannedplayer
.
count
>
3
&&
moment
()
<
bannedplayer
.
time
;
playerbanned
=
bannedplayer
&&
bannedplayer
.
count
>
3
&&
moment
()
<
bannedplayer
.
time
;
result
=
_
.
find
(
ROOM_all
,
function
(
room
)
{
result
=
_
.
find
(
ROOM_all
,
function
(
room
)
{
return
room
&&
room
.
random_type
!==
''
&&
!
room
.
started
&&
((
type
===
''
&&
room
.
random_type
!==
'
T
'
)
||
room
.
random_type
===
type
)
&&
room
.
get_playing_player
().
length
<
max_player
&&
(
room
.
get_host
()
===
null
||
room
.
get_host
().
remoteAddress
!==
ROOM_players_oppentlist
[
player_ip
])
&&
(
playerbanned
===
room
.
deprecated
);
return
room
&&
room
.
random_type
!==
''
&&
!
room
.
started
&&
((
type
===
''
&&
room
.
random_type
!==
'
T
'
)
||
room
.
random_type
===
type
)
&&
room
.
get_playing_player
().
length
<
max_player
&&
(
room
.
get_host
()
===
null
||
room
.
get_host
().
ip
!==
ROOM_players_oppentlist
[
player_ip
])
&&
(
playerbanned
===
room
.
deprecated
);
});
});
if
(
result
)
{
if
(
result
)
{
result
.
welcome
=
'
对手已经在等你了,开始决斗吧!
'
;
result
.
welcome
=
'
对手已经在等你了,开始决斗吧!
'
;
...
@@ -668,7 +668,7 @@
...
@@ -668,7 +668,7 @@
this
.
recorder_buffers
=
[];
this
.
recorder_buffers
=
[];
this
.
players
=
[];
this
.
players
=
[];
if
(
this
.
watcher
)
{
if
(
this
.
watcher
)
{
this
.
watcher
.
end
();
this
.
watcher
.
destroy
();
}
}
this
.
deleted
=
true
;
this
.
deleted
=
true
;
index
=
_
.
indexOf
(
ROOM_all
,
this
);
index
=
_
.
indexOf
(
ROOM_all
,
this
);
...
@@ -717,26 +717,16 @@
...
@@ -717,26 +717,16 @@
};
};
Room
.
prototype
.
connect
=
function
(
client
)
{
Room
.
prototype
.
connect
=
function
(
client
)
{
var
connect_count
,
host_player
;
var
host_player
;
this
.
players
.
push
(
client
);
this
.
players
.
push
(
client
);
client
.
ip
=
client
.
remoteAddress
;
connect_count
=
0
;
if
(
client
.
remoteAddress
!==
'
::ffff:127.0.0.1
'
)
{
if
(
connect_count
=
ROOM_connected_ip
[
client
.
remoteAddress
])
{
connect_count
++
;
}
else
{
connect_count
=
1
;
}
}
ROOM_connected_ip
[
client
.
remoteAddress
]
=
connect_count
;
if
(
this
.
random_type
)
{
if
(
this
.
random_type
)
{
client
.
abuse_count
=
0
;
client
.
abuse_count
=
0
;
host_player
=
this
.
get_host
();
host_player
=
this
.
get_host
();
if
(
host_player
&&
(
host_player
!==
client
))
{
if
(
host_player
&&
(
host_player
!==
client
))
{
ROOM_players_oppentlist
[
host_player
.
remoteAddress
]
=
client
.
remoteAddress
;
ROOM_players_oppentlist
[
host_player
.
ip
]
=
client
.
ip
;
ROOM_players_oppentlist
[
client
.
remoteAddress
]
=
host_player
.
remoteAddress
;
ROOM_players_oppentlist
[
client
.
ip
]
=
host_player
.
ip
;
}
else
{
}
else
{
ROOM_players_oppentlist
[
client
.
remoteAddress
]
=
null
;
ROOM_players_oppentlist
[
client
.
ip
]
=
null
;
}
}
}
}
if
(
this
.
established
)
{
if
(
this
.
established
)
{
...
@@ -789,12 +779,18 @@
...
@@ -789,12 +779,18 @@
})();
})();
net
.
createServer
(
function
(
client
)
{
net
.
createServer
(
function
(
client
)
{
var
server
;
var
connect_count
,
server
;
client
.
ip
=
client
.
remoteAddress
;
connect_count
=
ROOM_connected_ip
[
client
.
ip
]
||
0
;
if
(
client
.
ip
!==
'
::ffff:127.0.0.1
'
)
{
connect_count
++
;
}
ROOM_connected_ip
[
client
.
ip
]
=
connect_count
;
server
=
new
net
.
Socket
();
server
=
new
net
.
Socket
();
client
.
server
=
server
;
client
.
server
=
server
;
client
.
setTimeout
(
300000
);
client
.
setTimeout
(
300000
);
client
.
on
(
'
close
'
,
function
(
had_error
)
{
client
.
on
(
'
close
'
,
function
(
had_error
)
{
var
connect_count
,
room
;
var
room
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
connect_count
=
ROOM_connected_ip
[
client
.
ip
];
connect_count
=
ROOM_connected_ip
[
client
.
ip
];
if
(
connect_count
>
0
)
{
if
(
connect_count
>
0
)
{
...
@@ -808,10 +804,10 @@
...
@@ -808,10 +804,10 @@
room
.
disconnect
(
client
);
room
.
disconnect
(
client
);
}
}
}
}
server
.
end
();
server
.
destroy
();
});
});
client
.
on
(
'
error
'
,
function
(
error
)
{
client
.
on
(
'
error
'
,
function
(
error
)
{
var
connect_count
,
room
;
var
room
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
connect_count
=
ROOM_connected_ip
[
client
.
ip
];
connect_count
=
ROOM_connected_ip
[
client
.
ip
];
if
(
connect_count
>
0
)
{
if
(
connect_count
>
0
)
{
...
@@ -825,10 +821,10 @@
...
@@ -825,10 +821,10 @@
room
.
disconnect
(
client
,
error
);
room
.
disconnect
(
client
,
error
);
}
}
}
}
server
.
end
();
server
.
destroy
();
});
});
client
.
on
(
'
timeout
'
,
function
()
{
client
.
on
(
'
timeout
'
,
function
()
{
server
.
end
();
server
.
destroy
();
});
});
server
.
on
(
'
close
'
,
function
(
had_error
)
{
server
.
on
(
'
close
'
,
function
(
had_error
)
{
var
room
;
var
room
;
...
@@ -842,7 +838,7 @@
...
@@ -842,7 +838,7 @@
}
}
if
(
!
client
.
closed
)
{
if
(
!
client
.
closed
)
{
ygopro
.
stoc_send_chat
(
client
,
"
服务器关闭了连接
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat
(
client
,
"
服务器关闭了连接
"
,
ygopro
.
constants
.
COLORS
.
RED
);
client
.
end
();
client
.
destroy
();
}
}
});
});
server
.
on
(
'
error
'
,
function
(
error
)
{
server
.
on
(
'
error
'
,
function
(
error
)
{
...
@@ -855,12 +851,12 @@
...
@@ -855,12 +851,12 @@
server
.
closed
=
error
;
server
.
closed
=
error
;
if
(
!
client
.
closed
)
{
if
(
!
client
.
closed
)
{
ygopro
.
stoc_send_chat
(
client
,
"
服务器错误:
"
+
error
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat
(
client
,
"
服务器错误:
"
+
error
,
ygopro
.
constants
.
COLORS
.
RED
);
client
.
end
();
client
.
destroy
();
}
}
});
});
if
(
ROOM_bad_ip
[
client
.
remoteAddress
]
>
5
)
{
if
(
ROOM_bad_ip
[
client
.
ip
]
>
5
)
{
log
.
info
(
'
BAD IP
'
,
client
.
remoteAddress
);
log
.
info
(
'
BAD IP
'
,
client
.
ip
);
client
.
end
();
client
.
destroy
();
return
;
return
;
}
}
if
(
settings
.
modules
.
enable_cloud_replay
)
{
if
(
settings
.
modules
.
enable_cloud_replay
)
{
...
@@ -876,12 +872,12 @@
...
@@ -876,12 +872,12 @@
if
(
err
)
{
if
(
err
)
{
log
.
info
(
"
cloud replay unzip error:
"
+
err
);
log
.
info
(
"
cloud replay unzip error:
"
+
err
);
ygopro
.
stoc_send_chat
(
client
,
"
播放录像出错
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat
(
client
,
"
播放录像出错
"
,
ygopro
.
constants
.
COLORS
.
RED
);
client
.
end
();
client
.
destroy
();
return
;
return
;
}
}
ygopro
.
stoc_send_chat
(
client
,
"
正在观看云录像:R#
"
+
replay
.
replay_id
+
"
"
+
replay
.
player_names
+
"
"
+
replay
.
date_time
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
"
正在观看云录像:R#
"
+
replay
.
replay_id
+
"
"
+
replay
.
player_names
+
"
"
+
replay
.
date_time
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
client
.
write
(
replay_buffer
);
client
.
write
(
replay_buffer
);
client
.
end
();
client
.
destroy
();
});
});
};
};
}
}
...
@@ -940,15 +936,15 @@
...
@@ -940,15 +936,15 @@
}
}
}
}
looplimit
++
;
looplimit
++
;
if
(
looplimit
>
800
||
ROOM_bad_ip
[
client
.
remoteAddress
]
>
5
)
{
if
(
looplimit
>
800
||
ROOM_bad_ip
[
client
.
ip
]
>
5
)
{
log
.
info
(
"
error ctos
"
,
client
.
name
,
client
.
remoteAddress
);
log
.
info
(
"
error ctos
"
,
client
.
name
,
client
.
ip
);
bad_ip_count
=
ROOM_bad_ip
[
client
.
remoteAddress
];
bad_ip_count
=
ROOM_bad_ip
[
client
.
ip
];
if
(
bad_ip_count
)
{
if
(
bad_ip_count
)
{
ROOM_bad_ip
[
client
.
remoteAddress
]
=
bad_ip_count
+
1
;
ROOM_bad_ip
[
client
.
ip
]
=
bad_ip_count
+
1
;
}
else
{
}
else
{
ROOM_bad_ip
[
client
.
remoteAddress
]
=
1
;
ROOM_bad_ip
[
client
.
ip
]
=
1
;
}
}
client
.
end
();
client
.
destroy
();
break
;
break
;
}
}
}
}
...
@@ -1020,7 +1016,7 @@
...
@@ -1020,7 +1016,7 @@
looplimit
++
;
looplimit
++
;
if
(
looplimit
>
800
)
{
if
(
looplimit
>
800
)
{
log
.
info
(
"
error stoc
"
,
client
.
name
);
log
.
info
(
"
error stoc
"
,
client
.
name
);
server
.
end
();
server
.
destroy
();
break
;
break
;
}
}
}
}
...
@@ -1050,7 +1046,7 @@
...
@@ -1050,7 +1046,7 @@
ygopro
.
stoc_die
(
client
,
settings
.
modules
.
stop
);
ygopro
.
stoc_die
(
client
,
settings
.
modules
.
stop
);
}
else
if
(
info
.
pass
.
toUpperCase
()
===
"
R
"
&&
settings
.
modules
.
enable_cloud_replay
)
{
}
else
if
(
info
.
pass
.
toUpperCase
()
===
"
R
"
&&
settings
.
modules
.
enable_cloud_replay
)
{
ygopro
.
stoc_send_chat
(
client
,
"
以下是您近期的云录像,密码处输入 R#录像编号 即可观看
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
"
以下是您近期的云录像,密码处输入 R#录像编号 即可观看
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
redisdb
.
lrange
(
client
.
remoteAddress
+
"
:replays
"
,
0
,
2
,
function
(
err
,
result
)
{
redisdb
.
lrange
(
client
.
ip
+
"
:replays
"
,
0
,
2
,
function
(
err
,
result
)
{
_
.
each
(
result
,
function
(
replay_id
,
id
)
{
_
.
each
(
result
,
function
(
replay_id
,
id
)
{
redisdb
.
hgetall
(
"
replay:
"
+
replay_id
,
function
(
err
,
replay
)
{
redisdb
.
hgetall
(
"
replay:
"
+
replay_id
,
function
(
err
,
replay
)
{
if
(
err
||
!
replay
)
{
if
(
err
||
!
replay
)
{
...
@@ -1068,12 +1064,12 @@
...
@@ -1068,12 +1064,12 @@
msg
:
1
,
msg
:
1
,
code
:
2
code
:
2
});
});
client
.
end
();
client
.
destroy
();
}),
500
);
}),
500
);
}
else
if
(
info
.
pass
.
slice
(
0
,
2
).
toUpperCase
()
===
"
R#
"
&&
settings
.
modules
.
enable_cloud_replay
)
{
}
else
if
(
info
.
pass
.
slice
(
0
,
2
).
toUpperCase
()
===
"
R#
"
&&
settings
.
modules
.
enable_cloud_replay
)
{
replay_id
=
info
.
pass
.
split
(
"
#
"
)[
1
];
replay_id
=
info
.
pass
.
split
(
"
#
"
)[
1
];
if
(
replay_id
>
0
&&
replay_id
<=
9
)
{
if
(
replay_id
>
0
&&
replay_id
<=
9
)
{
redisdb
.
lindex
(
client
.
remoteAddress
+
"
:replays
"
,
replay_id
-
1
,
function
(
err
,
replay_id
)
{
redisdb
.
lindex
(
client
.
ip
+
"
:replays
"
,
replay_id
-
1
,
function
(
err
,
replay_id
)
{
if
(
err
||
!
replay_id
)
{
if
(
err
||
!
replay_id
)
{
if
(
err
)
{
if
(
err
)
{
log
.
info
(
"
cloud replay replayid error:
"
+
err
);
log
.
info
(
"
cloud replay replayid error:
"
+
err
);
...
@@ -1097,7 +1093,7 @@
...
@@ -1097,7 +1093,7 @@
msg
:
4
,
msg
:
4
,
code
:
settings
.
version
code
:
settings
.
version
});
});
client
.
end
();
client
.
destroy
();
}
else
if
(
!
info
.
pass
.
length
&&
!
settings
.
modules
.
enable_random_duel
&&
!
settings
.
modules
.
enable_windbot
)
{
}
else
if
(
!
info
.
pass
.
length
&&
!
settings
.
modules
.
enable_random_duel
&&
!
settings
.
modules
.
enable_windbot
)
{
ygopro
.
stoc_die
(
client
,
"
房间名为空,请填写主机密码
"
);
ygopro
.
stoc_die
(
client
,
"
房间名为空,请填写主机密码
"
);
}
else
if
(
info
.
pass
.
length
&&
settings
.
modules
.
mycard_auth
&&
info
.
pass
.
slice
(
0
,
2
)
!==
'
AI
'
)
{
}
else
if
(
info
.
pass
.
length
&&
settings
.
modules
.
mycard_auth
&&
info
.
pass
.
slice
(
0
,
2
)
!==
'
AI
'
)
{
...
@@ -1225,36 +1221,36 @@
...
@@ -1225,36 +1221,36 @@
});
});
}
else
if
(
!
client
.
name
||
client
.
name
===
""
)
{
}
else
if
(
!
client
.
name
||
client
.
name
===
""
)
{
ygopro
.
stoc_die
(
client
,
"
请输入正确的用户名
"
);
ygopro
.
stoc_die
(
client
,
"
请输入正确的用户名
"
);
}
else
if
(
ROOM_connected_ip
[
client
.
remoteAddress
]
>
10
)
{
}
else
if
(
ROOM_connected_ip
[
client
.
ip
]
>
5
)
{
log
.
warn
(
"
MULTI LOGIN
"
,
client
.
name
,
client
.
remoteAddress
);
log
.
warn
(
"
MULTI LOGIN
"
,
client
.
name
,
client
.
ip
);
ygopro
.
stoc_die
(
client
,
"
同时开启的客户端数量过多
"
+
client
.
remoteAddress
);
ygopro
.
stoc_die
(
client
,
"
同时开启的客户端数量过多
"
+
client
.
ip
);
}
else
if
(
_
.
indexOf
(
settings
.
ban
.
banned_user
,
client
.
name
)
>
-
1
)
{
}
else
if
(
_
.
indexOf
(
settings
.
ban
.
banned_user
,
client
.
name
)
>
-
1
)
{
settings
.
ban
.
banned_ip
.
push
(
client
.
remoteAddress
);
settings
.
ban
.
banned_ip
.
push
(
client
.
ip
);
log
.
warn
(
"
BANNED USER LOGIN
"
,
client
.
name
,
client
.
remoteAddress
);
log
.
warn
(
"
BANNED USER LOGIN
"
,
client
.
name
,
client
.
ip
);
ygopro
.
stoc_die
(
client
,
"
您的账号已被封禁
"
);
ygopro
.
stoc_die
(
client
,
"
您的账号已被封禁
"
);
}
else
if
(
_
.
indexOf
(
settings
.
ban
.
banned_ip
,
client
.
remoteAddress
)
>
-
1
)
{
}
else
if
(
_
.
indexOf
(
settings
.
ban
.
banned_ip
,
client
.
ip
)
>
-
1
)
{
log
.
warn
(
"
BANNED IP LOGIN
"
,
client
.
name
,
client
.
remoteAddress
);
log
.
warn
(
"
BANNED IP LOGIN
"
,
client
.
name
,
client
.
ip
);
ygopro
.
stoc_die
(
client
,
"
您的账号已被封禁
"
);
ygopro
.
stoc_die
(
client
,
"
您的账号已被封禁
"
);
}
else
if
(
_
.
any
(
settings
.
ban
.
badword_level3
,
function
(
badword
)
{
}
else
if
(
_
.
any
(
settings
.
ban
.
badword_level3
,
function
(
badword
)
{
var
regexp
;
var
regexp
;
regexp
=
new
RegExp
(
badword
,
'
i
'
);
regexp
=
new
RegExp
(
badword
,
'
i
'
);
return
name
.
match
(
regexp
);
return
name
.
match
(
regexp
);
},
name
=
client
.
name
))
{
},
name
=
client
.
name
))
{
log
.
warn
(
"
BAD NAME LEVEL 3
"
,
client
.
name
,
client
.
remoteAddress
);
log
.
warn
(
"
BAD NAME LEVEL 3
"
,
client
.
name
,
client
.
ip
);
ygopro
.
stoc_die
(
client
,
"
您的用户名存在不适当的内容
"
);
ygopro
.
stoc_die
(
client
,
"
您的用户名存在不适当的内容
"
);
}
else
if
(
_
.
any
(
settings
.
ban
.
badword_level2
,
function
(
badword
)
{
}
else
if
(
_
.
any
(
settings
.
ban
.
badword_level2
,
function
(
badword
)
{
var
regexp
;
var
regexp
;
regexp
=
new
RegExp
(
badword
,
'
i
'
);
regexp
=
new
RegExp
(
badword
,
'
i
'
);
return
name
.
match
(
regexp
);
return
name
.
match
(
regexp
);
},
name
=
client
.
name
))
{
},
name
=
client
.
name
))
{
log
.
warn
(
"
BAD NAME LEVEL 2
"
,
client
.
name
,
client
.
remoteAddress
);
log
.
warn
(
"
BAD NAME LEVEL 2
"
,
client
.
name
,
client
.
ip
);
ygopro
.
stoc_die
(
client
,
"
您的用户名存在不适当的内容
"
);
ygopro
.
stoc_die
(
client
,
"
您的用户名存在不适当的内容
"
);
}
else
if
(
_
.
any
(
settings
.
ban
.
badword_level1
,
function
(
badword
)
{
}
else
if
(
_
.
any
(
settings
.
ban
.
badword_level1
,
function
(
badword
)
{
var
regexp
;
var
regexp
;
regexp
=
new
RegExp
(
badword
,
'
i
'
);
regexp
=
new
RegExp
(
badword
,
'
i
'
);
return
name
.
match
(
regexp
);
return
name
.
match
(
regexp
);
},
name
=
client
.
name
))
{
},
name
=
client
.
name
))
{
log
.
warn
(
"
BAD NAME LEVEL 1
"
,
client
.
name
,
client
.
remoteAddress
);
log
.
warn
(
"
BAD NAME LEVEL 1
"
,
client
.
name
,
client
.
ip
);
ygopro
.
stoc_die
(
client
,
"
您的用户名存在不适当的内容,请注意更改
"
);
ygopro
.
stoc_die
(
client
,
"
您的用户名存在不适当的内容,请注意更改
"
);
}
else
if
(
info
.
pass
.
length
&&
!
ROOM_validate
(
info
.
pass
))
{
}
else
if
(
info
.
pass
.
length
&&
!
ROOM_validate
(
info
.
pass
))
{
ygopro
.
stoc_die
(
client
,
"
房间密码不正确
"
);
ygopro
.
stoc_die
(
client
,
"
房间密码不正确
"
);
...
@@ -1267,7 +1263,7 @@
...
@@ -1267,7 +1263,7 @@
buffer
=
struct
.
buffer
;
buffer
=
struct
.
buffer
;
ygopro
.
stoc_send_chat
(
client
,
"
您的版本号过低,可能出现未知问题,电脑用户请升级版本,YGOMobile用户请等待作者更新
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
"
您的版本号过低,可能出现未知问题,电脑用户请升级版本,YGOMobile用户请等待作者更新
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
}
}
room
=
ROOM_find_or_create_by_name
(
info
.
pass
,
client
.
remoteAddress
);
room
=
ROOM_find_or_create_by_name
(
info
.
pass
,
client
.
ip
);
if
(
!
room
)
{
if
(
!
room
)
{
ygopro
.
stoc_die
(
client
,
"
服务器已经爆满,请稍候再试
"
);
ygopro
.
stoc_die
(
client
,
"
服务器已经爆满,请稍候再试
"
);
}
else
if
(
room
.
error
)
{
}
else
if
(
room
.
error
)
{
...
@@ -1470,7 +1466,7 @@
...
@@ -1470,7 +1466,7 @@
if
(
client
.
kick_count
>=
5
)
{
if
(
client
.
kick_count
>=
5
)
{
ygopro
.
stoc_send_chat_to_room
(
room
,
client
.
name
+
"
被系统请出了房间
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat_to_room
(
room
,
client
.
name
+
"
被系统请出了房间
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ROOM_ban_player
(
player
.
name
,
player
.
ip
,
"
挂房间
"
);
ROOM_ban_player
(
player
.
name
,
player
.
ip
,
"
挂房间
"
);
client
.
end
();
client
.
destroy
();
return
true
;
return
true
;
}
}
ygopro
.
stoc_send_chat_to_room
(
room
,
player
.
name
+
"
被请出了房间
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat_to_room
(
room
,
player
.
name
+
"
被请出了房间
"
,
ygopro
.
constants
.
COLORS
.
RED
);
...
@@ -1533,7 +1529,7 @@
...
@@ -1533,7 +1529,7 @@
if
(
player
&&
player
.
is_host
)
{
if
(
player
&&
player
.
is_host
)
{
ROOM_ban_player
(
player
.
name
,
player
.
ip
,
"
挂房间
"
);
ROOM_ban_player
(
player
.
name
,
player
.
ip
,
"
挂房间
"
);
ygopro
.
stoc_send_chat_to_room
(
room
,
player
.
name
+
"
被系统请出了房间
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat_to_room
(
room
,
player
.
name
+
"
被系统请出了房间
"
,
ygopro
.
constants
.
COLORS
.
RED
);
player
.
end
();
player
.
destroy
();
}
}
}
}
}
}
...
@@ -1625,7 +1621,7 @@
...
@@ -1625,7 +1621,7 @@
}
}
room
.
dueling_players
[
player
.
pos
]
=
player
;
room
.
dueling_players
[
player
.
pos
]
=
player
;
room
.
player_datas
.
push
({
room
.
player_datas
.
push
({
ip
:
player
.
remoteAddress
,
ip
:
player
.
ip
,
name
:
player
.
name
name
:
player
.
name
});
});
}
}
...
@@ -1689,7 +1685,7 @@
...
@@ -1689,7 +1685,7 @@
return
cancel
;
return
cancel
;
}
}
if
(
client
.
abuse_count
>=
5
)
{
if
(
client
.
abuse_count
>=
5
)
{
log
.
warn
(
"
BANNED CHAT
"
,
client
.
name
,
client
.
remoteAddress
,
msg
);
log
.
warn
(
"
BANNED CHAT
"
,
client
.
name
,
client
.
ip
,
msg
);
ygopro
.
stoc_send_chat
(
client
,
"
您已被禁言!
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat
(
client
,
"
您已被禁言!
"
,
ygopro
.
constants
.
COLORS
.
RED
);
return
true
;
return
true
;
}
}
...
@@ -1699,13 +1695,13 @@
...
@@ -1699,13 +1695,13 @@
regexp
=
new
RegExp
(
badword
,
'
i
'
);
regexp
=
new
RegExp
(
badword
,
'
i
'
);
return
msg
.
match
(
regexp
);
return
msg
.
match
(
regexp
);
},
msg
))
{
},
msg
))
{
log
.
warn
(
"
BAD WORD LEVEL 3
"
,
client
.
name
,
client
.
remoteAddress
,
oldmsg
);
log
.
warn
(
"
BAD WORD LEVEL 3
"
,
client
.
name
,
client
.
ip
,
oldmsg
);
cancel
=
true
;
cancel
=
true
;
if
(
client
.
abuse_count
>
0
)
{
if
(
client
.
abuse_count
>
0
)
{
ygopro
.
stoc_send_chat
(
client
,
"
您的发言存在严重不适当的内容,禁止您使用随机对战功能!
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat
(
client
,
"
您的发言存在严重不适当的内容,禁止您使用随机对战功能!
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ROOM_ban_player
(
client
.
name
,
client
.
ip
,
"
发言违规
"
);
ROOM_ban_player
(
client
.
name
,
client
.
ip
,
"
发言违规
"
);
ROOM_ban_player
(
client
.
name
,
client
.
ip
,
"
发言违规
"
,
3
);
ROOM_ban_player
(
client
.
name
,
client
.
ip
,
"
发言违规
"
,
3
);
client
.
end
();
client
.
destroy
();
return
true
;
return
true
;
}
else
{
}
else
{
client
.
abuse_count
=
client
.
abuse_count
+
4
;
client
.
abuse_count
=
client
.
abuse_count
+
4
;
...
@@ -1716,7 +1712,7 @@
...
@@ -1716,7 +1712,7 @@
regexp
=
new
RegExp
(
badword
,
'
i
'
);
regexp
=
new
RegExp
(
badword
,
'
i
'
);
return
msg
.
match
(
regexp
);
return
msg
.
match
(
regexp
);
},
msg
))
{
},
msg
))
{
log
.
warn
(
"
BAD WORD LEVEL 2
"
,
client
.
name
,
client
.
remoteAddress
,
oldmsg
);
log
.
warn
(
"
BAD WORD LEVEL 2
"
,
client
.
name
,
client
.
ip
,
oldmsg
);
client
.
abuse_count
=
client
.
abuse_count
+
3
;
client
.
abuse_count
=
client
.
abuse_count
+
3
;
ygopro
.
stoc_send_chat
(
client
,
"
您的发言存在不适当的内容,发送失败!
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat
(
client
,
"
您的发言存在不适当的内容,发送失败!
"
,
ygopro
.
constants
.
COLORS
.
RED
);
cancel
=
true
;
cancel
=
true
;
...
@@ -1727,7 +1723,7 @@
...
@@ -1727,7 +1723,7 @@
msg
=
msg
.
replace
(
regexp
,
"
**
"
);
msg
=
msg
.
replace
(
regexp
,
"
**
"
);
},
msg
);
},
msg
);
if
(
oldmsg
!==
msg
)
{
if
(
oldmsg
!==
msg
)
{
log
.
warn
(
"
BAD WORD LEVEL 1
"
,
client
.
name
,
client
.
remoteAddress
,
oldmsg
);
log
.
warn
(
"
BAD WORD LEVEL 1
"
,
client
.
name
,
client
.
ip
,
oldmsg
);
client
.
abuse_count
=
client
.
abuse_count
+
1
;
client
.
abuse_count
=
client
.
abuse_count
+
1
;
ygopro
.
stoc_send_chat
(
client
,
"
请使用文明用语!
"
);
ygopro
.
stoc_send_chat
(
client
,
"
请使用文明用语!
"
);
struct
=
ygopro
.
structs
[
"
chat
"
];
struct
=
ygopro
.
structs
[
"
chat
"
];
...
@@ -1739,7 +1735,7 @@
...
@@ -1739,7 +1735,7 @@
regexp
=
new
RegExp
(
badword
,
'
i
'
);
regexp
=
new
RegExp
(
badword
,
'
i
'
);
return
msg
.
match
(
regexp
);
return
msg
.
match
(
regexp
);
},
msg
))
{
},
msg
))
{
log
.
info
(
"
BAD WORD LEVEL 0
"
,
client
.
name
,
client
.
remoteAddress
,
oldmsg
);
log
.
info
(
"
BAD WORD LEVEL 0
"
,
client
.
name
,
client
.
ip
,
oldmsg
);
}
}
}
}
if
(
client
.
abuse_count
>=
5
)
{
if
(
client
.
abuse_count
>=
5
)
{
...
@@ -1951,7 +1947,7 @@
...
@@ -1951,7 +1947,7 @@
room
.
last_active_time
=
moment
();
room
.
last_active_time
=
moment
();
ROOM_ban_player
(
room
.
waiting_for_player
.
name
,
room
.
waiting_for_player
.
ip
,
"
挂机
"
);
ROOM_ban_player
(
room
.
waiting_for_player
.
name
,
room
.
waiting_for_player
.
ip
,
"
挂机
"
);
ygopro
.
stoc_send_chat_to_room
(
room
,
room
.
waiting_for_player
.
name
+
"
被系统请出了房间
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat_to_room
(
room
,
room
.
waiting_for_player
.
name
+
"
被系统请出了房间
"
,
ygopro
.
constants
.
COLORS
.
RED
);
room
.
waiting_for_player
.
server
.
end
();
room
.
waiting_for_player
.
server
.
destroy
();
}
else
if
(
time_passed
>=
(
settings
.
modules
.
hang_timeout
-
20
)
&&
!
(
time_passed
%
10
))
{
}
else
if
(
time_passed
>=
(
settings
.
modules
.
hang_timeout
-
20
)
&&
!
(
time_passed
%
10
))
{
ygopro
.
stoc_send_chat_to_room
(
room
,
room
.
waiting_for_player
.
name
+
"
已经很久没有操作了,若继续挂机,将于
"
+
(
settings
.
modules
.
hang_timeout
-
time_passed
)
+
"
秒后被请出房间
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat_to_room
(
room
,
room
.
waiting_for_player
.
name
+
"
已经很久没有操作了,若继续挂机,将于
"
+
(
settings
.
modules
.
hang_timeout
-
time_passed
)
+
"
秒后被请出房间
"
,
ygopro
.
constants
.
COLORS
.
RED
);
}
}
...
...
ygopro.coffee
View file @
ce5b7b96
...
@@ -158,5 +158,5 @@ for name, declaration of structs_declaration
...
@@ -158,5 +158,5 @@ for name, declaration of structs_declaration
msg
:
1
msg
:
1
code
:
2
code
:
2
}
if
client
}
if
client
client
.
end
()
if
client
client
.
destroy
()
if
client
return
return
\ No newline at end of file
ygopro.js
View file @
ce5b7b96
...
@@ -254,7 +254,7 @@
...
@@ -254,7 +254,7 @@
});
});
}
}
if
(
client
)
{
if
(
client
)
{
client
.
end
();
client
.
destroy
();
}
}
};
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment