public String getProperty(String key) { return env.getEnv().get(key); } }
public SSHContext(Environment env) { if (env == null) { throw new NullPointerException("No null env"); } // Integer verase = env.getPtyModes().get(PtyMode.VERASE); String LC_CTYPE = env.getEnv().get("LC_CTYPE"); Charset encoding; if (LC_CTYPE != null) { encoding = parseEncoding(LC_CTYPE); } else { encoding = null; } // this.env = env; this.verase = verase != null ? verase : -1; this.encoding = encoding; }
public SshTerminal(Environment environment, InputStream input, OutputStream output, String encoding) throws IOException { super("Karaf SSH terminal", environment.getEnv().get(Environment.ENV_TERM), input, output, Charset.forName(encoding)); this.environment = environment; this.environment.addSignalListener(this::handleSignal); for (Map.Entry<PtyMode, Integer> e : environment.getPtyModes().entrySet()) { switch (e.getKey()) { case VINTR: int w = Integer.valueOf(this.environment.getEnv().get(Environment.ENV_COLUMNS)); int h = Integer.valueOf(this.environment.getEnv().get(Environment.ENV_LINES)); setSize(new Size(w, h));
@Override public void start(final Environment env) throws IOException { String lcctype = env.getEnv().get("LC_CTYPE"); if (lcctype != null) { charset = parseCharset(lcctype); } if (charset == null) { charset = defaultCharset; } env.addSignalListener(signal -> updateSize(env), EnumSet.of(org.apache.sshd.server.Signal.WINCH)); updateSize(env); // Event handling int vintr = getControlChar(env, PtyMode.VINTR, 3); int vsusp = getControlChar(env, PtyMode.VSUSP, 26); int veof = getControlChar(env, PtyMode.VEOF, 4); // eventDecoder = new TtyEventDecoder(vintr, vsusp, veof); decoder = new BinaryDecoder(512, charset, eventDecoder); stdout = new TtyOutputMode(new BinaryEncoder(charset, out)); term = env.getEnv().get("TERM"); conn = new Connection(); // session.setDataReceiver(this); handler.accept(conn); }
private int getControlChar(Environment env, PtyMode key, int def) { Integer controlChar = env.getPtyModes().get(key); return controlChar != null ? controlChar : def; }
public SshTerminal(Environment environment, InputStream input, OutputStream output) throws IOException { super("Karaf SSH terminal", environment.getEnv().get(Environment.ENV_TERM), input, output, StandardCharsets.UTF_8); this.environment = environment; this.environment.addSignalListener(this::handleSignal); for (Map.Entry<PtyMode, Integer> e : environment.getPtyModes().entrySet()) { switch (e.getKey()) { case VINTR: int w = Integer.valueOf(this.environment.getEnv().get(Environment.ENV_COLUMNS)); int h = Integer.valueOf(this.environment.getEnv().get(Environment.ENV_LINES)); setSize(new Size(w, h));
@Override public void start(final Environment env) throws IOException { String lcctype = env.getEnv().get("LC_CTYPE"); if (lcctype != null) { charset = parseCharset(lcctype); } if (charset == null) { charset = defaultCharset; } env.addSignalListener(signal -> updateSize(env), EnumSet.of(org.apache.sshd.server.Signal.WINCH)); updateSize(env); // Event handling int vintr = getControlChar(env, PtyMode.VINTR, 3); int vsusp = getControlChar(env, PtyMode.VSUSP, 26); int veof = getControlChar(env, PtyMode.VEOF, 4); // eventDecoder = new TtyEventDecoder(vintr, vsusp, veof); decoder = new BinaryDecoder(512, charset, eventDecoder); stdout = new TtyOutputMode(new BinaryEncoder(charset, out)); term = env.getEnv().get("TERM"); conn = new Connection(); // session.setDataReceiver(this); handler.accept(conn); }
private int getControlChar(Environment env, PtyMode key, int def) { Integer controlChar = env.getPtyModes().get(key); return controlChar != null ? controlChar : def; }
public int getWidth() { String s = env.getEnv().get(Environment.ENV_COLUMNS); int width = -1; if (s != null) { try { width = Integer.parseInt(s); } catch (NumberFormatException e) { log.log(Level.WARNING, "Could not parse ssh term width " + s); } } return width; }
Terminal terminal = TerminalBuilder.builder() .name("JLine SSH") .type(env.getEnv().get("TERM")) .system(false) .streams(in, out) .build(); terminal.setSize(new Size(Integer.parseInt(env.getEnv().get("COLUMNS")), Integer.parseInt(env.getEnv().get("LINES")))); Attributes attr = terminal.getAttributes(); for (Map.Entry<PtyMode, Integer> e : env.getPtyModes().entrySet()) { switch (e.getKey()) { case VINTR: env.addSignalListener(signals -> { terminal.setSize(new Size(Integer.parseInt(env.getEnv().get("COLUMNS")), Integer.parseInt(env.getEnv().get("LINES")))); terminal.raise(Terminal.Signal.WINCH); }, Signal.WINCH); shell.accept(new Ssh.ShellParams(env.getEnv(), terminal, this::destroy)); } catch (Throwable t) { t.printStackTrace();
public SSHContext(Environment env) { if (env == null) { throw new NullPointerException("No null env"); } // Integer verase = env.getPtyModes().get(PtyMode.VERASE); String LC_CTYPE = env.getEnv().get("LC_CTYPE"); Charset encoding; if (LC_CTYPE != null) { encoding = parseEncoding(LC_CTYPE); } else { encoding = null; } // this.env = env; this.verase = verase != null ? verase : -1; this.encoding = encoding; }
public SSHContext(Environment env) { if (env == null) { throw new NullPointerException("No null env"); } // Integer verase = env.getPtyModes().get(PtyMode.VERASE); // this.env = env; this.verase = verase != null ? verase : -1; }
public int getHeight() { String s = env.getEnv().get(Environment.ENV_LINES); int height = -1; if (s != null) { try { height = Integer.parseInt(s); } catch (NumberFormatException e) { log.log(Level.WARNING, "Could not parse ssh term height " + s); } } return height; }
Terminal terminal = TerminalBuilder.builder() .name("JLine SSH") .type(env.getEnv().get("TERM")) .system(false) .streams(in, out) .build(); terminal.setSize(new Size(Integer.parseInt(env.getEnv().get("COLUMNS")), Integer.parseInt(env.getEnv().get("LINES")))); Attributes attr = terminal.getAttributes(); for (Map.Entry<PtyMode, Integer> e : env.getPtyModes().entrySet()) { switch (e.getKey()) { case VINTR: env.addSignalListener(signals -> { terminal.setSize(new Size(Integer.parseInt(env.getEnv().get("COLUMNS")), Integer.parseInt(env.getEnv().get("LINES")))); terminal.raise(Terminal.Signal.WINCH); }, Signal.WINCH); shell.accept(new Ssh.ShellParams(env.getEnv(), terminal, this::destroy)); } catch (Throwable t) { t.printStackTrace();
public SSHContext(Environment env) { if (env == null) { throw new NullPointerException("No null env"); } // Integer verase = env.getPtyModes().get(PtyMode.VERASE); String LC_CTYPE = env.getEnv().get("LC_CTYPE"); Charset encoding; if (LC_CTYPE != null) { encoding = parseEncoding(LC_CTYPE); } else { encoding = null; } // this.env = env; this.verase = verase != null ? verase : -1; this.encoding = encoding; }
byte[] modes = buffer.getBytes(); Environment environment = getEnvironment(); Map<PtyMode, Integer> ptyModes = environment.getPtyModes();
public String getProperty(String key) { return env.getEnv().get(key); } }
public void run() { LOGGER.debug("{}: run", session.toString()); Size size = new Size(Integer.parseInt(sshEnv.getEnv().get("COLUMNS")), Integer.parseInt(sshEnv.getEnv().get("LINES"))); try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos, true, StandardCharsets.UTF_8.name()); Terminal terminal = TerminalBuilder.builder().system(false).size(size).type(sshEnv.getEnv().get("TERM")).streams(is, os).build()) { fill(attr, sshEnv.getPtyModes()); terminal.setAttributes(attr); sshEnv.addSignalListener(signal -> { terminal.setSize(new Size( Integer.parseInt(sshEnv.getEnv().get("COLUMNS")), Integer.parseInt(sshEnv.getEnv().get("LINES")))); terminal.raise(Terminal.Signal.WINCH); }, Signal.WINCH);
@Override public void start(Environment env) throws IOException { Map<String, String> varsMap = resolveShellEnvironment(env.getEnv()); for (int i = 0; i < command.size(); i++) { String cmd = command.get(i); Map<PtyMode, ?> modes = resolveShellTtyOptions(env.getPtyModes()); out = new TtyFilterInputStream(process.getInputStream(), modes); err = new TtyFilterInputStream(process.getErrorStream(), modes);
byte[] modes = buffer.getBytes(); Environment environment = getEnvironment(); Map<PtyMode, Integer> ptyModes = environment.getPtyModes();