/*
*
* Paros and its related class files.
*
* Paros is an HTTP/HTTPS proxy for assessing web application security.
* Copyright (C) 2003-2004 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.
*/
// ZAP: 2011/11/20 Set order
// ZAP: 2012/03/17 Issue 282 Added getAuthor()
// ZAP: 2012/04/25 Added @Override annotation to all appropriate methods and
// removed unnecessary cast.
// ZAP: 2013/01/25 Removed the "(non-Javadoc)" comments.
// ZAP: 2013/03/03 Issue 546: Remove all template Javadoc comments
// ZAP: 2013/12/03 Issue 934: Handle files on the command line via extension
// ZAP: 2014/01/28 Issue 207: Support keyboard shortcuts
// ZAP: 2015/10/06 Issue 1962: Install and update add-ons from the command line
// ZAP: 2016/06/20 Removed unnecessary/unused constructor
// ZAP: 2016/09/22 Issue 2886: Support Markdown format
package org.parosproxy.paros.extension.report;
import java.io.File;
import java.util.List;
import org.parosproxy.paros.CommandLine;
import org.parosproxy.paros.Constant;
import org.parosproxy.paros.extension.CommandLineArgument;
import org.parosproxy.paros.extension.CommandLineListener;
import org.parosproxy.paros.extension.ExtensionAdaptor;
import org.parosproxy.paros.extension.ExtensionHook;
import org.zaproxy.zap.view.ZapMenuItem;
public class ExtensionReport extends ExtensionAdaptor implements CommandLineListener {
private static final int ARG_LAST_SCAN_REPORT_IDX = 0;
private ZapMenuItem menuItemHtmlReport = null;
private ZapMenuItem menuItemMdReport = null;
private ZapMenuItem menuItemXmlReport = null;
private CommandLineArgument[] arguments = new CommandLineArgument[1];
public ExtensionReport() {
super("ExtensionReport");
this.setOrder(14);
}
@Override
public void hook(ExtensionHook extensionHook) {
super.hook(extensionHook);
if (getView() != null) {
//extensionHook.getHookMenu().addNewMenu(getMenuReport());
extensionHook.getHookMenu().addReportMenuItem(getMenuItemHtmlReport());
extensionHook.getHookMenu().addReportMenuItem(getMenuItemXmlReport());
extensionHook.getHookMenu().addReportMenuItem(getMenuItemMdReport());
}
extensionHook.addCommandLine(getCommandLineArguments());
}
private ZapMenuItem getMenuItemHtmlReport() {
if (menuItemHtmlReport == null) {
menuItemHtmlReport = new ZapMenuItem("menu.report.html.generate");
menuItemHtmlReport.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
ReportLastScan report = new ReportLastScan();
report.generateReport(getView(), getModel(), ReportLastScan.ReportType.HTML);
}
});
}
return menuItemHtmlReport;
}
private ZapMenuItem getMenuItemXmlReport() {
if (menuItemXmlReport == null) {
menuItemXmlReport = new ZapMenuItem("menu.report.xml.generate");
menuItemXmlReport.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
ReportLastScan report = new ReportLastScan();
report.generateReport(getView(), getModel(), ReportLastScan.ReportType.XML);
}
});
}
return menuItemXmlReport;
}
private ZapMenuItem getMenuItemMdReport() {
if (menuItemMdReport == null) {
menuItemMdReport = new ZapMenuItem("menu.report.md.generate");
menuItemMdReport.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
ReportLastScan report = new ReportLastScan();
report.generateReport(getView(), getModel(), ReportLastScan.ReportType.MD);
}
});
}
return menuItemMdReport;
}
@Override
public void execute(CommandLineArgument[] args) {
if (arguments[ARG_LAST_SCAN_REPORT_IDX].isEnabled()) {
CommandLineArgument arg = arguments[ARG_LAST_SCAN_REPORT_IDX];
ReportLastScan report = new ReportLastScan();
// ZAP: Removed unnecessary cast.
String fileName = arg.getArguments().get(0);
try {
report.generate(fileName, getModel(), "xml/report.html.xsl");
CommandLine.info("Last Scan Report generated at " + fileName);
} catch (Exception e) {
CommandLine.error(e.getMessage(), e);
}
} else {
return;
}
}
private CommandLineArgument[] getCommandLineArguments() {
arguments[ARG_LAST_SCAN_REPORT_IDX] = new CommandLineArgument("-last_scan_report", 1, null, "",
Constant.messages.getString("report.cmdline.gen.help"));
return arguments;
}
@Override
public String getAuthor() {
return Constant.PAROS_TEAM;
}
@Override
public boolean handleFile(File file) {
// Cant handle any files
return false;
}
@Override
public List<String> getHandledExtensions() {
// Cant handle any extensions
return null;
}
}