const express = require('express'); const http = require('http'); const session = require('express-session'); const axios = require('axios'); const app = express(); const CHECK_OMNI_INTERVAL = 60000; // 1 minute // Global variable global.OMNITOOL_RUNNING = false; // Function to check the status of the external service async function checkExternalService() { console.log("Checking external service"); try { const response = await axios.get('http://127.0.0.1:1688/api/v1/mercenaries/ping'); if (response.data && response.data.ping === 'pong' && Object.keys(response.data.payload).length === 0) { global.OMNITOOL_RUNNING = true; } } catch (error) { console.error('Cannot access OMNITOOL. It is probably not running...', error.message); // Set to false but do not prevent server from starting global.OMNITOOL_RUNNING = false; } } async function setup() { // Call the function when the server starts checkExternalService(); // Other server code... } async function main(app) { // Configure session middleware app.use(session({ secret: 'your-secret-key', resave: false, saveUninitialized: true })); await startServer(); // Route to serve the webpage app.get('/', handleRoutes); app.get("status", (req, res) => { res.send(global.OMNITOOL_RUNNING ? 'OMNITOOL IS RUNNING' : 'OMNITOOL IS NOT RUNNING'); } ); // Call the function when the server starts await setup(); } function replyOmnitoolIsRunning() { return '
OMNITOOL IS RUNNING
'; } async function handleRoutes(req, res) { if (req.session.isVisited) { if (global.OMNITOOL_RUNNING) { const reply = replyOmnitoolIsRunning(); res.send(reply); } else { const status = global.OMNITOOL_RUNNING ? 'External service is running' : 'External service is not running'; const message = `WELCOME BACK
${status}
`; res.send(message); } } else { await checkExternalService(); if (global.OMNITOOL_RUNNING) { const reply = replyOmnitoolIsRunning(); res.send(reply); } else { // Serve the webpage with a button for first-time visitors req.session.isVisited = true; res.send(`