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.

201 lines (200 loc) 5.98 kB
import type { ICertificateData, ICertificateFailure, ICertificateExpiring } from '../models/common-types.js'; import type { IRouteConfig } from '../../proxies/smart-proxy/models/route-types.js'; /** * Standardized event names used throughout the system */ export declare enum ProxyEvents { CERTIFICATE_ISSUED = "certificate:issued", CERTIFICATE_RENEWED = "certificate:renewed", CERTIFICATE_FAILED = "certificate:failed", CERTIFICATE_EXPIRING = "certificate:expiring", COMPONENT_STARTED = "component:started", COMPONENT_STOPPED = "component:stopped", CONNECTION_ESTABLISHED = "connection:established", CONNECTION_CLOSED = "connection:closed", CONNECTION_ERROR = "connection:error", REQUEST_RECEIVED = "request:received", REQUEST_COMPLETED = "request:completed", REQUEST_ERROR = "request:error", ROUTE_MATCHED = "route:matched", ROUTE_UPDATED = "route:updated", ROUTE_ERROR = "route:error", SECURITY_BLOCKED = "security:blocked", SECURITY_BREACH_ATTEMPT = "security:breach-attempt", TLS_HANDSHAKE_STARTED = "tls:handshake-started", TLS_HANDSHAKE_COMPLETED = "tls:handshake-completed", TLS_HANDSHAKE_FAILED = "tls:handshake-failed" } /** * Component types for event metadata */ export declare enum ComponentType { SMART_PROXY = "smart-proxy", NETWORK_PROXY = "network-proxy", NFTABLES_PROXY = "nftables-proxy", PORT80_HANDLER = "port80-handler", CERTIFICATE_MANAGER = "certificate-manager", ROUTE_MANAGER = "route-manager", CONNECTION_MANAGER = "connection-manager", TLS_MANAGER = "tls-manager", SECURITY_MANAGER = "security-manager" } /** * Base event data interface */ export interface IEventData { timestamp: number; componentType: ComponentType; componentId?: string; } /** * Certificate event data */ export interface ICertificateEventData extends IEventData, ICertificateData { isRenewal?: boolean; source?: string; } /** * Certificate failure event data */ export interface ICertificateFailureEventData extends IEventData, ICertificateFailure { } /** * Certificate expiring event data */ export interface ICertificateExpiringEventData extends IEventData, ICertificateExpiring { } /** * Component lifecycle event data */ export interface IComponentEventData extends IEventData { name: string; version?: string; } /** * Connection event data */ export interface IConnectionEventData extends IEventData { connectionId: string; clientIp: string; serverIp?: string; port: number; isTls?: boolean; domain?: string; } /** * Request event data */ export interface IRequestEventData extends IEventData { connectionId: string; requestId: string; method?: string; path?: string; statusCode?: number; duration?: number; routeId?: string; routeName?: string; } /** * Route event data */ export interface IRouteEventData extends IEventData { route: IRouteConfig; context?: any; } /** * Security event data */ export interface ISecurityEventData extends IEventData { clientIp: string; reason: string; routeId?: string; routeName?: string; } /** * TLS event data */ export interface ITlsEventData extends IEventData { connectionId: string; domain?: string; clientIp: string; tlsVersion?: string; cipherSuite?: string; sniHostname?: string; } /** * Logger interface for event system */ export interface IEventLogger { info: (message: string, ...args: any[]) => void; warn: (message: string, ...args: any[]) => void; error: (message: string, ...args: any[]) => void; debug?: (message: string, ...args: any[]) => void; } /** * Event handler type */ export type EventHandler<T> = (data: T) => void; /** * Helper class to standardize event emission and handling * across all system components */ export declare class EventSystem { private emitter; private componentType; private componentId; private logger?; constructor(componentType: ComponentType, componentId?: string, logger?: IEventLogger); /** * Emit a certificate issued event */ emitCertificateIssued(data: Omit<ICertificateEventData, 'timestamp' | 'componentType' | 'componentId'>): void; /** * Emit a certificate renewed event */ emitCertificateRenewed(data: Omit<ICertificateEventData, 'timestamp' | 'componentType' | 'componentId'>): void; /** * Emit a certificate failed event */ emitCertificateFailed(data: Omit<ICertificateFailureEventData, 'timestamp' | 'componentType' | 'componentId'>): void; /** * Emit a certificate expiring event */ emitCertificateExpiring(data: Omit<ICertificateExpiringEventData, 'timestamp' | 'componentType' | 'componentId'>): void; /** * Emit a component started event */ emitComponentStarted(name: string, version?: string): void; /** * Emit a component stopped event */ emitComponentStopped(name: string): void; /** * Emit a connection established event */ emitConnectionEstablished(data: Omit<IConnectionEventData, 'timestamp' | 'componentType' | 'componentId'>): void; /** * Emit a connection closed event */ emitConnectionClosed(data: Omit<IConnectionEventData, 'timestamp' | 'componentType' | 'componentId'>): void; /** * Emit a route matched event */ emitRouteMatched(data: Omit<IRouteEventData, 'timestamp' | 'componentType' | 'componentId'>): void; /** * Subscribe to an event */ on<T>(event: ProxyEvents, handler: EventHandler<T>): void; /** * Subscribe to an event once */ once<T>(event: ProxyEvents, handler: EventHandler<T>): void; /** * Unsubscribe from an event */ off<T>(event: ProxyEvents, handler: EventHandler<T>): void; /** * Map Port80Handler events to standard proxy events */ subscribePort80HandlerEvents(handler: any): void; }