const express = require('express'); const { exec } = require('child_process'); require('dotenv').config(); function originateCall(number, context, delay, timeout, cid, variables = {}) { // Build the base command let command = `/usr/bin/ast_originate ${number} ${context} ${delay} ${timeout} ${Buffer.from(cid).toString('base64')}`; // Add variables if provided if (variables && typeof variables === 'object') { const varString = Object.entries(variables) .map(([key, value]) => `${key}=${value}`) .join(' '); if (varString) { command += ` ${varString}`; } } return new Promise((resolve, reject) => { exec(command, (error, stdout, stderr) => { if (error) { reject(error); } else { resolve(stdout); } }); }); } const app = express(); const HOST = process.env.HOST || 'localhost'; const PORT = process.env.PORT || 3000; app.use(express.json()); app.set('view engine', 'ejs'); app.set('views', './views'); app.use(express.static('static')); app.use(express.urlencoded({ extended: true })); function auth(req, res, next) { if (!req.session || !req.session.authenticated) { return res.redirect('/login'); } next(); } app.get('/', auth, (req, res) => { res.render('index', { session: req.session }); }); app.get('/login', (req, res) => { if (req.session && req.session.authenticated) { return res.redirect('/'); } res.render('login'); }); app.post('/login', (req, res) => { const { username, password } = req.body; if (username === process.env.USER && password === process.env.PASS) { req.session.authenticated = true; req.session.username = username; return res.redirect('/'); } res.redirect('/login'); }); app.listen(PORT, HOST, () => { console.log(`Server running on http://${HOST}:${PORT}`); });