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;