/*
* CredentialRequestDialog.java
*
* Created on 04 January 2006, 10:38
*/
package org.owasp.webscarab.ui.swing;
import org.owasp.webscarab.plugin.BasicCredential;
import org.owasp.webscarab.plugin.CredentialManager;
import org.owasp.webscarab.plugin.CredentialManagerUI;
import org.owasp.webscarab.plugin.DomainCredential;
/**
*
* @author rdawes
*/
public class CredentialRequestDialog extends javax.swing.JDialog implements CredentialManagerUI {
/**
*
*/
private static final long serialVersionUID = 2733259794943234695L;
private CredentialManager _manager;
/** Creates new form CredentialRequestDialog */
public CredentialRequestDialog(java.awt.Frame parent, boolean modal, CredentialManager manager) {
super(parent, modal);
initComponents();
getRootPane().setDefaultButton(okButton);
_manager = manager;
}
public void requestCredentials(final String host, final String[] challenges) {
setup(host, challenges);
getOwner().setVisible(true);
setVisible(true);
toFront();
}
private void setup(String host, String[] challenges) {
basicRadioButton.setEnabled(false);
domainRadioButton.setEnabled(false);
hostTextField.setText("");
domainTextField.setText("");
realmTextArea.setText("");
usernameTextField.setText("");
passwordTextField.setText("");
if (host != null)
hostTextField.setText(host);
if (challenges == null) {
basicRadioButton.setEnabled(true);
realmTextArea.setEditable(true);
domainRadioButton.setEnabled(true);
} else {
for (int i=0; i<challenges.length; i++) {
if (challenges[i].startsWith("Basic ")) {
basicRadioButton.setEnabled(true);
String realm = challenges[i].substring("Basic realm=\"".length(), challenges[i].length()-1);
realmTextArea.setText(realm);
realmTextArea.setEditable(false);
} else if (challenges[i].startsWith("NTLM") || challenges[i].startsWith("Negotiate")) {
domainRadioButton.setEnabled(true);
}
}
}
if (basicRadioButton.isEnabled()) {
basicRadioButton.doClick();
} else if (domainRadioButton.isEnabled()) {
domainRadioButton.doClick();
}
}
/** 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() {
java.awt.GridBagConstraints gridBagConstraints;
methodButtonGroup = new javax.swing.ButtonGroup();
jPanel1 = new javax.swing.JPanel();
basicRadioButton = new javax.swing.JRadioButton();
domainRadioButton = new javax.swing.JRadioButton();
hostLabel = new javax.swing.JLabel();
hostTextField = new javax.swing.JTextField();
domainLabel = new javax.swing.JLabel();
domainTextField = new javax.swing.JTextField();
realmLabel = new javax.swing.JLabel();
realmTextArea = new javax.swing.JTextArea();
usernameLabel = new javax.swing.JLabel();
usernameTextField = new javax.swing.JTextField();
passwordLabel = new javax.swing.JLabel();
passwordTextField = new javax.swing.JPasswordField();
jPanel2 = new javax.swing.JPanel();
cancelButton = new javax.swing.JButton();
okButton = new javax.swing.JButton();
getContentPane().setLayout(new java.awt.GridBagLayout());
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
setTitle("Enter your credentials to access this web site");
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(java.awt.event.WindowEvent evt) {
formWindowClosed(evt);
}
});
methodButtonGroup.add(basicRadioButton);
basicRadioButton.setSelected(true);
basicRadioButton.setText("Basic");
basicRadioButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
basicRadioButtonActionPerformed(evt);
}
});
jPanel1.add(basicRadioButton);
methodButtonGroup.add(domainRadioButton);
domainRadioButton.setText("Domain");
domainRadioButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
domainRadioButtonActionPerformed(evt);
}
});
jPanel1.add(domainRadioButton);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
getContentPane().add(jPanel1, gridBagConstraints);
hostLabel.setText("Host");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
getContentPane().add(hostLabel, gridBagConstraints);
hostTextField.setMinimumSize(new java.awt.Dimension(200, 22));
hostTextField.setPreferredSize(new java.awt.Dimension(200, 22));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
getContentPane().add(hostTextField, gridBagConstraints);
domainLabel.setText("Domain");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
getContentPane().add(domainLabel, gridBagConstraints);
domainTextField.setMinimumSize(new java.awt.Dimension(200, 22));
domainTextField.setPreferredSize(new java.awt.Dimension(200, 22));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
getContentPane().add(domainTextField, gridBagConstraints);
realmLabel.setText("Realm");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
getContentPane().add(realmLabel, gridBagConstraints);
realmTextArea.setEditable(false);
realmTextArea.setMinimumSize(new java.awt.Dimension(200, 22));
realmTextArea.setPreferredSize(new java.awt.Dimension(200, 22));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
getContentPane().add(realmTextArea, gridBagConstraints);
usernameLabel.setText("Username");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
getContentPane().add(usernameLabel, gridBagConstraints);
usernameTextField.setMinimumSize(new java.awt.Dimension(200, 22));
usernameTextField.setPreferredSize(new java.awt.Dimension(200, 22));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
getContentPane().add(usernameTextField, gridBagConstraints);
passwordLabel.setText("Password");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
getContentPane().add(passwordLabel, gridBagConstraints);
passwordTextField.setMinimumSize(new java.awt.Dimension(200, 22));
passwordTextField.setPreferredSize(new java.awt.Dimension(200, 22));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
getContentPane().add(passwordTextField, gridBagConstraints);
cancelButton.setText("Cancel");
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelButtonActionPerformed(evt);
}
});
jPanel2.add(cancelButton);
okButton.setText("Ok");
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
jPanel2.add(okButton);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 6;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
getContentPane().add(jPanel2, gridBagConstraints);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-419)/2, (screenSize.height-206)/2, 419, 206);
}// </editor-fold>//GEN-END:initComponents
private void domainRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_domainRadioButtonActionPerformed
domainLabel.setVisible(true);
domainTextField.setVisible(true);
realmLabel.setVisible(false);
realmTextArea.setVisible(false);
}//GEN-LAST:event_domainRadioButtonActionPerformed
private void basicRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_basicRadioButtonActionPerformed
domainLabel.setVisible(false);
domainTextField.setVisible(false);
realmLabel.setVisible(true);
realmTextArea.setVisible(true);
}//GEN-LAST:event_basicRadioButtonActionPerformed
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
ok();
}//GEN-LAST:event_okButtonActionPerformed
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
cancel();
}//GEN-LAST:event_cancelButtonActionPerformed
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
cancel();
}//GEN-LAST:event_formWindowClosed
private void ok() {
String host = hostTextField.getText();
String domain = domainTextField.getText();
String realm = realmTextArea.getText();
String username = usernameTextField.getText();
String password = new String(passwordTextField.getPassword());
if (!(username.equals("") || password.equals(""))) {
if (basicRadioButton.isSelected()) {
BasicCredential bc = new BasicCredential(host, realm, username, password);
_manager.addBasicCredentials(bc);
} else if (domainRadioButton.isSelected()) {
DomainCredential dc = new DomainCredential(host, domain, username, password);
_manager.addDomainCredentials(dc);
}
}
setVisible(false);
}
private void cancel() {
setVisible(false);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JRadioButton basicRadioButton;
private javax.swing.JButton cancelButton;
private javax.swing.JLabel domainLabel;
private javax.swing.JRadioButton domainRadioButton;
private javax.swing.JTextField domainTextField;
private javax.swing.JLabel hostLabel;
private javax.swing.JTextField hostTextField;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.ButtonGroup methodButtonGroup;
private javax.swing.JButton okButton;
private javax.swing.JLabel passwordLabel;
private javax.swing.JPasswordField passwordTextField;
private javax.swing.JLabel realmLabel;
private javax.swing.JTextArea realmTextArea;
private javax.swing.JLabel usernameLabel;
private javax.swing.JTextField usernameTextField;
// End of variables declaration//GEN-END:variables
}