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
2f69b16d
Commit
2f69b16d
authored
8 years ago
by
mercury233
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update for mycard
parent
8de268f9
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
78 additions
and
42 deletions
+78
-42
config.json
config.json
+4
-5
roomlist.coffee
roomlist.coffee
+1
-1
ygopro-server.coffee
ygopro-server.coffee
+32
-16
ygopro-server.js
ygopro-server.js
+41
-20
No files found.
config.json
View file @
2f69b16d
{
"port"
:
7911
,
"ygopro_path"
:
"ygopro"
,
"modules"
:
{
"welcome"
:
"YGOPRO Server"
,
"update"
:
"请更新游戏版本"
,
...
...
@@ -16,8 +15,8 @@
"enable_deck_log"
:
false
,
"redis_port"
:
6379
,
"windbot_port"
:
2399
,
"spawn_windbot"
:
false
,
"mycard_auth"
:
false
,
"mycard_auth_key"
:
"please set in config.user.json"
,
"hang_timeout"
:
90
,
"tournament_mode"
:
{
"enabled"
:
false
,
...
...
@@ -59,8 +58,8 @@
"ssl"
:
{
"enabled"
:
false
,
"port"
:
7923
,
"cert"
:
"ssl/
ygopro-server.crt
"
,
"key"
:
"ssl/
ygopro-server.key
"
"cert"
:
"ssl/
fullchain.pem
"
,
"key"
:
"ssl/
privkey.pem
"
}
}
},
...
...
@@ -68,7 +67,7 @@
"banned_user"
:
[],
"banned_ip"
:
[],
"badword_level0"
:
[
"滚"
,
"衮"
,
"操"
,
"草"
,
"艹"
,
"狗"
,
"日"
,
"曰"
,
"妈"
,
"娘"
,
"逼"
],
"badword_level1"
:
[
"傻逼"
,
"
垃圾
"
],
"badword_level1"
:
[
"傻逼"
,
"
鸡巴
"
],
"badword_level2"
:
[
"死妈"
,
"草你妈"
],
"badword_level3"
:
[
"迷奸"
,
"仿真枪"
],
"illegal_id"
:
[
"^Lv.
\\
d+"
,
"^VIP.
\\
d+"
]
...
...
This diff is collapsed.
Click to expand it.
roomlist.coffee
View file @
2f69b16d
WebSocketServer
=
require
(
'ws'
).
Server
;
WebSocketServer
=
require
(
'ws'
).
Server
server
=
null
...
...
This diff is collapsed.
Click to expand it.
ygopro-server.coffee
View file @
2f69b16d
...
...
@@ -139,7 +139,6 @@ setInterval ()->
Graveyard
[
i
][
j
]
=
null
Graveyard
[
i
]
=
null
Graveyard
=
[]
#global.gc()
return
,
3000
...
...
@@ -384,7 +383,7 @@ class Room
@
hostinfo
.
start_lp
,
@
hostinfo
.
start_hand
,
@
hostinfo
.
draw_count
,
@
hostinfo
.
time_limit
,
@
hostinfo
.
replay_mode
]
try
@
process
=
spawn
'./ygopro'
,
param
,
{
cwd
:
settings
.
ygopro_path
}
@
process
=
spawn
'./ygopro'
,
param
,
{
cwd
:
'ygopro'
}
@
process
.
on
'exit'
,
(
code
)
=>
@
disconnector
=
'server'
unless
@
disconnector
this
.
delete
()
...
...
@@ -936,7 +935,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
baseUrl
:
settings
.
modules
.
mycard_auth
,
url
:
'/users/'
+
encodeURIComponent
(
client
.
name
)
+
'.json'
,
qs
:
api_key
:
settings
.
modules
.
mycard_auth_key
,
api_key
:
process
.
env
.
MYCARD_AUTH_KEY
,
api_username
:
client
.
name
,
skip_track_visit
:
true
json
:
true
...
...
@@ -1509,19 +1508,36 @@ ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server)->
else
return
false
setInterval
()
->
for
room
in
ROOM_all
when
room
and
room
.
started
and
room
.
random_type
and
room
.
last_active_time
and
room
.
waiting_for_player
time_passed
=
Math
.
floor
((
moment
()
-
room
.
last_active_time
)
/
1000
)
#log.info time_passed
if
time_passed
>=
settings
.
modules
.
hang_timeout
room
.
last_active_time
=
moment
()
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
)
room
.
waiting_for_player
.
server
.
destroy
()
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
)
return
,
1000
if
settings
.
modules
.
enable_random_duel
setInterval
()
->
for
room
in
ROOM_all
when
room
and
room
.
started
and
room
.
random_type
and
room
.
last_active_time
and
room
.
waiting_for_player
time_passed
=
Math
.
floor
((
moment
()
-
room
.
last_active_time
)
/
1000
)
#log.info time_passed
if
time_passed
>=
settings
.
modules
.
hang_timeout
room
.
last_active_time
=
moment
()
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
)
room
.
waiting_for_player
.
server
.
destroy
()
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
)
return
,
1000
if
settings
.
modules
.
spawn_windbot
windbot_process
=
spawn
'mono'
,
[
'WindBot.exe'
,
settings
.
modules
.
windbot_port
],
{
cwd
:
'windbot'
}
windbot_process
.
on
'error'
,
(
err
)
->
log
.
warn
'WindBot ERROR'
,
err
return
windbot_process
.
on
'exit'
,
(
code
)
->
log
.
warn
'WindBot EXIT'
,
code
return
windbot_process
.
stdout
.
setEncoding
(
'utf8'
)
windbot_process
.
stdout
.
on
'data'
,
(
data
)
->
log
.
info
'WindBot:'
,
data
return
windbot_process
.
stderr
.
on
'data'
,
(
data
)
->
log
.
warn
'WindBot Error:'
,
data
return
#http
if
settings
.
modules
.
http
...
...
This diff is collapsed.
Click to expand it.
ygopro-server.js
View file @
2f69b16d
// Generated by CoffeeScript 1.10.0
(
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
,
_
,
ban_user
,
bunyan
,
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
,
pg
,
redis
,
redisdb
,
request
,
requestListener
,
roomlist
,
settings
,
spawn
,
spawnSync
,
tribute
,
url
,
users_cache
,
wait_room_start
,
ygopro
,
zlib
;
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
,
_
,
ban_user
,
bunyan
,
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
,
pg
,
redis
,
redisdb
,
request
,
requestListener
,
roomlist
,
settings
,
spawn
,
spawnSync
,
tribute
,
url
,
users_cache
,
wait_room_start
,
windbot_process
,
ygopro
,
zlib
;
net
=
require
(
'
net
'
);
...
...
@@ -510,7 +510,7 @@
param
=
[
0
,
this
.
hostinfo
.
lflist
,
this
.
hostinfo
.
rule
,
this
.
hostinfo
.
mode
,
(
this
.
hostinfo
.
enable_priority
?
'
T
'
:
'
F
'
),
(
this
.
hostinfo
.
no_check_deck
?
'
T
'
:
'
F
'
),
(
this
.
hostinfo
.
no_shuffle_deck
?
'
T
'
:
'
F
'
),
this
.
hostinfo
.
start_lp
,
this
.
hostinfo
.
start_hand
,
this
.
hostinfo
.
draw_count
,
this
.
hostinfo
.
time_limit
,
this
.
hostinfo
.
replay_mode
];
try
{
this
.
process
=
spawn
(
'
./ygopro
'
,
param
,
{
cwd
:
settings
.
ygopro_path
cwd
:
'
ygopro
'
});
this
.
process
.
on
(
'
exit
'
,
(
function
(
_this
)
{
return
function
(
code
)
{
...
...
@@ -1141,7 +1141,7 @@
baseUrl
:
settings
.
modules
.
mycard_auth
,
url
:
'
/users/
'
+
encodeURIComponent
(
client
.
name
)
+
'
.json
'
,
qs
:
{
api_key
:
settings
.
modules
.
mycard_auth_key
,
api_key
:
process
.
env
.
MYCARD_AUTH_KEY
,
api_username
:
client
.
name
,
skip_track_visit
:
true
},
...
...
@@ -1896,24 +1896,45 @@
}
});
setInterval
(
function
()
{
var
k
,
len
,
room
,
time_passed
;
for
(
k
=
0
,
len
=
ROOM_all
.
length
;
k
<
len
;
k
++
)
{
room
=
ROOM_all
[
k
];
if
(
!
(
room
&&
room
.
started
&&
room
.
random_type
&&
room
.
last_active_time
&&
room
.
waiting_for_player
))
{
continue
;
}
time_passed
=
Math
.
floor
((
moment
()
-
room
.
last_active_time
)
/
1000
);
if
(
time_passed
>=
settings
.
modules
.
hang_timeout
)
{
room
.
last_active_time
=
moment
();
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
);
room
.
waiting_for_player
.
server
.
destroy
();
}
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
);
if
(
settings
.
modules
.
enable_random_duel
)
{
setInterval
(
function
()
{
var
k
,
len
,
room
,
time_passed
;
for
(
k
=
0
,
len
=
ROOM_all
.
length
;
k
<
len
;
k
++
)
{
room
=
ROOM_all
[
k
];
if
(
!
(
room
&&
room
.
started
&&
room
.
random_type
&&
room
.
last_active_time
&&
room
.
waiting_for_player
))
{
continue
;
}
time_passed
=
Math
.
floor
((
moment
()
-
room
.
last_active_time
)
/
1000
);
if
(
time_passed
>=
settings
.
modules
.
hang_timeout
)
{
room
.
last_active_time
=
moment
();
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
);
room
.
waiting_for_player
.
server
.
destroy
();
}
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
);
}
}
}
},
1000
);
},
1000
);
}
if
(
settings
.
modules
.
spawn_windbot
)
{
windbot_process
=
spawn
(
'
mono
'
,
[
'
WindBot.exe
'
,
settings
.
modules
.
windbot_port
],
{
cwd
:
'
windbot
'
});
windbot_process
.
on
(
'
error
'
,
function
(
err
)
{
log
.
warn
(
'
WindBot ERROR
'
,
err
);
});
windbot_process
.
on
(
'
exit
'
,
function
(
code
)
{
log
.
warn
(
'
WindBot EXIT
'
,
code
);
});
windbot_process
.
stdout
.
setEncoding
(
'
utf8
'
);
windbot_process
.
stdout
.
on
(
'
data
'
,
function
(
data
)
{
log
.
info
(
'
WindBot:
'
,
data
);
});
windbot_process
.
stderr
.
on
(
'
data
'
,
function
(
data
)
{
log
.
warn
(
'
WindBot Error:
'
,
data
);
});
}
if
(
settings
.
modules
.
http
)
{
requestListener
=
function
(
request
,
response
)
{
...
...
This diff is collapsed.
Click to expand it.
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