79 lines
2.6 KiB
TypeScript
79 lines
2.6 KiB
TypeScript
/**
|
|
* SMTP Helper Functions
|
|
* Provides utility functions for SMTP server implementation
|
|
*/
|
|
import * as plugins from '../../../../plugins.js';
|
|
import type { ISmtpServerOptions } from '../interfaces.js';
|
|
/**
|
|
* Formats a multi-line SMTP response according to RFC 5321
|
|
* @param code - Response code
|
|
* @param lines - Response lines
|
|
* @returns Formatted SMTP response
|
|
*/
|
|
export declare function formatMultilineResponse(code: number, lines: string[]): string;
|
|
/**
|
|
* Generates a unique session ID
|
|
* @returns Unique session ID
|
|
*/
|
|
export declare function generateSessionId(): string;
|
|
/**
|
|
* Safely parses an integer from string with a default value
|
|
* @param value - String value to parse
|
|
* @param defaultValue - Default value if parsing fails
|
|
* @returns Parsed integer or default value
|
|
*/
|
|
export declare function safeParseInt(value: string | undefined, defaultValue: number): number;
|
|
/**
|
|
* Safely gets the socket details
|
|
* @param socket - Socket to get details from
|
|
* @returns Socket details object
|
|
*/
|
|
export declare function getSocketDetails(socket: plugins.net.Socket | plugins.tls.TLSSocket): {
|
|
remoteAddress: string;
|
|
remotePort: number;
|
|
remoteFamily: string;
|
|
localAddress: string;
|
|
localPort: number;
|
|
encrypted: boolean;
|
|
};
|
|
/**
|
|
* Gets TLS details if socket is TLS
|
|
* @param socket - Socket to get TLS details from
|
|
* @returns TLS details or undefined if not TLS
|
|
*/
|
|
export declare function getTlsDetails(socket: plugins.net.Socket | plugins.tls.TLSSocket): {
|
|
protocol?: string;
|
|
cipher?: string;
|
|
authorized?: boolean;
|
|
} | undefined;
|
|
/**
|
|
* Merges default options with provided options
|
|
* @param options - User provided options
|
|
* @returns Merged options with defaults
|
|
*/
|
|
export declare function mergeWithDefaults(options: Partial<ISmtpServerOptions>): ISmtpServerOptions;
|
|
/**
|
|
* Creates a text response formatter for the SMTP server
|
|
* @param socket - Socket to send responses to
|
|
* @returns Function to send formatted response
|
|
*/
|
|
export declare function createResponseFormatter(socket: plugins.net.Socket | plugins.tls.TLSSocket): (response: string) => void;
|
|
/**
|
|
* Extracts SMTP command name from a command line
|
|
* @param commandLine - Full command line
|
|
* @returns Command name in uppercase
|
|
*/
|
|
export declare function extractCommandName(commandLine: string): string;
|
|
/**
|
|
* Extracts SMTP command arguments from a command line
|
|
* @param commandLine - Full command line
|
|
* @returns Arguments string
|
|
*/
|
|
export declare function extractCommandArgs(commandLine: string): string;
|
|
/**
|
|
* Sanitizes data for logging (hides sensitive info)
|
|
* @param data - Data to sanitize
|
|
* @returns Sanitized data
|
|
*/
|
|
export declare function sanitizeForLogging(data: any): any;
|