diff options
Diffstat (limited to 'bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/ui/UserInfoPrompter.java')
-rw-r--r-- | bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/ui/UserInfoPrompter.java | 298 |
1 files changed, 0 insertions, 298 deletions
diff --git a/bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/ui/UserInfoPrompter.java b/bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/ui/UserInfoPrompter.java deleted file mode 100644 index a425b54ca..000000000 --- a/bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/ui/UserInfoPrompter.java +++ /dev/null @@ -1,298 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jsch.ui; - -import org.eclipse.core.runtime.OperationCanceledException; -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jsch.core.IJSchService; -import org.eclipse.jsch.internal.ui.*; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -import com.jcraft.jsch.*; - -/** - * A {@link UserInfo} prompter implementation that can be used when connecting a - * {@link Session}. - * <p> - * Clients may instantiate or subclass this class. - * - * @since 1.0 - * @see IJSchService#createSession(String, int, String) - * @see IJSchService#connect(Session, int, - * org.eclipse.core.runtime.IProgressMonitor) - */ -public class UserInfoPrompter implements UserInfo, UIKeyboardInteractive{ - - private String passphrase; - private String password; - private final Session session; - private int attemptCount; - - /** - * Create a prompter for the given session. This constructor will associate - * this prompter with the session using {@link Session#setUserInfo(UserInfo)}. - * - * @param session - * the session - */ - public UserInfoPrompter(Session session){ - super(); - this.session=session; - session.setUserInfo(this); - } - - /** - * Return the session to which this prompter is assigned. - * - * @return the session to which this prompter is assigned - */ - public Session getSession(){ - return session; - } - - /* - * (non-Javadoc) - * - * @see com.jcraft.jsch.UserInfo#getPassphrase() - */ - public String getPassphrase(){ - return passphrase; - } - - /* - * (non-Javadoc) - * - * @see com.jcraft.jsch.UserInfo#getPassword() - */ - public String getPassword(){ - return password; - } - - /** - * Set the pass phrase to be used when connecting the session. Return - * <code>null</code> if the pass phrase is not known. - * - * @param passphrase - * the pass phrase to be used when connecting the session or - * <code>null</code> - */ - public void setPassphrase(String passphrase){ - this.passphrase=passphrase; - } - - /** - * Set the password to be used when connecting the session. Return - * <code>null</code> if the password is not known. - * - * @param password - * the password to be used when connecting the session or - * <code>null</code> - */ - public void setPassword(String password){ - this.password=password; - } - - /* - * (non-Javadoc) - * - * @see com.jcraft.jsch.UserInfo#promptPassphrase(java.lang.String) - */ - public boolean promptPassphrase(String message){ - String _passphrase=promptSecret(message); - if(_passphrase!=null){ - setPassphrase(_passphrase); - } - return _passphrase!=null; - } - - /* - * (non-Javadoc) - * - * @see com.jcraft.jsch.UserInfo#promptPassword(java.lang.String) - */ - public boolean promptPassword(String message){ - String _password=promptSecret(message); - if(_password!=null){ - setPassword(_password); - } - return _password!=null; - } - - private String promptSecret(final String message){ - // ask the user for a password - final String[] result=new String[1]; - Display display=Display.getCurrent(); - if(display!=null){ - result[0]=promptForPassword(message); - } - else{ - // sync exec in default thread - Display.getDefault().syncExec(new Runnable(){ - public void run(){ - result[0]=promptForPassword(message); - } - }); - } - - if(result[0]==null){ - throw new OperationCanceledException(); - } - return result[0]; - } - - /* package */String promptForPassword(final String message){ - String username=getSession().getUserName(); - UserValidationDialog dialog=new UserValidationDialog(null, null, - (username==null) ? "" : username, message); //$NON-NLS-1$ - dialog.setUsernameMutable(false); - dialog.open(); - return dialog.getPassword(); - } - - /* - * (non-Javadoc) - * - * @see com.jcraft.jsch.UIKeyboardInteractive#promptKeyboardInteractive(java.lang.String, - * java.lang.String, java.lang.String, java.lang.String[], boolean[]) - */ - public String[] promptKeyboardInteractive(String destination, String name, - String instruction, String[] prompt, boolean[] echo){ - if(prompt.length==0){ - // No need to prompt, just return an empty String array - return new String[0]; - } - try{ - if(attemptCount==0&&password!=null&&prompt.length==1 - &&prompt[0].trim().equalsIgnoreCase("password:")){ //$NON-NLS-1$ - // Return the provided password the first time but always prompt on - // subsequent tries - attemptCount++; - return new String[] {password}; - } - String[] result=promptForKeyboradInteractiveInUI(destination, name, - instruction, prompt, echo); - if(result==null) - return null; // canceled - if(result.length==1&&prompt.length==1 - &&prompt[0].trim().equalsIgnoreCase("password:")){ //$NON-NLS-1$ - password=result[0]; - } - attemptCount++; - return result; - } - catch(OperationCanceledException e){ - return null; - } - } - - private String[] promptForKeyboradInteractiveInUI(final String destination, - final String name, final String instruction, final String[] prompt, - final boolean[] echo){ - final String[][] result=new String[1][]; - Display display=Display.getCurrent(); - if(display!=null){ - result[0]=internalPromptForUserInteractive(destination, name, - instruction, prompt, echo); - } - else{ - // sync exec in default thread - Display.getDefault().syncExec(new Runnable(){ - public void run(){ - result[0]=internalPromptForUserInteractive(destination, name, - instruction, prompt, echo); - } - }); - } - return result[0]; - } - - /* package */ String[] internalPromptForUserInteractive(String destination, - String name, String instruction, String[] prompt, boolean[] echo){ - String domain=null; - String userName=getSession().getUserName(); - KeyboardInteractiveDialog dialog=new KeyboardInteractiveDialog(null, - domain, destination, name, userName, instruction, prompt, echo); - dialog.open(); - String[] _result=dialog.getResult(); - return _result; - } - - /* - * (non-Javadoc) - * - * @see com.jcraft.jsch.UserInfo#promptYesNo(java.lang.String) - */ - public boolean promptYesNo(String question){ - int prompt=prompt(MessageDialog.QUESTION, Messages.UserInfoPrompter_0, - question, new int[] {IDialogConstants.YES_ID, IDialogConstants.NO_ID}, - 0 // yes - // the - // default - ); - return prompt==0; - } - - /* - * (non-Javadoc) - * - * @see com.jcraft.jsch.UserInfo#showMessage(java.lang.String) - */ - public void showMessage(String message){ - prompt(MessageDialog.INFORMATION, Messages.UserInfoPrompter_1, message, - new int[] {IDialogConstants.OK_ID}, 0); - } - - private int prompt(final int promptType, final String title, - final String message, final int[] promptResponses, - final int defaultResponse){ - final Display display=getStandardDisplay(); - final int[] retval=new int[1]; - final String[] buttons=new String[promptResponses.length]; - for(int i=0; i<promptResponses.length; i++){ - int prompt=promptResponses[i]; - switch(prompt){ - case IDialogConstants.OK_ID: - buttons[i]=IDialogConstants.OK_LABEL; - break; - case IDialogConstants.CANCEL_ID: - buttons[i]=IDialogConstants.CANCEL_LABEL; - break; - case IDialogConstants.NO_ID: - buttons[i]=IDialogConstants.NO_LABEL; - break; - case IDialogConstants.YES_ID: - buttons[i]=IDialogConstants.YES_LABEL; - break; - } - } - - display.syncExec(new Runnable(){ - public void run(){ - final MessageDialog dialog=new MessageDialog(new Shell(display), title, - null /* title image */, message, promptType, buttons, - defaultResponse); - retval[0]=dialog.open(); - } - }); - return retval[0]; - } - - private Display getStandardDisplay(){ - Display display=Display.getCurrent(); - if(display==null){ - display=Display.getDefault(); - } - return display; - } - -} |