服务器:修复白名单bug
This commit is contained in:
@@ -64,6 +64,7 @@ export class GmHandler {
|
|||||||
async startMaintenance(msg: { id: number, startTime: number, endTime: number, hasNotify: boolean }, session: BackendSession) {
|
async startMaintenance(msg: { id: number, startTime: number, endTime: number, hasNotify: boolean }, session: BackendSession) {
|
||||||
const { id, startTime, endTime, hasNotify } = msg;
|
const { id, startTime, endTime, hasNotify } = msg;
|
||||||
if(!id || !isNumber(startTime) || !isNumber(endTime)) return resResult(STATUS.WRONG_PARMS);
|
if(!id || !isNumber(startTime) || !isNumber(endTime)) return resResult(STATUS.WRONG_PARMS);
|
||||||
|
if(endTime < nowSeconds()) return resResult(STATUS.WRONG_PARMS, '结束时间不能比现在早');
|
||||||
const uid = session.get('uid');
|
const uid = session.get('uid');
|
||||||
let newMaintenance: Maintenance = { batchCode: genCode(10), startTime, endTime, hasNotify, isOpen: true }
|
let newMaintenance: Maintenance = { batchCode: genCode(10), startTime, endTime, hasNotify, isOpen: true }
|
||||||
let server = await ServerlistModel.updateByServerId(id, { maintenance: newMaintenance });
|
let server = await ServerlistModel.updateByServerId(id, { maintenance: newMaintenance });
|
||||||
@@ -76,10 +77,10 @@ export class GmHandler {
|
|||||||
async startRegionMaintenance(msg: { startTime: number, endTime: number, hasNotify: boolean }, session: BackendSession) {
|
async startRegionMaintenance(msg: { startTime: number, endTime: number, hasNotify: boolean }, session: BackendSession) {
|
||||||
const { startTime, endTime, hasNotify } = msg;
|
const { startTime, endTime, hasNotify } = msg;
|
||||||
if(!isNumber(startTime) || !isNumber(endTime)) return resResult(STATUS.WRONG_PARMS);
|
if(!isNumber(startTime) || !isNumber(endTime)) return resResult(STATUS.WRONG_PARMS);
|
||||||
|
if(endTime < nowSeconds()) return resResult(STATUS.WRONG_PARMS, '结束时间不能比现在早');
|
||||||
const uid = session.get('uid');
|
const uid = session.get('uid');
|
||||||
let newMaintenance: Maintenance = { batchCode: genCode(10), startTime, endTime, hasNotify, isOpen: true }
|
let newMaintenance: Maintenance = { batchCode: genCode(10), startTime, endTime, hasNotify, isOpen: true }
|
||||||
let servers = await ServerlistModel.findByEnv(this.app.get('env'));
|
let servers = await ServerlistModel.findByEnv(this.app.get('env'));
|
||||||
console.log('*********servers', servers)
|
|
||||||
await ServerlistModel.updateByServerIds(servers.map(server => server.id), { maintenance: newMaintenance });
|
await ServerlistModel.updateByServerIds(servers.map(server => server.id), { maintenance: newMaintenance });
|
||||||
await pinus.app.rpc.systimer.systimerRemote.initMaintenance.broadcast(servers);
|
await pinus.app.rpc.systimer.systimerRemote.initMaintenance.broadcast(servers);
|
||||||
|
|
||||||
|
|||||||
@@ -62,26 +62,33 @@ async function startMarquee(marquee: MarqueeType, startJob?: Job) {
|
|||||||
startJob = undefined;
|
startJob = undefined;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
await pushMarqueeMsg(msgDatas);
|
if(marquee.endTime > nowSeconds()) {
|
||||||
console.log('***', marquee.interval)
|
|
||||||
let secondsJob = scheduleJob(`setSeconds${marquee.code}`, `*/${marquee.interval} * * * * *`, async () => {
|
|
||||||
console.log(`*****setSeconds${marquee.code}****`)
|
|
||||||
await pushMarqueeMsg(msgDatas);
|
await pushMarqueeMsg(msgDatas);
|
||||||
});
|
console.log('***', marquee.interval)
|
||||||
let endJob = scheduleJob(`end${marquee.code}`, marquee.endTime * 1000, async () => {
|
let secondsJob = scheduleJob(`setSeconds${marquee.code}`, `*/${marquee.interval} * * * * *`, async () => {
|
||||||
|
console.log(`*****setSeconds${marquee.code}****`)
|
||||||
|
await pushMarqueeMsg(msgDatas);
|
||||||
|
});
|
||||||
|
let endJob = scheduleJob(`end${marquee.code}`, marquee.endTime * 1000, async () => {
|
||||||
|
if(startJob) {
|
||||||
|
startJob.cancel();
|
||||||
|
startJob = undefined;
|
||||||
|
}
|
||||||
|
if(secondsJob) {
|
||||||
|
secondsJob.cancel();
|
||||||
|
secondsJob = undefined;
|
||||||
|
}
|
||||||
|
if(endJob) {
|
||||||
|
endJob.cancel();
|
||||||
|
endJob = undefined;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
if(startJob) {
|
if(startJob) {
|
||||||
startJob.cancel();
|
startJob.cancel();
|
||||||
startJob = undefined;
|
startJob = undefined;
|
||||||
}
|
}
|
||||||
if(secondsJob) {
|
}
|
||||||
secondsJob.cancel();
|
|
||||||
secondsJob = undefined;
|
|
||||||
}
|
|
||||||
if(endJob) {
|
|
||||||
endJob.cancel();
|
|
||||||
endJob = undefined;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -437,13 +437,17 @@ export async function initMaintenance(servers?: ServerlistType[]) {
|
|||||||
// 设置维护
|
// 设置维护
|
||||||
async function setMaintenance(batchCode: string) {
|
async function setMaintenance(batchCode: string) {
|
||||||
let { maintenance } = maintenInfos.get(batchCode);
|
let { maintenance } = maintenInfos.get(batchCode);
|
||||||
|
|
||||||
|
console.log('***** maintenance', maintenance);
|
||||||
|
|
||||||
let now = nowSeconds();
|
let now = nowSeconds();
|
||||||
// 发送消息
|
// 发送消息
|
||||||
if(maintenance.hasNotify && now < maintenance.startTime) {
|
if(maintenance.hasNotify && now < maintenance.startTime) {
|
||||||
if(now > maintenance.startTime - 5 * 60) {
|
if(now > maintenance.startTime - 5 * 60) {
|
||||||
maintenanceNotifySchedule(batchCode);
|
maintenanceNotifySchedule(batchCode);
|
||||||
} else {
|
} else {
|
||||||
scheduleJob(`maintenNotify${batchCode}`, maintenance.startTime - 5 * 60, () => {
|
scheduleJob(`maintenNotify${batchCode}`, (maintenance.startTime - 5 * 60) * 1000, () => {
|
||||||
|
console.log('******* 通知')
|
||||||
maintenanceNotifySchedule(batchCode);
|
maintenanceNotifySchedule(batchCode);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ export default class Serverlist extends BaseModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static async incRoleCnt(serverId: number) {
|
public static async incRoleCnt(serverId: number) {
|
||||||
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ serverId }, { $inc: { playerCnt: 1 } });
|
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id: serverId }, { $inc: { playerCnt: 1 } });
|
||||||
return server;
|
return server;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,14 +11,14 @@ module.exports = () => {
|
|||||||
if (server && server.maintenance && server.maintenance.isOpen && server.maintenance.startTime < nowSeconds() && server.maintenance.endTime > nowSeconds()) {
|
if (server && server.maintenance && server.maintenance.isOpen && server.maintenance.startTime < nowSeconds() && server.maintenance.endTime > nowSeconds()) {
|
||||||
let isWhiteList = await checkWhiteList(ctx.app.config.realEnv, ctx.clientIp, ctx.uid, serverId);
|
let isWhiteList = await checkWhiteList(ctx.app.config.realEnv, ctx.clientIp, ctx.uid, serverId);
|
||||||
if (isWhiteList) {
|
if (isWhiteList) {
|
||||||
await next();
|
return await next();
|
||||||
} else {
|
} else {
|
||||||
ctx.body = ctx.service.utils.resResult(STATUS.SERVER_MAINTENANCE);
|
ctx.body = ctx.service.utils.resResult(STATUS.SERVER_MAINTENANCE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await next();
|
return await next();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -289,7 +289,6 @@ export default class Auth extends Service {
|
|||||||
public async checkRole(serverId: number) {
|
public async checkRole(serverId: number) {
|
||||||
const ctx = this.ctx;
|
const ctx = this.ctx;
|
||||||
const { uid } = ctx;
|
const { uid } = ctx;
|
||||||
|
|
||||||
let canLogin = await this.ctx.service.utils.validateCanLogin();
|
let canLogin = await this.ctx.service.utils.validateCanLogin();
|
||||||
if(!canLogin) return this.ctx.service.utils.resResult(STATUS.ONLINE_USER_MAX);
|
if(!canLogin) return this.ctx.service.utils.resResult(STATUS.ONLINE_USER_MAX);
|
||||||
|
|
||||||
|
|||||||
@@ -65,14 +65,12 @@ export default class Utils extends Service {
|
|||||||
|
|
||||||
// 检测是否可以登录
|
// 检测是否可以登录
|
||||||
public async validateCanLogin() {
|
public async validateCanLogin() {
|
||||||
console.log('********* serverConst', gameData.serverConst)
|
|
||||||
if(gameData.serverConst.CLOSE_LOGIN == 1) return false;
|
if(gameData.serverConst.CLOSE_LOGIN == 1) return false;
|
||||||
if(gameData.serverConst.CLOSE_LOGIN_WHEN_ONLINE_MAX) {
|
if(gameData.serverConst.CLOSE_LOGIN_WHEN_ONLINE_MAX) {
|
||||||
|
|
||||||
let redisClient: RedisClient = this.ctx.app.context.redisClient;
|
let redisClient: RedisClient = this.ctx.app.context.redisClient;
|
||||||
let count = await redisClient.hlenAsync(REDIS_KEY.ONLINE_USERS);
|
let count = await redisClient.hlenAsync(REDIS_KEY.ONLINE_USERS);
|
||||||
|
|
||||||
console.log('********* count', count)
|
|
||||||
if(count >= gameData.serverConst.MAX_ONLINE_USER_COUNT) {
|
if(count >= gameData.serverConst.MAX_ONLINE_USER_COUNT) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,8 @@
|
|||||||
"lylocal": "cross-env EGG_SERVER_ENV=lylocal npm run dev",
|
"lylocal": "cross-env EGG_SERVER_ENV=lylocal npm run dev",
|
||||||
"alpha": "cross-env EGG_SERVER_ENV=alpha npm run dev",
|
"alpha": "cross-env EGG_SERVER_ENV=alpha npm run dev",
|
||||||
"stable": "cross-env EGG_SERVER_ENV=stable npm run dev",
|
"stable": "cross-env EGG_SERVER_ENV=stable npm run dev",
|
||||||
"deve": "cross-env EGG_SERVER_ENV=dev npm run dev"
|
"deve": "cross-env EGG_SERVER_ENV=dev npm run dev",
|
||||||
|
"sq1": "cross-env EGG_SERVER_ENV=sq1 npm run dev"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/underscore": "^1.11.3",
|
"@types/underscore": "^1.11.3",
|
||||||
|
|||||||
Reference in New Issue
Block a user