Skip to content

Commit e1ebe29

Browse files
committed
【update】隧道加密优化; review by songym
1 parent 68058cc commit e1ebe29

File tree

5 files changed

+57
-27
lines changed

5 files changed

+57
-27
lines changed

src/common/index.common.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ import {
334334
getMeterPerMapUnit,
335335
getWrapNum,
336336
conversionDegree,
337-
EncryptFetchRequestUtil
337+
EncryptRequest
338338
} from './util';
339339
import { CartoCSS, ThemeStyle } from './style';
340340
import {
@@ -499,7 +499,7 @@ export {
499499
isCORS,
500500
setCORS,
501501
FetchRequest,
502-
EncryptFetchRequestUtil,
502+
EncryptRequest,
503503
ColorsPickerUtil,
504504
ArrayStatistic,
505505
getMeterPerMapUnit,

src/common/namespace.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ import {
337337
isCORS,
338338
setCORS,
339339
FetchRequest,
340-
EncryptFetchRequestUtil,
340+
EncryptRequest,
341341
ColorsPickerUtil,
342342
ArrayStatistic,
343343
CartoCSS,
@@ -494,7 +494,7 @@ SuperMap.isCORS = isCORS;
494494
SuperMap.setRequestTimeout = setRequestTimeout;
495495
SuperMap.getRequestTimeout = getRequestTimeout;
496496
SuperMap.FetchRequest = FetchRequest;
497-
SuperMap.EncryptFetchRequestUtil = EncryptFetchRequestUtil;
497+
SuperMap.EncryptRequest = EncryptRequest;
498498

499499
// commontypes
500500
SuperMap.inherit = inheritExt;

src/common/util/EncryptFetchRequestUtil.js renamed to src/common/util/EncryptRequest.js

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ import {
99

1010
/**
1111
* @private
12-
* @name EncryptFetchRequestUtil
12+
* @name EncryptRequest
1313
* @namespace
1414
* @category BaseTypes Util
1515
* @classdesc 加密请求地址
16+
* @param {string} serverUrl - 服务地址。
1617
*/
17-
export class EncryptFetchRequestUtil {
18-
constructor(serverUrl = 'http://172.16.13.234:8090/iserver') {
18+
export class EncryptRequest {
19+
constructor(serverUrl = '') {
1920
this.serverUrl = serverUrl.split('').slice(-1)[0] === '/' ? serverUrl : `${serverUrl}/`;
2021
this.tunnelUrl = undefined;
2122
this.blockedUrlRegex = {
@@ -29,9 +30,22 @@ export class EncryptFetchRequestUtil {
2930
this.encryptAESIV = generateAESRandomIV();
3031
}
3132

32-
async encryptRequest(options) {
33+
/**
34+
* @function EncryptRequest.prototype.request
35+
* @description 加密请求地址。
36+
* @param {Object} config - 加密请求参数。
37+
* @param {string} config.method - 请求方法。
38+
* @param {string} config.url - 请求地址。
39+
* @param {string} config.params - 请求参数。
40+
* @param {Object} config.options - 请求的配置属性。
41+
* @returns {Promise} Promise 对象。
42+
*/
43+
async request(options) {
44+
if (!this.serverUrl) {
45+
throw 'serverUrl can not be empty.';
46+
}
3347
const config = Object.assign({ baseURL: '' }, options);
34-
const tunnelUrl = await this.createTunnel();
48+
const tunnelUrl = await this._createTunnel();
3549
if (!tunnelUrl) {
3650
return;
3751
}
@@ -63,12 +77,23 @@ export class EncryptFetchRequestUtil {
6377
console.debug('解密请求响应失败');
6478
return;
6579
}
66-
return JSON.parse(decryptResult).data;
80+
const resultData = JSON.parse(decryptResult);
81+
const resData = Object.create({
82+
json: function () {
83+
return Promise.resolve(resultData.data);
84+
}
85+
});
86+
return Object.assign(resData, resultData);
6787
}
6888
return response;
6989
}
7090

71-
async getRSAPublicKey() {
91+
/**
92+
* @private
93+
* @description 获取RSA public key
94+
* @function EncryptRequest.prototype._getRSAPublicKey
95+
*/
96+
async _getRSAPublicKey() {
7297
try {
7398
const response = await FetchRequest.get(`${this.serverUrl}services/security/tunnel/v1/publickey`);
7499
// 解析publicKey
@@ -88,10 +113,15 @@ export class EncryptFetchRequestUtil {
88113
}
89114
}
90115

91-
async createTunnel() {
116+
/**
117+
* @private
118+
* @description 创建隧道
119+
* @function EncryptRequest.prototype._createTunnel
120+
*/
121+
async _createTunnel() {
92122
if (!this.tunnelUrl) {
93123
try {
94-
const data = await this.getRSAPublicKey();
124+
const data = await this._getRSAPublicKey();
95125
if (!data) {
96126
throw 'fetch RSA publicKey failed';
97127
}

src/common/util/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111

1212
import { ColorsPickerUtil } from './ColorsPickerUtil';
1313

14-
import { EncryptFetchRequestUtil } from './EncryptFetchRequestUtil';
14+
import { EncryptRequest } from './EncryptRequest';
1515

1616
import { ArrayStatistic } from './ArrayStatistic';
1717
import { getMeterPerMapUnit, getWrapNum, conversionDegree } from './MapCalculateUtil';
@@ -72,7 +72,7 @@ export {
7272
setRequestTimeout,
7373
getRequestTimeout,
7474
FetchRequest,
75-
EncryptFetchRequestUtil,
75+
EncryptRequest,
7676
ColorsPickerUtil,
7777
ArrayStatistic,
7878
getMeterPerMapUnit,

test/common/util/EncryptFetchRequestUtilSpec.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import { FetchRequest } from '../../../src/common//util/FetchRequest';
2-
import { EncryptFetchRequestUtil } from '../../../src/common//util/EncryptFetchRequestUtil';
2+
import { EncryptRequest } from '../../../src/common//util/EncryptRequest';
33

4-
describe('EncryptFetchRequestUtil', () => {
4+
describe('EncryptRequest', () => {
55
const serverUrl = 'http://fake.iserver.com/iserver';
66
const options = {
77
url: 'http://fake.iserver.com/iserver/iserver/services/security/svckeys/keyIDNAME.json',
88
method: 'get'
99
};
1010

11-
it('encryptRequest fail', (done) => {
11+
it('request fail', (done) => {
1212
const spyGet = spyOn(FetchRequest, 'get').and.returnValue('');
1313
const spyPost = spyOn(FetchRequest, 'post').and.returnValue({});
14-
const encryptFetchRequestUtil = new EncryptFetchRequestUtil(serverUrl);
15-
encryptFetchRequestUtil.encryptRequest(options).then((result) => {
14+
const encryptRequest = new EncryptRequest(serverUrl);
15+
encryptRequest.request(options).then((result) => {
1616
expect(result).toBeUndefined();
1717
expect(spyGet.calls.count()).toBe(1);
1818
expect(spyPost.calls.count()).toBe(0);
@@ -22,7 +22,7 @@ describe('EncryptFetchRequestUtil', () => {
2222
});
2323
});
2424

25-
it('encryptRequest succeed', (done) => {
25+
it('request succeed', (done) => {
2626
const spyGet = spyOn(FetchRequest, 'get').and.callFake(() => {
2727
const response = {
2828
keyLength: 2048,
@@ -50,16 +50,16 @@ describe('EncryptFetchRequestUtil', () => {
5050
'HAsHE/ok/jROEySWBxWSr2FTLXcnIkeFAYzig+V7NGalR0f/VnBorkAOyOnbCSq9nM3YWrhEUFaWwAouSDeEVqe+BLuIA+7KmCBfD7hh+qyM0lC5cvZ8vOIjsI3eqhHhiPOi+IQLGHQsRbFl8hSkE0XU1GIojqjppSEAxW5jhFC2bH5hdCt/+PKuHPhATElgJqOI6FJHpVpbLWiqoP7WMYVYvZm7wubYCQIG77LUSivbUQ61gjW0mevsKRdoiRl8fafV8Zq5D+QBbCy+Mn4rWXDC+gjwvyyYxEdOixALJgfnjWL48RRHxvITPapzbEsEkcnZiu+INSULcT60BeuduKzxp+hUg6Q8sn2Bu//CNk0NlGMeT5hqTON72iI4GBgfEOnGrcBHjsT/N2jX0NnVz1bgR6B9O6TpQQr3zkjVPidw8ElSO+lM8P5AuRqtNH9ajYt2uDwWBhbG+OfyR4hKIJ9V5aDhAwkIzkUerRP78Colsg==';
5151
return Promise.resolve({ text: () => Promise.resolve(response) });
5252
});
53-
const encryptFetchRequestUtil = new EncryptFetchRequestUtil(serverUrl);
54-
encryptFetchRequestUtil.encryptAESKey = 'SLbsaRbf4Rou8Bju';
55-
encryptFetchRequestUtil.encryptAESIV = 'rzLM7Z4RJGFd';
56-
encryptFetchRequestUtil.encryptRequest(options).then((result) => {
53+
const encryptRequest = new EncryptRequest(serverUrl);
54+
encryptRequest.encryptAESKey = 'SLbsaRbf4Rou8Bju';
55+
encryptRequest.encryptAESIV = 'rzLM7Z4RJGFd';
56+
encryptRequest.request(options).then((result) => {
5757
expect(result).toBe('l3nQtAUM4li87qMfO68exInHVFQ5gS3a6pb8ySIbib8=');
5858
expect(spyGet.calls.count()).toBe(1);
5959
expect(spyPost.calls.count()).toBe(1);
6060
expect(spyCommit.calls.count()).toBe(1);
61-
expect(encryptFetchRequestUtil.tunnelUrl).not.toBeUndefined();
62-
encryptFetchRequestUtil.encryptRequest(options).then(result => {
61+
expect(encryptRequest.tunnelUrl).not.toBeUndefined();
62+
encryptRequest.request(options).then(result => {
6363
expect(result).toBe('l3nQtAUM4li87qMfO68exInHVFQ5gS3a6pb8ySIbib8=');
6464
expect(FetchRequest.get.calls.count()).toBe(1);
6565
expect(FetchRequest.post.calls.count()).toBe(1);

0 commit comments

Comments
 (0)