AnsweredAssumed Answered

Retrieving encryptedpassword from AccountCreationWizard.java

Question asked by amh on Feb 18, 2009

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 (C) 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

Outcomes