diff options
Diffstat (limited to 'bundles/org.eclipse.jsch.core/src/org/eclipse/jsch/internal/core/UserInfoImpl.java')
-rw-r--r-- | bundles/org.eclipse.jsch.core/src/org/eclipse/jsch/internal/core/UserInfoImpl.java | 224 |
1 files changed, 0 insertions, 224 deletions
diff --git a/bundles/org.eclipse.jsch.core/src/org/eclipse/jsch/internal/core/UserInfoImpl.java b/bundles/org.eclipse.jsch.core/src/org/eclipse/jsch/internal/core/UserInfoImpl.java deleted file mode 100644 index d8a5d9784..000000000 --- a/bundles/org.eclipse.jsch.core/src/org/eclipse/jsch/internal/core/UserInfoImpl.java +++ /dev/null @@ -1,224 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 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: - * Atsuhiko Yamanaka, JCraft,Inc. - initial API and implementation. - * IBM Corporation - ongoing maintenance - * Atsuhiko Yamanaka, JCraft,Inc. - copying this class from o.e.team.cvs.ssh2.JSchSession. - *******************************************************************************/ -package org.eclipse.jsch.internal.core; - -import org.eclipse.core.runtime.OperationCanceledException; -import org.eclipse.jsch.core.IJSchLocation; - -import com.jcraft.jsch.UIKeyboardInteractive; - -/** - * User information delegates to the IUserAuthenticator. This allows - * head-less access to the connection method. - * @since 1.1 - */ -class UserInfoImpl implements com.jcraft.jsch.UserInfo, UIKeyboardInteractive{ - private String username; - private String password; - private String passphrase; - private IJSchLocation location; - private IUserAuthenticator authenticator; - private int attemptCount; - private boolean passwordChanged; - - private long startTime; - private long endTime; - private boolean prompting; - private long timeout; - - private int reuse=0; - - UserInfoImpl(IJSchLocation location, IUserAuthenticator authenticator, long timeout){ - this.location=location; - this.username=location.getUsername(); - this.password=location.getPassword(); - this.authenticator=authenticator; - this.timeout=timeout; - } - - public String getPassword(){ - return password; - } - - public String getPassphrase(){ - return passphrase; - } - - public boolean promptYesNo(String str){ - int prompt=authenticator.prompt(location, IUserAuthenticator.QUESTION, - Messages.JSchSession_5, str, new int[] {IUserAuthenticator.YES_ID, - IUserAuthenticator.NO_ID}, 0 //yes the default - ); - return prompt==0; - } - - private String promptSecret(String message, boolean includeLocation){ - final String[] _password=new String[1]; - final String username=location.getUsername(); - IUserInfo info=new IUserInfo(){ - public String getUsername(){ - return username; - } - - public boolean isUsernameMutable(){ - return false; - } - - public void setPassword(String password){ - _password[0]=password; - } - - public void setUsername(String username){ - // - } - }; - try{ - authenticator.promptForUserInfo(includeLocation ? location : null, - info, message); - } - catch(OperationCanceledException e){ - _password[0]=null; - } - return _password[0]; - } - - public boolean promptPassphrase(String message){ - try{ - startTimer(); - String _passphrase=promptSecret(message, false); - if(_passphrase!=null){ - passphrase=_passphrase; - } - return _passphrase!=null; - } - catch(OperationCanceledException e){ - // The prompt was canceled, but the next authentication - // method should be tried. - return false; - } - finally{ - endTimer(); - } - } - - public boolean promptPassword(String message){ - try{ - startTimer(); - - String _password=promptSecret(message, true); - if(_password!=null){ - password=_password; - // Cache the password with the repository location on the memory. - if(location!=null) - location.setPassword(password); - } - return _password!=null; - } - finally{ - endTimer(); - } - } - - public void showMessage(String message){ - authenticator.prompt(location, IUserAuthenticator.INFORMATION, - Messages.JSchSession_5, message, - new int[] {IUserAuthenticator.OK_ID}, IUserAuthenticator.OK_ID); - } - - 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{ - startTimer(); - - 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=authenticator.promptForKeyboradInteractive(location, - 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]; - passwordChanged=true; - } - attemptCount++; - return result; - } - catch(OperationCanceledException e){ - return null; - } - finally{ - endTimer(); - } - } - - /** - * Callback to indicate that a connection is about to be attempted - */ - public void aboutToConnect(){ - attemptCount=0; - passwordChanged=false; - } - - /** - * Callback to indicate that a connection was made - */ - public void connectionMade(){ - attemptCount=0; - if(passwordChanged&&password!=null&&location!=null){ - // We were prompted for and returned a password so record it with the location - location.setPassword(password); - } - } - - private synchronized void startTimer(){ - prompting=true; - startTime=System.currentTimeMillis(); - } - - private synchronized void endTimer(){ - prompting=false; - endTime=System.currentTimeMillis(); - } - - public long getLastDuration(){ - return Math.max(0, endTime-startTime); - } - - public boolean hasPromptExceededTimeout(){ - if(!isPrompting()){ - return getLastDuration()>timeout; - } - return false; - } - - public boolean isPrompting(){ - return prompting; - } - - public synchronized int incReuse(){ - return reuse++; - } - - String getUsername(){ - return username; - } -} |