web-server 注册、登录、获取服务器列表;game-server token 校验
This commit is contained in:
48
web-server/app/middleware/parmsDecode.ts
Normal file
48
web-server/app/middleware/parmsDecode.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import { ENCRYPT_KEY, ENCRYPT_IV } from './../consts/consts';
|
||||
import { Context } from 'egg';
|
||||
const crypto = require('crypto');
|
||||
const isJSON = require('koa-is-json');
|
||||
|
||||
function aesEncrypt(data, key, iv) {
|
||||
const cipher = crypto.createCipheriv('aes-192-cbc', key, iv);
|
||||
var crypted = cipher.update(data, 'utf8', 'hex');
|
||||
crypted += cipher.final('hex');
|
||||
return crypted;
|
||||
}
|
||||
|
||||
function aesDecrypt(data, key, iv) {
|
||||
const decipher = crypto.createDecipheriv('aes-192-cbc', key, iv);
|
||||
var decrypted = decipher.update(data, 'hex', 'utf8');
|
||||
decrypted += decipher.final('utf8');
|
||||
return decrypted;
|
||||
}
|
||||
|
||||
module.exports = options => {
|
||||
return async function parmsDecode(ctx: Context, next) {
|
||||
if (options.threshold && ctx.length < options.threshold) return;
|
||||
let reqBody = ctx.request.body;
|
||||
if (!reqBody.data) return;
|
||||
|
||||
if (isJSON(reqBody)) {
|
||||
let encodeStr = aesEncrypt(JSON.stringify(reqBody), ENCRYPT_KEY, ENCRYPT_IV);
|
||||
console.log(`encoded str: ${encodeStr}`);
|
||||
}
|
||||
|
||||
let decodeStr = aesDecrypt(reqBody.data, ENCRYPT_KEY, ENCRYPT_IV);
|
||||
try {
|
||||
ctx.request.body = JSON.parse(decodeStr);
|
||||
} catch (e) {
|
||||
console.error('parms parse err');
|
||||
}
|
||||
|
||||
await next();
|
||||
|
||||
let resBody = ctx.body;
|
||||
console.log('return value:', resBody);
|
||||
if (isJSON(resBody)) {
|
||||
ctx.body = {result: aesEncrypt(JSON.stringify(resBody), ENCRYPT_KEY, ENCRYPT_IV)};
|
||||
} else {
|
||||
ctx.body = {result: aesEncrypt(JSON.stringify({status: 3, data: 'internal err'}), ENCRYPT_KEY, ENCRYPT_IV)};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user