diff --git a/game-server/app/servers/activity/remote/activityRemote.ts b/game-server/app/servers/activity/remote/activityRemote.ts index bf907963e..9e09896eb 100644 --- a/game-server/app/servers/activity/remote/activityRemote.ts +++ b/game-server/app/servers/activity/remote/activityRemote.ts @@ -11,6 +11,7 @@ import { deleteActivities, loadActivities, saveActivitiesToGroup, updateActiviti import { saveActivityMemory } from '../../../services/log/memoryLogService'; import { setApiIsClose } from '../../../services/chatService'; import { setHiddenData } from '../../../services/dataService'; +import { setKvToMemory } from '../../../services/pushService'; export default function (app: Application) { new HandlerService(app, {}); @@ -157,4 +158,12 @@ export class ActivityRemote { errlogger.error(`remote ${__filename} \n ${e.stack}`); } } + + public async setKvToMemory(originK: string, originV: string, aesKey: string, aesIV: string, now: number) { + try { + setKvToMemory(originK, originV, aesKey, aesIV, now); + } catch(e) { + errlogger.error(`remote ${__filename} \n ${e.stack}`); + } + } } \ No newline at end of file diff --git a/game-server/app/servers/battle/remote/battleRemote.ts b/game-server/app/servers/battle/remote/battleRemote.ts index c612c1c8a..390f2328a 100644 --- a/game-server/app/servers/battle/remote/battleRemote.ts +++ b/game-server/app/servers/battle/remote/battleRemote.ts @@ -5,6 +5,7 @@ import { setApiIsClose } from '../../../services/chatService'; import { setHiddenData } from '../../../services/dataService'; import { getServerMainten, setServerMainten, stopServerMainten } from '../../../services/gmService'; import { savePvpSeasonMemory } from '../../../services/log/memoryLogService'; +import { setKvToMemory } from '../../../services/pushService'; import { taflush } from '../../../services/sdkService'; import { setPvpSeasonNum, setPvpSettleSeasonNum } from '../../../services/timeTaskService'; import { errlogger } from '../../../util/logger'; @@ -164,4 +165,12 @@ export class BattleRemote { errlogger.error(`remote ${__filename} \n ${e.stack}`); } } + + public async setKvToMemory(originK: string, originV: string, aesKey: string, aesIV: string, now: number) { + try { + setKvToMemory(originK, originV, aesKey, aesIV, now); + } catch(e) { + errlogger.error(`remote ${__filename} \n ${e.stack}`); + } + } } \ No newline at end of file diff --git a/game-server/app/servers/chat/remote/chatRemote.ts b/game-server/app/servers/chat/remote/chatRemote.ts index ffd501806..f3eea73f3 100644 --- a/game-server/app/servers/chat/remote/chatRemote.ts +++ b/game-server/app/servers/chat/remote/chatRemote.ts @@ -3,7 +3,7 @@ import { reloadResources } from '../../../pubUtils/data'; import { _checkFilterWords, taflush } from '../../../services/sdkService'; import { getServerMainten, setServerMainten, stopServerMainten } from '../../../services/gmService'; import { errlogger } from '../../../util/logger'; -import { addUserToChannel, sendMessageToChannel, sendMessgeToChannelByBatch } from '../../../services/pushService'; +import { addUserToChannel, sendMessageToChannel, sendMessgeToChannelByBatch, setKvToMemory } from '../../../services/pushService'; import { setApiIsClose } from '../../../services/chatService'; import { setHiddenData } from '../../../services/dataService'; @@ -165,4 +165,12 @@ export class ChatRemote { errlogger.error(`remote ${__filename} \n ${e.stack}`); } } + + public async setKvToMemory(originK: string, originV: string, aesKey: string, aesIV: string, now: number) { + try { + setKvToMemory(originK, originV, aesKey, aesIV, now); + } catch(e) { + errlogger.error(`remote ${__filename} \n ${e.stack}`); + } + } } diff --git a/game-server/app/servers/connector/remote/connectorRemote.ts b/game-server/app/servers/connector/remote/connectorRemote.ts index 81efcf4b2..4de30a9bd 100644 --- a/game-server/app/servers/connector/remote/connectorRemote.ts +++ b/game-server/app/servers/connector/remote/connectorRemote.ts @@ -12,6 +12,7 @@ import { savePvpSeasonMemory } from '../../../services/log/memoryLogService'; import { setApiIsClose } from '../../../services/chatService'; import { setPvpSeasonNum, setPvpSettleSeasonNum } from '../../../services/timeTaskService'; import { setHiddenData } from '../../../services/dataService'; +import { setKvToMemory } from '../../../services/pushService'; export default function (app: Application) { new HandlerService(app, {}); @@ -193,4 +194,12 @@ export class ConnectorRemote { errlogger.error(`remote ${__filename} \n ${e.stack}`); } } + + public async setKvToMemory(originK: string, originV: string, aesKey: string, aesIV: string, now: number) { + try { + setKvToMemory(originK, originV, aesKey, aesIV, now); + } catch(e) { + errlogger.error(`remote ${__filename} \n ${e.stack}`); + } + } } diff --git a/game-server/app/servers/guild/remote/guildRemote.ts b/game-server/app/servers/guild/remote/guildRemote.ts index 7d414f7de..3d3431758 100644 --- a/game-server/app/servers/guild/remote/guildRemote.ts +++ b/game-server/app/servers/guild/remote/guildRemote.ts @@ -5,6 +5,7 @@ import { getServerMainten, setServerMainten, stopServerMainten } from '../../../ import { errlogger } from '../../../util/logger'; import { setApiIsClose } from '../../../services/chatService'; import { setHiddenData } from '../../../services/dataService'; +import { setKvToMemory } from '../../../services/pushService'; export default function (app: Application) { new HandlerService(app, {}); @@ -83,4 +84,12 @@ export class GuildRemote { errlogger.error(`remote ${__filename} \n ${e.stack}`); } } + + public async setKvToMemory(originK: string, originV: string, aesKey: string, aesIV: string, now: number) { + try { + setKvToMemory(originK, originV, aesKey, aesIV, now); + } catch(e) { + errlogger.error(`remote ${__filename} \n ${e.stack}`); + } + } } \ No newline at end of file diff --git a/game-server/app/servers/order/remote/orderRemote.ts b/game-server/app/servers/order/remote/orderRemote.ts index b34fe580d..d39d737f4 100644 --- a/game-server/app/servers/order/remote/orderRemote.ts +++ b/game-server/app/servers/order/remote/orderRemote.ts @@ -6,6 +6,7 @@ import { taflush } from '../../../services/sdkService'; import { errlogger } from '../../../util/logger'; import { setApiIsClose } from '../../../services/chatService'; import { setHiddenData } from '../../../services/dataService'; +import { setKvToMemory } from '../../../services/pushService'; export default function (app: Application) { new HandlerService(app, {}); @@ -95,4 +96,12 @@ export class OrderRemote { errlogger.error(`remote ${__filename} \n ${e.stack}`); } } + + public async setKvToMemory(originK: string, originV: string, aesKey: string, aesIV: string, now: number) { + try { + setKvToMemory(originK, originV, aesKey, aesIV, now); + } catch(e) { + errlogger.error(`remote ${__filename} \n ${e.stack}`); + } + } } \ No newline at end of file diff --git a/game-server/app/servers/role/remote/roleRemote.ts b/game-server/app/servers/role/remote/roleRemote.ts index 2db526a4e..12f5e4dce 100644 --- a/game-server/app/servers/role/remote/roleRemote.ts +++ b/game-server/app/servers/role/remote/roleRemote.ts @@ -9,6 +9,7 @@ import { errlogger } from '../../../util/logger'; import { setApiIsClose } from '../../../services/chatService'; import { setPvpSeasonNum, setPvpSettleSeasonNum } from '../../../services/timeTaskService'; import { setHiddenData } from '../../../services/dataService'; +import { setKvToMemory } from '../../../services/pushService'; export default function (app: Application) { new HandlerService(app, {}); @@ -150,4 +151,12 @@ export class RoleRemote { errlogger.error(`remote ${__filename} \n ${e.stack}`); } } + + public async setKvToMemory(originK: string, originV: string, aesKey: string, aesIV: string, now: number) { + try { + setKvToMemory(originK, originV, aesKey, aesIV, now); + } catch(e) { + errlogger.error(`remote ${__filename} \n ${e.stack}`); + } + } } diff --git a/game-server/app/servers/systimer/remote/systimerRemote.ts b/game-server/app/servers/systimer/remote/systimerRemote.ts index fb069aad1..6242de31d 100644 --- a/game-server/app/servers/systimer/remote/systimerRemote.ts +++ b/game-server/app/servers/systimer/remote/systimerRemote.ts @@ -18,6 +18,7 @@ import { ActivityModelType } from '../../../db/Activity'; import { GUILD_ACTIVITY_TYPE, LADDER_STATUS } from '../../../consts'; import { setApiIsClose } from '../../../services/chatService'; import { setHiddenData } from '../../../services/dataService'; +import { setKvToMemory } from '../../../services/pushService'; export default function (app: Application) { return new SystimerRemote(app); @@ -241,5 +242,12 @@ export class SystimerRemote { errlogger.error(`remote ${__filename} \n ${e.stack}`); } } - + + public async setKvToMemory(originK: string, originV: string, aesKey: string, aesIV: string, now: number) { + try { + setKvToMemory(originK, originV, aesKey, aesIV, now); + } catch(e) { + errlogger.error(`remote ${__filename} \n ${e.stack}`); + } + } } diff --git a/game-server/app/services/pushService.ts b/game-server/app/services/pushService.ts index ff418c8dd..210ef45dc 100644 --- a/game-server/app/services/pushService.ts +++ b/game-server/app/services/pushService.ts @@ -172,25 +172,46 @@ export function removeFromTeamChannel(teamCode: string, roleId: string) { } function getKvFromMemory() { - let k = pinus.app.get('aeaKey'); - let v = pinus.app.get('aesIV'); + let aesKey = pinus.app.get('aesKey'); + let aesIV = pinus.app.get('aesIV'); + let originK = pinus.app.get('originK'); + let originV = pinus.app.get('originV'); let kvRefTime = pinus.app.get('kvRefTime'); let now = new Date().setMinutes(0, 0, 0); if(!kvRefTime || now - kvRefTime >= 60 * 60 * 1000) { - k = genCode(24); - v = genCode(16); - pinus.app.set('aeaKey', k); - pinus.app.set('aesIV', v); - pinus.app.set('kvRefTime', now); + originK = genCode(24); + originV = genCode(16); + let msgEncrypt = new MsgEncrypt({ k: originK, v: originV }); + ({ aesKey, aesIV } = msgEncrypt.getEncodeKv()); + + setKvToRemote(originK, originV, aesKey, aesIV, now); } - return { k, v } + return { aesKey, aesIV, originK, originV, now } +} + +function setKvToRemote(originK: string, originV: string, aesKey: string, aesIV: string, now: number) { + pinus.app.rpc.activity.activityRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now); + pinus.app.rpc.battle.battleRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now); + pinus.app.rpc.chat.chatRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now); + pinus.app.rpc.connector.connectorRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now); + pinus.app.rpc.guild.guildRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now); + pinus.app.rpc.order.orderRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now); + pinus.app.rpc.role.roleRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now); + pinus.app.rpc.systimer.systimerRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now); +} + +export function setKvToMemory(originK: string, originV: string, aesKey: string, aesIV: string, now: number) { + pinus.app.set('originK', originK); + pinus.app.set('originV', originV); + pinus.app.set('aesKey', aesKey); + pinus.app.set('aesIV', aesIV); + pinus.app.set('kvRefTime', now); } function encryptMsg(event: string, json: any) { if(checkNotEncryptRoute(event)) return json - let kv = getKvFromMemory(); - let msgEncrypt = new MsgEncrypt(kv); - let { aesKey, aesIV } = msgEncrypt.getEncodeKv(); + let { aesKey, aesIV, originK, originV } = getKvFromMemory(); + let msgEncrypt = new MsgEncrypt({ originK, originV }); let data = msgEncrypt.encryptMsg(json); return { data, k: aesKey, v: aesIV } } diff --git a/shared/pubUtils/sysUtil.ts b/shared/pubUtils/sysUtil.ts index acec4fc9d..e7c922068 100644 --- a/shared/pubUtils/sysUtil.ts +++ b/shared/pubUtils/sysUtil.ts @@ -29,13 +29,17 @@ export class MsgEncrypt { private encodeK: string = ''; private encodeV: string = ''; - constructor(data: { k?: string, v?: string, encodeK?: string, encodeV?: string }) { + constructor(data: { k?: string, v?: string, encodeK?: string, encodeV?: string, originK?: string, originV?: string }) { if(data.k && data.v) { this.encodeAndSetKv(data.k, data.v); } if(data.encodeK && data.encodeV) { this.decodeAndSetKv(data.encodeK, data.encodeV); } + if(data.originK && data.originV) { + this.k = data.originK; + this.v = data.originV; + } } public decryptMsg(data: string) {