Commit graph

190 commits

Author SHA1 Message Date
Bhavya U 34d89757d8
Update license info from OSS Tool (#194025)
* Update license info from OSS Tool

* update distro commit hash
2023-09-25 13:45:07 -07:00
Connor Peet 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 Peet 4fa7137b05 cli: add more details if untar fails
For #192647
2023-09-21 14:37:33 -07:00
Connor Peet 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 Peet 3941870f19
cli: fix panic if it can't bind a port (#193019)
Fixes #192229
2023-09-13 16:17:48 +01:00
Connor Peet 35425d369a
cli: propagate server closing (#192824)
Previously this was never needed since the connection was only used for
the ext host, which never closed.

Part 1 of fixing #192521
2023-09-12 00:45:39 +02:00
Connor Peet fbdc92cac0
cli: fix delegated http requests not working (#192620)
From a refactor last literation. I don't think this is candidate worthy
as it's an uncommon path with remote-tunnels, and we can just toggle
this off for remote-ssh for this iteration.
2023-09-08 13:26:36 -07:00
Connor Peet 0ee7a576b6
tunnels: fix command prompt windows show up on windows machine (#192016)
Fixes #190425
2023-09-01 22:17:58 +02:00
Connor Peet a8b8e3a143
forwarding: fix log format again (#191941)
Fixes #191759
2023-09-01 09:38:20 -07:00
Connor Peet c394fb8959
cli: polish serve-web help (#191817)
Fixes #191601
2023-08-30 19:02:48 +02:00
Connor Peet 8813aca705
cli: recycle all tunnels the cli creates for all scenarios (#191800)
Fixes #191749
2023-08-30 17:37:00 +02:00
Connor Peet 5cc83f7994
cli: verify vscode server integrity before committing to cache (#191792)
Fixes #191469
2023-08-30 17:20:08 +02:00
Connor Peet 5413247e57
serve-web: delete socket file on server shutdown (#191692)
Fixes #191691
2023-08-29 13:57:48 -07:00
Connor Peet 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 Peet db135a575a
cli: fix decompression loop stalling (#191512)
Fixes #191501

It turns out this was a difference in inflate/deflate implementations
between the extension/SDK and the CLI. The SDK uses Node's zlib bindings,
while by default Rust's flate2 library uses a rust port of [miniz][1].
The 'logic' in the CLI was good, but miniz does not appear to flush
decompressed data as nicely on SYNC'd boundaries as zlib does, which
caused data to 'stall'. Telling the flate2 crate to use the native
bindings fixed this.

This could also be the cause of the flakiness occasionally seen on idle
tunnel connections!

[1]: https://github.com/richgel999/miniz
2023-08-28 21:51:04 +02:00
Christof Marti 4b37efe375 August 2023 endgame OSS Tool changes 2023-08-28 16:26:22 +02:00
Connor Peet ac0d0a89c8
cli: adopt latest devtunnels for ipv6 forwarding support (#191236) 2023-08-24 19:53:05 +02:00
Connor Peet 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 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 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 Peet 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
Connor Peet 05b62dd315
cli: adopt existing tunnel if one exists by name (#190110)
* wip

* cli: adopt existing tunnel if one exists by name

Gets rid of an error state users could sometimes get into.

Fixes #189830
2023-08-10 11:19:55 +10:00
Connor Peet 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 Peet 62ce95cda1
cli: spawn code_serer with CREATE_NO_WINDOW (#189477)
* fix: spawn code_serer with CREATE_NO_WINDOW

fixes #184058

* use winapi constant instead

---------

Co-authored-by: Connor Peet <connor@peet.io>
2023-08-03 11:16:12 -07:00
Connor Peet 4c469c5f8e
use winapi constant instead 2023-08-03 10:57:02 -07:00
Connor Peet 0d22bb7efa
cli: update dependencies for s360 (#189562)
* cli: update dependencies for s360

* update rust
2023-08-03 18:05:46 +01:00
kernel-sanders 8f7590dbc0
Merge branch 'main' into cli-ensure-code-tunnel-service-remains-headless-on-windows 2023-08-02 10:57:13 -04:00
Connor Peet 660d22c3ef
cli: automatically use file storage if storage in keychain fails (#189336)
Fixes #187380
2023-07-31 10:56:08 -07:00
Andrea Mah b448b21744
update license for OSS Tool (#188988)
* fixes to license and auto-generated thirdPartyNotices
2023-07-27 08:41:35 -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 c7195cef9b
cli: recycle tunnels more correctly (#188522)
Previously we only tried to recycle a tunnel once, so if the tunnel
limit changed and was reduced by >1 we'd fail even though we should
have actually just recycled multiple tunnels.

Also, only trigger recycling if the specific tunnel limit is hit.
2023-07-21 11:13:58 -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 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 Peet 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 Peet 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
Connor Peet 7bd35446a5
cli: fix windows service-mode not working (#187883)
It seems like we need to run the server (a batch file) with cmd explicitly when the server itself is not run from a command prompt.
2023-07-13 18:04:19 -07:00
Zuo Zongyuan b0620485c2
Fix: Remote tunnel service running on VM with XGETBV disabled exit with SIGILL when being connected (#187345)
fix: update cpufeatures from v0.2.5 to v0.2.8 (#187343)
2023-07-10 14:58:32 +00: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 0207c66c87
ports: support resolver tunnel factories on the web (#186937)
@alexr00 I just copied the non-Node.js-specific code into the base port
class and things seem to work. What do you think?

Fixes https://github.com/microsoft/vscode-remote-release/issues/8595
2023-07-04 12:11:09 +02:00
Raymond Zhao 300617543f
chore: bump semver and openssl (#186949) 2023-07-03 19:48:04 -07:00
kernel-sanders fd89ea0423
fix: spawn code_serer with CREATE_NO_WINDOW
fixes #184058
2023-06-28 19:13:34 -04:00
Connor Peet d0d97015b0
cli: publish availability of wsl on tunnel tags (#186016)
I plan to use this in the explorer to add a 'connect to wsl' button on relevant tunnels
2023-06-23 12:12:18 -07:00
Taiyo Sogawa 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 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 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 Peet 382cdece5c
cli: bump enumflags2 for dependabot (#185181) 2023-06-15 08:29:27 +02:00
Connor Peet 13b1b90a83
tunnel: fix keyring panic on Linux (#185066)
tunnel: fix keyring panic on Linxu

Fixes #184792

Reported on https://github.com/hwchen/keyring-rs/issues/132
2023-06-14 23:34:03 +09:00