diff --git a/routes/dhcp_start_stop_restart.js b/routes/dhcp_start_stop_restart.js index 77acbb9..31b7523 100644 --- a/routes/dhcp_start_stop_restart.js +++ b/routes/dhcp_start_stop_restart.js @@ -1,10 +1,9 @@ -var express = require('express'); -var router = express.Router(); -var fs = require('fs'); +var express = require('express'); +var router = express.Router(); var template_render = require('../lib/render_template.js'); -var authorize = require('../lib/authorize.js'); +var authorize = require('../lib/authorize.js'); -router.get('/', authorize.auth, function(req, res, next) { +router.get('/', authorize.auth, function (req, res, next) { var content = ""; @@ -13,11 +12,11 @@ router.get('/', authorize.auth, function(req, res, next) { var exec = require('child_process').exec; - exec(' ps aux | grep dhcpd | grep -v "grep"', function(err, stdout, stderr) { + exec('ps aux | grep dhcpd | grep -v "grep"', function (err, stdout, stderr) { is_running = 0; var result = stdout.split("\n"); for (var i = 0; i < result.length; i++) { - if(/dhcpd/i.test(result[i])){ + if (/dhcpd/i.test(result[i])) { is_running = 1; } // console.log('line ' + result[i]); @@ -25,7 +24,7 @@ router.get('/', authorize.auth, function(req, res, next) { var return_content = ""; - if(is_running){ + if (is_running) { return_content = return_content + 'DHCP Server is online!

'; return_content = return_content + ' '; } @@ -35,37 +34,54 @@ router.get('/', authorize.auth, function(req, res, next) { } return_content = return_content + ' '; - - content = template_render.set_template_variable(content, "c_content", return_content); + content = template_render.set_template_variable(content, "c_content", return_content); res.send(template_render.get_index_template(content, req.url)); }); }); -router.post('/', authorize.auth, function(req, res, next) { - var request = req.body; - +router.post('/', authorize.auth, function (req, res, next) { + var request = req.body; const execSync = require('child_process').execSync; + /** + * Get distribution + */ + const distro = execSync('cat /etc/issue | head -n 1').toString(); + + /** + * Base service name - Known to Ubuntu/Debian + * + * @type {string} + */ + let service_name = "isc-dhcp-server"; + + /** + * Redhat derivatives use a different service name + */ + if (/Redhat|CentOS|Fedora/i.test(distro)) { + service_name = "dhcpd"; + } + + /** + * Execute service action and return javascript in request + */ switch (request.action) { case "stop": - dhcp_exec = execSync('/usr/sbin/service isc-dhcp-server stop && /bin/sleep 1'); + dhcp_exec = execSync('/usr/sbin/service ' + service_name + ' stop && /bin/sleep 1'); res.send(""); break; case "start": - dhcp_exec = execSync('/usr/sbin/service isc-dhcp-server start'); + dhcp_exec = execSync('/usr/sbin/service ' + service_name + ' start'); res.send(""); break; case "restart": - dhcp_exec = execSync('/usr/sbin/service isc-dhcp-server restart && /bin/sleep 1'); + dhcp_exec = execSync('/usr/sbin/service ' + service_name + ' restart && /bin/sleep 1'); res.send(""); break; default: break; } - - console.log(request); - }); module.exports = router; \ No newline at end of file