Commit 2f69b16d authored by mercury233's avatar mercury233

update for mycard

parent 8de268f9
{ {
"port": 7911, "port": 7911,
"ygopro_path": "ygopro",
"modules": { "modules": {
"welcome": "YGOPRO Server", "welcome": "YGOPRO Server",
"update": "请更新游戏版本", "update": "请更新游戏版本",
...@@ -16,8 +15,8 @@ ...@@ -16,8 +15,8 @@
"enable_deck_log": false, "enable_deck_log": false,
"redis_port": 6379, "redis_port": 6379,
"windbot_port": 2399, "windbot_port": 2399,
"spawn_windbot": false,
"mycard_auth": false, "mycard_auth": false,
"mycard_auth_key": "please set in config.user.json",
"hang_timeout": 90, "hang_timeout": 90,
"tournament_mode": { "tournament_mode": {
"enabled": false, "enabled": false,
...@@ -59,8 +58,8 @@ ...@@ -59,8 +58,8 @@
"ssl": { "ssl": {
"enabled": false, "enabled": false,
"port": 7923, "port": 7923,
"cert": "ssl/ygopro-server.crt", "cert": "ssl/fullchain.pem",
"key": "ssl/ygopro-server.key" "key": "ssl/privkey.pem"
} }
} }
}, },
...@@ -68,7 +67,7 @@ ...@@ -68,7 +67,7 @@
"banned_user": [], "banned_user": [],
"banned_ip": [], "banned_ip": [],
"badword_level0": ["滚", "衮", "操", "草", "艹", "狗", "日", "曰", "妈", "娘", "逼"], "badword_level0": ["滚", "衮", "操", "草", "艹", "狗", "日", "曰", "妈", "娘", "逼"],
"badword_level1": ["傻逼", "垃圾"], "badword_level1": ["傻逼", "鸡巴"],
"badword_level2": ["死妈", "草你妈"], "badword_level2": ["死妈", "草你妈"],
"badword_level3": ["迷奸", "仿真枪"], "badword_level3": ["迷奸", "仿真枪"],
"illegal_id": ["^Lv.\\d+", "^VIP.\\d+"] "illegal_id": ["^Lv.\\d+", "^VIP.\\d+"]
......
WebSocketServer = require('ws').Server; WebSocketServer = require('ws').Server
server = null server = null
......
...@@ -139,7 +139,6 @@ setInterval ()-> ...@@ -139,7 +139,6 @@ setInterval ()->
Graveyard[i][j] = null Graveyard[i][j] = null
Graveyard[i] = null Graveyard[i] = null
Graveyard = [] Graveyard = []
#global.gc()
return return
, 3000 , 3000
...@@ -384,7 +383,7 @@ class Room ...@@ -384,7 +383,7 @@ class Room
@hostinfo.start_lp, @hostinfo.start_hand, @hostinfo.draw_count, @hostinfo.time_limit, @hostinfo.replay_mode] @hostinfo.start_lp, @hostinfo.start_hand, @hostinfo.draw_count, @hostinfo.time_limit, @hostinfo.replay_mode]
try try
@process = spawn './ygopro', param, {cwd: settings.ygopro_path} @process = spawn './ygopro', param, {cwd: 'ygopro'}
@process.on 'exit', (code)=> @process.on 'exit', (code)=>
@disconnector = 'server' unless @disconnector @disconnector = 'server' unless @disconnector
this.delete() this.delete()
...@@ -936,7 +935,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)-> ...@@ -936,7 +935,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
baseUrl: settings.modules.mycard_auth, baseUrl: settings.modules.mycard_auth,
url: '/users/' + encodeURIComponent(client.name) + '.json', url: '/users/' + encodeURIComponent(client.name) + '.json',
qs: qs:
api_key: settings.modules.mycard_auth_key, api_key: process.env.MYCARD_AUTH_KEY,
api_username: client.name, api_username: client.name,
skip_track_visit: true skip_track_visit: true
json: true json: true
...@@ -1509,19 +1508,36 @@ ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server)-> ...@@ -1509,19 +1508,36 @@ ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server)->
else else
return false return false
setInterval ()-> if settings.modules.enable_random_duel
for room in ROOM_all when room and room.started and room.random_type and room.last_active_time and room.waiting_for_player setInterval ()->
time_passed = Math.floor((moment() - room.last_active_time) / 1000) for room in ROOM_all when room and room.started and room.random_type and room.last_active_time and room.waiting_for_player
#log.info time_passed time_passed = Math.floor((moment() - room.last_active_time) / 1000)
if time_passed >= settings.modules.hang_timeout #log.info time_passed
room.last_active_time = moment() if time_passed >= settings.modules.hang_timeout
ROOM_ban_player(room.waiting_for_player.name, room.waiting_for_player.ip, "挂机") room.last_active_time = moment()
ygopro.stoc_send_chat_to_room(room, "#{room.waiting_for_player.name} 被系统请出了房间", ygopro.constants.COLORS.RED) ROOM_ban_player(room.waiting_for_player.name, room.waiting_for_player.ip, "挂机")
room.waiting_for_player.server.destroy() ygopro.stoc_send_chat_to_room(room, "#{room.waiting_for_player.name} 被系统请出了房间", ygopro.constants.COLORS.RED)
else if time_passed >= (settings.modules.hang_timeout - 20) and not (time_passed % 10) room.waiting_for_player.server.destroy()
ygopro.stoc_send_chat_to_room(room, "#{room.waiting_for_player.name} 已经很久没有操作了,若继续挂机,将于#{settings.modules.hang_timeout - time_passed}秒后被请出房间", ygopro.constants.COLORS.RED) else if time_passed >= (settings.modules.hang_timeout - 20) and not (time_passed % 10)
return ygopro.stoc_send_chat_to_room(room, "#{room.waiting_for_player.name} 已经很久没有操作了,若继续挂机,将于#{settings.modules.hang_timeout - time_passed}秒后被请出房间", ygopro.constants.COLORS.RED)
, 1000 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 #http
if settings.modules.http if settings.modules.http
......
// Generated by CoffeeScript 1.10.0 // Generated by CoffeeScript 1.10.0
(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, _, 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'); net = require('net');
...@@ -510,7 +510,7 @@ ...@@ -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]; 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 { try {
this.process = spawn('./ygopro', param, { this.process = spawn('./ygopro', param, {
cwd: settings.ygopro_path cwd: 'ygopro'
}); });
this.process.on('exit', (function(_this) { this.process.on('exit', (function(_this) {
return function(code) { return function(code) {
...@@ -1141,7 +1141,7 @@ ...@@ -1141,7 +1141,7 @@
baseUrl: settings.modules.mycard_auth, baseUrl: settings.modules.mycard_auth,
url: '/users/' + encodeURIComponent(client.name) + '.json', url: '/users/' + encodeURIComponent(client.name) + '.json',
qs: { qs: {
api_key: settings.modules.mycard_auth_key, api_key: process.env.MYCARD_AUTH_KEY,
api_username: client.name, api_username: client.name,
skip_track_visit: true skip_track_visit: true
}, },
...@@ -1896,24 +1896,45 @@ ...@@ -1896,24 +1896,45 @@
} }
}); });
setInterval(function() { if (settings.modules.enable_random_duel) {
var k, len, room, time_passed; setInterval(function() {
for (k = 0, len = ROOM_all.length; k < len; k++) { var k, len, room, time_passed;
room = ROOM_all[k]; for (k = 0, len = ROOM_all.length; k < len; k++) {
if (!(room && room.started && room.random_type && room.last_active_time && room.waiting_for_player)) { room = ROOM_all[k];
continue; 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) { time_passed = Math.floor((moment() - room.last_active_time) / 1000);
room.last_active_time = moment(); if (time_passed >= settings.modules.hang_timeout) {
ROOM_ban_player(room.waiting_for_player.name, room.waiting_for_player.ip, "挂机"); room.last_active_time = moment();
ygopro.stoc_send_chat_to_room(room, room.waiting_for_player.name + " 被系统请出了房间", ygopro.constants.COLORS.RED); ROOM_ban_player(room.waiting_for_player.name, room.waiting_for_player.ip, "挂机");
room.waiting_for_player.server.destroy(); ygopro.stoc_send_chat_to_room(room, room.waiting_for_player.name + " 被系统请出了房间", ygopro.constants.COLORS.RED);
} else if (time_passed >= (settings.modules.hang_timeout - 20) && !(time_passed % 10)) { room.waiting_for_player.server.destroy();
ygopro.stoc_send_chat_to_room(room, room.waiting_for_player.name + " 已经很久没有操作了,若继续挂机,将于" + (settings.modules.hang_timeout - time_passed) + "秒后被请出房间", ygopro.constants.COLORS.RED); } 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) { if (settings.modules.http) {
requestListener = function(request, response) { requestListener = function(request, response) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment