powered by Jive Software

Retrieving encryptedpassword from AccountCreationWizard.java

I’m modifying spark.I want to retrieve encrypted password.I changed AccountCreationWizard.java and I developed a class that accept the encryptedstring.Even thought build is successful,the changes didn’t affect the program.Here is the class that i changed.

/**

  • $Revision: $
  • $Date: $
  • Copyright © 2006 Jive Software. All rights reserved.
  • This software is published under the terms of the GNU Lesser Public License (LGPL),
  • a copy of which is included in this distribution.
    */

package org.jivesoftware;

import org.jivesoftware.resource.Res;
import org.jivesoftware.smack.AccountManager;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.XMPPError;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.spark.component.TitlePanel;
import org.jivesoftware.spark.util.DummySSLSocketFactory;
import org.jivesoftware.spark.util.ModelUtil;
import org.jivesoftware.spark.util.ResourceUtils;
import org.jivesoftware.spark.util.SwingWorker;
import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
import org.jivesoftware.sparkimpl.settings.local.SettingsManager;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JProgressBar;
import javax.swing.JTextField;

import org.jivesoftware.EncryptedString;
import org.jivesoftware.spark.util.Encryptor;
import java.lang.String;
import java.lang.Character;
import java.lang.*;

import java.io.IOException;
import java.sql.SQLException;
import java.lang.Throwable;
import java.lang.Exception;

