Piping VNC
VNC over pure HTTPS via Piping Server
Application
Requirements
This project requires the latest Google Chrome with enable-experimental-web-platform-features flag for fetch() upload streaming feature (origin trial now).
chrome://flags/ > Experimental Web Platform features > Enabled
Acknowledgements
This project is highly based on noVNC. Thanks to the original authors!
Features
- Transfer data over pure HTTP/HTTPS
- End-to-end encryption using the same way as OpenSSL AES CTR does
noVNC
Features powered by- Supported VNC encodings: raw, copyrect, rre, hextile, tight, tightPNG
- Supports scaling, clipping and resizing the desktop
- Local cursor rendering
- Clipboard copy/paste
- Translations
- Touch gestures for emulating common mouse actions
- Licensed mainly under the MPL 2.0, see the license document for details
URL fragment parameters
e.g. https://piping-vnc.nwtgck.org/vnc.html#?cs_path=aaa&sc_path=bbb.
Use #?
, which does not send parameters to the hosting server: piping-vnc.nwtgck.org.
password
: VNC passwordserver
: Piping Server URLcs_path
: Server-to-client pathsc_path
: Client-to-server pathvnc_server_port
: VNC server port for command hintheaders
: HTTP headers to Piping Server- (e.g.
[["X-MyExtra1", "myvalue1"], ["Content-Type", "application/myapp"]]
)
- (e.g.
e2ee
: E2E encryption option- (type:
{ "cipher_type": "openssl-aes-256-ctr", "pass": string, "pbkdf2": { "iter": number, "hash": "sha1" | "sha256" | "sha512" } }
)
- (type:
Run locally
cd <this repo>
git submodule update --init --recursive # (once)
npm ci # (once)
npm run build-openssl-aes-ctr-stream # (once)
python3 -m http.server
Then, open http://localhost:8000.
Server Requirements
noVNC follows the standard VNC protocol, but unlike other VNC clients it does require WebSockets support. Many servers include support (e.g. x11vnc/libvncserver, QEMU, and MobileVNC), but for the others you need to use a WebSockets to TCP socket proxy.
noVNC
Authors/Contributors ofSee AUTHORS for a (full-ish) list of authors.
-
Core team:
- Joel Martin
- Samuel Mannehed (Cendio)
- Solly Ross (Red Hat / OpenStack)
- Pierre Ossman (Cendio)
-
Notable contributions:
- UI and Icons : Pierre Ossman, Chris Gordon
- Original Logo : Michael Sersen
- tight encoding : Michael Tinglof (Mercuri.ca)
-
Included libraries:
- base64 : Martijn Pieters (Digital Creations 2), Samuel Sieb (sieb.net)
- DES : Dave Zimmerman (Widget Workshop), Jef Poskanzer (ACME Labs)
- Pako : Vitaly Puzrin (https://github.com/nodeca/pako)