r2265 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/ssh
Author: chatellier Date: 2009-05-25 11:02:22 +0000 (Mon, 25 May 2009) New Revision: 2265 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHUserInfo.java Log: Reenable password connection Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHUserInfo.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHUserInfo.java 2009-05-25 10:37:29 UTC (rev 2264) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHUserInfo.java 2009-05-25 11:02:22 UTC (rev 2265) @@ -18,9 +18,18 @@ package fr.ifremer.isisfish.util.ssh; +import java.awt.Container; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; + +import javax.swing.JLabel; import javax.swing.JOptionPane; +import javax.swing.JPanel; import javax.swing.JPasswordField; +import javax.swing.JTextField; +import com.jcraft.jsch.UIKeyboardInteractive; import com.jcraft.jsch.UserInfo; /** @@ -34,7 +43,7 @@ * Last update : $Date: 1 déc. 2008 $ * By : $Author: chatellier $ */ -public class SSHUserInfo implements UserInfo { +public class SSHUserInfo implements UserInfo, UIKeyboardInteractive { /** * Passphrase. @@ -115,4 +124,56 @@ public void showMessage(String message) { JOptionPane.showMessageDialog(null, message); } + + /* + * @see com.jcraft.jsch.UIKeyboardInteractive#promptKeyboardInteractive(java.lang.String, java.lang.String, java.lang.String, java.lang.String[], boolean[]) + */ + @Override + public String[] promptKeyboardInteractive(String destination, String name, + String instruction, String[] prompt, boolean[] echo) { + final GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 1, 1, + GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, + new Insets(0, 0, 0, 0), 0, 0); + Container panel = new JPanel(); + panel.setLayout(new GridBagLayout()); + + gbc.weightx = 1.0; + gbc.gridwidth = GridBagConstraints.REMAINDER; + gbc.gridx = 0; + panel.add(new JLabel(instruction), gbc); + gbc.gridy++; + + gbc.gridwidth = GridBagConstraints.RELATIVE; + + JTextField[] texts = new JTextField[prompt.length]; + for (int i = 0; i < prompt.length; i++) { + gbc.fill = GridBagConstraints.NONE; + gbc.gridx = 0; + gbc.weightx = 1; + panel.add(new JLabel(prompt[i]), gbc); + + gbc.gridx = 1; + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.weighty = 1; + if (echo[i]) { + texts[i] = new JTextField(20); + } else { + texts[i] = new JPasswordField(20); + } + panel.add(texts[i], gbc); + gbc.gridy++; + } + + String[] response = null; + if (JOptionPane.showConfirmDialog(null, panel, destination + ": " + + name, JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) { + response = new String[prompt.length]; + for (int i = 0; i < prompt.length; i++) { + response[i] = texts[i].getText(); + } + } + // else = cancel + return response; + } }
participants (1)
-
chatellier@users.labs.libre-entreprise.org