From 683985fbbfdd8f8ec27f1403bd71d2a2a5b6ce63 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Wed, 7 Oct 2020 19:12:54 +0200 Subject: [PATCH] fixes chrome extension credentials using POST instead GET --- extras/chrome_extension/js/background.js | 516 +++++++++--------- extras/chrome_extension/js/popup.js | 5 +- .../chrome/content/js/main.js | 475 ++++++++-------- 3 files changed, 514 insertions(+), 482 deletions(-) diff --git a/extras/chrome_extension/js/background.js b/extras/chrome_extension/js/background.js index 521ecc19eb..037c01a472 100644 --- a/extras/chrome_extension/js/background.js +++ b/extras/chrome_extension/js/background.js @@ -3,309 +3,321 @@ var isFetching = null; var storedEvents = new Array(); var notVisited = {}; -$(window).on('load', function() { - initilise(); - // Wait some ms to throw main function - var delay = setTimeout(main, 100); - resetInterval(); +$(window).on("load", function() { + initilise(); + // Wait some ms to throw main function + var delay = setTimeout(main, 100); + resetInterval(); }); function fetchEvents() { - return storedEvents; + return storedEvents; } function fetchNotVisited() { - return notVisited; + return notVisited; } function removeNotVisited(eventId) { - if (notVisited[eventId] === true) delete notVisited[eventId]; + if (notVisited[eventId] === true) delete notVisited[eventId]; } function main() { + chrome.runtime.sendMessage({ text: "FETCH_EVENTS" }); + // Do not fetch if is fetching now + if (isFetching) return; + isFetching = true; - chrome.runtime.sendMessage({text: "FETCH_EVENTS"}); - // Do not fetch if is fetching now - if (isFetching) return; - isFetching = true; + var url = + localStorage["ip_address"] + + "/include/api.php?op=get&op2=events&return_type=json"; + var feedUrl = url; + var data = new FormData(); - var feedUrl = localStorage["ip_address"]+'/include/api.php?op=get&op2=events&return_type=json&apipass='+localStorage["api_pass"]+'&user='+localStorage["user_name"]+'&pass='+localStorage["pass"]; + data.append("apipass", localStorage["api_pass"]); + data.append("user", localStorage["user_name"]); + data.append("pass", localStorage["pass"]); - req = new XMLHttpRequest(); - req.onload = handleResponse; - req.onerror = handleError; - req.open("GET", feedUrl, true); - req.withCredentials = true - req.send(null); + req = new XMLHttpRequest(); + req.onload = handleResponse; + req.onerror = handleError; + req.open("POST", feedUrl, true); + req.withCredentials = true; + req.send(data); } function handleError() { - chrome.runtime.sendMessage({text: "FETCH_EVENTS_URL_ERROR"}); - isFetching = false; + chrome.runtime.sendMessage({ text: "FETCH_EVENTS_URL_ERROR" }); + isFetching = false; } function handleResponse() { - var doc = req.responseText; - if (doc=="auth error") { - chrome.runtime.sendMessage({text: "FETCH_EVENTS_URL_ERROR"}); - } else { - var n = doc.search("404 Not Found"); - if (n>0) { - chrome.runtime.sendMessage({text: "FETCH_EVENTS_DATA_ERROR"}); - } else { - getEvents(doc); - chrome.runtime.sendMessage({text: "FETCH_EVENTS_SUCCESS"}); - } - } - isFetching = false; + var doc = req.responseText; + if (doc == "auth error") { + chrome.runtime.sendMessage({ text: "FETCH_EVENTS_URL_ERROR" }); + } else { + var n = doc.search("404 Not Found"); + if (n > 0) { + chrome.runtime.sendMessage({ text: "FETCH_EVENTS_DATA_ERROR" }); + } else { + getEvents(doc); + chrome.runtime.sendMessage({ text: "FETCH_EVENTS_SUCCESS" }); + } + } + isFetching = false; } -function getEvents(reply){ - var fetchedEvents = parseReplyEvents(reply); +function getEvents(reply) { + var fetchedEvents = parseReplyEvents(reply); - // If there is no events requested, mark all as visited - if (storedEvents.length == 0) { - notVisited = {}; - storedEvents = fetchedEvents; - return; - } + // If there is no events requested, mark all as visited + if (typeof storedEvents != "undefined" && storedEvents.length == 0) { + notVisited = {}; + storedEvents = fetchedEvents; + return; + } - // Discriminate the new events - newEvents=fetchNewEvents(fetchedEvents,storedEvents); - var newNotVisited = {}; - var notVisitedCount = 0; - - // Check if popup is displayed to make some actions - var views = chrome.extension.getViews({ type: "popup" }); - for(var k=0;k<newEvents.length;k++){ - newNotVisited[newEvents[k]['id']] = true; - if (views.length == 0) { - notVisitedCount++; - displayNotification (newEvents[k]) - alertsSound(newEvents[k]); - } - } + // Discriminate the new events + newEvents = fetchNewEvents(fetchedEvents, storedEvents); + var newNotVisited = {}; + var notVisitedCount = 0; - // Make that the old events marked as not visited remains with the - // same status - for(var k=0;k<fetchedEvents.length;k++){ - if (notVisited[fetchedEvents[k]['id']] === true) { - newNotVisited[fetchedEvents[k]['id']] = true; - notVisitedCount++; - } - } - notVisited = newNotVisited; + // Check if popup is displayed to make some actions + var views = chrome.extension.getViews({ type: "popup" }); + for (var k = 0; k < newEvents.length; k++) { + newNotVisited[newEvents[k]["id"]] = true; + if (views.length == 0) { + notVisitedCount++; + displayNotification(newEvents[k]); + alertsSound(newEvents[k]); + } + } - // Update the number - localStorage["new_events"] = (views.length == 0) ? notVisitedCount : 0; - updateBadge(); + // Make that the old events marked as not visited remains with the + // same status + for (var k = 0; k < fetchedEvents.length; k++) { + if (notVisited[fetchedEvents[k]["id"]] === true) { + newNotVisited[fetchedEvents[k]["id"]] = true; + notVisitedCount++; + } + } + notVisited = newNotVisited; - // Store the requested events - storedEvents = fetchedEvents; + // Update the number + localStorage["new_events"] = views.length == 0 ? notVisitedCount : 0; + updateBadge(); + + // Store the requested events + storedEvents = fetchedEvents; } function updateBadge() { - if (localStorage["new_events"] != 0) { - chrome.browserAction.setBadgeBackgroundColor({color:[0,200,0,255]}); - chrome.browserAction.setBadgeText({ text: localStorage["new_events"] }); - } else { - chrome.browserAction.setBadgeText({ text: "" }); - } + if (localStorage["new_events"] != 0) { + chrome.browserAction.setBadgeBackgroundColor({ color: [0, 200, 0, 255] }); + chrome.browserAction.setBadgeText({ text: localStorage["new_events"] }); + } else { + chrome.browserAction.setBadgeText({ text: "" }); + } } -function fetchNewEvents(A,B){ - var arrDiff = new Array(); - for(var i = 0; i < A.length; i++) { - var id = false; - for(var j = 0; j < B.length; j++) { - if(A[i]['id'] == B[j]['id']) { - id = true; - break; - } - } - if(!id) { - arrDiff.push(A[i]); - } - } - return arrDiff; +function fetchNewEvents(A, B) { + var arrDiff = new Array(); + for (var i = 0; i < A.length; i++) { + var id = false; + for (var j = 0; j < B.length; j++) { + if (A[i]["id"] == B[j]["id"]) { + id = true; + break; + } + } + if (!id) { + arrDiff.push(A[i]); + } + } + return arrDiff; } +function parseReplyEvents(reply) { + // Split the API response + var data; + try { + data = JSON.parse(reply); + } catch (error) { + console.log(error); + return []; + } + var e_array = JSON.parse(reply).data; -function parseReplyEvents (reply) { - - // Split the API response - var data = JSON.parse(reply) - var e_array = JSON.parse(reply).data; - - // Form a properly object - var fetchedEvents=new Array(); - for(var i=0;i<e_array.length;i++){ - var event=e_array[i]; - fetchedEvents.push({ - 'id' : event.id_evento, - 'agent_name' : event.agent_name, - 'agent' : event.id_agente, - 'date' : event.timestamp, - 'title' : event.evento, - 'module' : event.id_agentmodule, - 'type' : event.event_type, - 'source' : event.source, - 'severity' : event.criticity_name, - 'visited' : false - }); - } - // Return the events - return fetchedEvents; + // Form a properly object + var fetchedEvents = new Array(); + for (var i = 0; i < e_array.length; i++) { + var event = e_array[i]; + fetchedEvents.push({ + id: event.id_evento, + agent_name: event.agent_name, + agent: event.id_agente, + date: event.timestamp, + title: event.evento, + module: event.id_agentmodule, + type: event.event_type, + source: event.source, + severity: event.criticity_name, + visited: false + }); + } + // Return the events + return fetchedEvents; } -function alertsSound(pEvent){ - if(localStorage["sound_alert"]!="on"){ - return; - } +function alertsSound(pEvent) { + if (localStorage["sound_alert"] != "on") { + return; + } - switch (pEvent['severity']) { - case "Critical": - playSound(localStorage["critical"]); - break; - case "Informational": - playSound(localStorage["informational"]); - break; - case "Maintenance": - playSound(localStorage["maintenance"]); - break; - case "Normal": - playSound(localStorage["normal"]); - break; - case "Warning": - playSound(localStorage["warning"]); - break; - } + switch (pEvent["severity"]) { + case "Critical": + playSound(localStorage["critical"]); + break; + case "Informational": + playSound(localStorage["informational"]); + break; + case "Maintenance": + playSound(localStorage["maintenance"]); + break; + case "Normal": + playSound(localStorage["normal"]); + break; + case "Warning": + playSound(localStorage["warning"]); + break; + } } -function displayNotification (pEvent) { +function displayNotification(pEvent) { + // Check if the user is okay to get some notification + if (Notification.permission === "granted") { + // If it's okay create a notification + getNotification(pEvent); + } - // Check if the user is okay to get some notification - if (Notification.permission === "granted") { - // If it's okay create a notification - getNotification(pEvent); - } - - // Otherwise, we need to ask the user for permission - // Note, Chrome does not implement the permission static property - // So we have to check for NOT 'denied' instead of 'default' - else if (Notification.permission !== 'denied') { - Notification.requestPermission(function (permission) { - // Whatever the user answers, we make sure we store the information - if(!('permission' in Notification)) { - Notification.permission = permission; - } - - // If the user is okay, let's create a notification - if (permission === "granted") getNotification(pEvent); - }); - } + // Otherwise, we need to ask the user for permission + // Note, Chrome does not implement the permission static property + // So we have to check for NOT 'denied' instead of 'default' + else if (Notification.permission !== "denied") { + Notification.requestPermission(function(permission) { + // Whatever the user answers, we make sure we store the information + if (!("permission" in Notification)) { + Notification.permission = permission; + } + + // If the user is okay, let's create a notification + if (permission === "granted") getNotification(pEvent); + }); + } } -function getNotification(pEvent){ - - // Build the event text - var even = pEvent['type']; - if (pEvent['source'] != '') even += " : " + pEvent['source']; - even += ". Event occured at " + pEvent['date']; - if(pEvent['module'] != 0) even += " in the module with Id "+ pEvent['module']; - even += "."; +function getNotification(pEvent) { + // Build the event text + var even = pEvent["type"]; + if (pEvent["source"] != "") even += " : " + pEvent["source"]; + even += ". Event occured at " + pEvent["date"]; + if (pEvent["module"] != 0) + even += " in the module with Id " + pEvent["module"]; + even += "."; - var url = (pEvent['agent'] == 0) - ? localStorage["ip_address"]+"/index.php?sec=eventos&sec2=operation/events/events" - : localStorage["ip_address"]+"/index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=" + pEvent['agent']; + var url = + pEvent["agent"] == 0 + ? localStorage["ip_address"] + + "/index.php?sec=eventos&sec2=operation/events/events" + : localStorage["ip_address"] + + "/index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=" + + pEvent["agent"]; - var notification = new Notification( - pEvent['title'], - { - body: even, - icon: "images/icon.png" - } - ); + var notification = new Notification(pEvent["title"], { + body: even, + icon: "images/icon.png" + }); - // Add the link - notification.onclick = function (event) { - event.preventDefault(); - window.open(url, '_blank'); - } + // Add the link + notification.onclick = function(event) { + event.preventDefault(); + window.open(url, "_blank"); + }; - // Close notification after 10 secs - setTimeout(function() {notification.close()}, 10000); + // Close notification after 10 secs + setTimeout(function() { + notification.close(); + }, 10000); } -function resetInterval () { - if (refreshTimer) clearInterval(refreshTimer); - refreshTimer = setInterval(main, localStorage["refresh"]*1000); +function resetInterval() { + if (refreshTimer) clearInterval(refreshTimer); + refreshTimer = setInterval(main, localStorage["refresh"] * 1000); } -function initilise(){ +function initilise() { + if (isFetching == null) isFetching = false; + if (localStorage["ip_address"] == undefined) { + localStorage["ip_address"] = "http://firefly.artica.es/pandora_demo"; + } - if (isFetching == null) isFetching = false; - if(localStorage["ip_address"]==undefined){ - localStorage["ip_address"]="http://firefly.artica.es/pandora_demo"; - } - - if(localStorage["api_pass"]==undefined){ - localStorage["api_pass"]="doreik0"; - } - - if(localStorage["user_name"]==undefined){ - localStorage["user_name"]="demo"; - } - - if(localStorage["pass"]==undefined){ - localStorage["pass"]="demo"; - } - if(localStorage["critical"]==null){ - localStorage["critical"]="11"; - } - if(localStorage["informational"]==null){ - localStorage["informational"]="1"; - } - if(localStorage["maintenance"]==null){ - localStorage["maintenance"]="10"; - } - if(localStorage["normal"]==null){ - localStorage["normal"]="6"; - } - if(localStorage["warning"]==null){ - localStorage["warning"]="2"; - } - if(localStorage["events"]==null){ - localStorage["events"]=20; - } - if(localStorage["refresh"]==null){ - localStorage["refresh"]="10"; - } - if(localStorage["ip_address"]==null){ - localStorage["ip_address"]="http://firefly.artica.es/pandora_demo"; - } - - if(localStorage["api_pass"]==null){ - localStorage["api_pass"]="doreik0"; - } - - if(localStorage["user_name"]==null){ - localStorage["user_name"]="demo"; - } - - if(localStorage["pass"]==null){ - localStorage["pass"]="demo"; - } - if(localStorage["sound_alert"]==null){ - localStorage["sound_alert"]="on"; - } - if(localStorage["changed"]==null){ - localStorage["changed"]="false"; - } - if(localStorage["new_events"]==null){ - localStorage["new_events"]=parseInt(localStorage["events"]); - } - if(localStorage["error"]==null) { - localStorage["error"] = true; - } + if (localStorage["api_pass"] == undefined) { + localStorage["api_pass"] = "doreik0"; + } + + if (localStorage["user_name"] == undefined) { + localStorage["user_name"] = "demo"; + } + + if (localStorage["pass"] == undefined) { + localStorage["pass"] = "demo"; + } + if (localStorage["critical"] == null) { + localStorage["critical"] = "11"; + } + if (localStorage["informational"] == null) { + localStorage["informational"] = "1"; + } + if (localStorage["maintenance"] == null) { + localStorage["maintenance"] = "10"; + } + if (localStorage["normal"] == null) { + localStorage["normal"] = "6"; + } + if (localStorage["warning"] == null) { + localStorage["warning"] = "2"; + } + if (localStorage["events"] == null) { + localStorage["events"] = 20; + } + if (localStorage["refresh"] == null) { + localStorage["refresh"] = "10"; + } + if (localStorage["ip_address"] == null) { + localStorage["ip_address"] = "http://firefly.artica.es/pandora_demo"; + } + + if (localStorage["api_pass"] == null) { + localStorage["api_pass"] = "doreik0"; + } + + if (localStorage["user_name"] == null) { + localStorage["user_name"] = "demo"; + } + + if (localStorage["pass"] == null) { + localStorage["pass"] = "demo"; + } + if (localStorage["sound_alert"] == null) { + localStorage["sound_alert"] = "on"; + } + if (localStorage["changed"] == null) { + localStorage["changed"] = "false"; + } + if (localStorage["new_events"] == null) { + localStorage["new_events"] = parseInt(localStorage["events"]); + } + if (localStorage["error"] == null) { + localStorage["error"] = true; + } } diff --git a/extras/chrome_extension/js/popup.js b/extras/chrome_extension/js/popup.js index e323a9b12b..b799a244be 100644 --- a/extras/chrome_extension/js/popup.js +++ b/extras/chrome_extension/js/popup.js @@ -8,7 +8,10 @@ $(document).ready(function() { bg = chrome.extension.getBackgroundPage(); // Display the information - if (bg.fetchEvents().length == 0) { + var events = bg.fetchEvents(); + if (!events) { + showError("Failed to retrieve events, please retry"); + } else if (events.length == 0) { showError("No events"); } else { showEvents(); diff --git a/extras/firefox_extension/chrome/content/js/main.js b/extras/firefox_extension/chrome/content/js/main.js index a5452c5bf4..c9cd394197 100644 --- a/extras/firefox_extension/chrome/content/js/main.js +++ b/extras/firefox_extension/chrome/content/js/main.js @@ -1,245 +1,262 @@ -if ("undefined" == typeof(PandoraChrome)) { - var PandoraChrome = {}; - var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("pandora."); +/* globals Components, req */ +if ("undefined" == typeof PandoraChrome) { + var PandoraChrome = {}; + var prefManager = Components.classes["@mozilla.org/preferences-service;1"] + .getService(Components.interfaces.nsIPrefService) + .getBranch("pandora."); - var timer = null; - var allEvents=new Array(); - var newEvents=new Array(); - var oldEvents=new Array(); - var api_div_numbers=21; -}; - - - - - -PandoraChrome.fn = function(){ - return { - displaySideBar: function(){ - PandoraChrome.fn.hideNotification(); - PandoraChrome.fn.hideBadge(); - toggleSidebar('viewPandoraSidebar'); - }, - displayDialog : function(){ - window.openDialog("chrome://pandorasidebar/content/options.xul", "","chrome, centerscreen, dialog, modal, resizable=no", null).focus(); - }, - handleClick: function(e){ - if(e.button == 0){ - toggleSidebar('viewPandoraSidebar'); - PandoraChrome.fn.setIcon('icon16'); - } - }, - - Onloading: function () { - if(prefManager.getBoolPref("firstLoad")){ - prefManager.setIntPref("new_events",prefManager.getIntPref("events")); - prefManager.setBoolPref("firstLoad",false); - } + var timer = null; + var allEvents = new Array(); + var newEvents = new Array(); + var oldEvents = new Array(); + var api_div_numbers = 21; +} - if(timer) { - clearTimeout(timer); - } - timer =setTimeout(PandoraChrome.fn.main , 100 ); - }, +PandoraChrome.fn = (function() { + return { + displaySideBar: function() { + PandoraChrome.fn.hideNotification(); + PandoraChrome.fn.hideBadge(); + toggleSidebar("viewPandoraSidebar"); + }, + displayDialog: function() { + window + .openDialog( + "chrome://pandorasidebar/content/options.xul", + "", + "chrome, centerscreen, dialog, modal, resizable=no", + null + ) + .focus(); + }, + handleClick: function(e) { + if (e.button == 0) { + toggleSidebar("viewPandoraSidebar"); + PandoraChrome.fn.setIcon("icon16"); + } + }, - + Onloading: function() { + if (prefManager.getBoolPref("firstLoad")) { + prefManager.setIntPref("new_events", prefManager.getIntPref("events")); + prefManager.setBoolPref("firstLoad", false); + } - main: function() { - // alert('test_main'); - var url=prefManager.getCharPref("ip_address")+'/include/api.php?op=get&op2=events&return_type=csv&apipass='+prefManager.getCharPref("api_pass")+'&user='+prefManager.getCharPref("user_name")+'&pass='+prefManager.getCharPref("pass"); - var feedUrl = url; - prefManager.setBoolPref("data_check", true); - req = new XMLHttpRequest(); - req.onload = PandoraChrome.fn.handleResponse; - req.onerror = PandoraChrome.fn.handleError; - req.open("GET", feedUrl, true); - req.send(null); - }, + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(PandoraChrome.fn.main, 100); + }, - handleError: function() { - //alert("error"); - prefManager.setCharPref("data",null); - prefManager.setBoolPref("data_check", false); - if(timer) { - clearTimeout(timer); - } - timer =setTimeout(PandoraChrome.fn.main , 1000); - }, + main: function() { + // alert('test_main'); + var url = + prefManager.getCharPref("ip_address") + + "/include/api.php?op=get&op2=events&return_type=json"; + var feedUrl = url; + var data = new FormData(); - handleResponse: function () { - var doc = req.responseText; - if (doc=="auth error") { - prefManager.setCharPref("data",null); - prefManager.setBoolPref("data_check", false); - if(timer) { - clearTimeout(timer); - } - timer =setTimeout(PandoraChrome.fn.main , 1000); + data.append("apipass", prefManager.getCharPref("api_pass")); + data.append("user", prefManager.getCharPref("user_name")); + data.append("pass", prefManager.getCharPref("pass")); - } - else{ - var n=doc.search("404 Not Found"); - if(n>0){ + prefManager.setBoolPref("data_check", true); + req = new XMLHttpRequest(); + req.onload = PandoraChrome.fn.handleResponse; + req.onerror = PandoraChrome.fn.handleError; + req.open("POST", feedUrl, true); + req.send(data); + }, - prefManager.setCharPref("data",null); - prefManager.setBoolPref("data_check", false); - if(timer) { - clearTimeout(timer); - } - timer =setTimeout(PandoraChrome.fn.main , 1000); - } - - else{ - prefManager.setBoolPref("data_check", true); + handleError: function() { + //alert("error"); + prefManager.setCharPref("data", null); + prefManager.setBoolPref("data_check", false); + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(PandoraChrome.fn.main, 1000); + }, - prefManager.setCharPref("data",doc); - PandoraChrome.fn.getEvents(doc); - } - } - }, + handleResponse: function() { + var doc = req.responseText; + if (doc == "auth error") { + prefManager.setCharPref("data", null); + prefManager.setBoolPref("data_check", false); + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(PandoraChrome.fn.main, 1000); + } else { + var n = doc.search("404 Not Found"); + if (n > 0) { + prefManager.setCharPref("data", null); + prefManager.setBoolPref("data_check", false); + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(PandoraChrome.fn.main, 1000); + } else { + prefManager.setBoolPref("data_check", true); - getEvents: function (reply){ - if(reply.length>100){ - all_event_array=reply.split("\n"); - allEvents=PandoraChrome.fn.divideArray(all_event_array); - if(oldEvents.length==0){ - oldEvents=allEvents; - } + prefManager.setCharPref("data", doc); + PandoraChrome.fn.getEvents(doc); + } + } + }, - - newEvents=PandoraChrome.fn.fetchNewEvents(allEvents,oldEvents); - if(newEvents.length!=0){ - for(var k=0;k<newEvents.length;k++){ - var temp=prefManager.getIntPref("new_events")+1; - prefManager.setIntPref("new_events",temp); - PandoraChrome.fn.showNotification(k); - PandoraChrome.fn.showBadge(prefManager.getIntPref("new_events")); - - } - } - oldEvents=allEvents; - if(prefManager.getIntPref("new_events")>0){ - PandoraChrome.fn.showBadge(prefManager.getIntPref("new_events")); - } - else{ - PandoraChrome.fn.hideBadge(); - } - - - - if(timer) { - clearTimeout(timer); - } - timer =setTimeout(PandoraChrome.fn.main , prefManager.getIntPref("refresh")*1000 ); - } - }, - - showNotification: function(eventId){ - //alert("notify"+eventId); - if(prefManager.getBoolPref("sound_alert")){ - if(newEvents[eventId][19]=="Critical"){ - Sounds.playSound(prefManager.getIntPref("critical")); - } - if(newEvents[eventId][19]=="Informational"){ - Sounds.playSound(prefManager.getIntPref("informational")); - } - if(newEvents[eventId][19]=="Maintenance"){ - Sounds.playSound(prefManager.getIntPref("maintenance")); - } - if(newEvents[eventId][19]=="Normal"){ - Sounds.playSound(prefManager.getIntPref("normal")); - } - if(newEvents[eventId][19]=="Warning"){ - Sounds.playSound(prefManager.getIntPref("warning")); - } - - } - - var newEve = document.getElementById('newEvent'); - newEve.label="Last Event : "+newEvents[eventId][6]; - var id; - if(newEvents[eventId][9]==0){ - id="."; - } - else { - id= " in the module with Id "+ newEvents[eventId][9] + "."; - } - - var event = newEvents[eventId][14]+" : "+newEvents[eventId][17]+". Event occured at "+ newEvents[eventId][5]+id; - newEve.tooltipText=event; - $('#newEvent').show(); - return; - }, - - - hideNotification:function(){ - //alert("Hide Notif"); - $('#newEvent').hide(); - }, - - - showBadge: function (txt) { - //alert(txt); - var updateCount = document.getElementById('temp'); - updateCount.setAttribute("style","cursor:pointer; font-size:11px; color:#123863; font-weight:bold; display:none;") ; - updateCount.label=txt; - $('#temp').show(); - }, - - hideBadge: function () { - var updateCount = document.getElementById('temp'); - //alert("hide B"); - $('#temp').hide(); - }, - - divideArray: function (e_array){ - var Events=new Array(); - for(var i=0;i<e_array.length;i++){ - var event=e_array[i].split(";"); - Events.push(event); - } - return Events; - }, - - - fetchNewEvents: function (A,B){ - var arrDiff = new Array(); - // alert(A.length); - //alert(B.length); - for(var i = 0; i < A.length; i++) { - var id = false; - for(var j = 0; j < B.length; j++) { - if(A[i][0] == B[j][0]) { - id = true; - break; - } - } - if(!id) { - arrDiff.push(A[i]); - } - } - return arrDiff; - }, - - - getNotification:function (eventId){ - var title=newEvents[eventId][6]; - var id; - if(newEvents[eventId][9]==0){ - id="."; - } - else { - id= " in the module with Id "+ newEvents[eventId][9] + "."; - } - - var event = newEvents[eventId][14]+" : "+newEvents[eventId][17]+". Event occured at "+ newEvents[eventId][5]+id; - //var event=newEvents[eventId][14]+' '+newEvents[eventId][17]+' Event occured at:'+ newEvents[eventId][5] +'in the module with Id '+ newEvents[eventId][9]; - return '<a>' + title + '</a> <br/> <span style="font-size:80%">' + event + '</span>'; - + getEvents: function(reply) { + if (reply.length > 100) { + all_event_array = reply.split("\n"); + allEvents = PandoraChrome.fn.divideArray(all_event_array); + if (oldEvents.length == 0) { + oldEvents = allEvents; } - }; -}(); + newEvents = PandoraChrome.fn.fetchNewEvents(allEvents, oldEvents); + if (newEvents.length != 0) { + for (var k = 0; k < newEvents.length; k++) { + var temp = prefManager.getIntPref("new_events") + 1; + prefManager.setIntPref("new_events", temp); + PandoraChrome.fn.showNotification(k); + PandoraChrome.fn.showBadge(prefManager.getIntPref("new_events")); + } + } + oldEvents = allEvents; + if (prefManager.getIntPref("new_events") > 0) { + PandoraChrome.fn.showBadge(prefManager.getIntPref("new_events")); + } else { + PandoraChrome.fn.hideBadge(); + } + + if (timer) { + clearTimeout(timer); + } + timer = setTimeout( + PandoraChrome.fn.main, + prefManager.getIntPref("refresh") * 1000 + ); + } + }, + + showNotification: function(eventId) { + //alert("notify"+eventId); + if (prefManager.getBoolPref("sound_alert")) { + if (newEvents[eventId][19] == "Critical") { + Sounds.playSound(prefManager.getIntPref("critical")); + } + if (newEvents[eventId][19] == "Informational") { + Sounds.playSound(prefManager.getIntPref("informational")); + } + if (newEvents[eventId][19] == "Maintenance") { + Sounds.playSound(prefManager.getIntPref("maintenance")); + } + if (newEvents[eventId][19] == "Normal") { + Sounds.playSound(prefManager.getIntPref("normal")); + } + if (newEvents[eventId][19] == "Warning") { + Sounds.playSound(prefManager.getIntPref("warning")); + } + } + + var newEve = document.getElementById("newEvent"); + newEve.label = "Last Event : " + newEvents[eventId][6]; + var id; + if (newEvents[eventId][9] == 0) { + id = "."; + } else { + id = " in the module with Id " + newEvents[eventId][9] + "."; + } + + var event = + newEvents[eventId][14] + + " : " + + newEvents[eventId][17] + + ". Event occured at " + + newEvents[eventId][5] + + id; + newEve.tooltipText = event; + $("#newEvent").show(); + return; + }, + + hideNotification: function() { + //alert("Hide Notif"); + $("#newEvent").hide(); + }, + + showBadge: function(txt) { + //alert(txt); + var updateCount = document.getElementById("temp"); + updateCount.setAttribute( + "style", + "cursor:pointer; font-size:11px; color:#123863; font-weight:bold; display:none;" + ); + updateCount.label = txt; + $("#temp").show(); + }, + + hideBadge: function() { + var updateCount = document.getElementById("temp"); + //alert("hide B"); + $("#temp").hide(); + }, + + divideArray: function(e_array) { + var Events = new Array(); + for (var i = 0; i < e_array.length; i++) { + var event = e_array[i].split(";"); + Events.push(event); + } + return Events; + }, + + fetchNewEvents: function(A, B) { + var arrDiff = new Array(); + // alert(A.length); + //alert(B.length); + for (var i = 0; i < A.length; i++) { + var id = false; + for (var j = 0; j < B.length; j++) { + if (A[i][0] == B[j][0]) { + id = true; + break; + } + } + if (!id) { + arrDiff.push(A[i]); + } + } + return arrDiff; + }, + + getNotification: function(eventId) { + var title = newEvents[eventId][6]; + var id; + if (newEvents[eventId][9] == 0) { + id = "."; + } else { + id = " in the module with Id " + newEvents[eventId][9] + "."; + } + + var event = + newEvents[eventId][14] + + " : " + + newEvents[eventId][17] + + ". Event occured at " + + newEvents[eventId][5] + + id; + //var event=newEvents[eventId][14]+' '+newEvents[eventId][17]+' Event occured at:'+ newEvents[eventId][5] +'in the module with Id '+ newEvents[eventId][9]; + return ( + "<a>" + + title + + '</a> <br/> <span style="font-size:80%">' + + event + + "</span>" + ); + } + }; +})(); /* Add Event Listener */ window.addEventListener("load", PandoraChrome.fn.Onloading(), false);