public HashMap getTemplateTable() { if (templateID != null && templateTableLastUpdate < templateCacheLastUpdate) { templateTable = null; if (templateID.length() > 0) { if (templateCache == null) { templateCache = new HashMap(); String s = ""; Array array = getTemplateConfigFileList(); for (int i = 0; i < array.size(); i++) try { s = (String) array.at(i); HashMap hashmap2 = new HashMap(); Array array1 = FrameFile.readFromFile(s); templateCacheLastUpdate = Platform.timeMillis(); for (int j = 1; j < array1.size(); j++) { HashMap hashmap3 = (HashMap) array1.at(j); hashmap2.put(TextUtils.getValue(hashmap3, "__id"), hashmap3); } resolveTemplateReferences(hashmap2); templateCache.add(s, hashmap2); } catch (IOException ioexception) { LogManager.log("Error", "Could not read template file " + s); } } if (templateCache != null) { String s1 = getTemplateConfigFilePath(); HashMap hashmap = null; hashmap = (HashMap) templateCache.get(s1); if (hashmap != null) { HashMap hashmap1 = (HashMap) hashmap.get(templateID); if (hashmap1 != null) { templateTable = new HashMapOrdered(true); initializeValuesTable(hashmap1, templateTable, true); } } } } templateTableLastUpdate = Platform.timeMillis(); } return templateTable; }
public void resetTemplateCache() { templateCache = null; templateCacheLastUpdate = Platform.timeMillis(); }
/** CAUTION: Decompiled by hand. */ protected boolean update() { long l = Platform.timeMillis(); int i = -1; String[] as = (new String[] {""}); String s = getProperty(pExpression); long l1 = getPropertyAsLong(pMaxMeasurement); int j = getPropertyAsInteger(pCacheLife); boolean flag = j > 0; ArrayList array = new ArrayList(); String s1 = ""; try { String s2 = I18N.toDefaultEncoding(getProperty(pScript)); String s3 = I18N.toDefaultEncoding(getProperty(pRemoteScript)); String s4 = null; String s7 = I18N.toDefaultEncoding(getProperty(pLocalScriptLocation)); if (s7.length() == 0) { s7 = "scripts"; } else if (s7.indexOf("../") >= 0 || s7.indexOf("..\\") >= 0) { failMonitorRun(i, "Illegal Script Location contains ../ construct"); return true; } s1 = getProperty(pMachineName); if (Machine.isNTSSH(s1) && s2.equals("USE COMMAND")) { failMonitorRun(i, "Can't use this option with remote NT ssh connection"); return true; } if (Platform.isRemote(s1) && Machine.getMachine(s1) == null) { failMonitorRun(i, "Remote host unreachable"); return true; } if (Platform.isNTRemote(s1) && !Machine.isNTSSH(s1)) { failMonitorRun(i, "NT host must be configured as NT ssh remote "); return true; } if (s3.equals("none") && s2.equals("USE COMMAND")) { failMonitorRun(i, "Need to specify a script"); return true; } if (s3.length() != 0 && !s3.equals("none")) { try { s4 = getCommandFromLocalFile(s3); s4 = TextUtils.replaceParameters(s4, getParameters(), getReplacementChars()); } catch (IOException ioexception) { LogManager.log("Error", " File load error " + ioexception.toString()); setProperty(pNoData, "n/a"); } } else { if (!Platform.isRemote(s1)) { String s8 = Platform.getRoot() + "/" + s7 + "/" + s2; File file = new File(s8); s4 = file.getAbsolutePath(); } else { String s9 = "scripts" + Machine.getMachinePathSeparator(s1) + s2; OSAdapter osadapter = Machine.getAdapter(s1); if (osadapter != null) { CommandLine commandline = new CommandLine(); String s11 = osadapter.getCommandSetting("fileExists", "changeDirectory"); if (s11.length() > 0) { s4 = s11; } else { s4 = "/usr/bin/cd"; } commandline.exec(s4, s1, Platform.getLock(s1)); } RemoteFile remotefile = new RemoteFile(s1, s9); s4 = remotefile.getFullPath(); } s4 = s4 + " " + getParameters(); System.out.println("Script: " + s4); } LogManager.log("RunMonitor", "Script monitor command: " + s4 + ", machine: " + s1); String s10 = s1; if (s10.startsWith("\\\\")) { s10 = s10.substring(2); } Machine machine = Machine.getNTMachine(s10); int j1 = getPropertyAsInteger(pTimeout) * 1000; if (j1 < 0) { j1 = getSettingAsLong("_scriptMonitorTimeout", -1) * 1000; } String s12 = getScriptServerName(s1); String s14 = getProperty(pScript).equals("USE COMMAND") ? getProperty(pRemoteScript) : getProperty(pScript); ScriptMonitorCache scriptmonitorcache = new ScriptMonitorCache(s12, s14, getPropertyAsInteger(pCacheLife)); if (!flag && alertDebug) { System.out.println("Caching is disabled."); } boolean flag1 = scriptmonitorcache.isFresh(); if (flag && flag1 && scriptmonitorcache.getExitValue() == 0) { if (alertDebug) { System.out.println( "Caching is enabled, the cache life time is set to: " + getPropertyAsInteger(pCacheLife)); } if (alertDebug) { System.out.println( "The cache is still good, not exec'ing script, cache last modified on: " + scriptmonitorcache.getLastModDate()); } array = scriptmonitorcache.getOutput(); i = scriptmonitorcache.getExitValue(); } else if (machine != null && Machine.isNTSSH(s10)) { if (s4.indexOf("\\\\" + s10) > 0) { s4 = TextUtils.replaceString(s4, "\\\\" + s10, ""); } s4 = "scripts\\" + s4.substring(s4.indexOf(s2)); if (j1 > 0) { s4 = CommandLine.getExecSyncCmd(s10, s4, j1, true); } SSHCommandLine sshcommandline = new SSHCommandLine(); array = sshcommandline.exec(s4, machine, false); i = sshcommandline.exitValue; } else { CommandLine commandline1 = new CommandLine(); array = commandline1.exec(s4, s1, Platform.monitorLock, j1); i = commandline1.getExitValue(); } if (flag && !flag1) { if (alertDebug) { System.out.println("Exec'd script and updating cache."); } scriptmonitorcache.update(i, array); } if (i < 0) { String s16 = "Failed to run script"; if (i == Monitor.kURLTimeoutError) { s16 = "Script timed out"; } failMonitorRun(i, s16); return true; } StringBuffer stringbuffer1 = new StringBuffer(); String s17; Enumeration enumeration = (Enumeration) array.iterator(); while (enumeration.hasMoreElements()) { s17 = (String) enumeration.nextElement(); LogManager.log("RunMonitor", "Script monitor machine " + s1 + " output: " + s17); if (s17.startsWith(CommandLine.PERFEX_EXECSYNC_TIMEOUT)) { failMonitorRun(-1, "Error: Timeout"); return true; } if (s17.indexOf("not found") > 0 || s17.indexOf("Not Found") > 0 || s17.indexOf("denied") > 0 || s17.indexOf("Denied") > 0 || s17.indexOf("cannot execute") > 0 || s17.indexOf("such file or directory") > 0) { failMonitorRun(-1, s17); return true; } stringbuffer1.append(s17); stringbuffer1.append("\n"); if (s.length() > 0 && !TextUtils.isRegularExpression(s) && s17.indexOf(s) != -1) { long l4 = TextUtils.findLong(s17, "", ""); if (l4 != -1L) { as[0] = String.valueOf(l4); } } } if (TextUtils.isSubstituteExpression(s)) { s = TextUtils.substitute(s, this); } if (s.length() > 0 && TextUtils.isRegularExpression(s)) { String s18 = stringbuffer1.toString(); Perl5Util perl5util = new Perl5Util(); if (perl5util.match(s, s18)) { int i2 = perl5util.groups(); if (i2 > 0) { if (i2 == 1) { as = new String[i2]; as[0] = perl5util.group(0); } else { if (--i2 > maxNumberOfMatches) { i2 = maxNumberOfMatches; } as = new String[i2]; for (int j2 = 0; j2 < as.length && j2 < maxNumberOfMatches; j2++) { as[j2] = perl5util.group(j2 + 1); } } } } else { failMonitorRun(-1, "Content Match Error"); return true; } } } catch (Exception exception) { LogManager.log("RunMonitor", "Script monitor error: " + exception + " machine: " + s1); setProperty(pNoData, "n/a"); } LogManager.log("RunMonitor", "Script monitor exit: " + i + " machine: " + s1); setProperty(pScriptOutput, ""); if (as[0].trim().length() == 0) { as[0] = "n/a"; long l2 = getSettingAsLong("_scriptMonitorLinesToSave", 25); String s5 = ""; for (int k = 0; k < array.size() && (long) k < l2; k++) { s5 = s5 + array.get(k); s5 = s5 + "^"; } s5 = s5.replace('\r', ' '); s5 = s5.replace('\n', '^'); setProperty(pScriptOutput, s5); } long l3 = Platform.timeMillis() - l; String s6 = TextUtils.floatToString((float) l3 / 1000F, 2) + " sec"; if (stillActive()) { synchronized (this) { for (int i1 = 0; i1 < as.length; i1++) { setProperty(pMatchValue[i1], as[i1]); } setProperty(pStatus, i); if (i != 0) { setProperty(pNoData, "n/a"); } setProperty(pRoundTripTime, l3); setProperty(pMeasurement, getMeasurement(pRoundTripTime, l1)); if (s.length() > 0) { HashMap hashmap = getLabels(); StringBuffer stringbuffer = new StringBuffer(); for (int k1 = 0; k1 < as.length; k1++) { String s13 = getNameFromIndex(k1); String s15 = (String) hashmap.get(s13); if (s15 == null) { s15 = s13; } stringbuffer.append(s15 + "=" + as[k1] + (k1 >= as.length - 1 ? "" : ",")); } setProperty(pStateString, stringbuffer); } else { setProperty(pStateString, "exit: " + i + ", " + s6); } } } return true; }