Documentation
¶
Overview ¶
Package cliwisp cmd/skywire-cli/commands/wisp/client.go c4-vis-cli
`skywire cli wisp client` — the consuming end: dial someone else's Wisp backend and present it locally as a SOCKS5 proxy, so anything that speaks SOCKS5 (a browser, curl, a whole network namespace) egresses through it.
--proxy is what makes this interesting on a mesh. The WebSocket handshake itself is dialed through a SOCKS5 proxy, so pointing --proxy at the local skysocks-client puts the Wisp session on a route to an exit: the backend is reached over skywire, and the backend's own egress is wherever it chose. Neither end has to be on the clearnet for the two to meet.
Package cliwisp cmd/skywire-cli/commands/wisp/serve.go c4-vis-cli
`skywire cli wisp serve` — provide a Wisp backend, carrying every stream it is asked for over skywire.
LinuxOnTab (linuxontab.com) reads its backend from a query parameter, so no change to the page is needed:
skywire cli wisp serve # then open https://next.linuxontab.com/?wisp=ws://127.0.0.1:6001/wisp
Package cliwisp cmd/skywire-cli/commands/wisp/serve_http.go c4-vis-cli
Serving Wisp the way the protocol defines it: an HTTP listener that upgrades to a WebSocket. Its js twin serves the same sessions over the page's virtual loopback instead, because in a tab neither half of this file can exist — there is no HTTP listener and websocket.Accept is //go:build !js.
Package cliwisp cmd/skywire-cli/commands/wisp/wisp.go c4-vis-cli
`skywire cli wisp` — both ends of the Wisp protocol.
Wisp multiplexes TCP and UDP sockets over one WebSocket. Browser-based Linux emulators use it as the egress for a guest NIC: the page runs the guest's TCP/IP stack itself and asks its Wisp backend to open connections by name.
serve provide a Wisp backend, carrying its streams over skywire client consume someone else's Wisp backend, as a local SOCKS5 proxy
The two compose: `client --proxy` reaches a remote backend over a skywire route, so a Wisp endpoint published by one visor is usable from another without either being on the clearnet.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var RootCmd = &cobra.Command{
Use: "wisp",
Short: "Serve or consume the Wisp protocol over skywire",
Long: `Both ends of the Wisp protocol.
Wisp multiplexes many TCP and UDP sockets over a single WebSocket. It is what
browser Linux emulators use to give a guest kernel a network: the page runs the
guest's TCP/IP stack and asks its backend to open connections by name.
serve provide a Wisp backend, carrying its streams over skywire
client consume someone else's Wisp backend, as a local SOCKS5 proxy
The two compose. A visor serving wisp on a port it forwards over the mesh is
reachable by another visor's client via --proxy, so the WebSocket itself rides a
skywire route rather than the clearnet.`,
}
RootCmd is the `wisp` subcommand.
Functions ¶
This section is empty.
Types ¶
This section is empty.