package org.zaproxy.zap.extension.ascan;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.FileConfiguration;
import org.parosproxy.paros.core.scanner.Plugin;
import org.parosproxy.paros.core.scanner.Plugin.AlertThreshold;
import org.parosproxy.paros.core.scanner.Plugin.AttackStrength;
import org.parosproxy.paros.core.scanner.PluginFactory;
import org.zaproxy.zap.utils.ZapXmlConfiguration;
public class ScanPolicy {
private String name;
private PluginFactory pluginFactory = new PluginFactory();
private AlertThreshold defaultThreshold;
private AttackStrength defaultStrength;
private ZapXmlConfiguration conf;
public ScanPolicy () {
conf = new ZapXmlConfiguration();
name = conf.getString("policy", "");
pluginFactory.loadAllPlugin(conf);
setDefaultThreshold(AlertThreshold.MEDIUM);
setDefaultStrength(AttackStrength.MEDIUM);
}
public ScanPolicy (ZapXmlConfiguration conf) throws ConfigurationException {
this.conf = conf;
name = conf.getString("policy", "");
pluginFactory.loadAllPlugin(conf);
setDefaultThreshold(AlertThreshold.valueOf(conf.getString("scanner.level", AlertThreshold.MEDIUM.name())));
setDefaultStrength(AttackStrength.valueOf(conf.getString("scanner.strength", AttackStrength.MEDIUM.name())));
}
public ScanPolicy (FileConfiguration conf) throws ConfigurationException {
pluginFactory.loadAllPlugin(conf);
this.conf = new ZapXmlConfiguration();
name = "";
setDefaultThreshold(AlertThreshold.MEDIUM);
setDefaultStrength(AttackStrength.MEDIUM);
}
public ScanPolicy clonePolicy () throws ConfigurationException {
return new ScanPolicy((ZapXmlConfiguration)this.conf.clone());
}
public void cloneInto(ScanPolicy policy) {
policy.pluginFactory.loadFrom(this.pluginFactory);
policy.defaultStrength = this.getDefaultStrength();
policy.defaultThreshold = this.getDefaultThreshold();
}
public String getName() {
return name;
}
public PluginFactory getPluginFactory() {
return pluginFactory;
}
public AlertThreshold getDefaultThreshold() {
return defaultThreshold;
}
public AttackStrength getDefaultStrength() {
return defaultStrength;
}
public void setName(String name) {
this.name = name;
}
public void setDefaultThreshold(AlertThreshold defaultThreshold) {
this.defaultThreshold = defaultThreshold;
for (Plugin plugin : pluginFactory.getAllPlugin()) {
plugin.setDefaultAlertThreshold(defaultThreshold);
}
}
public void setDefaultStrength(AttackStrength defaultStrength) {
this.defaultStrength = defaultStrength;
for (Plugin plugin : pluginFactory.getAllPlugin()) {
plugin.setDefaultAttackStrength(defaultStrength);
}
}
public void save() throws ConfigurationException {
this.conf.save();
}
}