Package org.parosproxy.paros

Source Code of org.parosproxy.paros.Constant

/*
* Created on May 18, 2004
*
* Paros and its related class files.
*
* Paros is an HTTP/HTTPS proxy for assessing web application security.
* Copyright (C) 2003-2005 Chinotec Technologies Company
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the Clarified Artistic License
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* Clarified Artistic License for more details.
*
* You should have received a copy of the Clarified Artistic License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
package org.parosproxy.paros;

import java.io.File;
import java.util.NoSuchElementException;
import java.util.ResourceBundle;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.parosproxy.paros.model.FileCopier;

/**
*
* To change the template for this generated type comment go to Window -
* Preferences - Java - Code Generation - Code and Comments
*/
public final class Constant {
  public static final String PROGRAM_NAME = "Andiparos";
  public static final String PROGRAM_FULLNAME = PROGRAM_NAME + " Injection Proxy";

  // ************************************************************
  // the version String in the config.xml MUST be set to be the same
  // as the version_tag otherwise the config.xml will be overwritten
  // everytime.
  // ************************************************************
  public static final String PROGRAM_VERSION = "1.0.6";
  public static final long VERSION_TAG = 1000006;
  // ************************************************************
  // note the above
  // ************************************************************

  public static final String PROGRAM_TITLE = PROGRAM_NAME + " " + PROGRAM_VERSION;
  public static final String PROGRAM_LICENSE = "GPLv2";
 
  public static final String SYSTEM_PAROS_USER_LOG = "andiparos.user.log";
 
  public static final String FILE_SEPARATOR = System.getProperty("file.separator");
  public static final String FILE_CONFIG_DEFAULT = "xml/config.xml";
  public static String FILE_CONFIG = "config.xml";
 
 
 
  public static final String FOLDER_PLUGIN = "plugin";
  public static final String FOLDER_FILTER = "filter";
  public static final String FOLDER_SESSION_DEFAULT = "session";
  public String FOLDER_SESSION = "session";
 
  public static final String DBNAME_TEMPLATE = "db" + FILE_SEPARATOR + "andiparosdb";
  public static final String DBNAME_UNTITLED_DEFAULT = FOLDER_SESSION_DEFAULT + FILE_SEPARATOR + "untitled";
  public String DBNAME_UNTITLED = FOLDER_SESSION + FILE_SEPARATOR + "untitled";
 
  public String ACCEPTED_LICENSE_DEFAULT = "AcceptedLicense";
  public String ACCEPTED_LICENSE = ACCEPTED_LICENSE_DEFAULT;

  // Accelerator keys - Default: Windows
  public static String ACCELERATOR_UNDO = "control Z";
  public static String ACCELERATOR_REDO = "control Y";
  public static String ACCELERATOR_TRIGGER_KEY = "Control";
 
  private static Constant instance = null;

  public static final int MAX_HOST_CONNECTION = 5;
 
