UNPKG

@push.rocks/smartproxy

Version:

A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.

59 lines (58 loc) 2.49 kB
import { Buffer } from 'buffer'; import { type LoggerFunction } from './client-hello-parser.js'; /** * Connection tracking information */ export interface ConnectionInfo { sourceIp: string; sourcePort: number; destIp: string; destPort: number; timestamp?: number; } /** * Utilities for extracting SNI information from TLS handshakes */ export declare class SniExtraction { /** * Extracts the SNI (Server Name Indication) from a TLS ClientHello message. * * @param buffer The buffer containing the TLS ClientHello message * @param logger Optional logging function * @returns The extracted server name or undefined if not found */ static extractSNI(buffer: Buffer, logger?: LoggerFunction): string | undefined; /** * Attempts to extract SNI from the PSK extension in a TLS 1.3 ClientHello. * * In TLS 1.3, when a client attempts to resume a session, it may include * the server name in the PSK identity hint rather than in the SNI extension. * * @param buffer The buffer containing the TLS ClientHello message * @param logger Optional logging function * @returns The extracted server name or undefined if not found */ static extractSNIFromPSKExtension(buffer: Buffer, logger?: LoggerFunction): string | undefined; /** * Main entry point for SNI extraction with support for fragmented messages * and session resumption edge cases. * * @param buffer The buffer containing TLS data * @param connectionInfo Connection tracking information * @param logger Optional logging function * @param cachedSni Optional previously cached SNI value * @returns The extracted server name or undefined */ static extractSNIWithResumptionSupport(buffer: Buffer, connectionInfo?: ConnectionInfo, logger?: LoggerFunction, cachedSni?: string): string | undefined; /** * Unified method for processing a TLS packet and extracting SNI. * Main entry point for SNI extraction that handles all edge cases. * * @param buffer The buffer containing TLS data * @param connectionInfo Connection tracking information * @param logger Optional logging function * @param cachedSni Optional previously cached SNI value * @returns The extracted server name or undefined */ static processTlsPacket(buffer: Buffer, connectionInfo: ConnectionInfo, logger?: LoggerFunction, cachedSni?: string): string | undefined; }