xypriss 9.6.97 → 9.7.0
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/README.md +55 -22
- package/dist/cjs/src/index.js +0 -19
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js +4 -4
- package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/security/HoneypotTarpit.js +510 -0
- package/dist/cjs/src/middleware/built-in/security/HoneypotTarpit.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/SQLInjectionDetector.js +113 -34
- package/dist/cjs/src/middleware/built-in/security/SQLInjectionDetector.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/security/UriNormalizer.js +413 -0
- package/dist/cjs/src/middleware/built-in/security/UriNormalizer.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/XyPrissCors.js +98 -0
- package/dist/cjs/src/middleware/built-in/security/XyPrissCors.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/XyPrissHPP.js +52 -0
- package/dist/cjs/src/middleware/built-in/security/XyPrissHPP.js.map +1 -0
- package/dist/cjs/src/middleware/safe-json-middleware.js +0 -82
- package/dist/cjs/src/middleware/safe-json-middleware.js.map +1 -1
- package/dist/cjs/src/middleware/security-middleware.js +7 -4
- package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
- package/dist/cjs/src/plugins/builtin/xems/XemsBuiltinPlugin.js +33 -10
- package/dist/cjs/src/plugins/builtin/xems/XemsBuiltinPlugin.js.map +1 -1
- package/dist/cjs/src/plugins/builtin/xems/XemsPlugin.js +34 -3
- package/dist/cjs/src/plugins/builtin/xems/XemsPlugin.js.map +1 -1
- package/dist/cjs/src/plugins/const/OFFICIAL_PLUGINS.js +1 -1
- package/dist/cjs/src/plugins/const/OFFICIAL_PLUGINS.js.map +1 -1
- package/dist/cjs/src/plugins/const/XyprissTempDir.js +72 -9
- package/dist/cjs/src/plugins/const/XyprissTempDir.js.map +1 -1
- package/dist/cjs/src/plugins/core/manager/PluginLoader.js +8 -0
- package/dist/cjs/src/plugins/core/manager/PluginLoader.js.map +1 -1
- package/dist/cjs/src/plugins/core/manager/PluginSecurity.js +87 -0
- package/dist/cjs/src/plugins/core/manager/PluginSecurity.js.map +1 -1
- package/dist/cjs/src/server/FastServer/index.js +5 -0
- package/dist/cjs/src/server/FastServer/index.js.map +1 -1
- package/dist/cjs/src/server/ServerFactory.js +8 -13
- package/dist/cjs/src/server/ServerFactory.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/RedirectManager.js +8 -58
- package/dist/cjs/src/server/components/fastapi/RedirectManager.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/upload/FileUploadManager.js +1 -1
- package/dist/cjs/src/server/components/fastapi/upload/FileUploadManager.js.map +1 -1
- package/dist/cjs/src/server/components/multi-server/MultiServerManager.js +9 -1
- package/dist/cjs/src/server/components/multi-server/MultiServerManager.js.map +1 -1
- package/dist/cjs/src/server/core/HttpServer.js +22 -0
- package/dist/cjs/src/server/core/HttpServer.js.map +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/EngineManager.js +33 -2
- package/dist/cjs/src/server/core/XHSCBridge/EngineManager.js.map +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js.map +1 -1
- package/dist/cjs/src/server/core/XyServerCreator.js +1 -0
- package/dist/cjs/src/server/core/XyServerCreator.js.map +1 -1
- package/dist/cjs/src/shared/logger/quickLogger.js +162 -0
- package/dist/cjs/src/shared/logger/quickLogger.js.map +1 -0
- package/dist/cjs/src/xhsc/PathApi.js +44 -3
- package/dist/cjs/src/xhsc/PathApi.js.map +1 -1
- package/dist/cjs/src/xhsc/System.js +2 -0
- package/dist/cjs/src/xhsc/System.js.map +1 -1
- package/dist/cjs/src/xhsc/UtilsApi.js +52 -0
- package/dist/cjs/src/xhsc/UtilsApi.js.map +1 -0
- package/dist/cjs/src/xhsc/XyPrissRunner.js +30 -2
- package/dist/cjs/src/xhsc/XyPrissRunner.js.map +1 -1
- package/dist/cjs/src/xhsc/fs/FSCore.js +148 -0
- package/dist/cjs/src/xhsc/fs/FSCore.js.map +1 -1
- package/dist/cjs/src/xhsc/fs/FileHandle.js +112 -0
- package/dist/cjs/src/xhsc/fs/FileHandle.js.map +1 -0
- package/dist/cjs/src/xhsc/ipc/XHSCDirectIPC.js +134 -0
- package/dist/cjs/src/xhsc/ipc/XHSCDirectIPC.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/ArrayUtils.js +67 -0
- package/dist/cjs/src/xhsc/utils/ArrayUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/AsyncUtils.js +582 -0
- package/dist/cjs/src/xhsc/utils/AsyncUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/DateUtils.js +959 -0
- package/dist/cjs/src/xhsc/utils/DateUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/FunctionUtils.js +29 -0
- package/dist/cjs/src/xhsc/utils/FunctionUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/IdUtils.js +22 -0
- package/dist/cjs/src/xhsc/utils/IdUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/NumberUtils.js +79 -0
- package/dist/cjs/src/xhsc/utils/NumberUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/ObjectUtils.js +141 -0
- package/dist/cjs/src/xhsc/utils/ObjectUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/StringUtils.js +145 -0
- package/dist/cjs/src/xhsc/utils/StringUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/ValidationUtils.js +49 -0
- package/dist/cjs/src/xhsc/utils/ValidationUtils.js.map +1 -0
- package/dist/cjs/src/xhsc.js +5 -3
- package/dist/cjs/src/xhsc.js.map +1 -1
- package/dist/esm/src/index.js +0 -2
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js +4 -4
- package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js.map +1 -1
- package/dist/esm/src/middleware/built-in/security/HoneypotTarpit.js +508 -0
- package/dist/esm/src/middleware/built-in/security/HoneypotTarpit.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/SQLInjectionDetector.js +113 -34
- package/dist/esm/src/middleware/built-in/security/SQLInjectionDetector.js.map +1 -1
- package/dist/esm/src/middleware/built-in/security/UriNormalizer.js +391 -0
- package/dist/esm/src/middleware/built-in/security/UriNormalizer.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/XyPrissCors.js +96 -0
- package/dist/esm/src/middleware/built-in/security/XyPrissCors.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/XyPrissHPP.js +50 -0
- package/dist/esm/src/middleware/built-in/security/XyPrissHPP.js.map +1 -0
- package/dist/esm/src/middleware/safe-json-middleware.js +1 -79
- package/dist/esm/src/middleware/safe-json-middleware.js.map +1 -1
- package/dist/esm/src/middleware/security-middleware.js +7 -4
- package/dist/esm/src/middleware/security-middleware.js.map +1 -1
- package/dist/esm/src/plugins/builtin/xems/XemsBuiltinPlugin.js +33 -10
- package/dist/esm/src/plugins/builtin/xems/XemsBuiltinPlugin.js.map +1 -1
- package/dist/esm/src/plugins/builtin/xems/XemsPlugin.js +34 -3
- package/dist/esm/src/plugins/builtin/xems/XemsPlugin.js.map +1 -1
- package/dist/esm/src/plugins/const/OFFICIAL_PLUGINS.js +1 -1
- package/dist/esm/src/plugins/const/OFFICIAL_PLUGINS.js.map +1 -1
- package/dist/esm/src/plugins/const/XyprissTempDir.js +70 -9
- package/dist/esm/src/plugins/const/XyprissTempDir.js.map +1 -1
- package/dist/esm/src/plugins/core/manager/PluginLoader.js +8 -0
- package/dist/esm/src/plugins/core/manager/PluginLoader.js.map +1 -1
- package/dist/esm/src/plugins/core/manager/PluginSecurity.js +87 -0
- package/dist/esm/src/plugins/core/manager/PluginSecurity.js.map +1 -1
- package/dist/esm/src/server/FastServer/index.js +5 -0
- package/dist/esm/src/server/FastServer/index.js.map +1 -1
- package/dist/esm/src/server/ServerFactory.js +8 -1
- package/dist/esm/src/server/ServerFactory.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/RedirectManager.js +8 -58
- package/dist/esm/src/server/components/fastapi/RedirectManager.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/upload/FileUploadManager.js +1 -1
- package/dist/esm/src/server/components/fastapi/upload/FileUploadManager.js.map +1 -1
- package/dist/esm/src/server/components/multi-server/MultiServerManager.js +9 -1
- package/dist/esm/src/server/components/multi-server/MultiServerManager.js.map +1 -1
- package/dist/esm/src/server/core/HttpServer.js +22 -0
- package/dist/esm/src/server/core/HttpServer.js.map +1 -1
- package/dist/esm/src/server/core/XHSCBridge/EngineManager.js +33 -2
- package/dist/esm/src/server/core/XHSCBridge/EngineManager.js.map +1 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js +1 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js.map +1 -1
- package/dist/esm/src/server/core/XyServerCreator.js +1 -0
- package/dist/esm/src/server/core/XyServerCreator.js.map +1 -1
- package/dist/esm/src/shared/logger/quickLogger.js +160 -0
- package/dist/esm/src/shared/logger/quickLogger.js.map +1 -0
- package/dist/esm/src/xhsc/PathApi.js +44 -3
- package/dist/esm/src/xhsc/PathApi.js.map +1 -1
- package/dist/esm/src/xhsc/System.js +2 -0
- package/dist/esm/src/xhsc/System.js.map +1 -1
- package/dist/esm/src/xhsc/UtilsApi.js +50 -0
- package/dist/esm/src/xhsc/UtilsApi.js.map +1 -0
- package/dist/esm/src/xhsc/XyPrissRunner.js +30 -2
- package/dist/esm/src/xhsc/XyPrissRunner.js.map +1 -1
- package/dist/esm/src/xhsc/fs/FSCore.js +148 -0
- package/dist/esm/src/xhsc/fs/FSCore.js.map +1 -1
- package/dist/esm/src/xhsc/fs/FileHandle.js +110 -0
- package/dist/esm/src/xhsc/fs/FileHandle.js.map +1 -0
- package/dist/esm/src/xhsc/ipc/XHSCDirectIPC.js +113 -0
- package/dist/esm/src/xhsc/ipc/XHSCDirectIPC.js.map +1 -0
- package/dist/esm/src/xhsc/utils/ArrayUtils.js +65 -0
- package/dist/esm/src/xhsc/utils/ArrayUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/AsyncUtils.js +580 -0
- package/dist/esm/src/xhsc/utils/AsyncUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/DateUtils.js +957 -0
- package/dist/esm/src/xhsc/utils/DateUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/FunctionUtils.js +27 -0
- package/dist/esm/src/xhsc/utils/FunctionUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/IdUtils.js +20 -0
- package/dist/esm/src/xhsc/utils/IdUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/NumberUtils.js +77 -0
- package/dist/esm/src/xhsc/utils/NumberUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/ObjectUtils.js +139 -0
- package/dist/esm/src/xhsc/utils/ObjectUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/StringUtils.js +143 -0
- package/dist/esm/src/xhsc/utils/StringUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/ValidationUtils.js +47 -0
- package/dist/esm/src/xhsc/utils/ValidationUtils.js.map +1 -0
- package/dist/esm/src/xhsc.js +6 -5
- package/dist/esm/src/xhsc.js.map +1 -1
- package/dist/index.d.ts +1872 -234
- package/package.json +119 -137
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
function xyprissCors(options = {}) {
|
|
2
|
+
const defaultOptions = {
|
|
3
|
+
origin: true,
|
|
4
|
+
methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
|
|
5
|
+
preflightContinue: false,
|
|
6
|
+
optionsSuccessStatus: 204,
|
|
7
|
+
};
|
|
8
|
+
const config = Object.assign({}, defaultOptions, options);
|
|
9
|
+
return function corsMiddleware(req, res, next) {
|
|
10
|
+
const currentOrigin = req.headers ? req.headers.origin : undefined;
|
|
11
|
+
const appendVary = (headerStr, field) => {
|
|
12
|
+
if (headerStr === "*")
|
|
13
|
+
return headerStr;
|
|
14
|
+
const parts = headerStr.split(",").map((s) => s.trim());
|
|
15
|
+
if (!parts.includes(field)) {
|
|
16
|
+
parts.push(field);
|
|
17
|
+
}
|
|
18
|
+
return parts.join(", ");
|
|
19
|
+
};
|
|
20
|
+
const applyHeaders = (originAllowed) => {
|
|
21
|
+
if (originAllowed === true || originAllowed === "*") {
|
|
22
|
+
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
23
|
+
}
|
|
24
|
+
else if (typeof originAllowed === "string") {
|
|
25
|
+
res.setHeader("Access-Control-Allow-Origin", originAllowed);
|
|
26
|
+
const vary = res.getHeader("Vary") || "";
|
|
27
|
+
res.setHeader("Vary", appendVary(String(vary), "Origin"));
|
|
28
|
+
}
|
|
29
|
+
if (config.credentials) {
|
|
30
|
+
res.setHeader("Access-Control-Allow-Credentials", "true");
|
|
31
|
+
}
|
|
32
|
+
if (config.exposedHeaders) {
|
|
33
|
+
const eh = Array.isArray(config.exposedHeaders)
|
|
34
|
+
? config.exposedHeaders.join(",")
|
|
35
|
+
: config.exposedHeaders;
|
|
36
|
+
res.setHeader("Access-Control-Expose-Headers", eh);
|
|
37
|
+
}
|
|
38
|
+
if (req.method === "OPTIONS") {
|
|
39
|
+
if (config.methods) {
|
|
40
|
+
const m = Array.isArray(config.methods)
|
|
41
|
+
? config.methods.join(",")
|
|
42
|
+
: config.methods;
|
|
43
|
+
res.setHeader("Access-Control-Allow-Methods", m);
|
|
44
|
+
}
|
|
45
|
+
if (config.allowedHeaders) {
|
|
46
|
+
const ah = Array.isArray(config.allowedHeaders)
|
|
47
|
+
? config.allowedHeaders.join(",")
|
|
48
|
+
: config.allowedHeaders;
|
|
49
|
+
res.setHeader("Access-Control-Allow-Headers", ah);
|
|
50
|
+
}
|
|
51
|
+
else if (req.headers &&
|
|
52
|
+
req.headers["access-control-request-headers"]) {
|
|
53
|
+
res.setHeader("Access-Control-Allow-Headers", req.headers["access-control-request-headers"]);
|
|
54
|
+
const vary = res.getHeader("Vary") || "";
|
|
55
|
+
res.setHeader("Vary", appendVary(String(vary), "Access-Control-Request-Headers"));
|
|
56
|
+
}
|
|
57
|
+
if (config.maxAge !== undefined && config.maxAge !== null) {
|
|
58
|
+
res.setHeader("Access-Control-Max-Age", String(config.maxAge));
|
|
59
|
+
}
|
|
60
|
+
if (!config.preflightContinue) {
|
|
61
|
+
res.statusCode = config.optionsSuccessStatus || 204;
|
|
62
|
+
// For typical frameworks setting Content-Length to 0 is cleanly handled
|
|
63
|
+
res.setHeader("Content-Length", "0");
|
|
64
|
+
res.end();
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
next();
|
|
69
|
+
};
|
|
70
|
+
if (typeof config.origin === "function") {
|
|
71
|
+
const originFn = config.origin;
|
|
72
|
+
originFn(currentOrigin, (err, allow) => {
|
|
73
|
+
if (err)
|
|
74
|
+
return next(err);
|
|
75
|
+
if (allow) {
|
|
76
|
+
applyHeaders(allow);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
next();
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
else if (config.origin === true || config.origin === "*") {
|
|
84
|
+
applyHeaders("*");
|
|
85
|
+
}
|
|
86
|
+
else if (typeof config.origin === "string") {
|
|
87
|
+
applyHeaders(config.origin);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
next();
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export { xyprissCors };
|
|
96
|
+
//# sourceMappingURL=XyPrissCors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XyPrissCors.js","sources":["../../../../../../src/middleware/built-in/security/XyPrissCors.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
function xyprissHPP(options = {}) {
|
|
2
|
+
const checkQuery = options.checkQuery !== false;
|
|
3
|
+
const checkBody = options.checkBody !== false;
|
|
4
|
+
const whitelist = Array.isArray(options.whitelist)
|
|
5
|
+
? options.whitelist.filter((w) => typeof w === "string")
|
|
6
|
+
: [];
|
|
7
|
+
function putAside(req, keyReqPart, keyPolluted) {
|
|
8
|
+
const reqPart = req[keyReqPart];
|
|
9
|
+
if (!reqPart || typeof reqPart !== "object")
|
|
10
|
+
return;
|
|
11
|
+
let reqPolluted = req[keyPolluted];
|
|
12
|
+
if (reqPolluted === undefined) {
|
|
13
|
+
reqPolluted = req[keyPolluted] = {};
|
|
14
|
+
const parameters = Object.keys(reqPart);
|
|
15
|
+
for (let i = 0; i < parameters.length; i++) {
|
|
16
|
+
const paramKey = parameters[i];
|
|
17
|
+
const paramValue = reqPart[paramKey];
|
|
18
|
+
if (!Array.isArray(paramValue)) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
reqPolluted[paramKey] = paramValue;
|
|
22
|
+
// Prends le dernier élément du tableau pour éviter la pollution de variables multiples
|
|
23
|
+
reqPart[paramKey] = paramValue[paramValue.length - 1];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (whitelist.length > 0) {
|
|
27
|
+
for (let k = 0; k < whitelist.length; k++) {
|
|
28
|
+
const whitelistedParam = whitelist[k];
|
|
29
|
+
if (reqPolluted[whitelistedParam]) {
|
|
30
|
+
reqPart[whitelistedParam] = reqPolluted[whitelistedParam];
|
|
31
|
+
delete reqPolluted[whitelistedParam];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return function hppMiddleware(req, res, next) {
|
|
37
|
+
if (checkQuery && req.query) {
|
|
38
|
+
putAside(req, "query", "queryPolluted");
|
|
39
|
+
}
|
|
40
|
+
if (checkBody && req.body) {
|
|
41
|
+
// Optionnellement, vérifier le header Content-Type pour url-encoded ou autres formats
|
|
42
|
+
// mais ici on s'aligne globalement sur ce qui a déjà été parsé.
|
|
43
|
+
putAside(req, "body", "bodyPolluted");
|
|
44
|
+
}
|
|
45
|
+
next();
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export { xyprissHPP };
|
|
50
|
+
//# sourceMappingURL=XyPrissHPP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XyPrissHPP.js","sources":["../../../../../../src/middleware/built-in/security/XyPrissHPP.ts"],"sourcesContent":[null],"names":[],"mappings":"AAMM,SAAU,UAAU,CAAC,OAAA,GAA6B,EAAE,EAAA;AACtD,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,KAAK,KAAK;AAC/C,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,KAAK;IAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS;AAC7C,UAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ;UACrD,EAAE;AAER,IAAA,SAAS,QAAQ,CAAC,GAAQ,EAAE,UAAkB,EAAE,WAAmB,EAAA;AAC/D,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE;AAE7C,QAAA,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;AAElC,QAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC3B,YAAA,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE;YAEnC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,gBAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC;AAC9B,gBAAA,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;gBAEpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;oBAC5B;gBACJ;AAEA,gBAAA,WAAW,CAAC,QAAQ,CAAC,GAAG,UAAU;;AAElC,gBAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YACzD;QACJ;AAEA,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,gBAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC;AACrC,gBAAA,IAAI,WAAW,CAAC,gBAAgB,CAAC,EAAE;oBAC/B,OAAO,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC;AACzD,oBAAA,OAAO,WAAW,CAAC,gBAAgB,CAAC;gBACxC;YACJ;QACJ;IACJ;AAEA,IAAA,OAAO,SAAS,aAAa,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAS,EAAA;AACvD,QAAA,IAAI,UAAU,IAAI,GAAG,CAAC,KAAK,EAAE;AACzB,YAAA,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,eAAe,CAAC;QAC3C;AAEA,QAAA,IAAI,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE;;;AAGvB,YAAA,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC;QACzC;AAEA,QAAA,IAAI,EAAE;AACV,IAAA,CAAC;AACL;;;;"}
|
|
@@ -66,84 +66,6 @@ function createSafeJsonMiddleware(options = {}) {
|
|
|
66
66
|
next();
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Quick setup function for common use cases
|
|
71
|
-
*/
|
|
72
|
-
function setupSafeJson(app, options = {}) {
|
|
73
|
-
app.use(createSafeJsonMiddleware(options));
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Utility function to safely stringify any object
|
|
77
|
-
*/
|
|
78
|
-
function safeJsonStringify(obj, options = {}) {
|
|
79
|
-
try {
|
|
80
|
-
return JSON.stringify(obj);
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
return XyPriStringify(obj);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Enhanced res.json replacement that can be used manually
|
|
88
|
-
*/
|
|
89
|
-
function sendSafeJson(res, obj, options = {}) {
|
|
90
|
-
try {
|
|
91
|
-
const result = safeJsonStringify(obj, options);
|
|
92
|
-
res.setHeader("Content-Type", "application/json");
|
|
93
|
-
res.send(result);
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
console.error("❌ Failed to send safe JSON:", error);
|
|
97
|
-
res.status(500).json({
|
|
98
|
-
error: "Internal Server Error",
|
|
99
|
-
message: "Failed to serialize response",
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Middleware specifically for debugging circular references
|
|
105
|
-
*/
|
|
106
|
-
function createCircularRefDebugger() {
|
|
107
|
-
return function circularRefDebugger(req, res, next) {
|
|
108
|
-
const originalJson = res.json.bind(res);
|
|
109
|
-
res.json = function (obj) {
|
|
110
|
-
try {
|
|
111
|
-
JSON.stringify(obj);
|
|
112
|
-
return originalJson(obj);
|
|
113
|
-
}
|
|
114
|
-
catch (error) {
|
|
115
|
-
if (error.message.includes("circular")) {
|
|
116
|
-
console.log("Circular Reference Debug Info:");
|
|
117
|
-
console.log(" Route:", req.method, req.url);
|
|
118
|
-
console.log(" Object type:", typeof obj);
|
|
119
|
-
console.log(" Object constructor:", obj?.constructor?.name);
|
|
120
|
-
console.log(" Object keys:", Object.keys(obj || {}));
|
|
121
|
-
// Try to identify the circular reference
|
|
122
|
-
const seen = new WeakSet();
|
|
123
|
-
const findCircular = (obj, path = []) => {
|
|
124
|
-
if (typeof obj !== "object" || obj === null)
|
|
125
|
-
return [];
|
|
126
|
-
if (seen.has(obj))
|
|
127
|
-
return path;
|
|
128
|
-
seen.add(obj);
|
|
129
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
130
|
-
const result = findCircular(value, [...path, key]);
|
|
131
|
-
if (result.length > 0)
|
|
132
|
-
return result;
|
|
133
|
-
}
|
|
134
|
-
return [];
|
|
135
|
-
};
|
|
136
|
-
const circularPath = findCircular(obj);
|
|
137
|
-
if (circularPath.length > 0) {
|
|
138
|
-
console.log(" Circular path:", circularPath.join(" -> "));
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
throw error;
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
next();
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
69
|
|
|
148
|
-
export {
|
|
70
|
+
export { createSafeJsonMiddleware };
|
|
149
71
|
//# sourceMappingURL=safe-json-middleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-json-middleware.js","sources":["../../../../src/middleware/safe-json-middleware.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;AAGG;AA2CH;;AAEG;AACG,SAAU,wBAAwB,CAAC,OAAA,GAA2B,EAAE,EAAA;AAClE,IAAA,MAAM,IAAI,GAAG;AACT,QAAA,OAAO,EAAE,IAAI;AACb,QAGA,eAAe,EAAE,KAAK;AACtB,QAGA,GAAG,OAAO;KACb;AAED,IAAA,OAAO,SAAS,kBAAkB,CAC9B,GAAY,EACZ,GAAa,EACb,IAAkB,EAAA;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,OAAO,IAAI,EAAE;QACjB;;QAGA,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACvC,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGvC,QAAA,GAAG,CAAC,IAAI,GAAG,UAAU,GAAQ,EAAA;AACzB,YAAA,IAAI;;gBAEA,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1C,gBAAA,OAAO,YAAY,CAAC,GAAG,CAAC;YAC5B;YAAE,OAAO,KAAU,EAAE;gBACjB,IACI,IAAI,CAAC,eAAe;oBACpB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EACpC;AACE,oBAAA,MAAM,CAAC,KAAK,CACR,QAAQ,EACR,2DAA2D,EAC3D;wBACI,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,KAAK,EAAE,KAAK,CAAC,OAAO;AACvB,qBAAA,CACJ;gBACL;AAEA,gBAAA,IAAI;;AAEA,oBAAA,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC;oBACtC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AAC3C,oBAAA,OAAO,YAAY,CAAC,YAAY,CAAC;gBACrC;gBAAE,OAAO,SAAc,EAAE;oBACrB,MAAM,CAAC,KAAK,CACR,QAAQ,EACR,mCAAmC,EACnC,SAAS,CACZ;AACD,oBAAA,OAAO,YAAY,CAAC;AAChB,wBAAA,KAAK,EAAE,sBAAsB;AAC7B,wBAAA,OAAO,EAAE,qCAAqC;wBAC9C,aAAa,EAAE,SAAS,CAAC,OAAO;AACnC,qBAAA,CAAC;gBACN;YACJ;AACJ,QAAA,CAAC;;AAGD,QAAA,GAAG,CAAC,IAAI,GAAG,UAAU,IAAS,EAAA;YAC1B,IACI,OAAO,IAAI,KAAK,QAAQ;AACxB,gBAAA,IAAI,KAAK,IAAI;AACb,gBAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EACxB;;AAEE,gBAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB;AACA,YAAA,OAAO,YAAY,CAAC,IAAI,CAAC;AAC7B,QAAA,CAAC;AAED,QAAA,IAAI,EAAE;AACV,IAAA,CAAC;AACL
|
|
1
|
+
{"version":3,"file":"safe-json-middleware.js","sources":["../../../../src/middleware/safe-json-middleware.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;AAGG;AA2CH;;AAEG;AACG,SAAU,wBAAwB,CAAC,OAAA,GAA2B,EAAE,EAAA;AAClE,IAAA,MAAM,IAAI,GAAG;AACT,QAAA,OAAO,EAAE,IAAI;AACb,QAGA,eAAe,EAAE,KAAK;AACtB,QAGA,GAAG,OAAO;KACb;AAED,IAAA,OAAO,SAAS,kBAAkB,CAC9B,GAAY,EACZ,GAAa,EACb,IAAkB,EAAA;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,OAAO,IAAI,EAAE;QACjB;;QAGA,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACvC,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGvC,QAAA,GAAG,CAAC,IAAI,GAAG,UAAU,GAAQ,EAAA;AACzB,YAAA,IAAI;;gBAEA,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1C,gBAAA,OAAO,YAAY,CAAC,GAAG,CAAC;YAC5B;YAAE,OAAO,KAAU,EAAE;gBACjB,IACI,IAAI,CAAC,eAAe;oBACpB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EACpC;AACE,oBAAA,MAAM,CAAC,KAAK,CACR,QAAQ,EACR,2DAA2D,EAC3D;wBACI,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,KAAK,EAAE,KAAK,CAAC,OAAO;AACvB,qBAAA,CACJ;gBACL;AAEA,gBAAA,IAAI;;AAEA,oBAAA,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC;oBACtC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AAC3C,oBAAA,OAAO,YAAY,CAAC,YAAY,CAAC;gBACrC;gBAAE,OAAO,SAAc,EAAE;oBACrB,MAAM,CAAC,KAAK,CACR,QAAQ,EACR,mCAAmC,EACnC,SAAS,CACZ;AACD,oBAAA,OAAO,YAAY,CAAC;AAChB,wBAAA,KAAK,EAAE,sBAAsB;AAC7B,wBAAA,OAAO,EAAE,qCAAqC;wBAC9C,aAAa,EAAE,SAAS,CAAC,OAAO;AACnC,qBAAA,CAAC;gBACN;YACJ;AACJ,QAAA,CAAC;;AAGD,QAAA,GAAG,CAAC,IAAI,GAAG,UAAU,IAAS,EAAA;YAC1B,IACI,OAAO,IAAI,KAAK,QAAQ;AACxB,gBAAA,IAAI,KAAK,IAAI;AACb,gBAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EACxB;;AAEE,gBAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB;AACA,YAAA,OAAO,YAAY,CAAC,IAAI,CAAC;AAC7B,QAAA,CAAC;AAED,QAAA,IAAI,EAAE;AACV,IAAA,CAAC;AACL;;;;"}
|
|
@@ -134,6 +134,9 @@ class SecurityMiddleware {
|
|
|
134
134
|
falsePositiveThreshold: typeof this.sqlInjection === "object"
|
|
135
135
|
? this.sqlInjection.falsePositiveThreshold
|
|
136
136
|
: 0.6,
|
|
137
|
+
maxLength: typeof this.sqlInjection === "object"
|
|
138
|
+
? this.sqlInjection.maxLength
|
|
139
|
+
: 1000,
|
|
137
140
|
});
|
|
138
141
|
this.pathTraversalDetector = new PathTraversalDetector({
|
|
139
142
|
enabled: !!this.pathTraversal,
|
|
@@ -733,13 +736,13 @@ class SecurityMiddleware {
|
|
|
733
736
|
const additionalThreats = [
|
|
734
737
|
/javascript:/i,
|
|
735
738
|
/vbscript:/i,
|
|
736
|
-
/data
|
|
737
|
-
|
|
739
|
+
/data:text\/html/i,
|
|
740
|
+
/\s+on(load|click|error|mouseover|submit)\s*=/i, // Specific common event handlers
|
|
738
741
|
/<iframe/i,
|
|
739
742
|
/<object/i,
|
|
740
743
|
/<embed/i,
|
|
741
|
-
/<link
|
|
742
|
-
/<meta
|
|
744
|
+
/<link\s+rel=["']?stylesheet["']?/i,
|
|
745
|
+
/<meta\s+http-equiv=["']?refresh["']?/i,
|
|
743
746
|
/expression\s*\(/i, // CSS expression()
|
|
744
747
|
/url\s*\(\s*javascript:/i,
|
|
745
748
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-middleware.js","sources":["../../../../src/middleware/security-middleware.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"security-middleware.js","sources":["../../../../src/middleware/security-middleware.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -35,16 +35,27 @@ class XemsBuiltinPlugin {
|
|
|
35
35
|
async onServerStart(server) {
|
|
36
36
|
const app = server.app;
|
|
37
37
|
const logger = app.logger;
|
|
38
|
-
//
|
|
39
|
-
|
|
38
|
+
// 1. Configuration Extraction
|
|
39
|
+
// Use local app config strictly to avoid global singleton pollution in multi-server/auxiliary modes
|
|
40
|
+
// If not explicitly configured, fallback to global defaults only if NOT an auxiliary server
|
|
41
|
+
let xemsOptions = app.configs?.server?.xems;
|
|
42
|
+
if (!xemsOptions) {
|
|
43
|
+
if (app.configs?.isAuxiliary) {
|
|
44
|
+
// Auxiliary servers should NEVER auto-spawn persistence unless explicitly requested.
|
|
45
|
+
// We provide minimal defaults to avoid crashes but keep features disabled.
|
|
46
|
+
xemsOptions = { enable: false };
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// Fallback to global singleton only for primary/non-auxiliary servers
|
|
50
|
+
xemsOptions = ConfigurationManager.get("server")?.xems || { enable: false };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
40
53
|
// Expose this instance's runner on the app object for multi-server support
|
|
41
54
|
app.xems = this.runner;
|
|
42
55
|
const isAuxiliary = app.configs?.isAuxiliary;
|
|
43
56
|
if (!isAuxiliary) {
|
|
44
57
|
logger.info("plugins", "Initializing XEMS Built-in Core Plugin...");
|
|
45
58
|
}
|
|
46
|
-
// 1. Configuration Extraction
|
|
47
|
-
const xemsOptions = xemsConfig;
|
|
48
59
|
// Apply session options from config or defaults
|
|
49
60
|
this.sessionOptions = {
|
|
50
61
|
sandbox: xemsOptions.sandbox || "auth-session",
|
|
@@ -70,15 +81,27 @@ class XemsBuiltinPlugin {
|
|
|
70
81
|
}
|
|
71
82
|
// 2. Persistence Initialization
|
|
72
83
|
if (xemsOptions.persistence?.enabled) {
|
|
73
|
-
const { path, secret, resources } = xemsOptions.persistence;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
84
|
+
const { path: pathStr, secret, resources, } = xemsOptions.persistence;
|
|
85
|
+
if (pathStr && secret) {
|
|
86
|
+
// Use the static factory to get/create a runner for this path.
|
|
87
|
+
// This ensures multiple servers/plugins sharing a path also share the process.
|
|
88
|
+
this.runner = XemsRunner.getInstance(pathStr, {
|
|
89
|
+
secret,
|
|
77
90
|
cacheSize: resources?.cacheSize,
|
|
78
91
|
});
|
|
92
|
+
// Attach the shared runner to the app
|
|
93
|
+
app.xems = this.runner;
|
|
94
|
+
try {
|
|
95
|
+
this.runner.enablePersistence(pathStr, secret, {
|
|
96
|
+
cacheSize: resources?.cacheSize,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
logger.error("plugins", "Failed to enable XEMS persistence on shared runner", err);
|
|
101
|
+
}
|
|
79
102
|
}
|
|
80
|
-
|
|
81
|
-
logger.
|
|
103
|
+
else if (!isAuxiliary) {
|
|
104
|
+
logger.warn("plugins", "XEMS Persistence requested but path or secret missing. Running in ephemeral mode.");
|
|
82
105
|
}
|
|
83
106
|
}
|
|
84
107
|
// 3. Resource & Health Validation (Warmup)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XemsBuiltinPlugin.js","sources":["../../../../../../src/plugins/builtin/xems/XemsBuiltinPlugin.ts"],"sourcesContent":[null],"names":["Configs"],"mappings":";;;AAAA;;;;;;;AAOG;MAOU,iBAAiB,CAAA;AA6B1B,IAAA,WAAA,GAAA;QA5BgB,IAAA,CAAA,IAAI,GAAG,oBAAoB;QAC3B,IAAA,CAAA,OAAO,GAAG,OAAO;QACjB,IAAA,CAAA,IAAI,GAAG,UAAU;QACjB,IAAA,CAAA,WAAW,GACvB,qDAAqD;AAIjD,QAAA,IAAA,CAAA,cAAc,GAQlB;AACA,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,UAAU,EAAE,iBAAiB;AAC7B,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,WAAW,EAAE,IAAI;SACpB;QAEO,IAAA,CAAA,cAAc,GAAY,KAAK;;;AAKnC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,EAAE;IAClC;AAEA;;AAEG;IACI,MAAM,aAAa,CAAC,MAAoB,EAAA;AAC3C,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAU;AAC7B,QAAA,MAAM,MAAM,GAAI,GAAW,CAAC,MAAM
|
|
1
|
+
{"version":3,"file":"XemsBuiltinPlugin.js","sources":["../../../../../../src/plugins/builtin/xems/XemsBuiltinPlugin.ts"],"sourcesContent":[null],"names":["Configs"],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@ import { spawn } from 'node:child_process';
|
|
|
2
2
|
import path__default from 'node:path';
|
|
3
3
|
import fs__default from 'node:fs';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import { randomBytes } from 'node:crypto';
|
|
6
5
|
import * as readline from 'node:readline';
|
|
7
6
|
import { Logger } from '../../../shared/logger/Logger.js';
|
|
7
|
+
import { getRandomBytes } from 'xypriss-security';
|
|
8
8
|
|
|
9
9
|
class XemsError extends Error {
|
|
10
10
|
constructor(action, details) {
|
|
@@ -31,8 +31,22 @@ class XemsRunner {
|
|
|
31
31
|
// or during the first command if needed.
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
34
|
+
* Internal factory for getting or creating a runner for a specific path.
|
|
35
|
+
* This ensures only one process exists for a given file in the entire process.
|
|
35
36
|
*/
|
|
37
|
+
static getInstance(pathStr, options = {}) {
|
|
38
|
+
const absPath = path__default.resolve(process.cwd(), pathStr);
|
|
39
|
+
const existing = XemsRunner.runnersByPath.get(absPath);
|
|
40
|
+
if (existing) {
|
|
41
|
+
// Merge options if provided
|
|
42
|
+
if (options.secret)
|
|
43
|
+
existing.options.secret = options.secret;
|
|
44
|
+
return existing;
|
|
45
|
+
}
|
|
46
|
+
const runner = new XemsRunner({ ...options, persistPath: pathStr });
|
|
47
|
+
XemsRunner.runnersByPath.set(absPath, runner);
|
|
48
|
+
return runner;
|
|
49
|
+
}
|
|
36
50
|
enablePersistence(pathStr, secret, resources) {
|
|
37
51
|
if (!pathStr) {
|
|
38
52
|
throw new XemsError("EPNOTDEF", "Path is required when persistence is enabled");
|
|
@@ -46,6 +60,19 @@ class XemsRunner {
|
|
|
46
60
|
this.logger.error("xems", `Failed to create persistence directory: ${dir}`);
|
|
47
61
|
}
|
|
48
62
|
}
|
|
63
|
+
// Register this runner in the global registry for this path
|
|
64
|
+
const absPath = path__default.resolve(process.cwd(), pathStr);
|
|
65
|
+
const existing = XemsRunner.runnersByPath.get(absPath);
|
|
66
|
+
if (existing && existing !== this) {
|
|
67
|
+
this.logger.warn("xems", `Path ${pathStr} is already being managed by another runner. Switching to shared mode.`);
|
|
68
|
+
// Transitions this instance to delegate to the existing one if needed?
|
|
69
|
+
// Actually, for simplicity, we just ensure WE don't spawn if another one is already there.
|
|
70
|
+
}
|
|
71
|
+
XemsRunner.runnersByPath.set(absPath, this);
|
|
72
|
+
// Avoid redundant restarts if path is the same
|
|
73
|
+
if (this.options.persistPath === pathStr && this.process) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
49
76
|
this.options.persistPath = pathStr;
|
|
50
77
|
this.options.secret = secret;
|
|
51
78
|
if (resources?.cacheSize) {
|
|
@@ -251,7 +278,7 @@ class XemsRunner {
|
|
|
251
278
|
* @returns The generated session token (opaque handle)
|
|
252
279
|
*/
|
|
253
280
|
async createSession(sandbox, data, options = {}) {
|
|
254
|
-
const token =
|
|
281
|
+
const token = getRandomBytes(24).toString("hex");
|
|
255
282
|
const value = typeof data === "string" ? data : JSON.stringify(data);
|
|
256
283
|
await this.set(sandbox, token, value, options.ttl);
|
|
257
284
|
return token;
|
|
@@ -327,6 +354,10 @@ class XemsRunner {
|
|
|
327
354
|
}
|
|
328
355
|
}
|
|
329
356
|
}
|
|
357
|
+
/**
|
|
358
|
+
* Enables hardware-bound persistent storage for XEMS.
|
|
359
|
+
*/
|
|
360
|
+
XemsRunner.runnersByPath = new Map();
|
|
330
361
|
/**
|
|
331
362
|
* Contextual wrapper for XEMS operations within a specific sandbox.
|
|
332
363
|
* Provides a cleaner, fluent API for advanced operations.
|