From 7ca240490d0ba6b2da2dd0939fc2659069f2c7a1 Mon Sep 17 00:00:00 2001 From: Björn Geiger Date: Tue, 23 Aug 2011 13:06:13 +0200 Subject: blacklist und whitelist wird nun vom worker bearbeitet --- .../controllerWorker/ControllerWorker/Boot.java | 42 +++++++------ .../ControllerWorker/BootWorker.java | 16 ++++- .../ControllerWorker/Shutdown.java | 72 +++++++++++++++------- .../ControllerWorker/ShutdownWorker.java | 17 ++++- 4 files changed, 104 insertions(+), 43 deletions(-) (limited to 'gearman') diff --git a/gearman/controllerWorker/ControllerWorker/Boot.java b/gearman/controllerWorker/ControllerWorker/Boot.java index af8c28c..db30c89 100644 --- a/gearman/controllerWorker/ControllerWorker/Boot.java +++ b/gearman/controllerWorker/ControllerWorker/Boot.java @@ -48,6 +48,8 @@ public class Boot extends Thread { private HashMap pingWolTime; private HashMap pingRestartShutdownTime; private HashMap pingRestartBootTime; + private Vector psWhitelist; + private Vector psBlacklist; private Vector> clients; @@ -56,7 +58,8 @@ public class Boot extends Thread { public Boot(String serverAddress, int port, Vector> clients, int updateRate, - long waitTime, String bootOS) { + long waitTime, String bootOS, Vector psWhitelist, + Vector psBlacklist) { this.pingJobs = new HashMap(); this.pingWoLJobs = new HashMap(); this.wolJobs = new HashMap(); @@ -71,6 +74,8 @@ public class Boot extends Thread { this.pingWolTime = new HashMap(); this.pingRestartShutdownTime = new HashMap(); this.pingRestartBootTime = new HashMap(); + this.psWhitelist = psWhitelist; + this.psBlacklist = psBlacklist; this.updateRate = updateRate; // updates per second this.updatePeriod = 1000000000L / this.updateRate; // nanoseconds this.gearmanConnection = new GearmanNIOJobServerConnection( @@ -445,28 +450,27 @@ public class Boot extends Thread { .parse(result); if (!resultObj.containsKey("err")) { JSONArray ps = (JSONArray) resultObj.get("ps"); - boolean isWorking = true; - - //LOGIC_TESTS - /*System.out.println("######"); - System.out.println("######"); - System.out.println("firefox: " + ps.toString().contains("firefox-bin")); // browser firefox - System.out.println("chromium: " + ps.toString().contains("chromium-browse")); // browser chromium - System.out.println("email: " + ps.toString().contains("thunderbird-bi")); // email - System.out.println("pdf-viewer: " + ps.toString().contains("evince")); // pdf-viewer - System.out.println("office: " + ps.toString().contains("soffice.bin")); // office - System.out.println("eclipse: " + ps.toString().contains("eclipse")); // eclipse - System.out.println("######"); - System.out.println("gnome screensaver: " + ps.toString().contains("gnome-screensav")); // gnome screensaver - System.out.println("kde screensaver: " + ps.toString().contains("Kscreensaver")); // kde screensaver - System.out.println("######");*/ - - if (ps.toString().contains("firefox.bin") || ps.toString().contains("chromium-browse") || ps.toString().contains("thunderbird-bi") || ps.toString().contains("evince") || ps.toString().contains("soffice.bin") || ps.toString().contains("eclipse")) { + boolean whitelistFound = false; + boolean blacklistFound = false; + + for (String blackEntry : psBlacklist) { + if (ps.toString().contains(blackEntry)) { + blacklistFound = true; + } + } + + for (String whiteEntry : psWhitelist) { + if (ps.toString().contains(whiteEntry)) { + whitelistFound = true; + } + } + + if (blacklistFound) { System.out.println(ipAddress + " is working"); status.put(clientID, 18); // is working psJobs.remove(clientID); - } else if (ps.toString().contains("gnome-screensav") || ps.toString().contains("Kscreensaver")) { + } else if (whitelistFound) { System.out.println(ipAddress + " is not working"); status.put(clientID, 13); // is not working diff --git a/gearman/controllerWorker/ControllerWorker/BootWorker.java b/gearman/controllerWorker/ControllerWorker/BootWorker.java index e14e380..22d1e91 100644 --- a/gearman/controllerWorker/ControllerWorker/BootWorker.java +++ b/gearman/controllerWorker/ControllerWorker/BootWorker.java @@ -41,7 +41,21 @@ public class BootWorker extends AbstractGearmanFunction { clients.add(clientMap); } - Boot boot = new Boot(host, port, clients, updateRate, waitTime, eventOS); + JSONArray whitelist = (JSONArray) jsonObject.get("whitelist"); + JSONArray blacklist = (JSONArray) jsonObject.get("blacklist"); + Vector psWhitelist = new Vector(); + Vector psBlacklist = new Vector(); + + for (Object whiteEntry : whitelist) { + psWhitelist.add(whiteEntry.toString()); + } + + for (Object blackEntry : blacklist) { + psBlacklist.add(blackEntry.toString()); + } + + Boot boot = new Boot(host, port, clients, updateRate, waitTime, + eventOS, psWhitelist, psBlacklist); StatusWorker.BOOTTHREADS.put(event, boot); boot.start(); System.out.println("Booting started"); diff --git a/gearman/controllerWorker/ControllerWorker/Shutdown.java b/gearman/controllerWorker/ControllerWorker/Shutdown.java index 15ec623..e9adf0d 100644 --- a/gearman/controllerWorker/ControllerWorker/Shutdown.java +++ b/gearman/controllerWorker/ControllerWorker/Shutdown.java @@ -41,6 +41,8 @@ public class Shutdown extends Thread { private HashMap status; private HashMap errors; private HashMap pingShutdownTime; + private Vector psWhitelist; + private Vector psBlacklist; private Vector> clients; @@ -49,7 +51,8 @@ public class Shutdown extends Thread { public Shutdown(String serverAddress, int port, Vector> clients, int updateRate, - long waitTime) { + long waitTime, Vector psWhitelist, + Vector psBlacklist) { this.pingJobs = new HashMap(); this.whoJobs = new HashMap(); this.doShutdownJobs = new HashMap(); @@ -58,6 +61,8 @@ public class Shutdown extends Thread { this.status = new HashMap(); this.errors = new HashMap(); this.pingShutdownTime = new HashMap(); + this.psWhitelist = psWhitelist; + this.psBlacklist = psBlacklist; this.updateRate = updateRate; // updates per second this.updatePeriod = 1000000000L / this.updateRate; // nanoseconds this.gearmanConnection = new GearmanNIOJobServerConnection( @@ -379,30 +384,55 @@ public class Shutdown extends Thread { JSONObject resultObj = (JSONObject) JSONValue .parse(result); if (!resultObj.containsKey("err")) { - JSONArray ps = (JSONArray) resultObj - .get("ps"); - boolean isWorking = true; - - //LOGIC_TESTS - /*System.out.println("######"); - System.out.println("######"); - System.out.println("firefox: " + ps.toString().contains("firefox-bin")); // browser firefox - System.out.println("chromium: " + ps.toString().contains("chromium-browse")); // browser chromium - System.out.println("email: " + ps.toString().contains("thunderbird-bi")); // email - System.out.println("pdf-viewer: " + ps.toString().contains("evince")); // pdf-viewer - System.out.println("office: " + ps.toString().contains("soffice.bin")); // office - System.out.println("eclipse: " + ps.toString().contains("eclipse")); // eclipse - System.out.println("######"); - System.out.println("gnome screensaver: " + ps.toString().contains("gnome-screensav")); // gnome screensaver - System.out.println("kde screensaver: " + ps.toString().contains("Kscreensaver")); // kde screensaver - System.out.println("######");*/ - - if (ps.toString().contains("firefox.bin") || ps.toString().contains("chromium-browse") || ps.toString().contains("thunderbird-bi") || ps.toString().contains("evince") || ps.toString().contains("soffice.bin") || ps.toString().contains("eclipse")) { + JSONArray ps = (JSONArray) resultObj.get("ps"); + boolean whitelistFound = false; + boolean blacklistFound = false; + + for (String blackEntry : psBlacklist) { + if (ps.toString().contains(blackEntry)) { + blacklistFound = true; + } + } + + for (String whiteEntry : psWhitelist) { + if (ps.toString().contains(whiteEntry)) { + whitelistFound = true; + } + } + + // LOGIC_TESTS + /* + * System.out.println("######"); + * System.out.println("######"); + * System.out.println("firefox: " + + * ps.toString().contains("firefox-bin")); // + * browser firefox + * System.out.println("chromium: " + + * ps.toString().contains("chromium-browse")); + * // browser chromium + * System.out.println("email: " + + * ps.toString().contains("thunderbird-bi")); // + * email System.out.println("pdf-viewer: " + + * ps.toString().contains("evince")); // + * pdf-viewer System.out.println("office: " + + * ps.toString().contains("soffice.bin")); // + * office System.out.println("eclipse: " + + * ps.toString().contains("eclipse")); // + * eclipse System.out.println("######"); + * System.out.println("gnome screensaver: " + + * ps.toString().contains("gnome-screensav")); + * // gnome screensaver + * System.out.println("kde screensaver: " + + * ps.toString().contains("Kscreensaver")); // + * kde screensaver System.out.println("######"); + */ + + if (blacklistFound) { System.out.println(ipAddress + " is working"); status.put(clientID, 11); // is working psJobs.remove(clientID); - } else if (ps.toString().contains("gnome-screensav") || ps.toString().contains("Kscreensaver")) { + } else if (whitelistFound) { System.out.println(ipAddress + " is not working"); status.put(clientID, 4); // is not working diff --git a/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java b/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java index 73c659a..5bbc165 100644 --- a/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java +++ b/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java @@ -40,8 +40,21 @@ public class ShutdownWorker extends AbstractGearmanFunction { clients.add(clientMap); } - Shutdown shutdown = new Shutdown(host, port, clients, - updateRate, waitTime); + JSONArray whitelist = (JSONArray) jsonObject.get("whitelist"); + JSONArray blacklist = (JSONArray) jsonObject.get("blacklist"); + Vector psWhitelist = new Vector(); + Vector psBlacklist = new Vector(); + + for (Object whiteEntry : whitelist) { + psWhitelist.add(whiteEntry.toString()); + } + + for (Object blackEntry : blacklist) { + psBlacklist.add(blackEntry.toString()); + } + + Shutdown shutdown = new Shutdown(host, port, clients, updateRate, + waitTime, psWhitelist, psBlacklist); StatusWorker.SHUTDOWNTHREADS.put(event, shutdown); shutdown.start(); System.out.println("Shutdown started"); -- cgit v1.2.3-55-g7522