sawa-control-panel/backend/routes/services.js

64 lines
1.8 KiB
JavaScript

const express = require('express');
const { getServicesStatus, executeServiceAction, ALLOWED_SERVICES } = require('../services/rcService');
const router = express.Router();
// Middleware to check if a service name is in the whitelist before proceeding
const validateServiceWhitelist = (req, res, next) => {
const serviceName = req.params.name;
if (!ALLOWED_SERVICES.includes(serviceName)) {
return res.status(400).json({ error: `Service '${serviceName}' is not in the allowed whitelist: ${ALLOWED_SERVICES.join(', ')}` });
}
next();
};
/**
* GET /api/v1/services
* Returns the status of all whitelisted services.
*/
router.get('/', (req, res) => {
try {
const statuses = getServicesStatus();
res.json(statuses);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
/**
* POST /api/v1/services/:name/start
*/
router.post('/:name/start', validateServiceWhitelist, (req, res) => {
try {
const result = executeServiceAction(req.params.name, 'start');
res.json(result);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
/**
* POST /api/v1/services/:name/stop
*/
router.post('/:name/stop', validateServiceWhitelist, (req, res) => {
try {
const result = executeServiceAction(req.params.name, 'stop');
res.json(result);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
/**
* POST /api/v1/services/:name/restart
*/
router.post('/:name/restart', validateServiceWhitelist, (req, res) => {
try {
const result = executeServiceAction(req.params.name, 'restart');
res.json(result);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
module.exports = router;