Files
smartmta/dist_ts/security/classes.securitylogger.d.ts

141 lines
4.0 KiB
TypeScript
Raw Normal View History

2026-02-10 15:54:09 +00:00
/**
* Log level for security events
*/
export declare enum SecurityLogLevel {
INFO = "info",
WARN = "warn",
ERROR = "error",
CRITICAL = "critical"
}
/**
* Security event types for categorization
*/
export declare enum SecurityEventType {
AUTHENTICATION = "authentication",
ACCESS_CONTROL = "access_control",
EMAIL_VALIDATION = "email_validation",
EMAIL_PROCESSING = "email_processing",
EMAIL_FORWARDING = "email_forwarding",
EMAIL_DELIVERY = "email_delivery",
DKIM = "dkim",
SPF = "spf",
DMARC = "dmarc",
RATE_LIMIT = "rate_limit",
RATE_LIMITING = "rate_limiting",
SPAM = "spam",
MALWARE = "malware",
CONNECTION = "connection",
DATA_EXPOSURE = "data_exposure",
CONFIGURATION = "configuration",
IP_REPUTATION = "ip_reputation",
REJECTED_CONNECTION = "rejected_connection"
}
/**
* Security event interface
*/
export interface ISecurityEvent {
timestamp: number;
level: SecurityLogLevel;
type: SecurityEventType;
message: string;
details?: any;
ipAddress?: string;
userId?: string;
sessionId?: string;
emailId?: string;
domain?: string;
action?: string;
result?: string;
success?: boolean;
}
/**
* Security logger for enhanced security monitoring
*/
export declare class SecurityLogger {
private static instance;
private securityEvents;
private maxEventHistory;
private enableNotifications;
private constructor();
/**
* Get singleton instance
*/
static getInstance(options?: {
maxEventHistory?: number;
enableNotifications?: boolean;
}): SecurityLogger;
/**
* Log a security event
* @param event The security event to log
*/
logEvent(event: Omit<ISecurityEvent, 'timestamp'>): void;
/**
* Get recent security events
* @param limit Maximum number of events to return
* @param filter Filter for specific event types
* @returns Recent security events
*/
getRecentEvents(limit?: number, filter?: {
level?: SecurityLogLevel;
type?: SecurityEventType;
fromTimestamp?: number;
toTimestamp?: number;
}): ISecurityEvent[];
/**
* Get events by security level
* @param level The security level to filter by
* @param limit Maximum number of events to return
* @returns Security events matching the level
*/
getEventsByLevel(level: SecurityLogLevel, limit?: number): ISecurityEvent[];
/**
* Get events by security type
* @param type The event type to filter by
* @param limit Maximum number of events to return
* @returns Security events matching the type
*/
getEventsByType(type: SecurityEventType, limit?: number): ISecurityEvent[];
/**
* Get security events for a specific IP address
* @param ipAddress The IP address to filter by
* @param limit Maximum number of events to return
* @returns Security events for the IP address
*/
getEventsByIP(ipAddress: string, limit?: number): ISecurityEvent[];
/**
* Get security events for a specific domain
* @param domain The domain to filter by
* @param limit Maximum number of events to return
* @returns Security events for the domain
*/
getEventsByDomain(domain: string, limit?: number): ISecurityEvent[];
/**
* Send a notification for critical security events
* @param event The security event to notify about
* @private
*/
private sendNotification;
/**
* Clear event history
*/
clearEvents(): void;
/**
* Get statistical summary of security events
* @param timeWindow Optional time window in milliseconds
* @returns Summary of security events
*/
getEventsSummary(timeWindow?: number): {
total: number;
byLevel: Record<SecurityLogLevel, number>;
byType: Record<SecurityEventType, number>;
topIPs: Array<{
ip: string;
count: number;
}>;
topDomains: Array<{
domain: string;
count: number;
}>;
};
}