Implement Metrics Manager and Integrate Metrics Collection

- Removed the existing readme.opsserver.md file as it is no longer needed.
- Added a new MetricsManager class to handle metrics collection using @push.rocks/smartmetrics.
- Integrated MetricsManager into the DcRouter and OpsServer classes.
- Updated StatsHandler and SecurityHandler to retrieve metrics from MetricsManager.
- Implemented methods for tracking email, DNS, and security metrics.
- Added connection tracking capabilities to the MetricsManager.
- Created a new readme.metrics.md file outlining the metrics implementation plan.
- Adjusted plugins.ts to include smartmetrics.
- Added a new monitoring directory with classes for metrics management.
- Created readme.module-adjustments.md to document necessary adjustments for SmartProxy and SmartDNS.
This commit is contained in:
2025-06-09 16:03:27 +00:00
parent 554d245c0c
commit 93995d5031
11 changed files with 826 additions and 384 deletions

View File

@ -1,6 +1,7 @@
import * as plugins from '../../plugins.js';
import type { OpsServer } from '../classes.opsserver.js';
import * as interfaces from '../../../ts_interfaces/index.js';
import { MetricsManager } from '../../monitoring/index.js';
export class SecurityHandler {
public typedrouter = new plugins.typedrequest.TypedRouter();
@ -120,7 +121,29 @@ export class SecurityHandler {
phishing: Array<{ timestamp: number; value: number }>;
};
}> {
// TODO: Implement actual security metrics collection
// Get metrics from MetricsManager if available
if (this.opsServerRef.dcRouterRef.metricsManager) {
const securityStats = await this.opsServerRef.dcRouterRef.metricsManager.getSecurityStats();
return {
blockedIPs: [], // TODO: Track actual blocked IPs
reputationScores: {},
spamDetection: {
detected: securityStats.spamDetected,
falsePositives: 0,
},
malwareDetected: securityStats.malwareDetected,
phishingDetected: securityStats.phishingDetected,
authFailures: securityStats.authFailures,
suspiciousActivities: 0,
trends: {
spam: [],
malware: [],
phishing: [],
},
};
}
// Fallback if MetricsManager not available
return {
blockedIPs: [],
reputationScores: {},
@ -178,11 +201,31 @@ export class SecurityHandler {
status: 'active' | 'idle' | 'closing';
}> = [];
// TODO: Implement actual connection tracking
// This would collect from:
// - SmartProxy connections
// - Email server connections
// - DNS server connections
// Get connection info from MetricsManager if available
if (this.opsServerRef.dcRouterRef.metricsManager) {
const connectionInfo = await this.opsServerRef.dcRouterRef.metricsManager.getConnectionInfo();
// Map connection info to detailed format
// Note: Some fields will be placeholder values until more detailed tracking is implemented
connectionInfo.forEach((info, index) => {
connections.push({
id: `conn-${index}`,
type: 'http', // TODO: Determine from source/protocol
source: {
ip: '0.0.0.0', // TODO: Track actual source IPs
port: 0,
},
destination: {
ip: '0.0.0.0',
port: 443,
service: info.source,
},
startTime: info.lastActivity.getTime(),
bytesTransferred: 0, // TODO: Track bytes per connection
status: 'active',
});
});
}
return connections;
}