Commit Graph

269 Commits

Author SHA1 Message Date
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
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