48 lines
1.3 KiB
JavaScript
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;
|