Commit Graph
72 Commits
Author SHA1 Message Date
Connor PeetandGitHub 9a07ceb9f7 cli: ensure the canonical snap exe is used for the CLI (#206133)
Fixes #204907
2024-02-23 15:02:22 -08:00
Connor PeetandGitHub 6291fb21ec cli: fix adveristing file extension on windows (#203818)
Fixes #202919
2024-01-30 09:52:18 -08:00
samhanic 70dda3c792 Merge branch 'main' into cli-extension-update 2024-01-07 21:24:26 +01:00
Connor PeetandGitHub 1a3de4181e cli: allow cancelling login during tunnel creation (#200188)
Fixes #197559
2023-12-06 21:59:28 +01:00
Connor PeetandGitHub cc62bd1ddd cli: allow reading exec server token from env variable (#200079) 2023-12-05 21:38:10 +01:00
3ff7d4545b Update cli/src/commands/args.rs
Co-authored-by: Sandeep Somavarapu <sasomava@microsoft.com>
2023-12-04 08:12:05 -08:00
samhanic 74c419b5bd add cli update-extensions prototype 2023-12-03 14:25:40 +01:00
Connor PeetandGitHub b431ca92db tunnels: fixes to allow msa auth (#197259) 2023-11-02 19:49:04 +01:00
Connor PeetandGitHub 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 PeetandGitHub 280c840f87 cli: support setting the --parent-process-id in command shell (#193735) 2023-09-21 15:12:02 -07:00
Connor Peet f92db2f96e cli: fix renamed self-update name, cleanup old binaries
Fixes #192948
2023-09-21 14:37:33 -07:00
Connor PeetandGitHub 491ddd816e cli: allow command-shell to listen on a prescribed port (#193028)
Fixes https://github.com/microsoft/vscode-internalbacklog/issues/4623
2023-09-13 17:02:12 +01:00
Connor PeetandGitHub 3941870f19 cli: fix panic if it can't bind a port (#193019)
Fixes #192229
2023-09-13 16:17:48 +01:00
Connor PeetandGitHub c394fb8959 cli: polish serve-web help (#191817)
Fixes #191601
2023-08-30 19:02:48 +02:00
Connor PeetandGitHub 5413247e57 serve-web: delete socket file on server shutdown (#191692)
Fixes #191691
2023-08-29 13:57:48 -07:00
Connor PeetandGitHub 8ef6961789 server-web: implement secret storage provider (#191538)
Works quite similarly to vscode.dev. The client has a key stored in
secret storage. The server has a key stored server-side, and issues
an http-only cookie to the client. The client can ask the server to
combine its key and the http-only cookie key to a key component, which
it combines with its local key to encrypt and decrypt data.

This logic kicks in if the web server bits see a `vscode-secret-key-path`
cookie set when it loads.
2023-08-28 17:48:09 -07:00
Connor PeetandGitHub f7a7d9488f cli: serve-web listener improvements (#191146)
- Allow listening on a socket path (required manually implementing
  the Accept trait), fixes #191043
- Parse the host syntax correctly, fixes #191067
2023-08-23 16:47:31 -07:00
Connor PeetandGitHub 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 PeetandGitHub 52840e3ca5 cli: cleanup build (#190213)
- Remove the `prepare` script entirely
- Variables are now populated from the product.json during build. Most
  variables are mapped automatically, with some special handling in a
	few cases. `build.rs` is now much more self-contained.
- Look for the `product.overrides.json` for vscode developers instead of
  looking for a peer `vscode-distro` folder

Fixes #178691
2023-08-10 20:14:30 -07:00
Connor PeetandGitHub 2e9459b34c cli: add more details to the status command (#190212)
For azml's integration

Closes https://github.com/microsoft/vscode-remote-tunnels/issues/669
2023-08-10 20:13:14 -07:00
71282c3d52 forwarding: add built-in tunnel forwarding extension (#189874)
* forwarding: add built-in tunnel forwarding extension

- Support public/private ports, which accounts for most of the work in
  the CLI. Previously ports were only privat.
- Make the extension built-in. Ported from the remote-containers
  extension with some tweaks for privacy and durability.
- This also removes the opt-in flag, by not reimplementing it 😛

Fixes https://github.com/microsoft/vscode/issues/189677
Fixes https://github.com/microsoft/vscode/issues/189678

* fixup! comments

---------

Co-authored-by: Raymond Zhao <7199958+rzhao271@users.noreply.github.com>
2023-08-08 22:00:03 +01:00
Connor PeetandGitHub 0d22bb7efa cli: update dependencies for s360 (#189562)
* cli: update dependencies for s360

* update rust
2023-08-03 18:05:46 +01:00
Connor PeetandGitHub 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 PeetandGitHub 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 PeetandGitHub 3e0786633b cli: allow exec server to listen on socket (#188123)
* cli: allow exec server to listen on socket

For remote ssh

* fix lint
2023-07-18 09:19:44 -07:00
Connor PeetandGitHub bafd442c4e cli: improve code tunnel with existing tunnels (#188091)
- Apply the name/tunnel-name from the CLI to automatically
	(do a normal tag sync). Previously the CLI could host tunnels that
	were unusable unless the consumer did the tag setup, which they
	should not.
- Allow "tunnel ID" to be specified in the new `<id>.<cluster>` format
  that devtunnels has adopted.
2023-07-17 10:56:27 -07:00
Connor PeetandGitHub 12340da1f1 cli: allow installation as a service from the UI (#187869)
- When turning on remote tunnel access, a quickpick is now shown asking
  users whether it should be installed as a service or just run in
	the session.
- Picking the service install will install the tunnel as a service on
  the machine, and start it.
- Turning off remote tunnel access will uninstall the service only if
  we were the ones to install it.
- This involved some refactoring to add extra state to the RemoteTunnelService.
  There's now a "mode" that includes the previous "session" and reflects
	the desired end state.
- I also did a cleanup with a `StreamSplitter` to ensure output of the
  CLI gets read line-by-line. This was depended upon by the remote tunnel
	service code, but it's not actually guaranteed.
- Changes in the CLI: allow setting the tunnel name while installing the
  service, and make both service un/installation and renames idempotent.

Closes https://github.com/microsoft/vscode/issues/184663
2023-07-13 20:23:15 -07:00
ea97852a3b Add server message to user-facing error on 429 for tunnel creation (#185600)
* Add server message to user-facing error on 429 for tunnel creation

* Update cli/src/tunnels/dev_tunnels.rs

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

* fix lint error

---------

Co-authored-by: Connor Peet <connor@peet.io>
2023-06-19 13:16:29 -07:00
Connor Peet 95e90d22ec cli: log startup and shutdown, don't clear service logs on restart
Fixes #183696
2023-06-16 12:40:43 -07:00
Connor Peet 8a74ad8ff5 cli: show service status in tunnel log
Fixes #183714
2023-06-16 10:42:13 -07:00
Connor PeetandGitHub 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 PeetandGitHub 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 PeetandGitHub 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 AeschlimannandGitHub 0c85b95c48 stop tunnel when executable gets deleted (#181505)
stop when executable gets deleted
2023-05-09 09:25:51 +02:00
Connor PeetandGitHub 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 PeetandGitHub 8b28c834bb cli: do not set tunnel mutex when running from service only (#181574)
Fixes #181525
2023-05-04 21:11:33 +02:00
Benjamin PaseroandGitHub 6d5b85427d debt - remove unsupported max_old_space_size option (#180183) 2023-04-17 22:32:23 -07:00
Connor PeetandGitHub ca9404bd2f cli: read tunnel lock from product.json (#179800)
Fixes #179265
2023-04-12 18:52:37 +01:00
Connor PeetandGitHub 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 PeetandGitHub 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 PeetandGitHub 3d7f6dec00 cli: fix tunnel message command (#178079)
Fixes #177394
2023-03-22 14:44:49 -07:00
Connor PeetandGitHub 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 PeetandGitHub 9fc16337d5 cli: code-insiders tunnel service install message should use code-insiders (#177394)
Fixes #177344
2023-03-16 21:18:22 +01:00
Connor PeetandGitHub eab8ba65bf cli: add tunnel status command (#177381)
Fixes #177372
2023-03-16 12:26:56 -07:00
Connor PeetandGitHub 025e3194e1 fix: missing accept server license terms arg in service install (#177366)
Fixes #177351
2023-03-16 11:23:35 -07:00
Connor PeetandGitHub 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 PeetandGitHub abab52dd94 cli: add tunnel kill/restart subcommands (#177286) 2023-03-15 15:09:12 -07:00
Connor PeetandGitHub 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 PeetandGitHub 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 2ef991a960 cli: implement --no-sleep on linux 2023-01-21 12:29:28 -08:00