Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java')
-rw-r--r--bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java3132
1 files changed, 1566 insertions, 1566 deletions
diff --git a/bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java b/bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java
index 5685e34c0..6544592a8 100644
--- a/bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java
+++ b/bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java
@@ -86,416 +86,416 @@ import com.jcraft.jsch.SftpATTRS;
import com.jcraft.jsch.SftpException;
public class PreferencePage extends org.eclipse.jface.preference.PreferencePage
- implements IWorkbenchPreferencePage{
-
- private static final String SSH2_PREFERENCE_PAGE_CONTEXT="org.eclipse.jsch.ui.ssh2_preference_page_context"; //$NON-NLS-1$
-
- private Label ssh2HomeLabel;
- private Label privateKeyLabel;
- Text ssh2HomeText;
- Text privateKeyText;
- private Button privateKeyAdd;
-
- private Button ssh2HomeBrowse;
- Button keyGenerateDSA;
- Button keyGenerateRSA;
- private Button keyLoad;
- private Button keyExport;
- Button saveKeyPair;
- private Label keyCommentLabel;
- Text keyCommentText;
- private Label keyFingerPrintLabel;
- Text keyFingerPrintText;
- private Label keyPassphrase1Label;
- Text keyPassphrase1Text;
- private Label keyPassphrase2Label;
- Text keyPassphrase2Text;
- private Label publicKeylabel;
- Text publicKeyText;
- KeyPair kpair=null;
- String kpairComment;
-
- public static final String AUTH_SCHEME="";//$NON-NLS-1$
-
- public PreferencePage(){
- setDescription(Messages.CVSSSH2PreferencePage_18);
- }
-
- @Override
+ implements IWorkbenchPreferencePage{
+
+ private static final String SSH2_PREFERENCE_PAGE_CONTEXT="org.eclipse.jsch.ui.ssh2_preference_page_context"; //$NON-NLS-1$
+
+ private Label ssh2HomeLabel;
+ private Label privateKeyLabel;
+ Text ssh2HomeText;
+ Text privateKeyText;
+ private Button privateKeyAdd;
+
+ private Button ssh2HomeBrowse;
+ Button keyGenerateDSA;
+ Button keyGenerateRSA;
+ private Button keyLoad;
+ private Button keyExport;
+ Button saveKeyPair;
+ private Label keyCommentLabel;
+ Text keyCommentText;
+ private Label keyFingerPrintLabel;
+ Text keyFingerPrintText;
+ private Label keyPassphrase1Label;
+ Text keyPassphrase1Text;
+ private Label keyPassphrase2Label;
+ Text keyPassphrase2Text;
+ private Label publicKeylabel;
+ Text publicKeyText;
+ KeyPair kpair=null;
+ String kpairComment;
+
+ public static final String AUTH_SCHEME="";//$NON-NLS-1$
+
+ public PreferencePage(){
+ setDescription(Messages.CVSSSH2PreferencePage_18);
+ }
+
+ @Override
protected Control createContents(Composite parent){
- Composite container=new Composite(parent, SWT.NULL);
- GridLayout layout=new GridLayout();
- container.setLayout(layout);
- initializeDialogUnits(container);
-
- CTabFolder tabFolder=new CTabFolder(container, SWT.NONE);
- tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- CTabItem tabItem=new CTabItem(tabFolder, SWT.NONE);
- tabItem.setText(Messages.CVSSSH2PreferencePage_19);
- tabItem.setControl(createGeneralPage(tabFolder));
-
- tabItem=new CTabItem(tabFolder, SWT.NONE);
- tabItem.setText(Messages.CVSSSH2PreferencePage_21);
- tabItem.setControl(createKeyManagementPage(tabFolder));
-
- tabItem=new CTabItem(tabFolder, SWT.NONE);
- tabItem.setText(Messages.CVSSSH2PreferencePage_133);
- tabItem.setControl(createHostKeyManagementPage(tabFolder));
-
- tabItem=new CTabItem(tabFolder, SWT.NONE);
- tabItem.setText(Messages.CVSSSH2PreferencePage_137);
- tabItem.setControl(createPreferredAuthenticationPage(tabFolder));
-
- tabItem=new CTabItem(tabFolder, SWT.NONE);
- tabItem.setText(Messages.CVSSSH2PreferencePage_144);
- tabItem.setControl(createPreferredKeyExchangePage(tabFolder));
-
- tabItem=new CTabItem(tabFolder, SWT.NONE);
- tabItem.setText(Messages.CVSSSH2PreferencePage_145);
- tabItem.setControl(createPreferredMACPage(tabFolder));
-
- tabItem=new CTabItem(tabFolder, SWT.NONE);
- tabItem.setText(Messages.CVSSSH2PreferencePage_146);
- tabItem.setControl(createPreferredSSHAgentPage(tabFolder));
- tabFolder.setSelection(0);
- initControls();
-
- Dialog.applyDialogFont(parent);
- PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
- SSH2_PREFERENCE_PAGE_CONTEXT);
- return container;
- }
-
- private Control createGeneralPage(Composite parent){
- Composite group=new Composite(parent, SWT.NULL);
- GridLayout layout=new GridLayout();
- layout.numColumns=3;
- layout.marginHeight=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
- layout.marginWidth=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
- layout.verticalSpacing=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
- layout.horizontalSpacing=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
- group.setLayout(layout);
- GridData data=new GridData();
- data.horizontalAlignment=GridData.FILL;
- group.setLayoutData(data);
-
- ssh2HomeLabel=new Label(group, SWT.NONE);
- ssh2HomeLabel.setText(Messages.CVSSSH2PreferencePage_23);
-
- ssh2HomeText=new Text(group, SWT.SINGLE|SWT.BORDER);
- ssh2HomeText.setFont(group.getFont());
- GridData gd=new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan=1;
- ssh2HomeText.setLayoutData(gd);
-
- ssh2HomeBrowse=new Button(group, SWT.NULL);
- ssh2HomeBrowse.setText(Messages.CVSSSH2PreferencePage_24);
- gd=new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- gd.horizontalSpan=1;
- ssh2HomeBrowse.setLayoutData(gd);
-
- createSpacer(group, 3);
-
- privateKeyLabel=new Label(group, SWT.NONE);
- privateKeyLabel.setText(Messages.CVSSSH2PreferencePage_25);
-
- privateKeyText=new Text(group, SWT.SINGLE|SWT.BORDER);
- privateKeyText.setFont(group.getFont());
- gd=new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan=1;
- privateKeyText.setLayoutData(gd);
-
- privateKeyAdd=new Button(group, SWT.NULL);
- privateKeyAdd.setText(Messages.CVSSSH2PreferencePage_26);
- gd=new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- gd.horizontalSpan=1;
- privateKeyAdd.setLayoutData(gd);
-
- ssh2HomeBrowse.addSelectionListener(new SelectionAdapter(){
- @Override
- public void widgetSelected(SelectionEvent e){
- String home=ssh2HomeText.getText();
-
- if(!new File(home).exists()){
- while(true){
- int foo=home.lastIndexOf(java.io.File.separator, home.length());
- if(foo==-1)
- break;
- home=home.substring(0, foo);
- if(new File(home).exists())
- break;
- }
- }
-
- DirectoryDialog dd=new DirectoryDialog(getShell());
- dd.setFilterPath(home);
- dd.setMessage(Messages.CVSSSH2PreferencePage_27);
- String dir=dd.open();
- if(dir==null){ // cancel
- return;
- }
- ssh2HomeText.setText(dir);
- }
- });
-
- privateKeyAdd.addSelectionListener(new SelectionAdapter(){
- @Override
- public void widgetSelected(SelectionEvent e){
- String home=ssh2HomeText.getText();
-
- FileDialog fd=new FileDialog(getShell(), SWT.OPEN|SWT.MULTI);
- fd.setFilterPath(home);
- Object o=fd.open();
- if(o==null){ // cancel
- return;
- }
- String[] files=fd.getFileNames();
- String keys=privateKeyText.getText();
- String dir=fd.getFilterPath();
- if(dir.equals(home)){
- dir="";} //$NON-NLS-1$
- else{
- dir+=java.io.File.separator;
- }
-
- for(int i=0; i<files.length; i++){
- String foo=files[i];
- if(keys.length()!=0)
- keys=keys+","; //$NON-NLS-1$
- keys=keys+dir+foo;
- }
- privateKeyText.setText(keys);
- }
- });
-
- return group;
- }
-
- private Control createKeyManagementPage(Composite parent){
- int columnSpan=3;
- Composite group=new Composite(parent, SWT.NULL);
- GridLayout layout=new GridLayout();
- layout.numColumns=3;
- layout.marginHeight=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
- layout.marginWidth=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
- layout.verticalSpacing=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
- layout.horizontalSpacing=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
- group.setLayout(layout);
- GridData gd=new GridData();
- gd.horizontalAlignment=GridData.FILL;
- group.setLayoutData(gd);
-
- keyGenerateDSA=new Button(group, SWT.NULL);
- keyGenerateDSA.setText(Messages.CVSSSH2PreferencePage_131);
- gd=new GridData();
- gd.horizontalSpan=1;
- keyGenerateDSA.setLayoutData(gd);
-
- keyGenerateRSA=new Button(group, SWT.NULL);
- keyGenerateRSA.setText(Messages.CVSSSH2PreferencePage_132);
- gd=new GridData();
- gd.horizontalSpan=1;
- keyGenerateRSA.setLayoutData(gd);
-
- keyLoad=new Button(group, SWT.NULL);
- keyLoad.setText(Messages.CVSSSH2PreferencePage_128);
- gd=new GridData();
- gd.horizontalSpan=1;
- keyLoad.setLayoutData(gd);
-
- publicKeylabel=new Label(group, SWT.NONE);
- publicKeylabel.setText(Messages.CVSSSH2PreferencePage_39);
- gd=new GridData();
- gd.horizontalSpan=columnSpan;
- publicKeylabel.setLayoutData(gd);
-
- publicKeyText=new Text(group, SWT.MULTI|SWT.BORDER|SWT.V_SCROLL|SWT.WRAP|SWT.LEFT_TO_RIGHT);
- publicKeyText.setText(""); //$NON-NLS-1$
- publicKeyText.setEditable(false);
- gd=new GridData();
- gd.horizontalSpan=columnSpan;
- gd.horizontalAlignment=GridData.FILL;
- gd.verticalAlignment=GridData.FILL;
- gd.grabExcessHorizontalSpace=true;
- gd.grabExcessVerticalSpace=true;
- publicKeyText.setLayoutData(gd);
-
- keyFingerPrintLabel=new Label(group, SWT.NONE);
- keyFingerPrintLabel.setText(Messages.CVSSSH2PreferencePage_41);
- keyFingerPrintText=new Text(group, SWT.SINGLE|SWT.BORDER|SWT.LEFT_TO_RIGHT);
- keyFingerPrintText.setFont(group.getFont());
- keyFingerPrintText.setEditable(false);
- gd=new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan=2;
- keyFingerPrintText.setLayoutData(gd);
-
- keyCommentLabel=new Label(group, SWT.NONE);
- keyCommentLabel.setText(Messages.CVSSSH2PreferencePage_42);
- keyCommentText=new Text(group, SWT.SINGLE|SWT.BORDER);
- keyCommentText.setFont(group.getFont());
- gd=new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan=2;
- keyCommentText.setLayoutData(gd);
+ Composite container=new Composite(parent, SWT.NULL);
+ GridLayout layout=new GridLayout();
+ container.setLayout(layout);
+ initializeDialogUnits(container);
+
+ CTabFolder tabFolder=new CTabFolder(container, SWT.NONE);
+ tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ CTabItem tabItem=new CTabItem(tabFolder, SWT.NONE);
+ tabItem.setText(Messages.CVSSSH2PreferencePage_19);
+ tabItem.setControl(createGeneralPage(tabFolder));
+
+ tabItem=new CTabItem(tabFolder, SWT.NONE);
+ tabItem.setText(Messages.CVSSSH2PreferencePage_21);
+ tabItem.setControl(createKeyManagementPage(tabFolder));
+
+ tabItem=new CTabItem(tabFolder, SWT.NONE);
+ tabItem.setText(Messages.CVSSSH2PreferencePage_133);
+ tabItem.setControl(createHostKeyManagementPage(tabFolder));
+
+ tabItem=new CTabItem(tabFolder, SWT.NONE);
+ tabItem.setText(Messages.CVSSSH2PreferencePage_137);
+ tabItem.setControl(createPreferredAuthenticationPage(tabFolder));
+
+ tabItem=new CTabItem(tabFolder, SWT.NONE);
+ tabItem.setText(Messages.CVSSSH2PreferencePage_144);
+ tabItem.setControl(createPreferredKeyExchangePage(tabFolder));
+
+ tabItem=new CTabItem(tabFolder, SWT.NONE);
+ tabItem.setText(Messages.CVSSSH2PreferencePage_145);
+ tabItem.setControl(createPreferredMACPage(tabFolder));
+
+ tabItem=new CTabItem(tabFolder, SWT.NONE);
+ tabItem.setText(Messages.CVSSSH2PreferencePage_146);
+ tabItem.setControl(createPreferredSSHAgentPage(tabFolder));
+ tabFolder.setSelection(0);
+ initControls();
+
+ Dialog.applyDialogFont(parent);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
+ SSH2_PREFERENCE_PAGE_CONTEXT);
+ return container;
+ }
+
+ private Control createGeneralPage(Composite parent){
+ Composite group=new Composite(parent, SWT.NULL);
+ GridLayout layout=new GridLayout();
+ layout.numColumns=3;
+ layout.marginHeight=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
+ layout.marginWidth=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
+ layout.verticalSpacing=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
+ layout.horizontalSpacing=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
+ group.setLayout(layout);
+ GridData data=new GridData();
+ data.horizontalAlignment=GridData.FILL;
+ group.setLayoutData(data);
+
+ ssh2HomeLabel=new Label(group, SWT.NONE);
+ ssh2HomeLabel.setText(Messages.CVSSSH2PreferencePage_23);
+
+ ssh2HomeText=new Text(group, SWT.SINGLE|SWT.BORDER);
+ ssh2HomeText.setFont(group.getFont());
+ GridData gd=new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan=1;
+ ssh2HomeText.setLayoutData(gd);
+
+ ssh2HomeBrowse=new Button(group, SWT.NULL);
+ ssh2HomeBrowse.setText(Messages.CVSSSH2PreferencePage_24);
+ gd=new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ gd.horizontalSpan=1;
+ ssh2HomeBrowse.setLayoutData(gd);
+
+ createSpacer(group, 3);
+
+ privateKeyLabel=new Label(group, SWT.NONE);
+ privateKeyLabel.setText(Messages.CVSSSH2PreferencePage_25);
+
+ privateKeyText=new Text(group, SWT.SINGLE|SWT.BORDER);
+ privateKeyText.setFont(group.getFont());
+ gd=new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan=1;
+ privateKeyText.setLayoutData(gd);
+
+ privateKeyAdd=new Button(group, SWT.NULL);
+ privateKeyAdd.setText(Messages.CVSSSH2PreferencePage_26);
+ gd=new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ gd.horizontalSpan=1;
+ privateKeyAdd.setLayoutData(gd);
+
+ ssh2HomeBrowse.addSelectionListener(new SelectionAdapter(){
+ @Override
+ public void widgetSelected(SelectionEvent e){
+ String home=ssh2HomeText.getText();
+
+ if(!new File(home).exists()){
+ while(true){
+ int foo=home.lastIndexOf(java.io.File.separator, home.length());
+ if(foo==-1)
+ break;
+ home=home.substring(0, foo);
+ if(new File(home).exists())
+ break;
+ }
+ }
+
+ DirectoryDialog dd=new DirectoryDialog(getShell());
+ dd.setFilterPath(home);
+ dd.setMessage(Messages.CVSSSH2PreferencePage_27);
+ String dir=dd.open();
+ if(dir==null){ // cancel
+ return;
+ }
+ ssh2HomeText.setText(dir);
+ }
+ });
+
+ privateKeyAdd.addSelectionListener(new SelectionAdapter(){
+ @Override
+ public void widgetSelected(SelectionEvent e){
+ String home=ssh2HomeText.getText();
+
+ FileDialog fd=new FileDialog(getShell(), SWT.OPEN|SWT.MULTI);
+ fd.setFilterPath(home);
+ Object o=fd.open();
+ if(o==null){ // cancel
+ return;
+ }
+ String[] files=fd.getFileNames();
+ String keys=privateKeyText.getText();
+ String dir=fd.getFilterPath();
+ if(dir.equals(home)){
+ dir="";} //$NON-NLS-1$
+ else{
+ dir+=java.io.File.separator;
+ }
+
+ for(int i=0; i<files.length; i++){
+ String foo=files[i];
+ if(keys.length()!=0)
+ keys=keys+","; //$NON-NLS-1$
+ keys=keys+dir+foo;
+ }
+ privateKeyText.setText(keys);
+ }
+ });
+
+ return group;
+ }
+
+ private Control createKeyManagementPage(Composite parent){
+ int columnSpan=3;
+ Composite group=new Composite(parent, SWT.NULL);
+ GridLayout layout=new GridLayout();
+ layout.numColumns=3;
+ layout.marginHeight=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
+ layout.marginWidth=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
+ layout.verticalSpacing=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
+ layout.horizontalSpacing=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
+ group.setLayout(layout);
+ GridData gd=new GridData();
+ gd.horizontalAlignment=GridData.FILL;
+ group.setLayoutData(gd);
+
+ keyGenerateDSA=new Button(group, SWT.NULL);
+ keyGenerateDSA.setText(Messages.CVSSSH2PreferencePage_131);
+ gd=new GridData();
+ gd.horizontalSpan=1;
+ keyGenerateDSA.setLayoutData(gd);
+
+ keyGenerateRSA=new Button(group, SWT.NULL);
+ keyGenerateRSA.setText(Messages.CVSSSH2PreferencePage_132);
+ gd=new GridData();
+ gd.horizontalSpan=1;
+ keyGenerateRSA.setLayoutData(gd);
+
+ keyLoad=new Button(group, SWT.NULL);
+ keyLoad.setText(Messages.CVSSSH2PreferencePage_128);
+ gd=new GridData();
+ gd.horizontalSpan=1;
+ keyLoad.setLayoutData(gd);
+
+ publicKeylabel=new Label(group, SWT.NONE);
+ publicKeylabel.setText(Messages.CVSSSH2PreferencePage_39);
+ gd=new GridData();
+ gd.horizontalSpan=columnSpan;
+ publicKeylabel.setLayoutData(gd);
+
+ publicKeyText=new Text(group, SWT.MULTI|SWT.BORDER|SWT.V_SCROLL|SWT.WRAP|SWT.LEFT_TO_RIGHT);
+ publicKeyText.setText(""); //$NON-NLS-1$
+ publicKeyText.setEditable(false);
+ gd=new GridData();
+ gd.horizontalSpan=columnSpan;
+ gd.horizontalAlignment=GridData.FILL;
+ gd.verticalAlignment=GridData.FILL;
+ gd.grabExcessHorizontalSpace=true;
+ gd.grabExcessVerticalSpace=true;
+ publicKeyText.setLayoutData(gd);
+
+ keyFingerPrintLabel=new Label(group, SWT.NONE);
+ keyFingerPrintLabel.setText(Messages.CVSSSH2PreferencePage_41);
+ keyFingerPrintText=new Text(group, SWT.SINGLE|SWT.BORDER|SWT.LEFT_TO_RIGHT);
+ keyFingerPrintText.setFont(group.getFont());
+ keyFingerPrintText.setEditable(false);
+ gd=new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan=2;
+ keyFingerPrintText.setLayoutData(gd);
+
+ keyCommentLabel=new Label(group, SWT.NONE);
+ keyCommentLabel.setText(Messages.CVSSSH2PreferencePage_42);
+ keyCommentText=new Text(group, SWT.SINGLE|SWT.BORDER);
+ keyCommentText.setFont(group.getFont());
+ gd=new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan=2;
+ keyCommentText.setLayoutData(gd);
keyCommentText.addModifyListener(e -> {
- if(kpair==null)
- return;
- try{
- ByteArrayOutputStream out=new ByteArrayOutputStream();
- kpairComment = keyCommentText.getText();
- kpair.writePublicKey(out, kpairComment);
- out.close();
- publicKeyText.setText(out.toString());
- }
- catch(IOException ee){
- // Ignore
- }
+ if(kpair==null)
+ return;
+ try{
+ ByteArrayOutputStream out=new ByteArrayOutputStream();
+ kpairComment = keyCommentText.getText();
+ kpair.writePublicKey(out, kpairComment);
+ out.close();
+ publicKeyText.setText(out.toString());
+ }
+ catch(IOException ee){
+ // Ignore
+ }
});
- keyPassphrase1Label=new Label(group, SWT.NONE);
- keyPassphrase1Label.setText(Messages.CVSSSH2PreferencePage_43);
- keyPassphrase1Text=new Text(group, SWT.SINGLE|SWT.BORDER);
- keyPassphrase1Text.setFont(group.getFont());
- keyPassphrase1Text.setEchoChar('*');
- gd=new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan=2;
- keyPassphrase1Text.setLayoutData(gd);
-
- keyPassphrase2Label=new Label(group, SWT.NONE);
- keyPassphrase2Label.setText(Messages.CVSSSH2PreferencePage_44);
- keyPassphrase2Text=new Text(group, SWT.SINGLE|SWT.BORDER);
- keyPassphrase2Text.setFont(group.getFont());
- keyPassphrase2Text.setEchoChar('*');
- gd=new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan=2;
- keyPassphrase2Text.setLayoutData(gd);
+ keyPassphrase1Label=new Label(group, SWT.NONE);
+ keyPassphrase1Label.setText(Messages.CVSSSH2PreferencePage_43);
+ keyPassphrase1Text=new Text(group, SWT.SINGLE|SWT.BORDER);
+ keyPassphrase1Text.setFont(group.getFont());
+ keyPassphrase1Text.setEchoChar('*');
+ gd=new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan=2;
+ keyPassphrase1Text.setLayoutData(gd);
+
+ keyPassphrase2Label=new Label(group, SWT.NONE);
+ keyPassphrase2Label.setText(Messages.CVSSSH2PreferencePage_44);
+ keyPassphrase2Text=new Text(group, SWT.SINGLE|SWT.BORDER);
+ keyPassphrase2Text.setFont(group.getFont());
+ keyPassphrase2Text.setEchoChar('*');
+ gd=new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan=2;
+ keyPassphrase2Text.setLayoutData(gd);
keyPassphrase1Text.addModifyListener(e -> {
- String pass1=keyPassphrase1Text.getText();
- String pass2=keyPassphrase2Text.getText();
- if(kpair!=null&&pass1.equals(pass2)){
- saveKeyPair.setEnabled(true);
- }
- else{
- saveKeyPair.setEnabled(false);
- }
- if(pass2.length()==0){
- setErrorMessage(null);
- return;
- }
- if(pass1.equals(pass2)){
- setErrorMessage(null);
- }
- else{
- setErrorMessage(Messages.CVSSSH2PreferencePage_48);
- }
+ String pass1=keyPassphrase1Text.getText();
+ String pass2=keyPassphrase2Text.getText();
+ if(kpair!=null&&pass1.equals(pass2)){
+ saveKeyPair.setEnabled(true);
+ }
+ else{
+ saveKeyPair.setEnabled(false);
+ }
+ if(pass2.length()==0){
+ setErrorMessage(null);
+ return;
+ }
+ if(pass1.equals(pass2)){
+ setErrorMessage(null);
+ }
+ else{
+ setErrorMessage(Messages.CVSSSH2PreferencePage_48);
+ }
});
keyPassphrase2Text.addModifyListener(e -> {
- String pass1=keyPassphrase1Text.getText();
- String pass2=keyPassphrase2Text.getText();
- if(kpair!=null&&pass1.equals(pass2)){
- saveKeyPair.setEnabled(true);
- }
- else{
- saveKeyPair.setEnabled(false);
- }
- if(pass2.length()<pass1.length()){
- if(pass1.startsWith(pass2)){
- setErrorMessage(null);
- }
- else{
- setErrorMessage(Messages.CVSSSH2PreferencePage_48);
- }
- return;
- }
- if(pass1.equals(pass2)){
- setErrorMessage(null);
- }
- else{
- setErrorMessage(Messages.CVSSSH2PreferencePage_48);
- }
+ String pass1=keyPassphrase1Text.getText();
+ String pass2=keyPassphrase2Text.getText();
+ if(kpair!=null&&pass1.equals(pass2)){
+ saveKeyPair.setEnabled(true);
+ }
+ else{
+ saveKeyPair.setEnabled(false);
+ }
+ if(pass2.length()<pass1.length()){
+ if(pass1.startsWith(pass2)){
+ setErrorMessage(null);
+ }
+ else{
+ setErrorMessage(Messages.CVSSSH2PreferencePage_48);
+ }
+ return;
+ }
+ if(pass1.equals(pass2)){
+ setErrorMessage(null);
+ }
+ else{
+ setErrorMessage(Messages.CVSSSH2PreferencePage_48);
+ }
});
- keyPassphrase2Text.addFocusListener(new FocusListener(){
- @Override
- public void focusGained(FocusEvent e){
- String pass1=keyPassphrase1Text.getText();
- String pass2=keyPassphrase2Text.getText();
- if(pass2.length()<pass1.length()){
- if(pass1.startsWith(pass2)){
- setErrorMessage(null);
- }
- else{
- setErrorMessage(Messages.CVSSSH2PreferencePage_48);
- }
- return;
- }
- if(pass1.equals(pass2)){
- setErrorMessage(null);
- }
- else{
- setErrorMessage(Messages.CVSSSH2PreferencePage_48);
- }
- }
-
- @Override
- public void focusLost(FocusEvent e){
- String pass1=keyPassphrase1Text.getText();
- String pass2=keyPassphrase2Text.getText();
- if(pass1.equals(pass2)){
- setErrorMessage(null);
- }
- else{
- setErrorMessage(Messages.CVSSSH2PreferencePage_48);
- }
- }
- });
-
- Composite buttons=new Composite(group, SWT.NONE);
- layout=new GridLayout(2, true);
- layout.marginWidth=0;
- layout.marginHeight=0;
- layout.horizontalSpacing=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
- buttons.setLayout(layout);
- gd=new GridData(GridData.HORIZONTAL_ALIGN_END);
- gd.horizontalSpan=columnSpan;
- buttons.setLayoutData(gd);
-
- keyExport=new Button(buttons, SWT.NULL);
- keyExport.setText(Messages.CVSSSH2PreferencePage_105);
- gd=new GridData(GridData.FILL_BOTH);
- keyExport.setLayoutData(gd);
-
- saveKeyPair=new Button(buttons, SWT.NULL);
- saveKeyPair.setText(Messages.CVSSSH2PreferencePage_45);
- gd=new GridData(GridData.FILL_BOTH);
- saveKeyPair.setLayoutData(gd);
-
- SelectionAdapter keygenadapter=new SelectionAdapter(){
- @Override
- public void widgetSelected(SelectionEvent e){
- boolean ok=true;
- String _type=""; //$NON-NLS-1$
-
- try{
- int type=0;
- if(e.widget==keyGenerateDSA){
- type=KeyPair.DSA;
- _type=IConstants.DSA;
- }
- else if(e.widget==keyGenerateRSA){
- type=KeyPair.RSA;
- _type=IConstants.RSA;
- }
- else{
- return;
- }
-
- final KeyPair[] _kpair=new KeyPair[1];
- final int __type=type;
- final JSchException[] _e=new JSchException[1];
+ keyPassphrase2Text.addFocusListener(new FocusListener(){
+ @Override
+ public void focusGained(FocusEvent e){
+ String pass1=keyPassphrase1Text.getText();
+ String pass2=keyPassphrase2Text.getText();
+ if(pass2.length()<pass1.length()){
+ if(pass1.startsWith(pass2)){
+ setErrorMessage(null);
+ }
+ else{
+ setErrorMessage(Messages.CVSSSH2PreferencePage_48);
+ }
+ return;
+ }
+ if(pass1.equals(pass2)){
+ setErrorMessage(null);
+ }
+ else{
+ setErrorMessage(Messages.CVSSSH2PreferencePage_48);
+ }
+ }
+
+ @Override
+ public void focusLost(FocusEvent e){
+ String pass1=keyPassphrase1Text.getText();
+ String pass2=keyPassphrase2Text.getText();
+ if(pass1.equals(pass2)){
+ setErrorMessage(null);
+ }
+ else{
+ setErrorMessage(Messages.CVSSSH2PreferencePage_48);
+ }
+ }
+ });
+
+ Composite buttons=new Composite(group, SWT.NONE);
+ layout=new GridLayout(2, true);
+ layout.marginWidth=0;
+ layout.marginHeight=0;
+ layout.horizontalSpacing=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
+ buttons.setLayout(layout);
+ gd=new GridData(GridData.HORIZONTAL_ALIGN_END);
+ gd.horizontalSpan=columnSpan;
+ buttons.setLayoutData(gd);
+
+ keyExport=new Button(buttons, SWT.NULL);
+ keyExport.setText(Messages.CVSSSH2PreferencePage_105);
+ gd=new GridData(GridData.FILL_BOTH);
+ keyExport.setLayoutData(gd);
+
+ saveKeyPair=new Button(buttons, SWT.NULL);
+ saveKeyPair.setText(Messages.CVSSSH2PreferencePage_45);
+ gd=new GridData(GridData.FILL_BOTH);
+ saveKeyPair.setLayoutData(gd);
+
+ SelectionAdapter keygenadapter=new SelectionAdapter(){
+ @Override
+ public void widgetSelected(SelectionEvent e){
+ boolean ok=true;
+ String _type=""; //$NON-NLS-1$
+
+ try{
+ int type=0;
+ if(e.widget==keyGenerateDSA){
+ type=KeyPair.DSA;
+ _type=IConstants.DSA;
+ }
+ else if(e.widget==keyGenerateRSA){
+ type=KeyPair.RSA;
+ _type=IConstants.RSA;
+ }
+ else{
+ return;
+ }
+
+ final KeyPair[] _kpair=new KeyPair[1];
+ final int __type=type;
+ final JSchException[] _e=new JSchException[1];
BusyIndicator.showWhile(getShell().getDisplay(), () -> {
try {
_kpair[0] = KeyPair.genKeyPair(getJSch(), __type);
@@ -503,148 +503,148 @@ protected Control createContents(Composite parent){
_e[0] = e1;
}
});
- if(_e[0]!=null){
- throw _e[0];
- }
- kpair=_kpair[0];
-
- ByteArrayOutputStream out=new ByteArrayOutputStream();
- kpairComment=_type+"-1024"; //$NON-NLS-1$
- kpair.writePublicKey(out, kpairComment);
- out.close();
- publicKeyText.setText(out.toString());
- keyFingerPrintText.setText(kpair.getFingerPrint());
- keyCommentText.setText(kpairComment);
- keyPassphrase1Text.setText(""); //$NON-NLS-1$
- keyPassphrase2Text.setText(""); //$NON-NLS-1$
- updateControls();
- }
- catch(IOException ee){
- ok=false;
- }
- catch(JSchException ee){
- ok=false;
- }
- if(!ok){
- MessageDialog.openError(getShell(),
- Messages.CVSSSH2PreferencePage_error,
- Messages.CVSSSH2PreferencePage_47);
- }
- }
- };
- keyGenerateDSA.addSelectionListener(keygenadapter);
- keyGenerateRSA.addSelectionListener(keygenadapter);
-
- keyLoad.addSelectionListener(new SelectionAdapter(){
- @Override
- public void widgetSelected(SelectionEvent e){
- boolean ok=true;
- String home=ssh2HomeText.getText();
- FileDialog fd=new FileDialog(getShell(), SWT.OPEN);
- fd.setFilterPath(home);
- Object o=fd.open();
- if(o==null){ // cancel
- return;
- }
- String pkey=fd.getFileName();
- String pkeyab=(new File(fd.getFilterPath(), pkey)).getAbsolutePath();
- try{
- KeyPair _kpair=KeyPair.load(getJSch(), pkeyab);
- PassphrasePrompt prompt=null;
- while(_kpair.isEncrypted()){
- if(prompt==null){
- prompt=new PassphrasePrompt(NLS.bind(
- Messages.CVSSSH2PreferencePage_126, new String[] {pkey}));
- }
- Display.getDefault().syncExec(prompt);
- String passphrase=prompt.getPassphrase();
- if(passphrase==null)
- break;
- if(_kpair.decrypt(passphrase)){
- break;
- }
- MessageDialog.openError(getShell(),
- Messages.CVSSSH2PreferencePage_error, NLS.bind(
- Messages.CVSSSH2PreferencePage_129, new String[] {pkey}));
- }
- if(_kpair.isEncrypted()){
- return;
- }
- kpair=_kpair;
- String _type=(kpair.getKeyType()==KeyPair.DSA) ? IConstants.DSA
- : IConstants.RSA;
- kpairComment=_type+"-1024"; //$NON-NLS-1$
-
- // TODO Bug 351094 The comment should be from kpair object,
- // but the JSch API does not provided such a method.
- // In the version 0.1.45, JSch will support such a method,
- // and the following code should be replaced with it at that time.
- java.io.FileInputStream fis=null;
- try{
- java.io.File f=new java.io.File(pkeyab+".pub"); //$NON-NLS-1$
- int i=0;
- fis=new java.io.FileInputStream(f);
- byte[] buf=new byte[(int)f.length()];
- while(i<buf.length){
- int j=fis.read(buf, i, buf.length-i);
- if(j<=0)
- break;
- i+=j;
- }
- String pubkey=new String(buf);
- if(pubkey.indexOf(' ')>0
- &&pubkey.indexOf(' ', pubkey.indexOf(' ')+1)>0){
- int j=pubkey.indexOf(' ', pubkey.indexOf(' ')+1)+1;
- kpairComment=pubkey.substring(j);
- if(kpairComment.indexOf('\n')>0){
- kpairComment=kpairComment.substring(0,
- kpairComment.indexOf('\n'));
- }
- }
- }
- catch(IOException ioe){
- // ignore if public-key does not exist.
- }
- finally{
- if(fis!=null)
- fis.close();
- }
-
- ByteArrayOutputStream out=new ByteArrayOutputStream();
-
- kpair.writePublicKey(out, kpairComment);
- out.close();
- publicKeyText.setText(out.toString());
- keyFingerPrintText.setText(kpair.getFingerPrint());
- keyCommentText.setText(kpairComment);
- keyPassphrase1Text.setText(""); //$NON-NLS-1$
- keyPassphrase2Text.setText(""); //$NON-NLS-1$
- updateControls();
- }
- catch(IOException ee){
- ok=false;
- }
- catch(JSchException ee){
- ok=false;
- }
- if(!ok){
- MessageDialog.openError(getShell(),
- Messages.CVSSSH2PreferencePage_error,
- Messages.CVSSSH2PreferencePage_130);
- }
- }
- });
-
- keyExport.addSelectionListener(new SelectionAdapter(){
- @Override
- public void widgetSelected(SelectionEvent e){
- if(kpair==null)
- return;
+ if(_e[0]!=null){
+ throw _e[0];
+ }
+ kpair=_kpair[0];
+
+ ByteArrayOutputStream out=new ByteArrayOutputStream();
+ kpairComment=_type+"-1024"; //$NON-NLS-1$
+ kpair.writePublicKey(out, kpairComment);
+ out.close();
+ publicKeyText.setText(out.toString());
+ keyFingerPrintText.setText(kpair.getFingerPrint());
+ keyCommentText.setText(kpairComment);
+ keyPassphrase1Text.setText(""); //$NON-NLS-1$
+ keyPassphrase2Text.setText(""); //$NON-NLS-1$
+ updateControls();
+ }
+ catch(IOException ee){
+ ok=false;
+ }
+ catch(JSchException ee){
+ ok=false;
+ }
+ if(!ok){
+ MessageDialog.openError(getShell(),
+ Messages.CVSSSH2PreferencePage_error,
+ Messages.CVSSSH2PreferencePage_47);
+ }
+ }
+ };
+ keyGenerateDSA.addSelectionListener(keygenadapter);
+ keyGenerateRSA.addSelectionListener(keygenadapter);
+
+ keyLoad.addSelectionListener(new SelectionAdapter(){
+ @Override
+ public void widgetSelected(SelectionEvent e){
+ boolean ok=true;
+ String home=ssh2HomeText.getText();
+ FileDialog fd=new FileDialog(getShell(), SWT.OPEN);
+ fd.setFilterPath(home);
+ Object o=fd.open();
+ if(o==null){ // cancel
+ return;
+ }
+ String pkey=fd.getFileName();
+ String pkeyab=(new File(fd.getFilterPath(), pkey)).getAbsolutePath();
+ try{
+ KeyPair _kpair=KeyPair.load(getJSch(), pkeyab);
+ PassphrasePrompt prompt=null;
+ while(_kpair.isEncrypted()){
+ if(prompt==null){
+ prompt=new PassphrasePrompt(NLS.bind(
+ Messages.CVSSSH2PreferencePage_126, new String[] {pkey}));
+ }
+ Display.getDefault().syncExec(prompt);
+ String passphrase=prompt.getPassphrase();
+ if(passphrase==null)
+ break;
+ if(_kpair.decrypt(passphrase)){
+ break;
+ }
+ MessageDialog.openError(getShell(),
+ Messages.CVSSSH2PreferencePage_error, NLS.bind(
+ Messages.CVSSSH2PreferencePage_129, new String[] {pkey}));
+ }
+ if(_kpair.isEncrypted()){
+ return;
+ }
+ kpair=_kpair;
+ String _type=(kpair.getKeyType()==KeyPair.DSA) ? IConstants.DSA
+ : IConstants.RSA;
+ kpairComment=_type+"-1024"; //$NON-NLS-1$
+
+ // TODO Bug 351094 The comment should be from kpair object,
+ // but the JSch API does not provided such a method.
+ // In the version 0.1.45, JSch will support such a method,
+ // and the following code should be replaced with it at that time.
+ java.io.FileInputStream fis=null;
+ try{
+ java.io.File f=new java.io.File(pkeyab+".pub"); //$NON-NLS-1$
+ int i=0;
+ fis=new java.io.FileInputStream(f);
+ byte[] buf=new byte[(int)f.length()];
+ while(i<buf.length){
+ int j=fis.read(buf, i, buf.length-i);
+ if(j<=0)
+ break;
+ i+=j;
+ }
+ String pubkey=new String(buf);
+ if(pubkey.indexOf(' ')>0
+ &&pubkey.indexOf(' ', pubkey.indexOf(' ')+1)>0){
+ int j=pubkey.indexOf(' ', pubkey.indexOf(' ')+1)+1;
+ kpairComment=pubkey.substring(j);
+ if(kpairComment.indexOf('\n')>0){
+ kpairComment=kpairComment.substring(0,
+ kpairComment.indexOf('\n'));
+ }
+ }
+ }
+ catch(IOException ioe){
+ // ignore if public-key does not exist.
+ }
+ finally{
+ if(fis!=null)
+ fis.close();
+ }
+
+ ByteArrayOutputStream out=new ByteArrayOutputStream();
+
+ kpair.writePublicKey(out, kpairComment);
+ out.close();
+ publicKeyText.setText(out.toString());
+ keyFingerPrintText.setText(kpair.getFingerPrint());
+ keyCommentText.setText(kpairComment);
+ keyPassphrase1Text.setText(""); //$NON-NLS-1$
+ keyPassphrase2Text.setText(""); //$NON-NLS-1$
+ updateControls();
+ }
+ catch(IOException ee){
+ ok=false;
+ }
+ catch(JSchException ee){
+ ok=false;
+ }
+ if(!ok){
+ MessageDialog.openError(getShell(),
+ Messages.CVSSSH2PreferencePage_error,
+ Messages.CVSSSH2PreferencePage_130);
+ }
+ }
+ });
+
+ keyExport.addSelectionListener(new SelectionAdapter(){
+ @Override
+ public void widgetSelected(SelectionEvent e){
+ if(kpair==null)
+ return;
- setErrorMessage(null);
+ setErrorMessage(null);
- final String[] target=new String[1];
- final String title=Messages.CVSSSH2PreferencePage_106;
+ final String[] target=new String[1];
+ final String title=Messages.CVSSSH2PreferencePage_106;
final String message = Messages.CVSSSH2PreferencePage_107;
Display.getDefault().syncExec(() -> {
Display display = Display.getCurrent();
@@ -657,1043 +657,1043 @@ protected Control createContents(Composite parent){
if (target[0] == null) {
return;
}
- String user=""; //$NON-NLS-1$
- String host=""; //$NON-NLS-1$
- int port=22;
-
- if(target[0].indexOf('@')>0){
- user=target[0].substring(0, target[0].indexOf('@'));
- host=target[0].substring(target[0].indexOf('@')+1);
- }
- if(host.indexOf(':')>0){
- try{
- port=Integer.parseInt(host.substring(host.indexOf(':')+1));
- }
- catch(NumberFormatException ee){
- port=-1;
- }
- host=host.substring(0, host.indexOf(':'));
- }
-
- if(user.length()==0||host.length()==0||port==-1){
- setErrorMessage(NLS.bind(Messages.CVSSSH2PreferencePage_108,
- new String[] {target[0]}));
- return;
- }
-
- String options=""; //$NON-NLS-1$
- try{
- ByteArrayOutputStream bos=new ByteArrayOutputStream();
- if(options.length()!=0){
- try{
- bos.write((options+" ").getBytes());} //$NON-NLS-1$
- catch(IOException eeee){
- // Ignore
- }
- }
- kpair.writePublicKey(bos, kpairComment);
- bos.close();
- export_via_sftp(user, host, port, /* ".ssh/authorized_keys", //$NON-NLS-1$ */
- bos.toByteArray());
- }
- catch(IOException ee){
- // Ignore
- }
- catch(JSchException ee){
- setErrorMessage(Messages.CVSSSH2PreferencePage_111);
- }
- }
- });
-
- saveKeyPair.addSelectionListener(new SelectionAdapter(){
- @Override
+ String user=""; //$NON-NLS-1$
+ String host=""; //$NON-NLS-1$
+ int port=22;
+
+ if(target[0].indexOf('@')>0){
+ user=target[0].substring(0, target[0].indexOf('@'));
+ host=target[0].substring(target[0].indexOf('@')+1);
+ }
+ if(host.indexOf(':')>0){
+ try{
+ port=Integer.parseInt(host.substring(host.indexOf(':')+1));
+ }
+ catch(NumberFormatException ee){
+ port=-1;
+ }
+ host=host.substring(0, host.indexOf(':'));
+ }
+
+ if(user.length()==0||host.length()==0||port==-1){
+ setErrorMessage(NLS.bind(Messages.CVSSSH2PreferencePage_108,
+ new String[] {target[0]}));
+ return;
+ }
+
+ String options=""; //$NON-NLS-1$
+ try{
+ ByteArrayOutputStream bos=new ByteArrayOutputStream();
+ if(options.length()!=0){
+ try{
+ bos.write((options+" ").getBytes());} //$NON-NLS-1$
+ catch(IOException eeee){
+ // Ignore
+ }
+ }
+ kpair.writePublicKey(bos, kpairComment);
+ bos.close();
+ export_via_sftp(user, host, port, /* ".ssh/authorized_keys", //$NON-NLS-1$ */
+ bos.toByteArray());
+ }
+ catch(IOException ee){
+ // Ignore
+ }
+ catch(JSchException ee){
+ setErrorMessage(Messages.CVSSSH2PreferencePage_111);
+ }
+ }
+ });
+
+ saveKeyPair.addSelectionListener(new SelectionAdapter(){
+ @Override
public void widgetSelected(SelectionEvent e){
- if(kpair==null)
- return;
-
- String pass=keyPassphrase1Text.getText();
- /*
- * if(!pass.equals(keyPassphrase2Text.getText())){
- * setErrorMessage(Policy.bind("CVSSSH2PreferencePage.48"));
- * //$NON-NLS-1$ return; }
- */
- if(pass.length()==0){
- if(!MessageDialog.openConfirm(getShell(),
- Messages.CVSSSH2PreferencePage_confirmation,
- Messages.CVSSSH2PreferencePage_49)){
- return;
- }
- }
-
- kpair.setPassphrase(pass);
-
- String home=ssh2HomeText.getText();
-
- File _home=new File(home);
-
- if(!_home.exists()){
- if(!MessageDialog.openConfirm(getShell(),
- Messages.CVSSSH2PreferencePage_confirmation, NLS.bind(
- Messages.CVSSSH2PreferencePage_50, new String[] {home}))){
- return;
- }
- if(!_home.mkdirs()){
- setErrorMessage(Messages.CVSSSH2PreferencePage_100+home);
- return;
- }
- }
-
- FileDialog fd=new FileDialog(getShell(), SWT.SAVE);
- fd.setFilterPath(home);
- String file=(kpair.getKeyType()==KeyPair.RSA) ? "id_rsa" : "id_dsa"; //$NON-NLS-1$ //$NON-NLS-2$
- fd.setFileName(file);
- file=fd.open();
- if(file==null){ // cancel
- return;
- }
-
- if(new File(file).exists()){
- if(!MessageDialog.openConfirm(getShell(),
- Messages.CVSSSH2PreferencePage_confirmation, //
- NLS.bind(Messages.CVSSSH2PreferencePage_53, new String[] {file}))){
- return;
- }
- }
-
- boolean ok=true;
- try{
- kpair.writePrivateKey(file);
- kpair.writePublicKey(file+".pub", kpairComment); //$NON-NLS-1$
- }
- catch(Exception ee){
- ok=false;
- }
-
- if(ok){
- MessageDialog.openInformation(getShell(),
- Messages.CVSSSH2PreferencePage_information,
- Messages.CVSSSH2PreferencePage_55+"\n"+ //$NON-NLS-1$
- Messages.CVSSSH2PreferencePage_57+file+"\n"+ //$NON-NLS-1$
- Messages.CVSSSH2PreferencePage_59+file+".pub"); //$NON-NLS-1$
- }
- else{
- return;
- }
-
- // The generated key should be added to privateKeyText.
-
- String dir=fd.getFilterPath();
- File mypkey=new java.io.File(dir, fd.getFileName());
- String pkeys=privateKeyText.getText();
-
- // Check if the generated key has been included in pkeys?
- String[] pkeysa=pkeys.split(","); //$NON-NLS-1$
- for(int i=0; i<pkeysa.length; i++){
- File pkey=new java.io.File(pkeysa[i]);
- if(!pkey.isAbsolute()){
- pkey=new java.io.File(home, pkeysa[i]);
- }
- if(pkey.equals(mypkey))
- return;
- }
-
- if(dir.equals(home)){
- dir="";} //$NON-NLS-1$
- else{
- dir+=java.io.File.separator;
- }
- if(pkeys.length()>0)
- pkeys+=","; //$NON-NLS-1$
- pkeys=pkeys+dir+fd.getFileName();
- privateKeyText.setText(pkeys);
- }
- });
-
- return group;
- }
-
- private TableViewer viewer;
- private Button removeHostKeyButton;
-
- Table preferedAuthMethodTable;
- Table preferedSSHAgentTable;
- Table preferedKeyExchangeMethodTable;
- Table preferedMACMethodTable;
-
- Button up;
- Button down;
- Button kex_up;
- Button kex_down;
- Button mac_up;
- Button mac_down;
-
- class TableLabelProvider extends LabelProvider implements ITableLabelProvider{
- @Override
- public String getColumnText(Object element, int columnIndex){
- HostKey entry=(HostKey)element;
- switch(columnIndex){
- case 0:
- return entry.getHost();
- case 1:
- return entry.getType();
- case 2:
- return entry.getFingerPrint(getJSch());
- default:
- return null;
- }
- }
-
- @Override
- public Image getColumnImage(Object element, int columnIndex){
- return null;
- }
- }
-
- private Control createHostKeyManagementPage(Composite parent){
- Composite group=new Composite(parent, SWT.NULL);
- 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;
- group.setLayout(layout);
- GridData gd=new GridData();
- gd.horizontalAlignment=GridData.FILL;
- gd.verticalAlignment=GridData.FILL;
- group.setLayoutData(gd);
-
- Label label=new Label(group, SWT.NONE);
- label.setText(Messages.CVSSSH2PreferencePage_139);
- gd=new GridData();
- gd.horizontalSpan=2;
- label.setLayoutData(gd);
-
- viewer=new TableViewer(group, SWT.MULTI|SWT.FULL_SELECTION|SWT.H_SCROLL
- |SWT.V_SCROLL|SWT.BORDER);
- Table table=viewer.getTable();
- new TableEditor(table);
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
- gd=new GridData(GridData.FILL_BOTH);
- gd.widthHint=convertWidthInCharsToPixels(30);
- /*
- * The hardcoded hint does not look elegant, but in reality it does not make
- * anything bound to this 100-pixel value, because in any case the tree on
- * the left is taller and that's what really determines the height.
- */
- gd.heightHint=100;
- table.setLayoutData(gd);
+ if(kpair==null)
+ return;
+
+ String pass=keyPassphrase1Text.getText();
+ /*
+ * if(!pass.equals(keyPassphrase2Text.getText())){
+ * setErrorMessage(Policy.bind("CVSSSH2PreferencePage.48"));
+ * //$NON-NLS-1$ return; }
+ */
+ if(pass.length()==0){
+ if(!MessageDialog.openConfirm(getShell(),
+ Messages.CVSSSH2PreferencePage_confirmation,
+ Messages.CVSSSH2PreferencePage_49)){
+ return;
+ }
+ }
+
+ kpair.setPassphrase(pass);
+
+ String home=ssh2HomeText.getText();
+
+ File _home=new File(home);
+
+ if(!_home.exists()){
+ if(!MessageDialog.openConfirm(getShell(),
+ Messages.CVSSSH2PreferencePage_confirmation, NLS.bind(
+ Messages.CVSSSH2PreferencePage_50, new String[] {home}))){
+ return;
+ }
+ if(!_home.mkdirs()){
+ setErrorMessage(Messages.CVSSSH2PreferencePage_100+home);
+ return;
+ }
+ }
+
+ FileDialog fd=new FileDialog(getShell(), SWT.SAVE);
+ fd.setFilterPath(home);
+ String file=(kpair.getKeyType()==KeyPair.RSA) ? "id_rsa" : "id_dsa"; //$NON-NLS-1$ //$NON-NLS-2$
+ fd.setFileName(file);
+ file=fd.open();
+ if(file==null){ // cancel
+ return;
+ }
+
+ if(new File(file).exists()){
+ if(!MessageDialog.openConfirm(getShell(),
+ Messages.CVSSSH2PreferencePage_confirmation, //
+ NLS.bind(Messages.CVSSSH2PreferencePage_53, new String[] {file}))){
+ return;
+ }
+ }
+
+ boolean ok=true;
+ try{
+ kpair.writePrivateKey(file);
+ kpair.writePublicKey(file+".pub", kpairComment); //$NON-NLS-1$
+ }
+ catch(Exception ee){
+ ok=false;
+ }
+
+ if(ok){
+ MessageDialog.openInformation(getShell(),
+ Messages.CVSSSH2PreferencePage_information,
+ Messages.CVSSSH2PreferencePage_55+"\n"+ //$NON-NLS-1$
+ Messages.CVSSSH2PreferencePage_57+file+"\n"+ //$NON-NLS-1$
+ Messages.CVSSSH2PreferencePage_59+file+".pub"); //$NON-NLS-1$
+ }
+ else{
+ return;
+ }
+
+ // The generated key should be added to privateKeyText.
+
+ String dir=fd.getFilterPath();
+ File mypkey=new java.io.File(dir, fd.getFileName());
+ String pkeys=privateKeyText.getText();
+
+ // Check if the generated key has been included in pkeys?
+ String[] pkeysa=pkeys.split(","); //$NON-NLS-1$
+ for(int i=0; i<pkeysa.length; i++){
+ File pkey=new java.io.File(pkeysa[i]);
+ if(!pkey.isAbsolute()){
+ pkey=new java.io.File(home, pkeysa[i]);
+ }
+ if(pkey.equals(mypkey))
+ return;
+ }
+
+ if(dir.equals(home)){
+ dir="";} //$NON-NLS-1$
+ else{
+ dir+=java.io.File.separator;
+ }
+ if(pkeys.length()>0)
+ pkeys+=","; //$NON-NLS-1$
+ pkeys=pkeys+dir+fd.getFileName();
+ privateKeyText.setText(pkeys);
+ }
+ });
+
+ return group;
+ }
+
+ private TableViewer viewer;
+ private Button removeHostKeyButton;
+
+ Table preferedAuthMethodTable;
+ Table preferedSSHAgentTable;
+ Table preferedKeyExchangeMethodTable;
+ Table preferedMACMethodTable;
+
+ Button up;
+ Button down;
+ Button kex_up;
+ Button kex_down;
+ Button mac_up;
+ Button mac_down;
+
+ class TableLabelProvider extends LabelProvider implements ITableLabelProvider{
+ @Override
+ public String getColumnText(Object element, int columnIndex){
+ HostKey entry=(HostKey)element;
+ switch(columnIndex){
+ case 0:
+ return entry.getHost();
+ case 1:
+ return entry.getType();
+ case 2:
+ return entry.getFingerPrint(getJSch());
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public Image getColumnImage(Object element, int columnIndex){
+ return null;
+ }
+ }
+
+ private Control createHostKeyManagementPage(Composite parent){
+ Composite group=new Composite(parent, SWT.NULL);
+ 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;
+ group.setLayout(layout);
+ GridData gd=new GridData();
+ gd.horizontalAlignment=GridData.FILL;
+ gd.verticalAlignment=GridData.FILL;
+ group.setLayoutData(gd);
+
+ Label label=new Label(group, SWT.NONE);
+ label.setText(Messages.CVSSSH2PreferencePage_139);
+ gd=new GridData();
+ gd.horizontalSpan=2;
+ label.setLayoutData(gd);
+
+ viewer=new TableViewer(group, SWT.MULTI|SWT.FULL_SELECTION|SWT.H_SCROLL
+ |SWT.V_SCROLL|SWT.BORDER);
+ Table table=viewer.getTable();
+ new TableEditor(table);
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+ gd=new GridData(GridData.FILL_BOTH);
+ gd.widthHint=convertWidthInCharsToPixels(30);
+ /*
+ * The hardcoded hint does not look elegant, but in reality it does not make
+ * anything bound to this 100-pixel value, because in any case the tree on
+ * the left is taller and that's what really determines the height.
+ */
+ gd.heightHint=100;
+ table.setLayoutData(gd);
table.addListener(SWT.Selection, e -> handleSelection());
- // Create the table columns
- new TableColumn(table, SWT.NULL);
- new TableColumn(table, SWT.NULL);
- new TableColumn(table, SWT.NULL);
- TableColumn[] columns=table.getColumns();
- columns[0].setText(Messages.CVSSSH2PreferencePage_134);
- columns[1].setText(Messages.CVSSSH2PreferencePage_135);
- columns[2].setText(Messages.CVSSSH2PreferencePage_136);
- viewer.setColumnProperties(new String[] {
- Messages.CVSSSH2PreferencePage_134, //
- Messages.CVSSSH2PreferencePage_135, //
- Messages.CVSSSH2PreferencePage_136});
- viewer.setLabelProvider(new TableLabelProvider());
- viewer.setContentProvider(new IStructuredContentProvider(){
- @Override
- public void dispose(){
- // nothing to do
- }
-
- @Override
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput){
- // nothing to do
- }
-
- @Override
- public Object[] getElements(Object inputElement){
- if(inputElement==null)
- return null;
- return (Object[])inputElement;
- }
- });
- TableLayout tl=new TableLayout();
- tl.addColumnData(new ColumnWeightData(30));
- tl.addColumnData(new ColumnWeightData(20));
- tl.addColumnData(new ColumnWeightData(70));
- table.setLayout(tl);
-
- Composite buttons=new Composite(group, SWT.NULL);
- buttons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
- layout=new GridLayout();
- layout.marginHeight=0;
- layout.marginWidth=0;
- buttons.setLayout(layout);
-
- removeHostKeyButton=new Button(buttons, SWT.PUSH);
- removeHostKeyButton.setText(Messages.CVSSSH2PreferencePage_138);
- int buttonWidth=SWTUtils
- .calculateControlSize(SWTUtils.createDialogPixelConverter(parent),
- new Button[] {removeHostKeyButton});
- removeHostKeyButton.setLayoutData(SWTUtils.createGridData(buttonWidth,
- SWT.DEFAULT, SWT.END, SWT.CENTER, false, false));
- removeHostKeyButton.setEnabled(false);
+ // Create the table columns
+ new TableColumn(table, SWT.NULL);
+ new TableColumn(table, SWT.NULL);
+ new TableColumn(table, SWT.NULL);
+ TableColumn[] columns=table.getColumns();
+ columns[0].setText(Messages.CVSSSH2PreferencePage_134);
+ columns[1].setText(Messages.CVSSSH2PreferencePage_135);
+ columns[2].setText(Messages.CVSSSH2PreferencePage_136);
+ viewer.setColumnProperties(new String[] {
+ Messages.CVSSSH2PreferencePage_134, //
+ Messages.CVSSSH2PreferencePage_135, //
+ Messages.CVSSSH2PreferencePage_136});
+ viewer.setLabelProvider(new TableLabelProvider());
+ viewer.setContentProvider(new IStructuredContentProvider(){
+ @Override
+ public void dispose(){
+ // nothing to do
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput){
+ // nothing to do
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement){
+ if(inputElement==null)
+ return null;
+ return (Object[])inputElement;
+ }
+ });
+ TableLayout tl=new TableLayout();
+ tl.addColumnData(new ColumnWeightData(30));
+ tl.addColumnData(new ColumnWeightData(20));
+ tl.addColumnData(new ColumnWeightData(70));
+ table.setLayout(tl);
+
+ Composite buttons=new Composite(group, SWT.NULL);
+ buttons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+ layout=new GridLayout();
+ layout.marginHeight=0;
+ layout.marginWidth=0;
+ buttons.setLayout(layout);
+
+ removeHostKeyButton=new Button(buttons, SWT.PUSH);
+ removeHostKeyButton.setText(Messages.CVSSSH2PreferencePage_138);
+ int buttonWidth=SWTUtils
+ .calculateControlSize(SWTUtils.createDialogPixelConverter(parent),
+ new Button[] {removeHostKeyButton});
+ removeHostKeyButton.setLayoutData(SWTUtils.createGridData(buttonWidth,
+ SWT.DEFAULT, SWT.END, SWT.CENTER, false, false));
+ removeHostKeyButton.setEnabled(false);
removeHostKeyButton.addListener(SWT.Selection, e -> removeHostKey());
- Dialog.applyDialogFont(parent);
-
- // JSchSession.loadKnownHosts(JSchContext.getDefaultContext().getJSch());
- JSchCorePlugin.getPlugin().loadKnownHosts();
- HostKeyRepository hkr=getJSch().getHostKeyRepository();
- viewer.setInput(hkr.getHostKey());
- handleSelection();
-
- 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(){
-
- @Override
- 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(){
-
- @Override
- 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(){
-
- @Override
- 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$
+ Dialog.applyDialogFont(parent);
+
+ // JSchSession.loadKnownHosts(JSchContext.getDefaultContext().getJSch());
+ JSchCorePlugin.getPlugin().loadKnownHosts();
+ HostKeyRepository hkr=getJSch().getHostKeyRepository();
+ viewer.setInput(hkr.getHostKey());
+ handleSelection();
+
+ 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(){
+
+ @Override
+ 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(){
+
+ @Override
+ 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(){
+
+ @Override
+ 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<String> 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);
- }
- }
- }
-
- private Control createPreferredKeyExchangePage(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_140);
-
- preferedKeyExchangeMethodTable=new Table(root, SWT.CHECK | SWT.BORDER);
- GridData layoutData=new GridData(SWT.FILL, SWT.BEGINNING, true, true);
- layoutData.verticalSpan = 3;
- preferedKeyExchangeMethodTable.setLayoutData(layoutData);
- layoutData.minimumHeight = 150;
- layoutData.minimumWidth = 200;
- populateAuthMethods();
-
- kex_up=new Button(root, SWT.PUSH);
- kex_up.setText(Messages.CVSSSH2PreferencePage_2);
- kex_up.setEnabled(false);
- setButtonLayoutData(kex_up);
-
- kex_down=new Button(root, SWT.PUSH);
- kex_down.setText(Messages.CVSSSH2PreferencePage_3);
- kex_down.setEnabled(false);
- setButtonLayoutData(kex_down);
-
- preferedKeyExchangeMethodTable.addSelectionListener(new SelectionAdapter(){
-
- @Override
- public void widgetSelected(SelectionEvent e){
- boolean anySelected = false;
- for(int i = 0; i < preferedKeyExchangeMethodTable.getItemCount(); i++){
- anySelected |= preferedKeyExchangeMethodTable.getItem(i).getChecked();
- }
-
- if(anySelected){
- setErrorMessage(null);
- setValid(true);
- }
- else{
- setErrorMessage(Messages.CVSSSH2PreferencePage_142);
- setValid(false);
- }
- kex_up.setEnabled(preferedKeyExchangeMethodTable.getSelectionIndex()>0);
- kex_down
- .setEnabled(preferedKeyExchangeMethodTable.getSelectionIndex()<preferedKeyExchangeMethodTable
- .getItemCount()-1);
- }
-
- });
- kex_up.addSelectionListener(new SelectionAdapter(){
-
- @Override
- public void widgetSelected(SelectionEvent e){
- int selectedIndex=preferedKeyExchangeMethodTable.getSelectionIndex();
- if(selectedIndex == 1){ //this is the last possible swap
- kex_up.setEnabled(false);
- }
- kex_down.setEnabled(true);
- TableItem sourceItem = preferedKeyExchangeMethodTable.getItem(selectedIndex);
- TableItem targetItem = preferedKeyExchangeMethodTable.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);
-
- preferedKeyExchangeMethodTable.setSelection(targetItem);
- }
- });
-
- kex_down.addSelectionListener(new SelectionAdapter(){
-
- @Override
- public void widgetSelected(SelectionEvent e){
- int selectedIndex=preferedKeyExchangeMethodTable.getSelectionIndex();
- if(selectedIndex == preferedKeyExchangeMethodTable.getItemCount()-2){ //this is the last possible swap
- kex_down.setEnabled(false);
- }
- kex_up.setEnabled(true);
- TableItem sourceItem = preferedKeyExchangeMethodTable.getItem(selectedIndex);
- TableItem targetItem = preferedKeyExchangeMethodTable.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);
-
- preferedKeyExchangeMethodTable.setSelection(targetItem);
- }
- });
-
- return root;
- }
-
- private void populateKeyExchangeMethods(){
- preferedKeyExchangeMethodTable.removeAll();
- String[] methods = Utils.getEnabledPreferredKEXMethods().split(","); //$NON-NLS-1$
- Set<String> smethods = new HashSet<>(Arrays.asList(methods));
-
- String[] order = Utils.getKEXMethodsOrder().split(","); //$NON-NLS-1$
-
- for(int i=0; i<order.length; i++){
- TableItem tableItem= new TableItem(preferedKeyExchangeMethodTable, SWT.NONE);
- tableItem.setText(0, order[i]);
- if(smethods.contains(order[i])){
- tableItem.setChecked(true);
- }
- }
- }
-
- private Control createPreferredMACPage(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_141);
-
- preferedMACMethodTable=new Table(root, SWT.CHECK | SWT.BORDER);
- GridData layoutData=new GridData(SWT.FILL, SWT.BEGINNING, true, true);
- layoutData.verticalSpan = 3;
- preferedMACMethodTable.setLayoutData(layoutData);
- layoutData.minimumHeight = 150;
- layoutData.minimumWidth = 200;
- populateMACMethods();
-
- mac_up=new Button(root, SWT.PUSH);
- mac_up.setText(Messages.CVSSSH2PreferencePage_2);
- mac_up.setEnabled(false);
- setButtonLayoutData(mac_up);
-
- mac_down=new Button(root, SWT.PUSH);
- mac_down.setText(Messages.CVSSSH2PreferencePage_3);
- mac_down.setEnabled(false);
- setButtonLayoutData(mac_down);
-
- preferedMACMethodTable.addSelectionListener(new SelectionAdapter(){
-
- @Override
- public void widgetSelected(SelectionEvent e){
- boolean anySelected = false;
- for(int i = 0; i < preferedMACMethodTable.getItemCount(); i++){
- anySelected |= preferedMACMethodTable.getItem(i).getChecked();
- }
-
- if(anySelected){
- setErrorMessage(null);
- setValid(true);
- }
- else{
- setErrorMessage(Messages.CVSSSH2PreferencePage_143);
- setValid(false);
- }
- mac_up.setEnabled(preferedMACMethodTable.getSelectionIndex()>0);
- mac_down
- .setEnabled(preferedMACMethodTable.getSelectionIndex()<preferedMACMethodTable
- .getItemCount()-1);
- }
-
- });
- mac_up.addSelectionListener(new SelectionAdapter(){
-
- @Override
- public void widgetSelected(SelectionEvent e){
- int selectedIndex=preferedMACMethodTable.getSelectionIndex();
- if(selectedIndex == 1){ //this is the last possible swap
- mac_up.setEnabled(false);
- }
- mac_down.setEnabled(true);
- TableItem sourceItem = preferedMACMethodTable.getItem(selectedIndex);
- TableItem targetItem = preferedMACMethodTable.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);
-
- preferedMACMethodTable.setSelection(targetItem);
- }
- });
-
- mac_down.addSelectionListener(new SelectionAdapter(){
-
- @Override
- public void widgetSelected(SelectionEvent e){
- int selectedIndex=preferedMACMethodTable.getSelectionIndex();
- if(selectedIndex == preferedMACMethodTable.getItemCount()-2){ //this is the last possible swap
- mac_down.setEnabled(false);
- }
- mac_up.setEnabled(true);
- TableItem sourceItem = preferedMACMethodTable.getItem(selectedIndex);
- TableItem targetItem = preferedMACMethodTable.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);
-
- preferedMACMethodTable.setSelection(targetItem);
- }
- });
-
- return root;
- }
-
- private Control createPreferredSSHAgentPage(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_147);
-
- preferedSSHAgentTable=new Table(root, SWT.CHECK | SWT.BORDER);
- GridData layoutData=new GridData(SWT.FILL, SWT.BEGINNING, true, true);
- layoutData.verticalSpan = 3;
- preferedSSHAgentTable.setLayoutData(layoutData);
- layoutData.minimumHeight = 150;
- layoutData.minimumWidth = 200;
- populateSSHAgents();
- return root;
- }
-
- private void populateSSHAgents(){
- preferedSSHAgentTable.removeAll();
- String[] methods = Utils.getAvailableSSHAgents().split(","); //$NON-NLS-1$
- String[] selected = Utils.getSelectedSSHAgent().split(","); //$NON-NLS-1$
-
- for(int i=0; i<methods.length; i++){
- if(methods[i].length()==0)
- continue;
- TableItem tableItem= new TableItem(preferedSSHAgentTable, SWT.NONE);
- tableItem.setText(0, methods[i]);
- for(int j=0; j<selected.length; j++){
- if(selected[j].equals(methods[i])){
- tableItem.setChecked(true);
- break;
- }
- }
- }
- }
-
- private void populateMACMethods(){
- preferedMACMethodTable.removeAll();
- String[] methods = Utils.getEnabledPreferredMACMethods().split(","); //$NON-NLS-1$
- Set<String> smethods = new HashSet<>(Arrays.asList(methods));
-
- String[] order = Utils.getMACMethodsOrder().split(","); //$NON-NLS-1$
-
- for(int i=0; i<order.length; i++){
- TableItem tableItem= new TableItem(preferedMACMethodTable, SWT.NONE);
- tableItem.setText(0, order[i]);
- if(smethods.contains(order[i])){
- tableItem.setChecked(true);
- }
- }
- }
-
- void handleSelection(){
- boolean empty=viewer.getSelection().isEmpty();
- removeHostKeyButton.setEnabled(!empty);
- }
-
- void removeHostKey(){
- IStructuredSelection selection=viewer.getStructuredSelection();
- HostKeyRepository hkr=getJSch().getHostKeyRepository();
- for(Iterator<?> iterator=selection.iterator(); iterator.hasNext();){
- HostKey hostkey=(HostKey)iterator.next();
- hkr.remove(hostkey.getHost(), hostkey.getType());
- viewer.remove(hostkey);
- }
- }
-
- void export_via_sftp(String user, String host, int port, byte[] pkey) throws JSchException{
- try{
-
- int timeout = 60000;
- IJSchService service = JSchUIPlugin.getPlugin().getJSchService();
- if (service == null) {
- MessageDialog.openInformation(getShell(), Messages.PreferencePage_0, Messages.PreferencePage_1);
- return;
- }
-
- IJSchLocation location=service.getLocation(user, host, port);
- // We hope that prompts for jsch are given by IJSchService, so "null" should be passed.
- Session session = service.createSession(location, null);
- session.setTimeout(timeout);
- try {
- service.connect(session, timeout, new NullProgressMonitor());
- if(session.getServerVersion().indexOf("OpenSSH")==-1){ //$NON-NLS-1$
- setErrorMessage(Messages.CVSSSH2PreferencePage_110);
- return;
- }
- Channel channel=session.openChannel("sftp"); //$NON-NLS-1$
- channel.connect();
- ChannelSftp c=(ChannelSftp)channel;
-
- SftpATTRS attr=null;
-
- try{
- attr=c.stat(".ssh");} //$NON-NLS-1$
- catch(SftpException ee){
- // Ignore
- }
- if(attr==null){
- try{
- c.mkdir(".ssh");} //$NON-NLS-1$
- catch(SftpException ee){
- setErrorMessage(ee.getMessage());
- return;
- }
- }
- try{
- c.cd(".ssh");} //$NON-NLS-1$
- catch(SftpException ee){
- setErrorMessage(ee.getMessage());
- return;
- }
-
- try{
- ByteArrayInputStream bis=new ByteArrayInputStream(pkey);
- c.put(bis, "authorized_keys", null, ChannelSftp.APPEND); //$NON-NLS-1$
- bis.close();
- checkPermission(c, "authorized_keys"); //$NON-NLS-1$
- checkPermission(c, "."); // .ssh //$NON-NLS-1$
- c.cd(".."); //$NON-NLS-1$
- checkPermission(c, "."); // home directory //$NON-NLS-1$
- }
- catch(SftpException ee){
- // setErrorMessage(debug+ee.message);
- }
-
- MessageDialog.openInformation(getShell(),
- Messages.CVSSSH2PreferencePage_information,
- NLS.bind(Messages.CVSSSH2PreferencePage_109, (user
- +"@"+host+(port==22 ? "" : ":"+port)+":~/.ssh/authorized_keys"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-
- c.quit();
- c.disconnect();
- } finally {
- session.disconnect();
- }
- } catch(IOException eee){
- setErrorMessage(eee.toString());
- }
- }
-
- private void checkPermission(ChannelSftp c, String path) throws SftpException{
- SftpATTRS attr=c.stat(path);
- int permissions=attr.getPermissions();
- if((permissions&00022)!=0){
- permissions&=~00022;
- c.chmod(permissions, path);
- }
- }
-
- void updateControls(){
- boolean enable=(kpair!=null);
- publicKeylabel.setEnabled(enable);
- publicKeyText.setEnabled(enable);
- keyFingerPrintLabel.setEnabled(enable);
- keyFingerPrintText.setEnabled(enable);
- keyCommentLabel.setEnabled(enable);
- keyCommentText.setEnabled(enable);
- keyPassphrase1Label.setEnabled(enable);
- keyPassphrase1Text.setEnabled(enable);
- keyPassphrase2Label.setEnabled(enable);
- keyPassphrase2Text.setEnabled(enable);
- keyExport.setEnabled(enable);
- saveKeyPair.setEnabled(enable);
- populateAuthMethods();
- populateKeyExchangeMethods();
- populateMACMethods();
- up.setEnabled(false);
- down.setEnabled(false);
- kex_up.setEnabled(false);
- kex_down.setEnabled(false);
- mac_up.setEnabled(false);
- mac_down.setEnabled(false);
- }
-
- @Override
+ 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);
+ }
+ }
+ }
+
+ private Control createPreferredKeyExchangePage(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_140);
+
+ preferedKeyExchangeMethodTable=new Table(root, SWT.CHECK | SWT.BORDER);
+ GridData layoutData=new GridData(SWT.FILL, SWT.BEGINNING, true, true);
+ layoutData.verticalSpan = 3;
+ preferedKeyExchangeMethodTable.setLayoutData(layoutData);
+ layoutData.minimumHeight = 150;
+ layoutData.minimumWidth = 200;
+ populateAuthMethods();
+
+ kex_up=new Button(root, SWT.PUSH);
+ kex_up.setText(Messages.CVSSSH2PreferencePage_2);
+ kex_up.setEnabled(false);
+ setButtonLayoutData(kex_up);
+
+ kex_down=new Button(root, SWT.PUSH);
+ kex_down.setText(Messages.CVSSSH2PreferencePage_3);
+ kex_down.setEnabled(false);
+ setButtonLayoutData(kex_down);
+
+ preferedKeyExchangeMethodTable.addSelectionListener(new SelectionAdapter(){
+
+ @Override
+ public void widgetSelected(SelectionEvent e){
+ boolean anySelected = false;
+ for(int i = 0; i < preferedKeyExchangeMethodTable.getItemCount(); i++){
+ anySelected |= preferedKeyExchangeMethodTable.getItem(i).getChecked();
+ }
+
+ if(anySelected){
+ setErrorMessage(null);
+ setValid(true);
+ }
+ else{
+ setErrorMessage(Messages.CVSSSH2PreferencePage_142);
+ setValid(false);
+ }
+ kex_up.setEnabled(preferedKeyExchangeMethodTable.getSelectionIndex()>0);
+ kex_down
+ .setEnabled(preferedKeyExchangeMethodTable.getSelectionIndex()<preferedKeyExchangeMethodTable
+ .getItemCount()-1);
+ }
+
+ });
+ kex_up.addSelectionListener(new SelectionAdapter(){
+
+ @Override
+ public void widgetSelected(SelectionEvent e){
+ int selectedIndex=preferedKeyExchangeMethodTable.getSelectionIndex();
+ if(selectedIndex == 1){ //this is the last possible swap
+ kex_up.setEnabled(false);
+ }
+ kex_down.setEnabled(true);
+ TableItem sourceItem = preferedKeyExchangeMethodTable.getItem(selectedIndex);
+ TableItem targetItem = preferedKeyExchangeMethodTable.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);
+
+ preferedKeyExchangeMethodTable.setSelection(targetItem);
+ }
+ });
+
+ kex_down.addSelectionListener(new SelectionAdapter(){
+
+ @Override
+ public void widgetSelected(SelectionEvent e){
+ int selectedIndex=preferedKeyExchangeMethodTable.getSelectionIndex();
+ if(selectedIndex == preferedKeyExchangeMethodTable.getItemCount()-2){ //this is the last possible swap
+ kex_down.setEnabled(false);
+ }
+ kex_up.setEnabled(true);
+ TableItem sourceItem = preferedKeyExchangeMethodTable.getItem(selectedIndex);
+ TableItem targetItem = preferedKeyExchangeMethodTable.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);
+
+ preferedKeyExchangeMethodTable.setSelection(targetItem);
+ }
+ });
+
+ return root;
+ }
+
+ private void populateKeyExchangeMethods(){
+ preferedKeyExchangeMethodTable.removeAll();
+ String[] methods = Utils.getEnabledPreferredKEXMethods().split(","); //$NON-NLS-1$
+ Set<String> smethods = new HashSet<>(Arrays.asList(methods));
+
+ String[] order = Utils.getKEXMethodsOrder().split(","); //$NON-NLS-1$
+
+ for(int i=0; i<order.length; i++){
+ TableItem tableItem= new TableItem(preferedKeyExchangeMethodTable, SWT.NONE);
+ tableItem.setText(0, order[i]);
+ if(smethods.contains(order[i])){
+ tableItem.setChecked(true);
+ }
+ }
+ }
+
+ private Control createPreferredMACPage(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_141);
+
+ preferedMACMethodTable=new Table(root, SWT.CHECK | SWT.BORDER);
+ GridData layoutData=new GridData(SWT.FILL, SWT.BEGINNING, true, true);
+ layoutData.verticalSpan = 3;
+ preferedMACMethodTable.setLayoutData(layoutData);
+ layoutData.minimumHeight = 150;
+ layoutData.minimumWidth = 200;
+ populateMACMethods();
+
+ mac_up=new Button(root, SWT.PUSH);
+ mac_up.setText(Messages.CVSSSH2PreferencePage_2);
+ mac_up.setEnabled(false);
+ setButtonLayoutData(mac_up);
+
+ mac_down=new Button(root, SWT.PUSH);
+ mac_down.setText(Messages.CVSSSH2PreferencePage_3);
+ mac_down.setEnabled(false);
+ setButtonLayoutData(mac_down);
+
+ preferedMACMethodTable.addSelectionListener(new SelectionAdapter(){
+
+ @Override
+ public void widgetSelected(SelectionEvent e){
+ boolean anySelected = false;
+ for(int i = 0; i < preferedMACMethodTable.getItemCount(); i++){
+ anySelected |= preferedMACMethodTable.getItem(i).getChecked();
+ }
+
+ if(anySelected){
+ setErrorMessage(null);
+ setValid(true);
+ }
+ else{
+ setErrorMessage(Messages.CVSSSH2PreferencePage_143);
+ setValid(false);
+ }
+ mac_up.setEnabled(preferedMACMethodTable.getSelectionIndex()>0);
+ mac_down
+ .setEnabled(preferedMACMethodTable.getSelectionIndex()<preferedMACMethodTable
+ .getItemCount()-1);
+ }
+
+ });
+ mac_up.addSelectionListener(new SelectionAdapter(){
+
+ @Override
+ public void widgetSelected(SelectionEvent e){
+ int selectedIndex=preferedMACMethodTable.getSelectionIndex();
+ if(selectedIndex == 1){ //this is the last possible swap
+ mac_up.setEnabled(false);
+ }
+ mac_down.setEnabled(true);
+ TableItem sourceItem = preferedMACMethodTable.getItem(selectedIndex);
+ TableItem targetItem = preferedMACMethodTable.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);
+
+ preferedMACMethodTable.setSelection(targetItem);
+ }
+ });
+
+ mac_down.addSelectionListener(new SelectionAdapter(){
+
+ @Override
+ public void widgetSelected(SelectionEvent e){
+ int selectedIndex=preferedMACMethodTable.getSelectionIndex();
+ if(selectedIndex == preferedMACMethodTable.getItemCount()-2){ //this is the last possible swap
+ mac_down.setEnabled(false);
+ }
+ mac_up.setEnabled(true);
+ TableItem sourceItem = preferedMACMethodTable.getItem(selectedIndex);
+ TableItem targetItem = preferedMACMethodTable.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);
+
+ preferedMACMethodTable.setSelection(targetItem);
+ }
+ });
+
+ return root;
+ }
+
+ private Control createPreferredSSHAgentPage(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_147);
+
+ preferedSSHAgentTable=new Table(root, SWT.CHECK | SWT.BORDER);
+ GridData layoutData=new GridData(SWT.FILL, SWT.BEGINNING, true, true);
+ layoutData.verticalSpan = 3;
+ preferedSSHAgentTable.setLayoutData(layoutData);
+ layoutData.minimumHeight = 150;
+ layoutData.minimumWidth = 200;
+ populateSSHAgents();
+ return root;
+ }
+
+ private void populateSSHAgents(){
+ preferedSSHAgentTable.removeAll();
+ String[] methods = Utils.getAvailableSSHAgents().split(","); //$NON-NLS-1$
+ String[] selected = Utils.getSelectedSSHAgent().split(","); //$NON-NLS-1$
+
+ for(int i=0; i<methods.length; i++){
+ if(methods[i].length()==0)
+ continue;
+ TableItem tableItem= new TableItem(preferedSSHAgentTable, SWT.NONE);
+ tableItem.setText(0, methods[i]);
+ for(int j=0; j<selected.length; j++){
+ if(selected[j].equals(methods[i])){
+ tableItem.setChecked(true);
+ break;
+ }
+ }
+ }
+ }
+
+ private void populateMACMethods(){
+ preferedMACMethodTable.removeAll();
+ String[] methods = Utils.getEnabledPreferredMACMethods().split(","); //$NON-NLS-1$
+ Set<String> smethods = new HashSet<>(Arrays.asList(methods));
+
+ String[] order = Utils.getMACMethodsOrder().split(","); //$NON-NLS-1$
+
+ for(int i=0; i<order.length; i++){
+ TableItem tableItem= new TableItem(preferedMACMethodTable, SWT.NONE);
+ tableItem.setText(0, order[i]);
+ if(smethods.contains(order[i])){
+ tableItem.setChecked(true);
+ }
+ }
+ }
+
+ void handleSelection(){
+ boolean empty=viewer.getSelection().isEmpty();
+ removeHostKeyButton.setEnabled(!empty);
+ }
+
+ void removeHostKey(){
+ IStructuredSelection selection=viewer.getStructuredSelection();
+ HostKeyRepository hkr=getJSch().getHostKeyRepository();
+ for(Iterator<?> iterator=selection.iterator(); iterator.hasNext();){
+ HostKey hostkey=(HostKey)iterator.next();
+ hkr.remove(hostkey.getHost(), hostkey.getType());
+ viewer.remove(hostkey);
+ }
+ }
+
+ void export_via_sftp(String user, String host, int port, byte[] pkey) throws JSchException{
+ try{
+
+ int timeout = 60000;
+ IJSchService service = JSchUIPlugin.getPlugin().getJSchService();
+ if (service == null) {
+ MessageDialog.openInformation(getShell(), Messages.PreferencePage_0, Messages.PreferencePage_1);
+ return;
+ }
+
+ IJSchLocation location=service.getLocation(user, host, port);
+ // We hope that prompts for jsch are given by IJSchService, so "null" should be passed.
+ Session session = service.createSession(location, null);
+ session.setTimeout(timeout);
+ try {
+ service.connect(session, timeout, new NullProgressMonitor());
+ if(session.getServerVersion().indexOf("OpenSSH")==-1){ //$NON-NLS-1$
+ setErrorMessage(Messages.CVSSSH2PreferencePage_110);
+ return;
+ }
+ Channel channel=session.openChannel("sftp"); //$NON-NLS-1$
+ channel.connect();
+ ChannelSftp c=(ChannelSftp)channel;
+
+ SftpATTRS attr=null;
+
+ try{
+ attr=c.stat(".ssh");} //$NON-NLS-1$
+ catch(SftpException ee){
+ // Ignore
+ }
+ if(attr==null){
+ try{
+ c.mkdir(".ssh");} //$NON-NLS-1$
+ catch(SftpException ee){
+ setErrorMessage(ee.getMessage());
+ return;
+ }
+ }
+ try{
+ c.cd(".ssh");} //$NON-NLS-1$
+ catch(SftpException ee){
+ setErrorMessage(ee.getMessage());
+ return;
+ }
+
+ try{
+ ByteArrayInputStream bis=new ByteArrayInputStream(pkey);
+ c.put(bis, "authorized_keys", null, ChannelSftp.APPEND); //$NON-NLS-1$
+ bis.close();
+ checkPermission(c, "authorized_keys"); //$NON-NLS-1$
+ checkPermission(c, "."); // .ssh //$NON-NLS-1$
+ c.cd(".."); //$NON-NLS-1$
+ checkPermission(c, "."); // home directory //$NON-NLS-1$
+ }
+ catch(SftpException ee){
+ // setErrorMessage(debug+ee.message);
+ }
+
+ MessageDialog.openInformation(getShell(),
+ Messages.CVSSSH2PreferencePage_information,
+ NLS.bind(Messages.CVSSSH2PreferencePage_109, (user
+ +"@"+host+(port==22 ? "" : ":"+port)+":~/.ssh/authorized_keys"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ c.quit();
+ c.disconnect();
+ } finally {
+ session.disconnect();
+ }
+ } catch(IOException eee){
+ setErrorMessage(eee.toString());
+ }
+ }
+
+ private void checkPermission(ChannelSftp c, String path) throws SftpException{
+ SftpATTRS attr=c.stat(path);
+ int permissions=attr.getPermissions();
+ if((permissions&00022)!=0){
+ permissions&=~00022;
+ c.chmod(permissions, path);
+ }
+ }
+
+ void updateControls(){
+ boolean enable=(kpair!=null);
+ publicKeylabel.setEnabled(enable);
+ publicKeyText.setEnabled(enable);
+ keyFingerPrintLabel.setEnabled(enable);
+ keyFingerPrintText.setEnabled(enable);
+ keyCommentLabel.setEnabled(enable);
+ keyCommentText.setEnabled(enable);
+ keyPassphrase1Label.setEnabled(enable);
+ keyPassphrase1Text.setEnabled(enable);
+ keyPassphrase2Label.setEnabled(enable);
+ keyPassphrase2Text.setEnabled(enable);
+ keyExport.setEnabled(enable);
+ saveKeyPair.setEnabled(enable);
+ populateAuthMethods();
+ populateKeyExchangeMethods();
+ populateMACMethods();
+ up.setEnabled(false);
+ down.setEnabled(false);
+ kex_up.setEnabled(false);
+ kex_down.setEnabled(false);
+ mac_up.setEnabled(false);
+ mac_down.setEnabled(false);
+ }
+
+ @Override
public void init(IWorkbench workbench){
- // super.init(workbench);
- // initControls();
- }
-
- public void initialize(){
- initControls();
- }
-
- private void initControls(){
- Preferences preferences=JSchCorePlugin.getPlugin().getPluginPreferences();
- ssh2HomeText.setText(preferences
- .getString(org.eclipse.jsch.internal.core.IConstants.KEY_SSH2HOME));
- privateKeyText.setText(preferences
- .getString(org.eclipse.jsch.internal.core.IConstants.KEY_PRIVATEKEY));
- updateControls();
- }
-
- @Override
+ // super.init(workbench);
+ // initControls();
+ }
+
+ public void initialize(){
+ initControls();
+ }
+
+ private void initControls(){
+ Preferences preferences=JSchCorePlugin.getPlugin().getPluginPreferences();
+ ssh2HomeText.setText(preferences
+ .getString(org.eclipse.jsch.internal.core.IConstants.KEY_SSH2HOME));
+ privateKeyText.setText(preferences
+ .getString(org.eclipse.jsch.internal.core.IConstants.KEY_PRIVATEKEY));
+ updateControls();
+ }
+
+ @Override
public boolean performOk(){
- boolean result=super.performOk();
- storeAuthenticationMethodSettings();
- storeSSHAgentSettings();
- storeKeyExchangeMethodSettings();
- storeMACMethodSettings();
-
- if(result){
- setErrorMessage(null);
- String home=ssh2HomeText.getText();
- File _home=new File(home);
- if(!_home.exists()){
- if(MessageDialog.openQuestion(getShell(),
- Messages.CVSSSH2PreferencePage_question, NLS.bind(
- Messages.CVSSSH2PreferencePage_99, new String[] {home}))){
- if(!(_home.mkdirs())){
- setErrorMessage(Messages.CVSSSH2PreferencePage_100+home);
- return false;
- }
- }
- }
-
- Preferences preferences=JSchCorePlugin.getPlugin().getPluginPreferences();
- preferences.setValue(
- org.eclipse.jsch.internal.core.IConstants.KEY_SSH2HOME, home);
- preferences.setValue(
- org.eclipse.jsch.internal.core.IConstants.KEY_PRIVATEKEY,
- privateKeyText.getText());
- }
- JSchCorePlugin.getPlugin().setNeedToLoadKnownHosts(true);
- JSchCorePlugin.getPlugin().setNeedToLoadKeys(true);
- JSchCorePlugin.getPlugin().setIdentityRepository();
- JSchCorePlugin.getPlugin().savePluginPreferences();
- 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);
- }
-
- private void storeSSHAgentSettings(){
- String selected = ""; //$NON-NLS-1$
- for(int i = 0; i < preferedSSHAgentTable.getItemCount(); i++){
- TableItem item=preferedSSHAgentTable.getItem(i);
- if(item.getChecked()){
- if(selected.length()==0){
- selected=item.getText();
- }
- else{
- selected+=","+item.getText(); //$NON-NLS-1$
- }
- }
- }
- Utils.setSelectedSSHAgents(selected);
- }
-
- private void storeKeyExchangeMethodSettings(){
- String selected = null;
- String order = null;
- for(int i = 0; i < preferedKeyExchangeMethodTable.getItemCount(); i++){
- TableItem item=preferedKeyExchangeMethodTable.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.setEnabledPreferredKEXMethods(selected, order);
- }
-
- private void storeMACMethodSettings(){
- String selected = null;
- String order = null;
- for(int i = 0; i < preferedMACMethodTable.getItemCount(); i++){
- TableItem item=preferedMACMethodTable.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.setEnabledPreferredMACMethods(selected, order);
- }
-
- @Override
+ boolean result=super.performOk();
+ storeAuthenticationMethodSettings();
+ storeSSHAgentSettings();
+ storeKeyExchangeMethodSettings();
+ storeMACMethodSettings();
+
+ if(result){
+ setErrorMessage(null);
+ String home=ssh2HomeText.getText();
+ File _home=new File(home);
+ if(!_home.exists()){
+ if(MessageDialog.openQuestion(getShell(),
+ Messages.CVSSSH2PreferencePage_question, NLS.bind(
+ Messages.CVSSSH2PreferencePage_99, new String[] {home}))){
+ if(!(_home.mkdirs())){
+ setErrorMessage(Messages.CVSSSH2PreferencePage_100+home);
+ return false;
+ }
+ }
+ }
+
+ Preferences preferences=JSchCorePlugin.getPlugin().getPluginPreferences();
+ preferences.setValue(
+ org.eclipse.jsch.internal.core.IConstants.KEY_SSH2HOME, home);
+ preferences.setValue(
+ org.eclipse.jsch.internal.core.IConstants.KEY_PRIVATEKEY,
+ privateKeyText.getText());
+ }
+ JSchCorePlugin.getPlugin().setNeedToLoadKnownHosts(true);
+ JSchCorePlugin.getPlugin().setNeedToLoadKeys(true);
+ JSchCorePlugin.getPlugin().setIdentityRepository();
+ JSchCorePlugin.getPlugin().savePluginPreferences();
+ 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);
+ }
+
+ private void storeSSHAgentSettings(){
+ String selected = ""; //$NON-NLS-1$
+ for(int i = 0; i < preferedSSHAgentTable.getItemCount(); i++){
+ TableItem item=preferedSSHAgentTable.getItem(i);
+ if(item.getChecked()){
+ if(selected.length()==0){
+ selected=item.getText();
+ }
+ else{
+ selected+=","+item.getText(); //$NON-NLS-1$
+ }
+ }
+ }
+ Utils.setSelectedSSHAgents(selected);
+ }
+
+ private void storeKeyExchangeMethodSettings(){
+ String selected = null;
+ String order = null;
+ for(int i = 0; i < preferedKeyExchangeMethodTable.getItemCount(); i++){
+ TableItem item=preferedKeyExchangeMethodTable.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.setEnabledPreferredKEXMethods(selected, order);
+ }
+
+ private void storeMACMethodSettings(){
+ String selected = null;
+ String order = null;
+ for(int i = 0; i < preferedMACMethodTable.getItemCount(); i++){
+ TableItem item=preferedMACMethodTable.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.setEnabledPreferredMACMethods(selected, order);
+ }
+
+ @Override
public void performApply(){
- performOk();
- }
+ performOk();
+ }
- @Override
+ @Override
protected void performDefaults(){
- super.performDefaults();
- Utils.setEnabledPreferredAuthMethods(Utils.getDefaultAuthMethods(), Utils
- .getDefaultAuthMethods());
- Preferences preferences=JSchCorePlugin.getPlugin().getPluginPreferences();
- ssh2HomeText
- .setText(preferences
- .getDefaultString(org.eclipse.jsch.internal.core.IConstants.KEY_SSH2HOME));
- privateKeyText
- .setText(preferences
- .getDefaultString(org.eclipse.jsch.internal.core.IConstants.KEY_PRIVATEKEY));
- updateControls();
- }
-
- protected void createSpacer(Composite composite, int columnSpan){
- Label label=new Label(composite, SWT.NONE);
- GridData gd=new GridData();
- gd.horizontalSpan=columnSpan;
- label.setLayoutData(gd);
- }
-
- JSch getJSch(){
- return JSchCorePlugin.getPlugin().getJSch();
- }
-
- class PassphrasePrompt implements Runnable{
- private String message;
- private String passphrase;
-
- PassphrasePrompt(String message){
- this.message=message;
- }
-
- @Override
- public void run(){
- Display display=Display.getCurrent();
- Shell shell=new Shell(display);
- PassphraseDialog dialog=new PassphraseDialog(shell, message);
- dialog.open();
- shell.dispose();
- passphrase=dialog.getPassphrase();
- }
-
- public String getPassphrase(){
- return passphrase;
- }
- }
+ super.performDefaults();
+ Utils.setEnabledPreferredAuthMethods(Utils.getDefaultAuthMethods(), Utils
+ .getDefaultAuthMethods());
+ Preferences preferences=JSchCorePlugin.getPlugin().getPluginPreferences();
+ ssh2HomeText
+ .setText(preferences
+ .getDefaultString(org.eclipse.jsch.internal.core.IConstants.KEY_SSH2HOME));
+ privateKeyText
+ .setText(preferences
+ .getDefaultString(org.eclipse.jsch.internal.core.IConstants.KEY_PRIVATEKEY));
+ updateControls();
+ }
+
+ protected void createSpacer(Composite composite, int columnSpan){
+ Label label=new Label(composite, SWT.NONE);
+ GridData gd=new GridData();
+ gd.horizontalSpan=columnSpan;
+ label.setLayoutData(gd);
+ }
+
+ JSch getJSch(){
+ return JSchCorePlugin.getPlugin().getJSch();
+ }
+
+ class PassphrasePrompt implements Runnable{
+ private String message;
+ private String passphrase;
+
+ PassphrasePrompt(String message){
+ this.message=message;
+ }
+
+ @Override
+ public void run(){
+ Display display=Display.getCurrent();
+ Shell shell=new Shell(display);
+ PassphraseDialog dialog=new PassphraseDialog(shell, message);
+ dialog.open();
+ shell.dispose();
+ passphrase=dialog.getPassphrase();
+ }
+
+ public String getPassphrase(){
+ return passphrase;
+ }
+ }
}

Back to the top