xypriss 9.10.19 → 9.10.21
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/core/XyServerCreator.js +0 -9
- package/dist/cjs/src/server/core/XyServerCreator.js.map +1 -1
- package/dist/cjs/src/xhsc.js +23 -1
- package/dist/cjs/src/xhsc.js.map +1 -1
- package/dist/esm/src/server/core/XyServerCreator.js +0 -9
- package/dist/esm/src/server/core/XyServerCreator.js.map +1 -1
- package/dist/esm/src/xhsc.js +23 -1
- package/dist/esm/src/xhsc.js.map +1 -1
- package/dist/index.d.ts +0 -54
- package/package.json +1 -1
- package/dist/cjs/src/server/components/fastapi/MonitoringManager.js +0 -191
- package/dist/cjs/src/server/components/fastapi/MonitoringManager.js.map +0 -1
- package/dist/diag_config.d.ts +0 -2
- package/dist/diag_config.d.ts.map +0 -1
- package/dist/diag_config.js +0 -13
- package/dist/diag_config.js.map +0 -1
- package/dist/esm/src/server/components/fastapi/MonitoringManager.js +0 -189
- package/dist/esm/src/server/components/fastapi/MonitoringManager.js.map +0 -1
- package/dist/fix_docs.d.ts +0 -2
- package/dist/fix_docs.d.ts.map +0 -1
- package/dist/fix_docs.js +0 -152
- package/dist/fix_docs.js.map +0 -1
- package/dist/lib.d.ts +0 -3
- package/dist/lib.d.ts.map +0 -1
- package/dist/lib.js +0 -10
- package/dist/lib.js.map +0 -1
- package/dist/main.d.ts +0 -2
- package/dist/main.d.ts.map +0 -1
- package/dist/main.js +0 -3
- package/dist/main.js.map +0 -1
- package/dist/plugin.d.ts +0 -2
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js +0 -5
- package/dist/plugin.js.map +0 -1
- package/dist/refactor_docs.d.ts +0 -2
- package/dist/refactor_docs.d.ts.map +0 -1
- package/dist/refactor_docs.js +0 -48
- package/dist/refactor_docs.js.map +0 -1
- package/dist/src/ConfigurationManager.d.ts +0 -150
- package/dist/src/ConfigurationManager.d.ts.map +0 -1
- package/dist/src/ConfigurationManager.js +0 -366
- package/dist/src/ConfigurationManager.js.map +0 -1
- package/dist/src/FiUp.d.ts +0 -31
- package/dist/src/FiUp.d.ts.map +0 -1
- package/dist/src/FiUp.js +0 -79
- package/dist/src/FiUp.js.map +0 -1
- package/dist/src/cache/CacheFactory.d.ts +0 -163
- package/dist/src/cache/CacheFactory.d.ts.map +0 -1
- package/dist/src/cache/CacheFactory.js +0 -707
- package/dist/src/cache/CacheFactory.js.map +0 -1
- package/dist/src/cache/index.d.ts +0 -14
- package/dist/src/cache/index.d.ts.map +0 -1
- package/dist/src/cache/index.js +0 -13
- package/dist/src/cache/index.js.map +0 -1
- package/dist/src/cache/type.d.ts +0 -127
- package/dist/src/cache/type.d.ts.map +0 -1
- package/dist/src/cache/type.js +0 -2
- package/dist/src/cache/type.js.map +0 -1
- package/dist/src/const.d.ts +0 -138
- package/dist/src/const.d.ts.map +0 -1
- package/dist/src/const.js +0 -572
- package/dist/src/const.js.map +0 -1
- package/dist/src/index.d.ts +0 -66
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -84
- package/dist/src/index.js.map +0 -1
- package/dist/src/middleware/XJsonResponseHandler.d.ts +0 -69
- package/dist/src/middleware/XJsonResponseHandler.d.ts.map +0 -1
- package/dist/src/middleware/XJsonResponseHandler.js +0 -175
- package/dist/src/middleware/XJsonResponseHandler.js.map +0 -1
- package/dist/src/middleware/XemsSessionMiddleware.d.ts +0 -8
- package/dist/src/middleware/XemsSessionMiddleware.d.ts.map +0 -1
- package/dist/src/middleware/XemsSessionMiddleware.js +0 -110
- package/dist/src/middleware/XemsSessionMiddleware.js.map +0 -1
- package/dist/src/middleware/XyPrissMiddlewareAPI.d.ts +0 -75
- package/dist/src/middleware/XyPrissMiddlewareAPI.d.ts.map +0 -1
- package/dist/src/middleware/XyPrissMiddlewareAPI.js +0 -284
- package/dist/src/middleware/XyPrissMiddlewareAPI.js.map +0 -1
- package/dist/src/middleware/built-in/BuiltInMiddleware.d.ts +0 -99
- package/dist/src/middleware/built-in/BuiltInMiddleware.d.ts.map +0 -1
- package/dist/src/middleware/built-in/BuiltInMiddleware.js +0 -404
- package/dist/src/middleware/built-in/BuiltInMiddleware.js.map +0 -1
- package/dist/src/middleware/built-in/ResponseManipulationMiddleware.d.ts +0 -11
- package/dist/src/middleware/built-in/ResponseManipulationMiddleware.d.ts.map +0 -1
- package/dist/src/middleware/built-in/ResponseManipulationMiddleware.js +0 -164
- package/dist/src/middleware/built-in/ResponseManipulationMiddleware.js.map +0 -1
- package/dist/src/middleware/built-in/security/BrowserOnlyProtector.d.ts +0 -106
- package/dist/src/middleware/built-in/security/BrowserOnlyProtector.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/BrowserOnlyProtector.js +0 -547
- package/dist/src/middleware/built-in/security/BrowserOnlyProtector.js.map +0 -1
- package/dist/src/middleware/built-in/security/CommandInjectionDetector.d.ts +0 -40
- package/dist/src/middleware/built-in/security/CommandInjectionDetector.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/CommandInjectionDetector.js +0 -212
- package/dist/src/middleware/built-in/security/CommandInjectionDetector.js.map +0 -1
- package/dist/src/middleware/built-in/security/HoneypotTarpit.d.ts +0 -204
- package/dist/src/middleware/built-in/security/HoneypotTarpit.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/HoneypotTarpit.js +0 -505
- package/dist/src/middleware/built-in/security/HoneypotTarpit.js.map +0 -1
- package/dist/src/middleware/built-in/security/LDAPInjectionDetector.d.ts +0 -17
- package/dist/src/middleware/built-in/security/LDAPInjectionDetector.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/LDAPInjectionDetector.js +0 -93
- package/dist/src/middleware/built-in/security/LDAPInjectionDetector.js.map +0 -1
- package/dist/src/middleware/built-in/security/MobileOnlyProtector.d.ts +0 -122
- package/dist/src/middleware/built-in/security/MobileOnlyProtector.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/MobileOnlyProtector.js +0 -499
- package/dist/src/middleware/built-in/security/MobileOnlyProtector.js.map +0 -1
- package/dist/src/middleware/built-in/security/PathTraversalDetector.d.ts +0 -44
- package/dist/src/middleware/built-in/security/PathTraversalDetector.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/PathTraversalDetector.js +0 -209
- package/dist/src/middleware/built-in/security/PathTraversalDetector.js.map +0 -1
- package/dist/src/middleware/built-in/security/RequestSignatureProtector.d.ts +0 -128
- package/dist/src/middleware/built-in/security/RequestSignatureProtector.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/RequestSignatureProtector.js +0 -463
- package/dist/src/middleware/built-in/security/RequestSignatureProtector.js.map +0 -1
- package/dist/src/middleware/built-in/security/SQLInjectionDetector.d.ts +0 -66
- package/dist/src/middleware/built-in/security/SQLInjectionDetector.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/SQLInjectionDetector.js +0 -414
- package/dist/src/middleware/built-in/security/SQLInjectionDetector.js.map +0 -1
- package/dist/src/middleware/built-in/security/TerminalOnlyProtector.d.ts +0 -131
- package/dist/src/middleware/built-in/security/TerminalOnlyProtector.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/TerminalOnlyProtector.js +0 -473
- package/dist/src/middleware/built-in/security/TerminalOnlyProtector.js.map +0 -1
- package/dist/src/middleware/built-in/security/UriNormalizer.d.ts +0 -277
- package/dist/src/middleware/built-in/security/UriNormalizer.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/UriNormalizer.js +0 -388
- package/dist/src/middleware/built-in/security/UriNormalizer.js.map +0 -1
- package/dist/src/middleware/built-in/security/XXEProtector.d.ts +0 -36
- package/dist/src/middleware/built-in/security/XXEProtector.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/XXEProtector.js +0 -172
- package/dist/src/middleware/built-in/security/XXEProtector.js.map +0 -1
- package/dist/src/middleware/built-in/security/XyPrissCors.d.ts +0 -12
- package/dist/src/middleware/built-in/security/XyPrissCors.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/XyPrissCors.js +0 -94
- package/dist/src/middleware/built-in/security/XyPrissCors.js.map +0 -1
- package/dist/src/middleware/built-in/security/XyPrissHPP.d.ts +0 -7
- package/dist/src/middleware/built-in/security/XyPrissHPP.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/XyPrissHPP.js +0 -48
- package/dist/src/middleware/built-in/security/XyPrissHPP.js.map +0 -1
- package/dist/src/middleware/built-in/security/index.d.ts +0 -20
- package/dist/src/middleware/built-in/security/index.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/index.js +0 -20
- package/dist/src/middleware/built-in/security/index.js.map +0 -1
- package/dist/src/middleware/built-in/security/types.d.ts +0 -147
- package/dist/src/middleware/built-in/security/types.d.ts.map +0 -1
- package/dist/src/middleware/built-in/security/types.js +0 -5
- package/dist/src/middleware/built-in/security/types.js.map +0 -1
- package/dist/src/middleware/safe-json-middleware.d.ts +0 -57
- package/dist/src/middleware/safe-json-middleware.d.ts.map +0 -1
- package/dist/src/middleware/safe-json-middleware.js +0 -150
- package/dist/src/middleware/safe-json-middleware.js.map +0 -1
- package/dist/src/middleware/security-middleware.d.ts +0 -147
- package/dist/src/middleware/security-middleware.d.ts.map +0 -1
- package/dist/src/middleware/security-middleware.js +0 -1026
- package/dist/src/middleware/security-middleware.js.map +0 -1
- package/dist/src/plugins/ServerPluginManager.d.ts +0 -43
- package/dist/src/plugins/ServerPluginManager.d.ts.map +0 -1
- package/dist/src/plugins/ServerPluginManager.js +0 -148
- package/dist/src/plugins/ServerPluginManager.js.map +0 -1
- package/dist/src/plugins/api/PluginAPI.d.ts +0 -108
- package/dist/src/plugins/api/PluginAPI.d.ts.map +0 -1
- package/dist/src/plugins/api/PluginAPI.js +0 -253
- package/dist/src/plugins/api/PluginAPI.js.map +0 -1
- package/dist/src/plugins/builtin/RouteOptimizationPlugin.d.ts +0 -111
- package/dist/src/plugins/builtin/RouteOptimizationPlugin.d.ts.map +0 -1
- package/dist/src/plugins/builtin/RouteOptimizationPlugin.js +0 -416
- package/dist/src/plugins/builtin/RouteOptimizationPlugin.js.map +0 -1
- package/dist/src/plugins/builtin/server-maintenance/ServerMaintenancePlugin.d.ts +0 -136
- package/dist/src/plugins/builtin/server-maintenance/ServerMaintenancePlugin.d.ts.map +0 -1
- package/dist/src/plugins/builtin/server-maintenance/ServerMaintenancePlugin.js +0 -566
- package/dist/src/plugins/builtin/server-maintenance/ServerMaintenancePlugin.js.map +0 -1
- package/dist/src/plugins/builtin/xems/XemsBuiltinPlugin.d.ts +0 -33
- package/dist/src/plugins/builtin/xems/XemsBuiltinPlugin.d.ts.map +0 -1
- package/dist/src/plugins/builtin/xems/XemsBuiltinPlugin.js +0 -246
- package/dist/src/plugins/builtin/xems/XemsBuiltinPlugin.js.map +0 -1
- package/dist/src/plugins/builtin/xems/XemsPlugin.d.ts +0 -169
- package/dist/src/plugins/builtin/xems/XemsPlugin.d.ts.map +0 -1
- package/dist/src/plugins/builtin/xems/XemsPlugin.js +0 -402
- package/dist/src/plugins/builtin/xems/XemsPlugin.js.map +0 -1
- package/dist/src/plugins/builtin/xems/index.d.ts +0 -2
- package/dist/src/plugins/builtin/xems/index.d.ts.map +0 -1
- package/dist/src/plugins/builtin/xems/index.js +0 -2
- package/dist/src/plugins/builtin/xems/index.js.map +0 -1
- package/dist/src/plugins/const/OFFICIAL_PLUGINS.d.ts +0 -2
- package/dist/src/plugins/const/OFFICIAL_PLUGINS.d.ts.map +0 -1
- package/dist/src/plugins/const/OFFICIAL_PLUGINS.js +0 -6
- package/dist/src/plugins/const/OFFICIAL_PLUGINS.js.map +0 -1
- package/dist/src/plugins/const/PluginHookIds.d.ts +0 -44
- package/dist/src/plugins/const/PluginHookIds.d.ts.map +0 -1
- package/dist/src/plugins/const/PluginHookIds.js +0 -185
- package/dist/src/plugins/const/PluginHookIds.js.map +0 -1
- package/dist/src/plugins/const/PluginHookMetadataJson.d.ts +0 -2
- package/dist/src/plugins/const/PluginHookMetadataJson.d.ts.map +0 -1
- package/dist/src/plugins/const/PluginHookMetadataJson.js +0 -6
- package/dist/src/plugins/const/PluginHookMetadataJson.js.map +0 -1
- package/dist/src/plugins/const/XyprissTempDir.d.ts +0 -30
- package/dist/src/plugins/const/XyprissTempDir.d.ts.map +0 -1
- package/dist/src/plugins/const/XyprissTempDir.js +0 -73
- package/dist/src/plugins/const/XyprissTempDir.js.map +0 -1
- package/dist/src/plugins/core/PermissionManager.d.ts +0 -46
- package/dist/src/plugins/core/PermissionManager.d.ts.map +0 -1
- package/dist/src/plugins/core/PermissionManager.js +0 -232
- package/dist/src/plugins/core/PermissionManager.js.map +0 -1
- package/dist/src/plugins/core/XPluginManager.d.ts +0 -110
- package/dist/src/plugins/core/XPluginManager.d.ts.map +0 -1
- package/dist/src/plugins/core/XPluginManager.js +0 -212
- package/dist/src/plugins/core/XPluginManager.js.map +0 -1
- package/dist/src/plugins/core/manager/PluginHookRunner.d.ts +0 -50
- package/dist/src/plugins/core/manager/PluginHookRunner.d.ts.map +0 -1
- package/dist/src/plugins/core/manager/PluginHookRunner.js +0 -104
- package/dist/src/plugins/core/manager/PluginHookRunner.js.map +0 -1
- package/dist/src/plugins/core/manager/PluginInterceptor.d.ts +0 -48
- package/dist/src/plugins/core/manager/PluginInterceptor.d.ts.map +0 -1
- package/dist/src/plugins/core/manager/PluginInterceptor.js +0 -196
- package/dist/src/plugins/core/manager/PluginInterceptor.js.map +0 -1
- package/dist/src/plugins/core/manager/PluginLoader.d.ts +0 -59
- package/dist/src/plugins/core/manager/PluginLoader.d.ts.map +0 -1
- package/dist/src/plugins/core/manager/PluginLoader.js +0 -207
- package/dist/src/plugins/core/manager/PluginLoader.js.map +0 -1
- package/dist/src/plugins/core/manager/PluginManagement.d.ts +0 -36
- package/dist/src/plugins/core/manager/PluginManagement.d.ts.map +0 -1
- package/dist/src/plugins/core/manager/PluginManagement.js +0 -132
- package/dist/src/plugins/core/manager/PluginManagement.js.map +0 -1
- package/dist/src/plugins/core/manager/PluginRegistry.d.ts +0 -47
- package/dist/src/plugins/core/manager/PluginRegistry.d.ts.map +0 -1
- package/dist/src/plugins/core/manager/PluginRegistry.js +0 -96
- package/dist/src/plugins/core/manager/PluginRegistry.js.map +0 -1
- package/dist/src/plugins/core/manager/PluginSecurity.d.ts +0 -63
- package/dist/src/plugins/core/manager/PluginSecurity.d.ts.map +0 -1
- package/dist/src/plugins/core/manager/PluginSecurity.js +0 -417
- package/dist/src/plugins/core/manager/PluginSecurity.js.map +0 -1
- package/dist/src/plugins/route-optimization-plugin.d.ts +0 -111
- package/dist/src/plugins/route-optimization-plugin.d.ts.map +0 -1
- package/dist/src/plugins/route-optimization-plugin.js +0 -416
- package/dist/src/plugins/route-optimization-plugin.js.map +0 -1
- package/dist/src/plugins/types/PluginPermissions.d.ts +0 -26
- package/dist/src/plugins/types/PluginPermissions.d.ts.map +0 -1
- package/dist/src/plugins/types/PluginPermissions.js +0 -10
- package/dist/src/plugins/types/PluginPermissions.js.map +0 -1
- package/dist/src/plugins/types/PluginTypes.d.ts +0 -205
- package/dist/src/plugins/types/PluginTypes.d.ts.map +0 -1
- package/dist/src/plugins/types/PluginTypes.js +0 -30
- package/dist/src/plugins/types/PluginTypes.js.map +0 -1
- package/dist/src/plugins/types/index.d.ts +0 -79
- package/dist/src/plugins/types/index.d.ts.map +0 -1
- package/dist/src/plugins/types/index.js +0 -2
- package/dist/src/plugins/types/index.js.map +0 -1
- package/dist/src/quick-start.d.ts +0 -9
- package/dist/src/quick-start.d.ts.map +0 -1
- package/dist/src/quick-start.js +0 -26
- package/dist/src/quick-start.js.map +0 -1
- package/dist/src/schemas/plugingSchema.d.ts +0 -18
- package/dist/src/schemas/plugingSchema.d.ts.map +0 -1
- package/dist/src/schemas/plugingSchema.js +0 -40
- package/dist/src/schemas/plugingSchema.js.map +0 -1
- package/dist/src/server/FastServer/ComponentManager.d.ts +0 -32
- package/dist/src/server/FastServer/ComponentManager.d.ts.map +0 -1
- package/dist/src/server/FastServer/ComponentManager.js +0 -89
- package/dist/src/server/FastServer/ComponentManager.js.map +0 -1
- package/dist/src/server/FastServer/LogTracingMethods.d.ts +0 -9
- package/dist/src/server/FastServer/LogTracingMethods.d.ts.map +0 -1
- package/dist/src/server/FastServer/LogTracingMethods.js +0 -31
- package/dist/src/server/FastServer/LogTracingMethods.js.map +0 -1
- package/dist/src/server/FastServer/MiddlewareManager.d.ts +0 -17
- package/dist/src/server/FastServer/MiddlewareManager.d.ts.map +0 -1
- package/dist/src/server/FastServer/MiddlewareManager.js +0 -57
- package/dist/src/server/FastServer/MiddlewareManager.js.map +0 -1
- package/dist/src/server/FastServer/ShutdownManager.d.ts +0 -16
- package/dist/src/server/FastServer/ShutdownManager.d.ts.map +0 -1
- package/dist/src/server/FastServer/ShutdownManager.js +0 -70
- package/dist/src/server/FastServer/ShutdownManager.js.map +0 -1
- package/dist/src/server/FastServer/UploadManager.d.ts +0 -13
- package/dist/src/server/FastServer/UploadManager.d.ts.map +0 -1
- package/dist/src/server/FastServer/UploadManager.js +0 -67
- package/dist/src/server/FastServer/UploadManager.js.map +0 -1
- package/dist/src/server/FastServer/index.d.ts +0 -51
- package/dist/src/server/FastServer/index.d.ts.map +0 -1
- package/dist/src/server/FastServer/index.js +0 -222
- package/dist/src/server/FastServer/index.js.map +0 -1
- package/dist/src/server/ServerFactory.d.ts +0 -94
- package/dist/src/server/ServerFactory.d.ts.map +0 -1
- package/dist/src/server/ServerFactory.js +0 -129
- package/dist/src/server/ServerFactory.js.map +0 -1
- package/dist/src/server/components/fastapi/CacheManager.d.ts +0 -64
- package/dist/src/server/components/fastapi/CacheManager.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/CacheManager.js +0 -212
- package/dist/src/server/components/fastapi/CacheManager.js.map +0 -1
- package/dist/src/server/components/fastapi/MonitoringManager.d.ts +0 -43
- package/dist/src/server/components/fastapi/MonitoringManager.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/MonitoringManager.js +0 -186
- package/dist/src/server/components/fastapi/MonitoringManager.js.map +0 -1
- package/dist/src/server/components/fastapi/RedirectManager.d.ts +0 -112
- package/dist/src/server/components/fastapi/RedirectManager.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/RedirectManager.js +0 -432
- package/dist/src/server/components/fastapi/RedirectManager.js.map +0 -1
- package/dist/src/server/components/fastapi/RequestProcessor.d.ts +0 -34
- package/dist/src/server/components/fastapi/RequestProcessor.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/RequestProcessor.js +0 -177
- package/dist/src/server/components/fastapi/RequestProcessor.js.map +0 -1
- package/dist/src/server/components/fastapi/RouteManager.d.ts +0 -43
- package/dist/src/server/components/fastapi/RouteManager.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/RouteManager.js +0 -118
- package/dist/src/server/components/fastapi/RouteManager.js.map +0 -1
- package/dist/src/server/components/fastapi/WorkerPoolComponent.d.ts +0 -29
- package/dist/src/server/components/fastapi/WorkerPoolComponent.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/WorkerPoolComponent.js +0 -77
- package/dist/src/server/components/fastapi/WorkerPoolComponent.js.map +0 -1
- package/dist/src/server/components/fastapi/console/ConsoleInterceptor.d.ts +0 -54
- package/dist/src/server/components/fastapi/console/ConsoleInterceptor.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/console/ConsoleInterceptor.js +0 -464
- package/dist/src/server/components/fastapi/console/ConsoleInterceptor.js.map +0 -1
- package/dist/src/server/components/fastapi/console/encryption/ConsoleEncryption.d.ts +0 -19
- package/dist/src/server/components/fastapi/console/encryption/ConsoleEncryption.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/console/encryption/ConsoleEncryption.js +0 -22
- package/dist/src/server/components/fastapi/console/encryption/ConsoleEncryption.js.map +0 -1
- package/dist/src/server/components/fastapi/console/types.d.ts +0 -115
- package/dist/src/server/components/fastapi/console/types.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/console/types.js +0 -31
- package/dist/src/server/components/fastapi/console/types.js.map +0 -1
- package/dist/src/server/components/fastapi/templates/redirectTemp.d.ts +0 -6
- package/dist/src/server/components/fastapi/templates/redirectTemp.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/templates/redirectTemp.js +0 -98
- package/dist/src/server/components/fastapi/templates/redirectTemp.js.map +0 -1
- package/dist/src/server/components/fastapi/typescript/TypeScriptChecker.d.ts +0 -96
- package/dist/src/server/components/fastapi/typescript/TypeScriptChecker.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/typescript/TypeScriptChecker.js +0 -348
- package/dist/src/server/components/fastapi/typescript/TypeScriptChecker.js.map +0 -1
- package/dist/src/server/components/fastapi/upload/FileUploadManager.d.ts +0 -45
- package/dist/src/server/components/fastapi/upload/FileUploadManager.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/upload/FileUploadManager.js +0 -234
- package/dist/src/server/components/fastapi/upload/FileUploadManager.js.map +0 -1
- package/dist/src/server/components/fastapi/upload/file-upload.d.ts +0 -80
- package/dist/src/server/components/fastapi/upload/file-upload.d.ts.map +0 -1
- package/dist/src/server/components/fastapi/upload/file-upload.js +0 -246
- package/dist/src/server/components/fastapi/upload/file-upload.js.map +0 -1
- package/dist/src/server/components/lifecycle/slcm.type.d.ts +0 -38
- package/dist/src/server/components/lifecycle/slcm.type.d.ts.map +0 -1
- package/dist/src/server/components/lifecycle/slcm.type.js +0 -5
- package/dist/src/server/components/lifecycle/slcm.type.js.map +0 -1
- package/dist/src/server/components/multi-server/MultiServerApp.d.ts +0 -137
- package/dist/src/server/components/multi-server/MultiServerApp.d.ts.map +0 -1
- package/dist/src/server/components/multi-server/MultiServerApp.js +0 -573
- package/dist/src/server/components/multi-server/MultiServerApp.js.map +0 -1
- package/dist/src/server/components/multi-server/MultiServerManager.d.ts +0 -58
- package/dist/src/server/components/multi-server/MultiServerManager.d.ts.map +0 -1
- package/dist/src/server/components/multi-server/MultiServerManager.js +0 -365
- package/dist/src/server/components/multi-server/MultiServerManager.js.map +0 -1
- package/dist/src/server/components/static/XStatic.d.ts +0 -42
- package/dist/src/server/components/static/XStatic.d.ts.map +0 -1
- package/dist/src/server/components/static/XStatic.js +0 -125
- package/dist/src/server/components/static/XStatic.js.map +0 -1
- package/dist/src/server/conf/networkConnectionConf.d.ts +0 -20
- package/dist/src/server/conf/networkConnectionConf.d.ts.map +0 -1
- package/dist/src/server/conf/networkConnectionConf.js +0 -21
- package/dist/src/server/conf/networkConnectionConf.js.map +0 -1
- package/dist/src/server/conf/proxyConfig.d.ts +0 -24
- package/dist/src/server/conf/proxyConfig.d.ts.map +0 -1
- package/dist/src/server/conf/proxyConfig.js +0 -19
- package/dist/src/server/conf/proxyConfig.js.map +0 -1
- package/dist/src/server/conf/rateLimitConfig.d.ts +0 -29
- package/dist/src/server/conf/rateLimitConfig.d.ts.map +0 -1
- package/dist/src/server/conf/rateLimitConfig.js +0 -46
- package/dist/src/server/conf/rateLimitConfig.js.map +0 -1
- package/dist/src/server/const/ExecutionPredictor_EP.const.d.ts +0 -48
- package/dist/src/server/const/ExecutionPredictor_EP.const.d.ts.map +0 -1
- package/dist/src/server/const/ExecutionPredictor_EP.const.js +0 -68
- package/dist/src/server/const/ExecutionPredictor_EP.const.js.map +0 -1
- package/dist/src/server/const/MIME_MAP.d.ts +0 -2
- package/dist/src/server/const/MIME_MAP.d.ts.map +0 -1
- package/dist/src/server/const/MIME_MAP.js +0 -419
- package/dist/src/server/const/MIME_MAP.js.map +0 -1
- package/dist/src/server/const/XHSC_SIGNATURE.d.ts +0 -2
- package/dist/src/server/const/XHSC_SIGNATURE.d.ts.map +0 -1
- package/dist/src/server/const/XHSC_SIGNATURE.js +0 -3
- package/dist/src/server/const/XHSC_SIGNATURE.js.map +0 -1
- package/dist/src/server/const/XRUNTIME-HEADER.d.ts +0 -2
- package/dist/src/server/const/XRUNTIME-HEADER.d.ts.map +0 -1
- package/dist/src/server/const/XRUNTIME-HEADER.js +0 -2
- package/dist/src/server/const/XRUNTIME-HEADER.js.map +0 -1
- package/dist/src/server/const/default.d.ts +0 -10
- package/dist/src/server/const/default.d.ts.map +0 -1
- package/dist/src/server/const/default.js +0 -335
- package/dist/src/server/const/default.js.map +0 -1
- package/dist/src/server/const/http.d.ts +0 -13
- package/dist/src/server/const/http.d.ts.map +0 -1
- package/dist/src/server/const/http.js +0 -25
- package/dist/src/server/const/http.js.map +0 -1
- package/dist/src/server/const/internalFlags.d.ts +0 -7
- package/dist/src/server/const/internalFlags.d.ts.map +0 -1
- package/dist/src/server/const/internalFlags.js +0 -7
- package/dist/src/server/const/internalFlags.js.map +0 -1
- package/dist/src/server/core/HttpServer.d.ts +0 -62
- package/dist/src/server/core/HttpServer.d.ts.map +0 -1
- package/dist/src/server/core/HttpServer.js +0 -251
- package/dist/src/server/core/HttpServer.js.map +0 -1
- package/dist/src/server/core/RequestApp.d.ts +0 -42
- package/dist/src/server/core/RequestApp.d.ts.map +0 -1
- package/dist/src/server/core/RequestApp.js +0 -91
- package/dist/src/server/core/RequestApp.js.map +0 -1
- package/dist/src/server/core/RequestEnhancer.d.ts +0 -174
- package/dist/src/server/core/RequestEnhancer.d.ts.map +0 -1
- package/dist/src/server/core/RequestEnhancer.js +0 -330
- package/dist/src/server/core/RequestEnhancer.js.map +0 -1
- package/dist/src/server/core/ResponseEnhancer.d.ts +0 -323
- package/dist/src/server/core/ResponseEnhancer.d.ts.map +0 -1
- package/dist/src/server/core/ResponseEnhancer.js +0 -578
- package/dist/src/server/core/ResponseEnhancer.js.map +0 -1
- package/dist/src/server/core/SendFileHandler.d.ts +0 -12
- package/dist/src/server/core/SendFileHandler.d.ts.map +0 -1
- package/dist/src/server/core/SendFileHandler.js +0 -179
- package/dist/src/server/core/SendFileHandler.js.map +0 -1
- package/dist/src/server/core/StartupProcessor.d.ts +0 -35
- package/dist/src/server/core/StartupProcessor.d.ts.map +0 -1
- package/dist/src/server/core/StartupProcessor.js +0 -114
- package/dist/src/server/core/StartupProcessor.js.map +0 -1
- package/dist/src/server/core/VirtualServer.d.ts +0 -18
- package/dist/src/server/core/VirtualServer.d.ts.map +0 -1
- package/dist/src/server/core/VirtualServer.js +0 -28
- package/dist/src/server/core/VirtualServer.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/EngineManager.d.ts +0 -17
- package/dist/src/server/core/XHSCBridge/EngineManager.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/EngineManager.js +0 -165
- package/dist/src/server/core/XHSCBridge/EngineManager.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/LogProcessor.d.ts +0 -20
- package/dist/src/server/core/XHSCBridge/LogProcessor.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/LogProcessor.js +0 -116
- package/dist/src/server/core/XHSCBridge/LogProcessor.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/SocketManager.d.ts +0 -20
- package/dist/src/server/core/XHSCBridge/SocketManager.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/SocketManager.js +0 -83
- package/dist/src/server/core/XHSCBridge/SocketManager.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildClusterArgs.d.ts +0 -2
- package/dist/src/server/core/XHSCBridge/cmd/buildClusterArgs.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildClusterArgs.js +0 -66
- package/dist/src/server/core/XHSCBridge/cmd/buildClusterArgs.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildCoreArgs.d.ts +0 -2
- package/dist/src/server/core/XHSCBridge/cmd/buildCoreArgs.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildCoreArgs.js +0 -33
- package/dist/src/server/core/XHSCBridge/cmd/buildCoreArgs.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildNetworkArgs.d.ts +0 -2
- package/dist/src/server/core/XHSCBridge/cmd/buildNetworkArgs.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildNetworkArgs.js +0 -49
- package/dist/src/server/core/XHSCBridge/cmd/buildNetworkArgs.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildPerformanceArgs.d.ts +0 -2
- package/dist/src/server/core/XHSCBridge/cmd/buildPerformanceArgs.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildPerformanceArgs.js +0 -41
- package/dist/src/server/core/XHSCBridge/cmd/buildPerformanceArgs.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildRequestArgs.d.ts +0 -2
- package/dist/src/server/core/XHSCBridge/cmd/buildRequestArgs.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildRequestArgs.js +0 -31
- package/dist/src/server/core/XHSCBridge/cmd/buildRequestArgs.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildSecurityArgs.d.ts +0 -2
- package/dist/src/server/core/XHSCBridge/cmd/buildSecurityArgs.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js +0 -46
- package/dist/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildStaticArgs.d.ts +0 -5
- package/dist/src/server/core/XHSCBridge/cmd/buildStaticArgs.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildStaticArgs.js +0 -37
- package/dist/src/server/core/XHSCBridge/cmd/buildStaticArgs.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildUploadArgs.d.ts +0 -2
- package/dist/src/server/core/XHSCBridge/cmd/buildUploadArgs.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildUploadArgs.js +0 -24
- package/dist/src/server/core/XHSCBridge/cmd/buildUploadArgs.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildWorkerPoolArgs.d.ts +0 -2
- package/dist/src/server/core/XHSCBridge/cmd/buildWorkerPoolArgs.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/cmd/buildWorkerPoolArgs.js +0 -18
- package/dist/src/server/core/XHSCBridge/cmd/buildWorkerPoolArgs.js.map +0 -1
- package/dist/src/server/core/XHSCBridge/index.d.ts +0 -28
- package/dist/src/server/core/XHSCBridge/index.d.ts.map +0 -1
- package/dist/src/server/core/XHSCBridge/index.js +0 -94
- package/dist/src/server/core/XHSCBridge/index.js.map +0 -1
- package/dist/src/server/core/XHSCProtocol.d.ts +0 -100
- package/dist/src/server/core/XHSCProtocol.d.ts.map +0 -1
- package/dist/src/server/core/XHSCProtocol.js +0 -423
- package/dist/src/server/core/XHSCProtocol.js.map +0 -1
- package/dist/src/server/core/XyDiagnosticsManager.d.ts +0 -28
- package/dist/src/server/core/XyDiagnosticsManager.d.ts.map +0 -1
- package/dist/src/server/core/XyDiagnosticsManager.js +0 -74
- package/dist/src/server/core/XyDiagnosticsManager.js.map +0 -1
- package/dist/src/server/core/XyLifecycleManager.d.ts +0 -51
- package/dist/src/server/core/XyLifecycleManager.d.ts.map +0 -1
- package/dist/src/server/core/XyLifecycleManager.js +0 -235
- package/dist/src/server/core/XyLifecycleManager.js.map +0 -1
- package/dist/src/server/core/XyModuleManager.d.ts +0 -40
- package/dist/src/server/core/XyModuleManager.d.ts.map +0 -1
- package/dist/src/server/core/XyModuleManager.js +0 -124
- package/dist/src/server/core/XyModuleManager.js.map +0 -1
- package/dist/src/server/core/XyRoutingManager.d.ts +0 -42
- package/dist/src/server/core/XyRoutingManager.d.ts.map +0 -1
- package/dist/src/server/core/XyRoutingManager.js +0 -198
- package/dist/src/server/core/XyRoutingManager.js.map +0 -1
- package/dist/src/server/core/XyServerCreator.d.ts +0 -22
- package/dist/src/server/core/XyServerCreator.d.ts.map +0 -1
- package/dist/src/server/core/XyServerCreator.js +0 -117
- package/dist/src/server/core/XyServerCreator.js.map +0 -1
- package/dist/src/server/core/XyprissApp.d.ts +0 -208
- package/dist/src/server/core/XyprissApp.d.ts.map +0 -1
- package/dist/src/server/core/XyprissApp.js +0 -575
- package/dist/src/server/core/XyprissApp.js.map +0 -1
- package/dist/src/server/core/http/BodyParser.d.ts +0 -8
- package/dist/src/server/core/http/BodyParser.d.ts.map +0 -1
- package/dist/src/server/core/http/BodyParser.js +0 -43
- package/dist/src/server/core/http/BodyParser.js.map +0 -1
- package/dist/src/server/core/http/HttpErrorHandler.d.ts +0 -17
- package/dist/src/server/core/http/HttpErrorHandler.d.ts.map +0 -1
- package/dist/src/server/core/http/HttpErrorHandler.js +0 -65
- package/dist/src/server/core/http/HttpErrorHandler.js.map +0 -1
- package/dist/src/server/core/http/RequestForwarder.d.ts +0 -11
- package/dist/src/server/core/http/RequestForwarder.d.ts.map +0 -1
- package/dist/src/server/core/http/RequestForwarder.js +0 -41
- package/dist/src/server/core/http/RequestForwarder.js.map +0 -1
- package/dist/src/server/core/http/RouteManager.d.ts +0 -17
- package/dist/src/server/core/http/RouteManager.d.ts.map +0 -1
- package/dist/src/server/core/http/RouteManager.js +0 -113
- package/dist/src/server/core/http/RouteManager.js.map +0 -1
- package/dist/src/server/core/request/XyRequestManager.d.ts +0 -57
- package/dist/src/server/core/request/XyRequestManager.d.ts.map +0 -1
- package/dist/src/server/core/request/XyRequestManager.js +0 -226
- package/dist/src/server/core/request/XyRequestManager.js.map +0 -1
- package/dist/src/server/handlers/NotFoundHandler.d.ts +0 -25
- package/dist/src/server/handlers/NotFoundHandler.d.ts.map +0 -1
- package/dist/src/server/handlers/NotFoundHandler.js +0 -81
- package/dist/src/server/handlers/NotFoundHandler.js.map +0 -1
- package/dist/src/server/handlers/templates/notFoundTemplate.d.ts +0 -3
- package/dist/src/server/handlers/templates/notFoundTemplate.d.ts.map +0 -1
- package/dist/src/server/handlers/templates/notFoundTemplate.js +0 -651
- package/dist/src/server/handlers/templates/notFoundTemplate.js.map +0 -1
- package/dist/src/server/middleware/MiddlewareManager.d.ts +0 -64
- package/dist/src/server/middleware/MiddlewareManager.d.ts.map +0 -1
- package/dist/src/server/middleware/MiddlewareManager.js +0 -200
- package/dist/src/server/middleware/MiddlewareManager.js.map +0 -1
- package/dist/src/server/routing/Router.d.ts +0 -57
- package/dist/src/server/routing/Router.d.ts.map +0 -1
- package/dist/src/server/routing/Router.js +0 -173
- package/dist/src/server/routing/Router.js.map +0 -1
- package/dist/src/server/routing/index.d.ts +0 -16
- package/dist/src/server/routing/index.d.ts.map +0 -1
- package/dist/src/server/routing/index.js +0 -7
- package/dist/src/server/routing/index.js.map +0 -1
- package/dist/src/server/routing/modules/XyGuard.d.ts +0 -34
- package/dist/src/server/routing/modules/XyGuard.d.ts.map +0 -1
- package/dist/src/server/routing/modules/XyGuard.js +0 -30
- package/dist/src/server/routing/modules/XyGuard.js.map +0 -1
- package/dist/src/server/routing/modules/constants.d.ts +0 -5
- package/dist/src/server/routing/modules/constants.d.ts.map +0 -1
- package/dist/src/server/routing/modules/constants.js +0 -13
- package/dist/src/server/routing/modules/constants.js.map +0 -1
- package/dist/src/server/routing/modules/groups.d.ts +0 -14
- package/dist/src/server/routing/modules/groups.d.ts.map +0 -1
- package/dist/src/server/routing/modules/groups.js +0 -55
- package/dist/src/server/routing/modules/groups.js.map +0 -1
- package/dist/src/server/routing/modules/helpers.d.ts +0 -19
- package/dist/src/server/routing/modules/helpers.d.ts.map +0 -1
- package/dist/src/server/routing/modules/helpers.js +0 -164
- package/dist/src/server/routing/modules/helpers.js.map +0 -1
- package/dist/src/server/routing/modules/middleware.d.ts +0 -20
- package/dist/src/server/routing/modules/middleware.d.ts.map +0 -1
- package/dist/src/server/routing/modules/middleware.js +0 -185
- package/dist/src/server/routing/modules/middleware.js.map +0 -1
- package/dist/src/server/routing/modules/path.d.ts +0 -33
- package/dist/src/server/routing/modules/path.d.ts.map +0 -1
- package/dist/src/server/routing/modules/path.js +0 -125
- package/dist/src/server/routing/modules/path.js.map +0 -1
- package/dist/src/server/routing/modules/registry.d.ts +0 -29
- package/dist/src/server/routing/modules/registry.d.ts.map +0 -1
- package/dist/src/server/routing/modules/registry.js +0 -159
- package/dist/src/server/routing/modules/registry.js.map +0 -1
- package/dist/src/server/routing/modules/types.d.ts +0 -143
- package/dist/src/server/routing/modules/types.d.ts.map +0 -1
- package/dist/src/server/routing/modules/types.js +0 -2
- package/dist/src/server/routing/modules/types.js.map +0 -1
- package/dist/src/server/service/Reload/exec/ExecutableBuilder.d.ts +0 -67
- package/dist/src/server/service/Reload/exec/ExecutableBuilder.d.ts.map +0 -1
- package/dist/src/server/service/Reload/exec/ExecutableBuilder.js +0 -337
- package/dist/src/server/service/Reload/exec/ExecutableBuilder.js.map +0 -1
- package/dist/src/server/service/Reload/exec/TypeScriptExecutor.d.ts +0 -69
- package/dist/src/server/service/Reload/exec/TypeScriptExecutor.d.ts.map +0 -1
- package/dist/src/server/service/Reload/exec/TypeScriptExecutor.js +0 -337
- package/dist/src/server/service/Reload/exec/TypeScriptExecutor.js.map +0 -1
- package/dist/src/server/service/Reload/exec/build-executable.d.ts +0 -9
- package/dist/src/server/service/Reload/exec/build-executable.d.ts.map +0 -1
- package/dist/src/server/service/Reload/exec/build-executable.js +0 -44
- package/dist/src/server/service/Reload/exec/build-executable.js.map +0 -1
- package/dist/src/server/service/Reload/types/TSExecutor.type.d.ts +0 -18
- package/dist/src/server/service/Reload/types/TSExecutor.type.d.ts.map +0 -1
- package/dist/src/server/service/Reload/types/TSExecutor.type.js +0 -2
- package/dist/src/server/service/Reload/types/TSExecutor.type.js.map +0 -1
- package/dist/src/server/service/Reload/types/hotreloader.d.ts +0 -21
- package/dist/src/server/service/Reload/types/hotreloader.d.ts.map +0 -1
- package/dist/src/server/service/Reload/types/hotreloader.js +0 -2
- package/dist/src/server/service/Reload/types/hotreloader.js.map +0 -1
- package/dist/src/server/service/Reload/types/quickdev.type.d.ts +0 -30
- package/dist/src/server/service/Reload/types/quickdev.type.d.ts.map +0 -1
- package/dist/src/server/service/Reload/types/quickdev.type.js +0 -2
- package/dist/src/server/service/Reload/types/quickdev.type.js.map +0 -1
- package/dist/src/server/static/XStatic.d.ts +0 -60
- package/dist/src/server/static/XStatic.d.ts.map +0 -1
- package/dist/src/server/static/XStatic.js +0 -126
- package/dist/src/server/static/XStatic.js.map +0 -1
- package/dist/src/server/utils/ConfigLoader.d.ts +0 -41
- package/dist/src/server/utils/ConfigLoader.d.ts.map +0 -1
- package/dist/src/server/utils/ConfigLoader.js +0 -244
- package/dist/src/server/utils/ConfigLoader.js.map +0 -1
- package/dist/src/server/utils/PortManager.d.ts +0 -61
- package/dist/src/server/utils/PortManager.d.ts.map +0 -1
- package/dist/src/server/utils/PortManager.js +0 -245
- package/dist/src/server/utils/PortManager.js.map +0 -1
- package/dist/src/server/utils/WorkerModeHandler.d.ts +0 -7
- package/dist/src/server/utils/WorkerModeHandler.d.ts.map +0 -1
- package/dist/src/server/utils/WorkerModeHandler.js +0 -60
- package/dist/src/server/utils/WorkerModeHandler.js.map +0 -1
- package/dist/src/server/utils/es_modules.d.ts +0 -3
- package/dist/src/server/utils/es_modules.d.ts.map +0 -1
- package/dist/src/server/utils/es_modules.js +0 -5
- package/dist/src/server/utils/es_modules.js.map +0 -1
- package/dist/src/server/utils/forceClosePort.d.ts +0 -100
- package/dist/src/server/utils/forceClosePort.d.ts.map +0 -1
- package/dist/src/server/utils/forceClosePort.js +0 -328
- package/dist/src/server/utils/forceClosePort.js.map +0 -1
- package/dist/src/server/utils/internalFlagsFunctions.d.ts +0 -71
- package/dist/src/server/utils/internalFlagsFunctions.d.ts.map +0 -1
- package/dist/src/server/utils/internalFlagsFunctions.js +0 -150
- package/dist/src/server/utils/internalFlagsFunctions.js.map +0 -1
- package/dist/src/server/utils/shouldRegisterRouteOnServer.d.ts +0 -6
- package/dist/src/server/utils/shouldRegisterRouteOnServer.d.ts.map +0 -1
- package/dist/src/server/utils/shouldRegisterRouteOnServer.js +0 -30
- package/dist/src/server/utils/shouldRegisterRouteOnServer.js.map +0 -1
- package/dist/src/server/utils/wildcardMatcher.d.ts +0 -30
- package/dist/src/server/utils/wildcardMatcher.d.ts.map +0 -1
- package/dist/src/server/utils/wildcardMatcher.js +0 -220
- package/dist/src/server/utils/wildcardMatcher.js.map +0 -1
- package/dist/src/shared/logger/DEFAULT_LOGGER_CONFIG.d.ts +0 -3
- package/dist/src/shared/logger/DEFAULT_LOGGER_CONFIG.d.ts.map +0 -1
- package/dist/src/shared/logger/DEFAULT_LOGGER_CONFIG.js +0 -64
- package/dist/src/shared/logger/DEFAULT_LOGGER_CONFIG.js.map +0 -1
- package/dist/src/shared/logger/DEFAULT_PALETTE.d.ts +0 -16
- package/dist/src/shared/logger/DEFAULT_PALETTE.d.ts.map +0 -1
- package/dist/src/shared/logger/DEFAULT_PALETTE.js +0 -16
- package/dist/src/shared/logger/DEFAULT_PALETTE.js.map +0 -1
- package/dist/src/shared/logger/Logger.d.ts +0 -95
- package/dist/src/shared/logger/Logger.d.ts.map +0 -1
- package/dist/src/shared/logger/Logger.js +0 -576
- package/dist/src/shared/logger/Logger.js.map +0 -1
- package/dist/src/shared/logger/index.d.ts +0 -2
- package/dist/src/shared/logger/index.d.ts.map +0 -1
- package/dist/src/shared/logger/index.js +0 -2
- package/dist/src/shared/logger/index.js.map +0 -1
- package/dist/src/shared/logger/quickLogger.d.ts +0 -19
- package/dist/src/shared/logger/quickLogger.d.ts.map +0 -1
- package/dist/src/shared/logger/quickLogger.js +0 -162
- package/dist/src/shared/logger/quickLogger.js.map +0 -1
- package/dist/src/shared/types/index.d.ts +0 -2
- package/dist/src/shared/types/index.d.ts.map +0 -1
- package/dist/src/shared/types/index.js +0 -2
- package/dist/src/shared/types/index.js.map +0 -1
- package/dist/src/shared/types/logger.type.d.ts +0 -46
- package/dist/src/shared/types/logger.type.d.ts.map +0 -1
- package/dist/src/shared/types/logger.type.js +0 -42
- package/dist/src/shared/types/logger.type.js.map +0 -1
- package/dist/src/types/CpuMon.t.d.ts +0 -43
- package/dist/src/types/CpuMon.t.d.ts.map +0 -1
- package/dist/src/types/CpuMon.t.js +0 -2
- package/dist/src/types/CpuMon.t.js.map +0 -1
- package/dist/src/types/ExecutionPredictor.type.d.ts +0 -25
- package/dist/src/types/ExecutionPredictor.type.d.ts.map +0 -1
- package/dist/src/types/ExecutionPredictor.type.js +0 -2
- package/dist/src/types/ExecutionPredictor.type.js.map +0 -1
- package/dist/src/types/FiUp.type.d.ts +0 -50
- package/dist/src/types/FiUp.type.d.ts.map +0 -1
- package/dist/src/types/FiUp.type.js +0 -2
- package/dist/src/types/FiUp.type.js.map +0 -1
- package/dist/src/types/NotFoundConfig.d.ts +0 -39
- package/dist/src/types/NotFoundConfig.d.ts.map +0 -1
- package/dist/src/types/NotFoundConfig.js +0 -81
- package/dist/src/types/NotFoundConfig.js.map +0 -1
- package/dist/src/types/ReqPreCompiler.type.d.ts +0 -49
- package/dist/src/types/ReqPreCompiler.type.d.ts.map +0 -1
- package/dist/src/types/ReqPreCompiler.type.js +0 -2
- package/dist/src/types/ReqPreCompiler.type.js.map +0 -1
- package/dist/src/types/ServerOptions.d.ts +0 -861
- package/dist/src/types/ServerOptions.d.ts.map +0 -1
- package/dist/src/types/ServerOptions.js +0 -4
- package/dist/src/types/ServerOptions.js.map +0 -1
- package/dist/src/types/XyApp.type.d.ts +0 -610
- package/dist/src/types/XyApp.type.d.ts.map +0 -1
- package/dist/src/types/XyApp.type.js +0 -2
- package/dist/src/types/XyApp.type.js.map +0 -1
- package/dist/src/types/XyPrissRouter.types.d.ts +0 -23
- package/dist/src/types/XyPrissRouter.types.d.ts.map +0 -1
- package/dist/src/types/XyPrissRouter.types.js +0 -2
- package/dist/src/types/XyPrissRouter.types.js.map +0 -1
- package/dist/src/types/bun_cluster.t.d.ts +0 -41
- package/dist/src/types/bun_cluster.t.d.ts.map +0 -1
- package/dist/src/types/bun_cluster.t.js +0 -2
- package/dist/src/types/bun_cluster.t.js.map +0 -1
- package/dist/src/types/cluster.ipc.t.d.ts +0 -141
- package/dist/src/types/cluster.ipc.t.d.ts.map +0 -1
- package/dist/src/types/cluster.ipc.t.js +0 -88
- package/dist/src/types/cluster.ipc.t.js.map +0 -1
- package/dist/src/types/components/CacheManager.type.d.ts +0 -8
- package/dist/src/types/components/CacheManager.type.d.ts.map +0 -1
- package/dist/src/types/components/CacheManager.type.js +0 -2
- package/dist/src/types/components/CacheManager.type.js.map +0 -1
- package/dist/src/types/components/MonitoringM.type.d.ts +0 -10
- package/dist/src/types/components/MonitoringM.type.d.ts.map +0 -1
- package/dist/src/types/components/MonitoringM.type.js +0 -2
- package/dist/src/types/components/MonitoringM.type.js.map +0 -1
- package/dist/src/types/components/PlugingM.type.d.ts +0 -8
- package/dist/src/types/components/PlugingM.type.d.ts.map +0 -1
- package/dist/src/types/components/PlugingM.type.js +0 -2
- package/dist/src/types/components/PlugingM.type.js.map +0 -1
- package/dist/src/types/components/ReqProcessor.type.d.ts +0 -7
- package/dist/src/types/components/ReqProcessor.type.d.ts.map +0 -1
- package/dist/src/types/components/ReqProcessor.type.js +0 -2
- package/dist/src/types/components/ReqProcessor.type.js.map +0 -1
- package/dist/src/types/components/RouteM.type.d.ts +0 -9
- package/dist/src/types/components/RouteM.type.d.ts.map +0 -1
- package/dist/src/types/components/RouteM.type.js +0 -2
- package/dist/src/types/components/RouteM.type.js.map +0 -1
- package/dist/src/types/httpServer.type.d.ts +0 -260
- package/dist/src/types/httpServer.type.d.ts.map +0 -1
- package/dist/src/types/httpServer.type.js +0 -25
- package/dist/src/types/httpServer.type.js.map +0 -1
- package/dist/src/types/index.d.ts +0 -228
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js +0 -37
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/types/middleware-api.types.d.ts +0 -180
- package/dist/src/types/middleware-api.types.d.ts.map +0 -1
- package/dist/src/types/middleware-api.types.js +0 -6
- package/dist/src/types/middleware-api.types.js.map +0 -1
- package/dist/src/types/middlewareManager.types.d.ts +0 -18
- package/dist/src/types/middlewareManager.types.d.ts.map +0 -1
- package/dist/src/types/middlewareManager.types.js +0 -2
- package/dist/src/types/middlewareManager.types.js.map +0 -1
- package/dist/src/types/mod/cache.d.ts +0 -417
- package/dist/src/types/mod/cache.d.ts.map +0 -1
- package/dist/src/types/mod/cache.js +0 -12
- package/dist/src/types/mod/cache.js.map +0 -1
- package/dist/src/types/mod/core.d.ts +0 -390
- package/dist/src/types/mod/core.d.ts.map +0 -1
- package/dist/src/types/mod/core.js +0 -2
- package/dist/src/types/mod/core.js.map +0 -1
- package/dist/src/types/mod/monitoring.d.ts +0 -473
- package/dist/src/types/mod/monitoring.d.ts.map +0 -1
- package/dist/src/types/mod/monitoring.js +0 -12
- package/dist/src/types/mod/monitoring.js.map +0 -1
- package/dist/src/types/mod/performance.d.ts +0 -370
- package/dist/src/types/mod/performance.d.ts.map +0 -1
- package/dist/src/types/mod/performance.js +0 -12
- package/dist/src/types/mod/performance.js.map +0 -1
- package/dist/src/types/mod/routing.d.ts +0 -385
- package/dist/src/types/mod/routing.d.ts.map +0 -1
- package/dist/src/types/mod/routing.js +0 -12
- package/dist/src/types/mod/routing.js.map +0 -1
- package/dist/src/types/mod/security.d.ts +0 -1478
- package/dist/src/types/mod/security.d.ts.map +0 -1
- package/dist/src/types/mod/security.js +0 -2
- package/dist/src/types/mod/security.js.map +0 -1
- package/dist/src/types/perfomance.d.ts +0 -37
- package/dist/src/types/perfomance.d.ts.map +0 -1
- package/dist/src/types/perfomance.js +0 -2
- package/dist/src/types/perfomance.js.map +0 -1
- package/dist/src/types/types.d.ts +0 -210
- package/dist/src/types/types.d.ts.map +0 -1
- package/dist/src/types/types.js +0 -21
- package/dist/src/types/types.js.map +0 -1
- package/dist/src/types/xems.type.d.ts +0 -84
- package/dist/src/types/xems.type.d.ts.map +0 -1
- package/dist/src/types/xems.type.js +0 -2
- package/dist/src/types/xems.type.js.map +0 -1
- package/dist/src/utils/ConfigSyntaxParser.d.ts +0 -28
- package/dist/src/utils/ConfigSyntaxParser.d.ts.map +0 -1
- package/dist/src/utils/ConfigSyntaxParser.js +0 -76
- package/dist/src/utils/ConfigSyntaxParser.js.map +0 -1
- package/dist/src/utils/DotEnvLoader.d.ts +0 -27
- package/dist/src/utils/DotEnvLoader.d.ts.map +0 -1
- package/dist/src/utils/DotEnvLoader.js +0 -69
- package/dist/src/utils/DotEnvLoader.js.map +0 -1
- package/dist/src/utils/ProjectDiscovery.d.ts +0 -61
- package/dist/src/utils/ProjectDiscovery.d.ts.map +0 -1
- package/dist/src/utils/ProjectDiscovery.js +0 -295
- package/dist/src/utils/ProjectDiscovery.js.map +0 -1
- package/dist/src/utils/getIp.d.ts +0 -53
- package/dist/src/utils/getIp.d.ts.map +0 -1
- package/dist/src/utils/getIp.js +0 -160
- package/dist/src/utils/getIp.js.map +0 -1
- package/dist/src/utils/getMime.d.ts +0 -52
- package/dist/src/utils/getMime.d.ts.map +0 -1
- package/dist/src/utils/getMime.js +0 -90
- package/dist/src/utils/getMime.js.map +0 -1
- package/dist/src/utils/mergeWithDefaults.d.ts +0 -92
- package/dist/src/utils/mergeWithDefaults.d.ts.map +0 -1
- package/dist/src/utils/mergeWithDefaults.js +0 -172
- package/dist/src/utils/mergeWithDefaults.js.map +0 -1
- package/dist/src/utils/mimeUtils.d.ts +0 -10
- package/dist/src/utils/mimeUtils.d.ts.map +0 -1
- package/dist/src/utils/mimeUtils.js +0 -14
- package/dist/src/utils/mimeUtils.js.map +0 -1
- package/dist/src/xhsc/EnvApi.d.ts +0 -296
- package/dist/src/xhsc/EnvApi.d.ts.map +0 -1
- package/dist/src/xhsc/EnvApi.js +0 -525
- package/dist/src/xhsc/EnvApi.js.map +0 -1
- package/dist/src/xhsc/FSApi.d.ts +0 -21
- package/dist/src/xhsc/FSApi.d.ts.map +0 -1
- package/dist/src/xhsc/FSApi.js +0 -49
- package/dist/src/xhsc/FSApi.js.map +0 -1
- package/dist/src/xhsc/OSApi.d.ts +0 -195
- package/dist/src/xhsc/OSApi.d.ts.map +0 -1
- package/dist/src/xhsc/OSApi.js +0 -220
- package/dist/src/xhsc/OSApi.js.map +0 -1
- package/dist/src/xhsc/PathApi.d.ts +0 -300
- package/dist/src/xhsc/PathApi.d.ts.map +0 -1
- package/dist/src/xhsc/PathApi.js +0 -383
- package/dist/src/xhsc/PathApi.js.map +0 -1
- package/dist/src/xhsc/System.d.ts +0 -126
- package/dist/src/xhsc/System.d.ts.map +0 -1
- package/dist/src/xhsc/System.js +0 -58
- package/dist/src/xhsc/System.js.map +0 -1
- package/dist/src/xhsc/UtilsApi.d.ts +0 -45
- package/dist/src/xhsc/UtilsApi.d.ts.map +0 -1
- package/dist/src/xhsc/UtilsApi.js +0 -47
- package/dist/src/xhsc/UtilsApi.js.map +0 -1
- package/dist/src/xhsc/VarsApi.d.ts +0 -81
- package/dist/src/xhsc/VarsApi.d.ts.map +0 -1
- package/dist/src/xhsc/VarsApi.js +0 -175
- package/dist/src/xhsc/VarsApi.js.map +0 -1
- package/dist/src/xhsc/XyPrissCache.d.ts +0 -36
- package/dist/src/xhsc/XyPrissCache.d.ts.map +0 -1
- package/dist/src/xhsc/XyPrissCache.js +0 -66
- package/dist/src/xhsc/XyPrissCache.js.map +0 -1
- package/dist/src/xhsc/XyPrissRunner.d.ts +0 -49
- package/dist/src/xhsc/XyPrissRunner.d.ts.map +0 -1
- package/dist/src/xhsc/XyPrissRunner.js +0 -440
- package/dist/src/xhsc/XyPrissRunner.js.map +0 -1
- package/dist/src/xhsc/api/env/env.d.ts +0 -218
- package/dist/src/xhsc/api/env/env.d.ts.map +0 -1
- package/dist/src/xhsc/api/env/env.js +0 -84
- package/dist/src/xhsc/api/env/env.js.map +0 -1
- package/dist/src/xhsc/cluster/XHSCWorker.d.ts +0 -28
- package/dist/src/xhsc/cluster/XHSCWorker.d.ts.map +0 -1
- package/dist/src/xhsc/cluster/XHSCWorker.js +0 -192
- package/dist/src/xhsc/cluster/XHSCWorker.js.map +0 -1
- package/dist/src/xhsc/cmdr.d.ts +0 -9
- package/dist/src/xhsc/cmdr.d.ts.map +0 -1
- package/dist/src/xhsc/cmdr.js +0 -2
- package/dist/src/xhsc/cmdr.js.map +0 -1
- package/dist/src/xhsc/fs/FSArchive.d.ts +0 -55
- package/dist/src/xhsc/fs/FSArchive.d.ts.map +0 -1
- package/dist/src/xhsc/fs/FSArchive.js +0 -66
- package/dist/src/xhsc/fs/FSArchive.js.map +0 -1
- package/dist/src/xhsc/fs/FSBase.d.ts +0 -14
- package/dist/src/xhsc/fs/FSBase.d.ts.map +0 -1
- package/dist/src/xhsc/fs/FSBase.js +0 -15
- package/dist/src/xhsc/fs/FSBase.js.map +0 -1
- package/dist/src/xhsc/fs/FSCore.d.ts +0 -417
- package/dist/src/xhsc/fs/FSCore.d.ts.map +0 -1
- package/dist/src/xhsc/fs/FSCore.js +0 -522
- package/dist/src/xhsc/fs/FSCore.js.map +0 -1
- package/dist/src/xhsc/fs/FSExtended.d.ts +0 -212
- package/dist/src/xhsc/fs/FSExtended.d.ts.map +0 -1
- package/dist/src/xhsc/fs/FSExtended.js +0 -303
- package/dist/src/xhsc/fs/FSExtended.js.map +0 -1
- package/dist/src/xhsc/fs/FSHelpers.d.ts +0 -383
- package/dist/src/xhsc/fs/FSHelpers.d.ts.map +0 -1
- package/dist/src/xhsc/fs/FSHelpers.js +0 -501
- package/dist/src/xhsc/fs/FSHelpers.js.map +0 -1
- package/dist/src/xhsc/fs/FSSearch.d.ts +0 -77
- package/dist/src/xhsc/fs/FSSearch.d.ts.map +0 -1
- package/dist/src/xhsc/fs/FSSearch.js +0 -95
- package/dist/src/xhsc/fs/FSSearch.js.map +0 -1
- package/dist/src/xhsc/fs/FSWatch.d.ts +0 -107
- package/dist/src/xhsc/fs/FSWatch.d.ts.map +0 -1
- package/dist/src/xhsc/fs/FSWatch.js +0 -136
- package/dist/src/xhsc/fs/FSWatch.js.map +0 -1
- package/dist/src/xhsc/fs/FileHandle.d.ts +0 -42
- package/dist/src/xhsc/fs/FileHandle.d.ts.map +0 -1
- package/dist/src/xhsc/fs/FileHandle.js +0 -107
- package/dist/src/xhsc/fs/FileHandle.js.map +0 -1
- package/dist/src/xhsc/ipc/XHSCDirectIPC.d.ts +0 -24
- package/dist/src/xhsc/ipc/XHSCDirectIPC.d.ts.map +0 -1
- package/dist/src/xhsc/ipc/XHSCDirectIPC.js +0 -110
- package/dist/src/xhsc/ipc/XHSCDirectIPC.js.map +0 -1
- package/dist/src/xhsc/types.d.ts +0 -268
- package/dist/src/xhsc/types.d.ts.map +0 -1
- package/dist/src/xhsc/types.js +0 -8
- package/dist/src/xhsc/types.js.map +0 -1
- package/dist/src/xhsc/utils/ArrayUtils.d.ts +0 -38
- package/dist/src/xhsc/utils/ArrayUtils.d.ts.map +0 -1
- package/dist/src/xhsc/utils/ArrayUtils.js +0 -63
- package/dist/src/xhsc/utils/ArrayUtils.js.map +0 -1
- package/dist/src/xhsc/utils/AsyncUtils.d.ts +0 -437
- package/dist/src/xhsc/utils/AsyncUtils.d.ts.map +0 -1
- package/dist/src/xhsc/utils/AsyncUtils.js +0 -578
- package/dist/src/xhsc/utils/AsyncUtils.js.map +0 -1
- package/dist/src/xhsc/utils/DateUtils.d.ts +0 -649
- package/dist/src/xhsc/utils/DateUtils.d.ts.map +0 -1
- package/dist/src/xhsc/utils/DateUtils.js +0 -956
- package/dist/src/xhsc/utils/DateUtils.js.map +0 -1
- package/dist/src/xhsc/utils/FunctionUtils.d.ts +0 -15
- package/dist/src/xhsc/utils/FunctionUtils.d.ts.map +0 -1
- package/dist/src/xhsc/utils/FunctionUtils.js +0 -25
- package/dist/src/xhsc/utils/FunctionUtils.js.map +0 -1
- package/dist/src/xhsc/utils/IdUtils.d.ts +0 -14
- package/dist/src/xhsc/utils/IdUtils.d.ts.map +0 -1
- package/dist/src/xhsc/utils/IdUtils.js +0 -17
- package/dist/src/xhsc/utils/IdUtils.js.map +0 -1
- package/dist/src/xhsc/utils/NumberUtils.d.ts +0 -59
- package/dist/src/xhsc/utils/NumberUtils.d.ts.map +0 -1
- package/dist/src/xhsc/utils/NumberUtils.js +0 -75
- package/dist/src/xhsc/utils/NumberUtils.js.map +0 -1
- package/dist/src/xhsc/utils/ObjectUtils.d.ts +0 -96
- package/dist/src/xhsc/utils/ObjectUtils.d.ts.map +0 -1
- package/dist/src/xhsc/utils/ObjectUtils.js +0 -136
- package/dist/src/xhsc/utils/ObjectUtils.js.map +0 -1
- package/dist/src/xhsc/utils/StringUtils.d.ts +0 -105
- package/dist/src/xhsc/utils/StringUtils.d.ts.map +0 -1
- package/dist/src/xhsc/utils/StringUtils.js +0 -141
- package/dist/src/xhsc/utils/StringUtils.js.map +0 -1
- package/dist/src/xhsc/utils/ValidationUtils.d.ts +0 -33
- package/dist/src/xhsc/utils/ValidationUtils.d.ts.map +0 -1
- package/dist/src/xhsc/utils/ValidationUtils.js +0 -45
- package/dist/src/xhsc/utils/ValidationUtils.js.map +0 -1
- package/dist/src/xhsc/utils/deepReadonlyProxy.d.ts +0 -48
- package/dist/src/xhsc/utils/deepReadonlyProxy.d.ts.map +0 -1
- package/dist/src/xhsc/utils/deepReadonlyProxy.js +0 -108
- package/dist/src/xhsc/utils/deepReadonlyProxy.js.map +0 -1
- package/dist/src/xhsc.d.ts +0 -41
- package/dist/src/xhsc.d.ts.map +0 -1
- package/dist/src/xhsc.js +0 -231
- package/dist/src/xhsc.js.map +0 -1
- package/dist/test-toolbox.d.ts +0 -2
- package/dist/test-toolbox.d.ts.map +0 -1
- package/dist/test-toolbox.js +0 -37
- package/dist/test-toolbox.js.map +0 -1
- package/dist/test_finish.d.ts +0 -2
- package/dist/test_finish.d.ts.map +0 -1
- package/dist/test_finish.js +0 -10
- package/dist/test_finish.js.map +0 -1
- package/dist/test_regex.d.ts +0 -2
- package/dist/test_regex.d.ts.map +0 -1
- package/dist/test_regex.js +0 -20
- package/dist/test_regex.js.map +0 -1
- package/dist/test_server.d.ts +0 -2
- package/dist/test_server.d.ts.map +0 -1
- package/dist/test_server.js +0 -23
- package/dist/test_server.js.map +0 -1
|
@@ -1,1026 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* XyPriss Security Middleware
|
|
3
|
-
* Comprehensive security middleware using BuiltInMiddleware as single source of truth
|
|
4
|
-
*/
|
|
5
|
-
import { Random } from "xypriss-security";
|
|
6
|
-
import { SQLInjectionDetector, PathTraversalDetector, CommandInjectionDetector, XXEProtector, LDAPInjectionDetector, MobileOnlyProtector, } from "./built-in/security";
|
|
7
|
-
import { Logger } from "../shared/logger/Logger";
|
|
8
|
-
import { BuiltInMiddleware } from "./built-in/BuiltInMiddleware";
|
|
9
|
-
import xss from "xss"; // Used for custom XSS sanitization logic
|
|
10
|
-
/**
|
|
11
|
-
* Security middleware class implementing comprehensive protection
|
|
12
|
-
* Implements SecurityConfig interface to ensure type safety
|
|
13
|
-
*/
|
|
14
|
-
export class SecurityMiddleware {
|
|
15
|
-
constructor(config = {}, logger) {
|
|
16
|
-
// Initialize logger (create default if not provided)
|
|
17
|
-
this.logger =
|
|
18
|
-
logger ||
|
|
19
|
-
new Logger({
|
|
20
|
-
enabled: true,
|
|
21
|
-
level: "debug",
|
|
22
|
-
components: { security: true },
|
|
23
|
-
types: { debug: true },
|
|
24
|
-
});
|
|
25
|
-
// Set defaults and merge with provided config
|
|
26
|
-
this.level = config.level || "enhanced";
|
|
27
|
-
this._ignore = config._ignore || [];
|
|
28
|
-
this._ignoreAll = config._ignoreAll || [];
|
|
29
|
-
this.csrf = config.csrf !== false ? config.csrf || true : false;
|
|
30
|
-
this.helmet = config.helmet !== false ? config.helmet || true : false;
|
|
31
|
-
this.xss = config.xss !== false ? config.xss || true : false;
|
|
32
|
-
this.sqlInjection =
|
|
33
|
-
config.sqlInjection !== false ? config.sqlInjection || true : false;
|
|
34
|
-
this.pathTraversal =
|
|
35
|
-
config.pathTraversal !== false
|
|
36
|
-
? config.pathTraversal || false
|
|
37
|
-
: false;
|
|
38
|
-
this.commandInjection =
|
|
39
|
-
config.commandInjection !== false
|
|
40
|
-
? config.commandInjection || false
|
|
41
|
-
: false;
|
|
42
|
-
this.xxe = config.xxe !== false ? config.xxe || false : false;
|
|
43
|
-
this.ldapInjection =
|
|
44
|
-
config.ldapInjection !== false
|
|
45
|
-
? config.ldapInjection || false
|
|
46
|
-
: false;
|
|
47
|
-
this.bruteForce =
|
|
48
|
-
config.bruteForce !== false ? config.bruteForce || true : false;
|
|
49
|
-
this.rateLimit =
|
|
50
|
-
config.rateLimit !== false ? config.rateLimit || true : false;
|
|
51
|
-
// If rateLimit is explicitly configured as an object, disable bruteForce to avoid conflicts
|
|
52
|
-
if (typeof config.rateLimit === "object" && config.rateLimit !== null) {
|
|
53
|
-
this.bruteForce = false;
|
|
54
|
-
this.logger.debug("security", "Brute force protection disabled because rateLimit is explicitly configured");
|
|
55
|
-
}
|
|
56
|
-
this.cors = config.cors !== false ? config.cors || true : false;
|
|
57
|
-
this.compression =
|
|
58
|
-
config.compression !== false ? config.compression || true : false;
|
|
59
|
-
this.hpp = config.hpp !== false ? config.hpp || true : false;
|
|
60
|
-
this.mongoSanitize =
|
|
61
|
-
config.mongoSanitize !== false
|
|
62
|
-
? config.mongoSanitize || true
|
|
63
|
-
: false;
|
|
64
|
-
this.slowDown =
|
|
65
|
-
config.slowDown !== false ? config.slowDown || true : false;
|
|
66
|
-
this.browserOnly =
|
|
67
|
-
config.browserOnly !== false ? config.browserOnly || false : false;
|
|
68
|
-
this.terminalOnly =
|
|
69
|
-
config.terminalOnly !== false
|
|
70
|
-
? config.terminalOnly || false
|
|
71
|
-
: false;
|
|
72
|
-
this.requestSignature =
|
|
73
|
-
config.requestSignature !== false
|
|
74
|
-
? config.requestSignature || false
|
|
75
|
-
: false;
|
|
76
|
-
this.mobileOnly =
|
|
77
|
-
config.mobileOnly !== false ? config.mobileOnly || false : false;
|
|
78
|
-
this.deviceAccess = config.deviceAccess;
|
|
79
|
-
// If deviceAccess is provided, override individual settings
|
|
80
|
-
if (this.deviceAccess) {
|
|
81
|
-
this.browserOnly = this.deviceAccess.browserOnly || false;
|
|
82
|
-
this.terminalOnly = this.deviceAccess.terminalOnly || false;
|
|
83
|
-
this.mobileOnly = this.deviceAccess.mobileOnly || false;
|
|
84
|
-
}
|
|
85
|
-
// Validate device access configuration
|
|
86
|
-
this.validateDeviceAccessConfig();
|
|
87
|
-
this.encryption = {
|
|
88
|
-
algorithm: "AES-256-GCM",
|
|
89
|
-
keySize: 32,
|
|
90
|
-
...config.encryption,
|
|
91
|
-
};
|
|
92
|
-
this.authentication = {
|
|
93
|
-
jwt: {
|
|
94
|
-
secret: config.authentication?.jwt?.secret ||
|
|
95
|
-
Random.generateSecureToken(32).toString("hex"),
|
|
96
|
-
expiresIn: config.authentication?.jwt?.expiresIn || "1h",
|
|
97
|
-
algorithm: config.authentication?.jwt?.algorithm || "HS256",
|
|
98
|
-
},
|
|
99
|
-
session: {
|
|
100
|
-
secret: config.authentication?.session?.secret ||
|
|
101
|
-
Random.generateSecureToken(32).toString("hex"),
|
|
102
|
-
name: config.authentication?.session?.name ||
|
|
103
|
-
"xypriss.nehonix.sid",
|
|
104
|
-
cookie: {
|
|
105
|
-
maxAge: 24 * 60 * 60 * 1000, // 24 hours
|
|
106
|
-
secure: true,
|
|
107
|
-
httpOnly: true,
|
|
108
|
-
sameSite: "strict",
|
|
109
|
-
...config.authentication?.session?.cookie,
|
|
110
|
-
},
|
|
111
|
-
},
|
|
112
|
-
...config.authentication,
|
|
113
|
-
};
|
|
114
|
-
// Store route configuration
|
|
115
|
-
this.routeConfig = config.routeConfig;
|
|
116
|
-
// Initialize security detectors
|
|
117
|
-
this.sqlInjectionDetector = new SQLInjectionDetector({
|
|
118
|
-
strictMode: typeof this.sqlInjection === "object"
|
|
119
|
-
? this.sqlInjection.strictMode
|
|
120
|
-
: false,
|
|
121
|
-
contextualAnalysis: typeof this.sqlInjection === "object"
|
|
122
|
-
? this.sqlInjection.contextualAnalysis
|
|
123
|
-
: true,
|
|
124
|
-
logAttempts: typeof this.sqlInjection === "object"
|
|
125
|
-
? this.sqlInjection.logAttempts
|
|
126
|
-
: true,
|
|
127
|
-
falsePositiveThreshold: typeof this.sqlInjection === "object"
|
|
128
|
-
? this.sqlInjection.falsePositiveThreshold
|
|
129
|
-
: 0.6,
|
|
130
|
-
maxLength: typeof this.sqlInjection === "object"
|
|
131
|
-
? this.sqlInjection.maxLength
|
|
132
|
-
: 1000,
|
|
133
|
-
});
|
|
134
|
-
this.pathTraversalDetector = new PathTraversalDetector({
|
|
135
|
-
enabled: !!this.pathTraversal,
|
|
136
|
-
strictMode: typeof this.pathTraversal === "object"
|
|
137
|
-
? this.pathTraversal.strictMode
|
|
138
|
-
: false,
|
|
139
|
-
logAttempts: typeof this.pathTraversal === "object"
|
|
140
|
-
? this.pathTraversal.logAttempts
|
|
141
|
-
: true,
|
|
142
|
-
blockOnDetection: typeof this.pathTraversal === "object"
|
|
143
|
-
? this.pathTraversal.blockOnDetection
|
|
144
|
-
: true,
|
|
145
|
-
allowedPaths: typeof this.pathTraversal === "object"
|
|
146
|
-
? this.pathTraversal.allowedPaths
|
|
147
|
-
: [],
|
|
148
|
-
allowedExtensions: typeof this.pathTraversal === "object"
|
|
149
|
-
? this.pathTraversal.allowedExtensions
|
|
150
|
-
: [".jpg", ".png", ".pdf", ".txt"],
|
|
151
|
-
maxDepth: typeof this.pathTraversal === "object"
|
|
152
|
-
? this.pathTraversal.maxDepth
|
|
153
|
-
: 3,
|
|
154
|
-
falsePositiveThreshold: typeof this.pathTraversal === "object"
|
|
155
|
-
? this.pathTraversal.falsePositiveThreshold
|
|
156
|
-
: 0.6,
|
|
157
|
-
});
|
|
158
|
-
this.commandInjectionDetector = new CommandInjectionDetector({
|
|
159
|
-
enabled: !!this.commandInjection,
|
|
160
|
-
strictMode: typeof this.commandInjection === "object"
|
|
161
|
-
? this.commandInjection.strictMode
|
|
162
|
-
: false,
|
|
163
|
-
logAttempts: typeof this.commandInjection === "object"
|
|
164
|
-
? this.commandInjection.logAttempts
|
|
165
|
-
: true,
|
|
166
|
-
blockOnDetection: typeof this.commandInjection === "object"
|
|
167
|
-
? this.commandInjection.blockOnDetection
|
|
168
|
-
: true,
|
|
169
|
-
contextualAnalysis: typeof this.commandInjection === "object"
|
|
170
|
-
? this.commandInjection.contextualAnalysis
|
|
171
|
-
: true,
|
|
172
|
-
allowedCommands: typeof this.commandInjection === "object"
|
|
173
|
-
? this.commandInjection.allowedCommands
|
|
174
|
-
: [],
|
|
175
|
-
falsePositiveThreshold: typeof this.commandInjection === "object"
|
|
176
|
-
? this.commandInjection.falsePositiveThreshold
|
|
177
|
-
: 0.7,
|
|
178
|
-
});
|
|
179
|
-
this.xxeProtector = new XXEProtector({
|
|
180
|
-
enabled: !!this.xxe,
|
|
181
|
-
strictMode: typeof this.xxe === "object" ? this.xxe.strictMode : true,
|
|
182
|
-
logAttempts: typeof this.xxe === "object" ? this.xxe.logAttempts : true,
|
|
183
|
-
blockOnDetection: typeof this.xxe === "object" ? this.xxe.blockOnDetection : true,
|
|
184
|
-
allowDTD: typeof this.xxe === "object" ? this.xxe.allowDTD : false,
|
|
185
|
-
allowExternalEntities: typeof this.xxe === "object"
|
|
186
|
-
? this.xxe.allowExternalEntities
|
|
187
|
-
: false,
|
|
188
|
-
maxEntityExpansions: typeof this.xxe === "object" ? this.xxe.maxEntityExpansions : 0,
|
|
189
|
-
});
|
|
190
|
-
this.ldapInjectionDetector = new LDAPInjectionDetector({
|
|
191
|
-
enabled: !!this.ldapInjection,
|
|
192
|
-
strictMode: typeof this.ldapInjection === "object"
|
|
193
|
-
? this.ldapInjection.strictMode
|
|
194
|
-
: false,
|
|
195
|
-
logAttempts: typeof this.ldapInjection === "object"
|
|
196
|
-
? this.ldapInjection.logAttempts
|
|
197
|
-
: true,
|
|
198
|
-
blockOnDetection: typeof this.ldapInjection === "object"
|
|
199
|
-
? this.ldapInjection.blockOnDetection
|
|
200
|
-
: true,
|
|
201
|
-
falsePositiveThreshold: typeof this.ldapInjection === "object"
|
|
202
|
-
? this.ldapInjection.falsePositiveThreshold
|
|
203
|
-
: 0.6,
|
|
204
|
-
});
|
|
205
|
-
// Initialize all middleware instances
|
|
206
|
-
this.initializeMiddleware();
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Initialize all security middleware instances using BuiltInMiddleware
|
|
210
|
-
* BuiltInMiddleware is the single source of truth for all middleware wrappers
|
|
211
|
-
*/
|
|
212
|
-
initializeMiddleware() {
|
|
213
|
-
// Helmet for security headers
|
|
214
|
-
if (this.helmet) {
|
|
215
|
-
const helmetConfig = typeof this.helmet === "object" ? this.helmet : {};
|
|
216
|
-
// Prepare CSP configuration with proper merging
|
|
217
|
-
let cspConfig = false;
|
|
218
|
-
if (this.level === "maximum") {
|
|
219
|
-
cspConfig = {
|
|
220
|
-
directives: {
|
|
221
|
-
defaultSrc: ["'self'"],
|
|
222
|
-
styleSrc: ["'self'", "'unsafe-inline'"],
|
|
223
|
-
scriptSrc: ["'self'"],
|
|
224
|
-
imgSrc: ["'self'", "data:", "https:"],
|
|
225
|
-
},
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
else if (helmetConfig.contentSecurityPolicy) {
|
|
229
|
-
// Merge user CSP config with defaults from BuiltInMiddleware
|
|
230
|
-
cspConfig = helmetConfig.contentSecurityPolicy; // BuiltInMiddleware will handle merging
|
|
231
|
-
}
|
|
232
|
-
this.logger.debug("security", "Final cspConfig:", cspConfig);
|
|
233
|
-
this.helmetMiddleware = BuiltInMiddleware.helmet({
|
|
234
|
-
contentSecurityPolicy: cspConfig,
|
|
235
|
-
hsts: this.level !== "basic" || helmetConfig.hsts
|
|
236
|
-
? helmetConfig.hsts
|
|
237
|
-
: undefined,
|
|
238
|
-
crossOriginEmbedderPolicy: this.level === "maximum",
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
// CORS middleware - use config if provided, otherwise use defaults
|
|
242
|
-
if (this.cors !== false) {
|
|
243
|
-
const corsConfig = typeof this.cors === "object"
|
|
244
|
-
? this.cors
|
|
245
|
-
: {
|
|
246
|
-
origin: this.level === "maximum" ? false : true,
|
|
247
|
-
credentials: true,
|
|
248
|
-
optionsSuccessStatus: 200,
|
|
249
|
-
};
|
|
250
|
-
this.logger.debug("security", `Initializing CORS with config: ${JSON.stringify(corsConfig)}`);
|
|
251
|
-
this.corsMiddleware = BuiltInMiddleware.cors(corsConfig);
|
|
252
|
-
}
|
|
253
|
-
// General rate limiting (separate from brute force protection)
|
|
254
|
-
if (this.rateLimit) {
|
|
255
|
-
const rateLimitConfig = typeof this.rateLimit === "object" ? this.rateLimit : {};
|
|
256
|
-
const maxRequests = rateLimitConfig.max || 100; // Default 100 requests
|
|
257
|
-
this.rateLimitMiddleware = BuiltInMiddleware.rateLimit({
|
|
258
|
-
windowMs: rateLimitConfig.windowMs || 15 * 60 * 1000, // 15 minutes
|
|
259
|
-
max: maxRequests,
|
|
260
|
-
message: rateLimitConfig.message, // BuiltInMiddleware will handle format conversion
|
|
261
|
-
standardHeaders: rateLimitConfig.standardHeaders !== false,
|
|
262
|
-
legacyHeaders: false,
|
|
263
|
-
skip: (req, res) => {
|
|
264
|
-
// Custom skip function
|
|
265
|
-
if (typeof rateLimitConfig.skip === "function") {
|
|
266
|
-
// If a skip function is provided, it takes full control
|
|
267
|
-
return rateLimitConfig.skip(req, res);
|
|
268
|
-
}
|
|
269
|
-
// Excluded paths (only used if no skip function is provided)
|
|
270
|
-
if (rateLimitConfig.excludePaths &&
|
|
271
|
-
Array.isArray(rateLimitConfig.excludePaths)) {
|
|
272
|
-
return rateLimitConfig.excludePaths.some((p) => {
|
|
273
|
-
if (typeof p === "string") {
|
|
274
|
-
return (req.path === p || req.path.startsWith(p));
|
|
275
|
-
}
|
|
276
|
-
if (p instanceof RegExp) {
|
|
277
|
-
return p.test(req.path);
|
|
278
|
-
}
|
|
279
|
-
return false;
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
return false;
|
|
283
|
-
},
|
|
284
|
-
});
|
|
285
|
-
this.logger.debug("security", `General rate limiting initialized with max: ${maxRequests} requests per ${Math.ceil((rateLimitConfig.windowMs || 15 * 60 * 1000) / 1000)}s window`);
|
|
286
|
-
}
|
|
287
|
-
// CSRF protection using BuiltInMiddleware
|
|
288
|
-
if (this.csrf) {
|
|
289
|
-
this.logger.debug("security", "Initializing CSRF protection");
|
|
290
|
-
const csrfConfig = typeof this.csrf === "object" ? this.csrf : {};
|
|
291
|
-
this.csrfMiddleware = BuiltInMiddleware.csrf({
|
|
292
|
-
getSecret: (req) => this.authentication.session?.secret ||
|
|
293
|
-
"ac934dfcffc9e037b6921b6d4e874e788bfba7c5f48d17332ef92c9c67450000",
|
|
294
|
-
getSessionIdentifier: (req) => req.session?.id,
|
|
295
|
-
cookieName: csrfConfig.cookieName || "__Host-csrf-token",
|
|
296
|
-
cookieOptions: {
|
|
297
|
-
httpOnly: true,
|
|
298
|
-
sameSite: "strict",
|
|
299
|
-
secure: process.env.NODE_ENV === "production",
|
|
300
|
-
maxAge: 24 * 60 * 60 * 1000, // 24 hours
|
|
301
|
-
...(csrfConfig.cookieOptions || {}),
|
|
302
|
-
},
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
this.logger.debug("security", "CSRF protection initialized");
|
|
306
|
-
// Browser-only protection
|
|
307
|
-
if (this.isBrowserOnlyEnabled()) {
|
|
308
|
-
this.logger.debug("security", "Initializing browser-only protection");
|
|
309
|
-
const browserOnlyConfig = typeof this.browserOnly === "object" ? this.browserOnly : {};
|
|
310
|
-
this.browserOnlyMiddleware =
|
|
311
|
-
BuiltInMiddleware.browserOnly(browserOnlyConfig);
|
|
312
|
-
}
|
|
313
|
-
// Terminal-only protection
|
|
314
|
-
if (this.isTerminalOnlyEnabled()) {
|
|
315
|
-
const terminalOnlyConfig = typeof this.terminalOnly === "object" ? this.terminalOnly : {};
|
|
316
|
-
this.terminalOnlyMiddleware =
|
|
317
|
-
BuiltInMiddleware.terminalOnly(terminalOnlyConfig);
|
|
318
|
-
}
|
|
319
|
-
// Mobile-only protection
|
|
320
|
-
if (this.isMobileOnlyEnabled()) {
|
|
321
|
-
const mobileOnlyConfig = typeof this.mobileOnly === "object" ? this.mobileOnly : {};
|
|
322
|
-
this.mobileOnlyMiddleware =
|
|
323
|
-
BuiltInMiddleware.mobileOnly(mobileOnlyConfig);
|
|
324
|
-
// Also create the protector instance for mobile detection
|
|
325
|
-
this.mobileOnlyProtector = new MobileOnlyProtector(mobileOnlyConfig, this.logger);
|
|
326
|
-
}
|
|
327
|
-
// Request signature protection (API authentication)
|
|
328
|
-
if (this.requestSignature) {
|
|
329
|
-
const requestSignatureConfig = typeof this.requestSignature === "object" &&
|
|
330
|
-
this.requestSignature !== null
|
|
331
|
-
? this.requestSignature
|
|
332
|
-
: { secret: "default-secret" }; // This will be overridden by user config
|
|
333
|
-
this.requestSignatureMiddleware =
|
|
334
|
-
BuiltInMiddleware.requestSignature(requestSignatureConfig);
|
|
335
|
-
}
|
|
336
|
-
// Compression middleware
|
|
337
|
-
if (this.compression) {
|
|
338
|
-
const compressionConfig = typeof this.compression === "object" ? this.compression : {};
|
|
339
|
-
this.compressionMiddleware = BuiltInMiddleware.compression({
|
|
340
|
-
level: compressionConfig.level || 6,
|
|
341
|
-
threshold: compressionConfig.threshold || 1024,
|
|
342
|
-
filter: compressionConfig.filter,
|
|
343
|
-
});
|
|
344
|
-
}
|
|
345
|
-
// HTTP Parameter Pollution protection
|
|
346
|
-
if (this.hpp) {
|
|
347
|
-
const hppConfig = typeof this.hpp === "object" ? this.hpp : {};
|
|
348
|
-
this.hppMiddleware = BuiltInMiddleware.hpp({
|
|
349
|
-
whitelist: hppConfig.whitelist || ["tags", "categories"],
|
|
350
|
-
checkQuery: hppConfig.checkQuery !== false,
|
|
351
|
-
checkBody: hppConfig.checkBody !== false,
|
|
352
|
-
});
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* Get the main security middleware stack
|
|
357
|
-
* Returns a single middleware function that applies all security measures
|
|
358
|
-
*/
|
|
359
|
-
getMiddleware() {
|
|
360
|
-
return (req, res, next) => {
|
|
361
|
-
this.applySecurityStack(req, res, next);
|
|
362
|
-
};
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* Apply all security middleware in the correct order
|
|
366
|
-
*/
|
|
367
|
-
applySecurityStack(req, res, next) {
|
|
368
|
-
this.logger.debug("security", "Starting security middleware stack");
|
|
369
|
-
const middlewareStack = [];
|
|
370
|
-
// 🚨 CRITICAL: Access control middlewares FIRST (before any other processing)
|
|
371
|
-
// These must run before route resolution to block unwanted requests
|
|
372
|
-
// Handle device access controls
|
|
373
|
-
const browserEnabled = this.isBrowserOnlyEnabled();
|
|
374
|
-
const terminalEnabled = this.isTerminalOnlyEnabled();
|
|
375
|
-
const mobileEnabled = this.isMobileOnlyEnabled();
|
|
376
|
-
// 1. Terminal-only protection (blocks browser requests) - cannot be combined with others
|
|
377
|
-
if (terminalEnabled &&
|
|
378
|
-
this.terminalOnlyMiddleware &&
|
|
379
|
-
this.shouldApplySecurityModule(req, undefined, true)) {
|
|
380
|
-
this.logger.debug("security", "Adding terminal-only middleware (FIRST)");
|
|
381
|
-
middlewareStack.push(this.terminalOnlyMiddleware);
|
|
382
|
-
}
|
|
383
|
-
// 2. Browser-only and/or mobile-only protection
|
|
384
|
-
else if ((browserEnabled || mobileEnabled) &&
|
|
385
|
-
this.shouldApplySecurityModule(req, undefined, true)) {
|
|
386
|
-
// Create combined middleware for browser and mobile access control
|
|
387
|
-
const combinedDeviceMiddleware = this.createCombinedDeviceMiddleware(browserEnabled, mobileEnabled);
|
|
388
|
-
if (combinedDeviceMiddleware) {
|
|
389
|
-
this.logger.debug("security", `Adding combined device middleware (browser: ${browserEnabled}, mobile: ${mobileEnabled})`);
|
|
390
|
-
middlewareStack.push(combinedDeviceMiddleware);
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
// 3. Request signature protection (API authentication)
|
|
394
|
-
if (this.requestSignature &&
|
|
395
|
-
this.requestSignatureMiddleware &&
|
|
396
|
-
this.shouldApplySecurityModule(req, undefined, true)) {
|
|
397
|
-
this.logger.debug("security", "Adding request signature middleware (FIRST)");
|
|
398
|
-
middlewareStack.push(this.requestSignatureMiddleware);
|
|
399
|
-
}
|
|
400
|
-
// 4. Compression (should be early but after access control)
|
|
401
|
-
if (this.compression && this.compressionMiddleware) {
|
|
402
|
-
this.logger.debug("security", "Adding compression middleware");
|
|
403
|
-
middlewareStack.push(this.compressionMiddleware);
|
|
404
|
-
}
|
|
405
|
-
// 5. Security headers (Helmet)
|
|
406
|
-
if (this.helmet && this.helmetMiddleware) {
|
|
407
|
-
this.logger.debug("security", "Adding helmet middleware");
|
|
408
|
-
middlewareStack.push(this.helmetMiddleware);
|
|
409
|
-
}
|
|
410
|
-
// 6. CORS
|
|
411
|
-
if (this.cors !== false && this.corsMiddleware) {
|
|
412
|
-
this.logger.debug("security", "Adding CORS middleware");
|
|
413
|
-
middlewareStack.push(this.corsMiddleware);
|
|
414
|
-
}
|
|
415
|
-
// 8. General rate limiting (less strict)
|
|
416
|
-
if (this.rateLimit && this.rateLimitMiddleware) {
|
|
417
|
-
this.logger.debug("security", "Adding general rate limiting middleware");
|
|
418
|
-
middlewareStack.push(this.rateLimitMiddleware);
|
|
419
|
-
}
|
|
420
|
-
// 9. HTTP Parameter Pollution protection
|
|
421
|
-
if (this.hpp && this.hppMiddleware) {
|
|
422
|
-
this.logger.debug("security", "Adding HPP middleware");
|
|
423
|
-
middlewareStack.push(this.hppMiddleware);
|
|
424
|
-
}
|
|
425
|
-
// 13. XSS protection (custom implementation)
|
|
426
|
-
if (this.xss) {
|
|
427
|
-
this.logger.debug("security", "Adding XSS protection middleware");
|
|
428
|
-
middlewareStack.push(this.xssProtection.bind(this));
|
|
429
|
-
}
|
|
430
|
-
// 14. CSRF protection (should be after body parsing)
|
|
431
|
-
if (this.csrf && this.csrfMiddleware) {
|
|
432
|
-
this.logger.debug("security", "Adding CSRF middleware");
|
|
433
|
-
middlewareStack.push(this.csrfMiddleware);
|
|
434
|
-
}
|
|
435
|
-
this.logger.debug("security", `Total middleware in stack: ${middlewareStack.length}`);
|
|
436
|
-
// Execute middleware stack
|
|
437
|
-
this.executeMiddlewareStack(middlewareStack, req, res, next);
|
|
438
|
-
}
|
|
439
|
-
/**
|
|
440
|
-
* Execute middleware stack sequentially with proper async handling
|
|
441
|
-
*/
|
|
442
|
-
executeMiddlewareStack(stack, req, res, finalNext) {
|
|
443
|
-
let index = 0;
|
|
444
|
-
let nextCalled = false;
|
|
445
|
-
this.logger.debug("security", `Executing middleware stack with ${stack.length} middleware`);
|
|
446
|
-
const next = (error) => {
|
|
447
|
-
if (nextCalled) {
|
|
448
|
-
this.logger.debug("security", "next() already called, ignoring duplicate call");
|
|
449
|
-
return;
|
|
450
|
-
}
|
|
451
|
-
if (error) {
|
|
452
|
-
nextCalled = true;
|
|
453
|
-
this.logger.debug("security", `Error in middleware at index ${index - 1}:`, error);
|
|
454
|
-
return finalNext(error);
|
|
455
|
-
}
|
|
456
|
-
if (index >= stack.length) {
|
|
457
|
-
nextCalled = true;
|
|
458
|
-
this.logger.debug("security", "All middleware completed, calling final next");
|
|
459
|
-
return finalNext();
|
|
460
|
-
}
|
|
461
|
-
const currentIndex = index;
|
|
462
|
-
this.logger.debug("security", `Executing middleware ${currentIndex + 1}/${stack.length}`);
|
|
463
|
-
const middleware = stack[index++];
|
|
464
|
-
try {
|
|
465
|
-
// Set a timeout to detect if middleware doesn't call next()
|
|
466
|
-
let timeoutId = null;
|
|
467
|
-
let middlewareCompleted = false;
|
|
468
|
-
const middlewareNext = (err) => {
|
|
469
|
-
if (middlewareCompleted)
|
|
470
|
-
return;
|
|
471
|
-
middlewareCompleted = true;
|
|
472
|
-
if (timeoutId) {
|
|
473
|
-
clearTimeout(timeoutId);
|
|
474
|
-
}
|
|
475
|
-
this.logger.debug("security", `Middleware ${currentIndex + 1} completed`);
|
|
476
|
-
next(err);
|
|
477
|
-
};
|
|
478
|
-
// Set timeout to detect hanging middleware
|
|
479
|
-
timeoutId = setTimeout(() => {
|
|
480
|
-
if (!middlewareCompleted) {
|
|
481
|
-
// If headers were already sent, it means the middleware blocked the request
|
|
482
|
-
// and sent a response, so we should NOT continue the chain.
|
|
483
|
-
if (res.headersSent) {
|
|
484
|
-
this.logger.debug("security", `Middleware ${currentIndex + 1} blocked the request (headers sent), stopping chain`);
|
|
485
|
-
middlewareCompleted = true;
|
|
486
|
-
return;
|
|
487
|
-
}
|
|
488
|
-
this.logger.debug("security", `Middleware ${currentIndex + 1} timed out, continuing anyway`);
|
|
489
|
-
middlewareCompleted = true;
|
|
490
|
-
next();
|
|
491
|
-
}
|
|
492
|
-
}, 100); // 100ms timeout
|
|
493
|
-
// Execute the middleware
|
|
494
|
-
middleware(req, res, middlewareNext);
|
|
495
|
-
}
|
|
496
|
-
catch (error) {
|
|
497
|
-
this.logger.debug("security", `Exception in middleware at index ${currentIndex}:`, error);
|
|
498
|
-
finalNext(error);
|
|
499
|
-
}
|
|
500
|
-
};
|
|
501
|
-
// Start the middleware chain
|
|
502
|
-
this.logger.debug("security", "Starting middleware chain");
|
|
503
|
-
next();
|
|
504
|
-
}
|
|
505
|
-
/**
|
|
506
|
-
* Custom XSS protection middleware
|
|
507
|
-
*/
|
|
508
|
-
xssProtection(req, res, next) {
|
|
509
|
-
this.logger.debug("security", `Running XSS protection on ${req.path}`);
|
|
510
|
-
let maliciousContentDetected = false;
|
|
511
|
-
const detectedThreats = [];
|
|
512
|
-
// Check and sanitize request body
|
|
513
|
-
if (req.body && typeof req.body === "object") {
|
|
514
|
-
const { sanitized, threats } = this.sanitizeObjectWithDetection(req.body, "", req);
|
|
515
|
-
if (threats.length > 0) {
|
|
516
|
-
maliciousContentDetected = true;
|
|
517
|
-
threats.forEach((t) => {
|
|
518
|
-
detectedThreats.push(...t.types.map((type) => `body.${t.path}:${type}`));
|
|
519
|
-
});
|
|
520
|
-
}
|
|
521
|
-
try {
|
|
522
|
-
req.body = sanitized;
|
|
523
|
-
}
|
|
524
|
-
catch (error) {
|
|
525
|
-
// Handle readonly property - create new object
|
|
526
|
-
Object.defineProperty(req, "body", {
|
|
527
|
-
value: sanitized,
|
|
528
|
-
writable: true,
|
|
529
|
-
configurable: true,
|
|
530
|
-
});
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
// Check and sanitize query parameters
|
|
534
|
-
if (req.query && typeof req.query === "object") {
|
|
535
|
-
const { sanitized, threats } = this.sanitizeObjectWithDetection(req.query, "", req);
|
|
536
|
-
if (threats.length > 0) {
|
|
537
|
-
maliciousContentDetected = true;
|
|
538
|
-
threats.forEach((t) => {
|
|
539
|
-
detectedThreats.push(...t.types.map((type) => `query.${t.path}:${type}`));
|
|
540
|
-
});
|
|
541
|
-
}
|
|
542
|
-
try {
|
|
543
|
-
req.query = sanitized;
|
|
544
|
-
}
|
|
545
|
-
catch (error) {
|
|
546
|
-
// Handle readonly property - create new object
|
|
547
|
-
Object.defineProperty(req, "query", {
|
|
548
|
-
value: sanitized,
|
|
549
|
-
writable: true,
|
|
550
|
-
configurable: true,
|
|
551
|
-
});
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
|
-
// Check and sanitize URL parameters
|
|
555
|
-
if (req.params && typeof req.params === "object") {
|
|
556
|
-
const { sanitized, threats } = this.sanitizeObjectWithDetection(req.params, "", req);
|
|
557
|
-
if (threats.length > 0) {
|
|
558
|
-
maliciousContentDetected = true;
|
|
559
|
-
threats.forEach((t) => {
|
|
560
|
-
detectedThreats.push(...t.types.map((type) => `params.${t.path}:${type}`));
|
|
561
|
-
});
|
|
562
|
-
}
|
|
563
|
-
try {
|
|
564
|
-
req.params = sanitized;
|
|
565
|
-
}
|
|
566
|
-
catch (error) {
|
|
567
|
-
// Handle readonly property - create new object
|
|
568
|
-
Object.defineProperty(req, "params", {
|
|
569
|
-
value: sanitized,
|
|
570
|
-
writable: true,
|
|
571
|
-
configurable: true,
|
|
572
|
-
});
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
// Block request if malicious content was detected
|
|
576
|
-
if (maliciousContentDetected) {
|
|
577
|
-
this.logger.warn("security", `Security threat blocked from ${req.ip}. Threats detected: ${detectedThreats.join(", ")}`);
|
|
578
|
-
// Determine primary attack type
|
|
579
|
-
let primaryType = "Security Attack";
|
|
580
|
-
if (detectedThreats.some((t) => t.includes("SQL Injection")))
|
|
581
|
-
primaryType = "SQL Injection";
|
|
582
|
-
else if (detectedThreats.some((t) => t.includes("XSS")))
|
|
583
|
-
primaryType = "XSS";
|
|
584
|
-
else if (detectedThreats.some((t) => t.includes("Path Traversal")))
|
|
585
|
-
primaryType = "Path Traversal";
|
|
586
|
-
else if (detectedThreats.some((t) => t.includes("Command Injection")))
|
|
587
|
-
primaryType = "Command Injection";
|
|
588
|
-
else if (detectedThreats.some((t) => t.includes("XXE")))
|
|
589
|
-
primaryType = "XXE Attack";
|
|
590
|
-
else if (detectedThreats.some((t) => t.includes("LDAP")))
|
|
591
|
-
primaryType = "LDAP Injection";
|
|
592
|
-
// Trigger security attack hook
|
|
593
|
-
this.reportAttack(req, res, {
|
|
594
|
-
type: primaryType,
|
|
595
|
-
threats: detectedThreats,
|
|
596
|
-
ip: req.ip,
|
|
597
|
-
path: req.path,
|
|
598
|
-
});
|
|
599
|
-
res.status(400).json({
|
|
600
|
-
error: "Malicious content detected",
|
|
601
|
-
message: `Request blocked due to potential ${primaryType} attack`,
|
|
602
|
-
threats: detectedThreats,
|
|
603
|
-
timestamp: new Date().toISOString(),
|
|
604
|
-
});
|
|
605
|
-
return; // Don't call next() - block the request
|
|
606
|
-
}
|
|
607
|
-
next();
|
|
608
|
-
}
|
|
609
|
-
/**
|
|
610
|
-
* Recursively sanitize object properties
|
|
611
|
-
*/
|
|
612
|
-
sanitizeObject(obj) {
|
|
613
|
-
if (typeof obj === "string") {
|
|
614
|
-
return xss(obj);
|
|
615
|
-
}
|
|
616
|
-
if (Array.isArray(obj)) {
|
|
617
|
-
return obj.map((item) => this.sanitizeObject(item));
|
|
618
|
-
}
|
|
619
|
-
if (obj && typeof obj === "object") {
|
|
620
|
-
const sanitized = {};
|
|
621
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
622
|
-
sanitized[key] = this.sanitizeObject(value);
|
|
623
|
-
}
|
|
624
|
-
return sanitized;
|
|
625
|
-
}
|
|
626
|
-
return obj;
|
|
627
|
-
}
|
|
628
|
-
/**
|
|
629
|
-
* Sanitize object and detect threats
|
|
630
|
-
*/
|
|
631
|
-
sanitizeObjectWithDetection(obj, path = "", req) {
|
|
632
|
-
const threats = [];
|
|
633
|
-
const sanitizeWithDetection = (value, currentPath) => {
|
|
634
|
-
if (typeof value === "string") {
|
|
635
|
-
const original = value;
|
|
636
|
-
let sanitized = original;
|
|
637
|
-
let threatDetected = false;
|
|
638
|
-
const detectedPatterns = [];
|
|
639
|
-
// XSS Detection
|
|
640
|
-
if (this.xss &&
|
|
641
|
-
this.shouldApplySecurityModule(req, this.routeConfig?.xss)) {
|
|
642
|
-
const xssSanitized = xss(original);
|
|
643
|
-
if (original !== xssSanitized) {
|
|
644
|
-
threatDetected = true;
|
|
645
|
-
detectedPatterns.push("XSS");
|
|
646
|
-
sanitized = xssSanitized;
|
|
647
|
-
}
|
|
648
|
-
}
|
|
649
|
-
// SQL Injection Detection
|
|
650
|
-
if (this.sqlInjection &&
|
|
651
|
-
this.shouldApplySecurityModule(req, this.routeConfig?.sqlInjection)) {
|
|
652
|
-
const sqlResult = this.sqlInjectionDetector.detect(original, currentPath);
|
|
653
|
-
if (sqlResult.isMalicious) {
|
|
654
|
-
threatDetected = true;
|
|
655
|
-
detectedPatterns.push(`SQL Injection (${sqlResult.riskLevel})`);
|
|
656
|
-
// Use the SQL detector's sanitized version if available
|
|
657
|
-
if (sqlResult.sanitizedInput) {
|
|
658
|
-
sanitized = sqlResult.sanitizedInput;
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
// Path Traversal Detection
|
|
663
|
-
if (this.pathTraversal &&
|
|
664
|
-
this.shouldApplySecurityModule(req, this.routeConfig?.pathTraversal)) {
|
|
665
|
-
const pathResult = this.pathTraversalDetector.detect(original);
|
|
666
|
-
if (pathResult.isMalicious) {
|
|
667
|
-
threatDetected = true;
|
|
668
|
-
detectedPatterns.push(`Path Traversal (${pathResult.riskLevel})`);
|
|
669
|
-
if (pathResult.sanitizedInput) {
|
|
670
|
-
sanitized = pathResult.sanitizedInput;
|
|
671
|
-
}
|
|
672
|
-
}
|
|
673
|
-
}
|
|
674
|
-
// Command Injection Detection
|
|
675
|
-
if (this.commandInjection &&
|
|
676
|
-
this.shouldApplySecurityModule(req, this.routeConfig?.commandInjection)) {
|
|
677
|
-
const cmdResult = this.commandInjectionDetector.detect(original);
|
|
678
|
-
if (cmdResult.isMalicious) {
|
|
679
|
-
threatDetected = true;
|
|
680
|
-
detectedPatterns.push(`Command Injection (${cmdResult.riskLevel})`);
|
|
681
|
-
if (cmdResult.sanitizedInput) {
|
|
682
|
-
sanitized = cmdResult.sanitizedInput;
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
}
|
|
686
|
-
// XXE Detection (for XML content)
|
|
687
|
-
if (this.xxe &&
|
|
688
|
-
this.shouldApplySecurityModule(req, this.routeConfig?.xxe) &&
|
|
689
|
-
(original.includes("<?xml") ||
|
|
690
|
-
original.includes("<!DOCTYPE"))) {
|
|
691
|
-
const xxeResult = this.xxeProtector.detect(original);
|
|
692
|
-
if (xxeResult.isMalicious) {
|
|
693
|
-
threatDetected = true;
|
|
694
|
-
detectedPatterns.push(`XXE Attack (${xxeResult.riskLevel})`);
|
|
695
|
-
if (xxeResult.sanitizedInput) {
|
|
696
|
-
sanitized = xxeResult.sanitizedInput;
|
|
697
|
-
}
|
|
698
|
-
}
|
|
699
|
-
}
|
|
700
|
-
// LDAP Injection Detection
|
|
701
|
-
if (this.ldapInjection &&
|
|
702
|
-
this.shouldApplySecurityModule(req, this.routeConfig?.ldapInjection)) {
|
|
703
|
-
const ldapResult = this.ldapInjectionDetector.detect(original);
|
|
704
|
-
if (ldapResult.isMalicious) {
|
|
705
|
-
threatDetected = true;
|
|
706
|
-
detectedPatterns.push(`LDAP Injection (${ldapResult.riskLevel})`);
|
|
707
|
-
if (ldapResult.sanitizedInput) {
|
|
708
|
-
sanitized = ldapResult.sanitizedInput;
|
|
709
|
-
}
|
|
710
|
-
}
|
|
711
|
-
}
|
|
712
|
-
// Additional threat detection for patterns XSS library might miss
|
|
713
|
-
if (this.xss &&
|
|
714
|
-
this.shouldApplySecurityModule(req, this.routeConfig?.xss)) {
|
|
715
|
-
const additionalThreats = [
|
|
716
|
-
/javascript:/i,
|
|
717
|
-
/vbscript:/i,
|
|
718
|
-
/data:text\/html/i,
|
|
719
|
-
/\s+on(load|click|error|mouseover|submit)\s*=/i, // Specific common event handlers
|
|
720
|
-
/<iframe/i,
|
|
721
|
-
/<object/i,
|
|
722
|
-
/<embed/i,
|
|
723
|
-
/<link\s+rel=["']?stylesheet["']?/i,
|
|
724
|
-
/<meta\s+http-equiv=["']?refresh["']?/i,
|
|
725
|
-
/expression\s*\(/i, // CSS expression()
|
|
726
|
-
/url\s*\(\s*javascript:/i,
|
|
727
|
-
];
|
|
728
|
-
for (const pattern of additionalThreats) {
|
|
729
|
-
if (pattern.test(original)) {
|
|
730
|
-
threatDetected = true;
|
|
731
|
-
detectedPatterns.push("Enhanced XSS");
|
|
732
|
-
// Sanitize these additional threats
|
|
733
|
-
sanitized = original.replace(pattern, "[BLOCKED]");
|
|
734
|
-
break;
|
|
735
|
-
}
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
if (threatDetected) {
|
|
739
|
-
threats.push({
|
|
740
|
-
path: currentPath || "root",
|
|
741
|
-
types: detectedPatterns,
|
|
742
|
-
});
|
|
743
|
-
// Log the specific threats detected
|
|
744
|
-
this.logger.warn("security", `Security threat detected in ${currentPath || "root"}: ${detectedPatterns.join(", ")}`);
|
|
745
|
-
}
|
|
746
|
-
return sanitized;
|
|
747
|
-
}
|
|
748
|
-
if (Array.isArray(value)) {
|
|
749
|
-
return value.map((item, index) => sanitizeWithDetection(item, `${currentPath}[${index}]`));
|
|
750
|
-
}
|
|
751
|
-
if (value && typeof value === "object") {
|
|
752
|
-
const sanitized = {};
|
|
753
|
-
for (const [key, val] of Object.entries(value)) {
|
|
754
|
-
const newPath = currentPath ? `${currentPath}.${key}` : key;
|
|
755
|
-
sanitized[key] = sanitizeWithDetection(val, newPath);
|
|
756
|
-
}
|
|
757
|
-
return sanitized;
|
|
758
|
-
}
|
|
759
|
-
return value;
|
|
760
|
-
};
|
|
761
|
-
const sanitized = sanitizeWithDetection(obj, path);
|
|
762
|
-
return { sanitized, threats };
|
|
763
|
-
}
|
|
764
|
-
/**
|
|
765
|
-
* Get CSRF token for client-side usage
|
|
766
|
-
*/
|
|
767
|
-
generateCsrfToken(req) {
|
|
768
|
-
if (this.csrf && req.csrfToken) {
|
|
769
|
-
return req.csrfToken();
|
|
770
|
-
}
|
|
771
|
-
return null;
|
|
772
|
-
}
|
|
773
|
-
/**
|
|
774
|
-
* Check if browser-only protection is enabled
|
|
775
|
-
*/
|
|
776
|
-
isBrowserOnlyEnabled() {
|
|
777
|
-
if (this.browserOnly === true)
|
|
778
|
-
return true;
|
|
779
|
-
if (typeof this.browserOnly === "object" && this.browserOnly !== null) {
|
|
780
|
-
return this.browserOnly.enable !== false; // Default to true when config provided
|
|
781
|
-
}
|
|
782
|
-
return false;
|
|
783
|
-
}
|
|
784
|
-
/**
|
|
785
|
-
* Check if terminal-only protection is enabled
|
|
786
|
-
*/
|
|
787
|
-
isTerminalOnlyEnabled() {
|
|
788
|
-
if (this.terminalOnly === true)
|
|
789
|
-
return true;
|
|
790
|
-
if (typeof this.terminalOnly === "object" &&
|
|
791
|
-
this.terminalOnly !== null) {
|
|
792
|
-
return this.terminalOnly.enable !== false; // Default to true when config provided
|
|
793
|
-
}
|
|
794
|
-
return false;
|
|
795
|
-
}
|
|
796
|
-
/**
|
|
797
|
-
* Check if mobile-only protection is enabled
|
|
798
|
-
*/
|
|
799
|
-
isMobileOnlyEnabled() {
|
|
800
|
-
if (this.mobileOnly === true)
|
|
801
|
-
return true;
|
|
802
|
-
if (typeof this.mobileOnly === "object" && this.mobileOnly !== null) {
|
|
803
|
-
return this.mobileOnly.enable !== false; // Check enable property, default to true when config provided
|
|
804
|
-
}
|
|
805
|
-
return false;
|
|
806
|
-
}
|
|
807
|
-
/**
|
|
808
|
-
* Validate device access configuration
|
|
809
|
-
*/
|
|
810
|
-
validateDeviceAccessConfig() {
|
|
811
|
-
// Check enabled device access controls
|
|
812
|
-
const browserEnabled = this.isBrowserOnlyEnabled();
|
|
813
|
-
const terminalEnabled = this.isTerminalOnlyEnabled();
|
|
814
|
-
const mobileEnabled = this.isMobileOnlyEnabled();
|
|
815
|
-
// Terminal-only cannot be combined with browser-only or mobile-only
|
|
816
|
-
if (terminalEnabled && (browserEnabled || mobileEnabled)) {
|
|
817
|
-
throw new Error("Security configuration error: terminalOnly cannot be enabled simultaneously with browserOnly or mobileOnly. " +
|
|
818
|
-
"Choose terminalOnly alone, or browserOnly and/or mobileOnly.");
|
|
819
|
-
}
|
|
820
|
-
// Browser-only and mobile-only can be enabled together (they will be applied based on request characteristics)
|
|
821
|
-
// No other restrictions needed
|
|
822
|
-
}
|
|
823
|
-
/**
|
|
824
|
-
* Create combined middleware for browser and mobile access control
|
|
825
|
-
*/
|
|
826
|
-
createCombinedDeviceMiddleware(browserEnabled, mobileEnabled) {
|
|
827
|
-
// If neither is enabled, return null
|
|
828
|
-
if (!browserEnabled && !mobileEnabled) {
|
|
829
|
-
return null;
|
|
830
|
-
}
|
|
831
|
-
// If only one is enabled, return that middleware directly
|
|
832
|
-
if (browserEnabled && !mobileEnabled && this.browserOnlyMiddleware) {
|
|
833
|
-
return this.browserOnlyMiddleware;
|
|
834
|
-
}
|
|
835
|
-
if (mobileEnabled && !browserEnabled && this.mobileOnlyMiddleware) {
|
|
836
|
-
return this.mobileOnlyMiddleware;
|
|
837
|
-
}
|
|
838
|
-
// Both are enabled - create combined logic
|
|
839
|
-
if (!this.browserOnlyMiddleware || !this.mobileOnlyMiddleware) {
|
|
840
|
-
return null; // Should not happen if validation passed
|
|
841
|
-
}
|
|
842
|
-
return (req, res, next) => {
|
|
843
|
-
// First check if it's a mobile request
|
|
844
|
-
const isMobileRequest = this.isMobileRequest(req);
|
|
845
|
-
if (isMobileRequest) {
|
|
846
|
-
// Apply mobile-only rules
|
|
847
|
-
this.logger.debug("security", "Applying mobile-only rules for mobile request");
|
|
848
|
-
return this.mobileOnlyMiddleware(req, res, next);
|
|
849
|
-
}
|
|
850
|
-
else {
|
|
851
|
-
// Apply browser-only rules
|
|
852
|
-
this.logger.debug("security", "Applying browser-only rules for non-mobile request");
|
|
853
|
-
return this.browserOnlyMiddleware(req, res, next);
|
|
854
|
-
}
|
|
855
|
-
};
|
|
856
|
-
}
|
|
857
|
-
/**
|
|
858
|
-
* Check if request is from a mobile device (using MobileOnlyProtector logic)
|
|
859
|
-
*/
|
|
860
|
-
isMobileRequest(req) {
|
|
861
|
-
if (!this.mobileOnlyProtector) {
|
|
862
|
-
// If no mobile protector, assume not mobile
|
|
863
|
-
return false;
|
|
864
|
-
}
|
|
865
|
-
return this.mobileOnlyProtector.isMobileRequest(req);
|
|
866
|
-
}
|
|
867
|
-
/**
|
|
868
|
-
* Get security configuration
|
|
869
|
-
*/
|
|
870
|
-
getConfig() {
|
|
871
|
-
return {
|
|
872
|
-
level: this.level,
|
|
873
|
-
csrf: this.csrf,
|
|
874
|
-
helmet: this.helmet,
|
|
875
|
-
browserOnly: this.browserOnly,
|
|
876
|
-
terminalOnly: this.terminalOnly,
|
|
877
|
-
mobileOnly: this.mobileOnly,
|
|
878
|
-
deviceAccess: this.deviceAccess,
|
|
879
|
-
requestSignature: this.requestSignature,
|
|
880
|
-
xss: this.xss,
|
|
881
|
-
sqlInjection: this.sqlInjection,
|
|
882
|
-
pathTraversal: this.pathTraversal,
|
|
883
|
-
commandInjection: this.commandInjection,
|
|
884
|
-
xxe: this.xxe,
|
|
885
|
-
ldapInjection: this.ldapInjection,
|
|
886
|
-
bruteForce: this.bruteForce,
|
|
887
|
-
rateLimit: this.rateLimit,
|
|
888
|
-
cors: this.cors,
|
|
889
|
-
compression: this.compression,
|
|
890
|
-
hpp: this.hpp,
|
|
891
|
-
mongoSanitize: this.mongoSanitize,
|
|
892
|
-
slowDown: this.slowDown,
|
|
893
|
-
encryption: this.encryption,
|
|
894
|
-
authentication: this.authentication,
|
|
895
|
-
routeConfig: this.routeConfig,
|
|
896
|
-
_ignore: this._ignore,
|
|
897
|
-
_ignoreAll: this._ignoreAll,
|
|
898
|
-
};
|
|
899
|
-
}
|
|
900
|
-
/**
|
|
901
|
-
* Check if a route matches a pattern
|
|
902
|
-
*/
|
|
903
|
-
matchesRoute(requestPath, requestMethod, pattern) {
|
|
904
|
-
// Handle RoutePattern object
|
|
905
|
-
if (typeof pattern === "object" && "path" in pattern) {
|
|
906
|
-
const routePattern = pattern;
|
|
907
|
-
// Check method if specified
|
|
908
|
-
if (routePattern.methods && routePattern.methods.length > 0) {
|
|
909
|
-
if (!routePattern.methods.includes(requestMethod.toUpperCase())) {
|
|
910
|
-
return false;
|
|
911
|
-
}
|
|
912
|
-
}
|
|
913
|
-
return this.matchesRoute(requestPath, requestMethod, routePattern.path);
|
|
914
|
-
}
|
|
915
|
-
// Handle RegExp
|
|
916
|
-
if (pattern instanceof RegExp) {
|
|
917
|
-
return pattern.test(requestPath);
|
|
918
|
-
}
|
|
919
|
-
// Handle string patterns with wildcards
|
|
920
|
-
const patternStr = pattern;
|
|
921
|
-
// Normalize paths by removing trailing slashes for comparison
|
|
922
|
-
const normalizedRequestPath = requestPath.replace(/\/$/, "");
|
|
923
|
-
const normalizedPattern = patternStr.replace(/\/$/, "");
|
|
924
|
-
// Exact match (after normalization)
|
|
925
|
-
if (normalizedPattern === normalizedRequestPath) {
|
|
926
|
-
return true;
|
|
927
|
-
}
|
|
928
|
-
// Wildcard matching (e.g., /api/* matches /api/anything)
|
|
929
|
-
if (patternStr.includes("*")) {
|
|
930
|
-
// Handle trailing /* specially to match with or without trailing slash
|
|
931
|
-
if (patternStr.endsWith("/*")) {
|
|
932
|
-
const prefix = patternStr.slice(0, -2); // Remove /*
|
|
933
|
-
// Match if requestPath starts with prefix, optionally followed by /
|
|
934
|
-
const regex = new RegExp(`^${prefix.replace(/[.+?^${}()|[\]\\]/g, "\\$&")}(?:/.*)?$`);
|
|
935
|
-
return regex.test(requestPath);
|
|
936
|
-
}
|
|
937
|
-
else {
|
|
938
|
-
const regexPattern = patternStr
|
|
939
|
-
.replace(/[.+?^${}()|[\]\\]/g, "\\$&") // Escape special regex chars except *
|
|
940
|
-
.replace(/\*/g, ".*"); // Convert * to .*
|
|
941
|
-
const regex = new RegExp(`^${regexPattern}$`);
|
|
942
|
-
return regex.test(requestPath);
|
|
943
|
-
}
|
|
944
|
-
}
|
|
945
|
-
// Path prefix matching (for patterns without wildcards)
|
|
946
|
-
if (normalizedRequestPath.startsWith(normalizedPattern)) {
|
|
947
|
-
return true;
|
|
948
|
-
}
|
|
949
|
-
return false;
|
|
950
|
-
}
|
|
951
|
-
/**
|
|
952
|
-
* Evaluates if a security module should be applied to the current request.
|
|
953
|
-
*
|
|
954
|
-
* @param req The incoming request
|
|
955
|
-
* @param moduleConfig Optional route-specific configuration for the module
|
|
956
|
-
* @param absoluteBypassOnly If true, only checks against _ignoreAll (used for access control/signatures)
|
|
957
|
-
* @returns boolean True if the security module should be applied
|
|
958
|
-
*/
|
|
959
|
-
shouldApplySecurityModule(req, moduleConfig, absoluteBypassOnly = false) {
|
|
960
|
-
const requestPath = req.path || req.url || "";
|
|
961
|
-
const requestMethod = req.method || "GET";
|
|
962
|
-
// 1. 🚨 Absolute Ignore List Check (_ignoreAll)
|
|
963
|
-
// High priority bypass for ALL security layers (detectors + access control)
|
|
964
|
-
if (this._ignoreAll.length > 0) {
|
|
965
|
-
const isAbsolutelyIgnored = this._ignoreAll.some((pattern) => {
|
|
966
|
-
if (typeof pattern === "string") {
|
|
967
|
-
return this.matchesRoute(requestPath, requestMethod, pattern);
|
|
968
|
-
}
|
|
969
|
-
if (pattern instanceof RegExp) {
|
|
970
|
-
return pattern.test(requestPath);
|
|
971
|
-
}
|
|
972
|
-
return false;
|
|
973
|
-
});
|
|
974
|
-
if (isAbsolutelyIgnored) {
|
|
975
|
-
this.logger.debug("security", `Route ${requestPath} is ABSOLUTELY ignored by security middleware`);
|
|
976
|
-
return false;
|
|
977
|
-
}
|
|
978
|
-
}
|
|
979
|
-
// 2. 🛡️ Content-Only Ignore List Check (_ignore)
|
|
980
|
-
// Bypass for content-based detectors only (XSS, SQLi, etc.)
|
|
981
|
-
if (!absoluteBypassOnly && this._ignore.length > 0) {
|
|
982
|
-
const isContentIgnored = this._ignore.some((pattern) => {
|
|
983
|
-
if (typeof pattern === "string") {
|
|
984
|
-
return this.matchesRoute(requestPath, requestMethod, pattern);
|
|
985
|
-
}
|
|
986
|
-
if (pattern instanceof RegExp) {
|
|
987
|
-
return pattern.test(requestPath);
|
|
988
|
-
}
|
|
989
|
-
return false;
|
|
990
|
-
});
|
|
991
|
-
if (isContentIgnored) {
|
|
992
|
-
this.logger.debug("security", `Route ${requestPath} bypassed content-based security detectors`);
|
|
993
|
-
return false;
|
|
994
|
-
}
|
|
995
|
-
}
|
|
996
|
-
if (!moduleConfig) {
|
|
997
|
-
return true; // Apply by default if no route config
|
|
998
|
-
}
|
|
999
|
-
// Check includeRoutes first (whitelist approach)
|
|
1000
|
-
if (moduleConfig.includeRoutes &&
|
|
1001
|
-
moduleConfig.includeRoutes.length > 0) {
|
|
1002
|
-
// Only apply if route is in the include list
|
|
1003
|
-
return moduleConfig.includeRoutes.some((pattern) => this.matchesRoute(requestPath, requestMethod, pattern));
|
|
1004
|
-
}
|
|
1005
|
-
// Check excludeRoutes (blacklist approach)
|
|
1006
|
-
if (moduleConfig.excludeRoutes &&
|
|
1007
|
-
moduleConfig.excludeRoutes.length > 0) {
|
|
1008
|
-
// Don't apply if route is in the exclude list
|
|
1009
|
-
const isExcluded = moduleConfig.excludeRoutes.some((pattern) => this.matchesRoute(requestPath, requestMethod, pattern));
|
|
1010
|
-
return !isExcluded;
|
|
1011
|
-
}
|
|
1012
|
-
return true; // Apply by default
|
|
1013
|
-
}
|
|
1014
|
-
/**
|
|
1015
|
-
* Report a security attack to the plugin manager
|
|
1016
|
-
*/
|
|
1017
|
-
reportAttack(req, res, attackData) {
|
|
1018
|
-
const pluginManager = req.app?.pluginManager;
|
|
1019
|
-
this.logger.debug("security", `Reporting attack. PluginManager found: ${!!pluginManager}`);
|
|
1020
|
-
if (pluginManager &&
|
|
1021
|
-
typeof pluginManager.triggerSecurityAttack === "function") {
|
|
1022
|
-
pluginManager.triggerSecurityAttack(attackData, req, res);
|
|
1023
|
-
}
|
|
1024
|
-
}
|
|
1025
|
-
}
|
|
1026
|
-
//# sourceMappingURL=security-middleware.js.map
|