bitstream/server.js

48 lines
1.3 KiB
JavaScript

// server.js - Main backend server
require('dotenv').config({ quiet: true });
const express = require('express');
const chalk = require('chalk').default;
const auth = require('./middleware/auth');
const logApi = require('./middleware/logApi');
const cors = require('cors');
const http = require('http');
const containersRouter = require('./routes/containers');
const imagesRouter = require('./routes/images');
const systemRouter = require('./routes/system');
const setupWebSocket = require('./ws/statsSocket');
// Debug mode flag
const DEBUG_MODE = process.argv.includes('--debug');
global.DEBUG_MODE = DEBUG_MODE;
const app = express();
const server = http.createServer(app);
app.use(cors());
app.use(express.json());
// Setup WebSocket for real-time stats
setupWebSocket(server);
// Log all API requests if debug mode is enabled
app.use('/api', logApi);
// Protect all /api routes with API key auth
app.use('/api', auth);
app.use('/api/containers', containersRouter);
app.use('/api/images', imagesRouter);
app.use('/api/system', systemRouter);
const PORT = process.env.PORT || 6560;
server.listen(PORT, () => {
console.log(chalk.green.bold('Bitstream server running on port'), chalk.cyan.bold(PORT));
if (DEBUG_MODE) {
console.log(chalk.yellow.bold('[DEBUG MODE ENABLED] All API requests will be logged.'));
}
});
module.exports = app;