Skip to content

Commit

Permalink
Redis
Browse files Browse the repository at this point in the history
  • Loading branch information
lshqqytiger committed Apr 9, 2022
1 parent 986daa5 commit a668ae7
Show file tree
Hide file tree
Showing 8 changed files with 363 additions and 3,778 deletions.
191 changes: 90 additions & 101 deletions Server/lib/Game/kkutu.js
Original file line number Diff line number Diff line change
Expand Up @@ -399,86 +399,79 @@ exports.Client = function(socket, profile, sid){
my.flush(my.box, my.equip);
}
};
my.refresh = function(){
return new Promise(async (resolve) => {
if(my.guest){
my.equip = {};
my.data = new exports.Data();
my.money = 0;
my.friends = {};

resolve({ result: 200 });
}else{
const $user = (await DB.users.findOne({ where: { _id: my.id } })) || new DB.User();
var first = !$user._id;
var black = first ? "" : $user.black;
/* Enhanced User Block System [S] */
const blockedUntil = (first || !$user.blockedUntil) ? null : $user.blockedUntil;
/* Enhanced User Block System [E] */
my.refresh = async function(){
if(my.guest){
my.equip = {};
my.data = new exports.Data();
my.money = 0;
my.friends = {};

return { result: 200 };
}else{
const $user = (await DB.users.findOne({ where: { _id: my.id } })) || new DB.User();
var first = !$user._id;
var black = first ? "" : $user.black;
/* Enhanced User Block System [S] */
const blockedUntil = (first || !$user.blockedUntil) ? null : $user.blockedUntil;
/* Enhanced User Block System [E] */

if(black == "null") black = false;
if(black == "chat"){
black = false;
my.noChat = true;
}
/* 망할 셧다운제
if(Cluster.isMaster && !my.isAjae){ // null일 수는 없다.
my.isAjae = Ajae.checkAjae(($user.birthday || "").split('-'));
if(my.isAjae === null){
if(my._birth) my._checkAjae = setTimeout(function(){
my.sendError(442);
my.socket.close();
}, 300000);
else{
my.sendError(441);
my.socket.close();
return;
}
if(black == "null") black = false;
if(black == "chat"){
black = false;
my.noChat = true;
}
/* 망할 셧다운제
if(Cluster.isMaster && !my.isAjae){ // null일 수는 없다.
my.isAjae = Ajae.checkAjae(($user.birthday || "").split('-'));
if(my.isAjae === null){
if(my._birth) my._checkAjae = setTimeout(function(){
my.sendError(442);
my.socket.close();
}, 300000);
else{
my.sendError(441);
my.socket.close();
return;
}
}*/
my.exordial = $user.exordial || "";
my.equip = $user.equip || {};
my.box = $user.box || {};
my.data = new exports.Data($user.kkutu);
my.money = Number($user.money);
my.friends = $user.friends || {};
if(first) my.flush();
else{
my.checkExpire();
my.okgCount = Math.floor((my.data.playTime || 0) / PER_OKG);
}
/* Enhanced User Block System [S] */
if(black){
if(blockedUntil) resolve({ result: 444, black: black, blockedUntil: blockedUntil });
else resolve({ result: 444, black: black });
}
/* Enhanced User Block System [E] */
else if(Cluster.isMaster && $user.server) resolve({ result: 409, black: $user.server });
else if(exports.NIGHT && my.isAjae === false) resolve({ result: 440 });
else resolve({ result: 200 });
};
});
}*/
my.exordial = $user.exordial || "";
my.equip = $user.equip || {};
my.box = $user.box || {};
my.data = new exports.Data($user.kkutu);
my.money = Number($user.money);
my.friends = $user.friends || {};
if(first) my.flush();
else{
my.checkExpire();
my.okgCount = Math.floor((my.data.playTime || 0) / PER_OKG);
}
/* Enhanced User Block System [S] */
if(black){
if(blockedUntil) return { result: 444, black: black, blockedUntil: blockedUntil };
else return { result: 444, black: black };
}
/* Enhanced User Block System [E] */
else if(Cluster.isMaster && $user.server) return { result: 409, black: $user.server };
else if(exports.NIGHT && my.isAjae === false) return { result: 440 };
else return { result: 200 };
};
};
my.flush = function(box, equip, friends){
return new Promise(async (resolve) => {
if(my.guest) return resolve({ id: my.id, prev: 0 });

const user = (await DB.users.findOne({ where: { _id: my.id } })) || new DB.User(my.id);
user.money = isNaN(my.money) ? undefined : my.money;
user.kkutu = my.data && !isNaN(my.data.score) ? my.data : undefined;
user.box = my.box || undefined;
user.equip = my.equip || undefined;
user.friends = my.friends || undefined;
console.log(my)
DB.users.save(user).then(() => {
DB.redis.getGlobal(my.id).then(function(_res){
DB.redis.putGlobal(my.id, my.data.score).then(function(res){
JLog.log(`FLUSHED [${my.id}] PTS=${my.data.score} MNY=${my.money}`);
resolve({ id: my.id, prev: _res });
});
});
});
});
my.flush = async function(box, equip, friends){
if(my.guest) return { id: my.id, prev: 0 };

const user = (await DB.users.findOne({ where: { _id: my.id } })) || new DB.User(my.id);
user.money = isNaN(my.money) ? undefined : my.money;
user.kkutu = my.data && !isNaN(my.data.score) ? my.data : undefined;
user.box = my.box || undefined;
user.equip = my.equip || undefined;
user.friends = my.friends || undefined;
await DB.users.save(user);

const prev = await DB.redis.getGlobal(my.id);
await DB.redis.putGlobal(my.id, my.data.score);
JLog.log(`FLUSHED [${my.id}] PTS=${my.data.score} MNY=${my.money}`);
return { id: my.id, prev };
};
my.invokeWordPiece = function(text, coef){
if(!my.game.wpc) return;
Expand Down Expand Up @@ -1072,7 +1065,7 @@ exports.Room = function(room, channel){
my.start();
}else DIC[my.master].sendError(412);
};
my.start = function(pracLevel){
my.start = async function(pracLevel){
var i, j, o, hum = 0;
var now = (new Date()).getTime();

Expand Down Expand Up @@ -1124,11 +1117,9 @@ exports.Room = function(room, channel){
o.game.wpc = [];
}
my.game.hum = hum;
my.getTitle().then(function(title){
my.game.title = title;
my.export();
setTimeout(my.roundReady, 2000);
});
my.game.title = await my.getTitle();
my.export();
setTimeout(my.roundReady, 2000);
my.byMaster('starting', { target: my.id });
delete my._avTeam;
delete my._teams;
Expand All @@ -1145,7 +1136,7 @@ exports.Room = function(room, channel){
clearTimeout(my.game.hintTimer2);
clearTimeout(my.game.qTimer);
};
my.roundEnd = function(data){
my.roundEnd = async function(data){
var i, o, rw;
var res = [];
var users = {};
Expand Down Expand Up @@ -1215,25 +1206,23 @@ exports.Room = function(room, channel){

suv.push(o.flush(true));
}
Promise.all(suv).then(function(uds){
var o = {};
const uds = await Promise.all(suv);
var o = {};

suv = [];
for(i in uds){
o[uds[i].id] = { prev: uds[i].prev };
suv.push(DB.redis.getSurround(uds[i].id));
}
const ranks = await Promise.all(suv);
var i, j;

for(i in ranks){
if(!o[ranks[i].target]) continue;

suv = [];
for(i in uds){
o[uds[i].id] = { prev: uds[i].prev };
suv.push(DB.redis.getSurround(uds[i].id));
}
Promise.all(suv).then(function(ranks){
var i, j;

for(i in ranks){
if(!o[ranks[i].target]) continue;

o[ranks[i].target].list = ranks[i].data;
}
my.byMaster('roundEnd', { result: res, users: users, ranks: o, data: data }, true);
});
});
o[ranks[i].target].list = ranks[i].data;
}
my.byMaster('roundEnd', { result: res, users: users, ranks: o, data: data }, true);
my.gaming = false;
my.export();
delete my.game.seq;
Expand Down
91 changes: 45 additions & 46 deletions Server/lib/Game/master.js
Original file line number Diff line number Diff line change
Expand Up @@ -439,57 +439,56 @@ exports.init = function(_SID, CHAN){
$c.socket.close();
return;
}
$c.refresh().then(async function(ref){
/* Enhanced User Block System [S] */
let isBlockRelease = false;

if(ref.blockedUntil < Date.now()) {
DIC[$c.id] = $c;
const user = await MainDB.users.findOne({ where: { _id: $c.id } });
user.blockedUntil = 0;
user.black = null;
const ref = await $c.refresh();
/* Enhanced User Block System [S] */
let isBlockRelease = false;

if(ref.blockedUntil < Date.now()) {
DIC[$c.id] = $c;
const user = await MainDB.users.findOne({ where: { _id: $c.id } });
user.blockedUntil = 0;
user.black = null;
await MainDB.users.save(user);
JLog.info(`사용자 #${$c.id}의 이용제한이 해제되었습니다.`);
isBlockRelease = true;
}
/* Enhanced User Block System [E] */

/* Enhanced User Block System [S] */
if(ref.result == 200 || isBlockRelease){
/* Enhanced User Block System [E] */
DIC[$c.id] = $c;
DNAME[($c.profile.title || $c.profile.name).replace(/\s/g, "")] = $c.id;
const user = await MainDB.users.findOne({ where: { _id: $c.id } });
if(user){
user.server = SID;
await MainDB.users.save(user);
JLog.info(`사용자 #${$c.id}의 이용제한이 해제되었습니다.`);
isBlockRelease = true;
}
/* Enhanced User Block System [E] */

/* Enhanced User Block System [S] */
if(ref.result == 200 || isBlockRelease){
/* Enhanced User Block System [E] */
DIC[$c.id] = $c;
DNAME[($c.profile.title || $c.profile.name).replace(/\s/g, "")] = $c.id;
const user = await MainDB.users.findOne({ where: { _id: $c.id } });
if(user){
user.server = SID;
await MainDB.users.save(user);
}

if (($c.guest && GLOBAL.GOOGLE_RECAPTCHA_TO_GUEST) || GLOBAL.GOOGLE_RECAPTCHA_TO_USER) {
$c.socket.send(JSON.stringify({
type: 'recaptcha',
siteKey: GLOBAL.GOOGLE_RECAPTCHA_SITE_KEY
}));
} else {
$c.passRecaptcha = true;

joinNewUser($c);
}
if (($c.guest && GLOBAL.GOOGLE_RECAPTCHA_TO_GUEST) || GLOBAL.GOOGLE_RECAPTCHA_TO_USER) {
$c.socket.send(JSON.stringify({
type: 'recaptcha',
siteKey: GLOBAL.GOOGLE_RECAPTCHA_SITE_KEY
}));
} else {
/* Enhanced User Block System [S] */
if(ref.blockedUntil) $c.send('error', {
code: ref.result, message: ref.black, blockedUntil: ref.blockedUntil
});
else $c.send('error', {
code: ref.result, message: ref.black
});
/* Enhanced User Block System [E] */

$c._error = ref.result;
$c.socket.close();
// JLog.info("Black user #" + $c.id);
$c.passRecaptcha = true;

joinNewUser($c);
}
});
} else {
/* Enhanced User Block System [S] */
if(ref.blockedUntil) $c.send('error', {
code: ref.result, message: ref.black, blockedUntil: ref.blockedUntil
});
else $c.send('error', {
code: ref.result, message: ref.black
});
/* Enhanced User Block System [E] */

$c._error = ref.result;
$c.socket.close();
// JLog.info("Black user #" + $c.id);
}
});
Server.on('error', function (err) {
JLog.warn("Error on ws: " + err.toString());
Expand Down
35 changes: 17 additions & 18 deletions Server/lib/Game/slave.js
Original file line number Diff line number Diff line change
Expand Up @@ -157,26 +157,25 @@ Server.on('connection', async function(socket, info){
$c.socket.close();
return;
}
$c.refresh().then(function(ref){
if(ref.result == 200){
DIC[$c.id] = $c;
DNAME[($c.profile.title || $c.profile.name).replace(/\s/g, "")] = $c.id;

$c.enter(room, reserve.spec, reserve.pass);
if($c.place == room.id){
$c.publish('connRoom', { user: $c.getData() });
}else{ // 입장 실패
$c.socket.close();
}
JLog.info(`Chan @${CHAN} New #${$c.id}`);
}else{
$c.send('error', {
code: ref.result, message: ref.black
});
$c._error = ref.result;
const ref = await $c.refresh();
if(ref.result == 200){
DIC[$c.id] = $c;
DNAME[($c.profile.title || $c.profile.name).replace(/\s/g, "")] = $c.id;

$c.enter(room, reserve.spec, reserve.pass);
if($c.place == room.id){
$c.publish('connRoom', { user: $c.getData() });
}else{ // 입장 실패
$c.socket.close();
}
});
JLog.info(`Chan @${CHAN} New #${$c.id}`);
}else{
$c.send('error', {
code: ref.result, message: ref.black
});
$c._error = ref.result;
$c.socket.close();
}
});
Server.on('error', function(err){
JLog.warn("Error on ws: " + err.toString());
Expand Down
Loading

0 comments on commit a668ae7

Please sign in to comment.