static public URI uri(String uri, Object... parameters) { String s = format(uri, parameters); return new MutableUri(s).toURI(); }
public MutableUri(URI uri) { this.apply(uri); }
static public MutableUri of(String uri, Object... parameters) { String s = format(uri, parameters); return new MutableUri(s); }
@Override protected Result doRun() throws BlazeException { ObjectHelper.requireNonNull(uri, "uri cannot be null"); ObjectHelper.requireNonNull(uri.getScheme(), "uri scheme is required for ssh (e.g. ssh://user@host)"); ObjectHelper.requireNonNull(uri.getHost(), "uri host is required for ssh"); Integer port = (uri.getPort() != null ? uri.getPort() : 22); String username = (uri.getUsername() != null ? uri.getUsername() : System.getProperty("user.name")); Config config = configRepository.getConfig(uri.getHost()); if (uri.getUsername() != null) { jschSession = jsch.getSession(uri.getUsername(), uri.getHost()); } else if (config.getUser() == null) { jschSession = jsch.getSession(username, uri.getHost()); } else { jschSession = jsch.getSession(uri.getHost()); jschSession = jsch.getSession(username, uri.getHost(), port); if (uri.getPort() != null) { jschSession.setPort(uri.getPort()); uri.username(jschSession.getUserName()); uri.host(jschSession.getHost()); uri.port(jschSession.getPort()); return createResult(new JschSession(this.context, this.uri.toImmutableUri(), jsch, jschSession)); } catch (JSchException e) {
static public SshSession sshConnect(String uri) throws IOException { MutableUri u = MutableUri.of(uri); if (u.getScheme() == null) { throw new IOException("uri missing scheme (not in format such as ssh://host)"); } switch (u.getScheme()) { case "ssh": return SecureShells.sshConnect(uri).run(); case "vagrant+ssh": { String host = u.getHost(); log.info("Querying vagrant ssh-config for {}", host); return SecureShells.sshConnect("ssh://" + host) .configFile(VAGRANT_CLIENT.sshConfig(host)) .run(); } default: fail("Unsupported target uri. Support for either ssh://host or vagrant+ssh://host"); return null; } }
public ImmutableUri toImmutableUri() { return new MutableUri(this); }
@Override public SshConnect connect(Context context, MutableUri uri) { Path sshConfigFile = VAGRANT_CLIENT.sshConfig(uri.getHost()); return new JschConnect(context, uri).configFile(sshConfigFile); }
default public T host(String host) { getUri().host(host); return (T)this; }
default public T port(Integer port) { getUri().port(port); return (T)this; }
default public T username(String username) { getUri().username(username); return (T)this; }
static public SshConnect sshConnect(String uri) { return sshConnect(MutableUri.of(uri)); }
static public SshConnect sshConnect(MutableUri uri) { // load provider SshProvider provider = SchemeProvider.load(uri.getScheme(), SshProvider.class); return provider.connect(Contexts.currentContext(), uri); }
static public MutableUri of(String uri, Object... parameters) { String s = format(uri, parameters); return new MutableUri(s); }
public JschConnect(Context context) { this(context, new MutableUri("ssh:/")); }
default public T host(String host) { getUri().host(host); return (T)this; }
default public T port(Integer port) { getUri().port(port); return (T)this; }
default public T username(String username) { getUri().username(username); return (T)this; }