xypriss 9.12.28 → 9.12.30
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/cjs/src/server/ServerFactory.js +1 -0
- package/dist/cjs/src/server/ServerFactory.js.map +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js +2 -0
- package/dist/cjs/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js.map +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/buildUploadArgs.js +4 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/buildUploadArgs.js.map +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/builders/corsBuilder.js +23 -0
- package/dist/cjs/src/server/core/XHSCBridge/cmd/builders/corsBuilder.js.map +1 -0
- package/dist/cjs/src/server/core/XHSCBridge/cmd/builders/helmetBuilder.js +2 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/builders/helmetBuilder.js.map +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/builders/injectionBuilders.js +10 -9
- package/dist/cjs/src/server/core/XHSCBridge/cmd/builders/injectionBuilders.js.map +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/builders/isFeatureEnabled.js +22 -0
- package/dist/cjs/src/server/core/XHSCBridge/cmd/builders/isFeatureEnabled.js.map +1 -0
- package/dist/cjs/src/server/core/XHSCBridge/cmd/builders/resilienceBuilder.js +9 -6
- package/dist/cjs/src/server/core/XHSCBridge/cmd/builders/resilienceBuilder.js.map +1 -1
- package/dist/esm/src/server/ServerFactory.js +1 -0
- package/dist/esm/src/server/ServerFactory.js.map +1 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js +2 -0
- package/dist/esm/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js.map +1 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/buildUploadArgs.js +4 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/buildUploadArgs.js.map +1 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/builders/corsBuilder.js +21 -0
- package/dist/esm/src/server/core/XHSCBridge/cmd/builders/corsBuilder.js.map +1 -0
- package/dist/esm/src/server/core/XHSCBridge/cmd/builders/helmetBuilder.js +2 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/builders/helmetBuilder.js.map +1 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/builders/injectionBuilders.js +10 -9
- package/dist/esm/src/server/core/XHSCBridge/cmd/builders/injectionBuilders.js.map +1 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/builders/isFeatureEnabled.js +20 -0
- package/dist/esm/src/server/core/XHSCBridge/cmd/builders/isFeatureEnabled.js.map +1 -0
- package/dist/esm/src/server/core/XHSCBridge/cmd/builders/resilienceBuilder.js +9 -6
- package/dist/esm/src/server/core/XHSCBridge/cmd/builders/resilienceBuilder.js.map +1 -1
- package/dist/index.d.ts +4 -8
- package/package.json +1 -1
|
@@ -119,6 +119,7 @@ function createServer(options = {}) {
|
|
|
119
119
|
// We merge these global options with each individual server's config.
|
|
120
120
|
const globalOptions = { ...options };
|
|
121
121
|
delete globalOptions.multiServer;
|
|
122
|
+
ConfigurationManager.CM.merge(globalOptions);
|
|
122
123
|
const servers = (xms || []).map((server) => {
|
|
123
124
|
// Individual server options take precedence over global ones
|
|
124
125
|
return mergeWithDefaults.mergeWithDefaults(globalOptions, server);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerFactory.js","sources":["../../../../src/server/ServerFactory.ts"],"sourcesContent":[null],"names":["rejectInternalFlag","configLoader","Logger","
|
|
1
|
+
{"version":3,"file":"ServerFactory.js","sources":["../../../../src/server/ServerFactory.ts"],"sourcesContent":[null],"names":["rejectInternalFlag","configLoader","Logger","Configs","mergeWithDefaults","handleWorkerMode","initializeLogger","MultiServerManager","MultiServerApp","XyServerCreator"],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;AAsBiF;AAejF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DG;AACG,SAAU,YAAY,CAAC,OAAA,GAAyB,EAAE,EAAA;;IAEpDA,yCAAkB,CAAC,OAAO,CAAC;;IAG3BC,yBAAY,CAAC,qBAAqB,EAAE;AACpC,IAAAC,aAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;IACnC,MAAM,GAAG,GAAG,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;;AAG1C,IAAA,IAAI,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE;;;;AAI9B,QAAA,MAAM,aAAa,GAAG,EAAE,GAAG,OAAO,EAAE;QACpC,OAAO,aAAa,CAAC,WAAW;AAEhC,QAAAC,uBAAO,CAAC,KAAK,CAAC,aAAa,CAAC;AAE5B,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,KAAI;;AAEvC,YAAA,OAAOC,mCAAiB,CAAC,aAAa,EAAE,MAAa,CAAC;AAC1D,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CACX,wIAAwI,CAC3I;QACL;AAEA,QAAA,MAAM,aAAa,GAAGC,kCAAgB,CAAC,OAAO,CAAC;AAC/C,QAAAF,uBAAO,CAAC,KAAK,CAAC,aAAa,CAAC;QAC5B,MAAM,MAAM,GAAGG,uBAAgB,CAACH,uBAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACvD,QAAA,MAAM,kBAAkB,GAAG,IAAII,qCAAkB,CAC7CJ,uBAAO,CAAC,MAAM,EAAE,EAChB,MAAM,CACT;QAED,MAAM,QAAQ,GAAG,IAAIK,6BAAc,CAC/B,kBAAkB,EAClB,OAAc,EACd,MAAM,CACT;AAED,QAAA,OAAO,QAA4B;IACvC;;AAGA,IAAA,OAAOC,+BAAe,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1C;AACO,MAAM,OAAO,GAAG;AACnB,IAAA,MAAM,EAAE,YAAY;;;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
require('../../../../index.js');
|
|
4
|
+
var corsBuilder = require('./builders/corsBuilder.js');
|
|
4
5
|
var rateLimitBuilder = require('./builders/rateLimitBuilder.js');
|
|
5
6
|
var resilienceBuilder = require('./builders/resilienceBuilder.js');
|
|
6
7
|
var helmetBuilder = require('./builders/helmetBuilder.js');
|
|
@@ -17,6 +18,7 @@ function buildSecurityArgs(securityConf, rmconf, rootConf, app) {
|
|
|
17
18
|
}
|
|
18
19
|
resilienceBuilder.buildResilienceArgs(rmconf, args);
|
|
19
20
|
helmetBuilder.buildHelmetArgs(securityConf, args);
|
|
21
|
+
corsBuilder.buildCorsArgs(securityConf, args);
|
|
20
22
|
csrfBuilder.buildCsrfArgs(securityConf, args);
|
|
21
23
|
injectionBuilders.buildXssArgs(securityConf, args);
|
|
22
24
|
injectionBuilders.buildResponseManipulationArgs(rootConf, args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildSecurityArgs.js","sources":["../../../../../../../src/server/core/XHSCBridge/cmd/buildSecurityArgs.ts"],"sourcesContent":[null],"names":["Configs","buildRateLimitArgs","buildResilienceArgs","buildHelmetArgs","buildCsrfArgs","buildXssArgs","buildResponseManipulationArgs","buildHppArgs","buildXxeArgs","buildSlowDownArgs","buildSqliArgs","buildCmdInjectArgs","buildPathTraversalArgs","buildLdapInjectArgs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"buildSecurityArgs.js","sources":["../../../../../../../src/server/core/XHSCBridge/cmd/buildSecurityArgs.ts"],"sourcesContent":[null],"names":["Configs","buildRateLimitArgs","buildResilienceArgs","buildHelmetArgs","buildCorsArgs","buildCsrfArgs","buildXssArgs","buildResponseManipulationArgs","buildHppArgs","buildXxeArgs","buildSlowDownArgs","buildSqliArgs","buildCmdInjectArgs","buildPathTraversalArgs","buildLdapInjectArgs"],"mappings":";;;;;;;;;;;AAuBaA,uBAAO,CAAC,GAAG,CAAC,mBAAmB;AAEtC,SAAU,iBAAiB,CAC7B,YAA8B,EAC9B,MAAmB,EACnB,QAAc,EACd,GAAS,EAAA;IAET,MAAM,IAAI,GAAa,EAAE;AAEzB,IAAAC,mCAAkB,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC;IAE3C,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,KAAK,KAAK,EAAE;AAChD,QAAA,OAAO,IAAI;IACf;AAEA,IAAAC,qCAAmB,CAAC,MAAM,EAAE,IAAI,CAAC;AACjC,IAAAC,6BAAe,CAAC,YAAY,EAAE,IAAI,CAAC;AACnC,IAAAC,yBAAa,CAAC,YAAY,EAAE,IAAI,CAAC;AACjC,IAAAC,yBAAa,CAAC,YAAY,EAAE,IAAI,CAAC;AACjC,IAAAC,8BAAY,CAAC,YAAY,EAAE,IAAI,CAAC;AAChC,IAAAC,+CAA6B,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC7C,IAAAC,8BAAY,CAAC,YAAY,EAAE,IAAI,CAAC;AAChC,IAAAC,8BAAY,CAAC,YAAY,EAAE,IAAI,CAAC;AAChC,IAAAC,mCAAiB,CAAC,YAAY,EAAE,IAAI,CAAC;AACrC,IAAAC,+BAAa,CAAC,YAAY,EAAE,IAAI,CAAC;AACjC,IAAAC,oCAAkB,CAAC,YAAY,EAAE,IAAI,CAAC;AACtC,IAAAC,wCAAsB,CAAC,YAAY,EAAE,IAAI,CAAC;AAC1C,IAAAC,qCAAmB,CAAC,YAAY,EAAE,IAAI,CAAC;AAEvC,IAAA,OAAO,IAAI;AACf;;;;"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
function buildUploadArgs(uploadConf) {
|
|
4
|
-
|
|
4
|
+
const isEnabled = uploadConf &&
|
|
5
|
+
uploadConf.enabled !== false &&
|
|
6
|
+
(uploadConf.enabled === true || !!uploadConf.destination);
|
|
7
|
+
if (!isEnabled)
|
|
5
8
|
return [];
|
|
6
9
|
const args = [];
|
|
7
10
|
if (uploadConf.destination)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildUploadArgs.js","sources":["../../../../../../../src/server/core/XHSCBridge/cmd/buildUploadArgs.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAM,SAAU,eAAe,CAAC,UAAe,EAAA;IAC3C,IAAI,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"buildUploadArgs.js","sources":["../../../../../../../src/server/core/XHSCBridge/cmd/buildUploadArgs.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAM,SAAU,eAAe,CAAC,UAAe,EAAA;IAC3C,MAAM,SAAS,GACX,UAAU;QACV,UAAU,CAAC,OAAO,KAAK,KAAK;AAC5B,SAAC,UAAU,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;AAC7D,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,EAAE;IAEzB,MAAM,IAAI,GAAa,EAAE;IAEzB,IAAI,UAAU,CAAC,WAAW;QACtB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,WAAW,CAAC;IACrD,IAAI,UAAU,CAAC,WAAW;QACtB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,WAAW,CAAC;AAC1D,IAAA,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS;QACrC,IAAI,CAAC,IAAI,CAAC,CAAA,wBAAA,EAA2B,UAAU,CAAC,YAAY,CAAA,CAAE,CAAC;IAEnE,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,MAAM,EAAE,QAAQ;IACzE,IAAI,WAAW,KAAK,SAAS;QACzB,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IAE/D,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE,KAAK;IAChE,IAAI,QAAQ,KAAK,SAAS;QACtB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAExD,IAAA,IACI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC;AAC1C,QAAA,UAAU,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;AAEtC,QAAA,IAAI,CAAC,IAAI,CACL,wBAAwB,EACxB,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CACxC;AAEL,IAAA,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS;QAClC,IAAI,CAAC,IAAI,CAAC,CAAA,oBAAA,EAAuB,UAAU,CAAC,SAAS,CAAA,CAAE,CAAC;AAE5D,IAAA,OAAO,IAAI;AACf;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var xyprissSecurity = require('xypriss-security');
|
|
4
|
+
var isFeatureEnabled = require('./isFeatureEnabled.js');
|
|
5
|
+
|
|
6
|
+
function buildCorsArgs(securityConf, args) {
|
|
7
|
+
if (isFeatureEnabled.isFeatureEnabled(securityConf?.cors)) {
|
|
8
|
+
let userCorsOpts = typeof securityConf?.cors === "object" ? securityConf.cors : {};
|
|
9
|
+
let finalCorsOpts = { ...userCorsOpts };
|
|
10
|
+
if (finalCorsOpts.origin) {
|
|
11
|
+
if (Array.isArray(finalCorsOpts.origin)) {
|
|
12
|
+
finalCorsOpts.origin = finalCorsOpts.origin.map((o) => o instanceof RegExp ? o.toString() : String(o));
|
|
13
|
+
}
|
|
14
|
+
else if (finalCorsOpts.origin instanceof RegExp) {
|
|
15
|
+
finalCorsOpts.origin = finalCorsOpts.origin.toString();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
args.push("--cors-config-json", Buffer.from(xyprissSecurity.XStringify(finalCorsOpts)).toString("base64"));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
exports.buildCorsArgs = buildCorsArgs;
|
|
23
|
+
//# sourceMappingURL=corsBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corsBuilder.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/corsBuilder.ts"],"sourcesContent":[null],"names":["isFeatureEnabled","XStringify"],"mappings":";;;;;AAGM,SAAU,aAAa,CAAC,YAAiB,EAAE,IAAc,EAAA;AAC3D,IAAA,IAAIA,iCAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE;AACtC,QAAA,IAAI,YAAY,GACZ,OAAO,YAAY,EAAE,IAAI,KAAK,QAAQ,GAAG,YAAY,CAAC,IAAI,GAAG,EAAE;AAEnE,QAAA,IAAI,aAAa,GAAQ,EAAE,GAAG,YAAY,EAAE;AAE5C,QAAA,IAAI,aAAa,CAAC,MAAM,EAAE;YACtB,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACrC,gBAAA,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,KACnD,CAAC,YAAY,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CACjD;YACL;AAAO,iBAAA,IAAI,aAAa,CAAC,MAAM,YAAY,MAAM,EAAE;gBAC/C,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC1D;QACJ;QAEA,IAAI,CAAC,IAAI,CACL,oBAAoB,EACpB,MAAM,CAAC,IAAI,CAACC,0BAAU,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC5D;IACL;AACJ;;;;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var xyprissSecurity = require('xypriss-security');
|
|
4
|
+
var isFeatureEnabled = require('./isFeatureEnabled.js');
|
|
4
5
|
|
|
5
6
|
function buildHelmetArgs(securityConf, args) {
|
|
6
|
-
if (securityConf?.helmet
|
|
7
|
+
if (isFeatureEnabled.isFeatureEnabled(securityConf?.helmet)) {
|
|
7
8
|
const defaultHelmetOpts = {
|
|
8
9
|
contentSecurityPolicy: {
|
|
9
10
|
directives: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helmetBuilder.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/helmetBuilder.ts"],"sourcesContent":[null],"names":["XStringify"],"mappings":"
|
|
1
|
+
{"version":3,"file":"helmetBuilder.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/helmetBuilder.ts"],"sourcesContent":[null],"names":["isFeatureEnabled","XStringify"],"mappings":"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"}
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
var xyprissSecurity = require('xypriss-security');
|
|
4
4
|
require('../../../../../index.js');
|
|
5
|
+
var isFeatureEnabled = require('./isFeatureEnabled.js');
|
|
5
6
|
var normalizeRouteConfig = require('./normalizeRouteConfig.js');
|
|
6
7
|
var ConfigurationManager = require('../../../../../ConfigurationManager.js');
|
|
7
8
|
|
|
8
9
|
function buildXssArgs(securityConf, args) {
|
|
9
|
-
if (securityConf?.xss) {
|
|
10
|
+
if (isFeatureEnabled.isFeatureEnabled(securityConf?.xss)) {
|
|
10
11
|
const defaultXssOpts = {
|
|
11
12
|
enabled: true,
|
|
12
13
|
blockOnDetection: true,
|
|
@@ -33,12 +34,12 @@ function buildXssArgs(securityConf, args) {
|
|
|
33
34
|
}
|
|
34
35
|
function buildResponseManipulationArgs(rootConf, args) {
|
|
35
36
|
const responseManipulation = rootConf?.responseManipulation || ConfigurationManager.CM.get("responseManipulation");
|
|
36
|
-
if (responseManipulation
|
|
37
|
+
if (isFeatureEnabled.isFeatureEnabled(responseManipulation)) {
|
|
37
38
|
args.push("--response-manipulation-config-json", Buffer.from(xyprissSecurity.XStringify(responseManipulation)).toString("base64"));
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
41
|
function buildHppArgs(securityConf, args) {
|
|
41
|
-
if (securityConf?.hpp) {
|
|
42
|
+
if (isFeatureEnabled.isFeatureEnabled(securityConf?.hpp)) {
|
|
42
43
|
const defaultHppOpts = {
|
|
43
44
|
checkQuery: true,
|
|
44
45
|
checkBody: true,
|
|
@@ -51,7 +52,7 @@ function buildHppArgs(securityConf, args) {
|
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
54
|
function buildXxeArgs(securityConf, args) {
|
|
54
|
-
if (securityConf?.xxe) {
|
|
55
|
+
if (isFeatureEnabled.isFeatureEnabled(securityConf?.xxe)) {
|
|
55
56
|
const defaultXxeOpts = {
|
|
56
57
|
enabled: true,
|
|
57
58
|
blockOnDetection: true,
|
|
@@ -70,7 +71,7 @@ function buildXxeArgs(securityConf, args) {
|
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
function buildSlowDownArgs(securityConf, args) {
|
|
73
|
-
if (securityConf?.slowDown) {
|
|
74
|
+
if (isFeatureEnabled.isFeatureEnabled(securityConf?.slowDown)) {
|
|
74
75
|
const defaultSlowDownOpts = {
|
|
75
76
|
windowMs: 60000,
|
|
76
77
|
delayAfter: 1,
|
|
@@ -85,7 +86,7 @@ function buildSlowDownArgs(securityConf, args) {
|
|
|
85
86
|
}
|
|
86
87
|
}
|
|
87
88
|
function buildSqliArgs(securityConf, args) {
|
|
88
|
-
if (securityConf?.sqlInjection) {
|
|
89
|
+
if (isFeatureEnabled.isFeatureEnabled(securityConf?.sqlInjection)) {
|
|
89
90
|
const defaultSqliOpts = {
|
|
90
91
|
enabled: true,
|
|
91
92
|
blockOnDetection: true,
|
|
@@ -107,7 +108,7 @@ function buildSqliArgs(securityConf, args) {
|
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
110
|
function buildCmdInjectArgs(securityConf, args) {
|
|
110
|
-
if (securityConf?.commandInjection) {
|
|
111
|
+
if (isFeatureEnabled.isFeatureEnabled(securityConf?.commandInjection)) {
|
|
111
112
|
const defaultCmdInjectOpts = {
|
|
112
113
|
enabled: true,
|
|
113
114
|
blockOnDetection: true,
|
|
@@ -131,7 +132,7 @@ function buildCmdInjectArgs(securityConf, args) {
|
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
134
|
function buildPathTraversalArgs(securityConf, args) {
|
|
134
|
-
if (securityConf?.pathTraversal) {
|
|
135
|
+
if (isFeatureEnabled.isFeatureEnabled(securityConf?.pathTraversal)) {
|
|
135
136
|
const defaultPathTraversalOpts = {
|
|
136
137
|
enabled: true,
|
|
137
138
|
blockOnDetection: true,
|
|
@@ -155,7 +156,7 @@ function buildPathTraversalArgs(securityConf, args) {
|
|
|
155
156
|
}
|
|
156
157
|
}
|
|
157
158
|
function buildLdapInjectArgs(securityConf, args) {
|
|
158
|
-
if (securityConf?.ldapInjection) {
|
|
159
|
+
if (isFeatureEnabled.isFeatureEnabled(securityConf?.ldapInjection)) {
|
|
159
160
|
const defaultLdapInjectOpts = {
|
|
160
161
|
enabled: true,
|
|
161
162
|
blockOnDetection: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectionBuilders.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/injectionBuilders.ts"],"sourcesContent":[null],"names":["normalizeRouteConfig","XStringify","Configs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"injectionBuilders.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/injectionBuilders.ts"],"sourcesContent":[null],"names":["isFeatureEnabled","normalizeRouteConfig","XStringify","Configs"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Helper utility to determine whether a feature configuration module is enabled.
|
|
5
|
+
* Returns false if conf is false, null, undefined, or an object with `enabled: false`.
|
|
6
|
+
* Returns true if conf is true or a truthy object where `enabled` is not false.
|
|
7
|
+
*/
|
|
8
|
+
function isFeatureEnabled(conf) {
|
|
9
|
+
if (conf === false || conf === null || conf === undefined)
|
|
10
|
+
return false;
|
|
11
|
+
if (conf === true)
|
|
12
|
+
return true;
|
|
13
|
+
if (typeof conf === "object") {
|
|
14
|
+
if (conf.enabled === false)
|
|
15
|
+
return false;
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
exports.isFeatureEnabled = isFeatureEnabled;
|
|
22
|
+
//# sourceMappingURL=isFeatureEnabled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isFeatureEnabled.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/isFeatureEnabled.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;AAIG;AACG,SAAU,gBAAgB,CAAC,IAAS,EAAA;IACtC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;IACvE,IAAI,IAAI,KAAK,IAAI;AAAE,QAAA,OAAO,IAAI;AAC9B,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK;AAAE,YAAA,OAAO,KAAK;AACxC,QAAA,OAAO,IAAI;IACf;AACA,IAAA,OAAO,KAAK;AAChB;;;;"}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var isFeatureEnabled = require('./isFeatureEnabled.js');
|
|
4
|
+
|
|
3
5
|
function buildResilienceArgs(rmconf, args) {
|
|
4
6
|
// Circuit breaker
|
|
5
7
|
const cb = rmconf?.resilience?.circuitBreaker;
|
|
6
|
-
if (cb) {
|
|
7
|
-
|
|
8
|
-
args.push("--breaker-enabled");
|
|
8
|
+
if (isFeatureEnabled.isFeatureEnabled(cb)) {
|
|
9
|
+
args.push("--breaker-enabled");
|
|
9
10
|
if (cb.failureThreshold)
|
|
10
11
|
args.push("--breaker-threshold", cb.failureThreshold.toString());
|
|
11
12
|
if (cb.resetTimeout)
|
|
12
13
|
args.push("--breaker-timeout", Math.ceil(cb.resetTimeout / 1000).toString());
|
|
13
14
|
}
|
|
14
15
|
// Retry
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
const retryConf = rmconf?.resilience?.retry;
|
|
17
|
+
const retryEnabled = rmconf?.resilience?.retryEnabled || isFeatureEnabled.isFeatureEnabled(retryConf);
|
|
18
|
+
if (retryEnabled) {
|
|
19
|
+
args.push("--retry-max", (rmconf?.resilience?.maxRetries || retryConf?.maxRetries || 3).toString());
|
|
20
|
+
args.push("--retry-delay", (rmconf?.resilience?.retryDelay || retryConf?.retryDelay || 100).toString());
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resilienceBuilder.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/resilienceBuilder.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resilienceBuilder.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/resilienceBuilder.ts"],"sourcesContent":[null],"names":["isFeatureEnabled"],"mappings":";;;;AAEM,SAAU,mBAAmB,CAAC,MAAW,EAAE,IAAc,EAAA;;AAE3D,IAAA,MAAM,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,cAAc;AAC7C,IAAA,IAAIA,iCAAgB,CAAC,EAAE,CAAC,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC9B,IAAI,EAAE,CAAC,gBAAgB;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QACpE,IAAI,EAAE,CAAC,YAAY;AACf,YAAA,IAAI,CAAC,IAAI,CACL,mBAAmB,EACnB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAC/C;IACT;;AAGA,IAAA,MAAM,SAAS,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK;AAC3C,IAAA,MAAM,YAAY,GACd,MAAM,EAAE,UAAU,EAAE,YAAY,IAAIA,iCAAgB,CAAC,SAAS,CAAC;IACnE,IAAI,YAAY,EAAE;QACd,IAAI,CAAC,IAAI,CACL,aAAa,EACb,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,IAAI,SAAS,EAAE,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,CAC5E;QACD,IAAI,CAAC,IAAI,CACL,eAAe,EACf,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,IAAI,SAAS,EAAE,UAAU,IAAI,GAAG,EAAE,QAAQ,EAAE,CAC9E;IACL;AACJ;;;;"}
|
|
@@ -117,6 +117,7 @@ function createServer(options = {}) {
|
|
|
117
117
|
// We merge these global options with each individual server's config.
|
|
118
118
|
const globalOptions = { ...options };
|
|
119
119
|
delete globalOptions.multiServer;
|
|
120
|
+
ConfigurationManager.merge(globalOptions);
|
|
120
121
|
const servers = (xms || []).map((server) => {
|
|
121
122
|
// Individual server options take precedence over global ones
|
|
122
123
|
return mergeWithDefaults(globalOptions, server);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerFactory.js","sources":["../../../../src/server/ServerFactory.ts"],"sourcesContent":[null],"names":["Configs"],"mappings":";;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;AAsBiF;AAejF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DG;AACG,SAAU,YAAY,CAAC,OAAA,GAAyB,EAAE,EAAA;;IAEpD,kBAAkB,CAAC,OAAO,CAAC;;IAG3B,YAAY,CAAC,qBAAqB,EAAE;AACpC,IAAA,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;IACnC,MAAM,GAAG,GAAG,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;;AAG1C,IAAA,IAAI,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE;;;;AAI9B,QAAA,MAAM,aAAa,GAAG,EAAE,GAAG,OAAO,EAAE;QACpC,OAAO,aAAa,CAAC,WAAW;AAEhC,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,KAAI;;AAEvC,YAAA,OAAO,iBAAiB,CAAC,aAAa,EAAE,MAAa,CAAC;AAC1D,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CACX,wIAAwI,CAC3I;QACL;AAEA,QAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC/C,QAAAA,oBAAO,CAAC,KAAK,CAAC,aAAa,CAAC;QAC5B,MAAM,MAAM,GAAG,gBAAgB,CAACA,oBAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACvD,QAAA,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAC7CA,oBAAO,CAAC,MAAM,EAAE,EAChB,MAAM,CACT;QAED,MAAM,QAAQ,GAAG,IAAI,cAAc,CAC/B,kBAAkB,EAClB,OAAc,EACd,MAAM,CACT;AAED,QAAA,OAAO,QAA4B;IACvC;;AAGA,IAAA,OAAO,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1C;AACO,MAAM,OAAO,GAAG;AACnB,IAAA,MAAM,EAAE,YAAY;;;;;"}
|
|
1
|
+
{"version":3,"file":"ServerFactory.js","sources":["../../../../src/server/ServerFactory.ts"],"sourcesContent":[null],"names":["Configs"],"mappings":";;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;AAsBiF;AAejF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DG;AACG,SAAU,YAAY,CAAC,OAAA,GAAyB,EAAE,EAAA;;IAEpD,kBAAkB,CAAC,OAAO,CAAC;;IAG3B,YAAY,CAAC,qBAAqB,EAAE;AACpC,IAAA,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;IACnC,MAAM,GAAG,GAAG,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;;AAG1C,IAAA,IAAI,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE;;;;AAI9B,QAAA,MAAM,aAAa,GAAG,EAAE,GAAG,OAAO,EAAE;QACpC,OAAO,aAAa,CAAC,WAAW;AAEhC,QAAAA,oBAAO,CAAC,KAAK,CAAC,aAAa,CAAC;AAE5B,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,KAAI;;AAEvC,YAAA,OAAO,iBAAiB,CAAC,aAAa,EAAE,MAAa,CAAC;AAC1D,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CACX,wIAAwI,CAC3I;QACL;AAEA,QAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC/C,QAAAA,oBAAO,CAAC,KAAK,CAAC,aAAa,CAAC;QAC5B,MAAM,MAAM,GAAG,gBAAgB,CAACA,oBAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACvD,QAAA,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAC7CA,oBAAO,CAAC,MAAM,EAAE,EAChB,MAAM,CACT;QAED,MAAM,QAAQ,GAAG,IAAI,cAAc,CAC/B,kBAAkB,EAClB,OAAc,EACd,MAAM,CACT;AAED,QAAA,OAAO,QAA4B;IACvC;;AAGA,IAAA,OAAO,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1C;AACO,MAAM,OAAO,GAAG;AACnB,IAAA,MAAM,EAAE,YAAY;;;;;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import '../../../../index.js';
|
|
2
|
+
import { buildCorsArgs } from './builders/corsBuilder.js';
|
|
2
3
|
import { buildRateLimitArgs } from './builders/rateLimitBuilder.js';
|
|
3
4
|
import { buildResilienceArgs } from './builders/resilienceBuilder.js';
|
|
4
5
|
import { buildHelmetArgs } from './builders/helmetBuilder.js';
|
|
@@ -15,6 +16,7 @@ function buildSecurityArgs(securityConf, rmconf, rootConf, app) {
|
|
|
15
16
|
}
|
|
16
17
|
buildResilienceArgs(rmconf, args);
|
|
17
18
|
buildHelmetArgs(securityConf, args);
|
|
19
|
+
buildCorsArgs(securityConf, args);
|
|
18
20
|
buildCsrfArgs(securityConf, args);
|
|
19
21
|
buildXssArgs(securityConf, args);
|
|
20
22
|
buildResponseManipulationArgs(rootConf, args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildSecurityArgs.js","sources":["../../../../../../../src/server/core/XHSCBridge/cmd/buildSecurityArgs.ts"],"sourcesContent":[null],"names":["Configs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"buildSecurityArgs.js","sources":["../../../../../../../src/server/core/XHSCBridge/cmd/buildSecurityArgs.ts"],"sourcesContent":[null],"names":["Configs"],"mappings":";;;;;;;;;AAuBaA,oBAAO,CAAC,GAAG,CAAC,mBAAmB;AAEtC,SAAU,iBAAiB,CAC7B,YAA8B,EAC9B,MAAmB,EACnB,QAAc,EACd,GAAS,EAAA;IAET,MAAM,IAAI,GAAa,EAAE;AAEzB,IAAA,kBAAkB,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC;IAE3C,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,KAAK,KAAK,EAAE;AAChD,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC;AACjC,IAAA,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC;AACnC,IAAA,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC;AACjC,IAAA,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC;AACjC,IAAA,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC;AAChC,IAAA,6BAA6B,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC7C,IAAA,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC;AAChC,IAAA,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC;AAChC,IAAA,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC;AACrC,IAAA,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC;AACjC,IAAA,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC;AACtC,IAAA,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC;AAC1C,IAAA,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC;AAEvC,IAAA,OAAO,IAAI;AACf;;;;"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
function buildUploadArgs(uploadConf) {
|
|
2
|
-
|
|
2
|
+
const isEnabled = uploadConf &&
|
|
3
|
+
uploadConf.enabled !== false &&
|
|
4
|
+
(uploadConf.enabled === true || !!uploadConf.destination);
|
|
5
|
+
if (!isEnabled)
|
|
3
6
|
return [];
|
|
4
7
|
const args = [];
|
|
5
8
|
if (uploadConf.destination)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildUploadArgs.js","sources":["../../../../../../../src/server/core/XHSCBridge/cmd/buildUploadArgs.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAM,SAAU,eAAe,CAAC,UAAe,EAAA;IAC3C,IAAI,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"buildUploadArgs.js","sources":["../../../../../../../src/server/core/XHSCBridge/cmd/buildUploadArgs.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAM,SAAU,eAAe,CAAC,UAAe,EAAA;IAC3C,MAAM,SAAS,GACX,UAAU;QACV,UAAU,CAAC,OAAO,KAAK,KAAK;AAC5B,SAAC,UAAU,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;AAC7D,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,EAAE;IAEzB,MAAM,IAAI,GAAa,EAAE;IAEzB,IAAI,UAAU,CAAC,WAAW;QACtB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,WAAW,CAAC;IACrD,IAAI,UAAU,CAAC,WAAW;QACtB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,WAAW,CAAC;AAC1D,IAAA,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS;QACrC,IAAI,CAAC,IAAI,CAAC,CAAA,wBAAA,EAA2B,UAAU,CAAC,YAAY,CAAA,CAAE,CAAC;IAEnE,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,MAAM,EAAE,QAAQ;IACzE,IAAI,WAAW,KAAK,SAAS;QACzB,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IAE/D,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE,KAAK;IAChE,IAAI,QAAQ,KAAK,SAAS;QACtB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAExD,IAAA,IACI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC;AAC1C,QAAA,UAAU,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;AAEtC,QAAA,IAAI,CAAC,IAAI,CACL,wBAAwB,EACxB,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CACxC;AAEL,IAAA,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS;QAClC,IAAI,CAAC,IAAI,CAAC,CAAA,oBAAA,EAAuB,UAAU,CAAC,SAAS,CAAA,CAAE,CAAC;AAE5D,IAAA,OAAO,IAAI;AACf;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { XStringify } from 'xypriss-security';
|
|
2
|
+
import { isFeatureEnabled } from './isFeatureEnabled.js';
|
|
3
|
+
|
|
4
|
+
function buildCorsArgs(securityConf, args) {
|
|
5
|
+
if (isFeatureEnabled(securityConf?.cors)) {
|
|
6
|
+
let userCorsOpts = typeof securityConf?.cors === "object" ? securityConf.cors : {};
|
|
7
|
+
let finalCorsOpts = { ...userCorsOpts };
|
|
8
|
+
if (finalCorsOpts.origin) {
|
|
9
|
+
if (Array.isArray(finalCorsOpts.origin)) {
|
|
10
|
+
finalCorsOpts.origin = finalCorsOpts.origin.map((o) => o instanceof RegExp ? o.toString() : String(o));
|
|
11
|
+
}
|
|
12
|
+
else if (finalCorsOpts.origin instanceof RegExp) {
|
|
13
|
+
finalCorsOpts.origin = finalCorsOpts.origin.toString();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
args.push("--cors-config-json", Buffer.from(XStringify(finalCorsOpts)).toString("base64"));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { buildCorsArgs };
|
|
21
|
+
//# sourceMappingURL=corsBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corsBuilder.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/corsBuilder.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGM,SAAU,aAAa,CAAC,YAAiB,EAAE,IAAc,EAAA;AAC3D,IAAA,IAAI,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE;AACtC,QAAA,IAAI,YAAY,GACZ,OAAO,YAAY,EAAE,IAAI,KAAK,QAAQ,GAAG,YAAY,CAAC,IAAI,GAAG,EAAE;AAEnE,QAAA,IAAI,aAAa,GAAQ,EAAE,GAAG,YAAY,EAAE;AAE5C,QAAA,IAAI,aAAa,CAAC,MAAM,EAAE;YACtB,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACrC,gBAAA,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,KACnD,CAAC,YAAY,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CACjD;YACL;AAAO,iBAAA,IAAI,aAAa,CAAC,MAAM,YAAY,MAAM,EAAE;gBAC/C,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC1D;QACJ;QAEA,IAAI,CAAC,IAAI,CACL,oBAAoB,EACpB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC5D;IACL;AACJ;;;;"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { XStringify } from 'xypriss-security';
|
|
2
|
+
import { isFeatureEnabled } from './isFeatureEnabled.js';
|
|
2
3
|
|
|
3
4
|
function buildHelmetArgs(securityConf, args) {
|
|
4
|
-
if (securityConf?.helmet
|
|
5
|
+
if (isFeatureEnabled(securityConf?.helmet)) {
|
|
5
6
|
const defaultHelmetOpts = {
|
|
6
7
|
contentSecurityPolicy: {
|
|
7
8
|
directives: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helmetBuilder.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/helmetBuilder.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helmetBuilder.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/helmetBuilder.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGM,SAAU,eAAe,CAAC,YAAiB,EAAE,IAAc,EAAA;AAC7D,IAAA,IAAI,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE;AACxC,QAAA,MAAM,iBAAiB,GAAG;AACtB,YAAA,qBAAqB,EAAE;AACnB,gBAAA,UAAU,EAAE;oBACR,UAAU,EAAE,CAAC,QAAQ,CAAC;oBACtB,SAAS,EAAE,CAAC,QAAQ,CAAC;AACrB,oBAAA,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACvC,oBAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;oBAC3B,OAAO,EAAE,CAAC,QAAQ,CAAC;AACtB,iBAAA;AACJ,aAAA;AACD,YAAA,yBAAyB,EAAE,IAAI;AAC/B,YAAA,uBAAuB,EAAE,IAAI;AAC7B,YAAA,yBAAyB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;AACpD,YAAA,kBAAkB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACpC,YAAA,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;AAC9B,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,IAAI,EAAE;AACF,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,iBAAiB,EAAE,IAAI;AACvB,gBAAA,OAAO,EAAE,KAAK;AACjB,aAAA;AACD,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,kBAAkB,EAAE,IAAI;AACxB,YAAA,4BAA4B,EAAE,KAAK;AACnC,YAAA,cAAc,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE;AAC7D,YAAA,SAAS,EAAE,IAAI;SAClB;AAED,QAAA,IAAI,cAAc,GACd,OAAO,YAAY,EAAE,MAAM,KAAK,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,EAAE;AACvE,QAAA,IAAI,eAAe,GAAQ,EAAE,GAAG,iBAAiB,EAAE;AAEnD,QAAA,IAAI,cAAc,CAAC,qBAAqB,KAAK,SAAS,EAAE;AACpD,YAAA,IAAI,cAAc,CAAC,qBAAqB,KAAK,KAAK,EAAE;AAChD,gBAAA,eAAe,CAAC,qBAAqB,GAAG,KAAK;YACjD;AAAO,iBAAA,IACH,OAAO,cAAc,CAAC,qBAAqB,KAAK,QAAQ;AACxD,gBAAA,cAAc,CAAC,qBAAqB,KAAK,IAAI,EAC/C;gBACE,eAAe,CAAC,qBAAqB,GAAG;oBACpC,GAAG,iBAAiB,CAAC,qBAAqB;oBAC1C,GAAG,cAAc,CAAC,qBAAqB;iBAC1C;AACD,gBAAA,IAAI,cAAc,CAAC,qBAAqB,CAAC,UAAU,EAAE;oBACjD,MAAM,wBAAwB,GAAQ,EAAE;AACxC,oBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CACrC,cAAc,CAAC,qBAAqB,CAAC,UAAU,CAClD,EAAE;wBACC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAC/C,MAAiB,CAAC,WAAW,EAAE,CACnC;AACD,wBAAA,wBAAwB,CAAC,QAAQ,CAAC,GAAG,KAAK;oBAC9C;AACA,oBAAA,eAAe,CAAC,qBAAqB,CAAC,UAAU,GAAG;wBAC/C,GAAI,iBAAiB,CAAC;6BACjB,UAAU;AACf,wBAAA,GAAG,wBAAwB;qBAC9B;gBACL;YACJ;QACJ;QAEA,MAAM,EAAE,qBAAqB,EAAE,GAAG,SAAS,EAAE,GAAG,cAAc;QAC9D,eAAe,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,SAAS,EAAE;QAEtD,IAAI,CAAC,IAAI,CACL,sBAAsB,EACtB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC9D;IACL;AACJ;;;;"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { XStringify } from 'xypriss-security';
|
|
2
2
|
import '../../../../../index.js';
|
|
3
|
+
import { isFeatureEnabled } from './isFeatureEnabled.js';
|
|
3
4
|
import { normalizeRouteConfig } from './normalizeRouteConfig.js';
|
|
4
5
|
import { CM as ConfigurationManager } from '../../../../../ConfigurationManager.js';
|
|
5
6
|
|
|
6
7
|
function buildXssArgs(securityConf, args) {
|
|
7
|
-
if (securityConf?.xss) {
|
|
8
|
+
if (isFeatureEnabled(securityConf?.xss)) {
|
|
8
9
|
const defaultXssOpts = {
|
|
9
10
|
enabled: true,
|
|
10
11
|
blockOnDetection: true,
|
|
@@ -31,12 +32,12 @@ function buildXssArgs(securityConf, args) {
|
|
|
31
32
|
}
|
|
32
33
|
function buildResponseManipulationArgs(rootConf, args) {
|
|
33
34
|
const responseManipulation = rootConf?.responseManipulation || ConfigurationManager.get("responseManipulation");
|
|
34
|
-
if (responseManipulation
|
|
35
|
+
if (isFeatureEnabled(responseManipulation)) {
|
|
35
36
|
args.push("--response-manipulation-config-json", Buffer.from(XStringify(responseManipulation)).toString("base64"));
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
function buildHppArgs(securityConf, args) {
|
|
39
|
-
if (securityConf?.hpp) {
|
|
40
|
+
if (isFeatureEnabled(securityConf?.hpp)) {
|
|
40
41
|
const defaultHppOpts = {
|
|
41
42
|
checkQuery: true,
|
|
42
43
|
checkBody: true,
|
|
@@ -49,7 +50,7 @@ function buildHppArgs(securityConf, args) {
|
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
52
|
function buildXxeArgs(securityConf, args) {
|
|
52
|
-
if (securityConf?.xxe) {
|
|
53
|
+
if (isFeatureEnabled(securityConf?.xxe)) {
|
|
53
54
|
const defaultXxeOpts = {
|
|
54
55
|
enabled: true,
|
|
55
56
|
blockOnDetection: true,
|
|
@@ -68,7 +69,7 @@ function buildXxeArgs(securityConf, args) {
|
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
function buildSlowDownArgs(securityConf, args) {
|
|
71
|
-
if (securityConf?.slowDown) {
|
|
72
|
+
if (isFeatureEnabled(securityConf?.slowDown)) {
|
|
72
73
|
const defaultSlowDownOpts = {
|
|
73
74
|
windowMs: 60000,
|
|
74
75
|
delayAfter: 1,
|
|
@@ -83,7 +84,7 @@ function buildSlowDownArgs(securityConf, args) {
|
|
|
83
84
|
}
|
|
84
85
|
}
|
|
85
86
|
function buildSqliArgs(securityConf, args) {
|
|
86
|
-
if (securityConf?.sqlInjection) {
|
|
87
|
+
if (isFeatureEnabled(securityConf?.sqlInjection)) {
|
|
87
88
|
const defaultSqliOpts = {
|
|
88
89
|
enabled: true,
|
|
89
90
|
blockOnDetection: true,
|
|
@@ -105,7 +106,7 @@ function buildSqliArgs(securityConf, args) {
|
|
|
105
106
|
}
|
|
106
107
|
}
|
|
107
108
|
function buildCmdInjectArgs(securityConf, args) {
|
|
108
|
-
if (securityConf?.commandInjection) {
|
|
109
|
+
if (isFeatureEnabled(securityConf?.commandInjection)) {
|
|
109
110
|
const defaultCmdInjectOpts = {
|
|
110
111
|
enabled: true,
|
|
111
112
|
blockOnDetection: true,
|
|
@@ -129,7 +130,7 @@ function buildCmdInjectArgs(securityConf, args) {
|
|
|
129
130
|
}
|
|
130
131
|
}
|
|
131
132
|
function buildPathTraversalArgs(securityConf, args) {
|
|
132
|
-
if (securityConf?.pathTraversal) {
|
|
133
|
+
if (isFeatureEnabled(securityConf?.pathTraversal)) {
|
|
133
134
|
const defaultPathTraversalOpts = {
|
|
134
135
|
enabled: true,
|
|
135
136
|
blockOnDetection: true,
|
|
@@ -153,7 +154,7 @@ function buildPathTraversalArgs(securityConf, args) {
|
|
|
153
154
|
}
|
|
154
155
|
}
|
|
155
156
|
function buildLdapInjectArgs(securityConf, args) {
|
|
156
|
-
if (securityConf?.ldapInjection) {
|
|
157
|
+
if (isFeatureEnabled(securityConf?.ldapInjection)) {
|
|
157
158
|
const defaultLdapInjectOpts = {
|
|
158
159
|
enabled: true,
|
|
159
160
|
blockOnDetection: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectionBuilders.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/injectionBuilders.ts"],"sourcesContent":[null],"names":["Configs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"injectionBuilders.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/injectionBuilders.ts"],"sourcesContent":[null],"names":["Configs"],"mappings":";;;;;;AAKM,SAAU,YAAY,CAAC,YAAiB,EAAE,IAAc,EAAA;AAC1D,IAAA,IAAI,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE;AACrC,QAAA,MAAM,cAAc,GAAG;AACnB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,SAAS,EAAE;AACP,gBAAA,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;AACpB,gBAAA,CAAC,EAAE,EAAE;AACL,gBAAA,CAAC,EAAE,EAAE;AACL,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,EAAE,EAAE,EAAE;AACT,aAAA;AACD,YAAA,OAAO,EAAE,iCAAiC;AAC1C,YAAA,UAAU,EAAE,GAAG;SAClB;AAED,QAAA,IAAI,WAAW,GACX,OAAO,YAAY,CAAC,GAAG,KAAK,QAAQ,GAAG,YAAY,CAAC,GAAG,GAAG,EAAE;QAChE,IAAI,YAAY,GAAQ,EAAE,GAAG,cAAc,EAAE,GAAG,WAAW,EAAE;AAC7D,QAAA,IAAI,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE;YAChC,YAAY,CAAC,WAAW,GAAG;gBACvB,aAAa,EAAE,oBAAoB,CAC/B,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAC7C;gBACD,aAAa,EAAE,oBAAoB,CAC/B,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAC7C;aACJ;QACL;QAEA,IAAI,CAAC,IAAI,CACL,mBAAmB,EACnB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC3D;IACL;AACJ;AAEM,SAAU,6BAA6B,CAAC,QAAa,EAAE,IAAc,EAAA;AACvE,IAAA,MAAM,oBAAoB,GACtB,QAAQ,EAAE,oBAAoB,IAAIA,oBAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;AACzE,IAAA,IAAI,gBAAgB,CAAC,oBAAoB,CAAC,EAAE;QACxC,IAAI,CAAC,IAAI,CACL,qCAAqC,EACrC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACnE;IACL;AACJ;AAEM,SAAU,YAAY,CAAC,YAAiB,EAAE,IAAc,EAAA;AAC1D,IAAA,IAAI,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE;AACrC,QAAA,MAAM,cAAc,GAAG;AACnB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,SAAS,EAAE,EAAE;SAChB;AACD,QAAA,IAAI,WAAW,GACX,OAAO,YAAY,CAAC,GAAG,KAAK,QAAQ,GAAG,YAAY,CAAC,GAAG,GAAG,EAAE;QAChE,IAAI,YAAY,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,WAAW,EAAE;QACxD,IAAI,CAAC,IAAI,CACL,mBAAmB,EACnB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC3D;IACL;AACJ;AAEM,SAAU,YAAY,CAAC,YAAiB,EAAE,IAAc,EAAA;AAC1D,IAAA,IAAI,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE;AACrC,QAAA,MAAM,cAAc,GAAG;AACnB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,OAAO,EAAE,iCAAiC;AAC1C,YAAA,UAAU,EAAE,GAAG;SAClB;AACD,QAAA,IAAI,WAAW,GACX,OAAO,YAAY,CAAC,GAAG,KAAK,QAAQ,GAAG,YAAY,CAAC,GAAG,GAAG,EAAE;QAChE,IAAI,YAAY,GAAQ,EAAE,GAAG,cAAc,EAAE,GAAG,WAAW,EAAE;AAC7D,QAAA,IAAI,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE;YAChC,YAAY,CAAC,WAAW,GAAG;gBACvB,aAAa,EAAE,oBAAoB,CAC/B,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAC7C;gBACD,aAAa,EAAE,oBAAoB,CAC/B,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAC7C;aACJ;QACL;QACA,IAAI,CAAC,IAAI,CACL,mBAAmB,EACnB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC3D;IACL;AACJ;AAEM,SAAU,iBAAiB,CAAC,YAAiB,EAAE,IAAc,EAAA;AAC/D,IAAA,IAAI,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE;AAC1C,QAAA,MAAM,mBAAmB,GAAG;AACxB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,UAAU,EAAE,KAAK;SACpB;AACD,QAAA,IAAI,gBAAgB,GAChB,OAAO,YAAY,CAAC,QAAQ,KAAK;cAC3B,YAAY,CAAC;cACb,EAAE;QACZ,IAAI,iBAAiB,GAAG,EAAE,GAAG,mBAAmB,EAAE,GAAG,gBAAgB,EAAE;QACvE,IAAI,CAAC,IAAI,CACL,wBAAwB,EACxB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAChE;IACL;AACJ;AAEM,SAAU,aAAa,CAAC,YAAiB,EAAE,IAAc,EAAA;AAC3D,IAAA,IAAI,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;AAC9C,QAAA,MAAM,eAAe,GAAG;AACpB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,OAAO,EAAE,oCAAoC;AAC7C,YAAA,UAAU,EAAE,GAAG;SAClB;AACD,QAAA,IAAI,YAAY,GACZ,OAAO,YAAY,CAAC,YAAY,KAAK;cAC/B,YAAY,CAAC;cACb,EAAE;QACZ,IAAI,aAAa,GAAQ,EAAE,GAAG,eAAe,EAAE,GAAG,YAAY,EAAE;AAChE,QAAA,IAAI,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE;YACzC,aAAa,CAAC,WAAW,GAAG;gBACxB,aAAa,EAAE,oBAAoB,CAC/B,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,CACtD;gBACD,aAAa,EAAE,oBAAoB,CAC/B,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,CACtD;aACJ;QACL;QACA,IAAI,CAAC,IAAI,CACL,oBAAoB,EACpB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC5D;IACL;AACJ;AAEM,SAAU,kBAAkB,CAAC,YAAiB,EAAE,IAAc,EAAA;AAChE,IAAA,IAAI,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE;AAClD,QAAA,MAAM,oBAAoB,GAAG;AACzB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,OAAO,EAAE,wCAAwC;AACjD,YAAA,UAAU,EAAE,GAAG;SAClB;AACD,QAAA,IAAI,iBAAiB,GACjB,OAAO,YAAY,CAAC,gBAAgB,KAAK;cACnC,YAAY,CAAC;cACb,EAAE;AACZ,QAAA,IAAI,kBAAkB,GAAQ;AAC1B,YAAA,GAAG,oBAAoB;AACvB,YAAA,GAAG,iBAAiB;SACvB;AACD,QAAA,IAAI,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE;YAC7C,kBAAkB,CAAC,WAAW,GAAG;gBAC7B,aAAa,EAAE,oBAAoB,CAC/B,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAC1D;gBACD,aAAa,EAAE,oBAAoB,CAC/B,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAC1D;aACJ;QACL;QACA,IAAI,CAAC,IAAI,CACL,0BAA0B,EAC1B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACjE;IACL;AACJ;AAEM,SAAU,sBAAsB,CAAC,YAAiB,EAAE,IAAc,EAAA;AACpE,IAAA,IAAI,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE;AAC/C,QAAA,MAAM,wBAAwB,GAAG;AAC7B,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,OAAO,EAAE,qCAAqC;AAC9C,YAAA,UAAU,EAAE,GAAG;SAClB;AACD,QAAA,IAAI,qBAAqB,GACrB,OAAO,YAAY,CAAC,aAAa,KAAK;cAChC,YAAY,CAAC;cACb,EAAE;AACZ,QAAA,IAAI,sBAAsB,GAAQ;AAC9B,YAAA,GAAG,wBAAwB;AAC3B,YAAA,GAAG,qBAAqB;SAC3B;AACD,QAAA,IAAI,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE;YAC1C,sBAAsB,CAAC,WAAW,GAAG;gBACjC,aAAa,EAAE,oBAAoB,CAC/B,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CACvD;gBACD,aAAa,EAAE,oBAAoB,CAC/B,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CACvD;aACJ;QACL;QACA,IAAI,CAAC,IAAI,CACL,8BAA8B,EAC9B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACrE;IACL;AACJ;AAEM,SAAU,mBAAmB,CAAC,YAAiB,EAAE,IAAc,EAAA;AACjE,IAAA,IAAI,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE;AAC/C,QAAA,MAAM,qBAAqB,GAAG;AAC1B,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,OAAO,EAAE,qCAAqC;AAC9C,YAAA,UAAU,EAAE,GAAG;SAClB;AACD,QAAA,IAAI,kBAAkB,GAClB,OAAO,YAAY,CAAC,aAAa,KAAK;cAChC,YAAY,CAAC;cACb,EAAE;AACZ,QAAA,IAAI,mBAAmB,GAAQ;AAC3B,YAAA,GAAG,qBAAqB;AACxB,YAAA,GAAG,kBAAkB;SACxB;AACD,QAAA,IAAI,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE;YAC1C,mBAAmB,CAAC,WAAW,GAAG;gBAC9B,aAAa,EAAE,oBAAoB,CAC/B,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CACvD;gBACD,aAAa,EAAE,oBAAoB,CAC/B,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CACvD;aACJ;QACL;QACA,IAAI,CAAC,IAAI,CACL,2BAA2B,EAC3B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAClE;IACL;AACJ;;;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper utility to determine whether a feature configuration module is enabled.
|
|
3
|
+
* Returns false if conf is false, null, undefined, or an object with `enabled: false`.
|
|
4
|
+
* Returns true if conf is true or a truthy object where `enabled` is not false.
|
|
5
|
+
*/
|
|
6
|
+
function isFeatureEnabled(conf) {
|
|
7
|
+
if (conf === false || conf === null || conf === undefined)
|
|
8
|
+
return false;
|
|
9
|
+
if (conf === true)
|
|
10
|
+
return true;
|
|
11
|
+
if (typeof conf === "object") {
|
|
12
|
+
if (conf.enabled === false)
|
|
13
|
+
return false;
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { isFeatureEnabled };
|
|
20
|
+
//# sourceMappingURL=isFeatureEnabled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isFeatureEnabled.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/isFeatureEnabled.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;AAIG;AACG,SAAU,gBAAgB,CAAC,IAAS,EAAA;IACtC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;IACvE,IAAI,IAAI,KAAK,IAAI;AAAE,QAAA,OAAO,IAAI;AAC9B,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK;AAAE,YAAA,OAAO,KAAK;AACxC,QAAA,OAAO,IAAI;IACf;AACA,IAAA,OAAO,KAAK;AAChB;;;;"}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
+
import { isFeatureEnabled } from './isFeatureEnabled.js';
|
|
2
|
+
|
|
1
3
|
function buildResilienceArgs(rmconf, args) {
|
|
2
4
|
// Circuit breaker
|
|
3
5
|
const cb = rmconf?.resilience?.circuitBreaker;
|
|
4
|
-
if (cb) {
|
|
5
|
-
|
|
6
|
-
args.push("--breaker-enabled");
|
|
6
|
+
if (isFeatureEnabled(cb)) {
|
|
7
|
+
args.push("--breaker-enabled");
|
|
7
8
|
if (cb.failureThreshold)
|
|
8
9
|
args.push("--breaker-threshold", cb.failureThreshold.toString());
|
|
9
10
|
if (cb.resetTimeout)
|
|
10
11
|
args.push("--breaker-timeout", Math.ceil(cb.resetTimeout / 1000).toString());
|
|
11
12
|
}
|
|
12
13
|
// Retry
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
const retryConf = rmconf?.resilience?.retry;
|
|
15
|
+
const retryEnabled = rmconf?.resilience?.retryEnabled || isFeatureEnabled(retryConf);
|
|
16
|
+
if (retryEnabled) {
|
|
17
|
+
args.push("--retry-max", (rmconf?.resilience?.maxRetries || retryConf?.maxRetries || 3).toString());
|
|
18
|
+
args.push("--retry-delay", (rmconf?.resilience?.retryDelay || retryConf?.retryDelay || 100).toString());
|
|
16
19
|
}
|
|
17
20
|
}
|
|
18
21
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resilienceBuilder.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/resilienceBuilder.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resilienceBuilder.js","sources":["../../../../../../../../src/server/core/XHSCBridge/cmd/builders/resilienceBuilder.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEM,SAAU,mBAAmB,CAAC,MAAW,EAAE,IAAc,EAAA;;AAE3D,IAAA,MAAM,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,cAAc;AAC7C,IAAA,IAAI,gBAAgB,CAAC,EAAE,CAAC,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC9B,IAAI,EAAE,CAAC,gBAAgB;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QACpE,IAAI,EAAE,CAAC,YAAY;AACf,YAAA,IAAI,CAAC,IAAI,CACL,mBAAmB,EACnB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAC/C;IACT;;AAGA,IAAA,MAAM,SAAS,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK;AAC3C,IAAA,MAAM,YAAY,GACd,MAAM,EAAE,UAAU,EAAE,YAAY,IAAI,gBAAgB,CAAC,SAAS,CAAC;IACnE,IAAI,YAAY,EAAE;QACd,IAAI,CAAC,IAAI,CACL,aAAa,EACb,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,IAAI,SAAS,EAAE,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,CAC5E;QACD,IAAI,CAAC,IAAI,CACL,eAAe,EACf,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,IAAI,SAAS,EAAE,UAAU,IAAI,GAAG,EAAE,QAAQ,EAAE,CAC9E;IACL;AACJ;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9413,14 +9413,10 @@ interface RoutRateLimit {
|
|
|
9413
9413
|
statusCode?: number;
|
|
9414
9414
|
/** Key extractor — defaults to IP */
|
|
9415
9415
|
keyBy?: "ip" | "user" | ((req: XyPrisRequest$1, res?: XyPrisResponse$1) => string);
|
|
9416
|
-
/** XTRS (Temporal Rate Shield) advanced multi-window options
|
|
9417
|
-
|
|
9418
|
-
|
|
9419
|
-
|
|
9420
|
-
/** XTRS block duration e.g. "20s" or ms */
|
|
9421
|
-
blockDuration?: string | number;
|
|
9422
|
-
/** XTRS block duration in milliseconds */
|
|
9423
|
-
blockDurationMs?: number;
|
|
9416
|
+
/** XTRS (Temporal Rate Shield) advanced multi-window options or shorthand rule(s)
|
|
9417
|
+
* @see https://xypriss.nehonix.com/docs/security/xtrs-rate-limiting
|
|
9418
|
+
*/
|
|
9419
|
+
xtrs?: XtrsOptions | string | XtrsRuleInput[];
|
|
9424
9420
|
}
|
|
9425
9421
|
/** Rate limit input options for routes and route groups */
|
|
9426
9422
|
type RoutRateLimitInput = string | RoutRateLimit;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xypriss",
|
|
3
|
-
"version": "9.12.
|
|
3
|
+
"version": "9.12.30",
|
|
4
4
|
"description": "XyPriss is a high-performance, TypeScript-first hyper-system web framework powered by a native Go core (XHSC), featuring robust multi-tenant sandboxing, secure native file streaming, and zero Express dependencies.",
|
|
5
5
|
"author": {
|
|
6
6
|
"DEV.to": "https://dev.to/nehonix",
|