mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-15 06:49:56 +00:00
bug4811: supports generating SSH keys
This commit is contained in:
1 parent
77b724c873
commit
c538241de9
6 files changed
+128
-4
No files matched your search
+6
-1
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.landscape.ui.client;
|
||||
|
||||
import com.google.gwt.user.client.ui.FileUpload;
|
||||
import com.google.gwt.user.client.ui.FocusWidget;
|
||||
import com.google.gwt.user.client.ui.FormPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.TextArea;
|
||||
@@ -79,7 +80,6 @@ public class AddSshKeyDialog extends DataEntryDialog<Triple<String, String, Stri
|
||||
verticalPanel.add(new Label(stringMessages.name()));
|
||||
verticalPanel.add(keyPairNameBox);
|
||||
verticalPanel.add(new Label(stringMessages.publicKey()));
|
||||
publicKeyFileChooser.getElement().setPropertyString("mutliple", "multiple");
|
||||
verticalPanel.add(publicKeyFileChooser);
|
||||
verticalPanel.add(publicKeyArea);
|
||||
verticalPanel.add(new Label(stringMessages.privateKey()));
|
||||
@@ -88,6 +88,11 @@ public class AddSshKeyDialog extends DataEntryDialog<Triple<String, String, Stri
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected FocusWidget getInitialFocusWidget() {
|
||||
return keyPairNameBox;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Triple<String, String, String> getResult() {
|
||||
return new Triple<>(keyPairNameBox.getValue(), publicKeyArea.getValue(), privateKeyArea.getValue());
|
||||
|
||||
Executable
+76
@@ -0,0 +1,76 @@
|
||||
package com.sap.sailing.landscape.ui.client;
|
||||
|
||||
import com.google.gwt.user.client.ui.FocusWidget;
|
||||
import com.google.gwt.user.client.ui.FormPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.PasswordTextBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.landscape.ui.client.i18n.StringMessages;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Triple;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
|
||||
/**
|
||||
* Supports generating an SSH key. Result is the key pair name, the passphrase and the repeated passphrase which
|
||||
* is expected to equal the passphrase.
|
||||
*
|
||||
* @author Axel Uhl (D043530)
|
||||
*
|
||||
*/
|
||||
public class GenerateSshKeyDialog extends DataEntryDialog<Triple<String, String, String>> {
|
||||
private final TextBox keyPairNameBox;
|
||||
private final PasswordTextBox passphraseBox;
|
||||
private final PasswordTextBox passphraseConfirmBox;
|
||||
private final StringMessages stringMessages;
|
||||
|
||||
public GenerateSshKeyDialog(StringMessages stringMessages,
|
||||
DialogCallback<Triple<String, String, String>> callback) {
|
||||
super(stringMessages.sshKeys(), stringMessages.sshKeys(), stringMessages.ok(), stringMessages.cancel(), new Validator<Triple<String, String, String>>() {
|
||||
@Override
|
||||
public String getErrorMessage(Triple<String, String, String> valueToValidate) {
|
||||
if (!Util.hasLength(valueToValidate.getA())) {
|
||||
return stringMessages.pleaseProvideKeyPairName();
|
||||
} else if (!Util.hasLength(valueToValidate.getB())) {
|
||||
return stringMessages.pleaseProvidePassphrase();
|
||||
} else if (!Util.hasLength(valueToValidate.getC())) {
|
||||
return stringMessages.pleaseRepeatPassphrase();
|
||||
} else if (!valueToValidate.getB().equals(valueToValidate.getC())) {
|
||||
return stringMessages.passphrasesDontMatch();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}, callback);
|
||||
this.stringMessages = stringMessages;
|
||||
keyPairNameBox = createTextBox("", 20);
|
||||
passphraseBox = createPasswordTextBox("");
|
||||
passphraseConfirmBox = createPasswordTextBox("");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
final FormPanel result = new FormPanel();
|
||||
final VerticalPanel verticalPanel = new VerticalPanel();
|
||||
result.add(verticalPanel);
|
||||
verticalPanel.add(new Label(stringMessages.name()));
|
||||
verticalPanel.add(keyPairNameBox);
|
||||
verticalPanel.add(new Label(stringMessages.password()));
|
||||
verticalPanel.add(passphraseBox);
|
||||
verticalPanel.add(new Label(stringMessages.passwordRepeat()));
|
||||
verticalPanel.add(passphraseConfirmBox);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected FocusWidget getInitialFocusWidget() {
|
||||
return keyPairNameBox;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Triple<String, String, String> getResult() {
|
||||
return new Triple<>(keyPairNameBox.getValue(), passphraseBox.getValue(), passphraseConfirmBox.getValue());
|
||||
}
|
||||
|
||||
}
|
||||
+32
-1
@@ -43,6 +43,10 @@ public class SshKeyManagementPanel extends VerticalPanel {
|
||||
openAddSshKeyDialog(stringMessages, awsAccessKeyProvider);
|
||||
});
|
||||
addButton.setEnabled(regionSelectionModel.getSelectedObject() != null);
|
||||
final Button generateButton = buttonPanel.addCreateAction(stringMessages.generate(), ()->{
|
||||
openGenerateSshKeyDialog(stringMessages, awsAccessKeyProvider);
|
||||
});
|
||||
generateButton.setEnabled(regionSelectionModel.getSelectedObject() != null);
|
||||
sshKeyTable =
|
||||
new TableWrapperWithSingleSelectionAndFilter<SSHKeyPairDTO, StringMessages, AdminConsoleTableResources>(stringMessages, errorReporter, /* enablePager */ true,
|
||||
Optional.of(new EntityIdentityComparator<SSHKeyPairDTO>() {
|
||||
@@ -88,9 +92,37 @@ public class SshKeyManagementPanel extends VerticalPanel {
|
||||
showKeysInRegion(awsAccessKeyProvider.getAwsAccessKeyId(), awsAccessKeyProvider.getAwsSecret(),
|
||||
regionSelectionModel.getSelectedObject());
|
||||
addButton.setEnabled(regionSelectionModel.getSelectedObject() != null);
|
||||
generateButton.setEnabled(regionSelectionModel.getSelectedObject() != null);
|
||||
});
|
||||
}
|
||||
|
||||
private void openGenerateSshKeyDialog(StringMessages stringMessages, AwsAccessKeyProvider awsAccessKeyProvider) {
|
||||
new GenerateSshKeyDialog(stringMessages,
|
||||
new DialogCallback<Triple<String, String, String>>() {
|
||||
@Override
|
||||
public void ok(Triple<String, String, String> keyPairNameAndPassphrases) {
|
||||
landscapeManagementService.generateSshKeyPair(awsAccessKeyProvider.getAwsAccessKeyId(),
|
||||
awsAccessKeyProvider.getAwsSecret(), regionSelectionModel.getSelectedObject(),
|
||||
keyPairNameAndPassphrases.getA(), keyPairNameAndPassphrases.getB(),
|
||||
new AsyncCallback<SSHKeyPairDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(SSHKeyPairDTO result) {
|
||||
sshKeyTable.add(result);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
|
||||
private void openAddSshKeyDialog(StringMessages stringMessages, AwsAccessKeyProvider awsAccessKeyProvider) {
|
||||
new AddSshKeyDialog(stringMessages,
|
||||
new DialogCallback<Triple<String, String, String>>() {
|
||||
@@ -114,7 +146,6 @@ public class SshKeyManagementPanel extends VerticalPanel {
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
// TODO Implement Type1610991600832.cancel(...)
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
|
||||
+4
@@ -25,4 +25,8 @@ com.sap.sse.gwt.adminconsole.StringMessages {
|
||||
String pleaseProvidePublicKey();
|
||||
String pleaseProvidePrivateKey();
|
||||
String pleaseProvideKeyPairName();
|
||||
String generate();
|
||||
String pleaseProvidePassphrase();
|
||||
String pleaseRepeatPassphrase();
|
||||
String passphrasesDontMatch();
|
||||
}
|
||||
+5
-1
@@ -13,4 +13,8 @@ publicKey=Public key
|
||||
privateKey=Private key
|
||||
pleaseProvideKeyPairName=Please provide key pair name
|
||||
pleaseProvidePublicKey=Please provide a public key
|
||||
pleaseProvidePrivateKey=Please provide a private key
|
||||
pleaseProvidePrivateKey=Please provide a private key
|
||||
generate=Generate
|
||||
pleaseProvidePassphrase=Please provide passphrase for private key
|
||||
pleaseRepeatPassphrase=Please repeat passphrase for private key
|
||||
passphrasesDontMatch=The two passphrases don''t match
|
||||
+5
-1
@@ -13,4 +13,8 @@ publicKey=
|
||||
privateKey=Geheimer Schlüssel
|
||||
pleaseProvideKeyPairName=Bitte den Namen des Schlüsselpaares angeben
|
||||
pleaseProvidePublicKey=Bitte öffentlichen Schlüssel angeben
|
||||
pleaseProvidePrivateKey=Bitte geheimen Schlüssel angeben
|
||||
pleaseProvidePrivateKey=Bitte geheimen Schlüssel angeben
|
||||
generate=Erzeugen
|
||||
pleaseProvidePassphrase=Bitte ein Passwort zur Verschlüsselung des geheimen Schlüssels angeben
|
||||
pleaseRepeatPassphrase=Bitte das Passwort zur Verschlüsselung des geheimen Schlüssels wiederholen
|
||||
passphrasesDontMatch=Die beiden Passwörter stimmen nicht überein
|
||||
Reference in new issue
Block a user