Commit 4d6dc166 authored by nanahira's avatar nanahira

Merge branch 'master' into tcg_random

parents e6250b20 9625f8b3
// Generated by CoffeeScript 1.12.7
// Generated by CoffeeScript 2.5.1
(function() {
var WebSocketServer, _delete, broadcast, create, init, room_data, server, settings, start, update, url;
......@@ -31,7 +31,7 @@
}
return results;
})(),
options: room.get_old_hostinfo(),
options: room.get_old_hostinfo(), // Should be updated when MyCard client updates
arena: settings.modules.arena_mode.enabled && room.arena && settings.modules.arena_mode.mode
};
};
......@@ -50,7 +50,7 @@
results = [];
for (i = 0, len = ROOM_all.length; i < len; i++) {
room = ROOM_all[i];
if (room && room.established && (connection.filter === 'started' || !room["private"]) && ((room.duel_stage !== 0) === (connection.filter === 'started'))) {
if (room && room.established && (connection.filter === 'started' || !room.private) && ((room.duel_stage !== 0) === (connection.filter === 'started'))) {
results.push(room_data(room));
}
}
......@@ -61,19 +61,19 @@
};
create = function(room) {
if (!room["private"]) {
if (!room.private) {
return broadcast('create', room_data(room), 'waiting');
}
};
update = function(room) {
if (!room["private"]) {
if (!room.private) {
return broadcast('update', room_data(room), 'waiting');
}
};
start = function(room) {
if (!room["private"]) {
if (!room.private) {
broadcast('delete', room.name, 'waiting');
}
return broadcast('create', room_data(room), 'started');
......@@ -83,7 +83,7 @@
if (room.duel_stage !== 0) {
return broadcast('delete', room.name, 'started');
} else {
if (!room["private"]) {
if (!room.private) {
return broadcast('delete', room.name, 'waiting');
}
}
......@@ -116,7 +116,7 @@
create: create,
update: update,
start: start,
"delete": _delete
delete: _delete
};
}).call(this);
......@@ -26,6 +26,7 @@ or as follows, to use a specific set of permissions.
###
fs = require 'fs'
loadJSON = require('load-json-file').sync
loadJSONPromise = require('load-json-file')
moment = require 'moment'
moment.updateLocale('zh-cn', {
relativeTime: {
......@@ -47,6 +48,7 @@ moment.updateLocale('zh-cn', {
bunyan = require 'bunyan'
log = bunyan.createLogger name: "auth"
util = require 'util'
if not fs.existsSync('./logs')
fs.mkdirSync('./logs')
......@@ -57,16 +59,19 @@ add_log = (message) ->
text = mt.format('YYYY-MM-DD HH:mm:ss') + " --> " + message + "\n"
res = false
try
fs.appendFileSync("./logs/"+mt.format('YYYY-MM-DD')+".log", text)
await util.promisify(fs.appendFile)("./logs/"+mt.format('YYYY-MM-DD')+".log", text)
res = true
catch
res = false
return
return res
default_data = loadJSON('./data/default_data.json')
setting_save = (settings) ->
fs.writeFileSync(settings.file, JSON.stringify(settings, null, 2))
try
await util.promisify(fs.writeFile)(settings.file, JSON.stringify(settings, null, 2))
catch e
add_log("save fail");
return
default_data = loadJSON('./data/default_data.json')
......@@ -78,16 +83,15 @@ catch
setting_save(users)
save = () ->
setting_save(users)
return
return await setting_save(users)
reload = () ->
user_backup = users
try
users = loadJSON('./config/admin_user.json')
users = await loadJSONPromise('./config/admin_user.json')
catch
users = user_backup
add_log("Invalid user data JSON")
await add_log("Invalid user data JSON")
return
check_permission = (user, permission_required) ->
......@@ -96,31 +100,31 @@ check_permission = (user, permission_required) ->
if typeof(permission) != 'object'
permission = users.permission_examples[_permission]
if !permission
add_log("Permision not set:"+_permission)
await add_log("Permision not set:"+_permission)
return false
return permission[permission_required]
@auth = (name, pass, permission_required, action = 'unknown', no_log) ->
reload()
await reload()
user = users.users[name]
if !user
add_log("Unknown user login. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
await add_log("Unknown user login. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
return false
if user.password != pass
add_log("Unauthorized user login. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
await add_log("Unauthorized user login. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
return false
if !user.enabled
add_log("Disabled user login. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
await add_log("Disabled user login. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
return false
if !check_permission(user, permission_required)
add_log("Permission denied. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
if !await check_permission(user, permission_required)
await add_log("Permission denied. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
return false
if !no_log
add_log("Operation success. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
await add_log("Operation success. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
return true
@add_user = (name, pass, enabled, permissions) ->
reload()
await reload()
if users.users[name]
return false
users.users[name] = {
......@@ -128,21 +132,21 @@ check_permission = (user, permission_required) ->
"enabled": enabled,
"permissions": permissions
}
save()
await save()
return true
@delete_user = (name) ->
reload()
await reload()
if !users.users[name]
return false
delete users.users[name]
save()
return true
await save()
return
@update_user = (name, key, value) ->
reload()
await reload()
if !users.users[name]
return false
users.users[name][key] = value
save()
return true
await save()
return
// Generated by CoffeeScript 1.12.7
/*
Main script of new dashboard account system.
The account list file is stored at `./config/admin_user.json`. The users are stored at `users`.
The key is the username. The `permissions` field could be a string, using a permission set from the example, or an object, to define a specific set of permissions.
eg. An account for a judge could be as follows, to use the default permission of judges,
"username": {
"password": "123456",
"enabled": true,
"permissions": "judge"
},
or as follows, to use a specific set of permissions.
"username": {
"password": "123456",
"enabled": true,
"permissions": {
"get_rooms": true,
"duel_log": true,
"download_replay": true,
"deck_dashboard_read": true,
"deck_dashboard_write": true,
"shout": true,
"kick_user": true,
"start_death": true
}
},
*/
// Generated by CoffeeScript 2.5.1
(function() {
var add_log, bunyan, check_permission, default_data, fs, loadJSON, log, moment, reload, save, setting_save, users;
/*
Main script of new dashboard account system.
The account list file is stored at `./config/admin_user.json`. The users are stored at `users`.
The key is the username. The `permissions` field could be a string, using a permission set from the example, or an object, to define a specific set of permissions.
eg. An account for a judge could be as follows, to use the default permission of judges,
"username": {
"password": "123456",
"enabled": true,
"permissions": "judge"
},
or as follows, to use a specific set of permissions.
"username": {
"password": "123456",
"enabled": true,
"permissions": {
"get_rooms": true,
"duel_log": true,
"download_replay": true,
"deck_dashboard_read": true,
"deck_dashboard_write": true,
"shout": true,
"kick_user": true,
"start_death": true
}
},
*/
var add_log, bunyan, check_permission, default_data, fs, loadJSON, loadJSONPromise, log, moment, reload, save, setting_save, users, util;
fs = require('fs');
loadJSON = require('load-json-file').sync;
loadJSONPromise = require('load-json-file');
moment = require('moment');
moment.updateLocale('zh-cn', {
......@@ -60,28 +60,37 @@ or as follows, to use a specific set of permissions.
name: "auth"
});
util = require('util');
if (!fs.existsSync('./logs')) {
fs.mkdirSync('./logs');
}
add_log = function(message) {
add_log = async function(message) {
var mt, res, text;
mt = moment();
log.info(message);
text = mt.format('YYYY-MM-DD HH:mm:ss') + " --> " + message + "\n";
res = false;
try {
fs.appendFileSync("./logs/" + mt.format('YYYY-MM-DD') + ".log", text);
await util.promisify(fs.appendFile)("./logs/" + mt.format('YYYY-MM-DD') + ".log", text);
res = true;
} catch (error) {
res = false;
}
return res;
};
default_data = loadJSON('./data/default_data.json');
setting_save = function(settings) {
fs.writeFileSync(settings.file, JSON.stringify(settings, null, 2));
setting_save = async function(settings) {
var e;
try {
await util.promisify(fs.writeFile)(settings.file, JSON.stringify(settings, null, 2));
} catch (error) {
e = error;
add_log("save fail");
}
};
default_data = loadJSON('./data/default_data.json');
......@@ -93,22 +102,22 @@ or as follows, to use a specific set of permissions.
setting_save(users);
}
save = function() {
setting_save(users);
save = async function() {
return (await setting_save(users));
};
reload = function() {
reload = async function() {
var user_backup;
user_backup = users;
try {
users = loadJSON('./config/admin_user.json');
users = (await loadJSONPromise('./config/admin_user.json'));
} catch (error) {
users = user_backup;
add_log("Invalid user data JSON");
await add_log("Invalid user data JSON");
}
};
check_permission = function(user, permission_required) {
check_permission = async function(user, permission_required) {
var _permission, permission;
_permission = user.permissions;
permission = _permission;
......@@ -116,43 +125,40 @@ or as follows, to use a specific set of permissions.
permission = users.permission_examples[_permission];
}
if (!permission) {
add_log("Permision not set:" + _permission);
await add_log("Permision not set:" + _permission);
return false;
}
return permission[permission_required];
};
this.auth = function(name, pass, permission_required, action, no_log) {
this.auth = async function(name, pass, permission_required, action = 'unknown', no_log) {
var user;
if (action == null) {
action = 'unknown';
}
reload();
await reload();
user = users.users[name];
if (!user) {
add_log("Unknown user login. User: " + name + ", Permission needed: " + permission_required + ", Action: " + action);
await add_log("Unknown user login. User: " + name + ", Permission needed: " + permission_required + ", Action: " + action);
return false;
}
if (user.password !== pass) {
add_log("Unauthorized user login. User: " + name + ", Permission needed: " + permission_required + ", Action: " + action);
await add_log("Unauthorized user login. User: " + name + ", Permission needed: " + permission_required + ", Action: " + action);
return false;
}
if (!user.enabled) {
add_log("Disabled user login. User: " + name + ", Permission needed: " + permission_required + ", Action: " + action);
await add_log("Disabled user login. User: " + name + ", Permission needed: " + permission_required + ", Action: " + action);
return false;
}
if (!check_permission(user, permission_required)) {
add_log("Permission denied. User: " + name + ", Permission needed: " + permission_required + ", Action: " + action);
if (!(await check_permission(user, permission_required))) {
await add_log("Permission denied. User: " + name + ", Permission needed: " + permission_required + ", Action: " + action);
return false;
}
if (!no_log) {
add_log("Operation success. User: " + name + ", Permission needed: " + permission_required + ", Action: " + action);
await add_log("Operation success. User: " + name + ", Permission needed: " + permission_required + ", Action: " + action);
}
return true;
};
this.add_user = function(name, pass, enabled, permissions) {
reload();
this.add_user = async function(name, pass, enabled, permissions) {
await reload();
if (users.users[name]) {
return false;
}
......@@ -161,28 +167,26 @@ or as follows, to use a specific set of permissions.
"enabled": enabled,
"permissions": permissions
};
save();
await save();
return true;
};
this.delete_user = function(name) {
reload();
this.delete_user = async function(name) {
await reload();
if (!users.users[name]) {
return false;
}
delete users.users[name];
save();
return true;
await save();
};
this.update_user = function(name, key, value) {
reload();
this.update_user = async function(name, key, value) {
await reload();
if (!users.users[name]) {
return false;
}
users.users[name][key] = value;
save();
return true;
await save();
};
}).call(this);
......@@ -483,7 +483,7 @@ var packDatas = function (callback) {
function requestListener(req, res) {
var u = url.parse(req.url, true);
if (!auth.auth(u.query.username, u.query.password, "pre_dashboard", "pre_dashboard")) {
if (!await auth.auth(u.query.username, u.query.password, "pre_dashboard", "pre_dashboard")) {
res.writeHead(403);
res.end("Auth Failed.");
return;
......@@ -508,7 +508,7 @@ function requestListener(req, res) {
else if (u.pathname === '/api/load_db') {
res.writeHead(200);
res.end(u.query.callback+'({"message":"开始加载数据库。"});');
loadAllDbs(() => { });
await util.promisify(loadAllDbs)();
}
else if (u.pathname === '/api/fetch_datas') {
res.writeHead(200);
......@@ -517,23 +517,23 @@ function requestListener(req, res) {
}
else if (u.pathname === '/api/push_datas') {
res.writeHead(200);
res.end(u.query.callback+'({"message":"开始上传数据。"});');
pushDatas(() => { });
res.end(u.query.callback + '({"message":"开始上传数据。"});');
await util.promisify(pushDatas)();
}
else if (u.pathname === '/api/write_to_file') {
res.writeHead(200);
res.end(u.query.callback+'({"message":"开始写列表页。"});');
writeToFile(u.query.message, () => { });
await util.promisify(writeToFile)(u.query.message);
}
else if (u.pathname === '/api/copy_to_ygopro') {
res.writeHead(200);
res.end(u.query.callback+'({"message":"开始更新到服务器。"});');
copyToYGOPRO(() => { });
await util.promisify(copyToYGOPRO)();
}
else if (u.pathname === '/api/pack_data') {
res.writeHead(200);
res.end(u.query.callback+'({"message":"开始生成更新包。"});');
packDatas(() => { });
await util.promisify(packDatas)();
}
else {
res.writeHead(400);
......
......@@ -81,6 +81,8 @@ merge = require 'deepmerge'
loadJSON = require('load-json-file').sync
util = require("util")
#heapdump = require 'heapdump'
# 配置
......@@ -1919,6 +1921,7 @@ net.createServer (client) ->
b = stoc_buffer.slice(3, stoc_message_length - 1 + 3)
info = null
struct = ygopro.structs[ygopro.proto_structs.STOC[ygopro.constants.STOC[stoc_proto]]]
if struct and !cancel
struct._setBuff(b)
info = _.clone(struct.fields)
......@@ -3976,7 +3979,7 @@ if settings.modules.http
#console.log(u.query.username, u.query.pass)
if u.pathname == '/api/getrooms'
pass_validated = auth.auth(u.query.username, u.query.pass, "get_rooms", "get_rooms", true)
pass_validated = await auth.auth(u.query.username, u.query.pass, "get_rooms", "get_rooms", true)
if !settings.modules.http.public_roomlist and !pass_validated
response.writeHead(200)
response.end(addCallback(u.query.callback, '{"rooms":[{"roomid":"0","roomname":"密码错误","needpass":"true"}]}'))
......@@ -4012,7 +4015,7 @@ if settings.modules.http
else if u.pathname == '/api/duellog' and settings.modules.tournament_mode.enabled
if !auth.auth(u.query.username, u.query.pass, "duel_log", "duel_log")
if !await auth.auth(u.query.username, u.query.pass, "duel_log", "duel_log")
response.writeHead(200)
response.end(addCallback(u.query.callback, "[{name:'密码错误'}]"))
return
......@@ -4038,7 +4041,7 @@ if settings.modules.http
response.end(addCallback(u.query.callback, ret_keys))
else if u.pathname == '/api/archive.zip' and settings.modules.tournament_mode.enabled
if !auth.auth(u.query.username, u.query.pass, "download_replay", "download_replay_archive")
if !await auth.auth(u.query.username, u.query.pass, "download_replay", "download_replay_archive")
response.writeHead(403)
response.end("Invalid password.")
return
......@@ -4081,7 +4084,7 @@ if settings.modules.http
response.end("Failed reading replays. " + error)
else if u.pathname == '/api/clearlog' and settings.modules.tournament_mode.enabled
if !auth.auth(u.query.username, u.query.pass, "clear_duel_log", "clear_duel_log")
if !await auth.auth(u.query.username, u.query.pass, "clear_duel_log", "clear_duel_log")
response.writeHead(200)
response.end(addCallback(u.query.callback, "[{name:'密码错误'}]"))
return
......@@ -4097,7 +4100,7 @@ if settings.modules.http
response.end(addCallback(u.query.callback, "[{name:'Success'}]"))
else if _.startsWith(u.pathname, '/api/replay') and settings.modules.tournament_mode.enabled
if !auth.auth(u.query.username, u.query.pass, "download_replay", "download_replay")
if !await auth.auth(u.query.username, u.query.pass, "download_replay", "download_replay")
response.writeHead(403)
response.end("密码错误")
return
......@@ -4128,45 +4131,43 @@ if settings.modules.http
# return
if u.query.shout
if !auth.auth(u.query.username, u.query.pass, "shout", "shout")
if !await auth.auth(u.query.username, u.query.pass, "shout", "shout")
response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return
for room in ROOM_all when room and room.established
ygopro.stoc_send_chat_to_room(room, u.query.shout, ygopro.constants.COLORS.YELLOW)
_async.each ROOM_all, (room)->
if room and room.established
ygopro.stoc_send_chat_to_room(room, u.query.shout, ygopro.constants.COLORS.YELLOW)
response.writeHead(200)
response.end(addCallback(u.query.callback, "['shout ok', '" + u.query.shout + "']"))
else if u.query.stop
if !auth.auth(u.query.username, u.query.pass, "stop", "stop")
if !await auth.auth(u.query.username, u.query.pass, "stop", "stop")
response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return
if u.query.stop == 'false'
u.query.stop = false
setting_change(settings, 'modules:stop', u.query.stop, (err)->
response.writeHead(200)
if(err)
response.end(addCallback(u.query.callback, "['stop fail', '" + u.query.stop + "']"))
else
response.end(addCallback(u.query.callback, "['stop ok', '" + u.query.stop + "']"))
)
response.writeHead(200)
try
await util.promisify(setting_change)(settings, 'modules:stop', u.query.stop)
response.end(addCallback(u.query.callback, "['stop ok', '" + u.query.stop + "']"))
catch err
response.end(addCallback(u.query.callback, "['stop fail', '" + u.query.stop + "']"))
else if u.query.welcome
if !auth.auth(u.query.username, u.query.pass, "change_settings", "change_welcome")
if !await auth.auth(u.query.username, u.query.pass, "change_settings", "change_welcome")
response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return
setting_change(settings, 'modules:welcome', (err)->
response.writeHead(200)
if(err)
response.end(addCallback(u.query.callback, "['welcome fail', '" + u.query.welcome + "']"))
else
response.end(addCallback(u.query.callback, "['welcome ok', '" + u.query.welcome + "']"))
)
try
await util.promisify(setting_change)(settings, 'modules:stop', u.query.welcome)
response.end(addCallback(u.query.callback, "['welcome ok', '" + u.query.welcome + "']"))
catch err
response.end(addCallback(u.query.callback, "['welcome fail', '" + u.query.welcome + "']"))
else if u.query.getwelcome
if !auth.auth(u.query.username, u.query.pass, "change_settings", "get_welcome")
if !await auth.auth(u.query.username, u.query.pass, "change_settings", "get_welcome")
response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return
......@@ -4174,7 +4175,7 @@ if settings.modules.http
response.end(addCallback(u.query.callback, "['get ok', '" + settings.modules.welcome + "']"))
else if u.query.loadtips
if !auth.auth(u.query.username, u.query.pass, "change_settings", "change_tips")
if !await auth.auth(u.query.username, u.query.pass, "change_settings", "change_tips")
response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return
......@@ -4192,7 +4193,7 @@ if settings.modules.http
)
else if u.query.loaddialogues
if !auth.auth(u.query.username, u.query.pass, "change_settings", "change_dialogues")
if !await auth.auth(u.query.username, u.query.pass, "change_settings", "change_dialogues")
response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return
......@@ -4210,7 +4211,7 @@ if settings.modules.http
)
else if u.query.ban
if !auth.auth(u.query.username, u.query.pass, "ban_user", "ban_user")
if !await auth.auth(u.query.username, u.query.pass, "ban_user", "ban_user")
response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return
......@@ -4223,7 +4224,7 @@ if settings.modules.http
)
else if u.query.kick
if !auth.auth(u.query.username, u.query.pass, "kick_user", "kick_user")
if !await auth.auth(u.query.username, u.query.pass, "kick_user", "kick_user")
response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return
......@@ -4239,7 +4240,7 @@ if settings.modules.http
else if u.query.death
if !auth.auth(u.query.username, u.query.pass, "start_death", "start_death")
if !await auth.auth(u.query.username, u.query.pass, "start_death", "start_death")
response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return
......@@ -4261,7 +4262,7 @@ if settings.modules.http
)
else if u.query.deathcancel
if !auth.auth(u.query.username, u.query.pass, "start_death", "cancel_death")
if !await auth.auth(u.query.username, u.query.pass, "start_death", "cancel_death")
response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return
......@@ -4282,7 +4283,7 @@ if settings.modules.http
)
else if u.query.reboot
if !auth.auth(u.query.username, u.query.pass, "stop", "reboot")
if !await auth.auth(u.query.username, u.query.pass, "stop", "reboot")
response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return
......
This diff is collapsed.
......@@ -214,10 +214,10 @@ var pushHTMLs = function() {
//建立一个http服务器,接收API操作
function requestListener(req, res) {
async function requestListener(req, res) {
var u = url.parse(req.url, true);
if (!auth.auth(u.query.username, u.query.password, "update_dashboard", "update_dashboard")) {
if (!await auth.auth(u.query.username, u.query.password, "update_dashboard", "update_dashboard")) {
res.writeHead(403);
res.end("Auth Failed.");
return;
......
// Generated by CoffeeScript 1.12.7
// Generated by CoffeeScript 2.5.1
(function() {
var Struct, _, declaration, field, i, len, loadJSON, name, result, structs_declaration, type, typedefs;
......@@ -14,14 +14,17 @@
this.i18ns = loadJSON('./data/i18n.json');
structs_declaration = loadJSON('./data/structs.json');
//常量/类型声明
structs_declaration = loadJSON('./data/structs.json'); //结构体声明
typedefs = loadJSON('./data/typedefs.json');
typedefs = loadJSON('./data/typedefs.json'); //类型声明
this.proto_structs = loadJSON('./data/proto_structs.json');
this.proto_structs = loadJSON('./data/proto_structs.json'); //消息与结构体的对应,未完成,对着duelclient.cpp加
this.constants = loadJSON('./data/constants.json');
this.constants = loadJSON('./data/constants.json'); //network.h里定义的常量
//结构体定义
this.structs = {};
for (name in structs_declaration) {
......@@ -35,7 +38,7 @@
result.chars(field.name, field.length * 2, field.encoding);
break;
default:
throw "unsupported encoding: " + field.encoding;
throw `unsupported encoding: ${field.encoding}`;
}
} else {
type = field.type;
......@@ -43,7 +46,7 @@
type = typedefs[type];
}
if (field.length) {
result.array(field.name, field.length, type);
result.array(field.name, field.length, type); //不支持结构体
} else {
if (this.structs[type]) {
result.struct(field.name, this.structs[type]);
......@@ -56,6 +59,7 @@
this.structs[name] = result;
}
//消息跟踪函数 需要重构, 另暂时只支持异步, 同步没做.
this.stoc_follows = {};
this.stoc_follows_before = {};
......@@ -154,11 +158,13 @@
});
};
//消息发送函数,至少要把俩合起来....
this.stoc_send = function(socket, proto, info) {
var buffer, header, key, ref, struct, value;
if (socket.closed) {
return;
}
//console.log proto, proto_structs.STOC[proto], structs[proto_structs.STOC[proto]]
if (typeof info === 'undefined') {
buffer = "";
} else if (Buffer.isBuffer(info)) {
......@@ -169,7 +175,7 @@
struct.set(info);
buffer = struct.buffer();
}
if (typeof proto === 'string') {
if (typeof proto === 'string') { //需要重构
ref = this.constants.STOC;
for (key in ref) {
value = ref[key];
......@@ -196,6 +202,7 @@
if (socket.closed) {
return;
}
//console.log proto, proto_structs.CTOS[proto], structs[proto_structs.CTOS[proto]]
if (typeof info === 'undefined') {
buffer = "";
} else if (Buffer.isBuffer(info)) {
......@@ -206,7 +213,7 @@
struct.set(info);
buffer = struct.buffer();
}
if (typeof proto === 'string') {
if (typeof proto === 'string') { //需要重构
ref = this.constants.CTOS;
for (key in ref) {
value = ref[key];
......@@ -228,11 +235,9 @@
}
};
this.stoc_send_chat = function(client, msg, player) {
//util
this.stoc_send_chat = function(client, msg, player = 8) {
var j, len1, line, o, r, re, ref, ref1;
if (player == null) {
player = 8;
}
if (!client) {
console.log("err stoc_send_chat");
return;
......@@ -256,11 +261,8 @@
}
};
this.stoc_send_chat_to_room = function(room, msg, player) {
this.stoc_send_chat_to_room = function(room, msg, player = 8) {
var client, j, k, len1, len2, ref, ref1;
if (player == null) {
player = 8;
}
if (!room) {
console.log("err stoc_send_chat_to_room");
return;
......
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