1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-18 10:52:16 +03:00
Commit Graph

51 Commits

Author SHA1 Message Date
Wez Furlong
c4009d8e1d deps: shell-words -> 1.1.0 2022-02-06 18:32:10 -07:00
Wez Furlong
705d518242 ssh: restore async_oss dep 2022-01-30 18:45:12 -07:00
Wez Furlong
c4c0b5a569 ssh: prep for crate release 2022-01-30 18:43:55 -07:00
Chip Senkbeil
5042addb06 Add features to enable vendored-openssl for ssh2 and libssh-rs individually 2022-01-09 19:36:56 -08:00
Chip Senkbeil
1f17416e60 Support gating libssh-rs and ssh2 behind features of same name 2022-01-09 19:36:56 -08:00
Wez Furlong
b40f65c25e termwiz: s/Fuschia/Fuchsia/g
closes: #1407
2021-12-21 20:38:59 -07:00
Wez Furlong
de13e17723 ssh: explicitly allow ssh-rsa keys in tests
It looks like the debian 9 test failures with libssh are the
same underlying issue as https://github.com/wez/wezterm/issues/1262

Poking around in the debug output, and then spelunking through the code,
we can use the `pubkeyacceptedtypes` ssh config option to add the key
type to the list of keys.  This doesn't appear to be a documented
option in the current versions of openssh.

I'm not 100% sure that this is right, but it's worth a shot.
2021-12-15 22:05:24 -07:00
Wez Furlong
36a16cb70d fix windows build
A recent cargo update caused openssl-sys to do a minor semver update
from 0.9.71 -> 0.9.72, but that release downgraded from openssl 3
to openssl 1 to resolve a performance regression:
<https://github.com/sfackler/rust-openssl/pull/1578>

That in turn caused libssh to fail to build because the ENGINE
feature required by libssh isn't compiled in in openssl-src 1
crate when vendoring on windows.

For now, my libssh git repo is constrained to openssl-sys 0.9.71,
and we're pointing to that from the wezterm repo.
2021-12-13 09:02:24 -07:00
Wez Furlong
137bdacd3f cargo update
and bump rstest to make dependabot happier
2021-12-12 20:21:55 -07:00
Wez Furlong
7926c31209 pty: introduce ChildKiller trait
In the mux layer, we have some code that takes a `Child` and then
does a bit of naughty reaching through the abstraction to get at
the pid/handle of the child so that we can send it signals even
if the child is itself mutably (and thus exclusively) borrowed
for the purposes of waiting.

That worked fine for local processes spawned in the mux, but we also
use LocalPane to wrap around arbitrary `Child`ren, such as Ssh,
that are not local and that don't have a local process id, which
meant that this hack wouldn't work for them.

To make things a bit worse, those ssh ptys were used to ssh2 days
where we didn't have a way to signal the remote process and just
did nothing, leading to confusing situations such as
https://github.com/wez/wezterm/issues/1197

This commit graduates the hack mentioned in the first paragraph
to its own ChildKiller trait.  This makes the concept of waiting
for the Child distinct from signalling it and explicitly allows
getting a separate object that can be used for signalling.

With that in place, we're forced to implement something appropriate
for the ssh pty implementations; one in the pty crate itself,
one in wezterm-ssh and the wrapper that we use in the mux crate.

The upshot of this is that the `CloseCurrentPane` action now operates
correctly on panes that were the result of split operations.
2021-12-11 08:40:26 -07:00
Wez Furlong
ebc6e6f8b9 Pick up updated ssh crate + windows fixes 2021-12-10 15:25:48 -07:00
Wez Furlong
225e7a1243 introduce unicode_version config
This is a fairly far-reaching commit. The idea is:

* Introduce a unicode_version config that specifies the default level
  of unicode conformance for each newly created Terminal (each Pane)
* The unicode_version is passed down to the `grapheme_column_width`
  function which interprets the width based on the version
* `Cell` records the width so that later calculations don't need to
  know the unicode version

In a subsequent diff, I will introduce an escape sequence that allows
setting/pushing/popping the unicode version so that it can be overridden
via eg: a shell alias prior to launching an application that uses a
different version of unicode from the default.

This approach allows output from multiple applications with differing
understanding of unicode to coexist on the same screen a little more
sanely.

Note that the default `unicode_version` is set to 9, which means that
emoji presentation selectors are now by-default ignored.  This was
selected to better match the level of support in widely deployed
applications.

I expect to raise that default version in the future.

Also worth noting: there are a number of callers of
`unicode_column_width` in things like overlays and lua helper functions
that pass `None` for the unicode version: these will assume the latest
known-to-wezterm/termwiz version of unicode to be desired. If those
overlays do things with emoji presentation selectors, then there may be
some alignment artifacts. That can be tackled in a follow up commit.

