@samanhappy/mcphub 1.0.24 → 1.0.25
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/db/connection.js +96 -60
- package/dist/db/connection.js.map +1 -1
- package/dist/db/repositories/SystemConfigRepository.js +37 -15
- package/dist/db/repositories/SystemConfigRepository.js.map +1 -1
- package/dist/services/mcpService.js +46 -1
- package/dist/services/mcpService.js.map +1 -1
- package/dist/utils/dbRetry.js +1 -0
- package/dist/utils/dbRetry.js.map +1 -1
- package/frontend/dist/assets/{ActivityPage-ClYamLqW.js → ActivityPage-BuY3HRab.js} +2 -2
- package/frontend/dist/assets/{ActivityPage-ClYamLqW.js.map → ActivityPage-BuY3HRab.js.map} +1 -1
- package/frontend/dist/assets/{Dashboard-XMPV4Ypu.js → Dashboard-bO5Xtzsq.js} +2 -2
- package/frontend/dist/assets/{Dashboard-XMPV4Ypu.js.map → Dashboard-bO5Xtzsq.js.map} +1 -1
- package/frontend/dist/assets/{EndpointCopy-Ch7HbIsp.js → EndpointCopy-5nz6zs3k.js} +2 -2
- package/frontend/dist/assets/{EndpointCopy-Ch7HbIsp.js.map → EndpointCopy-5nz6zs3k.js.map} +1 -1
- package/frontend/dist/assets/{GroupsPage-DkUg6Xih.js → GroupsPage-cW-uxB8G.js} +2 -2
- package/frontend/dist/assets/{GroupsPage-DkUg6Xih.js.map → GroupsPage-cW-uxB8G.js.map} +1 -1
- package/frontend/dist/assets/{LoginPage-Chm4p59K.js → LoginPage-E5RJsYsm.js} +2 -2
- package/frontend/dist/assets/{LoginPage-Chm4p59K.js.map → LoginPage-E5RJsYsm.js.map} +1 -1
- package/frontend/dist/assets/{LogsPage-D0QA2y2j.js → LogsPage-B7NIiglx.js} +2 -2
- package/frontend/dist/assets/{LogsPage-D0QA2y2j.js.map → LogsPage-B7NIiglx.js.map} +1 -1
- package/frontend/dist/assets/{MarketPage-CU9wn6vM.js → MarketPage-B_DUnxPX.js} +2 -2
- package/frontend/dist/assets/{MarketPage-CU9wn6vM.js.map → MarketPage-B_DUnxPX.js.map} +1 -1
- package/frontend/dist/assets/{PromptsPage-Iht1gTW7.js → PromptsPage-DRsO8XiQ.js} +2 -2
- package/frontend/dist/assets/{PromptsPage-Iht1gTW7.js.map → PromptsPage-DRsO8XiQ.js.map} +1 -1
- package/frontend/dist/assets/{ResourcesPage-DsOhIF8m.js → ResourcesPage-bVfPTdff.js} +2 -2
- package/frontend/dist/assets/{ResourcesPage-DsOhIF8m.js.map → ResourcesPage-bVfPTdff.js.map} +1 -1
- package/frontend/dist/assets/{ServersPage-Dq_yBsZM.js → ServersPage-V8rY98M6.js} +4 -4
- package/frontend/dist/assets/{ServersPage-Dq_yBsZM.js.map → ServersPage-V8rY98M6.js.map} +1 -1
- package/frontend/dist/assets/{SettingsPage-DoHjlHsl.js → SettingsPage-Cq_1HeWE.js} +2 -2
- package/frontend/dist/assets/{SettingsPage-DoHjlHsl.js.map → SettingsPage-Cq_1HeWE.js.map} +1 -1
- package/frontend/dist/assets/{StatusDot-BF-uWsCA.js → StatusDot-BoDsWVzY.js} +2 -2
- package/frontend/dist/assets/{StatusDot-BF-uWsCA.js.map → StatusDot-BoDsWVzY.js.map} +1 -1
- package/frontend/dist/assets/{ToggleGroup-DMC5NEP5.js → ToggleGroup-D8PkTqMI.js} +2 -2
- package/frontend/dist/assets/{ToggleGroup-DMC5NEP5.js.map → ToggleGroup-D8PkTqMI.js.map} +1 -1
- package/frontend/dist/assets/{UsersPage-BA9TJs2F.js → UsersPage-135nXZTG.js} +2 -2
- package/frontend/dist/assets/{UsersPage-BA9TJs2F.js.map → UsersPage-135nXZTG.js.map} +1 -1
- package/frontend/dist/assets/{contextCost-KhOeuF-d.js → contextCost-4glX9T0N.js} +2 -2
- package/frontend/dist/assets/{contextCost-KhOeuF-d.js.map → contextCost-4glX9T0N.js.map} +1 -1
- package/frontend/dist/assets/{index-xwxOTCc_.js → index-CXPQETnb.js} +3 -3
- package/frontend/dist/assets/{index-xwxOTCc_.js.map → index-CXPQETnb.js.map} +1 -1
- package/frontend/dist/assets/{resourceService-OokeUb4C.js → resourceService-DsVPipmK.js} +2 -2
- package/frontend/dist/assets/{resourceService-OokeUb4C.js.map → resourceService-DsVPipmK.js.map} +1 -1
- package/frontend/dist/assets/useSettingsData-BHaYBWNy.js +2 -0
- package/frontend/dist/assets/{useSettingsData-DegWU8bg.js.map → useSettingsData-BHaYBWNy.js.map} +1 -1
- package/frontend/dist/index.html +1 -1
- package/package.json +4 -4
- package/frontend/dist/assets/useSettingsData-DegWU8bg.js +0 -2
package/dist/db/connection.js
CHANGED
|
@@ -12,7 +12,7 @@ const CONNECTION_CONFIG = {
|
|
|
12
12
|
poolSize: parseInt(process.env.DB_POOL_SIZE || '10', 10),
|
|
13
13
|
poolIdleTimeout: parseInt(process.env.DB_POOL_IDLE_TIMEOUT || '30000', 10), // 30 seconds
|
|
14
14
|
connectionTimeout: parseInt(process.env.DB_CONNECTION_TIMEOUT || '60000', 10), // 60 seconds
|
|
15
|
-
//
|
|
15
|
+
// Automatic reconnection settings
|
|
16
16
|
maxConnectionRetries: parseInt(process.env.DB_MAX_CONNECTION_RETRIES || '5', 10),
|
|
17
17
|
connectionRetryDelayMs: parseInt(process.env.DB_CONNECTION_RETRY_DELAY || '3000', 10),
|
|
18
18
|
// Health check settings
|
|
@@ -24,6 +24,7 @@ let healthCheckInterval = null;
|
|
|
24
24
|
let isHealthy = false;
|
|
25
25
|
let lastHealthCheckError = null;
|
|
26
26
|
let reconnectionInProgress = false;
|
|
27
|
+
let reconnectionPromise = null;
|
|
27
28
|
// Helper function to create required PostgreSQL extensions
|
|
28
29
|
const createRequiredExtensions = async (dataSource) => {
|
|
29
30
|
try {
|
|
@@ -125,19 +126,10 @@ export const getAppDataSource = () => {
|
|
|
125
126
|
}
|
|
126
127
|
return appDataSource;
|
|
127
128
|
};
|
|
128
|
-
// Reconnect database
|
|
129
|
+
// Reconnect the database using the current DataSource configuration
|
|
129
130
|
export const reconnectDatabase = async () => {
|
|
130
131
|
try {
|
|
131
|
-
|
|
132
|
-
if (appDataSource && appDataSource.isInitialized) {
|
|
133
|
-
console.log('Closing existing database connection...');
|
|
134
|
-
await appDataSource.destroy();
|
|
135
|
-
}
|
|
136
|
-
// Reset initialization promise to allow fresh initialization
|
|
137
|
-
initializationPromise = null;
|
|
138
|
-
// Update configuration and reconnect
|
|
139
|
-
appDataSource = await updateDataSourceConfig();
|
|
140
|
-
return await initializeDatabase();
|
|
132
|
+
return await attemptReconnection();
|
|
141
133
|
}
|
|
142
134
|
catch (error) {
|
|
143
135
|
console.error('Error during database reconnection:', error);
|
|
@@ -380,11 +372,25 @@ export const getDatabaseHealth = () => {
|
|
|
380
372
|
};
|
|
381
373
|
// Perform a health check on the database connection
|
|
382
374
|
export const checkDatabaseHealth = async () => {
|
|
383
|
-
if (!appDataSource
|
|
375
|
+
if (!appDataSource) {
|
|
384
376
|
isHealthy = false;
|
|
385
377
|
lastHealthCheckError = new Error('Database not initialized');
|
|
386
378
|
return false;
|
|
387
379
|
}
|
|
380
|
+
if (!appDataSource.isInitialized) {
|
|
381
|
+
isHealthy = false;
|
|
382
|
+
lastHealthCheckError = new Error('Database not initialized');
|
|
383
|
+
console.log('[DB Health] DataSource is disconnected, attempting reconnection...');
|
|
384
|
+
try {
|
|
385
|
+
await attemptReconnection();
|
|
386
|
+
return true;
|
|
387
|
+
}
|
|
388
|
+
catch (error) {
|
|
389
|
+
lastHealthCheckError = error instanceof Error ? error : new Error(String(error));
|
|
390
|
+
console.error('[DB Health] Reconnection attempt failed:', lastHealthCheckError.message);
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
388
394
|
try {
|
|
389
395
|
// Simple query to check connection
|
|
390
396
|
await appDataSource.query('SELECT 1');
|
|
@@ -397,11 +403,17 @@ export const checkDatabaseHealth = async () => {
|
|
|
397
403
|
lastHealthCheckError = error instanceof Error ? error : new Error(String(error));
|
|
398
404
|
console.warn('[DB Health] Health check failed:', lastHealthCheckError.message);
|
|
399
405
|
// If it's a retryable error, attempt reconnection
|
|
400
|
-
if (isRetryableDbError(error)
|
|
406
|
+
if (isRetryableDbError(error)) {
|
|
401
407
|
console.log('[DB Health] Detected connection issue, attempting reconnection...');
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
408
|
+
try {
|
|
409
|
+
await attemptReconnection();
|
|
410
|
+
return true;
|
|
411
|
+
}
|
|
412
|
+
catch (reconnectError) {
|
|
413
|
+
lastHealthCheckError =
|
|
414
|
+
reconnectError instanceof Error ? reconnectError : new Error(String(reconnectError));
|
|
415
|
+
console.error('[DB Health] Reconnection attempt failed:', lastHealthCheckError.message);
|
|
416
|
+
}
|
|
405
417
|
}
|
|
406
418
|
return false;
|
|
407
419
|
}
|
|
@@ -427,55 +439,79 @@ export const stopHealthCheck = () => {
|
|
|
427
439
|
}
|
|
428
440
|
};
|
|
429
441
|
// Attempt to reconnect to the database with retries
|
|
430
|
-
const attemptReconnection =
|
|
431
|
-
if (
|
|
432
|
-
console.log('[DB Reconnect] Reconnection already in progress,
|
|
433
|
-
return;
|
|
442
|
+
const attemptReconnection = () => {
|
|
443
|
+
if (reconnectionPromise) {
|
|
444
|
+
console.log('[DB Reconnect] Reconnection already in progress, waiting...');
|
|
445
|
+
return reconnectionPromise;
|
|
434
446
|
}
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
console.log('[DB Reconnect] Closing existing connection...');
|
|
442
|
-
await appDataSource.destroy();
|
|
443
|
-
}
|
|
444
|
-
catch (closeError) {
|
|
445
|
-
console.warn('[DB Reconnect] Error closing connection:', closeError.message);
|
|
447
|
+
const promise = (async () => {
|
|
448
|
+
reconnectionInProgress = true;
|
|
449
|
+
console.log('[DB Reconnect] Starting reconnection attempt...');
|
|
450
|
+
try {
|
|
451
|
+
if (!appDataSource) {
|
|
452
|
+
return await initializeDatabase();
|
|
446
453
|
}
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
return;
|
|
454
|
+
const dataSource = appDataSource;
|
|
455
|
+
if (dataSource.isInitialized) {
|
|
456
|
+
try {
|
|
457
|
+
console.log('[DB Reconnect] Closing existing connection...');
|
|
458
|
+
await dataSource.destroy();
|
|
459
|
+
}
|
|
460
|
+
catch (closeError) {
|
|
461
|
+
console.warn('[DB Reconnect] Error closing connection:', closeError.message);
|
|
462
|
+
// TypeORM only clears this flag after driver.disconnect() succeeds.
|
|
463
|
+
// If the driver pool is already gone, destroy() throws first and leaves
|
|
464
|
+
// the DataSource incorrectly marked as initialized.
|
|
465
|
+
Object.assign(dataSource, { isInitialized: false });
|
|
466
|
+
}
|
|
461
467
|
}
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
468
|
+
let lastError = null;
|
|
469
|
+
for (let attempt = 1; attempt <= CONNECTION_CONFIG.maxConnectionRetries; attempt++) {
|
|
470
|
+
try {
|
|
471
|
+
console.log(`[DB Reconnect] Connection attempt ${attempt}/${CONNECTION_CONFIG.maxConnectionRetries}...`);
|
|
472
|
+
await dataSource.initialize();
|
|
473
|
+
registerPostgresVectorType(dataSource);
|
|
474
|
+
appDataSource = dataSource;
|
|
475
|
+
console.log('[DB Reconnect] Successfully reconnected to database');
|
|
476
|
+
isHealthy = true;
|
|
477
|
+
lastHealthCheckError = null;
|
|
478
|
+
return dataSource;
|
|
479
|
+
}
|
|
480
|
+
catch (error) {
|
|
481
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
482
|
+
console.warn(`[DB Reconnect] Attempt ${attempt} failed: ${lastError.message}`);
|
|
483
|
+
if (dataSource.isInitialized) {
|
|
484
|
+
try {
|
|
485
|
+
await dataSource.destroy();
|
|
486
|
+
}
|
|
487
|
+
catch (destroyError) {
|
|
488
|
+
console.warn('[DB Reconnect] Error cleaning up partially initialized connection:', destroyError.message);
|
|
489
|
+
Object.assign(dataSource, { isInitialized: false });
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
if (attempt < CONNECTION_CONFIG.maxConnectionRetries) {
|
|
493
|
+
const delay = CONNECTION_CONFIG.connectionRetryDelayMs * Math.pow(2, attempt - 1);
|
|
494
|
+
console.log(`[DB Reconnect] Waiting ${delay}ms before next attempt...`);
|
|
495
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
496
|
+
}
|
|
469
497
|
}
|
|
470
498
|
}
|
|
499
|
+
console.error(`[DB Reconnect] Failed to reconnect after ${CONNECTION_CONFIG.maxConnectionRetries} attempts`);
|
|
500
|
+
lastHealthCheckError = lastError;
|
|
501
|
+
throw lastError || new Error('Database reconnection failed');
|
|
471
502
|
}
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
503
|
+
finally {
|
|
504
|
+
reconnectionInProgress = false;
|
|
505
|
+
reconnectionPromise = null;
|
|
506
|
+
initializationPromise = null;
|
|
507
|
+
}
|
|
508
|
+
})();
|
|
509
|
+
// Reuse the existing DataSource options. Resolving the URL through the
|
|
510
|
+
// database-backed system config is impossible while that database is down.
|
|
511
|
+
// Initialization callers must wait for the same reconnection attempt.
|
|
512
|
+
reconnectionPromise = promise;
|
|
513
|
+
initializationPromise = promise;
|
|
514
|
+
return promise;
|
|
479
515
|
};
|
|
480
516
|
// Close database connection
|
|
481
517
|
export const closeDatabase = async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SystemConfig } from '../entities/SystemConfig.js';
|
|
2
|
-
import { getAppDataSource } from '../connection.js';
|
|
2
|
+
import { getAppDataSource, reconnectDatabase } from '../connection.js';
|
|
3
3
|
import { cloneDefaultOAuthServerConfig } from '../../constants/oauthServerDefaults.js';
|
|
4
|
+
import { isRetryableDbError } from '../../utils/dbRetry.js';
|
|
4
5
|
/**
|
|
5
6
|
* Repository for SystemConfig entity
|
|
6
7
|
* Uses singleton pattern with id = 'default'
|
|
@@ -8,16 +9,27 @@ import { cloneDefaultOAuthServerConfig } from '../../constants/oauthServerDefaul
|
|
|
8
9
|
export class SystemConfigRepository {
|
|
9
10
|
constructor() {
|
|
10
11
|
this.DEFAULT_ID = 'default';
|
|
11
|
-
this.repository = getAppDataSource().getRepository(SystemConfig);
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
async
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
getRepository() {
|
|
14
|
+
return getAppDataSource().getRepository(SystemConfig);
|
|
15
|
+
}
|
|
16
|
+
async withConnectionRecovery(operation) {
|
|
17
|
+
try {
|
|
18
|
+
return await operation(this.getRepository());
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
if (!isRetryableDbError(error)) {
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
console.warn('[DB Recovery] System config operation failed, reconnecting...');
|
|
25
|
+
await reconnectDatabase();
|
|
26
|
+
return await operation(this.getRepository());
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async getConfig(repository) {
|
|
30
|
+
let config = await repository.findOne({ where: { id: this.DEFAULT_ID } });
|
|
19
31
|
if (!config) {
|
|
20
|
-
config =
|
|
32
|
+
config = repository.create({
|
|
21
33
|
id: this.DEFAULT_ID,
|
|
22
34
|
routing: {},
|
|
23
35
|
install: {},
|
|
@@ -31,24 +43,34 @@ export class SystemConfigRepository {
|
|
|
31
43
|
enableSessionRebuild: false,
|
|
32
44
|
discovery: {},
|
|
33
45
|
});
|
|
34
|
-
config = await
|
|
46
|
+
config = await repository.save(config);
|
|
35
47
|
}
|
|
36
48
|
return config;
|
|
37
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Get system configuration (singleton)
|
|
52
|
+
*/
|
|
53
|
+
async get() {
|
|
54
|
+
return this.withConnectionRecovery((repository) => this.getConfig(repository));
|
|
55
|
+
}
|
|
38
56
|
/**
|
|
39
57
|
* Update system configuration
|
|
40
58
|
*/
|
|
41
59
|
async update(configData) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
60
|
+
return this.withConnectionRecovery(async (repository) => {
|
|
61
|
+
const config = await this.getConfig(repository);
|
|
62
|
+
const updated = repository.merge(config, configData);
|
|
63
|
+
return await repository.save(updated);
|
|
64
|
+
});
|
|
45
65
|
}
|
|
46
66
|
/**
|
|
47
67
|
* Reset system configuration to defaults
|
|
48
68
|
*/
|
|
49
69
|
async reset() {
|
|
50
|
-
|
|
51
|
-
|
|
70
|
+
return this.withConnectionRecovery(async (repository) => {
|
|
71
|
+
await repository.delete({ id: this.DEFAULT_ID });
|
|
72
|
+
return await this.getConfig(repository);
|
|
73
|
+
});
|
|
52
74
|
}
|
|
53
75
|
/**
|
|
54
76
|
* Get a specific configuration section
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemConfigRepository.js","sourceRoot":"","sources":["../../../src/db/repositories/SystemConfigRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"SystemConfigRepository.js","sourceRoot":"","sources":["../../../src/db/repositories/SystemConfigRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;GAGG;AACH,MAAM,OAAO,sBAAsB;IAAnC;QACmB,eAAU,GAAG,SAAS,CAAC;IA2F1C,CAAC;IAzFS,aAAa;QACnB,OAAO,gBAAgB,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,SAA+D;QAE/D,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;YAC9E,MAAM,iBAAiB,EAAE,CAAC;YAC1B,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,UAAoC;QAC1D,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAE1E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;gBACzB,EAAE,EAAE,IAAI,CAAC,UAAU;gBACnB,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;gBACX,YAAY,EAAE,EAAE;gBAChB,qBAAqB,EAAE,EAAE;gBACzB,SAAS,EAAE,EAAE;gBACb,aAAa,EAAE,GAAG;gBAClB,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,6BAA6B,EAAE;gBAC5C,IAAI,EAAE,EAAE;gBACR,oBAAoB,EAAE,KAAK;gBAC3B,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;YACH,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG;QACP,OAAO,IAAI,CAAC,sBAAsB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACjF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,UAAiC;QAC5C,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACrD,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YACtD,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACjD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAA+B,OAAU;QACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,OAAU,EACV,KAAsB;QAEtB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAA2B,CAAC,CAAC;IAC1E,CAAC;CACF;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -114,6 +114,44 @@ ${proxyLine}
|
|
|
114
114
|
console.log(`[${serverName}] Generated proxychains4 config: ${configPath}`);
|
|
115
115
|
return configPath;
|
|
116
116
|
};
|
|
117
|
+
/**
|
|
118
|
+
* Validate that a command is safe to execute.
|
|
119
|
+
* Blocks shell builtins and common injection patterns.
|
|
120
|
+
*/
|
|
121
|
+
const isSafeCommand = (command) => {
|
|
122
|
+
// Block shell builtins that could be used for command injection
|
|
123
|
+
const blockedCommands = new Set([
|
|
124
|
+
'sh', 'bash', 'zsh', 'fish', 'csh', 'ksh', 'tcsh',
|
|
125
|
+
'cmd', 'powershell', 'pwsh',
|
|
126
|
+
'eval', 'exec', 'source', '.',
|
|
127
|
+
]);
|
|
128
|
+
const basename = command.split('/').pop()?.split('\\').pop()?.toLowerCase() || '';
|
|
129
|
+
if (blockedCommands.has(basename)) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
// Block commands with shell metacharacters
|
|
133
|
+
if (/[;&|`$(){}[\]!]/.test(command)) {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
return true;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Sanitize arguments to prevent command injection.
|
|
140
|
+
* Removes shell metacharacters and dangerous patterns.
|
|
141
|
+
*/
|
|
142
|
+
const sanitizeArgs = (args) => {
|
|
143
|
+
return args.map(arg => {
|
|
144
|
+
// Remove shell metacharacters that could be used for injection
|
|
145
|
+
// Allow common flags (-f, --flag, -vvv) and paths
|
|
146
|
+
if (/^[a-zA-Z0-9._/\\:@=+,-]+$/.test(arg)) {
|
|
147
|
+
return arg;
|
|
148
|
+
}
|
|
149
|
+
// For arguments with special characters, log a warning
|
|
150
|
+
// Also block redirection operators (>, <, >>) and newlines
|
|
151
|
+
console.warn(`[proxychains] Potentially unsafe argument blocked: ${arg}`);
|
|
152
|
+
return arg.replace(/[;&|`$(){}[\]!><\n\r]/g, '');
|
|
153
|
+
});
|
|
154
|
+
};
|
|
117
155
|
/**
|
|
118
156
|
* Wrap a command with proxychains4 if proxy is configured and available.
|
|
119
157
|
* Returns modified command and args if proxychains4 is used, original values otherwise.
|
|
@@ -128,6 +166,11 @@ const wrapWithProxychains = (serverName, command, args, proxyConfig) => {
|
|
|
128
166
|
console.warn(`[${serverName}] proxychains4 proxy is not supported on Windows, ignoring proxy configuration`);
|
|
129
167
|
return { command, args };
|
|
130
168
|
}
|
|
169
|
+
// SECURITY: Validate command is safe
|
|
170
|
+
if (!isSafeCommand(command)) {
|
|
171
|
+
console.error(`[${serverName}] Blocked unsafe command for proxychains4 wrapping: ${command}`);
|
|
172
|
+
throw new Error(`[${serverName}] Unsafe command blocked: ${command}. Shell builtins and metacharacters are not allowed.`);
|
|
173
|
+
}
|
|
131
174
|
// Find proxychains4 binary
|
|
132
175
|
const proxychains4Path = findProxychains4();
|
|
133
176
|
if (!proxychains4Path) {
|
|
@@ -140,11 +183,13 @@ const wrapWithProxychains = (serverName, command, args, proxyConfig) => {
|
|
|
140
183
|
console.warn(`[${serverName}] Failed to setup proxychains4 configuration, skipping proxy`);
|
|
141
184
|
return { command, args };
|
|
142
185
|
}
|
|
186
|
+
// SECURITY: Sanitize arguments
|
|
187
|
+
const sanitizedArgs = sanitizeArgs(args);
|
|
143
188
|
// Wrap command with proxychains4
|
|
144
189
|
console.log(`[${serverName}] Using proxychains4 proxy: ${proxyConfig.type || 'socks5'}://${proxyConfig.host}:${proxyConfig.port}`);
|
|
145
190
|
return {
|
|
146
191
|
command: proxychains4Path,
|
|
147
|
-
args: ['-f', configPath, command, ...
|
|
192
|
+
args: ['-f', configPath, command, ...sanitizedArgs],
|
|
148
193
|
};
|
|
149
194
|
};
|
|
150
195
|
export const initUpstreamServers = async () => {
|