@futdevpro/nts-dynamo 1.15.45 → 1.15.47
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/.dynamo/logs/cicd-pipeline/output.log +1582 -1523
- package/.dynamo/logs/cicd-pipeline/status.json +197 -183
- package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.js +50 -0
- package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
- package/build/_modules/rate-limit/_models/rate-limit-config.interface.d.ts +8 -0
- package/build/_modules/rate-limit/_models/rate-limit-config.interface.d.ts.map +1 -1
- package/build/_modules/rate-limit/rate-limit.middleware.d.ts +15 -0
- package/build/_modules/rate-limit/rate-limit.middleware.d.ts.map +1 -1
- package/build/_modules/rate-limit/rate-limit.middleware.js +32 -4
- package/build/_modules/rate-limit/rate-limit.middleware.js.map +1 -1
- package/package.json +2 -2
- package/src/_models/control-models/endpoint-params.control-model.ts +52 -0
- package/src/_modules/rate-limit/_models/rate-limit-config.interface.ts +9 -0
- package/src/_modules/rate-limit/rate-limit.middleware.spec.ts +53 -0
- package/src/_modules/rate-limit/rate-limit.middleware.ts +42 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-params.control-model.d.ts","sourceRoot":"","sources":["../../../src/_models/control-models/endpoint-params.control-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAEO,0BAA0B,EAAuE,iBAAiB,EAE/H,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,qBAAqB,CAChC,QAAQ,GAAG,OAAO,EAClB,QAAQ,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAChC,MAAM,GAAG,SAAS,CAClB,SAAQ,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;IAE9D,QAAQ,EAAE,mBAAmB,CAAC;IAQ9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IAEtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0D;IACvF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsE;IAE5F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAU;gBAG/C,GAAG,EAAE;QACH;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;;;WAIG;QACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;QAE/B;;WAEG;QACH,IAAI,EAAE,iBAAiB,CAAC;QACxB;;;;;WAKG;QACH,QAAQ,EAAE,MAAM,CAAC;QAEjB;;;WAGG;QACH,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClE;;;WAGG;QACH,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE1E;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB;;WAEG;QACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B;;WAEG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B;;WAEG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B;;WAEG;QACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC;IAwDH;;;OAGG;YACW,MAAM;IA0BpB;;;OAGG;IACH,gBAAgB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC;IA+DlE;;;;OAIG;YACW,KAAK;
|
|
1
|
+
{"version":3,"file":"endpoint-params.control-model.d.ts","sourceRoot":"","sources":["../../../src/_models/control-models/endpoint-params.control-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAEO,0BAA0B,EAAuE,iBAAiB,EAE/H,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,qBAAqB,CAChC,QAAQ,GAAG,OAAO,EAClB,QAAQ,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAChC,MAAM,GAAG,SAAS,CAClB,SAAQ,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;IAE9D,QAAQ,EAAE,mBAAmB,CAAC;IAQ9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IAEtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0D;IACvF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsE;IAE5F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAU;gBAG/C,GAAG,EAAE;QACH;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;;;WAIG;QACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;QAE/B;;WAEG;QACH,IAAI,EAAE,iBAAiB,CAAC;QACxB;;;;;WAKG;QACH,QAAQ,EAAE,MAAM,CAAC;QAEjB;;;WAGG;QACH,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClE;;;WAGG;QACH,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE1E;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB;;WAEG;QACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B;;WAEG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B;;WAEG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B;;WAEG;QACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC;IAwDH;;;OAGG;YACW,MAAM;IA0BpB;;;OAGG;IACH,gBAAgB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC;IA+DlE;;;;OAIG;YACW,KAAK;IAsPnB,OAAO,CAAC,eAAe;IAuFvB,OAAO,CAAC,uBAAuB;CAShC"}
|
|
@@ -199,6 +199,56 @@ class DyNTS_Endpoint_Params extends fsm_dynamo_1.DyFM_Endpoint_SettingsBase {
|
|
|
199
199
|
}
|
|
200
200
|
error.additionalContent.endpointInfo = msg;
|
|
201
201
|
}
|
|
202
|
+
// FR-071 (2026-06-06) — rich debug-descriptive request-context.
|
|
203
|
+
// Per memory [[feedback_rich_error_handling]] minden errornak debug-level
|
|
204
|
+
// descriptive-nek kell lennie + persisted to errors table. Az endpoint-
|
|
205
|
+
// params catch-blokkjaban minden errorhoz csatoljuk a request snapshot-ot
|
|
206
|
+
// (URL, method, headers KULCSAI ertek nelkul, query, params, origin,
|
|
207
|
+
// user-agent), igy a TEST environment-en a kliens-oldali fejleszto a
|
|
208
|
+
// response-bol latja MI hianyzott a request-bol, NEM csak az error-code-ot.
|
|
209
|
+
// Header-VALUEK nem szivarognak ki — csak a kulcs-listat es az auth-header
|
|
210
|
+
// alakjat (length + first 7 chars hogy lassek "Bearer "-rel kezd-e).
|
|
211
|
+
try {
|
|
212
|
+
const headerKeys = Object.keys(req?.headers ?? {});
|
|
213
|
+
const authHeader = req?.headers?.['authorization'];
|
|
214
|
+
const authHeaderShape = typeof authHeader === 'string'
|
|
215
|
+
? `present (len=${authHeader.length}, startsWith="${authHeader.substring(0, 7)}")`
|
|
216
|
+
: 'MISSING';
|
|
217
|
+
const requestSnapshot = {
|
|
218
|
+
url: req?.originalUrl ?? req?.url,
|
|
219
|
+
method: req?.method,
|
|
220
|
+
origin: req?.headers?.origin ?? null,
|
|
221
|
+
referer: req?.headers?.referer ?? null,
|
|
222
|
+
userAgent: req?.headers?.['user-agent'] ?? null,
|
|
223
|
+
hostHeader: req?.headers?.host ?? null,
|
|
224
|
+
headerKeyCount: headerKeys.length,
|
|
225
|
+
headerKeys: headerKeys.sort(),
|
|
226
|
+
hasAuthorizationKey: headerKeys.includes('authorization'),
|
|
227
|
+
authHeaderShape: authHeaderShape,
|
|
228
|
+
hasSecretKeyKey: headerKeys.includes('secret-key'),
|
|
229
|
+
hasAdminKeyKey: headerKeys.includes('x-admin-key'),
|
|
230
|
+
hasContentTypeKey: headerKeys.includes('content-type'),
|
|
231
|
+
params: req?.params,
|
|
232
|
+
query: req?.query,
|
|
233
|
+
remoteAddress: req?.ip ?? null,
|
|
234
|
+
};
|
|
235
|
+
if (error instanceof fsm_dynamo_1.DyFM_Error) {
|
|
236
|
+
if (!error.additionalContent) {
|
|
237
|
+
error.additionalContent = {};
|
|
238
|
+
}
|
|
239
|
+
error.additionalContent.requestDebug = requestSnapshot;
|
|
240
|
+
}
|
|
241
|
+
// Plusz: 1-soros debug log a server-side log-buffer-ben.
|
|
242
|
+
fsm_dynamo_1.DyFM_Log.warn(`[FR-071 req-debug] ${req?.method ?? '?'} ${req?.originalUrl ?? req?.url ?? '?'} ` +
|
|
243
|
+
`(endpoint=${this.name}, origin=${req?.headers?.origin ?? 'none'}, ` +
|
|
244
|
+
`auth=${headerKeys.includes('authorization') ? 'yes' : 'NO'}, ` +
|
|
245
|
+
`secretKey=${headerKeys.includes('secret-key') ? 'yes' : 'no'}, ` +
|
|
246
|
+
`adminKey=${headerKeys.includes('x-admin-key') ? 'yes' : 'no'}, ` +
|
|
247
|
+
`errorCode=${error?._errorCode ?? '(raw)'})`);
|
|
248
|
+
}
|
|
249
|
+
catch /* (snapshotErr) */ {
|
|
250
|
+
// ha a snapshot kepzese maga is bukik, ne maszek bele az error-flow-ba.
|
|
251
|
+
}
|
|
202
252
|
await global_service_1.DyNTS_GlobalService.globalErrorHandler?.(error, req, res, issuer).catch((err) => {
|
|
203
253
|
fsm_dynamo_1.DyFM_Log.warn('DyNTS_GlobalService.globalErrorHandler failed to handle error: ', err);
|
|
204
254
|
fsm_dynamo_1.DyFM_Log.warn('It will proceed as normal.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-params.control-model.js","sourceRoot":"","sources":["../../../src/_models/control-models/endpoint-params.control-model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"endpoint-params.control-model.js","sourceRoot":"","sources":["../../../src/_models/control-models/endpoint-params.control-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,5 +50,13 @@ export interface DyNTS_RateLimit_Config {
|
|
|
50
50
|
* felulhatja ezeket.
|
|
51
51
|
*/
|
|
52
52
|
initialKeyPolicies?: Record<string, DyNTS_RateLimit_Policy>;
|
|
53
|
+
/**
|
|
54
|
+
* Per-endpoint(-csoport) policy override-ok az induloskor. A `setPolicyForEndpoint()`
|
|
55
|
+
* runtime-ban is felulhatja ezeket. A kulcs annak felel meg, amit az `endpointGrouper`
|
|
56
|
+
* visszaad (default: `req.path`). Akkor hasznos, ha kulonbozo endpointoknak kulonbozo
|
|
57
|
+
* limit kell (pl. egy webhook nagy burst-toleranciat igenyel a legit forgalomhoz, mig
|
|
58
|
+
* egy admin-endpoint szuk limitet). Precedencia: per-kulcs policy > per-endpoint policy > default.
|
|
59
|
+
*/
|
|
60
|
+
initialEndpointPolicies?: Record<string, DyNTS_RateLimit_Policy>;
|
|
53
61
|
}
|
|
54
62
|
//# sourceMappingURL=rate-limit-config.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit-config.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/rate-limit/_models/rate-limit-config.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;IAExC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;IAE3C;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rate-limit-config.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/rate-limit/_models/rate-limit-config.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;IAExC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;IAE3C;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAE5D;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAClE"}
|
|
@@ -52,6 +52,8 @@ export declare class DyNTS_RateLimit_Middleware extends DyNTS_SingletonServiceBa
|
|
|
52
52
|
private requestLog;
|
|
53
53
|
/** Per-kulcs egyedi policy-k. */
|
|
54
54
|
private keyPolicies;
|
|
55
|
+
/** Per-endpoint(-csoport) egyedi policy-k (a `endpointGrouper` outputjara kulcsolva). */
|
|
56
|
+
private endpointPolicies;
|
|
55
57
|
/** GC timer handle. */
|
|
56
58
|
private gcTimer;
|
|
57
59
|
/**
|
|
@@ -67,6 +69,7 @@ export declare class DyNTS_RateLimit_Middleware extends DyNTS_SingletonServiceBa
|
|
|
67
69
|
defaultWindowMs: number;
|
|
68
70
|
responseHeaders: boolean;
|
|
69
71
|
activeKeyPolicies: number;
|
|
72
|
+
activeEndpointPolicies: number;
|
|
70
73
|
trackedStorageKeys: number;
|
|
71
74
|
};
|
|
72
75
|
/**
|
|
@@ -79,6 +82,18 @@ export declare class DyNTS_RateLimit_Middleware extends DyNTS_SingletonServiceBa
|
|
|
79
82
|
* Per-kulcs policy torlese (visszaall a default-ra).
|
|
80
83
|
*/
|
|
81
84
|
clearPolicyForKey(key: string): void;
|
|
85
|
+
/**
|
|
86
|
+
* Per-endpoint(-csoport) egyedi policy beallitas. Az `endpoint`-nek pontosan
|
|
87
|
+
* azzal a stringgel kell egyeznie, amit az `endpointGrouper` visszaad (default: `req.path`).
|
|
88
|
+
* Akkor hasznos, ha egy endpointnak a globalis default-tol eltero limit kell — pl. egy
|
|
89
|
+
* webhook nagy burst-toleranciat igenyel (a legit, distributed forgalom ne bukjon), mig
|
|
90
|
+
* egy admin-endpoint szuk limitet. Precedencia: per-kulcs policy > per-endpoint policy > default.
|
|
91
|
+
*/
|
|
92
|
+
setPolicyForEndpoint(endpoint: string, policy: DyNTS_RateLimit_Policy): void;
|
|
93
|
+
/**
|
|
94
|
+
* Per-endpoint policy torlese (visszaall a default-ra).
|
|
95
|
+
*/
|
|
96
|
+
clearPolicyForEndpoint(endpoint: string): void;
|
|
82
97
|
/**
|
|
83
98
|
* Pre-process function — atadhato `DyNTS_Endpoint_Params.preProcesses`-be.
|
|
84
99
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.middleware.d.ts","sourceRoot":"","sources":["../../../src/_modules/rate-limit/rate-limit.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAGzF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AA2B/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,0BAA2B,SAAQ,0BAA0B;IAExE,MAAM,CAAC,WAAW,IAAI,0BAA0B;IAIhD,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,eAAe,CAAqC;IAE5D,OAAO,CAAC,YAAY,CACsC;IAC1D,OAAO,CAAC,eAAe,CACc;IAErC,gEAAgE;IAChE,OAAO,CAAC,UAAU,CAAoC;IAEtD,iCAAiC;IACjC,OAAO,CAAC,WAAW,CAAkD;IAErE,uBAAuB;IACvB,OAAO,CAAC,OAAO,CAA+B;IAG9C;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"rate-limit.middleware.d.ts","sourceRoot":"","sources":["../../../src/_modules/rate-limit/rate-limit.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAGzF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AA2B/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,0BAA2B,SAAQ,0BAA0B;IAExE,MAAM,CAAC,WAAW,IAAI,0BAA0B;IAIhD,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,eAAe,CAAqC;IAE5D,OAAO,CAAC,YAAY,CACsC;IAC1D,OAAO,CAAC,eAAe,CACc;IAErC,gEAAgE;IAChE,OAAO,CAAC,UAAU,CAAoC;IAEtD,iCAAiC;IACjC,OAAO,CAAC,WAAW,CAAkD;IAErE,yFAAyF;IACzF,OAAO,CAAC,gBAAgB,CAAkD;IAE1E,uBAAuB;IACvB,OAAO,CAAC,OAAO,CAA+B;IAG9C;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IA6B/C;;OAEG;IACH,SAAS,IAAI;QACX,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,OAAO,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,kBAAkB,EAAE,MAAM,CAAC;KAC5B;IAWD;;;;OAIG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAIlE;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;;;OAMG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAI5E;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK9C;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,QAAe,OAAO,OAAO,QAAQ,KAAG,OAAO,CAAC,IAAI,CAAC,CAuDjE;IAGF;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAapB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAcb;;OAEG;IACH,WAAW,IAAI,IAAI;IAQnB;;;OAGG;IACH,gBAAgB,IAAI,IAAI;CAWzB"}
|
|
@@ -73,6 +73,8 @@ class DyNTS_RateLimit_Middleware extends singleton_service_base_1.DyNTS_Singleto
|
|
|
73
73
|
requestLog = new Map();
|
|
74
74
|
/** Per-kulcs egyedi policy-k. */
|
|
75
75
|
keyPolicies = new Map();
|
|
76
|
+
/** Per-endpoint(-csoport) egyedi policy-k (a `endpointGrouper` outputjara kulcsolva). */
|
|
77
|
+
endpointPolicies = new Map();
|
|
76
78
|
/** GC timer handle. */
|
|
77
79
|
gcTimer = null;
|
|
78
80
|
/**
|
|
@@ -100,6 +102,11 @@ class DyNTS_RateLimit_Middleware extends singleton_service_base_1.DyNTS_Singleto
|
|
|
100
102
|
this.keyPolicies.set(key, policy);
|
|
101
103
|
}
|
|
102
104
|
}
|
|
105
|
+
if (config.initialEndpointPolicies !== undefined) {
|
|
106
|
+
for (const [endpoint, policy] of Object.entries(config.initialEndpointPolicies)) {
|
|
107
|
+
this.endpointPolicies.set(endpoint, policy);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
103
110
|
this.startGcTimer();
|
|
104
111
|
}
|
|
105
112
|
/**
|
|
@@ -111,6 +118,7 @@ class DyNTS_RateLimit_Middleware extends singleton_service_base_1.DyNTS_Singleto
|
|
|
111
118
|
defaultWindowMs: this.defaultWindowMs,
|
|
112
119
|
responseHeaders: this.responseHeaders,
|
|
113
120
|
activeKeyPolicies: this.keyPolicies.size,
|
|
121
|
+
activeEndpointPolicies: this.endpointPolicies.size,
|
|
114
122
|
trackedStorageKeys: this.requestLog.size,
|
|
115
123
|
};
|
|
116
124
|
}
|
|
@@ -128,6 +136,22 @@ class DyNTS_RateLimit_Middleware extends singleton_service_base_1.DyNTS_Singleto
|
|
|
128
136
|
clearPolicyForKey(key) {
|
|
129
137
|
this.keyPolicies.delete(key);
|
|
130
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Per-endpoint(-csoport) egyedi policy beallitas. Az `endpoint`-nek pontosan
|
|
141
|
+
* azzal a stringgel kell egyeznie, amit az `endpointGrouper` visszaad (default: `req.path`).
|
|
142
|
+
* Akkor hasznos, ha egy endpointnak a globalis default-tol eltero limit kell — pl. egy
|
|
143
|
+
* webhook nagy burst-toleranciat igenyel (a legit, distributed forgalom ne bukjon), mig
|
|
144
|
+
* egy admin-endpoint szuk limitet. Precedencia: per-kulcs policy > per-endpoint policy > default.
|
|
145
|
+
*/
|
|
146
|
+
setPolicyForEndpoint(endpoint, policy) {
|
|
147
|
+
this.endpointPolicies.set(endpoint, policy);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Per-endpoint policy torlese (visszaall a default-ra).
|
|
151
|
+
*/
|
|
152
|
+
clearPolicyForEndpoint(endpoint) {
|
|
153
|
+
this.endpointPolicies.delete(endpoint);
|
|
154
|
+
}
|
|
131
155
|
/**
|
|
132
156
|
* Pre-process function — atadhato `DyNTS_Endpoint_Params.preProcesses`-be.
|
|
133
157
|
*
|
|
@@ -142,10 +166,13 @@ class DyNTS_RateLimit_Middleware extends singleton_service_base_1.DyNTS_Singleto
|
|
|
142
166
|
const subject = this.keyExtractor(req);
|
|
143
167
|
const endpoint = this.endpointGrouper(req);
|
|
144
168
|
const storageKey = `${subject}|${endpoint}`;
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
169
|
+
// precedencia: per-kulcs policy (legspecifikusabb, pl. subscriber-tier) > per-endpoint policy > default
|
|
170
|
+
const policy = this.keyPolicies.get(subject) ??
|
|
171
|
+
this.endpointPolicies.get(endpoint) ??
|
|
172
|
+
{
|
|
173
|
+
limit: this.defaultLimit,
|
|
174
|
+
windowMs: this.defaultWindowMs,
|
|
175
|
+
};
|
|
149
176
|
const now = Date.now();
|
|
150
177
|
const windowStart = now - policy.windowMs;
|
|
151
178
|
// sliding-window: tartomanyon kivuli timestamp-eket eldobjuk
|
|
@@ -255,6 +282,7 @@ class DyNTS_RateLimit_Middleware extends singleton_service_base_1.DyNTS_Singleto
|
|
|
255
282
|
this.endpointGrouper = (req) => req.path;
|
|
256
283
|
this.requestLog.clear();
|
|
257
284
|
this.keyPolicies.clear();
|
|
285
|
+
this.endpointPolicies.clear();
|
|
258
286
|
this.stopGcTimer();
|
|
259
287
|
}
|
|
260
288
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.middleware.js","sourceRoot":"","sources":["../../../src/_modules/rate-limit/rate-limit.middleware.ts"],"names":[],"mappings":";;;AAEA,sDAAmD;AAEnD,wFAAyF;AACzF,oFAAiF;AAMjF,gDAAgD;AAChD,MAAM,aAAa,GAAW,GAAG,CAAC;AAElC,qDAAqD;AACrD,MAAM,iBAAiB,GAAW,KAAK,CAAC;AAExC,uCAAuC;AACvC,MAAM,wBAAwB,GAAY,IAAI,CAAC;AAE/C;;GAEG;AACH,MAAM,cAAc,GAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7C,kCAAkC;AAClC,MAAM,YAAY,GAAW,4BAA4B,CAAC;AAE1D,wDAAwD;AACxD,MAAM,cAAc,GAAG,CAAC,OAAe,EAAU,EAAE;IACjD,MAAM,GAAG,GAAW,6CAAqB,CAAC,mBAAmB,IAAI,OAAO,CAAC;IACzE,OAAO,GAAG,GAAG,aAAa,OAAO,EAAE,CAAC;AACtC,CAAC,CAAC;AAGF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAa,0BAA2B,SAAQ,mDAA0B;IAExE,MAAM,CAAC,WAAW;QAChB,OAAO,0BAA0B,CAAC,oBAAoB,EAAgC,CAAC;IACzF,CAAC;IAEO,YAAY,GAAW,aAAa,CAAC;IACrC,eAAe,GAAW,iBAAiB,CAAC;IAC5C,eAAe,GAAY,wBAAwB,CAAC;IAEpD,YAAY,GAClB,CAAC,GAAY,EAAU,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAClD,eAAe,GACrB,CAAC,GAAY,EAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;IAErC,gEAAgE;IACxD,UAAU,GAA0B,IAAI,GAAG,EAAE,CAAC;IAEtD,iCAAiC;IACzB,WAAW,GAAwC,IAAI,GAAG,EAAE,CAAC;IAErE,uBAAuB;IACf,OAAO,GAA0B,IAAI,CAAC;IAG9C;;;OAGG;IACH,SAAS,CAAC,MAA8B;QACtC,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAC1C,CAAC;QACD,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAChD,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAC1C,CAAC;QACD,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAChD,CAAC;QACD,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAChD,CAAC;QACD,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAE,GAAG,EAAE,MAAM,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACxE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,SAAS;
|
|
1
|
+
{"version":3,"file":"rate-limit.middleware.js","sourceRoot":"","sources":["../../../src/_modules/rate-limit/rate-limit.middleware.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/nts-dynamo",
|
|
3
|
-
"version": "01.15.
|
|
3
|
+
"version": "01.15.47",
|
|
4
4
|
"description": "Dynamic NodeTS (NodeJS-Typescript), MongoDB Backend System Framework by Future Development Program Ltd.",
|
|
5
5
|
"DyBu_settings": {
|
|
6
6
|
"packageType": "server-package",
|
|
@@ -317,7 +317,7 @@
|
|
|
317
317
|
"empty": ""
|
|
318
318
|
},
|
|
319
319
|
"peerDependencies": {
|
|
320
|
-
"@futdevpro/fsm-dynamo": "1.15.
|
|
320
|
+
"@futdevpro/fsm-dynamo": "1.15.23",
|
|
321
321
|
"@types/express": "4.17.21",
|
|
322
322
|
"@types/geoip-lite": "~1.4.1",
|
|
323
323
|
"@types/node": "~24.1.0",
|
|
@@ -316,6 +316,58 @@ export class DyNTS_Endpoint_Params<
|
|
|
316
316
|
(error as DyFM_Error).additionalContent.endpointInfo = msg;
|
|
317
317
|
}
|
|
318
318
|
|
|
319
|
+
// FR-071 (2026-06-06) — rich debug-descriptive request-context.
|
|
320
|
+
// Per memory [[feedback_rich_error_handling]] minden errornak debug-level
|
|
321
|
+
// descriptive-nek kell lennie + persisted to errors table. Az endpoint-
|
|
322
|
+
// params catch-blokkjaban minden errorhoz csatoljuk a request snapshot-ot
|
|
323
|
+
// (URL, method, headers KULCSAI ertek nelkul, query, params, origin,
|
|
324
|
+
// user-agent), igy a TEST environment-en a kliens-oldali fejleszto a
|
|
325
|
+
// response-bol latja MI hianyzott a request-bol, NEM csak az error-code-ot.
|
|
326
|
+
// Header-VALUEK nem szivarognak ki — csak a kulcs-listat es az auth-header
|
|
327
|
+
// alakjat (length + first 7 chars hogy lassek "Bearer "-rel kezd-e).
|
|
328
|
+
try {
|
|
329
|
+
const headerKeys: string[] = Object.keys(req?.headers ?? {});
|
|
330
|
+
const authHeader: unknown = req?.headers?.['authorization'];
|
|
331
|
+
const authHeaderShape: string = typeof authHeader === 'string'
|
|
332
|
+
? `present (len=${authHeader.length}, startsWith="${authHeader.substring(0, 7)}")`
|
|
333
|
+
: 'MISSING';
|
|
334
|
+
const requestSnapshot: Record<string, unknown> = {
|
|
335
|
+
url: req?.originalUrl ?? req?.url,
|
|
336
|
+
method: req?.method,
|
|
337
|
+
origin: req?.headers?.origin ?? null,
|
|
338
|
+
referer: req?.headers?.referer ?? null,
|
|
339
|
+
userAgent: req?.headers?.['user-agent'] ?? null,
|
|
340
|
+
hostHeader: req?.headers?.host ?? null,
|
|
341
|
+
headerKeyCount: headerKeys.length,
|
|
342
|
+
headerKeys: headerKeys.sort(),
|
|
343
|
+
hasAuthorizationKey: headerKeys.includes('authorization'),
|
|
344
|
+
authHeaderShape: authHeaderShape,
|
|
345
|
+
hasSecretKeyKey: headerKeys.includes('secret-key'),
|
|
346
|
+
hasAdminKeyKey: headerKeys.includes('x-admin-key'),
|
|
347
|
+
hasContentTypeKey: headerKeys.includes('content-type'),
|
|
348
|
+
params: req?.params,
|
|
349
|
+
query: req?.query,
|
|
350
|
+
remoteAddress: req?.ip ?? null,
|
|
351
|
+
};
|
|
352
|
+
if (error instanceof DyFM_Error) {
|
|
353
|
+
if (!(error as DyFM_Error).additionalContent) {
|
|
354
|
+
(error as DyFM_Error).additionalContent = {};
|
|
355
|
+
}
|
|
356
|
+
(error as DyFM_Error).additionalContent.requestDebug = requestSnapshot;
|
|
357
|
+
}
|
|
358
|
+
// Plusz: 1-soros debug log a server-side log-buffer-ben.
|
|
359
|
+
DyFM_Log.warn(
|
|
360
|
+
`[FR-071 req-debug] ${req?.method ?? '?'} ${req?.originalUrl ?? req?.url ?? '?'} ` +
|
|
361
|
+
`(endpoint=${this.name}, origin=${req?.headers?.origin ?? 'none'}, ` +
|
|
362
|
+
`auth=${headerKeys.includes('authorization') ? 'yes' : 'NO'}, ` +
|
|
363
|
+
`secretKey=${headerKeys.includes('secret-key') ? 'yes' : 'no'}, ` +
|
|
364
|
+
`adminKey=${headerKeys.includes('x-admin-key') ? 'yes' : 'no'}, ` +
|
|
365
|
+
`errorCode=${(error as DyFM_Error)?._errorCode ?? '(raw)'})`
|
|
366
|
+
);
|
|
367
|
+
} catch /* (snapshotErr) */ {
|
|
368
|
+
// ha a snapshot kepzese maga is bukik, ne maszek bele az error-flow-ba.
|
|
369
|
+
}
|
|
370
|
+
|
|
319
371
|
await DyNTS_GlobalService.globalErrorHandler?.(
|
|
320
372
|
error,
|
|
321
373
|
req,
|
|
@@ -57,4 +57,13 @@ export interface DyNTS_RateLimit_Config {
|
|
|
57
57
|
* felulhatja ezeket.
|
|
58
58
|
*/
|
|
59
59
|
initialKeyPolicies?: Record<string, DyNTS_RateLimit_Policy>;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Per-endpoint(-csoport) policy override-ok az induloskor. A `setPolicyForEndpoint()`
|
|
63
|
+
* runtime-ban is felulhatja ezeket. A kulcs annak felel meg, amit az `endpointGrouper`
|
|
64
|
+
* visszaad (default: `req.path`). Akkor hasznos, ha kulonbozo endpointoknak kulonbozo
|
|
65
|
+
* limit kell (pl. egy webhook nagy burst-toleranciat igenyel a legit forgalomhoz, mig
|
|
66
|
+
* egy admin-endpoint szuk limitet). Precedencia: per-kulcs policy > per-endpoint policy > default.
|
|
67
|
+
*/
|
|
68
|
+
initialEndpointPolicies?: Record<string, DyNTS_RateLimit_Policy>;
|
|
60
69
|
}
|
|
@@ -163,6 +163,59 @@ describe('| DyNTS_RateLimit_Middleware', (): void => {
|
|
|
163
163
|
});
|
|
164
164
|
|
|
165
165
|
|
|
166
|
+
describe('| setPolicyForEndpoint() — per-endpoint limit', (): void => {
|
|
167
|
+
it('| egyedi limit az endpointra felulhatja a default-ot, mas endpoint nem erintett', async (): Promise<void> => {
|
|
168
|
+
svc.configure({ defaultLimit: 2, defaultWindowMs: 10000 });
|
|
169
|
+
svc.setPolicyForEndpoint('/webhook', { limit: 5, windowMs: 10000 });
|
|
170
|
+
|
|
171
|
+
// /webhook 5-ot kap a default 2 helyett
|
|
172
|
+
for (let i: number = 0; i < 5; i++) {
|
|
173
|
+
await svc.check(mockReq({ path: '/webhook' }), mockRes());
|
|
174
|
+
}
|
|
175
|
+
let webhookThrown: any = null;
|
|
176
|
+
try { await svc.check(mockReq({ path: '/webhook' }), mockRes()); } catch (e) { webhookThrown = e; }
|
|
177
|
+
expect(webhookThrown).not.toBeNull();
|
|
178
|
+
expect(DyFM_Error.getErrorStatus(webhookThrown)).toBe(429);
|
|
179
|
+
|
|
180
|
+
// egy masik endpoint tovabbra is a default 2-t kapja (a per-endpoint policy izolalt)
|
|
181
|
+
await svc.check(mockReq({ path: '/admin/refund' }), mockRes());
|
|
182
|
+
await svc.check(mockReq({ path: '/admin/refund' }), mockRes());
|
|
183
|
+
let refundThrown: any = null;
|
|
184
|
+
try { await svc.check(mockReq({ path: '/admin/refund' }), mockRes()); } catch (e) { refundThrown = e; }
|
|
185
|
+
expect(refundThrown).not.toBeNull();
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
it('| clearPolicyForEndpoint visszaallit a default-ra', async (): Promise<void> => {
|
|
189
|
+
svc.configure({ defaultLimit: 1, defaultWindowMs: 10000 });
|
|
190
|
+
svc.setPolicyForEndpoint('/webhook', { limit: 5, windowMs: 10000 });
|
|
191
|
+
svc.clearPolicyForEndpoint('/webhook');
|
|
192
|
+
|
|
193
|
+
await svc.check(mockReq({ path: '/webhook' }), mockRes());
|
|
194
|
+
let thrown: any = null;
|
|
195
|
+
try { await svc.check(mockReq({ path: '/webhook' }), mockRes()); } catch (e) { thrown = e; }
|
|
196
|
+
expect(thrown).not.toBeNull();
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
it('| precedencia: per-kulcs policy felulirja a per-endpoint policy-t', async (): Promise<void> => {
|
|
200
|
+
svc.configure({
|
|
201
|
+
defaultLimit: 2,
|
|
202
|
+
defaultWindowMs: 10000,
|
|
203
|
+
keyExtractor: (req: Request): string => (req.headers['x-api-key'] as string) ?? req.ip ?? 'anon',
|
|
204
|
+
});
|
|
205
|
+
svc.setPolicyForEndpoint('/webhook', { limit: 5, windowMs: 10000 });
|
|
206
|
+
svc.setPolicyForKey('throttled-key', { limit: 1, windowMs: 10000 });
|
|
207
|
+
|
|
208
|
+
// a kulcs-policy (1) gyoz az endpoint-policy (5) felett
|
|
209
|
+
await svc.check(mockReq({ path: '/webhook', headers: { 'x-api-key': 'throttled-key' } }), mockRes());
|
|
210
|
+
let thrown: any = null;
|
|
211
|
+
try {
|
|
212
|
+
await svc.check(mockReq({ path: '/webhook', headers: { 'x-api-key': 'throttled-key' } }), mockRes());
|
|
213
|
+
} catch (e) { thrown = e; }
|
|
214
|
+
expect(thrown).not.toBeNull();
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
|
|
166
219
|
describe('| keyExtractor override', (): void => {
|
|
167
220
|
it('| custom keyExtractor felulhatja a default IP-alapu-t', async (): Promise<void> => {
|
|
168
221
|
svc.configure({
|
|
@@ -93,6 +93,9 @@ export class DyNTS_RateLimit_Middleware extends DyNTS_SingletonServiceBase {
|
|
|
93
93
|
/** Per-kulcs egyedi policy-k. */
|
|
94
94
|
private keyPolicies: Map<string, DyNTS_RateLimit_Policy> = new Map();
|
|
95
95
|
|
|
96
|
+
/** Per-endpoint(-csoport) egyedi policy-k (a `endpointGrouper` outputjara kulcsolva). */
|
|
97
|
+
private endpointPolicies: Map<string, DyNTS_RateLimit_Policy> = new Map();
|
|
98
|
+
|
|
96
99
|
/** GC timer handle. */
|
|
97
100
|
private gcTimer: NodeJS.Timeout | null = null;
|
|
98
101
|
|
|
@@ -122,6 +125,11 @@ export class DyNTS_RateLimit_Middleware extends DyNTS_SingletonServiceBase {
|
|
|
122
125
|
this.keyPolicies.set(key, policy);
|
|
123
126
|
}
|
|
124
127
|
}
|
|
128
|
+
if (config.initialEndpointPolicies !== undefined) {
|
|
129
|
+
for (const [ endpoint, policy ] of Object.entries(config.initialEndpointPolicies)) {
|
|
130
|
+
this.endpointPolicies.set(endpoint, policy);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
125
133
|
this.startGcTimer();
|
|
126
134
|
}
|
|
127
135
|
|
|
@@ -133,14 +141,16 @@ export class DyNTS_RateLimit_Middleware extends DyNTS_SingletonServiceBase {
|
|
|
133
141
|
defaultWindowMs: number;
|
|
134
142
|
responseHeaders: boolean;
|
|
135
143
|
activeKeyPolicies: number;
|
|
144
|
+
activeEndpointPolicies: number;
|
|
136
145
|
trackedStorageKeys: number;
|
|
137
146
|
} {
|
|
138
147
|
return {
|
|
139
|
-
defaultLimit:
|
|
140
|
-
defaultWindowMs:
|
|
141
|
-
responseHeaders:
|
|
142
|
-
activeKeyPolicies:
|
|
143
|
-
|
|
148
|
+
defaultLimit: this.defaultLimit,
|
|
149
|
+
defaultWindowMs: this.defaultWindowMs,
|
|
150
|
+
responseHeaders: this.responseHeaders,
|
|
151
|
+
activeKeyPolicies: this.keyPolicies.size,
|
|
152
|
+
activeEndpointPolicies: this.endpointPolicies.size,
|
|
153
|
+
trackedStorageKeys: this.requestLog.size,
|
|
144
154
|
};
|
|
145
155
|
}
|
|
146
156
|
|
|
@@ -160,6 +170,24 @@ export class DyNTS_RateLimit_Middleware extends DyNTS_SingletonServiceBase {
|
|
|
160
170
|
this.keyPolicies.delete(key);
|
|
161
171
|
}
|
|
162
172
|
|
|
173
|
+
/**
|
|
174
|
+
* Per-endpoint(-csoport) egyedi policy beallitas. Az `endpoint`-nek pontosan
|
|
175
|
+
* azzal a stringgel kell egyeznie, amit az `endpointGrouper` visszaad (default: `req.path`).
|
|
176
|
+
* Akkor hasznos, ha egy endpointnak a globalis default-tol eltero limit kell — pl. egy
|
|
177
|
+
* webhook nagy burst-toleranciat igenyel (a legit, distributed forgalom ne bukjon), mig
|
|
178
|
+
* egy admin-endpoint szuk limitet. Precedencia: per-kulcs policy > per-endpoint policy > default.
|
|
179
|
+
*/
|
|
180
|
+
setPolicyForEndpoint(endpoint: string, policy: DyNTS_RateLimit_Policy): void {
|
|
181
|
+
this.endpointPolicies.set(endpoint, policy);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Per-endpoint policy torlese (visszaall a default-ra).
|
|
186
|
+
*/
|
|
187
|
+
clearPolicyForEndpoint(endpoint: string): void {
|
|
188
|
+
this.endpointPolicies.delete(endpoint);
|
|
189
|
+
}
|
|
190
|
+
|
|
163
191
|
|
|
164
192
|
/**
|
|
165
193
|
* Pre-process function — atadhato `DyNTS_Endpoint_Params.preProcesses`-be.
|
|
@@ -176,10 +204,14 @@ export class DyNTS_RateLimit_Middleware extends DyNTS_SingletonServiceBase {
|
|
|
176
204
|
const endpoint: string = this.endpointGrouper(req);
|
|
177
205
|
const storageKey: string = `${subject}|${endpoint}`;
|
|
178
206
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
207
|
+
// precedencia: per-kulcs policy (legspecifikusabb, pl. subscriber-tier) > per-endpoint policy > default
|
|
208
|
+
const policy: DyNTS_RateLimit_Policy =
|
|
209
|
+
this.keyPolicies.get(subject) ??
|
|
210
|
+
this.endpointPolicies.get(endpoint) ??
|
|
211
|
+
{
|
|
212
|
+
limit: this.defaultLimit,
|
|
213
|
+
windowMs: this.defaultWindowMs,
|
|
214
|
+
};
|
|
183
215
|
|
|
184
216
|
const now: number = Date.now();
|
|
185
217
|
const windowStart: number = now - policy.windowMs;
|
|
@@ -305,6 +337,7 @@ export class DyNTS_RateLimit_Middleware extends DyNTS_SingletonServiceBase {
|
|
|
305
337
|
this.endpointGrouper = (req: Request): string => req.path;
|
|
306
338
|
this.requestLog.clear();
|
|
307
339
|
this.keyPolicies.clear();
|
|
340
|
+
this.endpointPolicies.clear();
|
|
308
341
|
this.stopGcTimer();
|
|
309
342
|
}
|
|
310
343
|
}
|