Search in sources :

Example 11 with ZapXmlConfiguration

use of org.zaproxy.zap.utils.ZapXmlConfiguration in project zaproxy by zaproxy.

the class Constant method loadLocale.

private Locale loadLocale(ControlOverrides overrides) {
    try {
        String lang = null;
        if (overrides != null) {
            lang = overrides.getOrderedConfigs().get(OptionsParamView.LOCALE);
        }
        if (lang == null || lang.isEmpty()) {
            XMLConfiguration config = new ZapXmlConfiguration(FILE_CONFIG);
            config.setAutoSave(false);
            lang = config.getString(OptionsParamView.LOCALE, OptionsParamView.DEFAULT_LOCALE);
            if (lang.length() == 0) {
                lang = OptionsParamView.DEFAULT_LOCALE;
            }
        }
        String[] langArray = lang.split("_");
        return new Locale(langArray[0], langArray[1]);
    } catch (Exception e) {
        System.out.println("Failed to load locale " + e);
    }
    return Locale.ENGLISH;
}
Also used : Locale(java.util.Locale) XMLConfiguration(org.apache.commons.configuration.XMLConfiguration) ZapXmlConfiguration(org.zaproxy.zap.utils.ZapXmlConfiguration) URISyntaxException(java.net.URISyntaxException) ConversionException(org.apache.commons.configuration.ConversionException) InvalidParameterException(java.security.InvalidParameterException) ParseException(java.text.ParseException) NoSuchElementException(java.util.NoSuchElementException) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) ConfigurationException(org.apache.commons.configuration.ConfigurationException)

Example 12 with ZapXmlConfiguration

use of org.zaproxy.zap.utils.ZapXmlConfiguration in project zaproxy by zaproxy.

the class Constant method copyDefaultConfigs.

public void copyDefaultConfigs(File f, boolean forceReset) throws IOException, ConfigurationException {
    FileCopier copier = new FileCopier();
    File oldf;
    if (isDevMode() || isDailyBuild()) {
        // try standard location
        oldf = new File(getDefaultHomeDirectory(false) + FILE_SEPARATOR + FILE_CONFIG_NAME);
    } else {
        // try old location
        oldf = new File(zapHome + FILE_SEPARATOR + "zap" + FILE_SEPARATOR + FILE_CONFIG_NAME);
    }
    if (!forceReset && oldf.exists() && Paths.get(zapHome).equals(Paths.get(getDefaultHomeDirectory(true)))) {
        // Dont copy old configs if forcedReset or they've specified a non std directory
        LOG.info("Copying defaults from " + oldf.getAbsolutePath() + " to " + FILE_CONFIG);
        copier.copy(oldf, f);
        if (isDevMode() || isDailyBuild()) {
            ZapXmlConfiguration newConfig = new ZapXmlConfiguration(f);
            newConfig.setProperty(OptionsParamCheckForUpdates.DOWNLOAD_DIR, Constant.FOLDER_LOCAL_PLUGIN);
            newConfig.save();
        }
    } else {
        LOG.info("Copying default configuration to " + FILE_CONFIG);
        copyDefaultConfigFile();
    }
}
Also used : ZapXmlConfiguration(org.zaproxy.zap.utils.ZapXmlConfiguration) File(java.io.File) FileCopier(org.parosproxy.paros.model.FileCopier)

Example 13 with ZapXmlConfiguration

use of org.zaproxy.zap.utils.ZapXmlConfiguration in project zaproxy by zaproxy.

the class Constant method updateCfuFromDefaultConfig.

private static void updateCfuFromDefaultConfig(XMLConfiguration config) {
    Path path = getPathDefaultConfigFile();
    if (!Files.exists(path)) {
        return;
    }
    ZapXmlConfiguration defaultConfig;
    try {
        defaultConfig = new ZapXmlConfiguration(path.toFile());
    } catch (ConfigurationException e) {
        logAndPrintError("Failed to read default configuration file " + path, e);
        return;
    }
    copyPropertyIfSet(defaultConfig, config, "start.checkForUpdates");
    copyPropertyIfSet(defaultConfig, config, "start.downloadNewRelease");
    copyPropertyIfSet(defaultConfig, config, "start.checkAddonUpdates");
    copyPropertyIfSet(defaultConfig, config, "start.installAddonUpdates");
    copyPropertyIfSet(defaultConfig, config, "start.installScannerRules");
    copyPropertyIfSet(defaultConfig, config, "start.reportReleaseAddons");
    copyPropertyIfSet(defaultConfig, config, "start.reportBetaAddons");
    copyPropertyIfSet(defaultConfig, config, "start.reportAlphaAddons");
}
Also used : Path(java.nio.file.Path) ConfigurationException(org.apache.commons.configuration.ConfigurationException) ZapXmlConfiguration(org.zaproxy.zap.utils.ZapXmlConfiguration)

Example 14 with ZapXmlConfiguration

