Commit Graph

2 Commits

Author SHA1 Message Date
Mihai Parparita
2cbcdc4ba8 wasm: implement Taildrop receiving
We need to make sure that there's a filesystem (implemented by BrowserFS
for now) and then things mostly work. File contents are sent to the JS
side as base64 encoded data, which may not work for large files.

Signed-off-by: Mihai Parparita <mihai@tailscale.com>
2022-06-08 22:55:55 -07:00
Mihai Parparita
decc3ee30d ssh/browser: implement browser client for Tailscale SSH
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>
2022-06-08 15:29:41 -07:00