/**

  • Allows the creation of accounts on an XMPP server.
    */
    public class AccountCreationWizard extends JPanel {
    private JLabel usernameLabel = new JLabel();
    private JTextField usernameField = new JTextField();

private JLabel passwordLabel = new JLabel();
private JPasswordField passwordField = new JPasswordField();

private JLabel confirmPasswordLabel = new JLabel();
private JPasswordField confirmPasswordField = new JPasswordField();

private JLabel serverLabel = new JLabel();
private JTextField serverField = new JTextField(“192.168.0.208”);

private JButton createAccountButton = new JButton();
private JButton closeButton = new JButton();

private JDialog dialog;

private boolean registered;
private XMPPConnection connection = null;
private JProgressBar progressBar;

 String password="";

String encryptedPassword="";
String Password="";

/**
 * Construct the AccountCreationWizard UI.
 */
public AccountCreationWizard(){
    // Associate Mnemonics
    ResourceUtils.resLabel(usernameLabel, usernameField, Res.getString("label.username") + ":");
    ResourceUtils.resLabel(passwordLabel, passwordField, Res.getString("label.password") + ":");
    ResourceUtils.resLabel(confirmPasswordLabel, confirmPasswordField, Res.getString("label.confirm.password") + ":");
    ResourceUtils.resLabel(serverLabel, serverField, Res.getString("label.server") + ":");
    ResourceUtils.resButton(createAccountButton, Res.getString("button.create.account"));

setLayout(new GridBagLayout());

// Add component to UI
add(usernameLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
add(usernameField, new GridBagConstraints(1, 0, 3, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 150, 0));

add(passwordLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
add(passwordField, new GridBagConstraints(1, 1, 3, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));

add(confirmPasswordLabel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
add(confirmPasswordField, new GridBagConstraints(1, 2, 3, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));

add(serverLabel, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
add(serverField, new GridBagConstraints(1, 3, 3, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));

progressBar = new JProgressBar();

    add(progressBar, new GridBagConstraints(1, 4, 3, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
    progressBar.setVisible(false);
    add(createAccountButton, new GridBagConstraints(2, 5, 1, 1, 1.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));

    ResourceUtils.resButton(closeButton, Res.getString("button.close"));
    add(closeButton, new GridBagConstraints(3, 5, 1, 1, 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));

    createAccountButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent actionEvent){
            password=createAccount();
            try{
                encryptedPassword = Encryptor.encrypt(Password);
                EncryptedString.SaveEncryptedString(encryptedPassword);  
                }catch(IOException ie)
                {
                     String errorMessage=ie.getMessage();
                }catch(Exception e)
                {
                    String errorMessage=e.toString();
                    //e.PrintStackTrace();
                }
            }
    });

closeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
dialog.dispose();
}
});
serverLabel.setVisible(false);
serverField.setVisible(false);
}

/**
* Returns the username to use for the new account.
*
* @return the username.
*/
public String getUsername() {
return StringUtils.escapeNode(usernameField.getText().toLowerCase());
}

/**
* Returns the password to use for the new account.
*
* @return the password to use for the new account.
*/
public String getPassword() {

    return new String(passwordField.getPassword());
   
}

/**
* Returns the confirmation password to use for the new account.
*
* @return the password to use for the new account.
*/
public String getConfirmPassword() {
return new String(confirmPasswordField.getPassword());
}

/**
* Returns the server to use with the new account.
*
* @return the server to use.
*/
public String getServer() {
return serverField.getText();
}

/**
 * Returns true if the passwords match.
 *
 * @return true if the passwords match.
 */
public boolean isPasswordValid() {
    return getPassword().equals(getConfirmPassword());
}

/**
* Creates the new account using the supplied information.
*/
private String createAccount() {
boolean errors = false;
String errorMessage = “”;

if (!ModelUtil.hasLength(getUsername())) {
errors = true;
usernameField.requestFocus();
errorMessage = Res.getString(“message.username.error”);
}
else if (!ModelUtil.hasLength(getPassword())) {
errors = true;
errorMessage = Res.getString(“message.password.error”);
}
else if (!ModelUtil.hasLength(getConfirmPassword())) {
errors = true;
errorMessage = Res.getString(“message.confirmation.password.error”);
}
else if (!ModelUtil.hasLength(getServer())) {
errors = true;
errorMessage = Res.getString(“message.account.error”);
}
else if (!isPasswordValid()) {
errors = true;
errorMessage = Res.getString(“message.confirmation.password.error”);
}

if (errors) {
JOptionPane.showMessageDialog(this, errorMessage, Res.getString(“title.create.problem”), JOptionPane.ERROR_MESSAGE);
return “Ok”;
}
final Component ui = this;
progressBar.setIndeterminate(true);
progressBar.setStringPainted(true);
progressBar.setString(Res.getString(“message.registering”, getServer()));
progressBar.setVisible(true);

final SwingWorker worker = new SwingWorker() {
int errorCode;

        public Object construct() {
            try {
                createAccountButton.setEnabled(false);
                connection = getConnection();
            }
            catch (XMPPException e) {
                return e;
            }
            try {
                final AccountManager accountManager = new AccountManager(connection);
                accountManager.createAccount(getUsername(), getPassword());
                password=String.valueOf(passwordField.getPassword());   
                JOptionPane.showInternalMessageDialog(null,password,"information", JOptionPane.INFORMATION_MESSAGE);
                   
            }
            catch (XMPPException e) {
                XMPPError error = e.getXMPPError();
                if (error != null) {
                    errorCode = error.getCode();
                }
                else {
                    errorCode = 500;
                }
                return "OK";
            }
            return "Ok";
        }

public void finished() {
progressBar.setVisible(false);
if (connection == null) {
if (ui.isShowing()) {
createAccountButton.setEnabled(true);
JOptionPane.showMessageDialog(ui, Res.getString(“message.connection.failed”, getServer()), Res.getString(“title.create.problem”), JOptionPane.ERROR_MESSAGE);
createAccountButton.setEnabled(true);
}
return;
}

if (errorCode == 0) {
accountCreationSuccessful();
}
else {
accountCreationFailed(errorCode);
}
}
};

worker.start();
return password;//orignial code=“ok”
}

/**
* Called if the account creation failed.
*
* @param errorCode the error code.
*/
private void accountCreationFailed(int errorCode) {
String message = Res.getString(“message.create.account”);
if (errorCode == 409) {
message = Res.getString(“message.already.exists”);
usernameField.setText("");
usernameField.requestFocus();
}
JOptionPane.showMessageDialog(this, message, Res.getString(“title.create.problem”), JOptionPane.ERROR_MESSAGE);
createAccountButton.setEnabled(true);
}

/**
* Called if the account was created succesfully.
*/
private void accountCreationSuccessful() {
registered = true;
JOptionPane.showMessageDialog(this, Res.getString(“message.account.created”), Res.getString(“title.account.created”), JOptionPane.INFORMATION_MESSAGE);
dialog.dispose();
}

/**
* Invokes the AccountCreationWizard.
*
* @param parent the parent frame to use.
*/
public void invoke(JFrame parent) {
dialog = new JDialog(parent, Res.getString(“title.create.new.account”), true);

TitlePanel titlePanel = new TitlePanel(Res.getString(“title.account.create.registration”), Res.getString(“message.account.create”), null, true);
dialog.getContentPane().setLayout(new BorderLayout());
dialog.getContentPane().add(titlePanel, BorderLayout.NORTH);
dialog.getContentPane().add(this, BorderLayout.CENTER);
dialog.pack();
dialog.setSize(400, 300);
dialog.setLocationRelativeTo(parent);
dialog.setVisible(true);
}

/**
* Creates an XMPPConnection based on the users settings.
*
* @return the XMPPConnection created.
* @throws XMPPException thrown if an exception occured creating the connection.
*/
private XMPPConnection getConnection() throws XMPPException {
final LocalPreferences localPreferences = SettingsManager.getLocalPreferences();
XMPPConnection connection = null;

// Get connection

int port = localPreferences.getXmppPort();

String serverName = getServer();

int checkForPort = serverName.indexOf(":");
if (checkForPort != -1) {
String portString = serverName.substring(checkForPort + 1);
if (ModelUtil.hasLength(portString)) {
// Set new port.
port = Integer.valueOf(portString);
}
}

boolean useSSL = localPreferences.isSSL();
boolean hostPortConfigured = localPreferences.isHostAndPortConfigured();

ConnectionConfiguration config;

if (useSSL) {
if (!hostPortConfigured) {
config = new ConnectionConfiguration(serverName, 5223);
config.setSocketFactory(new DummySSLSocketFactory());
}
else {
config = new ConnectionConfiguration(localPreferences.getXmppHost(), port, serverName);
config.setSocketFactory(new DummySSLSocketFactory());
}
}
else {
if (!hostPortConfigured) {
config = new ConnectionConfiguration(serverName);
}
else {
config = new ConnectionConfiguration(localPreferences.getXmppHost(), port, serverName);
}

    }

if (config != null) {
config.setReconnectionAllowed(true);
boolean compressionEnabled = localPreferences.isCompressionEnabled();
config.setCompressionEnabled(compressionEnabled);
connection = new XMPPConnection(config);
}

if (connection != null) {
connection.connect();
}
return connection;

}

/**
* Returns true if the user is registered.
*
* @return true if the user is registered.
*/
public boolean isRegistered() {
return registered;
}
}

Best regards,

amh