diff --git a/app.js b/app.js
index 68e97d4..0d88e47 100644
--- a/app.js
+++ b/app.js
@@ -17,14 +17,14 @@ var glass_config = json_file.readFileSync('config/glass_config.json');
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
-app.use(bodyParser.urlencoded({ extended: false }));
+app.use(bodyParser.urlencoded({extended: false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
-if(glass_config.ip_ranges_to_allow != "") {
- var ip_filter = require('express-ipfilter').IpFilter;
- var ips = glass_config.ip_ranges_to_allow;
- app.use(ip_filter(ips, {mode: 'allow'}));
+if (glass_config.ip_ranges_to_allow != "") {
+ var ip_filter = require('express-ipfilter').IpFilter;
+ var ips = glass_config.ip_ranges_to_allow;
+ app.use(ip_filter(ips, {mode: 'allow'}));
}
/* Normal Web Routes */
@@ -58,21 +58,21 @@ app.use('/api/get_mac_oui_list/', require('./api/get_mac_oui_list'));
app.set('view engine', 'html');
// catch 404 and forward to error handler
-app.use(function(req, res, next) {
- var err = new Error('Not Found');
- err.status = 404;
- next(err);
+app.use(function (req, res, next) {
+ var err = new Error('Not Found');
+ err.status = 404;
+ next(err);
});
// error handler
-app.use(function(err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message;
- res.locals.error = req.app.get('env') === 'development' ? err : {};
+app.use(function (err, req, res, next) {
+ // set locals, only providing error in development
+ res.locals.message = err.message;
+ res.locals.error = req.app.get('env') === 'development' ? err : {};
- // render the error page
- res.status(err.status || 500);
- res.send(err.message);
+ // render the error page
+ res.status(err.status || 500);
+ res.send(err.message);
});
module.exports = app;
@@ -112,14 +112,14 @@ if (fs.existsSync(oui_database_file)) {
return console.log(err);
}
else {
- /* Iterate through file */
+ /* Iterate through file */
lines = data.split("\n");
for (l = 0; l < lines.length; l++) {
- /* Trim whitespaces at each ends of the line */
+ /* Trim whitespaces at each ends of the line */
lines[l] = lines[l].trim();
var oui_line_data = lines[l].split(":::");
- if(typeof oui_line_data[1] !== "undefined")
+ if (typeof oui_line_data[1] !== "undefined")
oui_data[oui_line_data[0].trim()] = oui_line_data[1].trim();
}
console.log("[Glass Server] OUI Database Loaded");
@@ -135,14 +135,14 @@ dhcp_lease_data = {};
lease_read_buffer = "";
fs = require('fs');
-fs.readFile(glass_config.leases_file, 'utf8', function (err,data) {
- if (err) {
- return console.log(err);
- }
- else {
- lease_parser.parse(data);
+fs.readFile(glass_config.leases_file, 'utf8', function (err, data) {
+ if (err) {
+ return console.log(err);
+ }
+ else {
+ lease_parser.parse(data);
console.log("[Glass Server] Leases file loaded");
- }
+ }
});
/**
@@ -150,33 +150,33 @@ fs.readFile(glass_config.leases_file, 'utf8', function (err,data) {
*/
var tail_module = require('always-tail2');
tail = new tail_module(
- glass_config.leases_file,
- "\n",
- options
+ glass_config.leases_file,
+ "\n",
+ options
);
-tail.on("line", function(data) {
- unix_time = Math.floor(new Date() / 1000);
+tail.on("line", function (data) {
+ unix_time = Math.floor(new Date() / 1000);
- /* Buffering lines until we get full lease data */
- lease_read_buffer = lease_read_buffer + data + "\n";
+ /* Buffering lines until we get full lease data */
+ lease_read_buffer = lease_read_buffer + data + "\n";
- /* End of lease - cut off and parse the buffer */
- if (/}/i.test(data)){
- lease_parser.parse(lease_read_buffer);
- lease_read_buffer = "";
- }
+ /* End of lease - cut off and parse the buffer */
+ if (/}/i.test(data)) {
+ lease_parser.parse(lease_read_buffer);
+ lease_read_buffer = "";
+ }
- /* Count leases per second */
- if(/lease/.test(data)) {
- leases_per_second++;
- }
- if(current_time != unix_time) {
- current_time = unix_time;
- current_leases_per_second = leases_per_second;
- leases_last_update_time = unix_time;
- leases_per_second = 0;
- }
+ /* Count leases per second */
+ if (/lease/.test(data)) {
+ leases_per_second++;
+ }
+ if (current_time != unix_time) {
+ current_time = unix_time;
+ current_leases_per_second = leases_per_second;
+ leases_last_update_time = unix_time;
+ leases_per_second = 0;
+ }
});
/**
@@ -189,14 +189,14 @@ var glass_config = json_file.readFileSync('config/glass_config.json');
var options = {};
options.interval = 1000;
-var dashboard_timer = setInterval(function(){
- // console.log("Checking timers...");
- unix_time = Math.floor(new Date() / 1000);
- if((unix_time - 5) > leases_last_update_time){
- current_leases_per_second = 0;
+var dashboard_timer = setInterval(function () {
+ // console.log("Checking timers...");
+ unix_time = Math.floor(new Date() / 1000);
+ if ((unix_time - 5) > leases_last_update_time) {
+ current_leases_per_second = 0;
}
- // console.log(JSON.stringify(dhcp_lease_data, null, 2));
+ // console.log(JSON.stringify(dhcp_lease_data, null, 2));
}, 5000);
@@ -206,30 +206,30 @@ var dashboard_timer = setInterval(function(){
var leases_per_minute_data = [];
var leases_per_minute_counter = 0;
-leases_per_minute_counter_timer = setInterval(function(){
- // console.log("leases per minute counter %i", leases_per_minute_counter);
+leases_per_minute_counter_timer = setInterval(function () {
+ // console.log("leases per minute counter %i", leases_per_minute_counter);
- leases_per_minute_data[leases_per_minute_counter] = current_leases_per_second;
- leases_per_minute_counter++;
+ leases_per_minute_data[leases_per_minute_counter] = current_leases_per_second;
+ leases_per_minute_counter++;
- /* Count how many actual data sets we walked that have values */
- leases_per_minute = 0;
- for (i = 0; i < 59; i++){
- if(leases_per_minute_data[i] > 0) {
- leases_per_minute += leases_per_minute_data[i];
- // console.log("iteration " + i + " val: " + leases_per_minute_data[i] + " lpm: " + leases_per_minute);
- }
- else {
- // console.log("no data " + i);
- }
- }
+ /* Count how many actual data sets we walked that have values */
+ leases_per_minute = 0;
+ for (i = 0; i < 59; i++) {
+ if (leases_per_minute_data[i] > 0) {
+ leases_per_minute += leases_per_minute_data[i];
+ // console.log("iteration " + i + " val: " + leases_per_minute_data[i] + " lpm: " + leases_per_minute);
+ }
+ else {
+ // console.log("no data " + i);
+ }
+ }
- if (leases_per_minute_counter == 60)
- leases_per_minute_counter = 0;
+ if (leases_per_minute_counter == 60)
+ leases_per_minute_counter = 0;
- /* Websockets statistics subscription broadcast */
- if(ws_event_subscribers('dhcp_statistics')) {
+ /* Websockets statistics subscription broadcast */
+ if (ws_event_subscribers('dhcp_statistics')) {
return_data = {
"cpu_utilization": cpu_utilization,
"leases_per_second": current_leases_per_second,
@@ -243,38 +243,38 @@ leases_per_minute_counter_timer = setInterval(function(){
/**
* Poll: CPU Utilization
*/
-cpu_utilization_poll = setInterval(function(){
- cpu_utilization = parseFloat(execSync("top -bn 1 | awk 'NR>7{s+=$9} END {print s/4}'").toString())
+cpu_utilization_poll = setInterval(function () {
+ cpu_utilization = parseFloat(execSync("top -bn 1 | awk 'NR>7{s+=$9} END {print s/4}'").toString())
}, (15 * 1000));
/**
* Clean Expired Leases
*/
-lease_clean_timer = setInterval(function(){
- lease_parser.clean();
+lease_clean_timer = setInterval(function () {
+ lease_parser.clean();
}, (60 * 1000));
function get_socket_clients_connected_count() {
- wss.clients.forEach(function each(client) {
- if (client.readyState === WebSocket.OPEN) {
- socket_clients++;
- }
- });
- return socket_clients;
+ wss.clients.forEach(function each(client) {
+ if (client.readyState === WebSocket.OPEN) {
+ socket_clients++;
+ }
+ });
+ return socket_clients;
}
/**
* Watch config changes so we reload it for core functions...
*/
fs.watch('config/glass_config.json', function (event, filename) {
- if (filename) {
- setTimeout(function(){
- glass_config = json_file.readFileSync('config/glass_config.json');
+ if (filename) {
+ setTimeout(function () {
+ glass_config = json_file.readFileSync('config/glass_config.json');
console.log("[Glass Server] Config Loaded");
- }, 1000);
- } else {
- console.log('filename not provided');
- }
+ }, 1000);
+ } else {
+ console.log('filename not provided');
+ }
});
/**
@@ -282,23 +282,23 @@ fs.watch('config/glass_config.json', function (event, filename) {
*/
const WebSocket = require('ws');
-const wss = new WebSocket.Server({ port: 8080 });
+const wss = new WebSocket.Server({port: 8080});
options.interval = 300;
var tail_dhcp_log = new tail_module(
- glass_config.log_file,
- "\n",
- options
+ glass_config.log_file,
+ "\n",
+ options
);
dhcp_requests = {};
-tail_dhcp_log.on("line", function(data) {
+tail_dhcp_log.on("line", function (data) {
if (listening_to_log_file) {
wss.broadcast_event(data, 'dhcp_log_subscription');
}
- /* Collect Excessive DHCP Request Data */
+ /* Collect Excessive DHCP Request Data */
if (/DHCPREQUEST/i.test(data)) {
var request_from = "";
@@ -344,23 +344,25 @@ tail_dhcp_log.on("line", function(data) {
}
});
-const purge_request_data = setInterval(function() {
+const purge_request_data = setInterval(function () {
for (var key in dhcp_requests) {
- if(dhcp_requests[key].request_count <= 10)
+ if (dhcp_requests[key].request_count <= 10)
delete dhcp_requests[key];
}
-}, 600 * 1000); /* 10 Minutes */
+}, 600 * 1000);
+/* 10 Minutes */
-const purge_request_data_hour = setInterval(function() {
+const purge_request_data_hour = setInterval(function () {
dhcp_requests = {};
-}, 3600 * 1000); /* 60 Minutes */
+}, 3600 * 1000);
+/* 60 Minutes */
wss.on('connection', function connection(ws) {
socket_clients++;
console.log("[WS] CLIENT_CONNECT: Socket clients (" + socket_clients + ")");
if (!listening_to_log_file) {
- /* Watch log file for new information */
+ /* Watch log file for new information */
var tail_module = require('always-tail2');
listening_to_log_file = 1;
@@ -369,32 +371,32 @@ wss.on('connection', function connection(ws) {
});
wss.on('close', function close() {
- socket_clients--;
- console.log("[WS] CLIENT_DISCONNECT: Socket clients (" + socket_clients + ")");
+ socket_clients--;
+ console.log("[WS] CLIENT_DISCONNECT: Socket clients (" + socket_clients + ")");
});
function heartbeat() {
- this.isAlive = true;
+ this.isAlive = true;
}
function isJson(str) {
- try {
- JSON.parse(str);
- } catch (e) {
- return false;
- }
- return true;
+ try {
+ JSON.parse(str);
+ } catch (e) {
+ return false;
+ }
+ return true;
}
-function ws_event_subscribers(event){
- if(typeof wss === "undefined")
- return false;
+function ws_event_subscribers(event) {
+ if (typeof wss === "undefined")
+ return false;
- var is_listening = false;
+ var is_listening = false;
wss.clients.forEach(function each(ws) {
- /* Count event listeners */
+ /* Count event listeners */
for (var event_listening in ws.event_subscription) {
if (event_listening == event) {
is_listening = true;
@@ -408,69 +410,69 @@ function ws_event_subscribers(event){
return true;
}
- return false;
+ return false;
}
wss.on('connection', function connection(ws) {
- ws.isAlive = true;
- ws.on('pong', heartbeat);
- ws.event_subscription = [];
+ ws.isAlive = true;
+ ws.on('pong', heartbeat);
+ ws.event_subscription = [];
- ws.on('message', function incoming(data) {
- if(data != "" && isJson(data)) {
- var json = JSON.parse(data);
- if(typeof json["event_subscription"] !== "undefined"){
- console.log("[WS] Incoming Subscription '%s'", json['event_subscription']);
- ws.event_subscription[json["event_subscription"]] = 1;
- }
- if(typeof json["event_unsubscribe"] !== "undefined"){
- console.log("[WS] event_unsubscribe '%s'", json['event_unsubscribe']);
- delete ws.event_subscription[json["event_unsubscribe"]];
- }
- if(typeof json["all_events"] !== "undefined"){
- console.log("[WS] event_unsubscribe '%s'", json['event_unsubscribe']);
- ws.event_subscription = [];
- }
- }
- });
+ ws.on('message', function incoming(data) {
+ if (data != "" && isJson(data)) {
+ var json = JSON.parse(data);
+ if (typeof json["event_subscription"] !== "undefined") {
+ console.log("[WS] Incoming Subscription '%s'", json['event_subscription']);
+ ws.event_subscription[json["event_subscription"]] = 1;
+ }
+ if (typeof json["event_unsubscribe"] !== "undefined") {
+ console.log("[WS] event_unsubscribe '%s'", json['event_unsubscribe']);
+ delete ws.event_subscription[json["event_unsubscribe"]];
+ }
+ if (typeof json["all_events"] !== "undefined") {
+ console.log("[WS] event_unsubscribe '%s'", json['event_unsubscribe']);
+ ws.event_subscription = [];
+ }
+ }
+ });
- stale_connections_audit();
+ stale_connections_audit();
});
wss.broadcast = function broadcast(data) {
- wss.clients.forEach(function each(client) {
- if (client.readyState === WebSocket.OPEN) {
- client.send(data);
- }
- });
+ wss.clients.forEach(function each(client) {
+ if (client.readyState === WebSocket.OPEN) {
+ client.send(data);
+ }
+ });
};
wss.broadcast_event = function broadcast(data, event) {
- wss.clients.forEach(function each(client) {
- if (client.readyState === WebSocket.OPEN) {
- if(client.event_subscription[event])
- client.send(JSON.stringify({"event": event, "data": data}));
- }
- });
+ wss.clients.forEach(function each(client) {
+ if (client.readyState === WebSocket.OPEN) {
+ if (client.event_subscription[event])
+ client.send(JSON.stringify({"event": event, "data": data}));
+ }
+ });
};
function stale_connections_audit() {
- socket_clients = 0;
- wss.clients.forEach(function each(ws) {
- if (ws.isAlive === false) return ws.terminate();
+ socket_clients = 0;
+ wss.clients.forEach(function each(ws) {
+ if (ws.isAlive === false) return ws.terminate();
- ws.isAlive = false;
- ws.ping('', false, true);
+ ws.isAlive = false;
+ ws.ping('', false, true);
- socket_clients++;
- });
+ socket_clients++;
+ });
- console.log("[WS] STATUS: Socket clients (" + socket_clients + ")");
+ console.log("[WS] STATUS: Socket clients (" + socket_clients + ")");
}
/* Keepalive - kill stale connections (30s poll) */
const interval = setInterval(function ping() {
- stale_connections_audit();
+ stale_connections_audit();
}, 30000);
var socket_clients = 0;
@@ -488,16 +490,16 @@ slack = new Slack();
slack.setWebhook(webhookUri);
function slack_message(message) {
- console.log("[Slack] %s", message);
+ console.log("[Slack] %s", message);
- slack.webhook({
- channel: glass_config.slack_alert_channel,
- username: "Glass",
- icon_emoji: "https://imgur.com/wD3CcBi",
- text: message
- }, function (err, response) {
- console.log(response);
- });
+ slack.webhook({
+ channel: glass_config.slack_alert_channel,
+ username: "Glass",
+ icon_emoji: "https://imgur.com/wD3CcBi",
+ text: message
+ }, function (err, response) {
+ console.log(response);
+ });
}
/**
@@ -506,92 +508,91 @@ function slack_message(message) {
alert_status = [];
alert_status['leases_per_minute'] = 0;
-setTimeout(function(){
+setTimeout(function () {
console.log("[Glass Server] Alert loop started");
- alert_check_timer = setInterval(function(){
- // console.log("[Timer] Alert Timer check");
- if(glass_config.leases_per_minute_threshold > 0) {
- // console.log("[Timer] lpm: %s lpm_th: %s", leases_per_minute, glass_config.leases_per_minute_threshold);
- if (leases_per_minute <= glass_config.leases_per_minute_threshold && alert_status['leases_per_minute'] == 0) {
- alert_status['leases_per_minute'] = 1;
+ alert_check_timer = setInterval(function () {
+ // console.log("[Timer] Alert Timer check");
+ if (glass_config.leases_per_minute_threshold > 0) {
+ // console.log("[Timer] lpm: %s lpm_th: %s", leases_per_minute, glass_config.leases_per_minute_threshold);
+ if (leases_per_minute <= glass_config.leases_per_minute_threshold && alert_status['leases_per_minute'] == 0) {
+ alert_status['leases_per_minute'] = 1;
- slack_message(":warning: CRITICAL: DHCP leases per minute have dropped below threshold " +
- "(" + parseInt(glass_config.leases_per_minute_threshold).toLocaleString('en') + ") " +
- "Current (" + parseInt(leases_per_minute).toLocaleString('en') + ")");
+ slack_message(":warning: CRITICAL: DHCP leases per minute have dropped below threshold " +
+ "(" + parseInt(glass_config.leases_per_minute_threshold).toLocaleString('en') + ") " +
+ "Current (" + parseInt(leases_per_minute).toLocaleString('en') + ")");
email_alert("CRITICAL: Leases Per Minute Threshold", "DHCP leases per minute dropped below critical threshold
" +
"Threshold: (" + parseInt(glass_config.leases_per_minute_threshold).toLocaleString('en') + ")
" +
"Current: (" + parseInt(leases_per_minute).toLocaleString('en') + ")
" +
"This is usually indicative of a process or hardware problem and needs to be addressed immediately");
- }
- else if (leases_per_minute >= glass_config.leases_per_minute_threshold && alert_status['leases_per_minute'] == 1) {
- alert_status['leases_per_minute'] = 0;
+ }
+ else if (leases_per_minute >= glass_config.leases_per_minute_threshold && alert_status['leases_per_minute'] == 1) {
+ alert_status['leases_per_minute'] = 0;
- slack_message(":white_check_mark: CLEAR: DHCP leases per minute have returned to above threshold " +
- "(" + parseInt(glass_config.leases_per_minute_threshold).toLocaleString('en') + ") " +
- "Current (" + parseInt(leases_per_minute).toLocaleString('en') + ")");
+ slack_message(":white_check_mark: CLEAR: DHCP leases per minute have returned to above threshold " +
+ "(" + parseInt(glass_config.leases_per_minute_threshold).toLocaleString('en') + ") " +
+ "Current (" + parseInt(leases_per_minute).toLocaleString('en') + ")");
email_alert("CLEAR: Leases Per Minute Threshold", "DHCP leases per minute have returned to normal
" +
"Threshold: (" + parseInt(glass_config.leases_per_minute_threshold).toLocaleString('en') + ")
" +
"Current: (" + parseInt(leases_per_minute).toLocaleString('en') + ")"
- );
+ );
- }
- }
- }, (5 * 1000));
+ }
+ }
+ }, (5 * 1000));
- alert_status_networks_warning = [];
- alert_status_networks_critical = [];
+ alert_status_networks_warning = [];
+ alert_status_networks_critical = [];
- alert_subnet_check_timer = setInterval(function(){
- // console.log("[Timer] Alert Timer check - subnets");
+ alert_subnet_check_timer = setInterval(function () {
+ // console.log("[Timer] Alert Timer check - subnets");
- if(glass_config.shared_network_warning_threshold > 0 || glass_config.shared_network_critical_threshold > 0) {
- 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);
+ if (glass_config.shared_network_warning_threshold > 0 || glass_config.shared_network_critical_threshold > 0) {
+ 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);
- /*
- * Iterate through Shared Networks
- */
- 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);
+ /*
+ * Iterate through Shared Networks
+ */
+ 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;
+ if (isNaN(utilization))
+ utilization = 0;
- /* Initialize these array buckets */
- if(typeof alert_status_networks_warning[dhcp_data['shared-networks'][i].location] === "undefined")
- alert_status_networks_warning[dhcp_data['shared-networks'][i].location] = 0;
+ /* Initialize these array buckets */
+ if (typeof alert_status_networks_warning[dhcp_data['shared-networks'][i].location] === "undefined")
+ alert_status_networks_warning[dhcp_data['shared-networks'][i].location] = 0;
- if(typeof alert_status_networks_critical[dhcp_data['shared-networks'][i].location] === "undefined")
- alert_status_networks_critical[dhcp_data['shared-networks'][i].location] = 0;
+ if (typeof alert_status_networks_critical[dhcp_data['shared-networks'][i].location] === "undefined")
+ alert_status_networks_critical[dhcp_data['shared-networks'][i].location] = 0;
- /*
- console.log("Location: %s", dhcp_data['shared-networks'][i].location);
- console.log("Used: %s", dhcp_data['shared-networks'][i].used.toLocaleString('en'));
- console.log("Defined: %s", dhcp_data['shared-networks'][i].defined.toLocaleString('en'));
- console.log("Free: %s", dhcp_data['shared-networks'][i].free.toLocaleString('en'));
- console.log("Utilization: %s", utilization);
- console.log(" \n");
- */
+ /*
+ console.log("Location: %s", dhcp_data['shared-networks'][i].location);
+ console.log("Used: %s", dhcp_data['shared-networks'][i].used.toLocaleString('en'));
+ console.log("Defined: %s", dhcp_data['shared-networks'][i].defined.toLocaleString('en'));
+ console.log("Free: %s", dhcp_data['shared-networks'][i].free.toLocaleString('en'));
+ console.log("Utilization: %s", utilization);
+ console.log(" \n");
+ */
- /* Check Warnings */
- if(glass_config.shared_network_warning_threshold > 0) {
- if (
- utilization >= glass_config.shared_network_warning_threshold &&
- utilization <= glass_config.shared_network_critical_threshold &&
- alert_status_networks_warning[dhcp_data['shared-networks'][i].location] == 0
- )
- {
- alert_status_networks_warning[dhcp_data['shared-networks'][i].location] = 1;
+ /* Check Warnings */
+ if (glass_config.shared_network_warning_threshold > 0) {
+ if (
+ utilization >= glass_config.shared_network_warning_threshold &&
+ utilization <= glass_config.shared_network_critical_threshold &&
+ alert_status_networks_warning[dhcp_data['shared-networks'][i].location] == 0
+ ) {
+ alert_status_networks_warning[dhcp_data['shared-networks'][i].location] = 1;
- slack_message(":warning: WARNING: DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ") " +
- "Current: (" + utilization + "%) " +
- "Threshold: (" + glass_config.shared_network_warning_threshold + "%)"
- );
+ slack_message(":warning: WARNING: DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ") " +
+ "Current: (" + utilization + "%) " +
+ "Threshold: (" + glass_config.shared_network_warning_threshold + "%)"
+ );
email_alert("WARNING: DHCP shared network utilization",
"WARNING: DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ")
" +
@@ -599,18 +600,17 @@ setTimeout(function(){
"Current: (" + utilization + "%)"
);
- }
- else if (
- utilization <= glass_config.shared_network_warning_threshold &&
- alert_status_networks_warning[dhcp_data['shared-networks'][i].location] == 1
- )
- {
- alert_status_networks_warning[dhcp_data['shared-networks'][i].location] = 0;
+ }
+ else if (
+ utilization <= glass_config.shared_network_warning_threshold &&
+ alert_status_networks_warning[dhcp_data['shared-networks'][i].location] == 1
+ ) {
+ alert_status_networks_warning[dhcp_data['shared-networks'][i].location] = 0;
- slack_message(":white_check_mark: CLEAR: Warning DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ") " +
- "Current: (" + utilization + "%) " +
- "Threshold: (" + glass_config.shared_network_warning_threshold + "%)"
- );
+ slack_message(":white_check_mark: CLEAR: Warning DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ") " +
+ "Current: (" + utilization + "%) " +
+ "Threshold: (" + glass_config.shared_network_warning_threshold + "%)"
+ );
email_alert("CLEAR: DHCP shared network utilization warning",
"CLEAR: DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ")
" +
@@ -618,21 +618,20 @@ setTimeout(function(){
"Current: (" + utilization + "%)"
);
- }
- }
+ }
+ }
- /* Check Critical */
- if(glass_config.shared_network_critical_threshold > 0) {
- if (
- utilization >= glass_config.shared_network_critical_threshold &&
- alert_status_networks_critical[dhcp_data['shared-networks'][i].location] == 0
- )
- {
- alert_status_networks_critical[dhcp_data['shared-networks'][i].location] = 1;
- slack_message(":fire: CRITICAL: DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ") " +
- "Current: (" + utilization + "%) " +
- "Threshold: (" + glass_config.shared_network_critical_threshold + "%)"
- );
+ /* Check Critical */
+ if (glass_config.shared_network_critical_threshold > 0) {
+ if (
+ utilization >= glass_config.shared_network_critical_threshold &&
+ alert_status_networks_critical[dhcp_data['shared-networks'][i].location] == 0
+ ) {
+ alert_status_networks_critical[dhcp_data['shared-networks'][i].location] = 1;
+ slack_message(":fire: CRITICAL: DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ") " +
+ "Current: (" + utilization + "%) " +
+ "Threshold: (" + glass_config.shared_network_critical_threshold + "%)"
+ );
email_alert("CRITICAL: DHCP shared network utilization",
"CRITICAL: DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ")
" +
@@ -640,33 +639,32 @@ setTimeout(function(){
"Current: (" + utilization + "%)"
);
- }
- else if (
- utilization <= glass_config.shared_network_critical_threshold &&
- alert_status_networks_critical[dhcp_data['shared-networks'][i].location] == 1
- )
- {
- alert_status_networks_critical[dhcp_data['shared-networks'][i].location] = 0;
- slack_message(":white_check_mark: CLEAR: Critical DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ") " +
- "Current: (" + utilization + "%) " +
- "Threshold: (" + glass_config.shared_network_critical_threshold + "%)"
- );
+ }
+ else if (
+ utilization <= glass_config.shared_network_critical_threshold &&
+ alert_status_networks_critical[dhcp_data['shared-networks'][i].location] == 1
+ ) {
+ alert_status_networks_critical[dhcp_data['shared-networks'][i].location] = 0;
+ slack_message(":white_check_mark: CLEAR: Critical DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ") " +
+ "Current: (" + utilization + "%) " +
+ "Threshold: (" + glass_config.shared_network_critical_threshold + "%)"
+ );
email_alert("CLEAR: DHCP shared network utilization",
- "CLEAR: DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ")
" +
+ "CLEAR: DHCP shared network utilization (" + dhcp_data['shared-networks'][i].location + ")
" +
"Threshold: (" + glass_config.shared_network_critical_threshold + "%)
" +
"Current: (" + utilization + "%)"
- );
- }
- }
- }
- }
- }, (5 * 1000));
+ );
+ }
+ }
+ }
+ }
+ }, (5 * 1000));
}, 60 * 1000);
function round(num, places) {
- var multiplier = Math.pow(10, places);
- return Math.round(num * multiplier) / multiplier;
+ var multiplier = Math.pow(10, places);
+ return Math.round(num * multiplier) / multiplier;
}
/* Load Mailer */
@@ -689,24 +687,24 @@ function email_alert(alert_title, alert_message) {
/* E-Mail Template Load */
console.log("[Glass Server] Sending E-Mail Alert...\n");
- if(typeof glass_config.email_alert_to === "undefined" && typeof glass_config.sms_alert_to === "undefined")
- return false;
+ if (typeof glass_config.email_alert_to === "undefined" && typeof glass_config.sms_alert_to === "undefined")
+ return false;
- if (glass_config.email_alert_to == "" && glass_config.sms_alert_to != ""){
- console.log("[Glass Server] No email_to specified - returning...");
- return false;
- }
+ if (glass_config.email_alert_to == "" && glass_config.sms_alert_to != "") {
+ console.log("[Glass Server] No email_to specified - returning...");
+ return false;
+ }
- /* Write on top of E-Mail Template */
+ /* Write on top of E-Mail Template */
email_body = email_body.replace("[body_content_placeholder]", alert_message);
email_body = email_body.replace("[alert_title]", alert_title);
- email_body = email_body.replace("[local_time]", new Date().toString() );
+ email_body = email_body.replace("[local_time]", new Date().toString());
/* Clean extra commas etc. */
glass_config.email_alert_to = glass_config.email_alert_to.replace(/^[,\s]+|[,\s]+$/g, '').replace(/,[,\s]*,/g, ',');
/* Send regular HTML E-Mails */
- if(glass_config.email_alert_to.trim() != "") {
+ if (glass_config.email_alert_to.trim() != "") {
var mailOptions = {
from: "Glass Alerting Monitor glass@noreply.com",
to: glass_config.email_alert_to,
@@ -724,7 +722,7 @@ function email_alert(alert_title, alert_message) {
}
/* Send SMS */
- if(glass_config.sms_alert_to.trim() != "") {
+ if (glass_config.sms_alert_to.trim() != "") {
var mailOptions = {
from: "Glass Alerting Monitor glass@noreply.com",
to: glass_config.sms_alert_to,