use of org.zaproxy.zap.utils.ZapXmlConfiguration in project zaproxy by zaproxy.

the class Constant method initializeFilesAndDirectories.

private void initializeFilesAndDirectories(ControlOverrides overrides) {
    FileCopier copier = new FileCopier();
    File f = null;
    // Set up the version from the manifest
    PROGRAM_VERSION = getVersionFromManifest();
    PROGRAM_TITLE = PROGRAM_NAME + " " + PROGRAM_VERSION;
    if (zapHome == null) {
        zapHome = getDefaultHomeDirectory(true);
    }
    zapHome = getAbsolutePath(zapHome);
    f = new File(zapHome);
    FILE_CONFIG = zapHome + FILE_CONFIG;
    FOLDER_SESSION = zapHome + FOLDER_SESSION;
    DBNAME_UNTITLED = zapHome + DBNAME_UNTITLED;
    DIRBUSTER_CUSTOM_DIR = zapHome + DIRBUSTER_DIR;
    FUZZER_DIR = zapHome + FUZZER_DIR;
    FOLDER_LOCAL_PLUGIN = zapHome + FOLDER_PLUGIN;
    try {
        System.setProperty(SYSTEM_PAROS_USER_LOG, zapHome);
        if (!f.isDirectory()) {
            if (f.exists()) {
                System.err.println("The home path is not a directory: " + zapHome);
                System.exit(1);
            }
            if (!f.mkdir()) {
                System.err.println("Unable to create home directory: " + zapHome);
                System.err.println("Is the path correct and there's write permission?");
                System.exit(1);
            }
        } else if (!f.canWrite()) {
            System.err.println("The home path is not writable: " + zapHome);
            System.exit(1);
        } else {
            Path installDir = Paths.get(getZapInstall()).toRealPath();
            if (installDir.equals(Paths.get(zapHome).toRealPath())) {
                System.err.println("The install dir should not be used as home dir: " + installDir);
                System.exit(1);
            }
        }
        setUpLogging();
        f = new File(FILE_CONFIG);
        if (!f.isFile()) {
            this.copyDefaultConfigs(f, false);
        }
        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());
            }
        }
        f = new File(DIRBUSTER_CUSTOM_DIR);
        if (!f.isDirectory()) {
            LOG.info("Creating directory " + DIRBUSTER_CUSTOM_DIR);
            if (!f.mkdir()) {
                // ZAP: report failure to create directory
                System.out.println("Failed to create directory " + f.getAbsolutePath());
            }
        }
        f = new File(FUZZER_DIR);
        if (!f.isDirectory()) {
            LOG.info("Creating directory " + FUZZER_DIR);
            if (!f.mkdir()) {
                // ZAP: report failure to create directory
                System.out.println("Failed to create directory " + f.getAbsolutePath());
            }
        }
        f = new File(FOLDER_LOCAL_PLUGIN);
        if (!f.isDirectory()) {
            LOG.info("Creating directory " + FOLDER_LOCAL_PLUGIN);
            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);
    }
    // Upgrade actions
    try {
        try {
            // ZAP: Changed to use ZapXmlConfiguration, to enforce the same character encoding
            // when reading/writing configurations.
            XMLConfiguration config = new ZapXmlConfiguration(FILE_CONFIG);
            config.setAutoSave(false);
            long ver = config.getLong(VERSION_ELEMENT);
            if (ver == VERSION_TAG) {
            // Nothing to do
            } else if (isDevMode() || isDailyBuild()) {
            // Nothing to do
            } else {
                // Backup the old one
                LOG.info("Backing up config file to " + FILE_CONFIG + ".bak");
                f = new File(FILE_CONFIG);
                try {
                    copier.copy(f, new File(FILE_CONFIG + ".bak"));
                } catch (IOException e) {
                    String msg = "Failed to backup config file " + FILE_CONFIG + " to " + FILE_CONFIG + ".bak " + e.getMessage();
                    System.err.println(msg);
                    LOG.error(msg, e);
                }
                if (ver == V_PAROS_TAG) {
                    upgradeFrom1_1_0(config);
                    upgradeFrom1_2_0(config);
                }
                if (ver <= V_1_0_0_TAG) {
                // Nothing to do
                }
                if (ver <= V_1_1_0_TAG) {
                    upgradeFrom1_1_0(config);
                }
                if (ver <= V_1_2_0_TAG) {
                    upgradeFrom1_2_0(config);
                }
                if (ver <= V_1_2_1_TAG) {
                // Nothing to do
                }
                if (ver <= V_1_3_0_TAG) {
                // Nothing to do
                }
                if (ver <= V_1_3_1_TAG) {
                // Nothing to do
                }
                if (ver <= V_1_4_1_TAG) {
                    upgradeFrom1_4_1(config);
                }
                if (ver <= V_2_0_0_TAG) {
                    upgradeFrom2_0_0(config);
                }
                if (ver <= V_2_1_0_TAG) {
                // Nothing to do
                }
                if (ver <= V_2_2_0_TAG) {
                    upgradeFrom2_2_0(config);
                }
                if (ver <= V_2_2_2_TAG) {
                    upgradeFrom2_2_2(config);
                }
                if (ver <= V_2_3_1_TAG) {
                    upgradeFrom2_3_1(config);
                }
                if (ver <= V_2_4_3_TAG) {
                    upgradeFrom2_4_3(config);
                }
                if (ver <= V_2_5_0_TAG) {
                    upgradeFrom2_5_0(config);
                }
                if (ver <= V_2_7_0_TAG) {
                    upgradeFrom2_7_0(config);
                }
                if (ver <= V_2_8_0_TAG) {
                    upgradeFrom2_8_0(config);
                }
                if (ver <= V_2_9_0_TAG) {
                    upgradeFrom2_9_0(config);
                }
                if (ver <= V_2_10_0_TAG) {
                    upgradeFrom2_10_0(config);
                }
                if (ver <= V_2_11_1_TAG) {
                    upgradeFrom2_11_1(config);
                }
                // Execute always to pick installer choices.
                updateCfuFromDefaultConfig(config);
                LOG.info("Upgraded from " + ver);
                setLatestVersion(config);
            }
        } catch (ConfigurationException | ConversionException | NoSuchElementException e) {
            handleMalformedConfigFile(e);
        }
    } catch (Exception e) {
        System.err.println("Unable to upgrade config file " + FILE_CONFIG + " " + e.getMessage());
        e.printStackTrace(System.err);
        System.exit(1);
    }
    // ZAP: Init i18n
    Locale locale = loadLocale(overrides);
    Locale.setDefault(locale);
    messages = new I18N(locale);
}
Also used : Path(java.nio.file.Path) ConversionException(org.apache.commons.configuration.ConversionException) Locale(java.util.Locale) IOException(java.io.IOException) FileCopier(org.parosproxy.paros.model.FileCopier) URISyntaxException(java.net.URISyntaxException) ConversionException(org.apache.commons.configuration.ConversionException) InvalidParameterException(java.security.InvalidParameterException) ParseException(java.text.ParseException) NoSuchElementException(java.util.NoSuchElementException) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) ConfigurationException(org.apache.commons.configuration.ConfigurationException) XMLConfiguration(org.apache.commons.configuration.XMLConfiguration) ConfigurationException(org.apache.commons.configuration.ConfigurationException) ZapXmlConfiguration(org.zaproxy.zap.utils.ZapXmlConfiguration) File(java.io.File) NoSuchElementException(java.util.NoSuchElementException) I18N(org.zaproxy.zap.utils.I18N)

