All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ch.csnc.extension.util.DriverConfiguration Maven / Gradle / Ivy

Go to download

The Zed Attack Proxy (ZAP) is an easy to use integrated penetration testing tool for finding vulnerabilities in web applications. It is designed to be used by people with a wide range of security experience and as such is ideal for developers and functional testers who are new to penetration testing. ZAP provides automated scanners as well as a set of tools that allow you to find security vulnerabilities manually.

There is a newer version: 2.15.0
Show newest version
/*
 * Zed Attack Proxy (ZAP) and its related class files.
 *
 * ZAP is an HTTP/HTTPS proxy for assessing web application security.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Please note that this file was originally released under the
 * GNU General Public License as published by the Free Software Foundation;
 * either version 2 of the License, or (at your option) any later version
 * by Compass Security AG.
 *
 * As of October 2014 Compass Security AG granted the OWASP ZAP Project
 * permission to redistribute this code under the Apache License, Version 2.0.
 */
package ch.csnc.extension.util;

import java.io.File;
import java.net.URL;
import java.util.List;
import java.util.Vector;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.EventListenerList;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.zaproxy.zap.utils.ZapXmlConfiguration;

public class DriverConfiguration {
    private File file = null;
    private URL url;

    private Vector names;
    private Vector paths;
    private Vector slots;
    private Vector slotListIndexes;

    private final Logger logger = LogManager.getLogger(this.getClass());

    private EventListenerList eventListeners = new EventListenerList();
    private ChangeEvent changeEvent;

    public DriverConfiguration(URL url) {
        this.url = url;
        load();
    }

    public DriverConfiguration(File file) {
        this.file = file;
        load();
    }

    private void load() {
        names = new Vector<>();
        paths = new Vector<>();
        slots = new Vector<>();
        slotListIndexes = new Vector<>();

        try {
            ZapXmlConfiguration configuration =
                    file != null ? new ZapXmlConfiguration(file) : new ZapXmlConfiguration(url);
            List drivers = configuration.configurationsAt("driver");
            for (HierarchicalConfiguration driver : drivers) {
                names.add(driver.getString("name", ""));
                paths.add(driver.getString("path", ""));
                slots.add(getInt(driver.getString("slot")));
                slotListIndexes.add(getInt(driver.getString("slotListIndex")));
            }

        } catch (ConfigurationException e) {
            logger.error("Failed to read the configuration from " + (file != null ? file : url), e);
        }
    }

    /**
     * Gets an integer from the given string.
     *
     * 

If the given string is {@code null} or does not have an integer, zero is returned. * * @param string the string with the integer value * @return an integer */ private int getInt(String string) { if (string != null) { try { return Integer.parseInt(string); } catch (NumberFormatException e) { logger.error("Failed to extract an integer from: " + string); } } return 0; } public void write() { if (file == null) { fireStateChanged(); return; } ZapXmlConfiguration configuration = new ZapXmlConfiguration(); configuration.setRootElementName("driverConfiguration"); for (int i = 0; i < names.size(); i++) { String baseKey = "driver(" + i + ")."; configuration.setProperty(baseKey + "name", names.get(i)); configuration.setProperty(baseKey + "path", paths.get(i)); configuration.setProperty(baseKey + "slot", slots.get(i).toString()); configuration.setProperty(baseKey + "slotListIndex", slotListIndexes.get(i).toString()); } try { configuration.save(file); } catch (ConfigurationException e) { logger.error("Failed to save driver configuration to " + file, e); } fireStateChanged(); } private void fireStateChanged() { Object[] listeners = eventListeners.getListenerList(); for (int i = listeners.length - 2; i >= 0; i -= 2) { if (listeners[i] == ChangeListener.class) { if (changeEvent == null) { changeEvent = new ChangeEvent(this); } ((ChangeListener) listeners[i + 1]).stateChanged(changeEvent); } } } public Vector getNames() { return names; } public void setNames(Vector names) { this.names = names; } public Vector getPaths() { return paths; } public void setPaths(Vector paths) { this.paths = paths; } public Vector getSlots() { return slots; } public void setSlots(Vector slots) { this.slots = slots; } public Vector getSlotIndexes() { return slotListIndexes; } public void setSlotListIndexes(Vector slotListIndexes) { this.slotListIndexes = slotListIndexes; } public void addChangeListener(ChangeListener listener) { eventListeners.add(ChangeListener.class, listener); } public void removeChangeListener(ChangeListener listener) { eventListeners.remove(ChangeListener.class, listener); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy