diff --git a/.gitignore b/.gitignore index 4e4038b..33e5f54 100644 --- a/.gitignore +++ b/.gitignore @@ -19,5 +19,5 @@ dist_*/ # custom **/.claude/settings.local.json -data/ +.nogit/data/ readme.plan.md diff --git a/ts_interfaces/data/auth.ts b/ts_interfaces/data/auth.ts new file mode 100644 index 0000000..45b7f00 --- /dev/null +++ b/ts_interfaces/data/auth.ts @@ -0,0 +1,8 @@ +export interface IIdentity { + jwt: string; + userId: string; + name: string; + expiresAt: number; + role?: string; + type?: string; +} \ No newline at end of file diff --git a/ts_interfaces/data/index.ts b/ts_interfaces/data/index.ts new file mode 100644 index 0000000..df78ce3 --- /dev/null +++ b/ts_interfaces/data/index.ts @@ -0,0 +1,2 @@ +export * from './auth.js'; +export * from './stats.js'; \ No newline at end of file diff --git a/ts_interfaces/data/stats.ts b/ts_interfaces/data/stats.ts new file mode 100644 index 0000000..f49c41f --- /dev/null +++ b/ts_interfaces/data/stats.ts @@ -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; +} \ No newline at end of file