Files
flayerproxy/src/index.js
2026-05-20 18:20:59 +02:00

50 lines
1.9 KiB
JavaScript

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}`);
});