const fastify = require('fastify')({ logger: true }); const { spawn } = require('child_process'); let OMNITOOL_READY = false; let ALREADY_STARTING = false; let MANAGEMENT_SERVER_PORT = 7860; let SERVER_HOST = '0.0.0.0'; console.log(`************ Management Server ************`); let omnitoolLogs = []; async function startOmnitoolServer() { if (ALREADY_STARTING) return; ALREADY_STARTING = true; console.log('Starting Omnitool Server...'); return new Promise((resolve, reject) => { const omnitoolStartProcess = spawn('./omnitool_start.sh'); omnitoolStartProcess.stdout.on('data', (data) => { omnitoolLogs.push(data.toString()); console.log(`omnitool stdout: ${data}`); if (data.toString().includes(`Server has started and is ready to accept connections`)) { OMNITOOL_READY = true; console.log('Omnitool server started successfully'); resolve(); } }); omnitoolStartProcess.stderr.on('data', (data) => { console.error(`omnitool stderr: ${data}`); }); omnitoolStartProcess.on('close', (code) => { console.log(`Omnitool server process exited with code ${code}`); if (!OMNITOOL_READY) { ALREADY_STARTING = false; reject(`Omnitool server did not start within the timeout period.`); } }); }); } fastify.get('/', async (request, reply) => { const localUrl = request.headers['host']; if (!OMNITOOL_READY) { let htmlContent = `