示例#1
0
 public static Array createHealthGroup() throws SiteViewParameterException {
   String s = Platform.getRoot() + File.separator + "groups" + File.separator + "__Health__.mg";
   File file = new File(s);
   Array array = null;
   if (!file.exists()) {
     array = new Array();
     HashMap hashmap = new HashMap();
     hashmap.put("_encoding", I18N.getDefaultEncoding());
     hashmap.put("_health", "true");
     hashmap.put("_dependsCondition", "good");
     hashmap.put("_fileEncoding", I18N.getDefaultEncoding());
     hashmap.put("_name", "Health");
     hashmap.put("_nextID", "1");
     array.add(hashmap);
     try {
       FrameFile.writeToFile(s, array);
     } catch (IOException ioexception1) {
       String as[] = {"__Health__.mg", ioexception1.getMessage()};
       throw new SiteViewParameterException(SiteViewErrorCodes.ERR_OP_SS_HEALTH_CANNOT_WRITE, as);
     }
   } else {
     try {
       array = FrameFile.readFromFile(s);
     } catch (IOException ioexception) {
       LogManager.log(
           "error", "Couldn't read the Health group. Got Error: " + ioexception.getMessage());
     }
   }
   return array;
 }
示例#2
0
 public Vector getScalarValues(ScalarProperty scalarproperty, HTTPRequest httprequest, CGI cgi)
     throws SiteViewException {
   if (scalarproperty == pScript) {
     Vector vector =
         getScriptList(getProperty(pMachineName), getProperty(pLocalScriptLocation), httprequest);
     vector.addElement("USE COMMAND");
     vector.addElement("USE COMMAND");
     return vector;
   }
   if (scalarproperty == pRemoteScript) {
     Vector vector1 = new Vector();
     File file =
         new File(Platform.getUsedDirectoryPath("scripts.remote", httprequest.getAccount()));
     String as[] = file.list();
     if (as != null) {
       vector1.addElement("none");
       vector1.addElement("none");
       for (int i = 0; i < as.length; i++) {
         String s = I18N.toNullEncoding(as[i]);
         if (Platform.isUnix() && s.startsWith(".")) {
           continue;
         }
         File file1 = new File(file, as[i]);
         if (!file1.isDirectory()) {
           vector1.addElement(s);
           vector1.addElement(s);
         }
       }
     }
     return vector1;
   } else {
     return super.getScalarValues(scalarproperty, httprequest, cgi);
   }
 }
示例#3
0
 String getParameters() {
   String s = I18N.toDefaultEncoding(getProperty("_parameters"));
   if (TextUtils.isSubstituteExpression(s)) {
     s = TextUtils.substitute(s);
   }
   s = createFromTemplate(s);
   if (TextUtils.hasChars(s, "`;&|<>")) {
     LogManager.log(
         "Error",
         "Removed illegal characters from script monitor parameters \""
             + s
             + "\""
             + " for monitor "
             + getProperty(pName));
     s = TextUtils.removeChars(s, "`;&|<>");
   }
   return s;
 }
示例#4
0
  public static Vector getScriptList(String s, String s1, HTTPRequest httprequest) {
    Vector vector = new Vector();
    String s2 = s1;
    if (s2 == null || s2.length() == 0) {
      s2 = "scripts";
    }
    s = Machine.getFullMachineID(s, httprequest);
    if (Machine.isPortalMachineID(s)) {
      String s3 = Machine.getServerIDFromMachineID(s);
      PortalSiteView portalsiteview = (PortalSiteView) Portal.getPortal().getElement(s3);
      if (portalsiteview != null) {
        String s4 =
            "/SiteView/cgi/go.exe/SiteView?page=remoteOp&operation=scripts&machineID="
                + Machine.getMachineFromMachineID(s)
                + "&account=administrator";
        ArrayList array2 = portalsiteview.sendURLToRemoteSiteView(s4, null);
        for (int i1 = 0; i1 < array2.size(); i1++) {
          vector.addElement(array2.get(i1));
        }

      } else {
        LogManager.log("Error", "Could not find SiteView ID: " + s3);
      }
    } else if (Machine.isNTSSH(s)) {
      RemoteFile remotefile = new RemoteFile(s, "scripts");
      ArrayList array = remotefile.listFiles();
      for (int j = 0; j < array.size(); j++) {
        String s5 = I18N.toNullEncoding((String) array.get(j));
        if (!s5.endsWith(".txt")
            && !s5.endsWith("directory.bat")
            && (s5.endsWith(".bat")
                || s5.endsWith(".vbs")
                || s5.endsWith(".exe")
                || s5.endsWith(".pl")
                || s5.endsWith(".sh"))) {
          String as1[] = TextUtils.split(s5, " ");
          s5 = as1[as1.length - 1].trim();
          vector.addElement(s5);
          vector.addElement(s5);
        }
      }

    } else if (Platform.isCommandLineRemote(s)) {
      RemoteFile remotefile1 = new RemoteFile(s, "scripts");
      int i = Machine.getOS(s);
      ArrayList array1 = remotefile1.listFiles();
      for (int l = 0; l < array1.size(); l++) {
        String s7 = I18N.toNullEncoding((String) array1.get(l));
        if (!s7.endsWith(".txt") && (!Platform.isUnix(i) || !s7.startsWith("."))) {
          vector.addElement(s7);
          vector.addElement(s7);
        }
      }

    } else {
      File file = new File(Platform.getUsedDirectoryPath(s2, httprequest.getAccount()));
      String as[] = file.list();
      for (int k = 0; k < as.length; k++) {
        String s6 = I18N.toNullEncoding(as[k]);
        if (s6.endsWith(".txt") || Platform.isUnix() && s6.startsWith(".")) {
          continue;
        }
        File file1 = new File(file, as[k]);
        if (!file1.isDirectory()) {
          vector.addElement(s6);
          vector.addElement(s6);
        }
      }
    }
    return vector;
  }
示例#5
0
  /** 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;
  }