Alon Bar-Lev has posted comments on this change.
Change subject: Wrap validation of fingerprint in each connect using
EngineSSHClient
......................................................................
Patch Set 1: (7 inline comments)
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsCommand.java
Line 369: if
(getParameters().getvds().getSSHKeyFingerprint().isEmpty()) {
Line 370: sshclient.setVds(getParameters().getvds());
Line 371: try {
Line 372:
getParameters().getvds().setSSHKeyFingerprint(sshclient.getHostFingerprint());
Line 373:
DbFacade.getInstance().getVdsStaticDao().save(getParameters().getVdsStaticData());
this logic should be within EngineSSHClient
Line 374: } catch (Exception e) {
Line 375: log.warnFormat(
Line 376: "couldn't set fingerprint for vds",
Line 377: e);
Line 381: }
Line 382: sshclient.setHardTimeout(timeout);
Line 383: sshclient.setSoftTimeout(timeout);
Line 384: sshclient.setPassword(getParameters().getPassword());
Line 385: return (SSHClient) sshclient;
Why do you need the cast?
Line 386: }
Line 387:
Line 388: /**
Line 389: * getInstalledVdsIdIfExists
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsDeploy.java
Line 904
Line 905
Line 906
Line 907
Line 908
if dialog knows _vds, why does it need the setHost?
....................................................
File
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/gluster/GlusterUtil.java
Line 118: }
Line 119: }
Line 120:
Line 121: protected SSHClient connect(String serverName) {
Line 122: SSHClient client = new SSHClient();
why?
just don't set _vds, and if _vds is null then do not enforce. I think we talked
about this.
Always use the engine interfaces.
Line 123: Integer timeout = Config.<Integer>
GetValue(ConfigValues.ConnectToServerTimeoutInSeconds) * 1000;
Line 124: client.setHardTimeout(timeout);
Line 125: client.setSoftTimeout(timeout);
Line 126: client.setHost(serverName, SSH_PORT);
....................................................
File
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ssh/EngineSSHClient.java
Line 24: */
Line 25: public class EngineSSHClient extends SSHClient {
Line 26:
Line 27: private static final Log log =
LogFactory.getLog(EngineSSHDialog.class);
Line 28: private VDS vdsClient;
why vdsClient and not just vds?
please add _ prefix within these classes to non public / none interface so I
can maintain them better.
Line 29: /**
Line 30: * Constructor.
Line 31: */
Line 32: public EngineSSHClient() {
Line 54: super.connect();
Line 55: if (vdsClient != null) {
Line 56: String hostfp = getHostFingerprint();
Line 57: if (!vdsClient.getSSHKeyFingerprint().equals(hostfp)) {
Line 58: throw new GeneralSecurityException("Invalid
fingerprint got " +
please don't over indent, one indent per block.
please use string.format.
String actual = this.getHostFingerprint();
String expected = _vds.getSSHFingerprint();
if (isEmpty(expected)) {
_vds.setSSHFingerprint(actual);
// persist
}
else if (!actual.equals(expected)) {
throw new GeneralSecurityException(
String.format(
"Invalid fin... '%s' expected '%s'",
actual,
expected
)
);
}
Line 59:
vdsClient.getSSHKeyFingerprint() +
Line 60: " exected " +
hostfp);
Line 61: }
Line 62: }
....................................................
File
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ssh/SSHClient.java
Line 31: import org.apache.sshd.SshClient;
Line 32: import org.apache.sshd.client.ServerKeyVerifier;
Line 33: import org.apache.sshd.client.future.AuthFuture;
Line 34: import org.apache.sshd.client.future.ConnectFuture;
Line 35: import org.ovirt.engine.core.utils.crypt.OpenSSHUtils;
I do not want to add more dependencies to this package.
Notice that this package can be copied as-is to other project without any
change.
Line 36:
Line 37: public class SSHClient {
Line 38: private static final String COMMAND_FILE_RECEIVE = "test -r '%2$s'
&& md5sum -b '%2$s' | cut -d ' ' -f 1 >&2 && %1$s < '%2$s'";
Line 39: private static final String COMMAND_FILE_SEND = "%1$s > '%2$s' &&
md5sum -b '%2$s' | cut -d ' ' -f 1 >&2";
--
To view, visit http://gerrit.ovirt.org/16126
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ic01517a153406c8bafc672c20b0bf8686763a2f5
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Yaniv Bronhaim <[email protected]>
Gerrit-Reviewer: Alon Bar-Lev <[email protected]>
Gerrit-Reviewer: Yair Zaslavsky <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches