feat(破解封号): 防破解实时封号
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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, //关
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user