const { loadConfig } = require('./config'); const { SessionManager } = require('./session/SessionManager'); const { createLogger } = require('./utils/logger'); const log = createLogger('Main'); // ─── Banner ────────────────────────────────────────── console.log(` \x1b[33m _____ _ ____ | ___| | __ _ _ _ ___ _ _| _ \\ _ __ _____ ___ _ | |_ | |/ _\` | | | |/ _ \\ '__| |_) | '__/ _ \\ \\/ / | | | | _| | | (_| | |_| | __/ | | __/| | | (_) > <| |_| | |_| |_|\\__,_|\\__, |\\___|_| |_| |_| \\___/_/\\_\\\\__, | |___/ |___/ \x1b[0m `); // ─── Load config ───────────────────────────────────── let config; try { config = loadConfig(); log.info(`Loaded config: server=${config.server.host}:${config.server.port} version=${config.server.version}`); log.info(`Proxy will listen on port ${config.proxy.port}`); } catch (err) { log.error(`Failed to load config: ${err.message}`); process.exit(1); } // ─── Start session manager ────────────────────────── const session = new SessionManager(config); session.start(); // ─── Graceful shutdown ────────────────────────────── function shutdown(signal) { log.info(`Received ${signal}, shutting down...`); session.stop(); setTimeout(() => process.exit(0), 2000); } process.on('SIGINT', () => shutdown('SIGINT')); process.on('SIGTERM', () => shutdown('SIGTERM')); process.on('uncaughtException', (err) => { log.error(`Uncaught exception: ${err.message}`); log.error(err.stack); }); process.on('unhandledRejection', (reason) => { log.error(`Unhandled rejection: ${reason}`); });