diff --git a/src/main/java/de/felixletsplays/CredentialManager/App.java b/src/main/java/de/felixletsplays/CredentialManager/App.java index fb538f6..a4b7dda 100644 --- a/src/main/java/de/felixletsplays/CredentialManager/App.java +++ b/src/main/java/de/felixletsplays/CredentialManager/App.java @@ -1,8 +1,13 @@ package de.felixletsplays.CredentialManager; +import de.felixletsplays.CredentialManager.Connection.Connection; import de.felixletsplays.CredentialManager.Connection.Utils; +import java.io.IOException; + import java.util.Scanner; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.swing.JOptionPane; @@ -56,7 +61,7 @@ public static void main(String[] args) { System.out.print("> "); command = input.nextLine(); - if (command != null) { + if (command != null || !command.isBlank()) { if (command.startsWith("?")) { cmd.displayHelp(); } else if (command.startsWith("^")) { @@ -71,6 +76,14 @@ public static void main(String[] args) { cmd.view(input, command); } else if (command.startsWith("list")) { cmd.list(input, command); + } else { + try { + Connection connectTo = new Utils().readConnectionConfig(command); + connectTo.connect(); + } catch (IOException | InterruptedException ex) { + System.out.println("This connection does not exists!"); + System.err.println(ex.getMessage()); + } } } } diff --git a/src/main/java/de/felixletsplays/CredentialManager/Connection/Connection.java b/src/main/java/de/felixletsplays/CredentialManager/Connection/Connection.java index 43a5868..64ef417 100644 --- a/src/main/java/de/felixletsplays/CredentialManager/Connection/Connection.java +++ b/src/main/java/de/felixletsplays/CredentialManager/Connection/Connection.java @@ -1,23 +1,30 @@ package de.felixletsplays.CredentialManager.Connection; +import de.felixletsplays.CredentialManager.App; +import java.io.BufferedReader; + import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.util.Scanner; /** * Class to create a connection object - * + * * @author Felix */ public class Connection { - + private String ID; - + private String remotehost; private String user; - + private String keyPath; - + private String args; - + public Connection(ConnectionBuilder builder) { this.ID = builder.getID(); this.remotehost = builder.getRemotehost(); @@ -65,22 +72,26 @@ public String getArgs() { public void setArgs(String args) { this.args = args; } - + /** * Create a new process and connect with SSH + * * @throws java.io.IOException + * @throws java.lang.InterruptedException */ - public void connect() throws IOException { + public void connect() throws IOException, InterruptedException { String keyfilearg = ""; - if (!keyfilearg.isEmpty() || !keyfilearg.isBlank()) { - keyfilearg = "-i " + keyPath; + if (!getKeyPath().isEmpty() || !getKeyPath().isBlank()) { + keyfilearg = "-i" + keyPath.trim(); } - + ProcessBuilder builder = new ProcessBuilder("ssh", this.user + "@" + this.remotehost, keyfilearg, args); + builder.redirectError(ProcessBuilder.Redirect.INHERIT); builder.redirectInput(ProcessBuilder.Redirect.INHERIT); builder.redirectOutput(ProcessBuilder.Redirect.INHERIT); - builder.redirectError(ProcessBuilder.Redirect.INHERIT); - + builder.inheritIO(); + Process sshProcess = builder.start(); + sshProcess.waitFor(); } }