eh-commons 0.0.2-testing.87 → 0.0.2-testing.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/filters/base-exception.filter.js +2 -2
- package/dist/filters/base-exception.filter.js.map +1 -1
- package/dist/models/wrappers/rest-wrapper.class.js +1 -4
- package/dist/models/wrappers/rest-wrapper.class.js.map +1 -1
- package/dist/modules/session/guards/permission.guard.js +9 -13
- package/dist/modules/session/guards/permission.guard.js.map +1 -1
- package/dist/modules/session/services/redis.service.d.ts +4 -0
- package/dist/modules/session/services/redis.service.js +39 -5
- package/dist/modules/session/services/redis.service.js.map +1 -1
- package/dist/utils/config-util.class.d.ts +2 -2
- package/dist/utils/config-util.class.js +11 -4
- package/dist/utils/config-util.class.js.map +1 -1
- package/package.json +1 -1
- package/src/filters/base-exception.filter.ts +2 -2
- package/src/models/wrappers/rest-wrapper.class.ts +1 -4
- package/src/modules/session/guards/permission.guard.ts +15 -12
- package/src/modules/session/services/redis.service.ts +59 -5
- package/src/utils/config-util.class.ts +11 -4
|
@@ -61,8 +61,8 @@ class BaseExceptionsFilter {
|
|
|
61
61
|
statusCode = common_1.HttpStatus.UNAUTHORIZED;
|
|
62
62
|
}
|
|
63
63
|
else if (exception instanceof common_1.NotFoundException) {
|
|
64
|
-
restErrors.push(new rest_wrapper_class_1.RESTError('
|
|
65
|
-
statusCode = common_1.HttpStatus.
|
|
64
|
+
restErrors.push(new rest_wrapper_class_1.RESTError('NOT_FOUND', exception.message));
|
|
65
|
+
statusCode = common_1.HttpStatus.NOT_FOUND;
|
|
66
66
|
}
|
|
67
67
|
else if (exception instanceof common_1.ForbiddenException) {
|
|
68
68
|
restErrors.push(new rest_wrapper_class_1.RESTError('INVALID_API_TOKEN', 'invalid X-API-TOKEN received in headers'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-exception.filter.js","sourceRoot":"","sources":["../../src/filters/base-exception.filter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base-exception.filter.js","sourceRoot":"","sources":["../../src/filters/base-exception.filter.ts"],"names":[],"mappings":";;;AAAA,2CAwBwB;AACxB,qEAAkE;AAClE,8EAAkE;AAClE,uCAAiC;AACjC,qDAAkD;AAGlD,MAAa,oBAAoB;IAC/B,YAA6B,OAAkB;QAAlB,YAAO,GAAP,OAAO,CAAW;QAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,SAAc,EAAE,IAAmB;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAY,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QAEzD,IAAI,SAAS,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACrE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC;YACH,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,gBAAgB,GAA2B,IAAI,CAAC;QAEpD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACnE,gBAAgB,GAAG,IAAI,mCAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEhE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAEO,eAAe,CAAC,SAAc;QACpC,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,IAAI,UAAU,GAAe,IAAI,CAAC;QAElC,IAAI,CAAC;YACH,IAAI,SAAS,YAAY,mCAAgB,EAAE,CAAC;gBAG1C,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC1C,UAAU,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,mBAAU,CAAC,WAAW,CAAC;YAC/D,CAAC;iBAAM,IAAI,SAAS,YAAY,8BAAS,EAAE,CAAC;gBAK1C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3B,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,mBAAU,CAAC,WAAW,CAAC;YAC9D,CAAC;iBAAM,IAAI,SAAS,YAAY,KAAK,EAAE,CAAC;gBACtC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;gBACH,UAAU,GAAG,mBAAU,CAAC,WAAW,CAAC;YACtC,CAAC;iBAAM,IAAI,SAAS,YAAY,4BAAmB,EAAE,CAAC;gBACpD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBACtD,UAAU,GAAG,mBAAU,CAAC,WAAW,CAAC;YACtC,CAAC;iBAAM,IAAI,SAAS,YAAY,8BAAqB,EAAE,CAAC;gBACtD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACxD,UAAU,GAAG,mBAAU,CAAC,YAAY,CAAC;YACvC,CAAC;iBAAM,IAAI,SAAS,YAAY,0BAAiB,EAAE,CAAC;gBAClD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC/D,UAAU,GAAG,mBAAU,CAAC,SAAS,CAAC;YACpC,CAAC;iBAAM,IAAI,SAAS,YAAY,2BAAkB,EAAE,CAAC;gBACnD,UAAU,CAAC,IAAI,CACb,IAAI,8BAAS,CACX,mBAAmB,EACnB,yCAAyC,CAC1C,CACF,CAAC;gBACF,UAAU,GAAG,mBAAU,CAAC,SAAS,CAAC;YACpC,CAAC;iBAAM,IAAI,SAAS,YAAY,+BAAsB,EAAE,CAAC;gBACvD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBACzD,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,gCAAuB,EAAE,CAAC;gBACxD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBAC1D,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,0BAAiB,EAAE,CAAC;gBAClD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACpD,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,sBAAa,EAAE,CAAC;gBAC9C,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,eAAe,CAAC,CAAC,CAAC;gBAChD,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,yCAAgC,EAAE,CAAC;gBACjE,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBACnE,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,iCAAwB,EAAE,CAAC;gBACzD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC;gBAC3D,UAAU,GAAG,mBAAU,CAAC,iBAAiB,CAAC;YAC5C,CAAC;iBAAM,IAAI,SAAS,YAAY,sCAA6B,EAAE,CAAC;gBAC9D,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,+BAA+B,CAAC,CAAC,CAAC;gBAChE,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,qCAA4B,EAAE,CAAC;gBAC7D,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,8BAA8B,CAAC,CAAC,CAAC;gBAC/D,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,qCAA4B,EAAE,CAAC;gBAC7D,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,8BAA8B,CAAC,CAAC,CAAC;gBAC/D,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,gCAAuB,EAAE,CAAC;gBACxD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBAC1D,UAAU,GAAG,mBAAU,CAAC,eAAe,CAAC;YAC1C,CAAC;iBAAM,IAAI,SAAS,YAAY,2BAAkB,EAAE,CAAC;gBACnD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBACrD,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,kCAAyB,EAAE,CAAC;gBAC1D,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBAC5D,UAAU,GAAG,mBAAU,CAAC,kBAAkB,CAAC;YAC7C,CAAC;iBAAM,IAAI,SAAS,YAAY,4BAAmB,EAAE,CAAC;gBACpD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBACtD,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,oCAA2B,EAAE,CAAC;gBAC5D,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,6BAA6B,CAAC,CAAC,CAAC;gBAC9D,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,gCAAuB,EAAE,CAAC;gBACxD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBAC1D,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,oCAA2B,EAAE,CAAC;gBAC5D,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,6BAA6B,CAAC,CAAC,CAAC;gBAC9D,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,SAAS,EAAE,CAAC;gBAC1C,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBAChE,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,gBAAK,CAAC,UAAU,EAAE,CAAC;gBACjD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBACjE,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAMhD,CAAC;iBAAM,IAAI,SAAS,YAAY,iCAAe,EAAE,CAAC;gBAChD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC9D,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,YAAY,gBAAK,CAAC,gBAAgB,EAAE,CAAC;gBACvD,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,oBAAoB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBACxE,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,mBAAmB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvE,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,UAAU,CAAC,IAAI,CAAC,IAAI,8BAAS,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC;YACvD,UAAU,GAAG,mBAAU,CAAC,qBAAqB,CAAC;QAChD,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IACpC,CAAC;CACF;AApJD,oDAoJC"}
|
|
@@ -114,10 +114,7 @@ class RESTPage {
|
|
|
114
114
|
const page = new RESTPage();
|
|
115
115
|
page.page = paging.page;
|
|
116
116
|
page.size = paging.size;
|
|
117
|
-
page.number = (count
|
|
118
|
-
if (count % paging.size > 0) {
|
|
119
|
-
page.number += 1;
|
|
120
|
-
}
|
|
117
|
+
page.number = Math.ceil(count / paging.size);
|
|
121
118
|
page.total = count;
|
|
122
119
|
return page;
|
|
123
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest-wrapper.class.js","sourceRoot":"","sources":["../../../src/models/wrappers/rest-wrapper.class.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rest-wrapper.class.js","sourceRoot":"","sources":["../../../src/models/wrappers/rest-wrapper.class.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,7 +58,7 @@ let PermissionGuard = class PermissionGuard {
|
|
|
58
58
|
});
|
|
59
59
|
}), (0, rxjs_1.map)((data) => {
|
|
60
60
|
this._setUserData(data === null || data === void 0 ? void 0 : data.user, data === null || data === void 0 ? void 0 : data.client, data === null || data === void 0 ? void 0 : data.permissions, request);
|
|
61
|
-
return this._checkPermission(data === null || data === void 0 ? void 0 : data.permissions, config.keyword);
|
|
61
|
+
return this._checkPermission(data === null || data === void 0 ? void 0 : data.permissions, config === null || config === void 0 ? void 0 : config.keyword);
|
|
62
62
|
}));
|
|
63
63
|
return result$;
|
|
64
64
|
}
|
|
@@ -69,21 +69,17 @@ let PermissionGuard = class PermissionGuard {
|
|
|
69
69
|
if (userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.some((item) => item.keyword === 'eh.root')) {
|
|
70
70
|
return true;
|
|
71
71
|
}
|
|
72
|
-
if (allowedPermission) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if (check) {
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
throw new rest_wrapper_class_1.RESTError('forbidden', null, common_1.HttpStatus.FORBIDDEN);
|
|
82
|
-
}
|
|
72
|
+
if (!allowedPermission) {
|
|
73
|
+
throw new rest_wrapper_class_1.RESTError('forbidden', null, common_1.HttpStatus.FORBIDDEN);
|
|
74
|
+
}
|
|
75
|
+
if (!userPermissions || !userPermissions.length) {
|
|
76
|
+
throw new rest_wrapper_class_1.RESTError('forbidden', null, common_1.HttpStatus.FORBIDDEN);
|
|
83
77
|
}
|
|
84
|
-
|
|
78
|
+
const check = userPermissions.some((item) => item.keyword === allowedPermission);
|
|
79
|
+
if (check) {
|
|
85
80
|
return true;
|
|
86
81
|
}
|
|
82
|
+
throw new rest_wrapper_class_1.RESTError('forbidden', null, common_1.HttpStatus.FORBIDDEN);
|
|
87
83
|
}
|
|
88
84
|
_setUserData(userData, client, permissions, request) {
|
|
89
85
|
const userInfo = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission.guard.js","sourceRoot":"","sources":["../../../../src/modules/session/guards/permission.guard.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"permission.guard.js","sourceRoot":"","sources":["../../../../src/modules/session/guards/permission.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,11 @@ export declare class RedisService {
|
|
|
10
10
|
get(key: string): Promise<string>;
|
|
11
11
|
del(key: string): Promise<number>;
|
|
12
12
|
getRedisClient(): IORedis.Redis | IORedis.Cluster;
|
|
13
|
+
private _retryStrategy;
|
|
14
|
+
private _registerEventHandlers;
|
|
15
|
+
private _maskConnectionString;
|
|
13
16
|
private _parseRedisClusterUrl;
|
|
14
17
|
private _getString;
|
|
15
18
|
private _getBoolean;
|
|
19
|
+
private _getNumber;
|
|
16
20
|
}
|
|
@@ -20,15 +20,21 @@ let RedisService = class RedisService {
|
|
|
20
20
|
const redisConnectionString = this._getString('REDIS__CS', null);
|
|
21
21
|
this._isCluster = this._getBoolean('REDIS__CLUSTER', false);
|
|
22
22
|
_logger.log('########## REDIS__CLUSTER:' + this._isCluster);
|
|
23
|
-
_logger.log('########## REDIS__CS:' + redisConnectionString);
|
|
23
|
+
_logger.log('########## REDIS__CS:' + this._maskConnectionString(redisConnectionString));
|
|
24
|
+
const useTls = this._getBoolean('REDIS__TLS', false) || (redisConnectionString || '').startsWith('rediss://');
|
|
24
25
|
if (this._isCluster === true) {
|
|
25
26
|
const nodes = this._parseRedisClusterUrl(redisConnectionString);
|
|
26
27
|
_logger.log('########## NODES:' + JSON.stringify(nodes));
|
|
27
|
-
this._clusterClient = new IORedis.Cluster(nodes
|
|
28
|
+
this._clusterClient = new IORedis.Cluster(nodes, {
|
|
29
|
+
clusterRetryStrategy: (times) => this._retryStrategy(times),
|
|
30
|
+
redisOptions: Object.assign({ connectTimeout: this._getNumber('REDIS__CONNECT_TIMEOUT_MS', 10000), maxRetriesPerRequest: this._getNumber('REDIS__MAX_RETRIES_PER_REQUEST', 3) }, (useTls ? { tls: {} } : {})),
|
|
31
|
+
});
|
|
32
|
+
this._registerEventHandlers(this._clusterClient, 'cluster');
|
|
28
33
|
}
|
|
29
34
|
else {
|
|
30
35
|
_logger.log('########## REDIS__SINGLE_NODE');
|
|
31
|
-
this._client = new IORedis.Redis(redisConnectionString);
|
|
36
|
+
this._client = new IORedis.Redis(redisConnectionString, Object.assign({ connectTimeout: this._getNumber('REDIS__CONNECT_TIMEOUT_MS', 10000), maxRetriesPerRequest: this._getNumber('REDIS__MAX_RETRIES_PER_REQUEST', 3), retryStrategy: (times) => this._retryStrategy(times) }, (useTls ? { tls: {} } : {})));
|
|
37
|
+
this._registerEventHandlers(this._client, 'single');
|
|
32
38
|
}
|
|
33
39
|
}
|
|
34
40
|
async set(key, value, ttl) {
|
|
@@ -55,12 +61,32 @@ let RedisService = class RedisService {
|
|
|
55
61
|
return this._clusterClient;
|
|
56
62
|
}
|
|
57
63
|
}
|
|
64
|
+
_retryStrategy(times) {
|
|
65
|
+
const maxDelay = this._getNumber('REDIS__MAX_RECONNECT_DELAY_MS', 2000);
|
|
66
|
+
const delay = Math.min(times * 200, maxDelay);
|
|
67
|
+
this._logger.error('RedisService - reconnecting', `attempt=${times} delay=${delay}ms`);
|
|
68
|
+
return delay;
|
|
69
|
+
}
|
|
70
|
+
_registerEventHandlers(client, label) {
|
|
71
|
+
client.on('connect', () => this._logger.log(`RedisService - ${label} connecting`));
|
|
72
|
+
client.on('ready', () => this._logger.log(`RedisService - ${label} ready`));
|
|
73
|
+
client.on('error', (err) => this._logger.error(`RedisService - ${label} error`, (err === null || err === void 0 ? void 0 : err.message) || String(err)));
|
|
74
|
+
client.on('close', () => this._logger.log(`RedisService - ${label} connection closed`));
|
|
75
|
+
client.on('reconnecting', (delay) => this._logger.log(`RedisService - ${label} reconnecting in ${delay}ms`));
|
|
76
|
+
client.on('end', () => this._logger.error(`RedisService - ${label} connection ended (no more reconnections)`, label));
|
|
77
|
+
}
|
|
78
|
+
_maskConnectionString(connectionString) {
|
|
79
|
+
if (!connectionString) {
|
|
80
|
+
return String(connectionString);
|
|
81
|
+
}
|
|
82
|
+
return connectionString.replace(/(rediss?:\/\/)([^@/]*)@/i, '$1***@');
|
|
83
|
+
}
|
|
58
84
|
_parseRedisClusterUrl(connectionString) {
|
|
59
|
-
if (!connectionString.startsWith('redis://')) {
|
|
85
|
+
if (!connectionString.startsWith('redis://') && !connectionString.startsWith('rediss://')) {
|
|
60
86
|
throw new rest_wrapper_class_1.RESTError('invalid_connection_string', 'Invalid connection string format');
|
|
61
87
|
}
|
|
62
88
|
return connectionString
|
|
63
|
-
.replace(
|
|
89
|
+
.replace(/^rediss?:\/\//, '')
|
|
64
90
|
.split(',')
|
|
65
91
|
.map((entry) => {
|
|
66
92
|
const [host, portStr] = entry.trim().split(':');
|
|
@@ -85,6 +111,14 @@ let RedisService = class RedisService {
|
|
|
85
111
|
}
|
|
86
112
|
return value.toLowerCase() === 'true';
|
|
87
113
|
}
|
|
114
|
+
_getNumber(env, defaultValue) {
|
|
115
|
+
const value = process.env[env];
|
|
116
|
+
if (value === undefined || value.trim() === '') {
|
|
117
|
+
return defaultValue;
|
|
118
|
+
}
|
|
119
|
+
const num = Number(value);
|
|
120
|
+
return isNaN(num) ? defaultValue : num;
|
|
121
|
+
}
|
|
88
122
|
};
|
|
89
123
|
exports.RedisService = RedisService;
|
|
90
124
|
exports.RedisService = RedisService = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../../../src/modules/session/services/redis.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,mCAAmC;AACnC,oFAAwE;AACxE,+EAAmE;AAG5D,IAAM,YAAY,GAAlB,MAAM,YAAY;IAQvB,YAA6B,OAAkB;QAAlB,YAAO,GAAP,OAAO,CAAW;QAC7C,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAE5D,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../../../src/modules/session/services/redis.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,mCAAmC;AACnC,oFAAwE;AACxE,+EAAmE;AAG5D,IAAM,YAAY,GAAlB,MAAM,YAAY;IAQvB,YAA6B,OAAkB;QAAlB,YAAO,GAAP,OAAO,CAAW;QAC7C,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAE5D,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAEzF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAE9G,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAC/C,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;gBAC3D,YAAY,kBACV,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,2BAA2B,EAAE,KAAK,CAAC,EACnE,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,gCAAgC,EAAE,CAAC,CAAC,IACvE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC/B;aACF,CAAC,CAAC;YACH,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,qBAAqB,kBACpD,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,2BAA2B,EAAE,KAAK,CAAC,EACnE,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,gCAAgC,EAAE,CAAC,CAAC,EAC1E,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IACjD,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC9B,CAAC;YACH,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAID,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,GAAY;QAChD,IAAI,MAAoC,CAAC;QACzC,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAEM,cAAc;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;IACH,CAAC;IAMO,cAAc,CAAC,KAAa;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,WAAW,KAAK,UAAU,KAAK,IAAI,CAAC,CAAC;QACvF,OAAO,KAAK,CAAC;IACf,CAAC;IAKO,sBAAsB,CAAC,MAAuC,EAAE,KAAa;QACnF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,aAAa,CAAC,CAAC,CAAC;QACnF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,KAAK,QAAQ,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,KAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,oBAAoB,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC;QACrH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,KAAK,2CAA2C,EAAE,KAAK,CAAC,CAAC,CAAC;IACxH,CAAC;IAGO,qBAAqB,CAAC,gBAAwB;QACpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,gBAAgB,CAAC,OAAO,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;IAEO,qBAAqB,CAAC,gBAAwB;QACpD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1F,MAAM,IAAI,8BAAS,CAAC,2BAA2B,EAAE,kCAAkC,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,gBAAgB;aACpB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;aAC5B,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAEnC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,8BAAS,CAAC,yBAAyB,EAAE,4BAA4B,KAAK,EAAE,CAAC,CAAC;YACtF,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,UAAU,CAAC,GAAW,EAAE,YAAoB;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,WAAW,CAAC,GAAW,EAAE,YAAqB;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IACxC,CAAC;IAEO,UAAU,CAAC,GAAW,EAAE,YAAoB;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/C,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,CAAC;CAEF,CAAA;AAjJY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAS2B,8BAAS;GARpC,YAAY,CAiJxB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare class ConfigUtil {
|
|
2
2
|
static get(name: string): string;
|
|
3
|
-
static getBoolean(name: string): boolean;
|
|
4
|
-
static getNumber(name: string): number;
|
|
3
|
+
static getBoolean(name: string, fallback?: boolean): boolean;
|
|
4
|
+
static getNumber(name: string, fallback?: number): number;
|
|
5
5
|
}
|
|
@@ -5,13 +5,20 @@ class ConfigUtil {
|
|
|
5
5
|
static get(name) {
|
|
6
6
|
return process.env[name];
|
|
7
7
|
}
|
|
8
|
-
static getBoolean(name) {
|
|
8
|
+
static getBoolean(name, fallback = false) {
|
|
9
9
|
const value = ConfigUtil.get(name);
|
|
10
|
-
|
|
10
|
+
if (value === undefined || value.trim() === '') {
|
|
11
|
+
return fallback;
|
|
12
|
+
}
|
|
13
|
+
return value.trim().toLowerCase() === 'true';
|
|
11
14
|
}
|
|
12
|
-
static getNumber(name) {
|
|
15
|
+
static getNumber(name, fallback = 0) {
|
|
13
16
|
const value = ConfigUtil.get(name);
|
|
14
|
-
|
|
17
|
+
if (value === undefined || value.trim() === '') {
|
|
18
|
+
return fallback;
|
|
19
|
+
}
|
|
20
|
+
const num = Number(value);
|
|
21
|
+
return isNaN(num) ? fallback : num;
|
|
15
22
|
}
|
|
16
23
|
}
|
|
17
24
|
exports.ConfigUtil = ConfigUtil;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-util.class.js","sourceRoot":"","sources":["../../src/utils/config-util.class.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAU;IACd,MAAM,CAAC,GAAG,CAAC,IAAY;QAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,IAAY;
|
|
1
|
+
{"version":3,"file":"config-util.class.js","sourceRoot":"","sources":["../../src/utils/config-util.class.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAU;IACd,MAAM,CAAC,GAAG,CAAC,IAAY;QAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,IAAY,EAAE,QAAQ,GAAG,KAAK;QACrD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/C,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,IAAY,EAAE,QAAQ,GAAG,CAAC;QAChD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/C,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IACrC,CAAC;CACF;AArBD,gCAqBC"}
|
package/package.json
CHANGED
|
@@ -91,8 +91,8 @@ export class BaseExceptionsFilter implements ExceptionFilter {
|
|
|
91
91
|
restErrors.push(new RESTError('UnauthorizedException'));
|
|
92
92
|
statusCode = HttpStatus.UNAUTHORIZED;
|
|
93
93
|
} else if (exception instanceof NotFoundException) {
|
|
94
|
-
restErrors.push(new RESTError('
|
|
95
|
-
statusCode = HttpStatus.
|
|
94
|
+
restErrors.push(new RESTError('NOT_FOUND', exception.message));
|
|
95
|
+
statusCode = HttpStatus.NOT_FOUND;
|
|
96
96
|
} else if (exception instanceof ForbiddenException) {
|
|
97
97
|
restErrors.push(
|
|
98
98
|
new RESTError(
|
|
@@ -114,10 +114,7 @@ export class RESTPage {
|
|
|
114
114
|
const page = new RESTPage();
|
|
115
115
|
page.page = paging.page;
|
|
116
116
|
page.size = paging.size;
|
|
117
|
-
page.number = (count
|
|
118
|
-
if (count % paging.size > 0) {
|
|
119
|
-
page.number += 1;
|
|
120
|
-
}
|
|
117
|
+
page.number = Math.ceil(count / paging.size);
|
|
121
118
|
page.total = count;
|
|
122
119
|
return page;
|
|
123
120
|
}
|
|
@@ -62,7 +62,7 @@ export class PermissionGuard implements CanActivate {
|
|
|
62
62
|
}),
|
|
63
63
|
map((data) => {
|
|
64
64
|
this._setUserData(data?.user, data?.client, data?.permissions, request);
|
|
65
|
-
return this._checkPermission(data?.permissions, config
|
|
65
|
+
return this._checkPermission(data?.permissions, config?.keyword);
|
|
66
66
|
}),
|
|
67
67
|
);
|
|
68
68
|
return result$;
|
|
@@ -79,19 +79,22 @@ export class PermissionGuard implements CanActivate {
|
|
|
79
79
|
return true;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
82
|
+
// Fail closed: a missing/empty permission keyword means the route is
|
|
83
|
+
// misconfigured (no @Permission keyword), so deny rather than granting
|
|
84
|
+
// access to any authenticated session.
|
|
85
|
+
if (!allowedPermission) {
|
|
86
|
+
throw new RESTError('forbidden', null, HttpStatus.FORBIDDEN);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (!userPermissions || !userPermissions.length) {
|
|
90
|
+
throw new RESTError('forbidden', null, HttpStatus.FORBIDDEN);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const check = userPermissions.some((item) => item.keyword === allowedPermission);
|
|
94
|
+
if (check) {
|
|
93
95
|
return true;
|
|
94
96
|
}
|
|
97
|
+
throw new RESTError('forbidden', null, HttpStatus.FORBIDDEN);
|
|
95
98
|
}
|
|
96
99
|
|
|
97
100
|
private _setUserData(userData: IUserSessionData, client: IClient, permissions: IPermission[], request: Request) {
|
|
@@ -17,15 +17,31 @@ export class RedisService {
|
|
|
17
17
|
this._isCluster = this._getBoolean('REDIS__CLUSTER', false);
|
|
18
18
|
|
|
19
19
|
_logger.log('########## REDIS__CLUSTER:' + this._isCluster);
|
|
20
|
-
_logger.log('########## REDIS__CS:' + redisConnectionString);
|
|
20
|
+
_logger.log('########## REDIS__CS:' + this._maskConnectionString(redisConnectionString));
|
|
21
|
+
|
|
22
|
+
const useTls = this._getBoolean('REDIS__TLS', false) || (redisConnectionString || '').startsWith('rediss://');
|
|
21
23
|
|
|
22
24
|
if (this._isCluster === true) {
|
|
23
25
|
const nodes = this._parseRedisClusterUrl(redisConnectionString);
|
|
24
26
|
_logger.log('########## NODES:' + JSON.stringify(nodes));
|
|
25
|
-
this._clusterClient = new IORedis.Cluster(nodes
|
|
27
|
+
this._clusterClient = new IORedis.Cluster(nodes, {
|
|
28
|
+
clusterRetryStrategy: (times) => this._retryStrategy(times),
|
|
29
|
+
redisOptions: {
|
|
30
|
+
connectTimeout: this._getNumber('REDIS__CONNECT_TIMEOUT_MS', 10000),
|
|
31
|
+
maxRetriesPerRequest: this._getNumber('REDIS__MAX_RETRIES_PER_REQUEST', 3),
|
|
32
|
+
...(useTls ? { tls: {} } : {}),
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
this._registerEventHandlers(this._clusterClient, 'cluster');
|
|
26
36
|
} else {
|
|
27
37
|
_logger.log('########## REDIS__SINGLE_NODE');
|
|
28
|
-
this._client = new IORedis.Redis(redisConnectionString
|
|
38
|
+
this._client = new IORedis.Redis(redisConnectionString, {
|
|
39
|
+
connectTimeout: this._getNumber('REDIS__CONNECT_TIMEOUT_MS', 10000),
|
|
40
|
+
maxRetriesPerRequest: this._getNumber('REDIS__MAX_RETRIES_PER_REQUEST', 3),
|
|
41
|
+
retryStrategy: (times) => this._retryStrategy(times),
|
|
42
|
+
...(useTls ? { tls: {} } : {}),
|
|
43
|
+
});
|
|
44
|
+
this._registerEventHandlers(this._client, 'single');
|
|
29
45
|
}
|
|
30
46
|
}
|
|
31
47
|
//#endregion
|
|
@@ -59,13 +75,42 @@ export class RedisService {
|
|
|
59
75
|
//#endregion
|
|
60
76
|
|
|
61
77
|
//#region Private APIs
|
|
78
|
+
// Capped exponential backoff so a downed Redis is retried indefinitely
|
|
79
|
+
// without hammering it. Returning a number (never null) keeps reconnecting.
|
|
80
|
+
private _retryStrategy(times: number): number {
|
|
81
|
+
const maxDelay = this._getNumber('REDIS__MAX_RECONNECT_DELAY_MS', 2000);
|
|
82
|
+
const delay = Math.min(times * 200, maxDelay);
|
|
83
|
+
this._logger.error('RedisService - reconnecting', `attempt=${times} delay=${delay}ms`);
|
|
84
|
+
return delay;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Attaching an 'error' listener is mandatory: an ioredis client with no
|
|
88
|
+
// 'error' handler turns a connection error into an unhandled error event,
|
|
89
|
+
// which crashes the whole Node process.
|
|
90
|
+
private _registerEventHandlers(client: IORedis.Redis | IORedis.Cluster, label: string): void {
|
|
91
|
+
client.on('connect', () => this._logger.log(`RedisService - ${label} connecting`));
|
|
92
|
+
client.on('ready', () => this._logger.log(`RedisService - ${label} ready`));
|
|
93
|
+
client.on('error', (err: Error) => this._logger.error(`RedisService - ${label} error`, err?.message || String(err)));
|
|
94
|
+
client.on('close', () => this._logger.log(`RedisService - ${label} connection closed`));
|
|
95
|
+
client.on('reconnecting', (delay: number) => this._logger.log(`RedisService - ${label} reconnecting in ${delay}ms`));
|
|
96
|
+
client.on('end', () => this._logger.error(`RedisService - ${label} connection ended (no more reconnections)`, label));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Avoid leaking inline credentials (redis://user:password@host) into logs.
|
|
100
|
+
private _maskConnectionString(connectionString: string): string {
|
|
101
|
+
if (!connectionString) {
|
|
102
|
+
return String(connectionString);
|
|
103
|
+
}
|
|
104
|
+
return connectionString.replace(/(rediss?:\/\/)([^@/]*)@/i, '$1***@');
|
|
105
|
+
}
|
|
106
|
+
|
|
62
107
|
private _parseRedisClusterUrl(connectionString: string) {
|
|
63
|
-
if (!connectionString.startsWith('redis://')) {
|
|
108
|
+
if (!connectionString.startsWith('redis://') && !connectionString.startsWith('rediss://')) {
|
|
64
109
|
throw new RESTError('invalid_connection_string', 'Invalid connection string format');
|
|
65
110
|
}
|
|
66
111
|
|
|
67
112
|
return connectionString
|
|
68
|
-
.replace(
|
|
113
|
+
.replace(/^rediss?:\/\//, '')
|
|
69
114
|
.split(',')
|
|
70
115
|
.map((entry) => {
|
|
71
116
|
const [host, portStr] = entry.trim().split(':');
|
|
@@ -94,5 +139,14 @@ export class RedisService {
|
|
|
94
139
|
}
|
|
95
140
|
return value.toLowerCase() === 'true';
|
|
96
141
|
}
|
|
142
|
+
|
|
143
|
+
private _getNumber(env: string, defaultValue: number): number {
|
|
144
|
+
const value = process.env[env];
|
|
145
|
+
if (value === undefined || value.trim() === '') {
|
|
146
|
+
return defaultValue;
|
|
147
|
+
}
|
|
148
|
+
const num = Number(value);
|
|
149
|
+
return isNaN(num) ? defaultValue : num;
|
|
150
|
+
}
|
|
97
151
|
//#endregion
|
|
98
152
|
}
|
|
@@ -3,13 +3,20 @@ export class ConfigUtil {
|
|
|
3
3
|
return process.env[name];
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
public static getBoolean(name: string) {
|
|
6
|
+
public static getBoolean(name: string, fallback = false): boolean {
|
|
7
7
|
const value = ConfigUtil.get(name);
|
|
8
|
-
|
|
8
|
+
if (value === undefined || value.trim() === '') {
|
|
9
|
+
return fallback;
|
|
10
|
+
}
|
|
11
|
+
return value.trim().toLowerCase() === 'true';
|
|
9
12
|
}
|
|
10
13
|
|
|
11
|
-
public static getNumber(name: string) {
|
|
14
|
+
public static getNumber(name: string, fallback = 0): number {
|
|
12
15
|
const value = ConfigUtil.get(name);
|
|
13
|
-
|
|
16
|
+
if (value === undefined || value.trim() === '') {
|
|
17
|
+
return fallback;
|
|
18
|
+
}
|
|
19
|
+
const num = Number(value);
|
|
20
|
+
return isNaN(num) ? fallback : num;
|
|
14
21
|
}
|
|
15
22
|
}
|