Commit Graph

76 Commits

Author SHA1 Message Date
Robo e9a3e2a03c fix: libc checks for exec server (#243254) 2025-03-11 12:54:24 -07:00
Robo 31ec1c528f build: remove legacy server support (#235232)
* build: remove legacy server support

* chore: update rpm dependencies

* chore: fix publishing

* cli: provide option for unsupported glibc sysroot

* chore: add unsupported mode to prereq check

* chore: add logging

* chore: add comment about patchelf execution order
2025-03-10 17:54:23 +01:00
Connor Peet 3331d2d87d chore: update to rust 1.85 (#242609) 2025-03-04 21:58:23 +01:00
aslezar 386d58d0de fixed formattting error 2024-12-16 20:49:25 +05:30
aslezar 5c525a4d56 fixed formatting 2024-12-15 16:54:08 +05:30
aslezar e044a71719 Fix incorrect GLIBC version parsing
Fixes #230370
2024-12-13 22:22:13 +05:30
Hamir Mahal a744313eb7 style: simplify string formatting for readability (#231763)
* style: simplify string formatting for readability

* fix: formatting in `.rs` files in `src/`
2024-10-22 16:30:46 +00:00
Connor Peet fcfd4be5b8 cli: determine archive type based on filename instead of path (#224602)
Refs #219632

Seems like PRSS sometimes(?) doesn't return the full archive name in
the response. I don't reproduce this, but others consistently do. This
PR removes the dependency on the URL path and instead checks for the
gzip magic number in the first two bytes of the archive to figure out
what to do.
2024-08-02 09:34:11 -07:00
Connor Peet b6d022bc08 fix: --connection-token-file not functional in "code serve-web" (#223524)
Fixes #215537
2024-07-24 10:36:49 -07:00
Robo cab98a1ca8 fix: bump minimum glibcxx version for armhf remote server (#221259) 2024-07-10 08:04:46 +09:00
Connor Peet 0f2b535662 cli: automatically remove servers that fail to start (#211500)
Fixes https://github.com/microsoft/vscode-remote-release/issues/9823
2024-04-27 06:54:06 -07:00
Connor Peet 036d8e31b2 cli: use the legacy server for environment with prereq detection skipped (#210952)
Fixes #210029
2024-04-22 21:18:15 +02:00
Connor Peet 26edf9ca9f cli: add progress for extraction (#209499)
For https://github.com/microsoft/vscode-remote-tunnels/issues/724
2024-04-03 17:08:49 -07:00
Connor Peet 2efb6a9f8c cli: allow downloading legacy servers for older glibc versions (#204194)
* cli: allow downloading legacy servers for older glibc versions

Refs #206790

* chore: update asset name

---------

Co-authored-by: deepak1556 <hop2deep@gmail.com>
2024-03-21 11:01:24 -07:00
Connor Peet 1ab312aeed cli: try to automatically reload services during tunnel service install (#208119)
Fixes #208094
2024-03-19 15:29:30 -07:00
Connor Peet 7015a87618 cli: avoid adoption of tunnels with existing host connections (#208033)
Fixes https://github.com/microsoft/vscode-remote-release/issues/9655
2024-03-18 19:44:07 +01:00
Aiday Marlen Kyzy 487e155ebb Merge pull request #16 from devdiv-microsoft/connor4312/msrc/use-token-file
MSRC Fix for February 2024 Patch Tuesday
2024-03-12 11:02:18 -07:00
Connor Peet 9a07ceb9f7 cli: ensure the canonical snap exe is used for the CLI (#206133)
Fixes #204907
2024-02-23 15:02:22 -08:00
Robo cf7ddbb51d fix: use legacy server as default with additional warnings (#204377)
* ci: switch to glibc 2.17 remote server

* chore: signal user about unsupported connection

* chore: address review comments

* chore: update nodejs build

* chore: bump distro

* chore: lower the minimum requirements

* fix: glibc version check

* chore: remove explicit connection disposal
2024-02-06 11:25:58 +01:00
Connor Peet 7e0c93cec5 cli: skip integrity check when prereq skip flag is present (#203912) 2024-01-31 18:33:55 +01:00
Robo fc9dcad098 fix: skip server requirements check based on file presence (#203729) 2024-01-29 19:55:17 +01:00
Connor Peet f58d7ff83d cli: fix GLIBC version requirement hardcoded in error message (#202605)
Fixes #202082
2024-01-16 11:34:18 -08:00
Connor Peet 68bc4c82c8 cli: update server prereq versions (#201261)
Fixes #201129
2023-12-20 14:27:09 +09:00
Connor Peet 4aa04c7db2 cli: add extra fs operations for container
Ref https://github.com/microsoft/vscode-remote-tunnels/issues/695
2023-10-18 20:28:02 -07:00
Connor Peet e250c8066d cli: fix command prompt showing up on windows (#194946)
cli: fix wsl prompt up on windows machine

Fixes #190425 again
2023-10-06 17:09:47 +01:00
Connor Peet 4fa7137b05 cli: add more details if untar fails
For #192647
2023-09-21 14:37:33 -07:00
Connor Peet 1fe8359ed0 cli: implement 'server of server' for a local web server (#191014)
Closes https://github.com/microsoft/vscode/issues/168492

This implements @aeschli's 'server server' concept in a new
`code serve-web` command.

Command line args are similar to the standalone web server. The first
time a user hits that page, the latest version of the VS Code web server
will be downloaded and run. Thanks to Martin's previous PRs, all
resources the page requests are prefixed with `/<quality-<commit>`.

The latest release version is cached, but when the page is loaded again
and there's a new release, a the new server version will be downloaded
and started up.

Behind the scenes the servers all listen on named pipes/sockets and the
CLI acts as a proxy server to those sockets. Servers without connections
for an hour will be shut down automatically.
2023-08-22 17:29:51 -07:00
Connor Peet 5a14d85f48 cli: adding forwarding for local port for remote tunnels (#188715)
This reuses a lot of the logic we use for the normal VS Code Server
tunnel to do port forwarding. It does use a _different_ tunnel than what
Remote Tunnels would otherwise use for the control server. The reason
for this is that ports exist on a tunnel instance, and if we reused the
same tunnel then a client would expect all CLI hosts to serve all
tunnels, where the port forwarding instance would not provide the VS
Code server. It also reuses the singleton logic so all ports on a
machine are handled by a single CLI instance for the same reason: we
can't have different instances hosting subsets of
ports on a single tunnel.

Currently all ports are under the default privacy: support for
public/private tunnels is either later today or next iteration.
2023-07-24 15:12:21 -07:00
Connor Peet b5038f81d1 cli: allow exec server to listen on a port and require token authentication (#188434)
* cli: allow exec server to listen on a port and require token authentication

For remote ssh on Windows where pipe forwarding doesn't work

* fix linux build
2023-07-21 18:32:20 +02:00
Connor Peet 30fde0d369 fix: stall on "starting new singleton" on linux if keychain blocks (#187182)
Adds a 5s timeout to keychain access on Linux. We had an issue about this a long time ago, but I never repro'd it until today and can't find the original...

If this timeout is hit, it'll fall back to the file-based keychain.
2023-07-06 23:49:31 +02:00
Connor Peet 2f867fa7a1 cli: fix macos build (#185401) 2023-06-17 09:38:58 +09:00
Connor Peet 8a006c7114 cli: improve dbus error messaging on linux
Fixes https://github.com/microsoft/vscode-remote-release/issues/7778
2023-06-16 14:45:26 -07:00
Connor Peet 8a74ad8ff5 cli: show service status in tunnel log
Fixes #183714
2023-06-16 10:42:13 -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 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
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 d54402822a cli: fix mutex names contain extra characters (#181335)
Fixes #181334
2023-05-02 17:16:17 +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
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 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
Connor Peet 3d7f6dec00 cli: fix tunnel message command (#178079)
Fixes #177394
2023-03-22 14:44:49 -07:00
Connor Peet eab8ba65bf cli: add tunnel status command (#177381)
Fixes #177372
2023-03-16 12:26:56 -07: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 40f31f92d0 cli: fix download for arm32 linux (#173374)
Once again, wishing target_* were statically typed...

Fixes https://github.com/microsoft/vscode-remote-release/issues/7631
2023-02-03 13:30:31 -08:00
Connor Peet 618da1e00a cli: fix arch check for musl arm64 (#172092)
Fixes https://github.com/microsoft/vscode-remote-release/issues/7812

Wish Rust had compilation errors for bad compile time checks :(
2023-01-23 16:50:24 -08:00
Connor Peet 4d882322ca cli: start to extract a generic rpc interface (#171299)
I want to use the rpc interface for communication via stdin/out in wsl,
but currently RPC is tightly coupled to the control server. The control
server also speaks msgpack instead of JSON, since it deals with binary
messages. WSL won't, and we'll want to use JSON to interact with VS
Code, so some separation is needed.

This pulls out a base set of RPC types for use in both scenarios.
Currently these are only 'helper' structs that don't actually do any
i/o, but once I figure out the model I would like to have a cleaner way
to do i/o in a unified way as well.

For the control server, previously we basically handled all methods in
one big `switch` block with nasty macros, whereas now there's
nicer `register_a/sync` functions.

Some additional small refactors were needed to preserve the strict
ordering of server messages, since they need to be order else we get
decompression errors. This is the `start_bridge_write_loop`. As a small
benefit, this means we can avoid the relatively expensive async Tokio
mutex that we were using, and instead use the standard library mutex.
2023-01-16 21:43:41 -08:00
Connor Peet b5ad508dfb cli: cleanup some process querying code (#170306)
Avoid pulling system info we don't have to.

Minor cleanups while working on https://github.com/microsoft/vscode/pull/170305
2022-12-30 12:55:57 -08:00