AI-Voice-Agent-Node/app.js
2025-05-27 21:07:33 +05:30

104 lines
3.3 KiB
JavaScript

require('dotenv').config();
const express = require('express');
const cors = require('cors');
const apiRoutes = require('./routes/apiRoutes');
const userRoutes = require('./routes/userRoutes');
const https = require('https');
const fs = require("fs")
<<<<<<< HEAD
const {initWebSocket} = require('./services/webSocket')
const { connectDB } = require('./config/database');
connectDB();
=======
const {initWebSocket} = require('./services/webSocket')
>>>>>>> 3d47f2d539024e036b3db88eb1e020180e656065
const app = express();
const sslOptions = {
// key: fs.readFileSync('./certificates/fullchain.pem'),
// cert: fs.readFileSync('./certificates/privkey.pem'),
};
// Create HTTP server (use HTTP for now to avoid SSL issues, in production use HTTPS with valid certificates)
const server = require('http').createServer(app);
<<<<<<< HEAD
// Initialize WebSocket server
initWebSocket(server);
console.log('WebSocket server initialized');
connectDB()
=======
// Initialize WebSocket server
initWebSocket(server);
console.log('WebSocket server initialized');
>>>>>>> 3d47f2d539024e036b3db88eb1e020180e656065
// Middleware to parse JSON bodies
app.use(express.json()); // 👈 Add this line
// Serve static files from the public directory
app.use(express.static('public'));
// CORS Configuration
<<<<<<< HEAD
const allowedOrigins = ['https://guardiancalls.tech4bizsolutions.com','http://localhost:5174', 'https://dashboard.tech4biz.info','http://localhost:5173', 'http://192.168.1.35:5173']; // Replace as needed
=======
const allowedOrigins = ['https://guardiancalls.tech4bizsolutions.com','http://localhost:5174', 'https://yourfrontend.com','http://localhost:5173', 'http://192.168.1.35:5173']; // Replace as needed
>>>>>>> 3d47f2d539024e036b3db88eb1e020180e656065
app.use((req, res, next) => {
// Check if the request is for the WebSocket test page
if (req.path === '/websocket-test' || req.path === '/public/websocket-test.html') {
// Less restrictive CSP for WebSocket test page
res.setHeader(
'Content-Security-Policy',
"default-src 'self'; connect-src 'self' ws: wss: http: https:; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';"
);
} else {
// Original CSP for other pages
res.setHeader(
'Content-Security-Policy',
"default-src 'self'; connect-src 'self' wss://guardiancalls.tech4bizsolutions.com https://your-api-domain.com; script-src 'self';"
);
}
next();
});
app.use(cors({
origin: function (origin, callback) {
if (!origin) return callback(null, true); // Allow requests with no origin
if (allowedOrigins.indexOf(origin) === -1) {
const msg = 'The CORS policy for this site does not allow access from the specified Origin.';
return callback(new Error(msg), false);
}
return callback(null, true);
},
optionsSuccessStatus: 200
}));
// Routes
app.use('/api/user', userRoutes);
app.use('/api/call-list', apiRoutes);
app.get('/', (req, res) => {
res.send("Backend is working!");
});
// WebSocket test page
app.get('/websocket-test', (req, res) => {
res.sendFile(__dirname + '/public/websocket-test.html');
});
// Start server
const PORT = process.env.PORT || 3000;
server.listen(PORT, () => {
console.log(`HTTP server running on port ${PORT}`);
console.log(`WebSocket server available at ws://localhost:${PORT}`);
<<<<<<< HEAD
});
=======
});
>>>>>>> 3d47f2d539024e036b3db88eb1e020180e656065