35 lines
1 KiB
JavaScript
35 lines
1 KiB
JavaScript
const express = require('express');
|
|
|
|
const servicesRouter = require('./routes/services');
|
|
const systemRouter = require('./routes/system');
|
|
const vhostsRouter = require('./routes/vhosts');
|
|
const appsRouter = require('./routes/apps');
|
|
|
|
const app = express();
|
|
|
|
app.use(express.json());
|
|
|
|
// Mount routers under the API version prefix
|
|
app.use('/api/v1/services', servicesRouter);
|
|
app.use('/api/v1/system', systemRouter);
|
|
app.use('/api/v1/vhosts', vhostsRouter);
|
|
app.use('/api/v1/apps', appsRouter);
|
|
|
|
// Fallback JSON handling for 404
|
|
app.use((req, res) => {
|
|
res.status(404).json({ error: 'Endpoint not found' });
|
|
});
|
|
|
|
// Fallback JSON handling for errors
|
|
app.use((err, req, res, next) => {
|
|
console.error(err.stack);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
});
|
|
|
|
// Load the configuration from environment mapping
|
|
const port = process.env.PORT || 3001;
|
|
|
|
// Only bind to localhost for security as per the docs
|
|
app.listen(port, '127.0.0.1', () => {
|
|
console.log(`Backend API listening on 127.0.0.1:${port}`);
|
|
});
|