feat(破解封号): 防破解实时封号

This commit is contained in:
zhangxk
2023-07-07 16:35:48 +08:00
committed by luying
parent 43b629ee70
commit c5cb462d86
2 changed files with 90 additions and 37 deletions
@@ -3,7 +3,7 @@ import { BattleRecordModel } from '../../../db/BattleRecord';
import { BattleSweepRecordModel } from '../../../db/BattleSweepRecord'; import { BattleSweepRecordModel } from '../../../db/BattleSweepRecord';
import { BattleCheatRecModel } from '../../../db/BattleCheatRec'; import { BattleCheatRecModel } from '../../../db/BattleCheatRec';
import { genCode, getReasonByWarType, getWarTypeName } from '../../../pubUtils/util'; import { genCode, getReasonByWarType, getWarTypeName } from '../../../pubUtils/util';
import { WAR_TYPE, EVENT_STATUS, REDIS_KEY, KING_EXP_RATIO_TYPE, TA_EVENT, ITEM_CHANGE_REASON } from '../../../consts'; import { WAR_TYPE, EVENT_STATUS, REDIS_KEY, KING_EXP_RATIO_TYPE, TA_EVENT, ITEM_CHANGE_REASON, BLOCK_TYPE, CHECT_BLOCK_TYPE, CHECT_BATTLE_TYPE } from '../../../consts';
import { checkDaily, checkDailyAndIncrease } from '../../../services/dailyBattleService'; import { checkDaily, checkDailyAndIncrease } from '../../../services/dailyBattleService';
import { checkTowerWar, towerBattleEnd } from '../../../services/battleService'; import { checkTowerWar, towerBattleEnd } from '../../../services/battleService';
import { WarReward } from '../../../services/warRewardService'; import { WarReward } from '../../../services/warRewardService';
@@ -33,6 +33,7 @@ import { addItems } from '../../../services/role/rewardService';
import { treasureHuntChallengeConsume } from '../../../services/activity/treasureHuntService'; import { treasureHuntChallengeConsume } from '../../../services/activity/treasureHuntService';
import { combineItems } from '../../../services/role/util'; import { combineItems } from '../../../services/role/util';
import { isHeroHidden } from '../../../services/dataService'; import { isHeroHidden } from '../../../services/dataService';
import { getRoleOnlineInfo, redisClient, roleLeave } from '../../../services/redisService';
export default function (app: Application) { export default function (app: Application) {
new HandlerService(app, {}); new HandlerService(app, {});
@@ -543,6 +544,47 @@ export class NormalBattleHandler {
if (!rec) { if (!rec) {
return resResult(STATUS.BATTLE_CHECK_REC_SAVE_ERR); return resResult(STATUS.BATTLE_CHECK_REC_SAVE_ERR);
} }
await this.blockByRecordBattleCheat(roleId, type);
return resResult(STATUS.SUCCESS); return resResult(STATUS.SUCCESS);
} }
/**
* 防破解实时封号
* @param {string} roleId
* @param {number} type 查封类型(封除类型不为200)
* @returns
*/
async blockByRecordBattleCheat(roleId: string, type: number) {
if (type && type === CHECT_BATTLE_TYPE) {
// console.log("blockByRecordBattleCheat----type=", type);
return;
}
// 设置redis开关
const isCheckBlock = await redisClient().getAsync(REDIS_KEY.IS_CHECT_BLOCK);
if (!isCheckBlock || isCheckBlock == undefined) {
await redisClient().setAsync(REDIS_KEY.IS_CHECT_BLOCK, `${CHECT_BLOCK_TYPE.OPEN}`);;
}
if (isCheckBlock && parseInt(isCheckBlock) != CHECT_BLOCK_TYPE.OPEN) {
console.log("blockByRecordBattleCheat-防破解查封功能已关闭!!!");
return;
}
const blockType: BLOCK_TYPE = BLOCK_TYPE.BLOCK;
const blockReason: string = "使用第三方软件, 封停账号, 封停时间为:" + new Date();;
let role = await RoleModel.updateRoleInfo(roleId, { blockType, blockReason });
if (!role) return resResult(STATUS.ROLE_NOT_FOUND);
let { isOnline, sid } = await getRoleOnlineInfo(roleId);
if (isOnline) {
await this.app.rpc.connector.connectorRemote.setOtherUserSession.toServer(sid, [{ roleId, blockType }]);
await this.app.rpc.connector.connectorRemote.remoteLogin.toServer(sid, roleId, STATUS.BLOCKED);
await roleLeave(roleId);
}
return;
}
} }
+11
View File
@@ -26,6 +26,8 @@ export const PUSH_INTERVAL = 5 * 1000; // 分批时间,5秒一批
export const CLOSE_LOGIN_WHEN_ONLINE_MAX = 1; // 是否在服务器达到最大在线人数限制时关闭登录 export const CLOSE_LOGIN_WHEN_ONLINE_MAX = 1; // 是否在服务器达到最大在线人数限制时关闭登录
export const MAX_ONLINE_USER_COUNT = 100000; // 最大在线人数限制 export const MAX_ONLINE_USER_COUNT = 100000; // 最大在线人数限制
export const CHECT_BATTLE_TYPE = 200; //非异常战斗类型
export enum TIME_OUTPUT_TYPE { export enum TIME_OUTPUT_TYPE {
DATE = 1, DATE = 1,
STAMP_10 = 2, STAMP_10 = 2,
@@ -277,6 +279,9 @@ export enum REDIS_KEY {
PUBLIC_ACCOUNT_GIFT = 'pubAccGiftChannel', // 公众号频道 PUBLIC_ACCOUNT_GIFT = 'pubAccGiftChannel', // 公众号频道
SEND_GIFT_CODE = 'sendGiftCodeChannel', // 礼包码频道 SEND_GIFT_CODE = 'sendGiftCodeChannel', // 礼包码频道
MAX_ONLINE_USERS = 'maxOnlineUsers', // 最高在线人数限制 MAX_ONLINE_USERS = 'maxOnlineUsers', // 最高在线人数限制
IS_CHECT_BLOCK = 'isCheckBlock', // 防破解检测封号开关,0-开,1-关
} }
// 各排行榜对应hash的key // 各排行榜对应hash的key
@@ -1322,3 +1327,9 @@ export enum TEAM_TYPE {
VESTIGE = 3, // 遗迹 VESTIGE = 3, // 遗迹
GVG_BATTLE = 4, // 激战期 GVG_BATTLE = 4, // 激战期
} }
// 异常战斗封号开关
export enum CHECT_BLOCK_TYPE{
OPEN = 0, //开
CLOSE = 1, //关
}