🎈 perf(加密): 推送的kv不每次加密而是缓存

This commit is contained in:
luying
2022-12-07 10:52:01 +08:00
parent a83deeff5f
commit e46228d09b
10 changed files with 109 additions and 14 deletions

View File

@@ -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}`);
}
}
}

View File

@@ -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}`);
}
}
}

View File

@@ -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}`);
}
}
}

View File

@@ -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}`);
}
}
}

View File

@@ -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}`);
}
}
}

View File

@@ -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}`);
}
}
}

View File

@@ -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}`);
}
}
}

View File

@@ -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}`);
}
}
}

View File

@@ -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 }
}

View File

@@ -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) {