  public static final String USER_AGENT_DEFAULT = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0;)";
 
  // ZAP: Added i18n
    public static ResourceBundle messages = null;
  
  public static boolean useNimbus = false;

  private static String staticEyeCatcher = PROGRAM_NAME;
  private static boolean staticSP = false;
  private static Pattern patternWindows = Pattern.compile("window", Pattern.CASE_INSENSITIVE);
  private static Pattern patternLinux = Pattern.compile("linux", Pattern.CASE_INSENSITIVE);
  private static Pattern patternSolaris = Pattern.compile("solaris", Pattern.CASE_INSENSITIVE);
  private static Pattern patternOSX = Pattern.compile("mac", Pattern.CASE_INSENSITIVE);
 
  // ZAP: Added vulnerabilities file
    public String VULNS_CONFIG = "xml/vulnerabilities.xml";
 

  public static String getEyeCatcher() {
    return staticEyeCatcher;
  }

  public static void setEyeCatcher(String eyeCatcher) {
    staticEyeCatcher = eyeCatcher;
  }

  public static void setSP(boolean isSP) {
    staticSP = isSP;
  }

  public static boolean isSP() {
    return staticSP;
  }

  public Constant() {
    initializeFilesAndDirectories();
    setAcceleratorKeys();
  }
 
  private void initializeFilesAndDirectories() {
 
    FileCopier copier = new FileCopier();
    File f = null;
    Log log = null;
   
    String userhome = System.getProperty("user.home");
   
    // default to use application directory 'log'
    System.setProperty(SYSTEM_PAROS_USER_LOG, "log");

    if (userhome != null && !userhome.equals("")) {
     
      if (isLinux() || isSolaris()) {
        userhome += FILE_SEPARATOR + "." + PROGRAM_NAME;
      } else if (isOSX()) {
        userhome += FILE_SEPARATOR + "Library" + FILE_SEPARATOR
          + "Application Support" + FILE_SEPARATOR + PROGRAM_NAME;
      } else {
        // Windows System
        userhome += FILE_SEPARATOR + PROGRAM_NAME;
      }
     
      f = new File(userhome);
      userhome += FILE_SEPARATOR;
      FILE_CONFIG = userhome + FILE_CONFIG;
      FOLDER_SESSION = userhome + FOLDER_SESSION;
      DBNAME_UNTITLED = userhome + DBNAME_UNTITLED;
      ACCEPTED_LICENSE = userhome + ACCEPTED_LICENSE;

      try {

        System.setProperty(SYSTEM_PAROS_USER_LOG, userhome);
        System.setProperty("log4j.configuration", "xml/log4j.properties");

        if (!f.isDirectory()) {
                    if (! f.mkdir() ) {
                      // ZAP: report failure to create directory
                      System.out.println("Failed to create directory " + f.getAbsolutePath());
                    }
          log = LogFactory.getLog(Constant.class);
          log.info("Created directory " + userhome);

        } else {
          log = LogFactory.getLog(Constant.class);

        }

        f = new File(FILE_CONFIG);
        if (!f.isFile()) {
          log.info("Copying defaults from " + FILE_CONFIG_DEFAULT + " to " + FILE_CONFIG);
          copier.copy(new File(FILE_CONFIG_DEFAULT), f);

        } else {
          try {

            XMLConfiguration config = new XMLConfiguration(FILE_CONFIG);
            config.setAutoSave(false);
            config.load();

            long ver = config.getLong("version");
            if (VERSION_TAG > ver) {
              // overwrite previous configuration file
              copier.copy(new File(FILE_CONFIG_DEFAULT), f);
            }
          } catch (ConfigurationException e) {
            // if there is any error in config file (eg config file
            // not exist), overwrite previous configuration file
            copier.copy(new File(FILE_CONFIG_DEFAULT), f);

          } catch (NoSuchElementException e) {
            // overwrite previous configuration file if config file
            // corrupted
            copier.copy(new File(FILE_CONFIG_DEFAULT), f);

          }

        }

        f = new File(FOLDER_SESSION);
        if (!f.isDirectory()) {
          log.info("Creating directory " + FOLDER_SESSION);
          if (! f.mkdir() ) {
                      // ZAP: report failure to create directory
                      System.out.println("Failed to create directory " + f.getAbsolutePath());
                    }
        }
      } catch (Exception e) {
        System.err.println("Unable to initialize home directory! " + e.getMessage());
        e.printStackTrace(System.err);
        System.exit(1);
      }

    } else {

      System.setProperty("log4j.configuration", "xml/log4j.properties");

      FILE_CONFIG = FILE_CONFIG_DEFAULT;
      FOLDER_SESSION = FOLDER_SESSION_DEFAULT;
      DBNAME_UNTITLED = DBNAME_UNTITLED_DEFAULT;
      ACCEPTED_LICENSE = ACCEPTED_LICENSE_DEFAULT;

    }
   
    // ZAP: Init i18n
        // TODO select correct locale!
      messages = ResourceBundle.getBundle("Messages");

  }

  public static Constant getInstance() {
    if (instance == null) {
      instance = new Constant();
    }
    return instance;

  }
 
  private void setAcceleratorKeys() {

    // Undo/Redo
    if (Constant.isOSX()) {
      ACCELERATOR_UNDO = "meta Z";
      ACCELERATOR_REDO = "meta shift Z";
      ACCELERATOR_TRIGGER_KEY = "Meta";
    } else {
      ACCELERATOR_UNDO = "control Z";
      ACCELERATOR_REDO = "control Y";
      ACCELERATOR_TRIGGER_KEY = "Control";
    }
  }

  public static boolean isWindows() {
    String os_name = System.getProperty("os.name");
    Matcher matcher = patternWindows.matcher(os_name);
    return matcher.find();
  }

  public static boolean isLinux() {
    String os_name = System.getProperty("os.name");
    Matcher matcher = patternLinux.matcher(os_name);
    return matcher.find();
  }
 
  public static boolean isSolaris() {
    String os_name = System.getProperty("os.name");
    Matcher matcher = patternSolaris.matcher(os_name);
    return matcher.find();
  }
 
  public static boolean isOSX() {
    String os_name = System.getProperty("os.name");
    Matcher matcher = patternOSX.matcher(os_name);
    return matcher.find();
  }

}
TOP

Related Classes of org.parosproxy.paros.Constant

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.