Example 15 with ZapXmlConfiguration

use of org.zaproxy.zap.utils.ZapXmlConfiguration in project zaproxy by zaproxy.

the class AbstractParam method load.

/**
 * Loads the configurations from the file located at the given path and using the given
 * overrides
 *
 * @param filePath the path to the configuration file, might be relative.
 * @param overrides the configuration overrides, might be {@code null}.
 */
public void load(String filePath, ControlOverrides overrides) {
    try {
        config = new ZapXmlConfiguration(filePath);
        if (overrides != null) {
            for (Entry<String, String> entry : overrides.getOrderedConfigs().entrySet()) {
                logger.info("Setting config " + entry.getKey() + " = " + entry.getValue() + " was " + config.getString(entry.getKey()));
                config.setProperty(entry.getKey(), entry.getValue());
            }
        }
        parse();
    } catch (Exception e) {
        logger.error(e.getMessage(), e);
    }
}
Also used : ZapXmlConfiguration(org.zaproxy.zap.utils.ZapXmlConfiguration) ConversionException(org.apache.commons.configuration.ConversionException)

Aggregations

ZapXmlConfiguration (org.zaproxy.zap.utils.ZapXmlConfiguration)82 Test (org.junit.jupiter.api.Test)37 Configuration (org.apache.commons.configuration.Configuration)19 WithConfigsTest (org.zaproxy.zap.WithConfigsTest)18 Context (org.zaproxy.zap.model.Context)17 ConfigurationException (org.apache.commons.configuration.ConfigurationException)15 File (java.io.File)11 IOException (java.io.IOException)9 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)7 ConversionException (org.apache.commons.configuration.ConversionException)6 XMLConfiguration (org.apache.commons.configuration.XMLConfiguration)5 InvalidParameterException (java.security.InvalidParameterException)4 HttpMessage (org.parosproxy.paros.network.HttpMessage)4 MalformedURLException (java.net.MalformedURLException)3 Path (java.nio.file.Path)3 ParseException (java.text.ParseException)3 ArrayList (java.util.ArrayList)3 Locale (java.util.Locale)3 NoSuchElementException (java.util.NoSuchElementException)3 URI (org.apache.commons.httpclient.URI)3