cmd/tsconnect: initial scaffolding for Tailscale Connect browser client

Runs a Tailscale client in the browser (via a WebAssembly build of the
wasm package) and allows SSH access to machines. The wasm package exports
a newIPN function, which returns a simple JS object with methods like
start(), login(), logout() and ssh(). The golang.org/x/crypto/ssh
package is used for the SSH client.

Terminal emulation and QR code renedring is done via NPM packages (xterm
and qrcode respectively), thus we also need a JS toolchain that can
install and bundle them. Yarn is used for installation, and esbuild
handles loading them and bundling for production serving.

Updates #3157

Signed-off-by: Mihai Parparita <mihai@tailscale.com>
This commit is contained in:
Mihai Parparita
2022-06-07 14:24:22 -07:00
committed by Mihai Parparita
parent 2a22ea3e83
commit 6f5096fa61
19 changed files with 1509 additions and 0 deletions

2
cmd/tsconnect/dist/placeholder vendored Normal file
View File

@@ -0,0 +1,2 @@
This is here to make sure the dist/ directory exists for the go:embed command
in serve.go.