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