Commit Graph

140 Commits

Author SHA1 Message Date
Connor Peet 6f568d087d cli: ensure code tunnel service is headless on windows (#184621)
Fixes #184058
2023-06-08 10:50:44 -07:00
Connor Peet e686621e2e cli: avoid running prepare a second time in ci (#184558) 2023-06-08 02:22:44 +02:00
Connor Peet 75c2f321b2 cli: update dependencies (#184189)
Up all the dependencies! Notably:

- russh to the latest main now that tunnel changes are merged
- secret-service-rs to 3.x and dropping our custom fork
- which also fixes SDL pings

Fixes https://github.com/microsoft/vscode-internalbacklog/issues/4328
Fixes https://github.com/microsoft/vscode-internalbacklog/issues/4077
2023-06-02 10:27:47 -07:00
Connor Peet 62c33b3ca2 cli: fix connection default being applied (#183827) 2023-05-30 20:44:42 +02:00
Connor Peet 69278e5326 cli: improve output for code tunnel status (#183571)
* testing: allow invalidateTestResults to take an array

* cli: improve output for code tunnel status

Fixes #183570
2023-05-26 13:36:04 -07:00
Connor Peet 1942c0eccc cli: ensure ordering of rpc server messages (#183558)
* cli: ensure ordering of rpc server messages

Sending lots of messages to a stream would block them around the async
tokio mutex, which is "fair" so doesn't preserve ordering. Instead, use
the write_loop approach I introduced to the server_multiplexer for the
same reason some time ago.

* fix clippy
2023-05-26 18:48:06 +02:00
Connor Peet 8242d20803 fixes for wsl hosting (#183491) 2023-05-26 08:47:56 +02:00
Connor Peet 679bb967c3 cli: add stdio control server
* signing: implement signing service on the web

* wip

* cli: implement stdio service

This is used to implement the exec server for WSL. Guarded behind a signed handshake.

* update distro

* rm debug

* address pr comments
2023-05-19 17:19:52 +02:00
Connor Peet d3d9f86116 cli: store cli in user data dir, separate per quality (#182102)
* cli: store cli in user data dir, separate per quality

Fixes #181017

On first run, the `~/.vscode-cli` will be migrated inside the user data dir of the currently running quality.

* use create_dir_all instead

* clippy fixes
2023-05-10 13:09:23 -07:00
Martin Aeschlimann 0c85b95c48 stop tunnel when executable gets deleted (#181505)
stop when executable gets deleted
2023-05-09 09:25:51 +02:00
Connor Peet c8718e7290 cli: shut down service on windows more reliably (#181584)
* cli: shut down service on windows more reliably

Use the singleton kill logic.

Fixes #175268

* fix lint
2023-05-04 14:56:09 -07:00
Connor Peet 8b28c834bb cli: do not set tunnel mutex when running from service only (#181574)
Fixes #181525
2023-05-04 21:11:33 +02:00
Connor Peet 5a139d4ffc cli: fix tunnel names are case sensitive but remoteAuthorities are not (#181347)
Fixes #177222
2023-05-02 18:55:11 +02:00
Connor Peet d54402822a cli: fix mutex names contain extra characters (#181335)
Fixes #181334
2023-05-02 17:16:17 +02:00
Connor Peet 06ff8779bd cli: tunnels can sporadically become unresponsive (#181285)
Last iteration I moved some RPC logic to use Tokios "codecs" to give
them cancellation safety. These operate on streams of input data.

While this worked at first, I failed to take into account that the byte
buffer we read from the stream could have _more_ data than just the
current message under load scenarios. We were discarding any extra data
from the subsequent message. In most cases caused the next message
"length" to be read from the middle of the next message, which usually
(when parsed as a u32) was some number of gigabytes, then causing the
connection to stall forever.

Fixes #181284
2023-05-01 17:34:11 -07:00
Connor Peet cda21c19a7 cli: fix attach does not always work (#181273)
* fix: don't sync debug.lastExtensionDevelopmentWorkspace

* cli: fix attach does not always work

Seems like reading stdin when it's open but never written to blocks the process. Fix that, both by checking IS_INTERACTIVE_CLI before reading stdin, and by not passing stdin to the tunnel subprocess.

Fixes #179122
2023-05-01 14:58:25 -07:00
Connor Peet 43e0111e14 cli: only show other interactive attach commands when in a terminal (#181163)
* testing: another fix to avoid automatically queuing

Fixes #180041 again

* cli: only show other interactive attach commands when in a terminal

Fixes #178091
2023-04-28 15:13:26 -07:00
Connor Peet ab6ba2ebee cli: fix problem restarting tunnel with uppercase letter in name (#180881)
Fixes #180693
2023-04-25 23:50:15 +02:00
Connor Peet cedf1eaa25 cli: add new control server messages for wsl (#180438)
* cli: add new control server messages for wsl

* support cwd in spawn
2023-04-20 15:19:05 -07:00
Benjamin Pasero 6d5b85427d debt - remove unsupported max_old_space_size option (#180183) 2023-04-17 22:32:23 -07:00
Connor Peet 34f65dc1d7 cli: update hyper for cg (#180135) 2023-04-17 10:19:53 -07:00
dependabot[bot] 1e774371f2 Bump h2 from 0.3.14 to 0.3.17 in /cli (#179890)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.14 to 0.3.17.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.14...v0.3.17)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-15 21:11:48 -07:00
Connor Peet f743297aa1 cli: add acquire_cli (#179837)
* cli: add acquire_cli

As given in my draft document, pipes a CLI of the given platform to the
specified process, for example:

```js
const cmd = await rpc.call('acquire_cli', {
	command: 'node',
	args: [
		'-e',
		'process.stdin.pipe(fs.createWriteStream("c:/users/conno/downloads/hello-cli"))',
	],
	platform: Platform.LinuxX64,
	quality: 'insider',
});
```

It genericizes caching so that the CLI is also cached on the host, just
like servers.

* fix bug
2023-04-13 19:18:48 +01:00
Connor Peet ca9404bd2f cli: read tunnel lock from product.json (#179800)
Fixes #179265
2023-04-12 18:52:37 +01:00
Connor Peet 4180bbd21e cli: fix macos build (#179794) 2023-04-12 18:33:29 +02:00
Connor Peet 2d8ff25c85 cli: add streams to rpc, generic 'spawn' command (#179732)
* cli: apply improvements from integrated wsl branch

* cli: add streams to rpc, generic 'spawn' command

For the "exec server" concept, fyi @aeschli.

* update clippy and apply fixes

* fix unused imports :(
2023-04-12 16:51:29 +01:00
Connor Peet b547b58db6 cli: use win32 app mutex to detect running tunnels and tunnel sevices (#179622)
* cli: fix distro mixin

* cli: use win32 app mutex to detect running tunnels and tunnel sevices

Fixes #179265

* cli: fix distro mixin more

* fix

* fix build
2023-04-10 20:25:14 +01:00
dependabot[bot] 29d93918d2 Bump openssl from 0.10.42 to 0.10.48 in /cli (#178296)
Bumps [openssl](https://github.com/sfackler/rust-openssl) from 0.10.42 to 0.10.48.
- [Release notes](https://github.com/sfackler/rust-openssl/releases)
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.42...openssl-v0.10.48)

---
updated-dependencies:
- dependency-name: openssl
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-28 08:20:29 -07:00
Connor Peet dfbea0f578 cli: when attaching, always print the connection link (#178445)
Fixes #178090
2023-03-27 12:52:50 -07:00
Connor Peet b51e2f3613 cli: only connect to existing tunnel process when quality is the same (#178446)
Fixes #178089
2023-03-27 12:11:18 -07:00
Connor Peet 792114a7ec cli: rename tunnels to lowercase names (#178272)
* cli: rename tunnels to lowercase names

Fixes #177222

* fix lint
2023-03-25 19:43:53 -07:00
Connor Peet f299f6f423 cli: fix windows terminal erroring on tunnel first run (#178267)
* cli: fix tunnel message command

Fixes #177394

* fix: windows terminal erroring on tunnel first run

Was fixed by https://github.com/console-rs/dialoguer/pull/192

Fixes #175747
2023-03-24 15:46:42 -07:00
Connor Peet 97af9cd323 cli: only show Ctrl+C to detach when in a terminal (#178276)
Fixes #178091
2023-03-24 15:46:16 -07:00
Connor Peet 3d7f6dec00 cli: fix tunnel message command (#178079)
Fixes #177394
2023-03-22 14:44:49 -07:00
Connor Peet 349c62ab30 cli: fix reading of client tunnel commands (#177919)
.read_line() appends to the string, so this caused the first command entered to always be read again
2023-03-21 16:33:28 -07:00
Connor Peet b9c2df39d1 cli: don't colorize file log output, collect internal logs for broadcast (#177420)
Fixes #177345
2023-03-17 17:14:41 +01:00
Connor Peet 120d0d2fdb fix: make tunnel names case-insensitive (#177413)
Lowercase them, since Basis internally is case-sensitive.

Fixes #177222
2023-03-16 15:49:51 -07:00
Connor Peet 9fc16337d5 cli: code-insiders tunnel service install message should use code-insiders (#177394)
Fixes #177344
2023-03-16 21:18:22 +01:00
Connor Peet eab8ba65bf cli: add tunnel status command (#177381)
Fixes #177372
2023-03-16 12:26:56 -07:00
Connor Peet 025e3194e1 fix: missing accept server license terms arg in service install (#177366)
Fixes #177351
2023-03-16 11:23:35 -07:00
Connor Peet 0e1ec3e87d fix: not installing extensions in the directory that is being passed (#177303)
Fixes https://github.com/microsoft/vscode-internalbacklog/issues/3595
2023-03-16 00:14:53 +01:00
Connor Peet abab52dd94 cli: add tunnel kill/restart subcommands (#177286) 2023-03-15 15:09:12 -07:00
Connor Peet 0e7d14d32d cli: allow client process to control singleton process (#177141)
Other connected clients will now print:

```
Connected to an existing tunnel process running on this machine. You can press:

- Ctrl+C to detach
- "x" to stop the tunnel and exit
- "r" to restart the tunnel
```

These are then sent to the server to have that take effect. This is
mostly some refactors in the singleton_server to make the lifecycle work.
2023-03-14 17:55:28 -07:00
Connor Peet 1b5fd140fb Run tunnels as singleton process (for a --cli-data-dir) (#177002)
* wip on singleton

* wip

* windows support

* wip

* wip

* fix clippy
2023-03-14 08:09:47 -07:00
Connor Peet 863b9261a3 cli: bump tempfile->remove_dir_all for cve (#176206) 2023-03-06 10:10:01 +01:00
Simon Byrne ef46983a3a cli: option to disable encryption of keychain matter
* option to disable encryption of keys

Avoids issue of token invalidation when switching machines with a shared home directory, as suggested by @connor4312 in https://github.com/microsoft/vscode-remote-release/issues/8110#issuecomment-1452270922

Fixes #8110

* Update cli/src/auth.rs

Co-authored-by: Connor Peet <connor@peet.io>

* Change variable to VSCODE_CLI_DISABLE_KEYCHAIN_ENCRYPT

Co-authored-by: Connor Peet <connor@peet.io>

---------

Co-authored-by: Connor Peet <connor@peet.io>
2023-03-02 20:28:57 +01:00
Connor Peet 26fe31fc66 update openssl-prebuild for musl failures (#175731)
* update openssl-prebuild for musl failures

* reapply vendoring

* reapply macos pipeline fix
2023-03-01 08:57:45 +01:00
Connor Peet f8119e9beb Revert "cli: fix static import of openssl (#175681)" (#175727)
This reverts commit 7014a17b1f.
2023-03-01 07:43:32 +01:00
Connor Peet 7014a17b1f cli: fix static import of openssl (#175681)
* cli: fix static import of openssl

* update dev tunnels
2023-02-28 11:20:58 -08:00
Benjamin Pasero 2cad803acf Revert "Bump openssl-src from 111.22.0+1.1.1q to 111.25.0+1.1.1t in /cli (#173883)"
This reverts commit be0f82c93a.
2023-02-28 08:37:33 +01:00