xypriss 1.1.4 → 1.2.1
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/index.js +56 -0
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/plugins/modules/PluginRegistry.js +6 -38
- package/dist/cjs/src/plugins/modules/PluginRegistry.js.map +1 -1
- package/dist/cjs/src/plugins/modules/builtin/JWTAuthPlugin.js +1 -1
- package/dist/cjs/src/plugins/modules/builtin/JWTAuthPlugin.js.map +1 -1
- package/dist/cjs/src/plugins/modules/builtin/SmartCachePlugin.js +1 -1
- package/dist/cjs/src/plugins/modules/builtin/SmartCachePlugin.js.map +1 -1
- package/dist/cjs/src/plugins/modules/core/CachePlugin.js +4 -4
- package/dist/cjs/src/plugins/modules/core/CachePlugin.js.map +1 -1
- package/dist/cjs/src/plugins/modules/core/PerformancePlugin.js +2 -2
- package/dist/cjs/src/plugins/modules/core/PerformancePlugin.js.map +1 -1
- package/dist/cjs/src/plugins/modules/core/SecurityPlugin.js +2 -2
- package/dist/cjs/src/plugins/modules/core/SecurityPlugin.js.map +1 -1
- package/dist/cjs/src/plugins/modules/index.js +304 -0
- package/dist/cjs/src/plugins/modules/index.js.map +1 -0
- package/dist/cjs/src/plugins/modules/network/builtin/CompressionPlugin.js +410 -0
- package/dist/cjs/src/plugins/modules/network/builtin/CompressionPlugin.js.map +1 -0
- package/dist/cjs/src/plugins/modules/network/builtin/ConnectionPlugin.js +797 -0
- package/dist/cjs/src/plugins/modules/network/builtin/ConnectionPlugin.js.map +1 -0
- package/dist/cjs/src/plugins/modules/network/builtin/ProxyPlugin.js +409 -0
- package/dist/cjs/src/plugins/modules/network/builtin/ProxyPlugin.js.map +1 -0
- package/dist/cjs/src/plugins/modules/network/builtin/RateLimitPlugin.js +606 -0
- package/dist/cjs/src/plugins/modules/network/builtin/RateLimitPlugin.js.map +1 -0
- package/dist/cjs/src/plugins/modules/network/core/NetworkPlugin.js +225 -0
- package/dist/cjs/src/plugins/modules/network/core/NetworkPlugin.js.map +1 -0
- package/dist/cjs/src/plugins/modules/network/core/NetworkPluginFactory.js +40 -0
- package/dist/cjs/src/plugins/modules/network/core/NetworkPluginFactory.js.map +1 -0
- package/dist/cjs/src/plugins/modules/network/index.js +120 -0
- package/dist/cjs/src/plugins/modules/network/index.js.map +1 -0
- package/dist/cjs/src/plugins/modules/network/types/NetworkTypes.js +24 -0
- package/dist/cjs/src/plugins/modules/network/types/NetworkTypes.js.map +1 -0
- package/dist/cjs/src/plugins/modules/network/utils/NetworkPluginUtils.js +63 -0
- package/dist/cjs/src/plugins/modules/network/utils/NetworkPluginUtils.js.map +1 -0
- package/dist/cjs/src/plugins/modules/types/PluginTypes.js +1 -0
- package/dist/cjs/src/plugins/modules/types/PluginTypes.js.map +1 -1
- package/dist/cjs/src/server/FastServer.js +111 -2
- package/dist/cjs/src/server/FastServer.js.map +1 -1
- package/dist/cjs/src/server/conf/networkConnectionConf.js +25 -0
- package/dist/cjs/src/server/conf/networkConnectionConf.js.map +1 -0
- package/dist/cjs/src/server/conf/proxyConfig.js +23 -0
- package/dist/cjs/src/server/conf/proxyConfig.js.map +1 -0
- package/dist/cjs/src/server/conf/rateLimitConfig.js +35 -0
- package/dist/cjs/src/server/conf/rateLimitConfig.js.map +1 -0
- package/dist/cjs/src/server/const/default.js +6 -0
- package/dist/cjs/src/server/const/default.js.map +1 -1
- package/dist/cjs/src/server/handlers/NotFoundHandler.js +217 -0
- package/dist/cjs/src/server/handlers/NotFoundHandler.js.map +1 -0
- package/dist/cjs/src/server/handlers/templates/notFoundTemp.js +163 -0
- package/dist/cjs/src/server/handlers/templates/notFoundTemp.js.map +1 -0
- package/dist/esm/mods/security/src/components/cache/UFSIMC.js +5 -5
- package/dist/esm/mods/security/src/components/cache/UFSIMC.js.map +1 -1
- package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js +3 -3
- package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
- package/dist/esm/src/index.js +18 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/plugins/modules/PluginRegistry.js +6 -38
- package/dist/esm/src/plugins/modules/PluginRegistry.js.map +1 -1
- package/dist/esm/src/plugins/modules/builtin/JWTAuthPlugin.js +1 -1
- package/dist/esm/src/plugins/modules/builtin/JWTAuthPlugin.js.map +1 -1
- package/dist/esm/src/plugins/modules/builtin/SmartCachePlugin.js +1 -1
- package/dist/esm/src/plugins/modules/builtin/SmartCachePlugin.js.map +1 -1
- package/dist/esm/src/plugins/modules/core/CachePlugin.js +4 -4
- package/dist/esm/src/plugins/modules/core/CachePlugin.js.map +1 -1
- package/dist/esm/src/plugins/modules/core/PerformancePlugin.js +2 -2
- package/dist/esm/src/plugins/modules/core/PerformancePlugin.js.map +1 -1
- package/dist/esm/src/plugins/modules/core/SecurityPlugin.js +2 -2
- package/dist/esm/src/plugins/modules/core/SecurityPlugin.js.map +1 -1
- package/dist/esm/src/plugins/modules/index.js +275 -0
- package/dist/esm/src/plugins/modules/index.js.map +1 -0
- package/dist/esm/src/plugins/modules/network/builtin/CompressionPlugin.js +389 -0
- package/dist/esm/src/plugins/modules/network/builtin/CompressionPlugin.js.map +1 -0
- package/dist/esm/src/plugins/modules/network/builtin/ConnectionPlugin.js +776 -0
- package/dist/esm/src/plugins/modules/network/builtin/ConnectionPlugin.js.map +1 -0
- package/dist/esm/src/plugins/modules/network/builtin/ProxyPlugin.js +407 -0
- package/dist/esm/src/plugins/modules/network/builtin/ProxyPlugin.js.map +1 -0
- package/dist/esm/src/plugins/modules/network/builtin/RateLimitPlugin.js +585 -0
- package/dist/esm/src/plugins/modules/network/builtin/RateLimitPlugin.js.map +1 -0
- package/dist/esm/src/plugins/modules/network/core/NetworkPlugin.js +223 -0
- package/dist/esm/src/plugins/modules/network/core/NetworkPlugin.js.map +1 -0
- package/dist/esm/src/plugins/modules/network/core/NetworkPluginFactory.js +38 -0
- package/dist/esm/src/plugins/modules/network/core/NetworkPluginFactory.js.map +1 -0
- package/dist/esm/src/plugins/modules/network/index.js +109 -0
- package/dist/esm/src/plugins/modules/network/index.js.map +1 -0
- package/dist/esm/src/plugins/modules/network/types/NetworkTypes.js +24 -0
- package/dist/esm/src/plugins/modules/network/types/NetworkTypes.js.map +1 -0
- package/dist/esm/src/plugins/modules/network/utils/NetworkPluginUtils.js +61 -0
- package/dist/esm/src/plugins/modules/network/utils/NetworkPluginUtils.js.map +1 -0
- package/dist/esm/src/plugins/modules/types/PluginTypes.js +1 -0
- package/dist/esm/src/plugins/modules/types/PluginTypes.js.map +1 -1
- package/dist/esm/src/server/FastServer.js +111 -2
- package/dist/esm/src/server/FastServer.js.map +1 -1
- package/dist/esm/src/server/conf/networkConnectionConf.js +23 -0
- package/dist/esm/src/server/conf/networkConnectionConf.js.map +1 -0
- package/dist/esm/src/server/conf/proxyConfig.js +21 -0
- package/dist/esm/src/server/conf/proxyConfig.js.map +1 -0
- package/dist/esm/src/server/conf/rateLimitConfig.js +33 -0
- package/dist/esm/src/server/conf/rateLimitConfig.js.map +1 -0
- package/dist/esm/src/server/const/default.js +6 -0
- package/dist/esm/src/server/const/default.js.map +1 -1
- package/dist/esm/src/server/handlers/NotFoundHandler.js +194 -0
- package/dist/esm/src/server/handlers/NotFoundHandler.js.map +1 -0
- package/dist/esm/src/server/handlers/templates/notFoundTemp.js +161 -0
- package/dist/esm/src/server/handlers/templates/notFoundTemp.js.map +1 -0
- package/dist/index.d.ts +5085 -14
- package/package.json +8 -7
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { performance } from 'perf_hooks';
|
|
2
|
+
import { PluginType, PluginPriority } from '../../types/PluginTypes.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Network Plugin Base Class
|
|
6
|
+
*
|
|
7
|
+
* Abstract base class for all network-related plugins in XyPriss
|
|
8
|
+
* Provides common functionality and interfaces for network operations
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Abstract base class for network plugins
|
|
12
|
+
* Provides common functionality and enforces network plugin contracts
|
|
13
|
+
*/
|
|
14
|
+
class NetworkPlugin {
|
|
15
|
+
constructor(config = {}) {
|
|
16
|
+
// Base plugin properties
|
|
17
|
+
this.type = PluginType.NETWORK;
|
|
18
|
+
this.priority = PluginPriority.NORMAL;
|
|
19
|
+
this.isAsync = true;
|
|
20
|
+
this.isCacheable = false; // Network operations typically shouldn't be cached
|
|
21
|
+
this.maxExecutionTime = 1000; // 1ms max for network operations
|
|
22
|
+
this.isInitialized = false;
|
|
23
|
+
this.config = config;
|
|
24
|
+
this.healthStatus = {
|
|
25
|
+
healthy: true,
|
|
26
|
+
status: "healthy",
|
|
27
|
+
metrics: {
|
|
28
|
+
responseTime: 0,
|
|
29
|
+
errorRate: 0,
|
|
30
|
+
throughput: 0,
|
|
31
|
+
connections: 0,
|
|
32
|
+
},
|
|
33
|
+
lastCheck: new Date(),
|
|
34
|
+
};
|
|
35
|
+
this.performanceMetrics = {
|
|
36
|
+
totalExecutions: 0,
|
|
37
|
+
totalExecutionTime: 0,
|
|
38
|
+
averageExecutionTime: 0,
|
|
39
|
+
errorCount: 0,
|
|
40
|
+
lastExecution: new Date(),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Initialize the network plugin
|
|
45
|
+
*/
|
|
46
|
+
async initialize() {
|
|
47
|
+
if (this.isInitialized) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
// Validate configuration
|
|
52
|
+
if (this.validateNetworkConfig &&
|
|
53
|
+
!this.validateNetworkConfig(this.config)) {
|
|
54
|
+
throw new Error(`Invalid configuration for network plugin ${this.id}`);
|
|
55
|
+
}
|
|
56
|
+
// Perform plugin-specific initialization
|
|
57
|
+
await this.initializeNetwork();
|
|
58
|
+
// Perform initial health check
|
|
59
|
+
await this.updateHealthStatus();
|
|
60
|
+
this.isInitialized = true;
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
throw new Error(`Failed to initialize network plugin ${this.id}: ${error.message}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Execute the plugin (implements BasePlugin interface)
|
|
68
|
+
*/
|
|
69
|
+
async execute(context) {
|
|
70
|
+
const startTime = performance.now();
|
|
71
|
+
try {
|
|
72
|
+
// Convert to network execution context
|
|
73
|
+
const networkContext = this.createNetworkContext(context);
|
|
74
|
+
// Execute network-specific logic
|
|
75
|
+
const result = await this.executeNetwork(networkContext);
|
|
76
|
+
// Update performance metrics
|
|
77
|
+
const executionTime = performance.now() - startTime;
|
|
78
|
+
this.updatePerformanceMetrics(executionTime, true);
|
|
79
|
+
return {
|
|
80
|
+
success: result.success,
|
|
81
|
+
executionTime,
|
|
82
|
+
shouldContinue: result.shouldContinue,
|
|
83
|
+
data: result.data,
|
|
84
|
+
error: result.error,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
const executionTime = performance.now() - startTime;
|
|
89
|
+
this.updatePerformanceMetrics(executionTime, false);
|
|
90
|
+
return {
|
|
91
|
+
success: false,
|
|
92
|
+
executionTime,
|
|
93
|
+
shouldContinue: true, // Continue with other plugins on network errors
|
|
94
|
+
error,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Plugin-specific initialization (to be overridden by subclasses)
|
|
100
|
+
*/
|
|
101
|
+
async initializeNetwork() {
|
|
102
|
+
// Default implementation - can be overridden
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Create network execution context from base context
|
|
106
|
+
*/
|
|
107
|
+
createNetworkContext(context) {
|
|
108
|
+
const { req } = context;
|
|
109
|
+
return {
|
|
110
|
+
...context,
|
|
111
|
+
connection: {
|
|
112
|
+
remoteAddress: req.ip || req.socket?.remoteAddress,
|
|
113
|
+
remotePort: req.socket?.remotePort,
|
|
114
|
+
localAddress: req.socket?.localAddress,
|
|
115
|
+
localPort: req.socket?.localPort,
|
|
116
|
+
encrypted: req.secure || false,
|
|
117
|
+
protocol: req.httpVersion
|
|
118
|
+
? `http/${req.httpVersion}`
|
|
119
|
+
: "http/1.1",
|
|
120
|
+
},
|
|
121
|
+
timing: {
|
|
122
|
+
startTime: Date.now(),
|
|
123
|
+
},
|
|
124
|
+
networkMetrics: {
|
|
125
|
+
bytesReceived: parseInt(req.get("content-length") || "0"),
|
|
126
|
+
bytesSent: 0, // Will be updated after response
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Update performance metrics
|
|
132
|
+
*/
|
|
133
|
+
updatePerformanceMetrics(executionTime, success) {
|
|
134
|
+
this.performanceMetrics.totalExecutions++;
|
|
135
|
+
this.performanceMetrics.totalExecutionTime += executionTime;
|
|
136
|
+
this.performanceMetrics.averageExecutionTime =
|
|
137
|
+
this.performanceMetrics.totalExecutionTime /
|
|
138
|
+
this.performanceMetrics.totalExecutions;
|
|
139
|
+
if (!success) {
|
|
140
|
+
this.performanceMetrics.errorCount++;
|
|
141
|
+
}
|
|
142
|
+
this.performanceMetrics.lastExecution = new Date();
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Update health status
|
|
146
|
+
*/
|
|
147
|
+
async updateHealthStatus() {
|
|
148
|
+
try {
|
|
149
|
+
if (this.checkNetworkHealth) {
|
|
150
|
+
this.healthStatus = await this.checkNetworkHealth();
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
// Default health check based on performance metrics
|
|
154
|
+
const errorRate = this.performanceMetrics.errorCount /
|
|
155
|
+
Math.max(this.performanceMetrics.totalExecutions, 1);
|
|
156
|
+
this.healthStatus = {
|
|
157
|
+
healthy: errorRate < 0.1 &&
|
|
158
|
+
this.performanceMetrics.averageExecutionTime <
|
|
159
|
+
this.maxExecutionTime,
|
|
160
|
+
status: errorRate < 0.05
|
|
161
|
+
? "healthy"
|
|
162
|
+
: errorRate < 0.1
|
|
163
|
+
? "degraded"
|
|
164
|
+
: "unhealthy",
|
|
165
|
+
metrics: {
|
|
166
|
+
responseTime: this.performanceMetrics.averageExecutionTime,
|
|
167
|
+
errorRate,
|
|
168
|
+
throughput: this.performanceMetrics.totalExecutions,
|
|
169
|
+
connections: 0, // Plugin-specific
|
|
170
|
+
},
|
|
171
|
+
lastCheck: new Date(),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
this.healthStatus = {
|
|
177
|
+
healthy: false,
|
|
178
|
+
status: "unhealthy",
|
|
179
|
+
metrics: {
|
|
180
|
+
responseTime: 0,
|
|
181
|
+
errorRate: 1,
|
|
182
|
+
throughput: 0,
|
|
183
|
+
connections: 0,
|
|
184
|
+
},
|
|
185
|
+
issues: [`Health check failed: ${error.message}`],
|
|
186
|
+
lastCheck: new Date(),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Get plugin configuration
|
|
192
|
+
*/
|
|
193
|
+
getConfig() {
|
|
194
|
+
return { ...this.config };
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Update plugin configuration
|
|
198
|
+
*/
|
|
199
|
+
updateConfig(newConfig) {
|
|
200
|
+
this.config = { ...this.config, ...newConfig };
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get health status
|
|
204
|
+
*/
|
|
205
|
+
getHealthStatus() {
|
|
206
|
+
return { ...this.healthStatus };
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Get performance metrics
|
|
210
|
+
*/
|
|
211
|
+
getPerformanceMetrics() {
|
|
212
|
+
return { ...this.performanceMetrics };
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Cleanup resources (to be overridden by subclasses if needed)
|
|
216
|
+
*/
|
|
217
|
+
async destroy() {
|
|
218
|
+
this.isInitialized = false;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export { NetworkPlugin };
|
|
223
|
+
//# sourceMappingURL=NetworkPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkPlugin.js","sources":["../../../../../../../src/plugins/modules/network/core/NetworkPlugin.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { CompressionPlugin } from '../builtin/CompressionPlugin.js';
|
|
2
|
+
import { ConnectionPlugin } from '../builtin/ConnectionPlugin.js';
|
|
3
|
+
import { NetworkCategory } from '../types/NetworkTypes.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Network plugin factory functions
|
|
7
|
+
*/
|
|
8
|
+
const NetworkPluginFactory = {
|
|
9
|
+
/**
|
|
10
|
+
* Create a connection management plugin
|
|
11
|
+
*/
|
|
12
|
+
createConnectionPlugin: (config) => new ConnectionPlugin(config),
|
|
13
|
+
/**
|
|
14
|
+
* Create a compression plugin
|
|
15
|
+
*/
|
|
16
|
+
createCompressionPlugin: (config) => new CompressionPlugin(config),
|
|
17
|
+
/**
|
|
18
|
+
* Get all available network plugin types
|
|
19
|
+
*/
|
|
20
|
+
getAvailablePlugins: () => [
|
|
21
|
+
{
|
|
22
|
+
id: "xypriss.network.connection",
|
|
23
|
+
name: "Connection Management Plugin",
|
|
24
|
+
category: NetworkCategory.CONNECTION,
|
|
25
|
+
description: "HTTP/2, connection pooling, keep-alive management",
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: "xypriss.network.compression",
|
|
29
|
+
name: "Response Compression Plugin",
|
|
30
|
+
category: NetworkCategory.COMPRESSION,
|
|
31
|
+
description: "Gzip, Brotli, Deflate compression with smart optimization",
|
|
32
|
+
},
|
|
33
|
+
// More plugins will be added here as they're implemented
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { NetworkPluginFactory };
|
|
38
|
+
//# sourceMappingURL=NetworkPluginFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkPluginFactory.js","sources":["../../../../../../../src/plugins/modules/network/core/NetworkPluginFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAQA;;AAEG;AACU,MAAA,oBAAoB,GAAG;AAChC;;AAEG;IACH,sBAAsB,EAAE,CAAC,MAAyB,KAC9C,IAAI,gBAAgB,CAAC,MAAM,CAAC;AAEhC;;AAEG;IACH,uBAAuB,EAAE,CAAC,MAA0B,KAChD,IAAI,iBAAiB,CAAC,MAAM,CAAC;AAEjC;;AAEG;IACH,mBAAmB,EAAE,MAAM;AACvB,QAAA;AACI,YAAA,EAAE,EAAE,4BAA4B;AAChC,YAAA,IAAI,EAAE,8BAA8B;YACpC,QAAQ,EAAE,eAAe,CAAC,UAAU;AACpC,YAAA,WAAW,EAAE,mDAAmD;AACnE,SAAA;AACD,QAAA;AACI,YAAA,EAAE,EAAE,6BAA6B;AACjC,YAAA,IAAI,EAAE,6BAA6B;YACnC,QAAQ,EAAE,eAAe,CAAC,WAAW;AACrC,YAAA,WAAW,EACP,2DAA2D;AAClE,SAAA;;AAEJ,KAAA;;;;;"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import 'perf_hooks';
|
|
2
|
+
import '../types/PluginTypes.js';
|
|
3
|
+
import { NetworkCategory } from './types/NetworkTypes.js';
|
|
4
|
+
import { ConnectionPlugin } from './builtin/ConnectionPlugin.js';
|
|
5
|
+
import { CompressionPlugin } from './builtin/CompressionPlugin.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* XyPriss Network Plugin System
|
|
9
|
+
*
|
|
10
|
+
* Comprehensive network plugin system for advanced networking capabilities
|
|
11
|
+
* including connection management, proxying, compression, rate limiting, and more
|
|
12
|
+
*/
|
|
13
|
+
// Core network plugin system
|
|
14
|
+
/**
|
|
15
|
+
* Network plugin system metadata
|
|
16
|
+
*/
|
|
17
|
+
const NETWORK_PLUGIN_SYSTEM_VERSION = "1.0.0";
|
|
18
|
+
const NETWORK_PLUGIN_SYSTEM_NAME = "XyPriss Network Plugin System";
|
|
19
|
+
/**
|
|
20
|
+
* Network plugin factory functions
|
|
21
|
+
*/
|
|
22
|
+
const NetworkPluginFactory = {
|
|
23
|
+
/**
|
|
24
|
+
* Create a connection management plugin
|
|
25
|
+
*/
|
|
26
|
+
createConnectionPlugin: (config) => new ConnectionPlugin(config),
|
|
27
|
+
/**
|
|
28
|
+
* Create a compression plugin
|
|
29
|
+
*/
|
|
30
|
+
createCompressionPlugin: (config) => new CompressionPlugin(config),
|
|
31
|
+
/**
|
|
32
|
+
* Get all available network plugin types
|
|
33
|
+
*/
|
|
34
|
+
getAvailablePlugins: () => [
|
|
35
|
+
{
|
|
36
|
+
id: "xypriss.network.connection",
|
|
37
|
+
name: "Connection Management Plugin",
|
|
38
|
+
category: NetworkCategory.CONNECTION,
|
|
39
|
+
description: "HTTP/2, connection pooling, keep-alive management",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: "xypriss.network.compression",
|
|
43
|
+
name: "Response Compression Plugin",
|
|
44
|
+
category: NetworkCategory.COMPRESSION,
|
|
45
|
+
description: "Gzip, Brotli, Deflate compression with smart optimization",
|
|
46
|
+
},
|
|
47
|
+
// More plugins will be added here as they're implemented
|
|
48
|
+
],
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Network plugin utilities
|
|
52
|
+
*/
|
|
53
|
+
const NetworkPluginUtils = {
|
|
54
|
+
/**
|
|
55
|
+
* Validate network plugin configuration
|
|
56
|
+
*/
|
|
57
|
+
validateConfig: (pluginType, config) => {
|
|
58
|
+
switch (pluginType) {
|
|
59
|
+
case NetworkCategory.CONNECTION:
|
|
60
|
+
return (new ConnectionPlugin().validateNetworkConfig?.(config) ??
|
|
61
|
+
true);
|
|
62
|
+
case NetworkCategory.COMPRESSION:
|
|
63
|
+
return (new CompressionPlugin().validateNetworkConfig?.(config) ??
|
|
64
|
+
true);
|
|
65
|
+
default:
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
/**
|
|
70
|
+
* Get default configuration for a plugin type
|
|
71
|
+
*/
|
|
72
|
+
getDefaultConfig: (pluginType) => {
|
|
73
|
+
switch (pluginType) {
|
|
74
|
+
case NetworkCategory.CONNECTION:
|
|
75
|
+
return {
|
|
76
|
+
http2: { enabled: false, maxConcurrentStreams: 100 },
|
|
77
|
+
keepAlive: {
|
|
78
|
+
enabled: true,
|
|
79
|
+
timeout: 30000,
|
|
80
|
+
maxRequests: 1000,
|
|
81
|
+
},
|
|
82
|
+
connectionPool: { maxConnections: 1000, timeout: 5000 },
|
|
83
|
+
timeouts: {
|
|
84
|
+
connection: 10000,
|
|
85
|
+
request: 30000,
|
|
86
|
+
response: 30000,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
case NetworkCategory.COMPRESSION:
|
|
90
|
+
return {
|
|
91
|
+
enabled: true,
|
|
92
|
+
algorithms: ["gzip", "deflate"],
|
|
93
|
+
level: 6,
|
|
94
|
+
threshold: 1024,
|
|
95
|
+
contentTypes: [
|
|
96
|
+
"text/*",
|
|
97
|
+
"application/json",
|
|
98
|
+
"application/javascript",
|
|
99
|
+
"application/xml",
|
|
100
|
+
],
|
|
101
|
+
};
|
|
102
|
+
default:
|
|
103
|
+
return {};
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export { CompressionPlugin, ConnectionPlugin, NETWORK_PLUGIN_SYSTEM_NAME, NETWORK_PLUGIN_SYSTEM_VERSION, NetworkCategory, NetworkPluginFactory, NetworkPluginUtils };
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/plugins/modules/network/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;;;AAKG;AAEH;AAoBA;;AAEG;AACI,MAAM,6BAA6B,GAAG,QAAQ;AAC9C,MAAM,0BAA0B,GAAG,gCAAgC;AAE1E;;AAEG;AACU,MAAA,oBAAoB,GAAG;AAChC;;AAEG;IACH,sBAAsB,EAAE,CAAC,MAAyB,KAC9C,IAAI,gBAAgB,CAAC,MAAM,CAAC;AAEhC;;AAEG;IACH,uBAAuB,EAAE,CAAC,MAA0B,KAChD,IAAI,iBAAiB,CAAC,MAAM,CAAC;AAEjC;;AAEG;IACH,mBAAmB,EAAE,MAAM;AACvB,QAAA;AACI,YAAA,EAAE,EAAE,4BAA4B;AAChC,YAAA,IAAI,EAAE,8BAA8B;YACpC,QAAQ,EAAE,eAAe,CAAC,UAAU;AACpC,YAAA,WAAW,EAAE,mDAAmD;AACnE,SAAA;AACD,QAAA;AACI,YAAA,EAAE,EAAE,6BAA6B;AACjC,YAAA,IAAI,EAAE,6BAA6B;YACnC,QAAQ,EAAE,eAAe,CAAC,WAAW;AACrC,YAAA,WAAW,EACP,2DAA2D;AAClE,SAAA;;AAEJ,KAAA;EACH;AAEF;;AAEG;AACU,MAAA,kBAAkB,GAAG;AAC9B;;AAEG;AACH,IAAA,cAAc,EAAE,CAAC,UAA2B,EAAE,MAAW,KAAa;QAClE,QAAQ,UAAU;YACd,KAAK,eAAe,CAAC,UAAU;gBAC3B,QACI,IAAI,gBAAgB,EAAE,CAAC,qBAAqB,GAAG,MAAM,CAAC;AACtD,oBAAA,IAAI,EACN;YACN,KAAK,eAAe,CAAC,WAAW;gBAC5B,QACI,IAAI,iBAAiB,EAAE,CAAC,qBAAqB,GAAG,MAAM,CAAC;AACvD,oBAAA,IAAI,EACN;AACN,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;SACnB;KACJ;AAED;;AAEG;AACH,IAAA,gBAAgB,EAAE,CAAC,UAA2B,KAAyB;QACnE,QAAQ,UAAU;YACd,KAAK,eAAe,CAAC,UAAU;gBAC3B,OAAO;oBACH,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE;AACpD,oBAAA,SAAS,EAAE;AACP,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,WAAW,EAAE,IAAI;AACpB,qBAAA;oBACD,cAAc,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;AACvD,oBAAA,QAAQ,EAAE;AACN,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,QAAQ,EAAE,KAAK;AAClB,qBAAA;iBACgB,CAAC;YAC1B,KAAK,eAAe,CAAC,WAAW;gBAC5B,OAAO;AACH,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC/B,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,YAAY,EAAE;wBACV,QAAQ;wBACR,kBAAkB;wBAClB,wBAAwB;wBACxB,iBAAiB;AACpB,qBAAA;iBACiB,CAAC;AAC3B,YAAA;AACI,gBAAA,OAAO,EAAyB,CAAC;SACxC;KACJ;;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Network Plugin Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the XyPriss Network Plugin System
|
|
5
|
+
* Provides interfaces and types for network-related plugins
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Network plugin categories for organization
|
|
9
|
+
*/
|
|
10
|
+
var NetworkCategory;
|
|
11
|
+
(function (NetworkCategory) {
|
|
12
|
+
NetworkCategory["CONNECTION"] = "connection";
|
|
13
|
+
NetworkCategory["PROXY"] = "proxy";
|
|
14
|
+
NetworkCategory["COMPRESSION"] = "compression";
|
|
15
|
+
NetworkCategory["RATE_LIMIT"] = "rate-limit";
|
|
16
|
+
NetworkCategory["CORS"] = "cors";
|
|
17
|
+
NetworkCategory["SSL"] = "ssl";
|
|
18
|
+
NetworkCategory["WEBSOCKET"] = "websocket";
|
|
19
|
+
NetworkCategory["CACHE"] = "cache";
|
|
20
|
+
NetworkCategory["SECURITY"] = "security";
|
|
21
|
+
})(NetworkCategory || (NetworkCategory = {}));
|
|
22
|
+
|
|
23
|
+
export { NetworkCategory };
|
|
24
|
+
//# sourceMappingURL=NetworkTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkTypes.js","sources":["../../../../../../../src/plugins/modules/network/types/NetworkTypes.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;AA2FH;;AAEG;IACS,gBAUX;AAVD,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,eAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,eAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,eAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,eAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACzB,CAAC,EAVW,eAAe,KAAf,eAAe,GAU1B,EAAA,CAAA,CAAA;;;;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { CompressionPlugin } from '../builtin/CompressionPlugin.js';
|
|
2
|
+
import { ConnectionPlugin } from '../builtin/ConnectionPlugin.js';
|
|
3
|
+
import { NetworkCategory } from '../types/NetworkTypes.js';
|
|
4
|
+
|
|
5
|
+
const NetworkPluginUtils = {
|
|
6
|
+
/**
|
|
7
|
+
* Validate network plugin configuration
|
|
8
|
+
*/
|
|
9
|
+
validateConfig: (pluginType, config) => {
|
|
10
|
+
switch (pluginType) {
|
|
11
|
+
case NetworkCategory.CONNECTION:
|
|
12
|
+
return (new ConnectionPlugin().validateNetworkConfig?.(config) ??
|
|
13
|
+
true);
|
|
14
|
+
case NetworkCategory.COMPRESSION:
|
|
15
|
+
return (new CompressionPlugin().validateNetworkConfig?.(config) ??
|
|
16
|
+
true);
|
|
17
|
+
default:
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
/**
|
|
22
|
+
* Get default configuration for a plugin type
|
|
23
|
+
*/
|
|
24
|
+
getDefaultConfig: (pluginType) => {
|
|
25
|
+
switch (pluginType) {
|
|
26
|
+
case NetworkCategory.CONNECTION:
|
|
27
|
+
return {
|
|
28
|
+
http2: { enabled: false, maxConcurrentStreams: 100 },
|
|
29
|
+
keepAlive: {
|
|
30
|
+
enabled: true,
|
|
31
|
+
timeout: 30000,
|
|
32
|
+
maxRequests: 1000,
|
|
33
|
+
},
|
|
34
|
+
connectionPool: { maxConnections: 1000, timeout: 5000 },
|
|
35
|
+
timeouts: {
|
|
36
|
+
connection: 10000,
|
|
37
|
+
request: 30000,
|
|
38
|
+
response: 30000,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
case NetworkCategory.COMPRESSION:
|
|
42
|
+
return {
|
|
43
|
+
enabled: true,
|
|
44
|
+
algorithms: ["gzip", "deflate"],
|
|
45
|
+
level: 6,
|
|
46
|
+
threshold: 1024,
|
|
47
|
+
contentTypes: [
|
|
48
|
+
"text/*",
|
|
49
|
+
"application/json",
|
|
50
|
+
"application/javascript",
|
|
51
|
+
"application/xml",
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
default:
|
|
55
|
+
return {};
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { NetworkPluginUtils };
|
|
61
|
+
//# sourceMappingURL=NetworkPluginUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkPluginUtils.js","sources":["../../../../../../../src/plugins/modules/network/utils/NetworkPluginUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AASa,MAAA,kBAAkB,GAAG;AAC9B;;AAEG;AACH,IAAA,cAAc,EAAE,CAAC,UAA2B,EAAE,MAAW,KAAa;QAClE,QAAQ,UAAU;YACd,KAAK,eAAe,CAAC,UAAU;gBAC3B,QACI,IAAI,gBAAgB,EAAE,CAAC,qBAAqB,GAAG,MAAM,CAAC;AACtD,oBAAA,IAAI,EACN;YACN,KAAK,eAAe,CAAC,WAAW;gBAC5B,QACI,IAAI,iBAAiB,EAAE,CAAC,qBAAqB,GAAG,MAAM,CAAC;AACvD,oBAAA,IAAI,EACN;AACN,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;SACnB;KACJ;AAED;;AAEG;AACH,IAAA,gBAAgB,EAAE,CAAC,UAA2B,KAAyB;QACnE,QAAQ,UAAU;YACd,KAAK,eAAe,CAAC,UAAU;gBAC3B,OAAO;oBACH,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE;AACpD,oBAAA,SAAS,EAAE;AACP,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,WAAW,EAAE,IAAI;AACpB,qBAAA;oBACD,cAAc,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;AACvD,oBAAA,QAAQ,EAAE;AACN,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,QAAQ,EAAE,KAAK;AAClB,qBAAA;iBACgB,CAAC;YAC1B,KAAK,eAAe,CAAC,WAAW;gBAC5B,OAAO;AACH,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC/B,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,YAAY,EAAE;wBACV,QAAQ;wBACR,kBAAkB;wBAClB,wBAAwB;wBACxB,iBAAiB;AACpB,qBAAA;iBACiB,CAAC;AAC3B,YAAA;AACI,gBAAA,OAAO,EAAyB,CAAC;SACxC;KACJ;;;;;"}
|
|
@@ -12,6 +12,7 @@ var PluginType;
|
|
|
12
12
|
(function (PluginType) {
|
|
13
13
|
PluginType["PRE_REQUEST"] = "pre-request";
|
|
14
14
|
PluginType["SECURITY"] = "security";
|
|
15
|
+
PluginType["NETWORK"] = "network";
|
|
15
16
|
PluginType["CACHE"] = "cache";
|
|
16
17
|
PluginType["PERFORMANCE"] = "performance";
|
|
17
18
|
PluginType["POST_RESPONSE"] = "post-response";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginTypes.js","sources":["../../../../../../src/plugins/modules/types/PluginTypes.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;
|
|
1
|
+
{"version":3,"file":"PluginTypes.js","sources":["../../../../../../src/plugins/modules/types/PluginTypes.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;AAOH;AAEA;;AAEG;IACS,WASX;AATD,CAAA,UAAY,UAAU,EAAA;AAClB,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACrB,CAAC,EATW,UAAU,KAAV,UAAU,GASrB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;IACS,eAMX;AAND,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,cAAA,CAAA,cAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACP,IAAA,cAAA,CAAA,cAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAClB,CAAC,EANW,cAAc,KAAd,cAAc,GAMzB,EAAA,CAAA,CAAA,CAAA;AAqOD;AAEA;;AAEG;IACS,gBAOX;AAPD,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AACvC,IAAA,eAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C,CAAA;AAC3C,IAAA,eAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,eAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,eAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACjC,IAAA,eAAA,CAAA,gCAAA,CAAA,GAAA,gCAAiE,CAAA;AACrE,CAAC,EAPW,eAAe,KAAf,eAAe,GAO1B,EAAA,CAAA,CAAA;;;;"}
|
|
@@ -2,7 +2,53 @@ import express from 'express';
|
|
|
2
2
|
import rateLimit from 'express-rate-limit';
|
|
3
3
|
import { PluginManager } from './components/fastapi/PluginManager.js';
|
|
4
4
|
import { PluginManager as PluginManager$1 } from '../plugins/plugin-manager.js';
|
|
5
|
+
import '../plugins/modules/core/SecurityPlugin.js';
|
|
6
|
+
import '../plugins/modules/types/PluginTypes.js';
|
|
7
|
+
import 'events';
|
|
8
|
+
import '../../mods/security/src/components/fortified-function/core/fortified-function-core.js';
|
|
9
|
+
import '../../mods/security/src/components/fortified-function/core/fortified-config.js';
|
|
10
|
+
import '../../mods/security/src/components/fortified-function/core/fortified-logger.js';
|
|
11
|
+
import '../../mods/security/src/components/fortified-function/serializer/safe-serializer.js';
|
|
12
|
+
import 'nehoid';
|
|
13
|
+
import '../../mods/security/src/utils/memory/index.js';
|
|
14
|
+
import 'crypto';
|
|
15
|
+
import '../../mods/security/src/types/secure-memory.js';
|
|
16
|
+
import '../../mods/security/src/components/secure-string/advanced/entropy-analyzer.js';
|
|
17
|
+
import '../../mods/security/src/components/secure-string/advanced/quantum-safe.js';
|
|
18
|
+
import '../../mods/security/src/components/secure-string/advanced/performance-monitor.js';
|
|
19
|
+
import '../../mods/security/src/core/hash/hash-core.js';
|
|
20
|
+
import '../../mods/security/src/core/hash/hash-types.js';
|
|
21
|
+
import '../../mods/security/src/core/hash/hash-security.js';
|
|
22
|
+
import '../../mods/security/src/core/hash/hash-advanced.js';
|
|
23
|
+
import '../../mods/security/src/algorithms/hash-algorithms.js';
|
|
24
|
+
import '../../mods/security/src/core/random/random-types.js';
|
|
25
|
+
import '../../mods/security/src/core/random/random-sources.js';
|
|
26
|
+
import 'nehonix-uri-processor';
|
|
27
|
+
import '../../mods/security/src/types.js';
|
|
28
|
+
import '../../mods/security/src/components/secure-array/utils/id-generator.js';
|
|
29
|
+
import '../../mods/security/src/index.js';
|
|
5
30
|
import { initializeLogger } from '../../shared/logger/Logger.js';
|
|
31
|
+
import '../../mods/security/src/components/fortified-function/UFA/ultra-fast-allocator.js';
|
|
32
|
+
import 'argon2';
|
|
33
|
+
import 'child_process';
|
|
34
|
+
import 'https';
|
|
35
|
+
import '../../mods/security/src/components/runtime-verification.js';
|
|
36
|
+
import '../../mods/security/src/components/tamper-evident-logging.js';
|
|
37
|
+
import '../../mods/security/src/core/keys/keys-types.js';
|
|
38
|
+
import '../../mods/security/src/core/keys/keys-logger.js';
|
|
39
|
+
import '../../mods/security/src/core/keys/keys-utils.js';
|
|
40
|
+
import '../../mods/security/src/core/keys/algorithms/mods/PBKDF2Algo.js';
|
|
41
|
+
import '../../mods/security/src/core/password/index.js';
|
|
42
|
+
import 'systeminformation';
|
|
43
|
+
import 'pidusage';
|
|
44
|
+
import 'node-os-utils';
|
|
45
|
+
import '../../mods/security/src/components/cache/index.js';
|
|
46
|
+
import 'perf_hooks';
|
|
47
|
+
import '../plugins/modules/network/types/NetworkTypes.js';
|
|
48
|
+
import { ConnectionPlugin } from '../plugins/modules/network/builtin/ConnectionPlugin.js';
|
|
49
|
+
import { CompressionPlugin } from '../plugins/modules/network/builtin/CompressionPlugin.js';
|
|
50
|
+
import { ProxyPlugin } from '../plugins/modules/network/builtin/ProxyPlugin.js';
|
|
51
|
+
import { RateLimitPlugin } from '../plugins/modules/network/builtin/RateLimitPlugin.js';
|
|
6
52
|
import { PortManager } from './utils/PortManager.js';
|
|
7
53
|
import { Port } from './utils/forceClosePort.js';
|
|
8
54
|
import { ConfigLoader } from './utils/ConfigLoader.js';
|
|
@@ -20,9 +66,13 @@ import { RedirectManager } from './components/fastapi/RedirectManager.js';
|
|
|
20
66
|
import { ConsoleInterceptor } from './components/fastapi/console/ConsoleInterceptor.js';
|
|
21
67
|
import { UltraFastRequestProcessor } from './components/fastapi/UltraFastRequestProcessor.js';
|
|
22
68
|
import { createSafeJsonMiddleware } from '../middleware/safe-json-middleware.js';
|
|
69
|
+
import { netConfig } from './conf/networkConnectionConf.js';
|
|
70
|
+
import { rateLimitConfig } from './conf/rateLimitConfig.js';
|
|
71
|
+
import { proxyConfig } from './conf/proxyConfig.js';
|
|
72
|
+
import { createNotFoundHandler } from './handlers/NotFoundHandler.js';
|
|
23
73
|
|
|
24
74
|
/**
|
|
25
|
-
* XyPrissJS -
|
|
75
|
+
* XyPrissJS - Fast and Secure Express Server
|
|
26
76
|
* Main server class for XyPrissJS
|
|
27
77
|
*/
|
|
28
78
|
/**
|
|
@@ -91,6 +141,8 @@ class XyPrissServer {
|
|
|
91
141
|
this.routeManager.addMethods();
|
|
92
142
|
this.monitoringManager.addMonitoringEndpoints();
|
|
93
143
|
this.addConsoleInterceptionMethods();
|
|
144
|
+
// Add custom 404 handler as the last middleware
|
|
145
|
+
this.app.use(this.notFoundHandler.handler);
|
|
94
146
|
this.ready = true;
|
|
95
147
|
}
|
|
96
148
|
async initializeCache() {
|
|
@@ -204,8 +256,12 @@ class XyPrissServer {
|
|
|
204
256
|
this.initializeRequestManagement();
|
|
205
257
|
// Initialize server plugins
|
|
206
258
|
this.initializeServerPlugins();
|
|
259
|
+
// Initialize network plugins automatically
|
|
260
|
+
await this.initializeNetworkPlugins();
|
|
207
261
|
this.redirectManager = new RedirectManager(this.logger);
|
|
208
262
|
this.consoleInterceptor = new ConsoleInterceptor(this.logger, this.options.logging);
|
|
263
|
+
// Initialize custom 404 handler
|
|
264
|
+
this.notFoundHandler = createNotFoundHandler(this.options);
|
|
209
265
|
if (this.options.logging?.consoleInterception?.enabled) {
|
|
210
266
|
this.consoleInterceptor.start();
|
|
211
267
|
this.logger.info("console", "Console interception system activated");
|
|
@@ -630,6 +686,59 @@ class XyPrissServer {
|
|
|
630
686
|
});
|
|
631
687
|
this.logger.info("server", "Server plugins initialized");
|
|
632
688
|
}
|
|
689
|
+
/**
|
|
690
|
+
* Initialize network plugins with user-configurable options
|
|
691
|
+
*/
|
|
692
|
+
async initializeNetworkPlugins() {
|
|
693
|
+
try {
|
|
694
|
+
const networkConfig = this.options.network || {};
|
|
695
|
+
// Initialize Connection Plugin
|
|
696
|
+
if (networkConfig.connection?.enabled !== false) {
|
|
697
|
+
await this.registerPlugin(new ConnectionPlugin(netConfig(networkConfig)));
|
|
698
|
+
this.logger.debug("server", "Connection plugin initialized with user configuration");
|
|
699
|
+
}
|
|
700
|
+
// Initialize Compression Plugin
|
|
701
|
+
if (networkConfig.compression?.enabled !== false) {
|
|
702
|
+
const compressionConfig = {
|
|
703
|
+
enabled: networkConfig.compression?.enabled ?? true,
|
|
704
|
+
algorithms: (networkConfig.compression?.algorithms?.filter((alg) => alg !== "br") ?? ["gzip", "deflate"]),
|
|
705
|
+
level: networkConfig.compression?.level ?? 6,
|
|
706
|
+
threshold: networkConfig.compression?.threshold ?? 1024,
|
|
707
|
+
contentTypes: networkConfig.compression?.contentTypes ?? [
|
|
708
|
+
"text/*",
|
|
709
|
+
"application/json",
|
|
710
|
+
"application/javascript",
|
|
711
|
+
],
|
|
712
|
+
};
|
|
713
|
+
await this.registerPlugin(new CompressionPlugin(compressionConfig));
|
|
714
|
+
this.logger.debug("server", "Compression plugin initialized with user configuration");
|
|
715
|
+
}
|
|
716
|
+
// Initialize Rate Limit Plugin
|
|
717
|
+
if (networkConfig.rateLimit?.enabled !== false) {
|
|
718
|
+
await this.registerPlugin(new RateLimitPlugin(rateLimitConfig(networkConfig)));
|
|
719
|
+
this.logger.debug("server", "Rate limit plugin initialized with user configuration");
|
|
720
|
+
}
|
|
721
|
+
// Initialize Proxy Plugin
|
|
722
|
+
if (networkConfig.proxy?.enabled === true &&
|
|
723
|
+
networkConfig.proxy?.upstreams?.length) {
|
|
724
|
+
await this.registerPlugin(new ProxyPlugin(proxyConfig(networkConfig)));
|
|
725
|
+
this.logger.debug("server", "Proxy plugin initialized with user configuration");
|
|
726
|
+
}
|
|
727
|
+
else if (networkConfig.proxy?.enabled !== false) {
|
|
728
|
+
// Register proxy plugin in disabled state for potential runtime activation
|
|
729
|
+
await this.registerPlugin(new ProxyPlugin({
|
|
730
|
+
enabled: false,
|
|
731
|
+
upstreams: [],
|
|
732
|
+
loadBalancing: "round-robin",
|
|
733
|
+
}));
|
|
734
|
+
this.logger.debug("server", "Proxy plugin initialized in disabled state");
|
|
735
|
+
}
|
|
736
|
+
this.logger.info("server", "Network plugins initialized successfully with user configuration");
|
|
737
|
+
}
|
|
738
|
+
catch (error) {
|
|
739
|
+
this.logger.error("server", "Failed to initialize network plugins:", error.message);
|
|
740
|
+
}
|
|
741
|
+
}
|
|
633
742
|
/**
|
|
634
743
|
* Process middleware that was queued during immediate usage
|
|
635
744
|
*/
|
|
@@ -845,7 +954,7 @@ class XyPrissServer {
|
|
|
845
954
|
return this.pluginManager.getPluginEngineStats();
|
|
846
955
|
}
|
|
847
956
|
/**
|
|
848
|
-
* Initialize built-in plugins
|
|
957
|
+
* Initialize built-in plugins including network plugins
|
|
849
958
|
*/
|
|
850
959
|
async initializeBuiltinPlugins() {
|
|
851
960
|
try {
|