Genesis
This commit is contained in:
49
src/index.js
Normal file
49
src/index.js
Normal file
@@ -0,0 +1,49 @@
|
||||
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}`);
|
||||
});
|
||||
Reference in New Issue
Block a user