public class org.glassfish.cluster.ssh.launcher.SSHLauncher extends java.lang.Object
{
private static final java.lang.String SSH_DIR;
private static final java.lang.String AUTH_KEY_FILE;
private static final int DEFAULT_TIMEOUT_MSEC;
private static final java.lang.String SSH_KEYGEN;
private static final char LINE_SEP;
private java.lang.String host;
private int port;
private java.lang.String userName;
private java.lang.String keyFile;
private com.jcraft.jsch.Session session;
private java.lang.String authType;
private java.lang.String keyPassPhrase;
private java.lang.String knownHostsLocation;
private java.util.logging.Logger logger;
private java.lang.String password;
private java.lang.String rawPassword;
private java.lang.String rawKeyPassPhrase;
static final boolean $assertionsDisabled;
public void <init>()
{
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawPassword> = null;
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawKeyPassPhrase> = null;
return;
}
public void init(java.util.logging.Logger)
{
java.util.logging.Logger v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.util.logging.Logger;
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger> = v;
return;
}
public void init(com.sun.enterprise.config.serverbeans.Node, java.util.logging.Logger)
{
com.sun.enterprise.config.serverbeans.SshConnector v;
com.sun.enterprise.config.serverbeans.Node v;
java.util.logging.Level v;
int v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v;
java.lang.NumberFormatException v;
java.util.logging.Logger v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
com.sun.enterprise.config.serverbeans.SshAuth v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: com.sun.enterprise.config.serverbeans.Node;
v := @parameter: java.util.logging.Logger;
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger> = v;
v = interfaceinvoke v.<com.sun.enterprise.config.serverbeans.Node: com.sun.enterprise.config.serverbeans.SshConnector getSshConnector()>();
v = interfaceinvoke v.<com.sun.enterprise.config.serverbeans.SshConnector: java.lang.String getSshHost()>();
v = staticinvoke <org.glassfish.cluster.ssh.util.SSHUtil: java.lang.String checkString(java.lang.String)>(v);
if v == null goto label;
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host> = v;
goto label;
label:
v = interfaceinvoke v.<com.sun.enterprise.config.serverbeans.Node: java.lang.String getNodeHost()>();
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host> = v;
label:
v = <java.util.logging.Level: java.util.logging.Level FINE>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Connecting to host \u0001");
virtualinvoke v.<java.util.logging.Logger: void fine(java.lang.String)>(v);
label:
v = interfaceinvoke v.<com.sun.enterprise.config.serverbeans.SshConnector: java.lang.String getSshHost()>();
if v == null goto label;
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host> = v;
label:
v = interfaceinvoke v.<com.sun.enterprise.config.serverbeans.SshConnector: com.sun.enterprise.config.serverbeans.SshAuth getSshAuth()>();
v = null;
if v == null goto label;
v = interfaceinvoke v.<com.sun.enterprise.config.serverbeans.SshAuth: java.lang.String getUserName()>();
v = interfaceinvoke v.<com.sun.enterprise.config.serverbeans.SshAuth: java.lang.String getKeyfile()>();
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile> = v;
v = interfaceinvoke v.<com.sun.enterprise.config.serverbeans.SshAuth: java.lang.String getPassword()>();
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawPassword> = v;
v = interfaceinvoke v.<com.sun.enterprise.config.serverbeans.SshAuth: java.lang.String getKeyPassphrase()>();
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawKeyPassPhrase> = v;
label:
v = interfaceinvoke v.<com.sun.enterprise.config.serverbeans.SshConnector: java.lang.String getSshPort()>();
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = 22;
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawPassword>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawKeyPassPhrase>;
virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: void init(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String,java.util.logging.Logger)>(v, v, v, v, v, v, v);
return;
catch java.lang.NumberFormatException from label to label with label;
}
public void init(java.lang.String, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.util.logging.Logger)
{
java.util.logging.Level v;
int v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v;
java.util.logging.Logger v;
java.io.File v, v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.util.logging.Logger;
if v != 0 goto label;
v = 22;
goto label;
label:
v = v;
label:
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int port> = v;
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host> = v;
if v != null goto label;
v = staticinvoke <org.glassfish.cluster.ssh.util.SSHUtil: java.lang.String getExistingKeyFile()>();
goto label;
label:
v = v;
label:
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile> = v;
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger> = v;
v = staticinvoke <org.glassfish.cluster.ssh.util.SSHUtil: java.lang.String checkString(java.lang.String)>(v);
if v != null goto label;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("user.name");
goto label;
label:
v = v;
label:
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String userName> = v;
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawPassword> = v;
v = virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String expandPasswordAlias(java.lang.String)>(v);
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String password> = v;
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawKeyPassPhrase> = v;
v = virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String expandPasswordAlias(java.lang.String)>(v);
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyPassPhrase> = v;
v = new java.io.File;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("user.home");
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = new java.io.File;
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, ".ssh/known_hosts");
v = virtualinvoke v.<java.io.File: boolean exists()>();
if v == 0 goto label;
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String knownHostsLocation> = v;
label:
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String toString()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("SSH info is \u0001");
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>(v);
label:
return;
}
private void openConnection() throws com.jcraft.jsch.JSchException
{
com.jcraft.jsch.Session v, v, v, v, v, v;
com.jcraft.jsch.JSchException v;
java.lang.AssertionError v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.io.File v, v, v;
boolean v, v, v, v, v, v, v, v, v, v;
java.util.logging.Logger v, v, v, v, v, v, v, v, v, v;
java.util.List v;
com.jcraft.jsch.JSch v;
java.lang.String[] v;
java.util.logging.Level v, v, v, v, v;
int v;
java.util.Iterator v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
java.lang.Object v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v = <org.glassfish.cluster.ssh.launcher.SSHLauncher: boolean $assertionsDisabled>;
if v != 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session>;
if v == null goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = new com.jcraft.jsch.JSch;
specialinvoke v.<com.jcraft.jsch.JSch: void <init>()>();
v = "";
v = 0;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
v = staticinvoke <org.glassfish.cluster.ssh.util.SSHUtil: java.lang.String checkString(java.lang.String)>(v);
if v == null goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Specified key file is \u0001");
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>(v);
label:
v = new java.io.File;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<java.io.File: boolean exists()>();
if v == 0 goto label;
v = 1;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.io.File)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Specified key file exists at \u0001");
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>(v);
label:
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyPassPhrase>;
virtualinvoke v.<com.jcraft.jsch.JSch: void addIdentity(java.lang.String,java.lang.String)>(v, v);
goto label;
label:
v = "Specified key file does not exist \n";
goto label;
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String password>;
v = staticinvoke <org.glassfish.cluster.ssh.util.SSHUtil: java.lang.String checkString(java.lang.String)>(v);
if v != null goto label;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>("") <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001No key or password specified - trying default keys \n");
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINE>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
virtualinvoke v.<java.util.logging.Logger: void fine(java.lang.String)>("keyfile and password are null. Will try to authenticate with default key file if available");
label:
v = new java.io.File;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("user.home");
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = newarray (java.lang.String)[3];
v[0] = "id_rsa";
v[1] = "id_dsa";
v[2] = "identity";
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.Object)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001Tried to authenticate using \u0001\n");
v = new java.io.File;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>(".ssh/\u0001");
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
v = virtualinvoke v.<java.io.File: boolean exists()>();
if v == 0 goto label;
v = 1;
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
virtualinvoke v.<com.jcraft.jsch.JSch: void addIdentity(java.lang.String)>(v);
goto label;
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String userName>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int port>;
v = virtualinvoke v.<com.jcraft.jsch.JSch: com.jcraft.jsch.Session getSession(java.lang.String,java.lang.String,int)>(v, v, v);
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session> = v;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session>;
virtualinvoke v.<com.jcraft.jsch.Session: void setConfig(java.lang.String,java.lang.String)>("StrictHostKeyChecking", "no");
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String password>;
v = staticinvoke <org.glassfish.cluster.ssh.util.SSHUtil: java.lang.String checkString(java.lang.String)>(v);
if v == null goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINE>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String password>;
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String getPrintablePassword(java.lang.String)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Authenticating with password \u0001");
virtualinvoke v.<java.util.logging.Logger: void fine(java.lang.String)>(v);
label:
v = 1;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String password>;
virtualinvoke v.<com.jcraft.jsch.Session: void setPassword(java.lang.String)>(v);
label:
if v != 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINE>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
virtualinvoke v.<java.util.logging.Logger: void fine(java.lang.String)>("Could not authenticate");
label:
v = new com.jcraft.jsch.JSchException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Could not authenticate. \u0001");
specialinvoke v.<com.jcraft.jsch.JSchException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session>;
staticinvoke <org.glassfish.cluster.ssh.util.SSHUtil: void register(com.jcraft.jsch.Session)>(v);
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session>;
virtualinvoke v.<com.jcraft.jsch.Session: void connect()>();
return;
}
public int runCommand(java.util.List, java.io.OutputStream, java.util.List) throws com.jcraft.jsch.JSchException, java.io.IOException, java.lang.InterruptedException
{
java.io.OutputStream v;
java.util.List v, v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
int v;
java.lang.String v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.util.List;
v := @parameter: java.io.OutputStream;
v := @parameter: java.util.List;
v = staticinvoke <org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String commandListToQuotedString(java.util.List)>(v);
v = virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int runCommand(java.lang.String,java.io.OutputStream,java.util.List)>(v, v, v);
return v;
}
public int runCommand(java.util.List, java.io.OutputStream) throws com.jcraft.jsch.JSchException, java.io.IOException, java.lang.InterruptedException
{
java.io.OutputStream v;
java.util.List v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
int v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.util.List;
v := @parameter: java.io.OutputStream;
v = virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int runCommand(java.util.List,java.io.OutputStream,java.util.List)>(v, v, null);
return v;
}
public int runCommand(java.lang.String, java.io.OutputStream) throws com.jcraft.jsch.JSchException, java.io.IOException, java.lang.InterruptedException
{
java.io.OutputStream v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
int v;
java.lang.String v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.lang.String;
v := @parameter: java.io.OutputStream;
v = virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int runCommand(java.lang.String,java.io.OutputStream,java.util.List)>(v, v, null);
return v;
}
public int runCommand(java.lang.String, java.io.OutputStream, java.util.List) throws com.jcraft.jsch.JSchException, java.io.IOException, java.lang.InterruptedException
{
java.io.OutputStream v;
java.util.List v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
int v;
java.lang.String v, v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.lang.String;
v := @parameter: java.io.OutputStream;
v := @parameter: java.util.List;
v = staticinvoke <org.glassfish.cluster.ssh.sftp.SFTPClient: java.lang.String normalizePath(java.lang.String)>(v);
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int runCommandAsIs(java.lang.String,java.io.OutputStream,java.util.List)>(v, v, v);
return v;
}
public int runCommandAsIs(java.util.List, java.io.OutputStream, java.util.List) throws com.jcraft.jsch.JSchException, java.io.IOException, java.lang.InterruptedException
{
java.io.OutputStream v;
java.util.List v, v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
int v;
java.lang.String v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.util.List;
v := @parameter: java.io.OutputStream;
v := @parameter: java.util.List;
v = staticinvoke <org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String commandListToQuotedString(java.util.List)>(v);
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int runCommandAsIs(java.lang.String,java.io.OutputStream,java.util.List)>(v, v, v);
return v;
}
private int runCommandAsIs(java.lang.String, java.io.OutputStream, java.util.List) throws com.jcraft.jsch.JSchException, java.io.IOException, java.lang.InterruptedException
{
java.io.OutputStream v;
java.util.logging.Logger v, v;
java.util.logging.Level v;
java.util.List v;
com.jcraft.jsch.Session v, v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
int v;
java.lang.String v, v, v;
boolean v, v;
java.io.InputStream v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.lang.String;
v := @parameter: java.io.OutputStream;
v := @parameter: java.util.List;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Running command \u on host: \u0001");
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>(v);
label:
v = 0;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session>;
if v != null goto label;
v = 1;
label:
if v == 0 goto label;
specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: void openConnection()>();
label:
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.io.InputStream listInputStream(java.util.List)>(v);
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int exec(java.lang.String,java.io.OutputStream,java.io.InputStream)>(v, v, v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session>;
staticinvoke <org.glassfish.cluster.ssh.util.SSHUtil: void unregister(com.jcraft.jsch.Session)>(v);
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session> = null;
label:
return v;
}
private int exec(java.lang.String, java.io.OutputStream, java.io.InputStream) throws com.jcraft.jsch.JSchException, java.io.IOException, java.lang.InterruptedException
{
java.io.OutputStream v;
java.lang.Throwable v;
com.jcraft.jsch.Channel v;
org.glassfish.cluster.ssh.launcher.SSHLauncher$PumpThread v, v;
com.jcraft.jsch.Session v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
int v;
java.lang.String v;
java.io.InputStream v, v, v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.lang.String;
v := @parameter: java.io.OutputStream;
v := @parameter: java.io.InputStream;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session>;
v = virtualinvoke v.<com.jcraft.jsch.Session: com.jcraft.jsch.Channel openChannel(java.lang.String)>("exec");
label:
virtualinvoke v.<com.jcraft.jsch.ChannelExec: void setInputStream(java.io.InputStream)>(v);
virtualinvoke v.<com.jcraft.jsch.ChannelExec: void setCommand(java.lang.String)>(v);
v = virtualinvoke v.<com.jcraft.jsch.ChannelExec: java.io.InputStream getInputStream()>();
virtualinvoke v.<com.jcraft.jsch.ChannelExec: void connect()>();
v = new org.glassfish.cluster.ssh.launcher.SSHLauncher$PumpThread;
specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher$PumpThread: void <init>(java.io.InputStream,java.io.OutputStream)>(v, v);
virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher$PumpThread: void start()>();
v = new org.glassfish.cluster.ssh.launcher.SSHLauncher$PumpThread;
v = virtualinvoke v.<com.jcraft.jsch.ChannelExec: java.io.InputStream getErrStream()>();
specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher$PumpThread: void <init>(java.io.InputStream,java.io.OutputStream)>(v, v);
virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher$PumpThread: void start()>();
virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher$PumpThread: void join()>();
virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher$PumpThread: void join()>();
v = virtualinvoke v.<com.jcraft.jsch.ChannelExec: int getExitStatus()>();
label:
virtualinvoke v.<com.jcraft.jsch.ChannelExec: void disconnect()>();
return v;
label:
v := @caughtexception;
virtualinvoke v.<com.jcraft.jsch.ChannelExec: void disconnect()>();
throw v;
catch java.lang.Throwable from label to label with label;
}
private int exec(java.lang.String, java.io.OutputStream) throws com.jcraft.jsch.JSchException, java.io.IOException, java.lang.InterruptedException
{
java.io.OutputStream v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
int v;
java.lang.String v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.lang.String;
v := @parameter: java.io.OutputStream;
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int exec(java.lang.String,java.io.OutputStream,java.io.InputStream)>(v, v, null);
return v;
}
private java.io.InputStream listInputStream(java.util.List) throws java.io.IOException
{
byte[] v, v;
java.io.ByteArrayOutputStream v;
java.util.Iterator v;
char v;
java.util.List v;
java.io.ByteArrayInputStream v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
java.lang.Object v;
boolean v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.util.List;
if v != null goto label;
return null;
label:
v = new java.io.ByteArrayOutputStream;
specialinvoke v.<java.io.ByteArrayOutputStream: void <init>()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<java.lang.String: byte[] getBytes()>();
virtualinvoke v.<java.io.ByteArrayOutputStream: void write(byte[])>(v);
v = <org.glassfish.cluster.ssh.launcher.SSHLauncher: char LINE_SEP>;
virtualinvoke v.<java.io.ByteArrayOutputStream: void write(int)>(v);
goto label;
label:
v = new java.io.ByteArrayInputStream;
v = virtualinvoke v.<java.io.ByteArrayOutputStream: byte[] toByteArray()>();
specialinvoke v.<java.io.ByteArrayInputStream: void <init>(byte[])>(v);
return v;
}
public void pingConnection() throws com.jcraft.jsch.JSchException, java.lang.InterruptedException
{
com.jcraft.jsch.Session v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
java.lang.String v, v;
java.util.logging.Logger v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Pinging connection for host: \u0001");
virtualinvoke v.<java.util.logging.Logger: void fine(java.lang.String)>(v);
specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: void openConnection()>();
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session>;
staticinvoke <org.glassfish.cluster.ssh.util.SSHUtil: void unregister(com.jcraft.jsch.Session)>(v);
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session> = null;
return;
}
public void validate(java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.util.logging.Logger) throws java.io.IOException
{
java.lang.Throwable v, v;
int v;
java.lang.String v, v, v, v, v, v, v, v, v;
boolean v, v, v, v;
java.io.IOException v, v;
java.util.logging.Logger v;
java.io.FileNotFoundException v;
com.jcraft.jsch.Session v, v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
org.glassfish.cluster.ssh.sftp.SFTPClient v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.util.logging.Logger;
virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: void init(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String,java.util.logging.Logger)>(v, v, v, v, v, v, v);
label:
specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: void openConnection()>();
virtualinvoke v.<java.util.logging.Logger: void fine(java.lang.String)>("Connection settings valid");
v = v;
v = staticinvoke <com.sun.enterprise.util.StringUtils: boolean ok(java.lang.String)>(v);
if v == 0 goto label;
v = new org.glassfish.cluster.ssh.sftp.SFTPClient;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session>;
specialinvoke v.<org.glassfish.cluster.ssh.sftp.SFTPClient: void <init>(com.jcraft.jsch.Session)>(v);
v = virtualinvoke v.<org.glassfish.cluster.ssh.sftp.SFTPClient: boolean exists(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <com.sun.enterprise.util.StringUtils: boolean ok(java.lang.String)>(v);
if v == 0 goto label;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001/\u0001");
label:
v = virtualinvoke v.<org.glassfish.cluster.ssh.sftp.SFTPClient: boolean exists(java.lang.String)>(v);
goto label;
label:
v = 0;
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session>;
staticinvoke <org.glassfish.cluster.ssh.util.SSHUtil: void unregister(com.jcraft.jsch.Session)>(v);
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session> = null;
if v != 0 goto label;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Invalid install directory: could not find \u on \u0001");
v = new java.io.FileNotFoundException;
specialinvoke v.<java.io.FileNotFoundException: void <init>(java.lang.String)>(v);
throw v;
label:
virtualinvoke v.<java.util.logging.Logger: void fine(java.lang.String)>("Node home validated");
label:
goto label;
label:
v := @caughtexception;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch com.jcraft.jsch.JSchException from label to label with label;
catch com.jcraft.jsch.SftpException from label to label with label;
}
public void validate(java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.util.logging.Logger) throws java.io.IOException
{
java.util.logging.Logger v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
int v;
java.lang.String v, v, v, v, v, v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.util.logging.Logger;
virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: void validate(java.lang.String,int,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.util.logging.Logger)>(v, v, v, v, v, v, v, null, v);
return;
}
public org.glassfish.cluster.ssh.sftp.SFTPClient getSFTPClient() throws com.jcraft.jsch.JSchException
{
com.jcraft.jsch.Session v;
org.glassfish.cluster.ssh.sftp.SFTPClient v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: void openConnection()>();
v = new org.glassfish.cluster.ssh.sftp.SFTPClient;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session>;
specialinvoke v.<org.glassfish.cluster.ssh.sftp.SFTPClient: void <init>(com.jcraft.jsch.Session)>(v);
return v;
}
public java.lang.String expandPasswordAlias(java.lang.String)
{
java.lang.String[] v;
java.util.logging.Logger v;
java.lang.Exception v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
java.lang.String v, v, v, v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.lang.String;
if v != null goto label;
return null;
label:
v = staticinvoke <org.glassfish.internal.api.RelativePathResolver: java.lang.String getRealPasswordFromAlias(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = newarray (java.lang.String)[2];
v[0] = v;
v = virtualinvoke v.<java.lang.Exception: java.lang.String getMessage()>();
v[1] = v;
v = staticinvoke <com.sun.enterprise.util.StringUtils: java.lang.String cat(java.lang.String,java.lang.String[])>(": ", v);
virtualinvoke v.<java.util.logging.Logger: void warning(java.lang.String)>(v);
return null;
label:
return v;
catch java.lang.Exception from label to label with label;
}
public boolean isPasswordAlias(java.lang.String)
{
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
java.lang.String v, v;
boolean v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.lang.String;
v = staticinvoke <org.glassfish.internal.api.RelativePathResolver: java.lang.String getAlias(java.lang.String)>(v);
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private java.lang.String getPrintablePassword(java.lang.String)
{
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
java.lang.String v, v;
boolean v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.lang.String;
v = "null";
if v == null goto label;
v = virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: boolean isPasswordAlias(java.lang.String)>(v);
if v == 0 goto label;
v = v;
goto label;
label:
v = "<concealed>";
label:
return v;
}
public void setupKey(java.lang.String, java.lang.String, boolean, java.lang.String) throws java.io.IOException, java.lang.InterruptedException
{
java.lang.Exception v;
com.jcraft.jsch.Session v;
org.glassfish.cluster.ssh.sftp.SFTPClient v;
java.lang.Throwable v, v, v;
java.io.ByteArrayOutputStream v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.io.IOException v, v, v, v, v, v, v, v, v, v, v;
java.io.File v, v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.logging.Logger v, v, v, v, v, v, v, v, v, v, v, v;
com.jcraft.jsch.JSch v;
java.util.logging.Level v, v, v, v, v;
int v, v, v;
com.jcraft.jsch.ChannelSftp v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v := @parameter: java.lang.String;
v = new java.io.File;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Key = \u0001");
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>(v);
label:
v = virtualinvoke v.<java.io.File: boolean exists()>();
if v == 0 goto label;
v = virtualinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: boolean checkConnection()>();
if v == 0 goto label;
v = new java.io.IOException;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String userName>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("SSH public key authentication is already configured for \u0001@\u0001");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
if v == 0 goto label;
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: boolean generateKeyPair()>();
if v != 0 goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("SSH key pair generation failed. Please generate key manually.");
throw v;
label:
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("SSH key pair not present. Please generate a key pair manually or specify an existing one and re-run the command.");
throw v;
label:
if v != null goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("SSH password is required for distributing the public key. You can specify the SSH password in a password file and pass it through --passwordfile option.");
throw v;
label:
v = new com.jcraft.jsch.JSch;
specialinvoke v.<com.jcraft.jsch.JSch: void <init>()>();
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String userName>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int port>;
v = virtualinvoke v.<com.jcraft.jsch.JSch: com.jcraft.jsch.Session getSession(java.lang.String,java.lang.String,int)>(v, v, v);
virtualinvoke v.<com.jcraft.jsch.Session: void setConfig(java.lang.String,java.lang.String)>("StrictHostKeyChecking", "no");
virtualinvoke v.<com.jcraft.jsch.Session: void setPassword(java.lang.String)>(v);
virtualinvoke v.<com.jcraft.jsch.Session: void connect()>();
v = virtualinvoke v.<com.jcraft.jsch.Session: boolean isConnected()>();
if v != 0 goto label;
v = new java.io.IOException;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String userName>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("SSH password authentication failed for user \u on host \u0001");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
v = new org.glassfish.cluster.ssh.sftp.SFTPClient;
specialinvoke v.<org.glassfish.cluster.ssh.sftp.SFTPClient: void <init>(com.jcraft.jsch.Session)>(v);
v = virtualinvoke v.<org.glassfish.cluster.ssh.sftp.SFTPClient: com.jcraft.jsch.ChannelSftp getSftpChannel()>();
v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: com.jcraft.jsch.Session session> = v;
v = virtualinvoke v.<java.io.File: boolean exists()>();
if v == 0 goto label;
specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: boolean setupSSHDir()>();
if v != null goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u.pub");
label:
v = new java.io.File;
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<java.io.File: boolean exists()>();
if v != 0 goto label;
v = new java.io.IOException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Public key file \u does not exist.");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
v = <org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String SSH_DIR>;
v = virtualinvoke v.<org.glassfish.cluster.ssh.sftp.SFTPClient: boolean exists(java.lang.String)>(v);
if v != 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINE>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String SSH_DIR>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u does not exist");
virtualinvoke v.<java.util.logging.Logger: void fine(java.lang.String)>(v);
label:
v = virtualinvoke v.<com.jcraft.jsch.ChannelSftp: java.lang.String getHome()>();
virtualinvoke v.<com.jcraft.jsch.ChannelSftp: void cd(java.lang.String)>(v);
virtualinvoke v.<com.jcraft.jsch.ChannelSftp: void mkdir(java.lang.String)>(".ssh");
virtualinvoke v.<com.jcraft.jsch.ChannelSftp: void chmod(int,java.lang.String)>(448, ".ssh");
label:
goto label;
label:
v := @caughtexception;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
virtualinvoke v.<java.lang.Exception: void printStackTrace()>();
label:
v = new java.io.IOException;
v = virtualinvoke v.<java.lang.Exception: java.lang.String getMessage()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Error while creating .ssh directory on remote host:\u0001");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
virtualinvoke v.<com.jcraft.jsch.ChannelSftp: void cd(java.lang.String)>(".ssh");
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
virtualinvoke v.<com.jcraft.jsch.ChannelSftp: void put(java.lang.String,java.lang.String)>(v, "key.tmp");
virtualinvoke v.<com.jcraft.jsch.ChannelSftp: void chmod(int,java.lang.String)>(384, "key.tmp");
label:
goto label;
label:
v := @caughtexception;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String,java.lang.Throwable)>("Unable to copy the public key", v);
throw v;
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>("cd .ssh; cat key.tmp >> authorized_keys") <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("mergeCommand = \u0001");
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>(v);
label:
v = new java.io.ByteArrayOutputStream;
specialinvoke v.<java.io.ByteArrayOutputStream: void <init>()>();
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int exec(java.lang.String,java.io.OutputStream)>("cd .ssh; cat key.tmp >> authorized_keys", v);
if v == 0 goto label;
v = new java.io.IOException;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Failed to propogate the public key \u to \u0001");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String userName>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String)>(v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Copied keyfile \u to \u0001@\u0001");
virtualinvoke v.<java.util.logging.Logger: void info(java.lang.String)>(v);
v = new java.io.ByteArrayOutputStream;
specialinvoke v.<java.io.ByteArrayOutputStream: void <init>()>();
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int exec(java.lang.String,java.io.OutputStream)>("rm .ssh/key.tmp", v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("WARNING: Failed to remove the public key file key.tmp on remote host \u0001");
virtualinvoke v.<java.util.logging.Logger: void warning(java.lang.String)>(v);
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>("Removed the temporary key file on remote host");
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
virtualinvoke v.<java.util.logging.Logger: void info(java.lang.String)>("Fixing file permissions for home(755), .ssh(700) and authorized_keys file(644)");
label:
v = virtualinvoke v.<com.jcraft.jsch.ChannelSftp: java.lang.String getHome()>();
virtualinvoke v.<com.jcraft.jsch.ChannelSftp: void cd(java.lang.String)>(v);
virtualinvoke v.<com.jcraft.jsch.ChannelSftp: void chmod(int,java.lang.String)>(493, ".");
virtualinvoke v.<com.jcraft.jsch.ChannelSftp: void chmod(int,java.lang.String)>(448, ".ssh");
v = <org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String SSH_DIR>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001authorized_keys");
virtualinvoke v.<com.jcraft.jsch.ChannelSftp: void chmod(int,java.lang.String)>(420, v);
label:
goto label;
label:
v := @caughtexception;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String,java.lang.Throwable)>("Unable to fix file permissions", v);
throw v;
label:
virtualinvoke v.<org.glassfish.cluster.ssh.sftp.SFTPClient: void close()>();
label:
goto label;
label:
v := @caughtexception;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch java.lang.Exception from label to label with label;
catch com.jcraft.jsch.SftpException from label to label with label;
catch com.jcraft.jsch.SftpException from label to label with label;
catch com.jcraft.jsch.JSchException from label to label with label;
}
public static byte[] toByteArray(java.io.InputStream) throws java.io.IOException
{
byte[] v, v;
java.io.ByteArrayOutputStream v;
int v;
java.io.InputStream v;
v := @parameter: java.io.InputStream;
v = new java.io.ByteArrayOutputStream;
specialinvoke v.<java.io.ByteArrayOutputStream: void <init>()>();
v = newarray (byte)[4096];
label:
v = virtualinvoke v.<java.io.InputStream: int read(byte[])>(v);
if v < 0 goto label;
virtualinvoke v.<java.io.ByteArrayOutputStream: void write(byte[],int,int)>(v, 0, v);
goto label;
label:
v = virtualinvoke v.<java.io.ByteArrayOutputStream: byte[] toByteArray()>();
virtualinvoke v.<java.io.ByteArrayOutputStream: void close()>();
return v;
}
public boolean checkConnection()
{
java.lang.Throwable v, v, v;
com.jcraft.jsch.JSch v;
java.util.logging.Level v, v, v;
int v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v;
boolean v, v, v;
java.util.logging.Logger v, v, v, v, v, v;
java.io.File v;
com.jcraft.jsch.Session v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v = 0;
v = new com.jcraft.jsch.JSch;
specialinvoke v.<com.jcraft.jsch.JSch: void <init>()>();
v = null;
label:
v = new java.io.File;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>("Checking connection...");
label:
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawKeyPassPhrase>;
virtualinvoke v.<com.jcraft.jsch.JSch: void addIdentity(java.lang.String,java.lang.String)>(v, v);
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String userName>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int port>;
v = virtualinvoke v.<com.jcraft.jsch.JSch: com.jcraft.jsch.Session getSession(java.lang.String,java.lang.String,int)>(v, v, v);
virtualinvoke v.<com.jcraft.jsch.Session: void setConfig(java.lang.String,java.lang.String)>("StrictHostKeyChecking", "no");
virtualinvoke v.<com.jcraft.jsch.Session: void connect()>();
v = virtualinvoke v.<com.jcraft.jsch.Session: boolean isConnected()>();
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String userName>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String)>(v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Successfully connected to \u0001@\u using keyfile \u0001");
virtualinvoke v.<java.util.logging.Logger: void info(java.lang.String)>(v);
label:
virtualinvoke v.<com.jcraft.jsch.Session: void disconnect()>();
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<com.jcraft.jsch.JSchException: java.lang.Throwable getCause()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String getMessage()>();
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Failed to connect or authenticate: \u0001");
virtualinvoke v.<java.util.logging.Logger: void warning(java.lang.String)>(v);
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Throwable)>(v, "Failed to connect or autheticate: ", v);
label:
if v == null goto label;
virtualinvoke v.<com.jcraft.jsch.Session: void disconnect()>();
goto label;
label:
v := @caughtexception;
if v == null goto label;
virtualinvoke v.<com.jcraft.jsch.Session: void disconnect()>();
label:
throw v;
label:
return v;
catch com.jcraft.jsch.JSchException from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public boolean checkPasswordAuth()
{
java.lang.Throwable v, v, v;
com.jcraft.jsch.JSch v;
java.util.logging.Level v, v, v, v;
int v;
java.lang.String v, v, v, v, v, v, v, v;
boolean v, v, v, v;
java.util.logging.Logger v, v, v, v, v, v, v;
com.jcraft.jsch.Session v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v = 0;
v = new com.jcraft.jsch.JSch;
specialinvoke v.<com.jcraft.jsch.JSch: void <init>()>();
v = null;
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>("Checking connection...");
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String userName>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int port>;
v = virtualinvoke v.<com.jcraft.jsch.JSch: com.jcraft.jsch.Session getSession(java.lang.String,java.lang.String,int)>(v, v, v);
virtualinvoke v.<com.jcraft.jsch.Session: void setConfig(java.lang.String,java.lang.String)>("StrictHostKeyChecking", "no");
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String password>;
virtualinvoke v.<com.jcraft.jsch.Session: void setPassword(java.lang.String)>(v);
virtualinvoke v.<com.jcraft.jsch.Session: void connect()>();
v = virtualinvoke v.<com.jcraft.jsch.Session: boolean isConnected()>();
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String userName>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Successfully connected to \u0001@\u using password authentication");
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>(v);
label:
virtualinvoke v.<com.jcraft.jsch.Session: void disconnect()>();
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<com.jcraft.jsch.JSchException: java.lang.Throwable getCause()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String getMessage()>();
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Failed to connect or authenticate: \u0001");
virtualinvoke v.<java.util.logging.Logger: void warning(java.lang.String)>(v);
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Throwable)>(v, "Failed to connect or autheticate: ", v);
label:
if v == null goto label;
virtualinvoke v.<com.jcraft.jsch.Session: void disconnect()>();
goto label;
label:
v := @caughtexception;
if v == null goto label;
virtualinvoke v.<com.jcraft.jsch.Session: void disconnect()>();
label:
throw v;
label:
return v;
catch com.jcraft.jsch.JSchException from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private boolean generateKeyPair() throws java.io.IOException
{
boolean v, v, v, v, v, v, v, v;
java.util.logging.Logger v, v, v, v, v, v, v, v, v, v, v;
java.lang.Throwable v;
java.util.ArrayList v;
java.util.logging.Level v, v, v, v, v;
com.sun.enterprise.universal.process.ProcessManager v;
java.lang.StringBuffer v, v, v, v, v, v, v, v, v;
int v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.io.IOException v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String findSSHKeygen()>();
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Using \u to generate key pair");
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>(v);
label:
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: boolean setupSSHDir()>();
if v != 0 goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("Failed to set proper permissions on .ssh directory");
throw v;
label:
v = new java.lang.StringBuffer;
specialinvoke v.<java.lang.StringBuffer: void <init>()>();
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-t");
v = virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(" ");
virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>("-t");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("rsa");
v = virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(" ");
virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>("rsa");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-N");
v = virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(" ");
virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>("-N");
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawKeyPassPhrase>;
if v == null goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawKeyPassPhrase>;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawKeyPassPhrase>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(" ");
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawKeyPassPhrase>;
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String getPrintablePassword(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(v);
goto label;
label:
v = staticinvoke <com.sun.enterprise.util.OS: boolean isWindows()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("\"\"");
v = virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(" ");
virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>("\"\"");
goto label;
label:
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("");
v = virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(" ");
virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>("");
label:
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-f");
v = virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(" ");
virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>("-f");
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(" ");
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(v);
v = new com.sun.enterprise.universal.process.ProcessManager;
specialinvoke v.<com.sun.enterprise.universal.process.ProcessManager: void <init>(java.util.List)>(v);
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.StringBuffer)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Command = \u0001");
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>(v);
label:
virtualinvoke v.<com.sun.enterprise.universal.process.ProcessManager: void setTimeoutMsec(int)>(120000);
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
virtualinvoke v.<com.sun.enterprise.universal.process.ProcessManager: void setEcho(boolean)>(1);
goto label;
label:
virtualinvoke v.<com.sun.enterprise.universal.process.ProcessManager: void setEcho(boolean)>(0);
label:
v = virtualinvoke v.<com.sun.enterprise.universal.process.ProcessManager: int execute()>();
label:
goto label;
label:
v := @caughtexception;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINE>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = virtualinvoke v.<com.sun.enterprise.universal.process.ProcessManagerException: java.lang.String getMessage()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Error while executing ssh-keygen: \u0001");
virtualinvoke v.<java.util.logging.Logger: void fine(java.lang.String)>(v);
label:
v = 1;
label:
if v != 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u successfully generated the identification \u0001");
virtualinvoke v.<java.util.logging.Logger: void info(java.lang.String)>(v);
goto label;
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = virtualinvoke v.<com.sun.enterprise.universal.process.ProcessManager: java.lang.String getStderr()>();
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>(v);
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u failed");
virtualinvoke v.<java.util.logging.Logger: void info(java.lang.String)>(v);
label:
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
catch com.sun.enterprise.universal.process.ProcessManagerException from label to label with label;
}
private java.lang.String findSSHKeygen()
{
java.lang.String[] v;
java.util.ArrayList v;
java.util.logging.Level v;
java.lang.String v, v, v, v, v, v;
boolean v, v, v, v;
java.util.Iterator v;
java.util.logging.Logger v, v;
java.io.File v, v;
java.util.List v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
java.lang.Object v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v = new java.util.ArrayList;
v = newarray (java.lang.String)[2];
v[0] = "/usr/bin/";
v[1] = "/usr/local/bin/";
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = staticinvoke <com.sun.enterprise.util.OS: boolean isWindows()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("C:/cygwin/bin/");
v = staticinvoke <java.lang.System: java.lang.String getenv(java.lang.String)>("ROOTDIR");
if v == null goto label;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001/bin/");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.util.List)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Paths = \u0001");
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>(v);
label:
v = staticinvoke <com.sun.enterprise.universal.process.ProcessUtils: java.io.File getExe(java.lang.String)>("ssh-keygen");
if v == null goto label;
v = virtualinvoke v.<java.io.File: java.lang.String getPath()>();
return v;
label:
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = new java.io.File;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001ssh-keygen");
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<java.io.File: boolean canExecute()>();
if v == 0 goto label;
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
return v;
label:
return "ssh-keygen";
}
private boolean setupSSHDir() throws java.io.IOException
{
java.util.logging.Level v;
java.lang.String v, v, v, v, v, v;
boolean v, v, v, v, v, v, v, v, v, v;
java.io.IOException v;
java.util.logging.Logger v, v, v;
java.io.File v, v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v = 1;
v = new java.io.File;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("user.home");
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = new java.io.File;
v = <org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String SSH_DIR>;
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
v = staticinvoke <com.sun.enterprise.util.io.FileUtils: boolean safeIsDirectory(java.io.File)>(v);
if v != 0 goto label;
v = virtualinvoke v.<java.io.File: boolean mkdirs()>();
if v != 0 goto label;
v = new java.io.IOException;
v = virtualinvoke v.<java.io.File: java.lang.String getPath()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Failed to create \u0001");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = virtualinvoke v.<java.io.File: java.lang.String toString()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Created directory \u0001");
virtualinvoke v.<java.util.logging.Logger: void info(java.lang.String)>(v);
label:
v = virtualinvoke v.<java.io.File: boolean setReadable(boolean,boolean)>(0, 0);
if v == 0 goto label;
v = virtualinvoke v.<java.io.File: boolean setReadable(boolean)>(1);
if v != 0 goto label;
label:
v = 0;
label:
v = virtualinvoke v.<java.io.File: boolean setWritable(boolean,boolean)>(0, 0);
if v == 0 goto label;
v = virtualinvoke v.<java.io.File: boolean setWritable(boolean)>(1);
if v != 0 goto label;
label:
v = 0;
label:
v = virtualinvoke v.<java.io.File: boolean setExecutable(boolean,boolean)>(0, 0);
if v == 0 goto label;
v = virtualinvoke v.<java.io.File: boolean setExecutable(boolean)>(1);
if v != 0 goto label;
label:
v = 0;
label:
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINER>;
v = virtualinvoke v.<java.util.logging.Logger: boolean isLoggable(java.util.logging.Level)>(v);
if v == 0 goto label;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.util.logging.Logger logger>;
virtualinvoke v.<java.util.logging.Logger: void finer(java.lang.String)>("Fixed the .ssh directory permissions to 0700");
label:
return v;
}
public java.lang.String toString()
{
java.lang.Object[] v;
java.lang.Integer v;
org.glassfish.cluster.ssh.launcher.SSHLauncher v;
int v;
java.lang.String v, v, v, v, v, v, v, v, v, v;
v := @this: org.glassfish.cluster.ssh.launcher.SSHLauncher;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawPassword>;
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String getPrintablePassword(java.lang.String)>(v);
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String rawKeyPassPhrase>;
v = specialinvoke v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String getPrintablePassword(java.lang.String)>(v);
v = newarray (java.lang.Object)[8];
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String host>;
v[0] = v;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: int port>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String userName>;
v[2] = v;
v[3] = v;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String keyFile>;
v[4] = v;
v[5] = v;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String authType>;
v[6] = v;
v = v.<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String knownHostsLocation>;
v[7] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("host=%s port=%d user=%s password=%s keyFile=%s keyPassPhrase=%s authType=%s knownHostFile=%s", v);
return v;
}
private static java.lang.String commandListToQuotedString(java.util.List)
{
java.util.Iterator v;
java.util.List v;
int v;
java.lang.Object v, v;
java.lang.StringBuilder v;
java.lang.String v, v;
boolean v, v, v;
v := @parameter: java.util.List;
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 1 goto label;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
return v;
label:
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
v = 1;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
if v != 0 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(" ");
goto label;
label:
v = 0;
label:
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>(" ");
if v == 0 goto label;
v = staticinvoke <com.sun.enterprise.util.io.FileUtils: java.lang.String quoteString(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
static void <clinit>()
{
char v;
java.lang.Class v;
java.lang.String v, v, v;
boolean v, v;
v = class "Lorg/glassfish/cluster/ssh/launcher/SSHLauncher;";
v = virtualinvoke v.<java.lang.Class: boolean desiredAssertionStatus()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
<org.glassfish.cluster.ssh.launcher.SSHLauncher: boolean $assertionsDisabled> = v;
v = <java.io.File: java.lang.String separator>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>(".ssh\u0001");
<org.glassfish.cluster.ssh.launcher.SSHLauncher: java.lang.String SSH_DIR> = v;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("line.separator");
v = virtualinvoke v.<java.lang.String: char charAt(int)>(0);
<org.glassfish.cluster.ssh.launcher.SSHLauncher: char LINE_SEP> = v;
return;
}
}