UNPKG

@codelook/proxy-server

Version:

HTTP/HTTPS proxy server with Docker deployment and Cloudflare Workers support

90 lines (84 loc) 2 kB
import { IncomingMessage } from 'http'; interface ProxyConfig { port: number; host?: string; auth?: { enabled: boolean; token?: string; }; target?: { changeOrigin?: boolean; secure?: boolean; }; rateLimit?: { windowMs?: number; maxRequests?: number; }; logging?: { level?: 'debug' | 'info' | 'warn' | 'error'; pretty?: boolean; }; } interface ProxyRequest { id: string; method: string; url: string; headers: Record<string, string>; timestamp: Date; } interface ProxyResponse { id: string; statusCode: number; headers: Record<string, string>; duration: number; } declare class ProxyServer { private config; private proxy; private server; private logger; private auth; private rateLimiter; private requestCount; constructor(config: ProxyConfig); private setupProxyHandlers; start(port?: number): Promise<void>; stop(): Promise<void>; private extractTargetUrl; private parseConnectUrl; private getClientIp; private generateRequestId; } interface AuthConfig { enabled?: boolean; token?: string; } declare class AuthMiddleware { private enabled; private token; constructor(config?: AuthConfig); authenticate(req: IncomingMessage): boolean; /** * 生成新的认证令牌 */ static generateToken(): string; } interface RateLimitConfig { windowMs?: number; maxRequests?: number; } declare class RateLimiter { private windowMs; private maxRequests; private clients; constructor(config?: RateLimitConfig); allow(clientIp: string): boolean; private cleanup; reset(clientIp?: string): void; getStatus(clientIp: string): { requests: number; remaining: number; resetTime: number; } | null; } export { AuthMiddleware, type ProxyConfig, type ProxyRequest, type ProxyResponse, ProxyServer, RateLimiter };