var express = require('express'); var router = express.Router(); var fs = require('fs'); var template_render = require('../lib/render_template.js'); var json_file = require('jsonfile'); glass_config = json_file.readFileSync('config/glass_config.json'); router.get('/', function(req, res, next) { const execSync = require('child_process').execSync; output = execSync('./bin/dhcpd-pools -c ' + glass_config.config_file + ' -l ' + glass_config.leases_file + ' -f j -A -s e'); var dhcp_data = JSON.parse(output); for ( var i = 0; i < dhcp_data['shared-networks'].length; i++) { utilization = round(parseFloat(dhcp_data['shared-networks'][i].used / dhcp_data['shared-networks'][i].defined) * 100, 2); if(isNaN(utilization)) utilization = 0; dhcp_data['shared-networks'][i].utilization = utilization; } dhcp_data['shared-networks'].sort(function(a, b) { return parseFloat(b.utilization) - parseFloat(a.utilization); }); shared_networks = ''; for ( var i = 0; i < dhcp_data['shared-networks'].length; i++) { table_row = ''; table_row = table_row + '' + dhcp_data['shared-networks'][i].location + ''; table_row = table_row + '' + dhcp_data['shared-networks'][i].used.toLocaleString('en') + ''; table_row = table_row + '' + dhcp_data['shared-networks'][i].defined.toLocaleString('en') + ''; table_row = table_row + '' + dhcp_data['shared-networks'][i].free.toLocaleString('en') + ''; utilization = dhcp_data['shared-networks'][i].utilization; table_row = table_row + '' + utilization + ''; utilization_color = 'green'; if(utilization >= 80) utilization_color = 'orange'; if(utilization >= 90) utilization_color = 'red'; table_row = table_row + '
' + '
' + '
'; shared_networks = shared_networks + '' + table_row + ''; } /* Display All Subnets */ for ( var i = 0; i < dhcp_data.subnets.length; i++) { utilization = round(parseFloat(dhcp_data.subnets[i].used / dhcp_data.subnets[i].defined) * 100, 2); if(isNaN(utilization)) utilization = 0; dhcp_data.subnets[i].utilization = utilization; } dhcp_data.subnets.sort(function(a, b) { return parseFloat(b.utilization) - parseFloat(a.utilization); }); display_subnets = ''; for ( var i = 0; i < dhcp_data.subnets.length; i++) { table_row = ''; table_row = table_row + '' + dhcp_data.subnets[i].location + ''; table_row = table_row + '' + dhcp_data.subnets[i].range + ''; table_row = table_row + '' + dhcp_data.subnets[i].used.toLocaleString('en') + ''; table_row = table_row + '' + dhcp_data.subnets[i].defined.toLocaleString('en') + ''; table_row = table_row + '' + dhcp_data.subnets[i].free.toLocaleString('en') + ''; utilization = dhcp_data.subnets[i].utilization; table_row = table_row + '' + utilization + ''; utilization_color = 'green'; if(utilization >= 80) utilization_color = 'orange'; if(utilization >= 90) utilization_color = 'red'; table_row = table_row + '
' + '
' + '
'; display_subnets = display_subnets + '' + table_row + ''; } /* Display Counters Row */ counters = template_render.get_template("counters"); hostname = execSync('hostname').toString().trim(); counters = template_render.set_template_variable(counters, "hostname", hostname); counters = template_render.set_template_variable(counters, "current_leases_per_second", current_leases_per_second); counters = template_render.set_template_variable(counters, "total_leases", total_leases); counters = template_render.set_template_variable(counters, "cpu_utilization", cpu_utilization); /* Display Shared Networks Row */ content_shared_networks = template_render.get_template("shared_networks"); content_shared_networks = template_render.set_template_variable(content_shared_networks, "table_data", shared_networks); /* Display Subnets Row */ content_subnets = template_render.get_template("display_subnets"); content_subnets = template_render.set_template_variable(content_subnets, "table_data", display_subnets); res.send( counters + '
' + content_shared_networks + content_subnets + '
' ); }); module.exports = router; function round(num, places) { var multiplier = Math.pow(10, places); return Math.round(num * multiplier) / multiplier; }