refs: #1231
refs: #997
2021-11-25 09:00:45 -07:00
Wez Furlong
d1e0562631 restore async_ossl dep after wezterm-ssh crates.io release 2021-11-23 05:36:52 -07:00
Wez Furlong
3f63f4a2e2 prep for wezterm-ssh release 2021-11-23 05:35:51 -07:00
Wez Furlong
30cb55a7bd pty: bump version
The changes in #1275 introduce an API change, so let's not forget to
bump this.
2021-11-23 05:22:32 -07:00
Wez Furlong
154691a196 ssh: point to released libssh-rs crate 2021-11-03 09:17:32 -07:00
Wez Furlong
e736d02d9e remove patched openssl-sys crate
The appropriate openssl-src is now used upstream
2021-11-03 06:38:20 -07:00
Wez Furlong
6f0757b73c ssh: update for to pick up https://github.com/wez/libssh-rs/pull/1 2021-10-20 21:46:37 -07:00
Wez Furlong
b32e077231 ssh: another bump for debian9 and centos7 2021-10-20 08:28:22 -07:00
Wez Furlong
a55ba2be35 ssh: maybe fix build 2021-10-20 07:53:55 -07:00
Wez Furlong
7f138409a3 ssh: point to rev with older openssl build tweaks 2021-10-20 07:16:19 -07:00
Wez Furlong
58ad4a2c4b ssh: update to fixed win32 build
refs: #1014
2021-10-19 21:04:56 -07:00
Wez Furlong
d43f1e9e26 ssh: fixup vendored-openssl selection for libssh-rs 2021-10-19 20:33:30 -07:00
Wez Furlong
8be442e39b ssh: can now pass e2e tests using libssh backend 2021-10-19 20:33:30 -07:00
Wez Furlong
9d44cc1720 ssh: introduce SftpWrap 2021-10-19 20:33:30 -07:00
Wez Furlong
a8b64a2756 Run with libssh
This works, but on macOS, there is a segfault in openssl when the
session is closed... I'm going to try this on Linux to see if it
is consistent behavior and ponder next steps.
2021-10-19 20:33:30 -07:00
Wez Furlong
f1e5c59566 ssh: introduce wrapper enum
This is a pre-cursor step to adding libssh support
2021-10-19 20:33:30 -07:00
Wez Furlong
d635512138 wezterm-ssh: restore dep after cargo publish 2021-10-10 16:38:03 -07:00
Wez Furlong
163783f483 wezterm-ssh: prep for cargo publish 2021-10-10 16:35:12 -07:00
Chip Senkbeil
2415a44d74 Switch to camino::{Utf8PathBuf, Utf8Path} 2021-10-10 14:54:45 -07:00
Chip Senkbeil
1ff2a1eb82 Add bitflags type safety to sftp flags 2021-10-10 14:54:45 -07:00
Chip Senkbeil
7d5c301c66 Ensure /run/sshd exists, explicitly set username in sshd fixture, add back use_privilege_mode no 2021-10-10 14:54:45 -07:00
Chip Senkbeil
072bb1c470 Create SftpError type and associated structs to provide more verbose errors for sftp 2021-10-10 14:54:45 -07:00
Chip Senkbeil
fca3bd6904 Add some initial tests to wezterm-ssh, ignoring read/write of file as those are hanging 2021-10-10 14:54:45 -07:00
Chip Senkbeil
2c69c306b6 Bump to 0.2.0 2021-10-10 14:54:45 -07:00
Chip Senkbeil
e7110b20c4 Expose vendored-openssl feature of ssh2 from wezterm-ssh 2021-10-10 14:54:45 -07:00
Wez Furlong
bb2c534a56 ssh: my openssl+windows ssh2 patch was published upstream
So remove my local patch
2021-10-10 07:29:54 -07:00
Wez Furlong
91d6344180 weird dependency hack for mac+windows
Adding an edge from wezterm-ssh -> async_ossl causes the
openssl vendoring feature selection logic to trigger, which
in turn allows `cargo build -p window --examples` to succeed
again on macos.
2021-07-09 20:34:42 -07:00
Wez Furlong
3093fb3eb6 wezterm-ssh: process Include statements
refs: https://github.com/wez/wezterm/issues/824
2021-05-28 22:16:24 -07:00
Wez Furlong
3f6ff534d3 windows: fix lingering cmd.exe panes
Since removing the regular periodic background tasks, we're now
prone to not noticing child processes exiting.

This commit explicictly schedules a thread to do that on Windows
so that we can close a tab as soon as it exits.
2021-05-28 15:11:29 -07:00
Wez Furlong
f78190ec9c filedescriptor: remove anyhow from public interface
Use thiserror instead
2021-05-23 14:24:01 -07:00
Wez Furlong
57ab9e36f5 restore features post wezterm-ssh release 2021-05-03 09:58:27 -07:00
Wez Furlong
4af66ff4b1 wezterm-ssh: prep for release 2021-05-03 09:57:04 -07:00
Wez Furlong
49b0ef2356 wezterm-ssh: restore win32 build feature 2021-04-30 10:30:06 -07:00
Wez Furlong
5fb2db10fe prep for wezterm-ssh release
This temporarily disables the win32 openssl build stuff; need
https://github.com/alexcrichton/ssh2-rs/pull/216 to land before
this package can publish with that feature.
2021-04-30 10:27:39 -07:00
Wez Furlong
5b9be21165 prep for pty 0.4 release 2021-04-30 10:17:25 -07:00
Wez Furlong
e103653923 RemoteSshDomain now uses wezterm-ssh crate
There are a few notable changes as a result:

* A number of `.ssh/config` options are now respected; host matching
  and aliasing and identity file are the main things
* The authentication prompt is inline in the window, rather than
  popping up a separate authentication window

Refs: https://github.com/wez/wezterm/issues/457
2021-03-27 18:12:34 -07:00
Wez Furlong
13f13d7309 wezterm-ssh: add pubkey based auth
I can't get this to succeed though; I suspect there may be a lingering
bug from libssh2 and/or trailing support for newer openssh features.

refs: https://github.com/wez/wezterm/issues/457
2021-03-26 23:54:57 -07:00
Wez Furlong
6bb941b653 wezterm-ssh: flesh out improved ssh crate
This implementation should be less prone to stutters/stalls
than my earlier hacky implementation in pty/src/ssh.rs
2021-03-26 21:57:44 -07:00
Aaron Abramov
786888ce0a update k9 to 0.11.0 to make it work with rustc@1.51.0
1.51.0 no longer takes non string literals in `panic()`. k9@0.11.0 fixes that
2021-03-25 10:39:00 -07:00