/***********************************************************************
*
* $CVSHeader$
*
* This file is part of WebScarab, an Open Web Application Security
* Project utility. For details, please see http://www.owasp.org/
*
* Copyright (c) 2002 - 2004 Rogan Dawes
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of 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.
*
* 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
* GNU General Public License for more details.
*E
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Getting Source
* ==============
*
* Source for this application is maintained at Sourceforge.net, a
* repository for free software projects.
*
* For details, please see http://www.sourceforge.net/projects/owasp
*
*/
/*
* WebScarab.java
*
* Created on July 13, 2003, 7:11 PM
*/
package org.owasp.webscarab.ui.swing;
import java.awt.BorderLayout;
import java.io.File;
import java.io.IOException;
import java.util.logging.Logger;
import java.util.regex.PatternSyntaxException;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.AbstractAction;
import java.awt.event.ActionEvent;
import org.owasp.webscarab.model.FileSystemStore;
import org.owasp.webscarab.model.Preferences;
import org.owasp.webscarab.model.FrameworkModel;
import org.owasp.webscarab.model.StoreException;
import org.owasp.webscarab.plugin.CredentialManager;
import org.owasp.webscarab.plugin.Framework;
import org.owasp.webscarab.plugin.proxy.RevealHidden;
import org.owasp.webscarab.util.TempDir;
import org.owasp.webscarab.util.swing.HeapMonitor;
import org.owasp.webscarab.util.swing.SwingWorker;
import javax.help.HelpSet;
import javax.help.HelpBroker;
import javax.help.CSH;
import java.net.URL;
/**
*
* @author rdawes
*/
public class Lite extends JFrame implements WebScarabUI {
/**
*
*/
private static final long serialVersionUID = -4506826433971215530L;
private Framework _framework;
private FrameworkModel _model;
private SummaryPanel _summaryPanel;
private TranscoderFrame _transcoder = null;
private CredentialManagerFrame _credentialManagerFrame = null;
private CredentialRequestDialog _credentialRequestDialog = null;
private Logger _logger = Logger.getLogger("org.owasp.webscarab");
// we use this to wait on the exit of the UI
private Object _exit = new Object();
private File _tempDir = null;
private RevealHidden _revealHidden = null;
/** Creates new form WebScarab */
public Lite(Framework framework) {
_framework = framework;
_model = framework.getModel();
initComponents();
getContentPane().add(new HeapMonitor(), BorderLayout.SOUTH);
setPreferredSize();
_summaryPanel = new SummaryPanel(_model);
tabbedPane.addTab("Summary", _summaryPanel);
CredentialManager cm = _framework.getCredentialManager();
_credentialManagerFrame = new CredentialManagerFrame(cm);
_credentialRequestDialog = new CredentialRequestDialog(this, true, cm);
cm.setUI(_credentialRequestDialog);
initEditorViews();
initHelp();
}
public JFrame getFrame() {
return this;
}
private void initHelp() {
try {
URL url = getClass().getResource("/help/jhelpset.hs");
if (url == null) throw new NullPointerException("The help set could not be found");
HelpSet helpSet = new HelpSet(null, url);
HelpBroker helpBroker = helpSet.createHelpBroker();
contentsMenuItem.addActionListener(new CSH.DisplayHelpFromSource(helpBroker));
helpBroker.enableHelpKey(getRootPane(), "about", helpSet); // for F1
} catch (Throwable e) {
final String[] message;
if (e instanceof NullPointerException) {
message = new String[] { "Help set not found" };
} else if (e instanceof NoClassDefFoundError) {
message = new String[] {"The JavaHelp libraries could not be found", "Please add jhall.jar to the extension directory of your Java Runtime environment"};
} else {
message = new String[] { "Unknown error: ",e.getClass().getName(), e.getMessage()};
}
for (int i=0; i<message.length; i++) {
System.err.println(message[i]);
}
contentsMenuItem.addActionListener(new AbstractAction() {
/**
*
*/
private static final long serialVersionUID = 9133004623466464185L;
public void actionPerformed(ActionEvent evt) {
JOptionPane.showMessageDialog(Lite.this, message, "Help is not available", JOptionPane.ERROR_MESSAGE);
}
});
}
}
public void run() {
createTemporarySession();
synchronized(_exit) {
try {
_exit.wait();
} catch (InterruptedException ie) {
_logger.info("Interrupted waiting for exit: " + ie);
}
}
}
public void initEditorViews() {
String wrap = Preferences.getPreference("TextPanel.wrap", "false");
if (wrap != null && wrap.equals("true")) wrapTextCheckBoxMenuItem.setSelected(true);
}
private void setPreferredSize() {
try {
int xpos = Integer.parseInt(Preferences.getPreference("WebScarab.position.x").trim());
int ypos = Integer.parseInt(Preferences.getPreference("WebScarab.position.y").trim());
int width = Integer.parseInt(Preferences.getPreference("WebScarab.size.x").trim());
int height = Integer.parseInt(Preferences.getPreference("WebScarab.size.y").trim());
setBounds(xpos,ypos,width,height);
} catch (NumberFormatException nfe) {
setSize(800,600);
setExtendedState(MAXIMIZED_BOTH);
} catch (NullPointerException npe) {
setSize(800,600);
setExtendedState(MAXIMIZED_BOTH);
}
}
public void addPlugin(SwingPluginUI plugin) {
addPluginEnhancements(plugin);
addPanel(plugin.getPluginName(), plugin.getPanel());
}
public void addPluginEnhancements(SwingPluginUI plugin) {
_summaryPanel.addUrlActions(plugin.getUrlActions());
_summaryPanel.addUrlColumns(plugin.getUrlColumns());
_summaryPanel.addConversationActions(plugin.getConversationActions());
_summaryPanel.addConversationColumns(plugin.getConversationColumns());
}
public void addPanel(final String name, final JPanel panel) {
if (panel != null)
tabbedPane.addTab(name, panel);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {
dropPatternDialog = new javax.swing.JDialog();
jLabel1 = new javax.swing.JLabel();
dropPatternTextField = new javax.swing.JTextField();
jPanel1 = new javax.swing.JPanel();
okButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
tabbedPane = new javax.swing.JTabbedPane();
mainMenuBar = new javax.swing.JMenuBar();
fileMenu = new javax.swing.JMenu();
newMenuItem = new javax.swing.JMenuItem();
openMenuItem = new javax.swing.JMenuItem();
saveMenuItem = new javax.swing.JMenuItem();
exitMenuItem = new javax.swing.JMenuItem();
viewMenu = new javax.swing.JMenu();
editorMenu = new javax.swing.JMenu();
wrapTextCheckBoxMenuItem = new javax.swing.JCheckBoxMenuItem();
toolsMenu = new javax.swing.JMenu();
proxyMenuItem = new javax.swing.JMenuItem();
credentialsMenuItem = new javax.swing.JMenuItem();
transcoderMenuItem = new javax.swing.JMenuItem();
hiddenCheckBoxMenuItem = new javax.swing.JCheckBoxMenuItem();
showDropPatternDialogMenuItem = new javax.swing.JMenuItem();
fullMenuItem = new javax.swing.JCheckBoxMenuItem();
helpMenu = new javax.swing.JMenu();
contentsMenuItem = new javax.swing.JMenuItem();
aboutMenuItem = new javax.swing.JMenuItem();
dropPatternDialog.setTitle("Discard conversations");
dropPatternDialog.setModal(true);
dropPatternDialog.setResizable(false);
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 13));
jLabel1.setText("Discard conversations matching (URL):");
dropPatternDialog.getContentPane().add(jLabel1, java.awt.BorderLayout.NORTH);
dropPatternTextField.setPreferredSize(new java.awt.Dimension(200, 22));
dropPatternDialog.getContentPane().add(dropPatternTextField, java.awt.BorderLayout.CENTER);
okButton.setText("OK");
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
jPanel1.add(okButton);
cancelButton.setText("Cancel");
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelButtonActionPerformed(evt);
}
});
jPanel1.add(cancelButton);
dropPatternDialog.getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH);
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
setTitle("WebScarab Lite");
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentMoved(java.awt.event.ComponentEvent evt) {
formComponentMoved(evt);
}
public void componentResized(java.awt.event.ComponentEvent evt) {
formComponentResized(evt);
}
});
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
getContentPane().add(tabbedPane, java.awt.BorderLayout.CENTER);
fileMenu.setMnemonic('F');
fileMenu.setText("File");
newMenuItem.setMnemonic('N');
newMenuItem.setText("New");
newMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
newMenuItemActionPerformed(evt);
}
});
fileMenu.add(newMenuItem);
openMenuItem.setMnemonic('O');
openMenuItem.setText("Open");
openMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
openMenuItemActionPerformed(evt);
}
});
fileMenu.add(openMenuItem);
saveMenuItem.setMnemonic('S');
saveMenuItem.setText("Save");
saveMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
saveMenuItemActionPerformed(evt);
}
});
fileMenu.add(saveMenuItem);
exitMenuItem.setMnemonic('X');
exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitMenuItemActionPerformed(evt);
}
});
fileMenu.add(exitMenuItem);
mainMenuBar.add(fileMenu);
viewMenu.setMnemonic('V');
viewMenu.setText("View");
editorMenu.setMnemonic('E');
editorMenu.setText("Content Editors");
wrapTextCheckBoxMenuItem.setMnemonic('W');
wrapTextCheckBoxMenuItem.setText("Wrap Text");
wrapTextCheckBoxMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
wrapTextCheckBoxMenuItemActionPerformed(evt);
}
});
editorMenu.add(wrapTextCheckBoxMenuItem);
viewMenu.add(editorMenu);
mainMenuBar.add(viewMenu);
toolsMenu.setMnemonic('T');
toolsMenu.setText("Tools");
proxyMenuItem.setMnemonic('P');
proxyMenuItem.setText("Proxies");
proxyMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
proxyMenuItemActionPerformed(evt);
}
});
toolsMenu.add(proxyMenuItem);
credentialsMenuItem.setText("Credentials");
credentialsMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
credentialsMenuItemActionPerformed(evt);
}
});
toolsMenu.add(credentialsMenuItem);
transcoderMenuItem.setMnemonic('T');
transcoderMenuItem.setText("Transcoder");
transcoderMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
transcoderMenuItemActionPerformed(evt);
}
});
toolsMenu.add(transcoderMenuItem);
hiddenCheckBoxMenuItem.setText("Reveal Hidden Fields");
hiddenCheckBoxMenuItem.setToolTipText("Reveals hidden fields in HTML documents");
hiddenCheckBoxMenuItem.setEnabled(false);
hiddenCheckBoxMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
hiddenCheckBoxMenuItemActionPerformed(evt);
}
});
toolsMenu.add(hiddenCheckBoxMenuItem);
showDropPatternDialogMenuItem.setText("Discard conversations");
showDropPatternDialogMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
showDropPatternDialogMenuItemActionPerformed(evt);
}
});
toolsMenu.add(showDropPatternDialogMenuItem);
fullMenuItem.setText("Use full-featured interface");
fullMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
fullMenuItemActionPerformed(evt);
}
});
toolsMenu.add(fullMenuItem);
mainMenuBar.add(toolsMenu);
helpMenu.setMnemonic('H');
helpMenu.setText("Help");
contentsMenuItem.setText("Contents");
helpMenu.add(contentsMenuItem);
aboutMenuItem.setMnemonic('A');
aboutMenuItem.setText("About");
aboutMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
aboutMenuItemActionPerformed(evt);
}
});
helpMenu.add(aboutMenuItem);
mainMenuBar.add(helpMenu);
setJMenuBar(mainMenuBar);
}// </editor-fold>//GEN-END:initComponents
private void showDropPatternDialogMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showDropPatternDialogMenuItemActionPerformed
String pattern = _framework.getDropPattern();
dropPatternTextField.setText(pattern);
dropPatternDialog.pack();
dropPatternDialog.setLocationRelativeTo(this);
dropPatternDialog.setVisible(true);
}//GEN-LAST:event_showDropPatternDialogMenuItemActionPerformed
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
dropPatternDialog.setVisible(false);
}//GEN-LAST:event_cancelButtonActionPerformed
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
try {
_framework.setDropPattern(dropPatternTextField.getText());
dropPatternDialog.setVisible(false);
} catch (PatternSyntaxException pse) {
JOptionPane.showMessageDialog(dropPatternDialog, new String[] {"Invalid pattern", pse.getMessage()}, "Error", JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_okButtonActionPerformed
private void fullMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fullMenuItemActionPerformed
Preferences.setPreference("WebScarab.lite", Boolean.toString(!fullMenuItem.isSelected()));
if (fullMenuItem.isSelected()) {
JOptionPane.showMessageDialog(this, "Restart WebScarab in order to switch interfaces", "Restart required", JOptionPane.INFORMATION_MESSAGE);
}
}//GEN-LAST:event_fullMenuItemActionPerformed
private void saveMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveMenuItemActionPerformed
if (_tempDir != null) {
JFileChooser jfc = new JFileChooser(Preferences.getPreference("WebScarab.DefaultDirectory"));
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
jfc.setDialogTitle("Select a directory to write the session into");
int returnVal = jfc.showSaveDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
final File dir = jfc.getSelectedFile();
if (FileSystemStore.isExistingSession(dir)) {
JOptionPane.showMessageDialog(null, new String[] {dir + " already contains a session ", }, "Error", JOptionPane.ERROR_MESSAGE);
return;
} else {
new SwingWorker() {
public Object construct() {
try {
closeSession();
TempDir.recursiveCopy(_tempDir, dir);
TempDir.recursiveDelete(_tempDir);
_tempDir = null;
_framework.setSession("FileSystem", dir, "");
_framework.startPlugins();
return null;
} catch (StoreException se) {
return se;
} catch (IOException ioe) {
return ioe;
}
}
public void finished() {
Object result = getValue();
if (result == null) return;
if (result instanceof Exception) {
Exception e = (Exception) result;
JOptionPane.showMessageDialog(null, new String[] {"Error saving Session : ", e.toString()}, "Error", JOptionPane.ERROR_MESSAGE);
}
}
}.start();
}
Preferences.setPreference("WebScarab.DefaultDirectory", jfc.getCurrentDirectory().getAbsolutePath());
}
} else {
try {
if (_framework.isModified()) {
boolean running = _framework.isRunning();
if (running)
_framework.stopPlugins();
_framework.saveSessionData();
if (running)
_framework.startPlugins();
}
} catch (StoreException se) {
JOptionPane.showMessageDialog(null, new String[] {"Error saving Session : ", se.toString()}, "Error", JOptionPane.ERROR_MESSAGE);
}
}
}//GEN-LAST:event_saveMenuItemActionPerformed
private void openExistingSession() {
JFileChooser jfc = new JFileChooser(Preferences.getPreference("WebScarab.DefaultDirectory"));
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
jfc.setDialogTitle("Choose a directory that contains a previous session");
int returnVal = jfc.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
final File dir = jfc.getSelectedFile();
if (!FileSystemStore.isExistingSession(dir)) {
// FIXME to change this to prompt to create it if it does not already exist
JOptionPane.showMessageDialog(null, new String[] {dir + " does not contain a session ", }, "Error", JOptionPane.ERROR_MESSAGE);
} else {
loadSession(dir);
}
Preferences.setPreference("WebScarab.DefaultDirectory", jfc.getCurrentDirectory().getAbsolutePath());
}
}
private void openMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openMenuItemActionPerformed
openExistingSession();
}//GEN-LAST:event_openMenuItemActionPerformed
private void createNewSession() {
JFileChooser jfc = new JFileChooser(Preferences.getPreference("WebScarab.DefaultDirectory"));
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
jfc.setDialogTitle("Select a directory to write the session into");
int returnVal = jfc.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
final File dir = jfc.getSelectedFile();
if (FileSystemStore.isExistingSession(dir)) {
// FIXME to change this to prompt to open it if it already exists
JOptionPane.showMessageDialog(null, new String[] {dir + " already contains a session ", }, "Error", JOptionPane.ERROR_MESSAGE);
} else {
loadSession(dir);
}
Preferences.setPreference("WebScarab.DefaultDirectory", jfc.getCurrentDirectory().getAbsolutePath());
}
}
private void newMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newMenuItemActionPerformed
createNewSession();
}//GEN-LAST:event_newMenuItemActionPerformed
private void hiddenCheckBoxMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_hiddenCheckBoxMenuItemActionPerformed
_revealHidden.setEnabled(hiddenCheckBoxMenuItem.isSelected());
}//GEN-LAST:event_hiddenCheckBoxMenuItemActionPerformed
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
exit();
}//GEN-LAST:event_formWindowClosing
public void setRevealHidden(RevealHidden revealHidden) {
_revealHidden = revealHidden;
hiddenCheckBoxMenuItem.setEnabled(_revealHidden != null);
hiddenCheckBoxMenuItem.setSelected(_revealHidden != null && _revealHidden.getEnabled());
}
private void credentialsMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_credentialsMenuItemActionPerformed
_credentialManagerFrame.setVisible(true);
}//GEN-LAST:event_credentialsMenuItemActionPerformed
private void wrapTextCheckBoxMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_wrapTextCheckBoxMenuItemActionPerformed
Preferences.setPreference("TextPanel.wrap", Boolean.toString(wrapTextCheckBoxMenuItem.isSelected()));
}//GEN-LAST:event_wrapTextCheckBoxMenuItemActionPerformed
public void loadSession(final File sessionDir) {
new SwingWorker() {
public Object construct() {
try {
closeSession();
_framework.setSession("FileSystem", sessionDir, "");
_framework.startPlugins();
return null;
} catch (StoreException se) {
return se;
}
}
public void finished() {
Object result = getValue();
if (result == null) return;
if (result instanceof StoreException) {
StoreException se = (StoreException) result;
JOptionPane.showMessageDialog(null, new String[] {"Error loading Session : ", se.toString()}, "Error", JOptionPane.ERROR_MESSAGE);
}
}
}.start();
}
public void createTemporarySession() {
_tempDir = TempDir.createTempDir("webscarab", ".tmp", null);
if (_tempDir != null) {
loadSession(_tempDir);
}
}
private void closeSession() throws StoreException {
if (_framework.isRunning()) {
_framework.stopPlugins();
}
if (_framework.isModified()) {
_framework.saveSessionData();
}
}
private void formComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentResized
if (! isShowing()) return;
Preferences.getPreferences().setProperty("WebScarab.size.x",Integer.toString(getWidth()));
Preferences.getPreferences().setProperty("WebScarab.size.y",Integer.toString(getHeight()));
}//GEN-LAST:event_formComponentResized
private void formComponentMoved(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentMoved
if (! isShowing()) return;
Preferences.getPreferences().setProperty("WebScarab.position.x",Integer.toString(getX()));
Preferences.getPreferences().setProperty("WebScarab.position.y",Integer.toString(getY()));
}//GEN-LAST:event_formComponentMoved
private void transcoderMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_transcoderMenuItemActionPerformed
if (_transcoder == null) {
_transcoder = new TranscoderFrame();
}
_transcoder.setVisible(true);
}//GEN-LAST:event_transcoderMenuItemActionPerformed
private void proxyMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_proxyMenuItemActionPerformed
new ProxyConfig(this, _framework).setVisible(true);
}//GEN-LAST:event_proxyMenuItemActionPerformed
private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
exit();
}//GEN-LAST:event_exitMenuItemActionPerformed
private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutMenuItemActionPerformed
String[] message = new String[] {
"OWASP WebScarab Lite - version " + _framework.getVersion(),
" - part of the Open Web Application Security Project",
"See http://www.owasp.org/software/webscarab.html",
"", "Primary Developer : ",
" Rogan Dawes (rogan at dawes.za.net)",
" ",
"This is a stripped down version of the complete WebScarab tool",
"To obtain access to the full functionality of WebScarab, ",
"run WebScarab without the \"Lite\" parameter"
};
JOptionPane.showMessageDialog(this, message, "About WebScarab", JOptionPane.INFORMATION_MESSAGE);
}//GEN-LAST:event_aboutMenuItemActionPerformed
/** Exit the Application */
private void exit() {
if (_framework.isRunning() && !_framework.stopPlugins()) {
if (_framework.isModified()) {
String[] status = _framework.getStatus();
int count = status.length;
String[] message = new String[count+2];
System.arraycopy(status, 0, message, 0, count);
message[count] = "";
message[count+1] = "Force data save anyway?";
int choice = JOptionPane.showOptionDialog(this, message, "Error - Plugins are busy", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null);
if (choice != JOptionPane.YES_OPTION) return;
}
}
if (_framework.isModified()) {
try {
_framework.saveSessionData();
} catch (Exception e) {
int choice = JOptionPane.showOptionDialog(this, new String[] {"Error saving session!", e.toString(), "Quit anyway?"}, "Error!", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null);
if (choice != JOptionPane.YES_OPTION) return;
}
}
synchronized(_exit) {
_exit.notify();
}
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JMenuItem aboutMenuItem;
private javax.swing.JButton cancelButton;
private javax.swing.JMenuItem contentsMenuItem;
private javax.swing.JMenuItem credentialsMenuItem;
private javax.swing.JDialog dropPatternDialog;
private javax.swing.JTextField dropPatternTextField;
private javax.swing.JMenu editorMenu;
private javax.swing.JMenuItem exitMenuItem;
private javax.swing.JMenu fileMenu;
private javax.swing.JCheckBoxMenuItem fullMenuItem;
private javax.swing.JMenu helpMenu;
private javax.swing.JCheckBoxMenuItem hiddenCheckBoxMenuItem;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JMenuBar mainMenuBar;
private javax.swing.JMenuItem newMenuItem;
private javax.swing.JButton okButton;
private javax.swing.JMenuItem openMenuItem;
private javax.swing.JMenuItem proxyMenuItem;
private javax.swing.JMenuItem saveMenuItem;
private javax.swing.JMenuItem showDropPatternDialogMenuItem;
private javax.swing.JTabbedPane tabbedPane;
private javax.swing.JMenu toolsMenu;
private javax.swing.JMenuItem transcoderMenuItem;
private javax.swing.JMenu viewMenu;
private javax.swing.JCheckBoxMenuItem wrapTextCheckBoxMenuItem;
// End of variables declaration//GEN-END:variables
}