You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2022/11/26 12:49:10 UTC
[karaf] branch karaf-4.3.x updated: [KARAF-7607]: careful JLine/SSHD translation
This is an automated email from the ASF dual-hosted git repository.
jbonofre pushed a commit to branch karaf-4.3.x
in repository https://gitbox.apache.org/repos/asf/karaf.git
The following commit(s) were added to refs/heads/karaf-4.3.x by this push:
new 93b5dc8a7e [KARAF-7607]: careful JLine/SSHD translation
93b5dc8a7e is described below
commit 93b5dc8a7e56104390a1cf319295a11db993bfff
Author: Robert Varga <ro...@pantheon.tech>
AuthorDate: Thu Nov 10 04:00:22 2022 +0100
[KARAF-7607]: careful JLine/SSHD translation
(cherry picked from commit 0acc109093f46bf88f85b44308e549802262046a)
---
.../main/java/org/apache/karaf/client/Main.java | 40 +++++++++++---------
.../java/org/apache/karaf/shell/ssh/SshAction.java | 43 +++++++++++++---------
2 files changed, 48 insertions(+), 35 deletions(-)
diff --git a/client/src/main/java/org/apache/karaf/client/Main.java b/client/src/main/java/org/apache/karaf/client/Main.java
index f92b104ef0..9d3a11c999 100644
--- a/client/src/main/java/org/apache/karaf/client/Main.java
+++ b/client/src/main/java/org/apache/karaf/client/Main.java
@@ -39,7 +39,6 @@ import org.apache.sshd.agent.SshAgent;
import org.apache.sshd.agent.local.AgentImpl;
import org.apache.sshd.agent.local.LocalAgentFactory;
import org.apache.sshd.client.ClientBuilder;
-import org.apache.sshd.client.ClientFactoryManager;
import org.apache.sshd.client.SshClient;
import org.apache.sshd.client.auth.keyboard.UserInteraction;
import org.apache.sshd.client.channel.ChannelExec;
@@ -221,22 +220,22 @@ public class Main {
try {
Map<PtyMode, Integer> modes = new HashMap<>();
// Control chars
- modes.put(PtyMode.VINTR, attributes.getControlChar(ControlChar.VINTR));
- modes.put(PtyMode.VQUIT, attributes.getControlChar(ControlChar.VQUIT));
- modes.put(PtyMode.VERASE, attributes.getControlChar(ControlChar.VERASE));
- modes.put(PtyMode.VKILL, attributes.getControlChar(ControlChar.VKILL));
- modes.put(PtyMode.VEOF, attributes.getControlChar(ControlChar.VEOF));
- modes.put(PtyMode.VEOL, attributes.getControlChar(ControlChar.VEOL));
- modes.put(PtyMode.VEOL2, attributes.getControlChar(ControlChar.VEOL2));
- modes.put(PtyMode.VSTART, attributes.getControlChar(ControlChar.VSTART));
- modes.put(PtyMode.VSTOP, attributes.getControlChar(ControlChar.VSTOP));
- modes.put(PtyMode.VSUSP, attributes.getControlChar(ControlChar.VSUSP));
- modes.put(PtyMode.VDSUSP, attributes.getControlChar(ControlChar.VDSUSP));
- modes.put(PtyMode.VREPRINT, attributes.getControlChar(ControlChar.VREPRINT));
- modes.put(PtyMode.VWERASE, attributes.getControlChar(ControlChar.VWERASE));
- modes.put(PtyMode.VLNEXT, attributes.getControlChar(ControlChar.VLNEXT));
- modes.put(PtyMode.VSTATUS, attributes.getControlChar(ControlChar.VSTATUS));
- modes.put(PtyMode.VDISCARD, attributes.getControlChar(ControlChar.VDISCARD));
+ addMode(modes, PtyMode.VINTR, attributes, ControlChar.VINTR);
+ addMode(modes, PtyMode.VQUIT, attributes, ControlChar.VQUIT);
+ addMode(modes, PtyMode.VERASE, attributes, ControlChar.VERASE);
+ addMode(modes, PtyMode.VKILL, attributes, ControlChar.VKILL);
+ addMode(modes, PtyMode.VEOF, attributes, ControlChar.VEOF);
+ addMode(modes, PtyMode.VEOL, attributes, ControlChar.VEOL);
+ addMode(modes, PtyMode.VEOL2, attributes, ControlChar.VEOL2);
+ addMode(modes, PtyMode.VSTART, attributes, ControlChar.VSTART);
+ addMode(modes, PtyMode.VSTOP, attributes, ControlChar.VSTOP);
+ addMode(modes, PtyMode.VSUSP, attributes, ControlChar.VSUSP);
+ addMode(modes, PtyMode.VDSUSP, attributes, ControlChar.VDSUSP);
+ addMode(modes, PtyMode.VREPRINT, attributes, ControlChar.VREPRINT);
+ addMode(modes, PtyMode.VWERASE, attributes, ControlChar.VWERASE);
+ addMode(modes, PtyMode.VLNEXT, attributes, ControlChar.VLNEXT);
+ addMode(modes, PtyMode.VSTATUS, attributes, ControlChar.VSTATUS);
+ addMode(modes, PtyMode.VDISCARD, attributes, ControlChar.VDISCARD);
// Input flags
modes.put(PtyMode.IGNPAR, getFlag(attributes, InputFlag.IGNPAR));
modes.put(PtyMode.PARMRK, getFlag(attributes, InputFlag.PARMRK));
@@ -338,6 +337,13 @@ public class Main {
}
}
+ private static void addMode(Map<PtyMode, Integer> modes, PtyMode mode, Attributes attributes, ControlChar ctrl) {
+ final int value = attributes.getControlChar(ctrl);
+ if (value != -1) {
+ modes.put(mode, value);
+ }
+ }
+
private static int getFlag(Attributes attributes, InputFlag flag) {
return attributes.getInputFlag(flag) ? 1 : 0;
}
diff --git a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java
index b0d7b04022..bbd4a6c3a3 100644
--- a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java
+++ b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java
@@ -37,13 +37,13 @@ import org.apache.karaf.shell.api.action.lifecycle.Service;
import org.apache.karaf.shell.api.console.Session;
import org.apache.karaf.shell.api.console.Terminal;
import org.apache.sshd.agent.SshAgent;
-import org.apache.sshd.client.channel.ClientChannelEvent;
-import org.apache.sshd.client.keyverifier.ServerKeyVerifier;
import org.apache.sshd.client.SshClient;
import org.apache.sshd.client.auth.keyboard.UserInteraction;
import org.apache.sshd.client.channel.ChannelShell;
import org.apache.sshd.client.channel.ClientChannel;
+import org.apache.sshd.client.channel.ClientChannelEvent;
import org.apache.sshd.client.future.ConnectFuture;
+import org.apache.sshd.client.keyverifier.ServerKeyVerifier;
import org.apache.sshd.client.session.ClientSession;
import org.apache.sshd.common.channel.PtyMode;
import org.apache.sshd.common.keyprovider.FileKeyPairProvider;
@@ -193,22 +193,22 @@ public class SshAction implements Action {
try {
Map<PtyMode, Integer> modes = new HashMap<>();
// Control chars
- modes.put(PtyMode.VINTR, attributes.getControlChar(ControlChar.VINTR));
- modes.put(PtyMode.VQUIT, attributes.getControlChar(ControlChar.VQUIT));
- modes.put(PtyMode.VERASE, attributes.getControlChar(ControlChar.VERASE));
- modes.put(PtyMode.VKILL, attributes.getControlChar(ControlChar.VKILL));
- modes.put(PtyMode.VEOF, attributes.getControlChar(ControlChar.VEOF));
- modes.put(PtyMode.VEOL, attributes.getControlChar(ControlChar.VEOL));
- modes.put(PtyMode.VEOL2, attributes.getControlChar(ControlChar.VEOL2));
- modes.put(PtyMode.VSTART, attributes.getControlChar(ControlChar.VSTART));
- modes.put(PtyMode.VSTOP, attributes.getControlChar(ControlChar.VSTOP));
- modes.put(PtyMode.VSUSP, attributes.getControlChar(ControlChar.VSUSP));
- modes.put(PtyMode.VDSUSP, attributes.getControlChar(ControlChar.VDSUSP));
- modes.put(PtyMode.VREPRINT, attributes.getControlChar(ControlChar.VREPRINT));
- modes.put(PtyMode.VWERASE, attributes.getControlChar(ControlChar.VWERASE));
- modes.put(PtyMode.VLNEXT, attributes.getControlChar(ControlChar.VLNEXT));
- modes.put(PtyMode.VSTATUS, attributes.getControlChar(ControlChar.VSTATUS));
- modes.put(PtyMode.VDISCARD, attributes.getControlChar(ControlChar.VDISCARD));
+ addMode(modes, PtyMode.VINTR, attributes, ControlChar.VINTR);
+ addMode(modes, PtyMode.VQUIT, attributes, ControlChar.VQUIT);
+ addMode(modes, PtyMode.VERASE, attributes, ControlChar.VERASE);
+ addMode(modes, PtyMode.VKILL, attributes, ControlChar.VKILL);
+ addMode(modes, PtyMode.VEOF, attributes, ControlChar.VEOF);
+ addMode(modes, PtyMode.VEOL, attributes, ControlChar.VEOL);
+ addMode(modes, PtyMode.VEOL2, attributes, ControlChar.VEOL2);
+ addMode(modes, PtyMode.VSTART, attributes, ControlChar.VSTART);
+ addMode(modes, PtyMode.VSTOP, attributes, ControlChar.VSTOP);
+ addMode(modes, PtyMode.VSUSP, attributes, ControlChar.VSUSP);
+ addMode(modes, PtyMode.VDSUSP, attributes, ControlChar.VDSUSP);
+ addMode(modes, PtyMode.VREPRINT, attributes, ControlChar.VREPRINT);
+ addMode(modes, PtyMode.VWERASE, attributes, ControlChar.VWERASE);
+ addMode(modes, PtyMode.VLNEXT, attributes, ControlChar.VLNEXT);
+ addMode(modes, PtyMode.VSTATUS, attributes, ControlChar.VSTATUS);
+ addMode(modes, PtyMode.VDISCARD, attributes, ControlChar.VDISCARD);
// Input flags
modes.put(PtyMode.IGNPAR, getFlag(attributes, InputFlag.IGNPAR));
modes.put(PtyMode.PARMRK, getFlag(attributes, InputFlag.PARMRK));
@@ -308,6 +308,13 @@ public class SshAction implements Action {
return null;
}
+ private static void addMode(Map<PtyMode, Integer> modes, PtyMode mode, Attributes attributes, ControlChar ctrl) {
+ final int value = attributes.getControlChar(ctrl);
+ if (value != -1) {
+ modes.put(mode, value);
+ }
+ }
+
private static int getFlag(Attributes attributes, InputFlag flag) {
return attributes.getInputFlag(flag) ? 1 : 0;
}