64 lines
1.8 KiB
JavaScript
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;
|