feat: add TypeScript interfaces for authentication and server statistics
This commit is contained in:
101
ts_interfaces/data/stats.ts
Normal file
101
ts_interfaces/data/stats.ts
Normal file
@ -0,0 +1,101 @@
|
||||
export interface IServerStats {
|
||||
uptime: number;
|
||||
startTime: number;
|
||||
memoryUsage: {
|
||||
heapUsed: number;
|
||||
heapTotal: number;
|
||||
external: number;
|
||||
rss: number;
|
||||
};
|
||||
cpuUsage: {
|
||||
user: number;
|
||||
system: number;
|
||||
};
|
||||
activeConnections: number;
|
||||
totalConnections: number;
|
||||
}
|
||||
|
||||
export interface IEmailStats {
|
||||
sent: number;
|
||||
received: number;
|
||||
bounced: number;
|
||||
queued: number;
|
||||
failed: number;
|
||||
averageDeliveryTime: number;
|
||||
deliveryRate: number;
|
||||
bounceRate: number;
|
||||
}
|
||||
|
||||
export interface IDnsStats {
|
||||
totalQueries: number;
|
||||
cacheHits: number;
|
||||
cacheMisses: number;
|
||||
cacheHitRate: number;
|
||||
activeDomains: number;
|
||||
averageResponseTime: number;
|
||||
queryTypes: {
|
||||
[key: string]: number;
|
||||
};
|
||||
}
|
||||
|
||||
export interface IRateLimitInfo {
|
||||
domain: string;
|
||||
currentRate: number;
|
||||
limit: number;
|
||||
remaining: number;
|
||||
resetTime: number;
|
||||
blocked: boolean;
|
||||
}
|
||||
|
||||
export interface ISecurityMetrics {
|
||||
blockedIPs: string[];
|
||||
reputationScores: {
|
||||
[domain: string]: number;
|
||||
};
|
||||
spamDetected: number;
|
||||
malwareDetected: number;
|
||||
phishingDetected: number;
|
||||
authenticationFailures: number;
|
||||
suspiciousActivities: number;
|
||||
}
|
||||
|
||||
export interface ILogEntry {
|
||||
timestamp: number;
|
||||
level: 'debug' | 'info' | 'warn' | 'error';
|
||||
category: 'smtp' | 'dns' | 'security' | 'system' | 'email';
|
||||
message: string;
|
||||
metadata?: any;
|
||||
}
|
||||
|
||||
export interface IConnectionInfo {
|
||||
id: string;
|
||||
remoteAddress: string;
|
||||
localAddress: string;
|
||||
startTime: number;
|
||||
protocol: 'smtp' | 'smtps' | 'http' | 'https';
|
||||
state: 'connecting' | 'connected' | 'authenticated' | 'transmitting' | 'closing';
|
||||
bytesReceived: number;
|
||||
bytesSent: number;
|
||||
}
|
||||
|
||||
export interface IQueueStatus {
|
||||
name: string;
|
||||
size: number;
|
||||
processing: number;
|
||||
failed: number;
|
||||
retrying: number;
|
||||
averageProcessingTime: number;
|
||||
}
|
||||
|
||||
export interface IHealthStatus {
|
||||
healthy: boolean;
|
||||
uptime: number;
|
||||
services: {
|
||||
[service: string]: {
|
||||
status: 'healthy' | 'degraded' | 'unhealthy';
|
||||
message?: string;
|
||||
lastCheck: number;
|
||||
};
|
||||
};
|
||||
version?: string;
|
||||
}
|
Reference in New Issue
Block a user