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
2396832c
Commit
2396832c
authored
Jan 09, 2017
by
mercury233
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
54f06e4d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
82 additions
and
132 deletions
+82
-132
ygopro-server.coffee
ygopro-server.coffee
+2
-25
ygopro-server.js
ygopro-server.js
+80
-107
No files found.
ygopro-server.coffee
View file @
2396832c
...
@@ -144,25 +144,6 @@ get_memory_usage = ()->
...
@@ -144,25 +144,6 @@ get_memory_usage = ()->
percentUsed
=
0
percentUsed
=
0
return
percentUsed
return
percentUsed
# 定时清理关闭的连接
# the server write data directly to the socket object
# so this is a dumb way to clean data
Graveyard
=
[]
tribute
=
(
socket
)
->
setTimeout
((
socket
)
->
Graveyard
.
push
(
socket
);
return
),
3000
,
socket
return
setInterval
()
->
for
fuck
,
i
in
Graveyard
Graveyard
[
i
].
destroy
()
if
Graveyard
[
i
]
for
you
,
j
in
Graveyard
[
i
]
Graveyard
[
i
][
j
]
=
null
Graveyard
[
i
]
=
null
Graveyard
=
[]
return
,
3000
Cloud_replay_ids
=
[]
Cloud_replay_ids
=
[]
ROOM_all
=
[]
ROOM_all
=
[]
...
@@ -608,7 +589,6 @@ net.createServer (client) ->
...
@@ -608,7 +589,6 @@ net.createServer (client) ->
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]
#log.info "disconnect", client.ip, ROOM_connected_ip[client.ip]
#tribute(client)
unless
client
.
closed
unless
client
.
closed
client
.
closed
=
true
client
.
closed
=
true
room
.
disconnect
(
client
)
if
room
room
.
disconnect
(
client
)
if
room
...
@@ -623,7 +603,6 @@ net.createServer (client) ->
...
@@ -623,7 +603,6 @@ net.createServer (client) ->
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]
#log.info "err disconnect", client.ip, ROOM_connected_ip[client.ip]
#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
...
@@ -638,7 +617,6 @@ net.createServer (client) ->
...
@@ -638,7 +617,6 @@ net.createServer (client) ->
#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]
#log.info "server close", client.ip, ROOM_connected_ip[client.ip]
#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
...
@@ -650,7 +628,6 @@ net.createServer (client) ->
...
@@ -650,7 +628,6 @@ net.createServer (client) ->
#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]
#log.info "server err close", client.ip, ROOM_connected_ip[client.ip]
#tribute(server)
room
.
disconnector
=
'server'
if
room
room
.
disconnector
=
'server'
if
room
server
.
closed
=
error
server
.
closed
=
error
unless
client
.
closed
unless
client
.
closed
...
@@ -1370,8 +1347,8 @@ ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server)->
...
@@ -1370,8 +1347,8 @@ ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server)->
else
else
if
response
.
statusCode
!=
200
if
response
.
statusCode
!=
200
log
.
warn
'DECK POST FAIL'
,
response
.
statusCode
,
client
.
name
,
body
log
.
warn
'DECK POST FAIL'
,
response
.
statusCode
,
client
.
name
,
body
else
#
else
log
.
info
'DECK POST OK'
,
response
.
statusCode
,
client
.
name
,
body
#
log.info 'DECK POST OK', response.statusCode, client.name, body
return
return
client
.
deck_saved
=
true
client
.
deck_saved
=
true
return
return
...
...
ygopro-server.js
View file @
2396832c
// Generated by CoffeeScript 1.12.1
// Generated by CoffeeScript 1.12.1
(
function
()
{
(
function
()
{
var
Cloud_replay_ids
,
Graveyard
,
ROOM_all
,
ROOM_bad_ip
,
ROOM_ban_player
,
ROOM_connected_ip
,
ROOM_find_by_name
,
ROOM_find_by_port
,
ROOM_find_or_create_ai
,
ROOM_find_or_create_by_name
,
ROOM_find_or_create_random
,
ROOM_players_banned
,
ROOM_players_oppentlist
,
ROOM_validate
,
Room
,
_
,
addCallback
,
ban_user
,
bunyan
,
cppversion
,
crypto
,
date
,
defaultconfig
,
execFile
,
fs
,
get_memory_usage
,
http
,
http_server
,
https
,
https_server
,
list
,
load_dialogues
,
load_tips
,
log
,
moment
,
nconf
,
net
,
options
,
os
,
path
,
pgClient
,
pg_client
,
pg_query
,
redis
,
redisdb
,
request
,
requestListener
,
roomlist
,
settings
,
spawn
,
spawnSync
,
tribute
,
url
,
users_cache
,
wait_room_start
,
windbot_process
,
ygopro
,
zlib
;
var
Cloud_replay_ids
,
ROOM_all
,
ROOM_bad_ip
,
ROOM_ban_player
,
ROOM_connected_ip
,
ROOM_find_by_name
,
ROOM_find_by_port
,
ROOM_find_or_create_ai
,
ROOM_find_or_create_by_name
,
ROOM_find_or_create_random
,
ROOM_players_banned
,
ROOM_players_oppentlist
,
ROOM_validate
,
Room
,
_
,
addCallback
,
ban_user
,
bunyan
,
cppversion
,
crypto
,
date
,
defaultconfig
,
execFile
,
fs
,
get_memory_usage
,
http
,
http_server
,
https
,
https_server
,
list
,
load_dialogues
,
load_tips
,
log
,
moment
,
nconf
,
net
,
options
,
os
,
path
,
pgClient
,
pg_client
,
pg_query
,
redis
,
redisdb
,
request
,
requestListener
,
roomlist
,
settings
,
spawn
,
spawnSync
,
url
,
users_cache
,
wait_room_start
,
windbot_process
,
ygopro
,
zlib
;
net
=
require
(
'
net
'
);
net
=
require
(
'
net
'
);
...
@@ -88,16 +88,16 @@
...
@@ -88,16 +88,16 @@
};
};
ban_user
=
function
(
name
)
{
ban_user
=
function
(
name
)
{
var
bad_ip
,
k
,
l
,
len
,
len1
,
player
,
ref
,
room
;
var
bad_ip
,
j
,
k
,
len
,
len1
,
player
,
ref
,
room
;
settings
.
ban
.
banned_user
.
push
(
name
);
settings
.
ban
.
banned_user
.
push
(
name
);
nconf
.
myset
(
settings
,
"
ban:banned_user
"
,
settings
.
ban
.
banned_user
);
nconf
.
myset
(
settings
,
"
ban:banned_user
"
,
settings
.
ban
.
banned_user
);
bad_ip
=
0
;
bad_ip
=
0
;
for
(
k
=
0
,
len
=
ROOM_all
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ROOM_all
.
length
;
j
<
len
;
j
++
)
{
room
=
ROOM_all
[
k
];
room
=
ROOM_all
[
j
];
if
(
room
&&
room
.
established
)
{
if
(
room
&&
room
.
established
)
{
ref
=
room
.
players
;
ref
=
room
.
players
;
for
(
l
=
0
,
len1
=
ref
.
length
;
l
<
len1
;
l
++
)
{
for
(
k
=
0
,
len1
=
ref
.
length
;
k
<
len1
;
k
++
)
{
player
=
ref
[
l
];
player
=
ref
[
k
];
if
(
player
&&
(
player
.
name
===
name
||
player
.
ip
===
bad_ip
))
{
if
(
player
&&
(
player
.
name
===
name
||
player
.
ip
===
bad_ip
))
{
bad_ip
=
player
.
ip
;
bad_ip
=
player
.
ip
;
ROOM_bad_ip
[
bad_ip
]
=
99
;
ROOM_bad_ip
[
bad_ip
]
=
99
;
...
@@ -120,11 +120,11 @@
...
@@ -120,11 +120,11 @@
}
}
settings
.
lflist
=
(
function
()
{
settings
.
lflist
=
(
function
()
{
var
k
,
len
,
ref
,
results
;
var
j
,
len
,
ref
,
results
;
ref
=
fs
.
readFileSync
(
'
ygopro/lflist.conf
'
,
'
utf8
'
).
match
(
/!.*/g
);
ref
=
fs
.
readFileSync
(
'
ygopro/lflist.conf
'
,
'
utf8
'
).
match
(
/!.*/g
);
results
=
[];
results
=
[];
for
(
k
=
0
,
len
=
ref
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ref
.
length
;
j
<
len
;
j
++
)
{
list
=
ref
[
k
];
list
=
ref
[
j
];
date
=
list
.
match
(
/!
([\d\.]
+
)
/
);
date
=
list
.
match
(
/!
([\d\.]
+
)
/
);
if
(
!
date
)
{
if
(
!
date
)
{
continue
;
continue
;
...
@@ -194,31 +194,6 @@
...
@@ -194,31 +194,6 @@
return
percentUsed
;
return
percentUsed
;
};
};
Graveyard
=
[];
tribute
=
function
(
socket
)
{
setTimeout
((
function
(
socket
)
{
Graveyard
.
push
(
socket
);
}),
3000
,
socket
);
};
setInterval
(
function
()
{
var
fuck
,
i
,
j
,
k
,
l
,
len
,
len1
,
ref
,
you
;
for
(
i
=
k
=
0
,
len
=
Graveyard
.
length
;
k
<
len
;
i
=
++
k
)
{
fuck
=
Graveyard
[
i
];
if
(
Graveyard
[
i
])
{
Graveyard
[
i
].
destroy
();
}
ref
=
Graveyard
[
i
];
for
(
j
=
l
=
0
,
len1
=
ref
.
length
;
l
<
len1
;
j
=
++
l
)
{
you
=
ref
[
j
];
Graveyard
[
i
][
j
]
=
null
;
}
Graveyard
[
i
]
=
null
;
}
Graveyard
=
[];
},
3000
);
Cloud_replay_ids
=
[];
Cloud_replay_ids
=
[];
ROOM_all
=
[];
ROOM_all
=
[];
...
@@ -556,10 +531,10 @@
...
@@ -556,10 +531,10 @@
_this
.
port
=
parseInt
(
data
);
_this
.
port
=
parseInt
(
data
);
_
.
each
(
_this
.
players
,
function
(
player
)
{
_
.
each
(
_this
.
players
,
function
(
player
)
{
player
.
server
.
connect
(
_this
.
port
,
'
127.0.0.1
'
,
function
()
{
player
.
server
.
connect
(
_this
.
port
,
'
127.0.0.1
'
,
function
()
{
var
buffer
,
k
,
len
,
ref
;
var
buffer
,
j
,
len
,
ref
;
ref
=
player
.
pre_establish_buffers
;
ref
=
player
.
pre_establish_buffers
;
for
(
k
=
0
,
len
=
ref
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ref
.
length
;
j
<
len
;
j
++
)
{
buffer
=
ref
[
k
];
buffer
=
ref
[
j
];
player
.
server
.
write
(
buffer
);
player
.
server
.
write
(
buffer
);
}
}
player
.
established
=
true
;
player
.
established
=
true
;
...
@@ -736,10 +711,10 @@
...
@@ -736,10 +711,10 @@
roomlist
.
update
(
this
);
roomlist
.
update
(
this
);
}
}
client
.
server
.
connect
(
this
.
port
,
'
127.0.0.1
'
,
function
()
{
client
.
server
.
connect
(
this
.
port
,
'
127.0.0.1
'
,
function
()
{
var
buffer
,
k
,
len
,
ref
;
var
buffer
,
j
,
len
,
ref
;
ref
=
client
.
pre_establish_buffers
;
ref
=
client
.
pre_establish_buffers
;
for
(
k
=
0
,
len
=
ref
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ref
.
length
;
j
<
len
;
j
++
)
{
buffer
=
ref
[
k
];
buffer
=
ref
[
j
];
client
.
server
.
write
(
buffer
);
client
.
server
.
write
(
buffer
);
}
}
client
.
established
=
true
;
client
.
established
=
true
;
...
@@ -886,7 +861,7 @@
...
@@ -886,7 +861,7 @@
}
}
client
.
pre_establish_buffers
=
new
Array
();
client
.
pre_establish_buffers
=
new
Array
();
client
.
on
(
'
data
'
,
function
(
ctos_buffer
)
{
client
.
on
(
'
data
'
,
function
(
ctos_buffer
)
{
var
b
,
bad_ip_count
,
buffer
,
cancel
,
ctos_message_length
,
ctos_proto
,
datas
,
k
,
l
,
len
,
len1
,
looplimit
,
room
,
struct
;
var
b
,
bad_ip_count
,
buffer
,
cancel
,
ctos_message_length
,
ctos_proto
,
datas
,
j
,
k
,
len
,
len1
,
looplimit
,
room
,
struct
;
if
(
client
.
is_post_watcher
)
{
if
(
client
.
is_post_watcher
)
{
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
room
)
{
if
(
room
)
{
...
@@ -957,20 +932,20 @@
...
@@ -957,20 +932,20 @@
}
}
}
}
if
(
client
.
established
)
{
if
(
client
.
established
)
{
for
(
k
=
0
,
len
=
datas
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
datas
.
length
;
j
<
len
;
j
++
)
{
buffer
=
datas
[
k
];
buffer
=
datas
[
j
];
server
.
write
(
buffer
);
server
.
write
(
buffer
);
}
}
}
else
{
}
else
{
for
(
l
=
0
,
len1
=
datas
.
length
;
l
<
len1
;
l
++
)
{
for
(
k
=
0
,
len1
=
datas
.
length
;
k
<
len1
;
k
++
)
{
buffer
=
datas
[
l
];
buffer
=
datas
[
k
];
client
.
pre_establish_buffers
.
push
(
buffer
);
client
.
pre_establish_buffers
.
push
(
buffer
);
}
}
}
}
}
}
});
});
server
.
on
(
'
data
'
,
function
(
stoc_buffer
)
{
server
.
on
(
'
data
'
,
function
(
stoc_buffer
)
{
var
b
,
buffer
,
cancel
,
datas
,
k
,
len
,
looplimit
,
stanzas
,
stoc_message_length
,
stoc_proto
,
struct
;
var
b
,
buffer
,
cancel
,
datas
,
j
,
len
,
looplimit
,
stanzas
,
stoc_message_length
,
stoc_proto
,
struct
;
stoc_message_length
=
0
;
stoc_message_length
=
0
;
stoc_proto
=
0
;
stoc_proto
=
0
;
datas
=
[];
datas
=
[];
...
@@ -1031,8 +1006,8 @@
...
@@ -1031,8 +1006,8 @@
break
;
break
;
}
}
}
}
for
(
k
=
0
,
len
=
datas
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
datas
.
length
;
j
<
len
;
j
++
)
{
buffer
=
datas
[
k
];
buffer
=
datas
[
j
];
client
.
write
(
buffer
);
client
.
write
(
buffer
);
}
}
});
});
...
@@ -1064,7 +1039,7 @@
...
@@ -1064,7 +1039,7 @@
});
});
ygopro
.
ctos_follow
(
'
JOIN_GAME
'
,
false
,
function
(
buffer
,
info
,
client
,
server
)
{
ygopro
.
ctos_follow
(
'
JOIN_GAME
'
,
false
,
function
(
buffer
,
info
,
client
,
server
)
{
var
check
,
decrypted_buffer
,
finish
,
i
,
id
,
k
,
l
,
len
,
len1
,
name
,
ref
,
ref1
,
replay_id
,
room
,
secret
,
struct
;
var
check
,
decrypted_buffer
,
finish
,
i
,
id
,
j
,
k
,
len
,
len1
,
name
,
ref
,
ref1
,
replay_id
,
room
,
secret
,
struct
;
if
(
settings
.
modules
.
stop
)
{
if
(
settings
.
modules
.
stop
)
{
ygopro
.
stoc_die
(
client
,
settings
.
modules
.
stop
);
ygopro
.
stoc_die
(
client
,
settings
.
modules
.
stop
);
}
else
if
(
info
.
pass
.
toUpperCase
()
===
"
R
"
&&
settings
.
modules
.
cloud_replay
.
enabled
)
{
}
else
if
(
info
.
pass
.
toUpperCase
()
===
"
R
"
&&
settings
.
modules
.
cloud_replay
.
enabled
)
{
...
@@ -1131,9 +1106,9 @@
...
@@ -1131,9 +1106,9 @@
return
;
return
;
}
}
check
=
function
(
buf
)
{
check
=
function
(
buf
)
{
var
checksum
,
i
,
k
,
ref
;
var
checksum
,
i
,
j
,
ref
;
checksum
=
0
;
checksum
=
0
;
for
(
i
=
k
=
0
,
ref
=
buf
.
length
;
0
<=
ref
?
k
<
ref
:
k
>
ref
;
i
=
0
<=
ref
?
++
k
:
--
k
)
{
for
(
i
=
j
=
0
,
ref
=
buf
.
length
;
0
<=
ref
?
j
<
ref
:
j
>
ref
;
i
=
0
<=
ref
?
++
j
:
--
j
)
{
checksum
+=
buf
.
readUInt8
(
i
);
checksum
+=
buf
.
readUInt8
(
i
);
}
}
return
(
checksum
&
0xFF
)
===
0
;
return
(
checksum
&
0xFF
)
===
0
;
...
@@ -1206,8 +1181,8 @@
...
@@ -1206,8 +1181,8 @@
secret
=
id
%
65535
+
1
;
secret
=
id
%
65535
+
1
;
decrypted_buffer
=
new
Buffer
(
6
);
decrypted_buffer
=
new
Buffer
(
6
);
ref
=
[
0
,
2
,
4
];
ref
=
[
0
,
2
,
4
];
for
(
k
=
0
,
len
=
ref
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ref
.
length
;
j
<
len
;
j
++
)
{
i
=
ref
[
k
];
i
=
ref
[
j
];
decrypted_buffer
.
writeUInt16LE
(
buffer
.
readUInt16LE
(
i
)
^
secret
,
i
);
decrypted_buffer
.
writeUInt16LE
(
buffer
.
readUInt16LE
(
i
)
^
secret
,
i
);
}
}
if
(
check
(
decrypted_buffer
))
{
if
(
check
(
decrypted_buffer
))
{
...
@@ -1224,13 +1199,13 @@
...
@@ -1224,13 +1199,13 @@
},
},
json
:
true
json
:
true
},
function
(
error
,
response
,
body
)
{
},
function
(
error
,
response
,
body
)
{
var
l
,
len1
,
ref1
;
var
k
,
len1
,
ref1
;
if
(
body
&&
body
.
user
)
{
if
(
body
&&
body
.
user
)
{
secret
=
body
.
user
.
id
%
65535
+
1
;
secret
=
body
.
user
.
id
%
65535
+
1
;
decrypted_buffer
=
new
Buffer
(
6
);
decrypted_buffer
=
new
Buffer
(
6
);
ref1
=
[
0
,
2
,
4
];
ref1
=
[
0
,
2
,
4
];
for
(
l
=
0
,
len1
=
ref1
.
length
;
l
<
len1
;
l
++
)
{
for
(
k
=
0
,
len1
=
ref1
.
length
;
k
<
len1
;
k
++
)
{
i
=
ref1
[
l
];
i
=
ref1
[
k
];
decrypted_buffer
.
writeUInt16LE
(
buffer
.
readUInt16LE
(
i
)
^
secret
,
i
);
decrypted_buffer
.
writeUInt16LE
(
buffer
.
readUInt16LE
(
i
)
^
secret
,
i
);
}
}
if
(
check
(
decrypted_buffer
))
{
if
(
check
(
decrypted_buffer
))
{
...
@@ -1301,8 +1276,8 @@
...
@@ -1301,8 +1276,8 @@
room
.
watchers
.
push
(
client
);
room
.
watchers
.
push
(
client
);
ygopro
.
stoc_send_chat
(
client
,
"
观战中
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
"
观战中
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ref1
=
room
.
watcher_buffers
;
ref1
=
room
.
watcher_buffers
;
for
(
l
=
0
,
len1
=
ref1
.
length
;
l
<
len1
;
l
++
)
{
for
(
k
=
0
,
len1
=
ref1
.
length
;
k
<
len1
;
k
++
)
{
buffer
=
ref1
[
l
];
buffer
=
ref1
[
k
];
client
.
write
(
buffer
);
client
.
write
(
buffer
);
}
}
}
else
{
}
else
{
...
@@ -1380,15 +1355,15 @@
...
@@ -1380,15 +1355,15 @@
ygopro
.
ctos_send
(
watcher
,
'
HS_TOOBSERVER
'
);
ygopro
.
ctos_send
(
watcher
,
'
HS_TOOBSERVER
'
);
});
});
watcher
.
on
(
'
data
'
,
function
(
data
)
{
watcher
.
on
(
'
data
'
,
function
(
data
)
{
var
k
,
len
,
ref
,
w
;
var
j
,
len
,
ref
,
w
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
room
)
{
if
(
!
room
)
{
return
;
return
;
}
}
room
.
watcher_buffers
.
push
(
data
);
room
.
watcher_buffers
.
push
(
data
);
ref
=
room
.
watchers
;
ref
=
room
.
watchers
;
for
(
k
=
0
,
len
=
ref
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ref
.
length
;
j
<
len
;
j
++
)
{
w
=
ref
[
k
];
w
=
ref
[
j
];
if
(
w
)
{
if
(
w
)
{
w
.
write
(
data
);
w
.
write
(
data
);
}
}
...
@@ -1419,7 +1394,7 @@
...
@@ -1419,7 +1394,7 @@
}
}
ygopro
.
stoc_follow
(
'
GAME_MSG
'
,
false
,
function
(
buffer
,
info
,
client
,
server
)
{
ygopro
.
stoc_follow
(
'
GAME_MSG
'
,
false
,
function
(
buffer
,
info
,
client
,
server
)
{
var
card
,
k
,
len
,
line
,
msg
,
playertype
,
pos
,
reason
,
ref
,
ref1
,
ref2
,
room
,
val
;
var
card
,
j
,
len
,
line
,
msg
,
playertype
,
pos
,
reason
,
ref
,
ref1
,
ref2
,
room
,
val
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
room
)
{
if
(
!
room
)
{
return
;
return
;
...
@@ -1489,8 +1464,8 @@
...
@@ -1489,8 +1464,8 @@
card
=
buffer
.
readUInt32LE
(
1
);
card
=
buffer
.
readUInt32LE
(
1
);
if
(
settings
.
dialogues
[
card
])
{
if
(
settings
.
dialogues
[
card
])
{
ref2
=
_
.
lines
(
settings
.
dialogues
[
card
][
Math
.
floor
(
Math
.
random
()
*
settings
.
dialogues
[
card
].
length
)]);
ref2
=
_
.
lines
(
settings
.
dialogues
[
card
][
Math
.
floor
(
Math
.
random
()
*
settings
.
dialogues
[
card
].
length
)]);
for
(
k
=
0
,
len
=
ref2
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ref2
.
length
;
j
<
len
;
j
++
)
{
line
=
ref2
[
k
];
line
=
ref2
[
j
];
ygopro
.
stoc_send_chat
(
client
,
line
,
ygopro
.
constants
.
COLORS
.
PINK
);
ygopro
.
stoc_send_chat
(
client
,
line
,
ygopro
.
constants
.
COLORS
.
PINK
);
}
}
}
}
...
@@ -1499,14 +1474,14 @@
...
@@ -1499,14 +1474,14 @@
});
});
ygopro
.
ctos_follow
(
'
HS_KICK
'
,
true
,
function
(
buffer
,
info
,
client
,
server
)
{
ygopro
.
ctos_follow
(
'
HS_KICK
'
,
true
,
function
(
buffer
,
info
,
client
,
server
)
{
var
k
,
len
,
player
,
ref
,
room
;
var
j
,
len
,
player
,
ref
,
room
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
room
)
{
if
(
!
room
)
{
return
;
return
;
}
}
ref
=
room
.
players
;
ref
=
room
.
players
;
for
(
k
=
0
,
len
=
ref
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ref
.
length
;
j
<
len
;
j
++
)
{
player
=
ref
[
k
];
player
=
ref
[
j
];
if
(
player
&&
player
.
pos
===
info
.
pos
&&
player
!==
client
)
{
if
(
player
&&
player
.
pos
===
info
.
pos
&&
player
!==
client
)
{
client
.
kick_count
=
client
.
kick_count
?
client
.
kick_count
+
1
:
1
;
client
.
kick_count
=
client
.
kick_count
?
client
.
kick_count
+
1
:
1
;
if
(
client
.
kick_count
>=
5
)
{
if
(
client
.
kick_count
>=
5
)
{
...
@@ -1530,7 +1505,7 @@
...
@@ -1530,7 +1505,7 @@
});
});
ygopro
.
stoc_follow
(
'
HS_PLAYER_CHANGE
'
,
false
,
function
(
buffer
,
info
,
client
,
server
)
{
ygopro
.
stoc_follow
(
'
HS_PLAYER_CHANGE
'
,
false
,
function
(
buffer
,
info
,
client
,
server
)
{
var
is_ready
,
k
,
len
,
player
,
pos
,
ref
,
room
;
var
is_ready
,
j
,
len
,
player
,
pos
,
ref
,
room
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
(
room
&&
room
.
max_player
&&
client
.
is_host
))
{
if
(
!
(
room
&&
room
.
max_player
&&
client
.
is_host
))
{
return
;
return
;
...
@@ -1540,8 +1515,8 @@
...
@@ -1540,8 +1515,8 @@
if
(
pos
<
room
.
max_player
)
{
if
(
pos
<
room
.
max_player
)
{
room
.
ready_player_count_without_host
=
0
;
room
.
ready_player_count_without_host
=
0
;
ref
=
room
.
players
;
ref
=
room
.
players
;
for
(
k
=
0
,
len
=
ref
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ref
.
length
;
j
<
len
;
j
++
)
{
player
=
ref
[
k
];
player
=
ref
[
j
];
if
(
player
.
pos
===
pos
)
{
if
(
player
.
pos
===
pos
)
{
player
.
is_ready
=
is_ready
;
player
.
is_ready
=
is_ready
;
}
}
...
@@ -1558,7 +1533,7 @@
...
@@ -1558,7 +1533,7 @@
});
});
wait_room_start
=
function
(
room
,
time
)
{
wait_room_start
=
function
(
room
,
time
)
{
var
k
,
len
,
player
,
ref
;
var
j
,
len
,
player
,
ref
;
if
(
!
(
!
room
||
room
.
started
||
room
.
ready_player_count_without_host
<
room
.
max_player
-
1
))
{
if
(
!
(
!
room
||
room
.
started
||
room
.
ready_player_count_without_host
<
room
.
max_player
-
1
))
{
time
-=
1
;
time
-=
1
;
if
(
time
)
{
if
(
time
)
{
...
@@ -1570,8 +1545,8 @@
...
@@ -1570,8 +1545,8 @@
}),
1000
);
}),
1000
);
}
else
{
}
else
{
ref
=
room
.
players
;
ref
=
room
.
players
;
for
(
k
=
0
,
len
=
ref
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ref
.
length
;
j
<
len
;
j
++
)
{
player
=
ref
[
k
];
player
=
ref
[
j
];
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
);
...
@@ -1613,9 +1588,9 @@
...
@@ -1613,9 +1588,9 @@
if
(
settings
.
modules
.
tips
.
get
)
{
if
(
settings
.
modules
.
tips
.
get
)
{
load_tips
();
load_tips
();
setInterval
(
function
()
{
setInterval
(
function
()
{
var
k
,
len
,
room
;
var
j
,
len
,
room
;
for
(
k
=
0
,
len
=
ROOM_all
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ROOM_all
.
length
;
j
<
len
;
j
++
)
{
room
=
ROOM_all
[
k
];
room
=
ROOM_all
[
j
];
if
(
room
&&
room
.
established
)
{
if
(
room
&&
room
.
established
)
{
if
(
!
(
room
&&
room
.
started
))
{
if
(
!
(
room
&&
room
.
started
))
{
ygopro
.
stoc_send_random_tip_to_room
(
room
);
ygopro
.
stoc_send_random_tip_to_room
(
room
);
...
@@ -1626,7 +1601,7 @@
...
@@ -1626,7 +1601,7 @@
}
}
ygopro
.
stoc_follow
(
'
DUEL_START
'
,
false
,
function
(
buffer
,
info
,
client
,
server
)
{
ygopro
.
stoc_follow
(
'
DUEL_START
'
,
false
,
function
(
buffer
,
info
,
client
,
server
)
{
var
deck_name
,
deck_text
,
k
,
len
,
player
,
ref
,
room
;
var
deck_name
,
deck_text
,
j
,
len
,
player
,
ref
,
room
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
room
)
{
if
(
!
room
)
{
return
;
return
;
...
@@ -1639,8 +1614,8 @@
...
@@ -1639,8 +1614,8 @@
}
}
room
.
dueling_players
=
[];
room
.
dueling_players
=
[];
ref
=
room
.
players
;
ref
=
room
.
players
;
for
(
k
=
0
,
len
=
ref
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ref
.
length
;
j
<
len
;
j
++
)
{
player
=
ref
[
k
];
player
=
ref
[
j
];
if
(
!
(
player
.
pos
!==
7
))
{
if
(
!
(
player
.
pos
!==
7
))
{
continue
;
continue
;
}
}
...
@@ -1680,8 +1655,6 @@
...
@@ -1680,8 +1655,6 @@
}
else
{
}
else
{
if
(
response
.
statusCode
!==
200
)
{
if
(
response
.
statusCode
!==
200
)
{
log
.
warn
(
'
DECK POST FAIL
'
,
response
.
statusCode
,
client
.
name
,
body
);
log
.
warn
(
'
DECK POST FAIL
'
,
response
.
statusCode
,
client
.
name
,
body
);
}
else
{
log
.
info
(
'
DECK POST OK
'
,
response
.
statusCode
,
client
.
name
,
body
);
}
}
}
}
});
});
...
@@ -1823,23 +1796,23 @@
...
@@ -1823,23 +1796,23 @@
});
});
ygopro
.
ctos_follow
(
'
UPDATE_DECK
'
,
true
,
function
(
buffer
,
info
,
client
,
server
)
{
ygopro
.
ctos_follow
(
'
UPDATE_DECK
'
,
true
,
function
(
buffer
,
info
,
client
,
server
)
{
var
buff_main
,
buff_side
,
card
,
current_deck
,
deck
,
deck_array
,
deck_main
,
deck_side
,
deck_text
,
deckbuf
,
decks
,
found_deck
,
i
,
k
,
l
,
len
,
len1
,
line
,
room
,
struct
;
var
buff_main
,
buff_side
,
card
,
current_deck
,
deck
,
deck_array
,
deck_main
,
deck_side
,
deck_text
,
deckbuf
,
decks
,
found_deck
,
i
,
j
,
k
,
len
,
len1
,
line
,
room
,
struct
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
room
)
{
if
(
!
room
)
{
return
false
;
return
false
;
}
}
buff_main
=
(
function
()
{
buff_main
=
(
function
()
{
var
k
,
ref
,
results
;
var
j
,
ref
,
results
;
results
=
[];
results
=
[];
for
(
i
=
k
=
0
,
ref
=
info
.
mainc
;
0
<=
ref
?
k
<
ref
:
k
>
ref
;
i
=
0
<=
ref
?
++
k
:
--
k
)
{
for
(
i
=
j
=
0
,
ref
=
info
.
mainc
;
0
<=
ref
?
j
<
ref
:
j
>
ref
;
i
=
0
<=
ref
?
++
j
:
--
j
)
{
results
.
push
(
info
.
deckbuf
[
i
]);
results
.
push
(
info
.
deckbuf
[
i
]);
}
}
return
results
;
return
results
;
})();
})();
buff_side
=
(
function
()
{
buff_side
=
(
function
()
{
var
k
,
ref
,
ref1
,
results
;
var
j
,
ref
,
ref1
,
results
;
results
=
[];
results
=
[];
for
(
i
=
k
=
ref
=
info
.
mainc
,
ref1
=
info
.
mainc
+
info
.
sidec
;
ref
<=
ref1
?
k
<
ref1
:
k
>
ref1
;
i
=
ref
<=
ref1
?
++
k
:
--
k
)
{
for
(
i
=
j
=
ref
=
info
.
mainc
,
ref1
=
info
.
mainc
+
info
.
sidec
;
ref
<=
ref1
?
j
<
ref1
:
j
>
ref1
;
i
=
ref
<=
ref1
?
++
j
:
--
j
)
{
results
.
push
(
info
.
deckbuf
[
i
]);
results
.
push
(
info
.
deckbuf
[
i
]);
}
}
return
results
;
return
results
;
...
@@ -1860,8 +1833,8 @@
...
@@ -1860,8 +1833,8 @@
buffer
=
struct
.
buffer
;
buffer
=
struct
.
buffer
;
found_deck
=
false
;
found_deck
=
false
;
decks
=
fs
.
readdirSync
(
settings
.
modules
.
tournament_mode
.
deck_path
);
decks
=
fs
.
readdirSync
(
settings
.
modules
.
tournament_mode
.
deck_path
);
for
(
k
=
0
,
len
=
decks
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
decks
.
length
;
j
<
len
;
j
++
)
{
deck
=
decks
[
k
];
deck
=
decks
[
j
];
if
(
_
.
endsWith
(
deck
,
client
.
name
+
"
.ydk
"
))
{
if
(
_
.
endsWith
(
deck
,
client
.
name
+
"
.ydk
"
))
{
found_deck
=
deck
;
found_deck
=
deck
;
}
}
...
@@ -1877,8 +1850,8 @@
...
@@ -1877,8 +1850,8 @@
deck_main
=
[];
deck_main
=
[];
deck_side
=
[];
deck_side
=
[];
current_deck
=
deck_main
;
current_deck
=
deck_main
;
for
(
l
=
0
,
len1
=
deck_array
.
length
;
l
<
len1
;
l
++
)
{
for
(
k
=
0
,
len1
=
deck_array
.
length
;
k
<
len1
;
k
++
)
{
line
=
deck_array
[
l
];
line
=
deck_array
[
k
];
if
(
line
.
indexOf
(
"
!side
"
)
>=
0
)
{
if
(
line
.
indexOf
(
"
!side
"
)
>=
0
)
{
current_deck
=
deck_side
;
current_deck
=
deck_side
;
}
}
...
@@ -1973,7 +1946,7 @@
...
@@ -1973,7 +1946,7 @@
});
});
ygopro
.
stoc_follow
(
'
REPLAY
'
,
true
,
function
(
buffer
,
info
,
client
,
server
)
{
ygopro
.
stoc_follow
(
'
REPLAY
'
,
true
,
function
(
buffer
,
info
,
client
,
server
)
{
var
duellog
,
dueltime
,
i
,
k
,
len
,
player
,
ref
,
replay_filename
,
room
;
var
duellog
,
dueltime
,
i
,
j
,
len
,
player
,
ref
,
replay_filename
,
room
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
room
)
{
if
(
!
room
)
{
return
settings
.
modules
.
tournament_mode
.
enabled
&&
settings
.
modules
.
tournament_mode
.
replay_safe
;
return
settings
.
modules
.
tournament_mode
.
enabled
&&
settings
.
modules
.
tournament_mode
.
replay_safe
;
...
@@ -1986,7 +1959,7 @@
...
@@ -1986,7 +1959,7 @@
dueltime
=
moment
().
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
dueltime
=
moment
().
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
replay_filename
=
dueltime
;
replay_filename
=
dueltime
;
ref
=
room
.
dueling_players
;
ref
=
room
.
dueling_players
;
for
(
i
=
k
=
0
,
len
=
ref
.
length
;
k
<
len
;
i
=
++
k
)
{
for
(
i
=
j
=
0
,
len
=
ref
.
length
;
j
<
len
;
i
=
++
j
)
{
player
=
ref
[
i
];
player
=
ref
[
i
];
replay_filename
=
replay_filename
+
(
i
>
0
?
"
VS
"
:
"
"
)
+
player
.
name
;
replay_filename
=
replay_filename
+
(
i
>
0
?
"
VS
"
:
"
"
)
+
player
.
name
;
}
}
...
@@ -1998,11 +1971,11 @@
...
@@ -1998,11 +1971,11 @@
cloud_replay_id
:
"
R#
"
+
room
.
cloud_replay_id
,
cloud_replay_id
:
"
R#
"
+
room
.
cloud_replay_id
,
replay_filename
:
replay_filename
,
replay_filename
:
replay_filename
,
players
:
(
function
()
{
players
:
(
function
()
{
var
l
,
len1
,
ref1
,
results
;
var
k
,
len1
,
ref1
,
results
;
ref1
=
room
.
dueling_players
;
ref1
=
room
.
dueling_players
;
results
=
[];
results
=
[];
for
(
l
=
0
,
len1
=
ref1
.
length
;
l
<
len1
;
l
++
)
{
for
(
k
=
0
,
len1
=
ref1
.
length
;
k
<
len1
;
k
++
)
{
player
=
ref1
[
l
];
player
=
ref1
[
k
];
results
.
push
({
results
.
push
({
name
:
player
.
name
,
name
:
player
.
name
,
winner
:
player
.
pos
===
room
.
winner
winner
:
player
.
pos
===
room
.
winner
...
@@ -2030,9 +2003,9 @@
...
@@ -2030,9 +2003,9 @@
if
(
settings
.
modules
.
random_duel
.
enabled
)
{
if
(
settings
.
modules
.
random_duel
.
enabled
)
{
setInterval
(
function
()
{
setInterval
(
function
()
{
var
k
,
len
,
room
,
time_passed
;
var
j
,
len
,
room
,
time_passed
;
for
(
k
=
0
,
len
=
ROOM_all
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ROOM_all
.
length
;
j
<
len
;
j
++
)
{
room
=
ROOM_all
[
k
];
room
=
ROOM_all
[
j
];
if
(
!
(
room
&&
room
.
started
&&
room
.
random_type
&&
room
.
last_active_time
&&
room
.
waiting_for_player
))
{
if
(
!
(
room
&&
room
.
started
&&
room
.
random_type
&&
room
.
last_active_time
&&
room
.
waiting_for_player
))
{
continue
;
continue
;
}
}
...
@@ -2077,7 +2050,7 @@
...
@@ -2077,7 +2050,7 @@
return
callback
+
"
(
"
+
text
+
"
);
"
;
return
callback
+
"
(
"
+
text
+
"
);
"
;
};
};
requestListener
=
function
(
request
,
response
)
{
requestListener
=
function
(
request
,
response
)
{
var
duellog
,
filename
,
getpath
,
k
,
len
,
parseQueryString
,
pass_validated
,
player
,
room
,
roomsjson
,
u
;
var
duellog
,
filename
,
getpath
,
j
,
len
,
parseQueryString
,
pass_validated
,
player
,
room
,
roomsjson
,
u
;
parseQueryString
=
true
;
parseQueryString
=
true
;
u
=
url
.
parse
(
request
.
url
,
parseQueryString
);
u
=
url
.
parse
(
request
.
url
,
parseQueryString
);
pass_validated
=
u
.
query
.
pass
===
settings
.
modules
.
http
.
password
;
pass_validated
=
u
.
query
.
pass
===
settings
.
modules
.
http
.
password
;
...
@@ -2089,10 +2062,10 @@
...
@@ -2089,10 +2062,10 @@
response
.
writeHead
(
200
);
response
.
writeHead
(
200
);
roomsjson
=
JSON
.
stringify
({
roomsjson
=
JSON
.
stringify
({
rooms
:
(
function
()
{
rooms
:
(
function
()
{
var
k
,
len
,
results
;
var
j
,
len
,
results
;
results
=
[];
results
=
[];
for
(
k
=
0
,
len
=
ROOM_all
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ROOM_all
.
length
;
j
<
len
;
j
++
)
{
room
=
ROOM_all
[
k
];
room
=
ROOM_all
[
j
];
if
(
room
&&
room
.
established
)
{
if
(
room
&&
room
.
established
)
{
results
.
push
({
results
.
push
({
pid
:
room
.
process
.
pid
.
toString
(),
pid
:
room
.
process
.
pid
.
toString
(),
...
@@ -2100,11 +2073,11 @@
...
@@ -2100,11 +2073,11 @@
roomname
:
pass_validated
?
room
.
name
:
room
.
name
.
split
(
'
$
'
,
2
)[
0
],
roomname
:
pass_validated
?
room
.
name
:
room
.
name
.
split
(
'
$
'
,
2
)[
0
],
needpass
:
(
room
.
name
.
indexOf
(
'
$
'
)
!==
-
1
).
toString
(),
needpass
:
(
room
.
name
.
indexOf
(
'
$
'
)
!==
-
1
).
toString
(),
users
:
(
function
()
{
users
:
(
function
()
{
var
l
,
len1
,
ref
,
results1
;
var
k
,
len1
,
ref
,
results1
;
ref
=
room
.
players
;
ref
=
room
.
players
;
results1
=
[];
results1
=
[];
for
(
l
=
0
,
len1
=
ref
.
length
;
l
<
len1
;
l
++
)
{
for
(
k
=
0
,
len1
=
ref
.
length
;
k
<
len1
;
k
++
)
{
player
=
ref
[
l
];
player
=
ref
[
k
];
if
(
player
.
pos
!=
null
)
{
if
(
player
.
pos
!=
null
)
{
results1
.
push
({
results1
.
push
({
id
:
(
-
1
).
toString
(),
id
:
(
-
1
).
toString
(),
...
@@ -2162,8 +2135,8 @@
...
@@ -2162,8 +2135,8 @@
return
;
return
;
}
}
if
(
u
.
query
.
shout
)
{
if
(
u
.
query
.
shout
)
{
for
(
k
=
0
,
len
=
ROOM_all
.
length
;
k
<
len
;
k
++
)
{
for
(
j
=
0
,
len
=
ROOM_all
.
length
;
j
<
len
;
j
++
)
{
room
=
ROOM_all
[
k
];
room
=
ROOM_all
[
j
];
if
(
room
&&
room
.
established
)
{
if
(
room
&&
room
.
established
)
{
ygopro
.
stoc_send_chat_to_room
(
room
,
u
.
query
.
shout
,
ygopro
.
constants
.
COLORS
.
YELLOW
);
ygopro
.
stoc_send_chat_to_room
(
room
,
u
.
query
.
shout
,
ygopro
.
constants
.
COLORS
.
YELLOW
);
}
}
...
...
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