Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 141995 Details for
Bug 262515
[SSH2] An undetermined authentication failure
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Patch that allows for method order selection
clipboard.txt (text/plain), 19.85 KB, created by
Krzysztof Daniel
on 2009-07-20 06:39:57 EDT
(
hide
)
Description:
Patch that allows for method order selection
Filename:
MIME Type:
Creator:
Krzysztof Daniel
Created:
2009-07-20 06:39:57 EDT
Size:
19.85 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jsch.ui >Index: src/org/eclipse/jsch/internal/ui/Messages.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/Messages.java,v >retrieving revision 1.5 >diff -u -r1.5 Messages.java >--- src/org/eclipse/jsch/internal/ui/Messages.java 14 Apr 2008 16:35:30 -0000 1.5 >+++ src/org/eclipse/jsch/internal/ui/Messages.java 20 Jul 2009 10:41:31 -0000 >@@ -24,6 +24,7 @@ > public static String CVSSSH2ServerConnection_open; > public static String CVSSSH2PreferencePage_18; > public static String CVSSSH2PreferencePage_19; >+ public static String CVSSSH2PreferencePage_2; > public static String CVSSSH2PreferencePage_20; > public static String CVSSSH2PreferencePage_21; > public static String CVSSSH2PreferencePage_23; >@@ -31,6 +32,7 @@ > public static String CVSSSH2PreferencePage_25; > public static String CVSSSH2PreferencePage_26; > public static String CVSSSH2PreferencePage_27; >+ public static String CVSSSH2PreferencePage_3; > public static String CVSSSH2PreferencePage_30; > public static String CVSSSH2PreferencePage_31; > public static String CVSSSH2PreferencePage_32; >@@ -39,6 +41,7 @@ > public static String CVSSSH2PreferencePage_35; > public static String CVSSSH2PreferencePage_36; > public static String CVSSSH2PreferencePage_39; >+ public static String CVSSSH2PreferencePage_4; > public static String CVSSSH2PreferencePage_41; > public static String CVSSSH2PreferencePage_42; > public static String CVSSSH2PreferencePage_43; >@@ -47,6 +50,7 @@ > public static String CVSSSH2PreferencePage_47; > public static String CVSSSH2PreferencePage_48; > public static String CVSSSH2PreferencePage_49; >+ public static String CVSSSH2PreferencePage_5; > public static String CVSSSH2PreferencePage_50; > public static String CVSSSH2PreferencePage_53; > public static String CVSSSH2PreferencePage_55; >@@ -81,6 +85,7 @@ > public static String CVSSSH2PreferencePage_134; > public static String CVSSSH2PreferencePage_135; > public static String CVSSSH2PreferencePage_136; >+ public static String CVSSSH2PreferencePage_137; > public static String CVSSSH2PreferencePage_138; > public static String CVSSSH2PreferencePage_139; > public static String KeyboardInteractiveDialog_0; >Index: src/org/eclipse/jsch/internal/ui/messages.properties >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/messages.properties,v >retrieving revision 1.7 >diff -u -r1.7 messages.properties >--- src/org/eclipse/jsch/internal/ui/messages.properties 26 Jan 2009 11:33:14 -0000 1.7 >+++ src/org/eclipse/jsch/internal/ui/messages.properties 20 Jul 2009 10:41:31 -0000 >@@ -14,6 +14,7 @@ > CVSSSH2ServerConnection_open=Connecting via SSH to {0}... > CVSSSH2PreferencePage_18=Configuration options for SSH2: > CVSSSH2PreferencePage_19=&General >+CVSSSH2PreferencePage_2=Up > CVSSSH2PreferencePage_20=&Proxy > CVSSSH2PreferencePage_21=&Key Management > CVSSSH2PreferencePage_23=SSH2 &home: >@@ -21,6 +22,7 @@ > CVSSSH2PreferencePage_25=P&rivate keys: > CVSSSH2PreferencePage_26=Add Pr&ivate Key... > CVSSSH2PreferencePage_27=SSH Home: >+CVSSSH2PreferencePage_3=Down > CVSSSH2PreferencePage_30=&Enable proxy connection > CVSSSH2PreferencePage_31=Proxy &type: > CVSSSH2PreferencePage_32=Proxy host add&ress: >@@ -29,6 +31,7 @@ > CVSSSH2PreferencePage_35=Proxy &user name: > CVSSSH2PreferencePage_36=Proxy pa&ssword: > CVSSSH2PreferencePage_39=&You can paste this public key into the remote authorized_keys file: >+CVSSSH2PreferencePage_4=Select preferred authentication methods > CVSSSH2PreferencePage_41=&Fingerprint: > CVSSSH2PreferencePage_42=&Comment: > CVSSSH2PreferencePage_43=Passp&hrase: >@@ -37,6 +40,7 @@ > CVSSSH2PreferencePage_47=The key was not generated. > CVSSSH2PreferencePage_48=The passphrases entered do not match. > CVSSSH2PreferencePage_49=Are you sure you want to save this private key without passphrase protection? >+CVSSSH2PreferencePage_5=You must select at least one authentication method. > CVSSSH2PreferencePage_50={0} does not exist.\nAre you sure you want to create it? > CVSSSH2PreferencePage_53={0} has already existed.\nAre you sure you want to overwrite it? > CVSSSH2PreferencePage_55=Successfully saved. >@@ -71,6 +75,7 @@ > CVSSSH2PreferencePage_134=Hostname > CVSSSH2PreferencePage_135=Type > CVSSSH2PreferencePage_136=Fingerprint >+CVSSSH2PreferencePage_137=&Authentication Methods > CVSSSH2PreferencePage_138=&Remove > CVSSSH2PreferencePage_139=Keys of known hosts: > UserInfoPrompter_0=SSH2 Message >Index: src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java,v >retrieving revision 1.6 >diff -u -r1.6 PreferencePage.java >--- src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java 2 Nov 2007 07:15:47 -0000 1.6 >+++ src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java 20 Jul 2009 10:41:31 -0000 >@@ -12,30 +12,78 @@ > *******************************************************************************/ > package org.eclipse.jsch.internal.ui.preference; > >-import java.io.*; >+import java.io.ByteArrayInputStream; >+import java.io.ByteArrayOutputStream; >+import java.io.File; >+import java.io.IOException; >+import java.util.Arrays; >+import java.util.HashSet; > import java.util.Iterator; >+import java.util.Set; > >-import org.eclipse.core.runtime.*; >-import org.eclipse.jface.dialogs.*; >+import org.eclipse.core.runtime.NullProgressMonitor; >+import org.eclipse.core.runtime.Preferences; > import org.eclipse.jface.dialogs.Dialog; >-import org.eclipse.jface.viewers.*; >+import org.eclipse.jface.dialogs.IDialogConstants; >+import org.eclipse.jface.dialogs.MessageDialog; >+import org.eclipse.jface.viewers.ColumnWeightData; >+import org.eclipse.jface.viewers.IStructuredContentProvider; >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.jface.viewers.ITableLabelProvider; >+import org.eclipse.jface.viewers.LabelProvider; >+import org.eclipse.jface.viewers.TableLayout; >+import org.eclipse.jface.viewers.TableViewer; >+import org.eclipse.jface.viewers.Viewer; > import org.eclipse.jsch.core.IJSchLocation; > import org.eclipse.jsch.core.IJSchService; >-import org.eclipse.jsch.internal.core.*; >+import org.eclipse.jsch.internal.core.IConstants; >+import org.eclipse.jsch.internal.core.JSchCorePlugin; >+import org.eclipse.jsch.internal.core.Utils; > import org.eclipse.jsch.internal.ui.JSchUIPlugin; > import org.eclipse.jsch.internal.ui.Messages; > import org.eclipse.osgi.util.NLS; > import org.eclipse.swt.SWT; > import org.eclipse.swt.custom.BusyIndicator; > import org.eclipse.swt.custom.TableEditor; >-import org.eclipse.swt.events.*; >+import org.eclipse.swt.events.FocusEvent; >+import org.eclipse.swt.events.FocusListener; >+import org.eclipse.swt.events.ModifyEvent; >+import org.eclipse.swt.events.ModifyListener; >+import org.eclipse.swt.events.SelectionAdapter; >+import org.eclipse.swt.events.SelectionEvent; > import org.eclipse.swt.graphics.Image; > import org.eclipse.swt.layout.GridData; > import org.eclipse.swt.layout.GridLayout; >-import org.eclipse.swt.widgets.*; >-import org.eclipse.ui.*; >- >-import com.jcraft.jsch.*; >+import org.eclipse.swt.widgets.Button; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Control; >+import org.eclipse.swt.widgets.DirectoryDialog; >+import org.eclipse.swt.widgets.Display; >+import org.eclipse.swt.widgets.Event; >+import org.eclipse.swt.widgets.FileDialog; >+import org.eclipse.swt.widgets.Label; >+import org.eclipse.swt.widgets.Listener; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.swt.widgets.TabFolder; >+import org.eclipse.swt.widgets.TabItem; >+import org.eclipse.swt.widgets.Table; >+import org.eclipse.swt.widgets.TableColumn; >+import org.eclipse.swt.widgets.TableItem; >+import org.eclipse.swt.widgets.Text; >+import org.eclipse.ui.IWorkbench; >+import org.eclipse.ui.IWorkbenchPreferencePage; >+import org.eclipse.ui.PlatformUI; >+ >+import com.jcraft.jsch.Channel; >+import com.jcraft.jsch.ChannelSftp; >+import com.jcraft.jsch.HostKey; >+import com.jcraft.jsch.HostKeyRepository; >+import com.jcraft.jsch.JSch; >+import com.jcraft.jsch.JSchException; >+import com.jcraft.jsch.KeyPair; >+import com.jcraft.jsch.Session; >+import com.jcraft.jsch.SftpATTRS; >+import com.jcraft.jsch.SftpException; > > public class PreferencePage extends org.eclipse.jface.preference.PreferencePage > implements IWorkbenchPreferencePage{ >@@ -93,6 +141,10 @@ > tabItem=new TabItem(tabFolder, SWT.NONE); > tabItem.setText(Messages.CVSSSH2PreferencePage_133); > tabItem.setControl(createHostKeyManagementPage(tabFolder)); >+ >+ tabItem=new TabItem(tabFolder, SWT.NONE); >+ tabItem.setText(Messages.CVSSSH2PreferencePage_137); >+ tabItem.setControl(createPreferredAuthenticationPage(tabFolder)); > > initControls(); > >@@ -715,6 +767,12 @@ > private TableViewer viewer; > private Button removeHostKeyButton; > >+ private Table preferedAuthMethodTable; >+ >+ private Button up; >+ >+ private Button down; >+ > class TableLabelProvider extends LabelProvider implements ITableLabelProvider{ > public String getColumnText(Object element, int columnIndex){ > HostKey entry=(HostKey)element; >@@ -840,6 +898,132 @@ > > return group; > } >+ >+ private Control createPreferredAuthenticationPage(Composite parent){ >+ Composite root = new Composite(parent, SWT.NONE); >+ GridLayout layout=new GridLayout(); >+ layout.marginHeight=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); >+ layout.marginWidth=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); >+ layout.verticalSpacing=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); >+ layout.horizontalSpacing=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); >+ layout.numColumns = 2; >+ root.setLayout(layout); >+ >+ Label label=new Label(root, SWT.NONE); >+ GridData textLayoutData=new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false); >+ textLayoutData.horizontalSpan = 2; >+ label.setLayoutData(textLayoutData); >+ label.setText(Messages.CVSSSH2PreferencePage_4); >+ >+ preferedAuthMethodTable=new Table(root, SWT.CHECK | SWT.BORDER); >+ GridData layoutData=new GridData(SWT.FILL, SWT.BEGINNING, true, true); >+ layoutData.verticalSpan = 3; >+ preferedAuthMethodTable.setLayoutData(layoutData); >+ layoutData.minimumHeight = 150; >+ layoutData.minimumWidth = 200; >+ populateAuthMethods(); >+ >+ up=new Button(root, SWT.PUSH); >+ up.setText(Messages.CVSSSH2PreferencePage_2); >+ up.setEnabled(false); >+ setButtonLayoutData(up); >+ >+ down=new Button(root, SWT.PUSH); >+ down.setText(Messages.CVSSSH2PreferencePage_3); >+ down.setEnabled(false); >+ setButtonLayoutData(down); >+ >+ preferedAuthMethodTable.addSelectionListener(new SelectionAdapter(){ >+ >+ public void widgetSelected(SelectionEvent e){ >+ boolean anySelected = false; >+ for(int i = 0; i < preferedAuthMethodTable.getItemCount(); i++){ >+ anySelected |= preferedAuthMethodTable.getItem(i).getChecked(); >+ } >+ >+ if(anySelected){ >+ setErrorMessage(null); >+ setValid(true); >+ } >+ else{ >+ setErrorMessage(Messages.CVSSSH2PreferencePage_5); >+ setValid(false); >+ } >+ up.setEnabled(preferedAuthMethodTable.getSelectionIndex()>0); >+ down >+ .setEnabled(preferedAuthMethodTable.getSelectionIndex()<preferedAuthMethodTable >+ .getItemCount()-1); >+ } >+ >+ }); >+ up.addSelectionListener(new SelectionAdapter(){ >+ >+ public void widgetSelected(SelectionEvent e){ >+ int selectedIndex=preferedAuthMethodTable.getSelectionIndex(); >+ if(selectedIndex == 1){ //this is the last possible swap >+ up.setEnabled(false); >+ } >+ down.setEnabled(true); >+ TableItem sourceItem = preferedAuthMethodTable.getItem(selectedIndex); >+ TableItem targetItem = preferedAuthMethodTable.getItem(selectedIndex-1); >+ >+ //switch text >+ String stemp = targetItem.getText(); >+ targetItem.setText(sourceItem.getText()); >+ sourceItem.setText(stemp); >+ >+ //switch selection >+ boolean btemp = targetItem.getChecked(); >+ targetItem.setChecked(sourceItem.getChecked()); >+ sourceItem.setChecked(btemp); >+ >+ preferedAuthMethodTable.setSelection(targetItem); >+ } >+ }); >+ >+ down.addSelectionListener(new SelectionAdapter(){ >+ >+ public void widgetSelected(SelectionEvent e){ >+ int selectedIndex=preferedAuthMethodTable.getSelectionIndex(); >+ if(selectedIndex == preferedAuthMethodTable.getItemCount()-2){ //this is the last possible swap >+ down.setEnabled(false); >+ } >+ up.setEnabled(true); >+ TableItem sourceItem = preferedAuthMethodTable.getItem(selectedIndex); >+ TableItem targetItem = preferedAuthMethodTable.getItem(selectedIndex+1); >+ >+ //switch text >+ String stemp = targetItem.getText(); >+ targetItem.setText(sourceItem.getText()); >+ sourceItem.setText(stemp); >+ >+ //switch selection >+ boolean btemp = targetItem.getChecked(); >+ targetItem.setChecked(sourceItem.getChecked()); >+ sourceItem.setChecked(btemp); >+ >+ preferedAuthMethodTable.setSelection(targetItem); >+ } >+ }); >+ >+ return root; >+ } >+ >+ private void populateAuthMethods(){ >+ preferedAuthMethodTable.removeAll(); >+ String[] methods = Utils.getEnabledPreferredAuthMethods().split(","); //$NON-NLS-1$ >+ Set smethods = new HashSet(Arrays.asList(methods)); >+ >+ String[] order = Utils.getMethodsOrder().split(","); //$NON-NLS-1$ >+ >+ for(int i=0; i<order.length; i++){ >+ TableItem tableItem= new TableItem(preferedAuthMethodTable, SWT.NONE); >+ tableItem.setText(0, order[i]); >+ if(smethods.contains(order[i])){ >+ tableItem.setChecked(true); >+ } >+ } >+ } > > void handleSelection(){ > boolean empty=viewer.getSelection().isEmpty(); >@@ -953,6 +1137,9 @@ > keyPassphrase2Text.setEnabled(enable); > keyExport.setEnabled(enable); > saveKeyPair.setEnabled(enable); >+ populateAuthMethods(); >+ up.setEnabled(false); >+ down.setEnabled(false); > } > > public void init(IWorkbench workbench){ >@@ -975,6 +1162,7 @@ > > public boolean performOk(){ > boolean result=super.performOk(); >+ storeAuthenticationMethodSettings(); > if(result){ > setErrorMessage(null); > String home=ssh2HomeText.getText(); >@@ -1003,12 +1191,36 @@ > return result; > } > >+ private void storeAuthenticationMethodSettings(){ >+ String selected = null; >+ String order = null; >+ for(int i = 0; i < preferedAuthMethodTable.getItemCount(); i++){ >+ TableItem item=preferedAuthMethodTable.getItem(i); >+ if(item.getChecked()){ >+ if(selected==null){ >+ selected=item.getText(); >+ } >+ else{ >+ selected+=","+item.getText(); //$NON-NLS-1$ >+ } >+ } >+ if(order == null){ >+ order = item.getText(); >+ } else { >+ order += "," + item.getText(); //$NON-NLS-1$ >+ } >+ } >+ Utils.setEnabledPreferredAuthMethods(selected, order); >+ } >+ > public void performApply(){ > performOk(); > } > > protected void performDefaults(){ > super.performDefaults(); >+ Utils.setEnabledPreferredAuthMethods(Utils.getDefaultAuthMethods(), Utils >+ .getDefaultAuthMethods()); > Preferences preferences=JSchCorePlugin.getPlugin().getPluginPreferences(); > ssh2HomeText > .setText(preferences >#P org.eclipse.jsch.core >Index: src/org/eclipse/jsch/internal/core/IConstants.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jsch.core/src/org/eclipse/jsch/internal/core/IConstants.java,v >retrieving revision 1.2 >diff -u -r1.2 IConstants.java >--- src/org/eclipse/jsch/internal/core/IConstants.java 13 Apr 2007 15:00:30 -0000 1.2 >+++ src/org/eclipse/jsch/internal/core/IConstants.java 20 Jul 2009 10:41:32 -0000 >@@ -47,5 +47,7 @@ > public final String PREF_PROXY_AUTH="proxyAuth"; //$NON-NLS-1$ > > public final String PREF_HAS_MIGRATED_SSH2_PREFS="org.eclipse.jsch.core.hasMigratedSsh2Preferences"; //$NON-NLS-1$ >- >+ >+ public static final String PREF_PREFERRED_AUTHENTICATION_METHODS="CVSSSH2PreferencePage.PREF_AUTH_METHODS"; //$NON-NLS-1$ >+ public static final String PREF_PREFERRED_AUTHENTICATION_METHODS_ORDER="CVSSSH2PreferencePage.PREF_AUTH_METHODS_ORDER"; //$NON-NLS-1$ > } >Index: src/org/eclipse/jsch/internal/core/Utils.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jsch.core/src/org/eclipse/jsch/internal/core/Utils.java,v >retrieving revision 1.9 >diff -u -r1.9 Utils.java >--- src/org/eclipse/jsch/internal/core/Utils.java 2 Nov 2007 07:15:49 -0000 1.9 >+++ src/org/eclipse/jsch/internal/core/Utils.java 20 Jul 2009 10:41:32 -0000 >@@ -15,7 +15,9 @@ > import org.eclipse.core.net.proxy.IProxyData; > import org.eclipse.core.net.proxy.IProxyService; > import org.eclipse.core.runtime.IStatus; >+import org.eclipse.core.runtime.Platform; > import org.eclipse.core.runtime.Preferences; >+import org.eclipse.core.runtime.preferences.IPreferencesService; > import org.eclipse.core.runtime.preferences.InstanceScope; > > import com.jcraft.jsch.*; >@@ -25,6 +27,18 @@ > * @since 1.0 > */ > public class Utils{ >+ >+ /* should have at least one element */ >+ private static final String[] PREFERRED_AUTH_METHODS=new String[] { >+ "gssapi-with-mic", "publickey", "password", "keyboard-interactive"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ >+ >+ public static String getDefaultAuthMethods(){ >+ String defaultValue = PREFERRED_AUTH_METHODS[0]; >+ for(int i = 1; i < PREFERRED_AUTH_METHODS.length; i++){ >+ defaultValue += "," + PREFERRED_AUTH_METHODS[i]; //$NON-NLS-1$ >+ } >+ return defaultValue; >+ } > > public static String loadPrivateKeys(JSch jsch, String current_pkeys){ > Preferences preferences=JSchCorePlugin.getPlugin().getPluginPreferences(); >@@ -78,7 +92,7 @@ > setProxy(session); > Hashtable config=new Hashtable(); > config.put("PreferredAuthentications", //$NON-NLS-1$ >- "gssapi-with-mic,publickey,password,keyboard-interactive"); //$NON-NLS-1$ >+ getEnabledPreferredAuthMethods()); > session.setConfig(config); > return session; > } >@@ -187,5 +201,25 @@ > ssh2Prefs.remove(IConstants.KEY_OLD_PRIVATEKEY); > } > } >+ >+ public static String getEnabledPreferredAuthMethods(){ >+ IPreferencesService service = Platform.getPreferencesService(); >+ return service.getString(JSchCorePlugin.ID, >+ IConstants.PREF_PREFERRED_AUTHENTICATION_METHODS, getDefaultAuthMethods(), null); >+ } >+ >+ public static String getMethodsOrder(){ >+ IPreferencesService service = Platform.getPreferencesService(); >+ return service.getString(JSchCorePlugin.ID, >+ IConstants.PREF_PREFERRED_AUTHENTICATION_METHODS_ORDER, getDefaultAuthMethods(), null); >+ } >+ >+ public static void setEnabledPreferredAuthMethods(String methods, String order){ >+ IPreferencesService service=Platform.getPreferencesService(); >+ service.getRootNode().node(InstanceScope.SCOPE).node(JSchCorePlugin.ID).put( >+ IConstants.PREF_PREFERRED_AUTHENTICATION_METHODS, methods); >+ service.getRootNode().node(InstanceScope.SCOPE).node(JSchCorePlugin.ID).put( >+ IConstants.PREF_PREFERRED_AUTHENTICATION_METHODS_ORDER, order);} >+ > > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 262515
:
123854
|
141630
|
141631
|
141632
| 141995 |
141996
|
141997