Commit Graph

244 Commits

Author SHA1 Message Date
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
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
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
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
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
760c998cda cli: remove debug print (#173223) 2023-02-02 15:32:47 -08:00
Connor Peet
953a039549 cli: use hostname-based generation instead of bird names (#173220)
Fixes #167708 by using a more predictable naming scheme.

```
me> Write a haiku about the extinction of birds
chatgpt>
	Silent skies above,
	Once lively songs now gone,
	Fading memories.
```
2023-02-02 15:05:38 -08:00
Connor Peet
339fd630e6 cli: fix macos build (#172712) 2023-01-28 17:43:32 -08:00
Connor Peet
b5aa3e0a3d cli: use better approach to Windows services (#172679)
Fixes #167741

This eschews the offical Windows service system in favor of registering
into `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run`.
Unlike services, this can be done without administrative permissions,
does not require the current username/password, and is not blocked by
miscellaneous and mysterious system policies.

Since the process is basically unmanaged by the OS, this requires a
little legwork to start and stop the process when registering and
unregistering.
2023-01-27 15:04:56 -08:00
Connor Peet
7a04589c16 cli: fix sleep inhibition not always working (#172428)
Seems like we should prevent _both_ "useridlesystemsleep" as well as "systemsleep"

Fixes https://github.com/microsoft/vscode-remote-release/issues/7913
2023-01-25 19:50:52 +01:00
Connor Peet
5beebeb170 cli: fall back to screensaver api for linux no-sleep (#172353) 2023-01-25 16:28:30 +09: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
6d59c82ddc cli: add option to enable --no-sleep for tunnel (#172043)
Fixes https://github.com/microsoft/vscode-remote-release/issues/7127

Also add auth logs for debugging, seemed like my OSS retained
a bad Github token.
2023-01-23 10:44:27 -08:00
Connor Peet
2ef991a960 cli: implement --no-sleep on linux 2023-01-21 12:29:28 -08:00
Connor Peet
758bc69404 cli: implement --no-sleep for windows 2023-01-20 18:57:11 -08:00
Connor Peet
4cf496e905 cli: add --no-sleep flag, implementation for macos (#171885)
First part of https://github.com/microsoft/vscode-remote-release/issues/7127
2023-01-20 15:42:09 -08:00
Connor Peet
9bf083f846 fix sigpipe detection, use archive path given by client 2023-01-20 11:56:02 -08:00
Connor Peet
c600c10579 Merge remote-tracking branch 'origin/main' into connor4312/cli-wsl-control-2 2023-01-20 11:32:17 -08:00
Connor Peet
4a7adb6667 cli: use x64 server for windows arm64 (#171861)
cli: use x64 server for arm64

We don't publish an arm64 server yet. Same thing as ssh does.
2023-01-20 20:13:22 +01:00
Connor Peet
c010101bc4 wip 2023-01-19 20:03:47 -08:00
Connor Peet
8965c48d30 wip 2023-01-18 16:15:43 -08:00
Connor Peet
2c2ead679b cli: initial wsl control server
Adds an stdin/out json rpc server for wsl.

Exposes a singular install_local command to install+boot the vscode server on a port from a local archive.

Also refines the common rpc layer some more. I'm decently happy with it now.
2023-01-18 08:23:04 -08:00
Connor Peet
2aecc85c22 cli: update help text of cli for standalone differentiation 2023-01-17 08:19:36 -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
logica
dda26d34a8 cli: enable code-tunnel systemd service to start when the machine booted (#170015)
fix [Install] section of systemd service file

change WhantedBy from multi-user.target to default.target
2023-01-05 21:02:22 +00: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
Connor Peet
84d2eac2fc cli: output full version (#170057)
Fixes #169635
2022-12-26 20:47:13 +01:00
Connor Peet
82b239204c cli: print oauth errors better, respect slow_down (#169164)
For diagnosing https://github.com/microsoft/vscode/issues/169066
2022-12-14 14:06:24 -05:00
Connor Peet
25cfb20ec9 tunnels: add preview dialog for turning on tunnel access 2022-12-02 09:36:23 -08:00
Connor Peet
c87fa19f79 cli: avoid interactions when running integrated (#167780)
Fixes https://github.com/microsoft/vscode/issues/167760

The VS Code CLI gets run from a bash/shell script. This prevents interactions--in the former case, it doesn't look like a tty, and in the latter case batch scripts don't seem to support having interactive subprocesses.

This PR avoids interactions if stdin is not a tty, prompting the user to use the flag instead. Use of the flag is also persisted like an interactive agreement prompt.
2022-11-30 23:15:08 +00:00
Connor Peet
a315da7910 cli: fix service failing to install on older systemd (#167672)
Fixes https://github.com/microsoft/vscode/issues/167671

In newer systemd, enablement is apparently implicit with 'link', but it must be called for older setups.
2022-11-30 00:34:05 +00:00
Connor Peet
adcffbdce9 cli: use connection token for CLI connections (#167426)
This uses a hash of the tunnel ID to create the connection token, which
should be sufficient to resolve the issues.

We also now publish the protocol version in the tunnel tags, since the
connection token must be supplied in the resolver, which is before we
start connecting to the tunnel.

See https://github.com/microsoft/vscode-internalbacklog/issues/3287
2022-11-28 18:03:15 +01:00
Connor Peet
fb53973c5f cli: pull documentation url from product.json (#166993)
Fixes https://github.com/microsoft/vscode-cli/issues/560
2022-11-22 11:21:41 -08:00
Connor Peet
796ee2bf3c chore: pull more strings from the product.json (#166769)
Fixes the bulk of https://github.com/microsoft/vscode-cli/issues/560
2022-11-18 18:52:52 -08:00