Consistently use "sentence case" style

Try to be more consistent in how we capitalize things. Both the "Title
Case" and "Sentence case" styles are popular, so either would work.
Google and Mozilla both prefer "Sentence case", so let's follow them.
This commit is contained in:
Pierre Ossman 2024-11-27 13:58:26 +01:00
parent 2463ccd08f
commit 7f5b51acf3
67 changed files with 175 additions and 175 deletions

View File

@ -7,7 +7,7 @@ about: Create a report to help us improve
**Describe the bug** **Describe the bug**
A clear and concise description of what the bug is. A clear and concise description of what the bug is.
**To Reproduce** **To reproduce**
Steps to reproduce the behavior: Steps to reproduce the behavior:
1. Go to '...' 1. Go to '...'
2. Click on '....' 2. Click on '....'

View File

@ -1,4 +1,4 @@
noVNC is Copyright (C) 2022 The noVNC Authors noVNC is Copyright (C) 2022 The noVNC authors
(./AUTHORS) (./AUTHORS)
The noVNC core library files are licensed under the MPL 2.0 (Mozilla The noVNC core library files are licensed under the MPL 2.0 (Mozilla

View File

@ -1,4 +1,4 @@
## noVNC: HTML VNC Client Library and Application ## noVNC: HTML VNC client library and application
[![Test Status](https://github.com/novnc/noVNC/workflows/Test/badge.svg)](https://github.com/novnc/noVNC/actions?query=workflow%3ATest) [![Test Status](https://github.com/novnc/noVNC/workflows/Test/badge.svg)](https://github.com/novnc/noVNC/actions?query=workflow%3ATest)
[![Lint Status](https://github.com/novnc/noVNC/workflows/Lint/badge.svg)](https://github.com/novnc/noVNC/actions?query=workflow%3ALint) [![Lint Status](https://github.com/novnc/noVNC/workflows/Lint/badge.svg)](https://github.com/novnc/noVNC/actions?query=workflow%3ALint)
@ -14,19 +14,19 @@ Many companies, projects and products have integrated noVNC including
[OpenNebula](http://opennebula.org/), [OpenNebula](http://opennebula.org/),
[LibVNCServer](http://libvncserver.sourceforge.net), and [LibVNCServer](http://libvncserver.sourceforge.net), and
[ThinLinc](https://cendio.com/thinlinc). See [ThinLinc](https://cendio.com/thinlinc). See
[the Projects and Companies wiki page](https://github.com/novnc/noVNC/wiki/Projects-and-companies-using-noVNC) [the Projects and companies wiki page](https://github.com/novnc/noVNC/wiki/Projects-and-companies-using-noVNC)
for a more complete list with additional info and links. for a more complete list with additional info and links.
### Table of Contents ### Table of contents
- [News/help/contact](#newshelpcontact) - [News/help/contact](#newshelpcontact)
- [Features](#features) - [Features](#features)
- [Screenshots](#screenshots) - [Screenshots](#screenshots)
- [Browser Requirements](#browser-requirements) - [Browser requirements](#browser-requirements)
- [Server Requirements](#server-requirements) - [Server requirements](#server-requirements)
- [Quick Start](#quick-start) - [Quick start](#quick-start)
- [Installation from Snap Package](#installation-from-snap-package) - [Installation from snap package](#installation-from-snap-package)
- [Integration and Deployment](#integration-and-deployment) - [Integration and deployment](#integration-and-deployment)
- [Authors/Contributors](#authorscontributors) - [Authors/Contributors](#authorscontributors)
### News/help/contact ### News/help/contact
@ -86,7 +86,7 @@ See more screenshots
[here](http://novnc.com/screenshots.html). [here](http://novnc.com/screenshots.html).
### Browser Requirements ### Browser requirements
noVNC uses many modern web technologies so a formal requirement list is noVNC uses many modern web technologies so a formal requirement list is
not available. However these are the minimum versions we are currently not available. However these are the minimum versions we are currently
@ -95,7 +95,7 @@ aware of:
* Chrome 89, Firefox 89, Safari 15, Opera 75, Edge 89 * Chrome 89, Firefox 89, Safari 15, Opera 75, Edge 89
### Server Requirements ### Server requirements
noVNC follows the standard VNC protocol, but unlike other VNC clients it does noVNC follows the standard VNC protocol, but unlike other VNC clients it does
require WebSockets support. Many servers include support (e.g. require WebSockets support. Many servers include support (e.g.
@ -107,7 +107,7 @@ use a WebSockets to TCP socket proxy. noVNC has a sister project
proxy. proxy.
### Quick Start ### Quick start
* Use the `novnc_proxy` script to automatically download and start websockify, which * Use the `novnc_proxy` script to automatically download and start websockify, which
includes a mini-webserver and the WebSockets proxy. The `--vnc` option is includes a mini-webserver and the WebSockets proxy. The `--vnc` option is
@ -124,23 +124,23 @@ proxy.
script. Hit the Connect button, enter a password if the VNC server has one script. Hit the Connect button, enter a password if the VNC server has one
configured, and enjoy! configured, and enjoy!
### Installation from Snap Package ### Installation from snap package
Running the command below will install the latest release of noVNC from Snap: Running the command below will install the latest release of noVNC from snap:
`sudo snap install novnc` `sudo snap install novnc`
#### Running noVNC from Snap Directly #### Running noVNC from snap directly
You can run the Snap-package installed novnc directly with, for example: You can run the snap package installed novnc directly with, for example:
`novnc --listen 6081 --vnc localhost:5901 # /snap/bin/novnc if /snap/bin is not in your PATH` `novnc --listen 6081 --vnc localhost:5901 # /snap/bin/novnc if /snap/bin is not in your PATH`
If you want to use certificate files, due to standard Snap confinement restrictions you need to have them in the /home/\<user\>/snap/novnc/current/ directory. If your username is jsmith an example command would be: If you want to use certificate files, due to standard snap confinement restrictions you need to have them in the /home/\<user\>/snap/novnc/current/ directory. If your username is jsmith an example command would be:
`novnc --listen 8443 --cert ~jsmith/snap/novnc/current/self.crt --key ~jsmith/snap/novnc/current/self.key --vnc ubuntu.example.com:5901` `novnc --listen 8443 --cert ~jsmith/snap/novnc/current/self.crt --key ~jsmith/snap/novnc/current/self.key --vnc ubuntu.example.com:5901`
#### Running noVNC from Snap as a Service (Daemon) #### Running noVNC from snap as a service (daemon)
The Snap package also has the capability to run a 'novnc' service which can be The snap package also has the capability to run a 'novnc' service which can be
configured to listen on multiple ports connecting to multiple VNC servers configured to listen on multiple ports connecting to multiple VNC servers
(effectively a service runing multiple instances of novnc). (effectively a service runing multiple instances of novnc).
Instructions (with example values): Instructions (with example values):
@ -172,7 +172,7 @@ services.n6082.listen 6082
services.n6082.vnc localhost:5902 services.n6082.vnc localhost:5902
``` ```
Disable a service (note that because of a limitation in Snap it's currently not Disable a service (note that because of a limitation in snap it's currently not
possible to unset config variables, setting them to blank values is the way possible to unset config variables, setting them to blank values is the way
to disable a service): to disable a service):
@ -189,7 +189,7 @@ services.n6082.listen
services.n6082.vnc services.n6082.vnc
``` ```
### Integration and Deployment ### Integration and deployment
Please see our other documents for how to integrate noVNC in your own software, Please see our other documents for how to integrate noVNC in your own software,
or deploying the noVNC application in production environments: or deploying the noVNC application in production environments:
@ -212,8 +212,8 @@ that list and you think you should be, feel free to send a PR to fix that.
* [Solly Ross](https://github.com/DirectXMan12) (Red Hat / OpenStack) * [Solly Ross](https://github.com/DirectXMan12) (Red Hat / OpenStack)
* Notable contributions: * Notable contributions:
* UI and Icons : Pierre Ossman, Chris Gordon * UI and icons : Pierre Ossman, Chris Gordon
* Original Logo : Michael Sersen * Original logo : Michael Sersen
* tight encoding : Michael Tinglof (Mercuri.ca) * tight encoding : Michael Tinglof (Mercuri.ca)
* RealVNC RSA AES authentication : USTC Vlab Team * RealVNC RSA AES authentication : USTC Vlab Team

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,13 +1,13 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2018 The noVNC Authors * Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.
*/ */
/* /*
* Localization Utilities * Localization utilities
*/ */
export class Localizer { export class Localizer {

View File

@ -1,6 +1,6 @@
/* /*
* noVNC base CSS * noVNC base CSS
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* noVNC is licensed under the MPL 2.0 (see LICENSE.txt) * noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
* This file is licensed under the 2-Clause BSD license (see LICENSE.txt). * This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
*/ */
@ -213,7 +213,7 @@ html {
} }
/* ---------------------------------------- /* ----------------------------------------
* Control Bar * Control bar
* ---------------------------------------- * ----------------------------------------
*/ */
@ -629,13 +629,13 @@ html {
margin-left: 1rem; margin-left: 1rem;
} }
/* Connection Controls */ /* Connection controls */
:root:not(.noVNC_connected) #noVNC_disconnect_button { :root:not(.noVNC_connected) #noVNC_disconnect_button {
display: none; display: none;
} }
/* ---------------------------------------- /* ----------------------------------------
* Status Dialog * Status dialog
* ---------------------------------------- * ----------------------------------------
*/ */
@ -701,7 +701,7 @@ html {
} }
/* ---------------------------------------- /* ----------------------------------------
* Connect Dialog * Connect dialog
* ---------------------------------------- * ----------------------------------------
*/ */
@ -770,7 +770,7 @@ html {
} }
/* ---------------------------------------- /* ----------------------------------------
* Server verification Dialog * Server verification dialog
* ---------------------------------------- * ----------------------------------------
*/ */
@ -787,7 +787,7 @@ html {
} }
/* ---------------------------------------- /* ----------------------------------------
* Password Dialog * Password dialog
* ---------------------------------------- * ----------------------------------------
*/ */
@ -806,7 +806,7 @@ html {
/* ---------------------------------------- /* ----------------------------------------
* Main Area * Main area
* ---------------------------------------- * ----------------------------------------
*/ */

View File

@ -1,6 +1,6 @@
/* /*
* noVNC general input element CSS * noVNC general input element CSS
* Copyright (C) 2022 The noVNC Authors * Copyright (C) 2022 The noVNC authors
* noVNC is licensed under the MPL 2.0 (see LICENSE.txt) * noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
* This file is licensed under the 2-Clause BSD license (see LICENSE.txt). * This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
*/ */

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.
@ -27,7 +27,7 @@ export function initLogging(level) {
// the url can be requested in the following way: // the url can be requested in the following way:
// https://www.example.com#myqueryparam=myvalue&password=secretvalue // https://www.example.com#myqueryparam=myvalue&password=secretvalue
// //
// Even Mixing public and non public parameters will work: // Even mixing public and non public parameters will work:
// https://www.example.com?nonsecretparam=example.com#password=secretvalue // https://www.example.com?nonsecretparam=example.com#password=secretvalue
export function getQueryVar(name, defVal) { export function getQueryVar(name, defVal) {
"use strict"; "use strict";

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2021 The noVNC Authors * Copyright (C) 2021 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2024 The noVNC Authors * Copyright (C) 2024 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* (c) 2012 Michael Tinglof, Joe Balaz, Les Piech (Mercuri.ca) * (c) 2012 Michael Tinglof, Joe Balaz, Les Piech (Mercuri.ca)
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2024 The noVNC Authors * Copyright (C) 2024 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2021 The noVNC Authors * Copyright (C) 2021 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors * Copyright (C) 2020 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors * Copyright (C) 2020 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2018 The noVNC Authors * Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 or any later version (see LICENSE.txt) * Licensed under MPL 2.0 or any later version (see LICENSE.txt)
*/ */

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2018 The noVNC Authors * Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 or any later version (see LICENSE.txt) * Licensed under MPL 2.0 or any later version (see LICENSE.txt)
*/ */

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors * Copyright (C) 2020 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 or any later version (see LICENSE.txt) * Licensed under MPL 2.0 or any later version (see LICENSE.txt)
*/ */

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2018 The noVNC Authors * Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 or any later version (see LICENSE.txt) * Licensed under MPL 2.0 or any later version (see LICENSE.txt)
*/ */

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors * Copyright (C) 2020 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.
@ -1378,7 +1378,7 @@ export default class RFB extends EventTargetMixin {
} }
} }
// Message Handlers // Message handlers
_negotiateProtocolVersion() { _negotiateProtocolVersion() {
if (this._sock.rQwait("version", 12)) { if (this._sock.rQwait("version", 12)) {
@ -2427,7 +2427,7 @@ export default class RFB extends EventTargetMixin {
switch (xvpMsg) { switch (xvpMsg) {
case 0: // XVP_FAIL case 0: // XVP_FAIL
Log.Error("XVP Operation Failed"); Log.Error("XVP operation failed");
break; break;
case 1: // XVP_INIT case 1: // XVP_INIT
this._rfbXvpVer = xvpVer; this._rfbXvpVer = xvpVer;
@ -2756,7 +2756,7 @@ export default class RFB extends EventTargetMixin {
} }
_handleLedEvent() { _handleLedEvent() {
if (this._sock.rQwait("LED Status", 1)) { if (this._sock.rQwait("LED status", 1)) {
return false; return false;
} }

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 or any later version (see LICENSE.txt) * Licensed under MPL 2.0 or any later version (see LICENSE.txt)
*/ */

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors * Copyright (C) 2020 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2018 The noVNC Authors * Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors * Copyright (C) 2020 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* See README.md for usage and integration instructions. * See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/* /*
* Websock: high-performance buffering wrapper * Websock: high-performance buffering wrapper
* Copyright (C) 2019 The noVNC Authors * Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
* *
* Websock is similar to the standard WebSocket / RTCDataChannel object * Websock is similar to the standard WebSocket / RTCDataChannel object
@ -70,7 +70,7 @@ export default class Websock {
}; };
} }
// Getters and Setters // Getters and setters
get readyState() { get readyState() {
let subState; let subState;
@ -94,7 +94,7 @@ export default class Websock {
return "unknown"; return "unknown";
} }
// Receive Queue // Receive queue
rQpeek8() { rQpeek8() {
return this._rQ[this._rQi]; return this._rQ[this._rQi];
} }
@ -173,7 +173,7 @@ export default class Websock {
return false; return false;
} }
// Send Queue // Send queue
sQpush8(num) { sQpush8(num) {
this._sQensureSpace(1); this._sQensureSpace(1);
@ -227,7 +227,7 @@ export default class Websock {
} }
} }
// Event Handlers // Event handlers
off(evt) { off(evt) {
this._eventHandlers[evt] = () => {}; this._eventHandlers[evt] = () => {};
} }
@ -325,7 +325,7 @@ export default class Websock {
if (this._rQbufferSize > MAX_RQ_GROW_SIZE) { if (this._rQbufferSize > MAX_RQ_GROW_SIZE) {
this._rQbufferSize = MAX_RQ_GROW_SIZE; this._rQbufferSize = MAX_RQ_GROW_SIZE;
if (this._rQbufferSize - (this._rQlen - this._rQi) < minFit) { if (this._rQbufferSize - (this._rQlen - this._rQi) < minFit) {
throw new Error("Receive Queue buffer exceeded " + MAX_RQ_GROW_SIZE + " bytes, and the new message could not fit"); throw new Error("Receive queue buffer exceeded " + MAX_RQ_GROW_SIZE + " bytes, and the new message could not fit");
} }
} }

View File

@ -1,4 +1,4 @@
# 1. Internal Modules # 1. Internal modules
The noVNC client is composed of several internal modules that handle The noVNC client is composed of several internal modules that handle
rendering, input, networking, etc. Each of the modules is designed to rendering, input, networking, etc. Each of the modules is designed to
@ -9,7 +9,7 @@ stable, and this documentation is not maintained as well as the
official external API. official external API.
## 1.1 Module List ## 1.1 Module list
* __Keyboard__ (core/input/keyboard.js): Keyboard input event handler with * __Keyboard__ (core/input/keyboard.js): Keyboard input event handler with
non-US keyboard support. Translates keyDown and keyUp events to X11 non-US keyboard support. Translates keyDown and keyUp events to X11
@ -32,9 +32,9 @@ callback event name, and the callback function.
## 2. Modules ## 2. Modules
## 2.1 Keyboard Module ## 2.1 Keyboard module
### 2.1.1 Configuration Attributes ### 2.1.1 Configuration attributes
None None
@ -52,9 +52,9 @@ None
| onkeypress | (keysym, code, down) | Handler for key press/release | onkeypress | (keysym, code, down) | Handler for key press/release
## 2.2 Display Module ## 2.2 Display module
### 2.2.1 Configuration Attributes ### 2.2.1 Configuration attributes
| name | type | mode | default | description | name | type | mode | default | description
| ------------ | ----- | ---- | ------- | ------------ | ------------ | ----- | ---- | ------- | ------------

View File

@ -1,4 +1,4 @@
# Embedding and Deploying noVNC Application # Embedding and deploying noVNC application
This document describes how to embed and deploy the noVNC application, which This document describes how to embed and deploy the noVNC application, which
includes settings and a full user interface. If you are looking for includes settings and a full user interface. If you are looking for
@ -71,8 +71,8 @@ query string. Currently the following options are available:
* `logging` - The console log level. Can be one of `error`, `warn`, `info` or * `logging` - The console log level. Can be one of `error`, `warn`, `info` or
`debug`. `debug`.
## HTTP Serving Considerations ## HTTP serving considerations
### Browser Cache Issue ### Browser cache issue
If you serve noVNC files using a web server that provides an ETag header, and If you serve noVNC files using a web server that provides an ETag header, and
include any options in the query string, a nasty browser cache issue can bite include any options in the query string, a nasty browser cache issue can bite
@ -84,7 +84,7 @@ to always revalidate cached files using conditional requests. The correct
semantics are achieved via the (confusingly named) `Cache-Control: no-cache` semantics are achieved via the (confusingly named) `Cache-Control: no-cache`
header that needs to be provided in the web server responses. header that needs to be provided in the web server responses.
### Example Server Configurations ### Example server configurations
Apache: Apache:

View File

@ -16,7 +16,7 @@ noVNC includes a small example application called `vnc_lite.html`. This does
not make use of all the features of noVNC, but is a good start to see how to not make use of all the features of noVNC, but is a good start to see how to
do things. do things.
## Conversion of Modules ## Conversion of modules
noVNC is written using ECMAScript 6 modules. This is not supported by older noVNC is written using ECMAScript 6 modules. This is not supported by older
versions of Node.js. To use noVNC with those older versions of Node.js the versions of Node.js. To use noVNC with those older versions of Node.js the

View File

@ -30,7 +30,7 @@ provides a cut-and-paste URL to go to.
active connections active connections
.SH AUTHOR .SH AUTHOR
The noVNC Authors The noVNC authors
https://github.com/novnc/noVNC https://github.com/novnc/noVNC
.SH SEE ALSO .SH SEE ALSO

View File

@ -19,7 +19,7 @@ update-js: $(JSONFILES)
update-pot: update-pot:
xgettext --output=noVNC.js.pot \ xgettext --output=noVNC.js.pot \
--copyright-holder="The noVNC Authors" \ --copyright-holder="The noVNC authors" \
--package-name="noVNC" \ --package-name="noVNC" \
--package-version="$(VERSION)" \ --package-version="$(VERSION)" \
--msgid-bugs-address="novnc@googlegroups.com" \ --msgid-bugs-address="novnc@googlegroups.com" \

View File

@ -1,7 +1,7 @@
#!/usr/bin/env node #!/usr/bin/env node
/* /*
* ps2js: gettext .po to noVNC .js converter * ps2js: gettext .po to noVNC .js converter
* Copyright (C) 2018 The noVNC Authors * Copyright (C) 2018 The noVNC authors
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@ -1,7 +1,7 @@
#!/usr/bin/env node #!/usr/bin/env node
/* /*
* xgettext-html: HTML gettext parser * xgettext-html: HTML gettext parser
* Copyright (C) 2018 The noVNC Authors * Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
*/ */

View File

@ -1,6 +1,6 @@
/* /*
* noVNC: HTML5 VNC client * noVNC: HTML5 VNC client
* Copyright (C) 2018 The noVNC Authors * Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
*/ */

View File

@ -1,6 +1,6 @@
import Base64 from '../core/base64.js'; import Base64 from '../core/base64.js';
describe('Base64 Tools', function () { describe('Base64 tools', function () {
"use strict"; "use strict";
const BIN_ARR = new Array(256); const BIN_ARR = new Array(256);

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done; return done;
} }
describe('CopyRect Decoder', function () { describe('CopyRect decoder', function () {
let decoder; let decoder;
let display; let display;

View File

@ -1,7 +1,7 @@
import Base64 from '../core/base64.js'; import Base64 from '../core/base64.js';
import Display from '../core/display.js'; import Display from '../core/display.js';
describe('Display/Canvas Helper', function () { describe('Display/Canvas helper', function () {
const checkedData = new Uint8ClampedArray([ const checkedData = new Uint8ClampedArray([
0x00, 0x00, 0xff, 255, 0x00, 0x00, 0xff, 255, 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255, 0x00, 0x00, 0xff, 255, 0x00, 0x00, 0xff, 255, 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255,
0x00, 0x00, 0xff, 255, 0x00, 0x00, 0xff, 255, 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255, 0x00, 0x00, 0xff, 255, 0x00, 0x00, 0xff, 255, 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255,

View File

@ -108,7 +108,7 @@ function almost(a, b) {
return diff < 5; return diff < 5;
} }
describe('H.264 Parser', function () { describe('H.264 parser', function () {
it('should parse constrained baseline video', function () { it('should parse constrained baseline video', function () {
let parser = new H264Parser(redGreenBlue16x16Video); let parser = new H264Parser(redGreenBlue16x16Video);
@ -130,7 +130,7 @@ describe('H.264 Parser', function () {
}); });
}); });
describe('H.264 Decoder Unit Test', function () { describe('H.264 decoder unit test', function () {
let decoder; let decoder;
beforeEach(function () { beforeEach(function () {
@ -181,7 +181,7 @@ describe('H.264 Decoder Unit Test', function () {
}); });
}); });
describe('H.264 Decoder Functional Test', function () { describe('H.264 decoder functional test', function () {
let decoder; let decoder;
let display; let display;

View File

@ -36,7 +36,7 @@ function push32(arr, num) {
num & 0xFF); num & 0xFF);
} }
describe('Hextile Decoder', function () { describe('Hextile decoder', function () {
let decoder; let decoder;
let display; let display;

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done; return done;
} }
describe('JPEG Decoder', function () { describe('JPEG decoder', function () {
let decoder; let decoder;
let display; let display;

View File

@ -1,6 +1,6 @@
import Keyboard from '../core/input/keyboard.js'; import Keyboard from '../core/input/keyboard.js';
describe('Key Event Handling', function () { describe('Key event handling', function () {
"use strict"; "use strict";
// The real KeyboardEvent constructor might not work everywhere we // The real KeyboardEvent constructor might not work everywhere we
@ -19,7 +19,7 @@ describe('Key Event Handling', function () {
return e; return e;
} }
describe('Decode Keyboard Events', function () { describe('Decode keyboard events', function () {
it('should decode keydown events', function (done) { it('should decode keydown events', function (done) {
const kbd = new Keyboard(document); const kbd = new Keyboard(document);
kbd.onkeyevent = (keysym, code, down) => { kbd.onkeyevent = (keysym, code, down) => {
@ -68,7 +68,7 @@ describe('Key Event Handling', function () {
}); });
}); });
describe('Track Key State', function () { describe('Track key state', function () {
it('should send release using the same keysym as the press', function (done) { it('should send release using the same keysym as the press', function (done) {
const kbd = new Keyboard(document); const kbd = new Keyboard(document);
kbd.onkeyevent = (keysym, code, down) => { kbd.onkeyevent = (keysym, code, down) => {
@ -101,7 +101,7 @@ describe('Key Event Handling', function () {
expect(kbd.onkeyevent).to.not.have.been.called; expect(kbd.onkeyevent).to.not.have.been.called;
}); });
describe('Legacy Events', function () { describe('Legacy events', function () {
it('should track keys using keyCode if no code', function (done) { it('should track keys using keyCode if no code', function (done) {
const kbd = new Keyboard(document); const kbd = new Keyboard(document);
kbd.onkeyevent = (keysym, code, down) => { kbd.onkeyevent = (keysym, code, down) => {

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done; return done;
} }
describe('Raw Decoder', function () { describe('Raw decoder', function () {
let decoder; let decoder;
let display; let display;

View File

@ -67,7 +67,7 @@ function deflateWithSize(data) {
return new Uint8Array(strm.output.buffer, 0, strm.next_out); return new Uint8Array(strm.output.buffer, 0, strm.next_out);
} }
describe('Remote Frame Buffer Protocol Client', function () { describe('Remote Frame Buffer protocol client', function () {
let clock; let clock;
let raf; let raf;
let fakeResizeObserver = null; let fakeResizeObserver = null;
@ -287,7 +287,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('Public API Basic Behavior', function () { describe('Public API basic behavior', function () {
let client; let client;
beforeEach(function () { beforeEach(function () {
client = makeRFB(); client = makeRFB();
@ -1027,7 +1027,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('Misc Internals', function () { describe('Misc internals', function () {
describe('#_fail', function () { describe('#_fail', function () {
let client; let client;
beforeEach(function () { beforeEach(function () {
@ -1068,7 +1068,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('Protocol Initialization States', function () { describe('Protocol initialization states', function () {
let client; let client;
beforeEach(function () { beforeEach(function () {
client = makeRFB(); client = makeRFB();
@ -1226,7 +1226,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('Legacy Authentication', function () { describe('Legacy authentication', function () {
it('should fail on auth scheme 0 (pre 3.7) with the given message', function () { it('should fail on auth scheme 0 (pre 3.7) with the given message', function () {
const errMsg = "Whoopsies"; const errMsg = "Whoopsies";
const data = [0, 0, 0, 0]; const data = [0, 0, 0, 0];
@ -1286,7 +1286,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
expect(callback.args[0][0].detail.clean).to.be.false; expect(callback.args[0][0].detail.clean).to.be.false;
}); });
describe('VNC Authentication (type 2) Handler', function () { describe('VNC authentication (type 2) handler', function () {
it('should fire the credentialsrequired event if missing a password', function () { it('should fire the credentialsrequired event if missing a password', function () {
const spy = sinon.spy(); const spy = sinon.spy();
client.addEventListener("credentialsrequired", spy); client.addEventListener("credentialsrequired", spy);
@ -1331,7 +1331,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('RSA-AES Authentication (type 6) Handler', function () { describe('RSA-AES authentication (type 6) handler', function () {
function fakeGetRandomValues(arr) { function fakeGetRandomValues(arr) {
if (arr.length === 16) { if (arr.length === 16) {
arr.set(new Uint8Array([ arr.set(new Uint8Array([
@ -1776,7 +1776,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('ARD Authentication (type 30) Handler', function () { describe('ARD authentication (type 30) handler', function () {
let byteArray = new Uint8Array(Array.from(new Uint8Array(128).keys())); let byteArray = new Uint8Array(Array.from(new Uint8Array(128).keys()));
function fakeGetRandomValues(arr) { function fakeGetRandomValues(arr) {
if (arr.length == 128) { if (arr.length == 128) {
@ -1869,7 +1869,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('MSLogonII Authentication (type 113) Handler', function () { describe('MSLogonII authentication (type 113) handler', function () {
function fakeGetRandomValues(arr) { function fakeGetRandomValues(arr) {
if (arr.length == 8) { if (arr.length == 8) {
arr.set(new Uint8Array([0, 0, 0, 0, 5, 6, 7, 8])); arr.set(new Uint8Array([0, 0, 0, 0, 5, 6, 7, 8]));
@ -1952,7 +1952,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('XVP Authentication (type 22) Handler', function () { describe('XVP authentication (type 22) handler', function () {
it('should fall through to standard VNC authentication upon completion', function () { it('should fall through to standard VNC authentication upon completion', function () {
client.addEventListener("credentialsrequired", () => { client.addEventListener("credentialsrequired", () => {
client.sendCredentials({ username: 'user', client.sendCredentials({ username: 'user',
@ -2001,7 +2001,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('TightVNC Authentication (type 16) Handler', function () { describe('TightVNC authentication (type 16) handler', function () {
beforeEach(function () { beforeEach(function () {
sendSecurity(16, client); sendSecurity(16, client);
client._sock._websocket._getSentData(); // skip the security reply client._sock._websocket._getSentData(); // skip the security reply
@ -2088,7 +2088,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('VeNCrypt Authentication (type 19) Handler', function () { describe('VeNCrypt authentication (type 19) handler', function () {
beforeEach(function () { beforeEach(function () {
sendSecurity(19, client); sendSecurity(19, client);
expect(client._sock).to.have.sent(new Uint8Array([19])); expect(client._sock).to.have.sent(new Uint8Array([19]));
@ -2171,7 +2171,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('Plain Authentication (type 256) Handler', function () { describe('Plain authentication (type 256) handler', function () {
beforeEach(function () { beforeEach(function () {
sendSecurity(19, client); sendSecurity(19, client);
expect(client._sock).to.have.sent(new Uint8Array([19])); expect(client._sock).to.have.sent(new Uint8Array([19]));
@ -2430,7 +2430,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
expect(client._keyboard.grab).to.have.been.calledOnce; expect(client._keyboard.grab).to.have.been.calledOnce;
}); });
describe('Initial Update Request', function () { describe('Initial update request', function () {
beforeEach(function () { beforeEach(function () {
sinon.spy(RFB.messages, "pixelFormat"); sinon.spy(RFB.messages, "pixelFormat");
sinon.spy(RFB.messages, "clientEncodings"); sinon.spy(RFB.messages, "clientEncodings");
@ -2485,7 +2485,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('Protocol Message Processing After Completing Initialization', function () { describe('Protocol message processing after completing initialization', function () {
let client; let client;
beforeEach(function () { beforeEach(function () {
@ -2495,7 +2495,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
client._fbHeight = 20; client._fbHeight = 20;
}); });
describe('Framebuffer Update Handling', function () { describe('Framebuffer update handling', function () {
function sendFbuMsg(rectInfo, rectData, client, rectCnt) { function sendFbuMsg(rectInfo, rectData, client, rectCnt) {
let data = []; let data = [];
@ -2576,7 +2576,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
expect(callback.args[0][0].detail.clean).to.be.false; expect(callback.args[0][0].detail.clean).to.be.false;
}); });
describe('Message Encoding Handlers', function () { describe('Message encoding handlers', function () {
beforeEach(function () { beforeEach(function () {
// a really small frame // a really small frame
client._fbWidth = 4; client._fbWidth = 4;
@ -2817,7 +2817,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('the VMware Cursor pseudo-encoding handler', function () { describe('the VMware cursor pseudo-encoding handler', function () {
beforeEach(function () { beforeEach(function () {
sinon.spy(client._cursor, 'change'); sinon.spy(client._cursor, 'change');
}); });
@ -3150,7 +3150,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('XVP Message Handling', function () { describe('XVP message handling', function () {
it('should set the XVP version and fire the callback with the version on XVP_INIT', function () { it('should set the XVP version and fire the callback with the version on XVP_INIT', function () {
const spy = sinon.spy(); const spy = sinon.spy();
client.addEventListener("capabilities", spy); client.addEventListener("capabilities", spy);
@ -3172,7 +3172,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('Normal Clipboard Handling Receive', function () { describe('Normal clipboard handling receive', function () {
it('should fire the clipboard callback with the retrieved text on ServerCutText', function () { it('should fire the clipboard callback with the retrieved text on ServerCutText', function () {
const expectedStr = 'cheese!'; const expectedStr = 'cheese!';
const data = [3, 0, 0, 0]; const data = [3, 0, 0, 0];
@ -3187,7 +3187,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('Extended clipboard Handling', function () { describe('Extended clipboard handling', function () {
describe('Extended clipboard initialization', function () { describe('Extended clipboard initialization', function () {
beforeEach(function () { beforeEach(function () {
@ -3222,7 +3222,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
describe('Extended Clipboard Handling Receive', function () { describe('Extended clipboard handling receive', function () {
beforeEach(function () { beforeEach(function () {
// Send our capabilities // Send our capabilities
@ -3493,7 +3493,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('Asynchronous Events', function () { describe('Asynchronous events', function () {
let client; let client;
let pointerEvent; let pointerEvent;
let keyEvent; let keyEvent;
@ -3537,7 +3537,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
return res; return res;
} }
describe('Mouse Events', function () { describe('Mouse events', function () {
function sendMouseMoveEvent(x, y) { function sendMouseMoveEvent(x, y) {
let pos = elementToClient(x, y); let pos = elementToClient(x, y);
let ev; let ev;
@ -3663,7 +3663,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
50, 70, 0x0); 50, 70, 0x0);
}); });
describe('Event Aggregation', function () { describe('Event aggregation', function () {
it('should send a single pointer event on mouse movement', function () { it('should send a single pointer event on mouse movement', function () {
sendMouseMoveEvent(50, 70); sendMouseMoveEvent(50, 70);
clock.tick(100); clock.tick(100);
@ -3790,7 +3790,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('Wheel Events', function () { describe('Wheel events', function () {
function sendWheelEvent(x, y, dx, dy, mode=0) { function sendWheelEvent(x, y, dx, dy, mode=0) {
let pos = elementToClient(x, y); let pos = elementToClient(x, y);
let ev; let ev;
@ -3900,7 +3900,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('Keyboard Events', function () { describe('Keyboard events', function () {
it('should send a key message on a key press', function () { it('should send a key message on a key press', function () {
let esock = new Websock(); let esock = new Websock();
let ews = new FakeWebSocket(); let ews = new FakeWebSocket();
@ -4613,7 +4613,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
}); });
}); });
describe('WebSocket Events', function () { describe('WebSocket events', function () {
// message events // message events
it('should do nothing if we receive an empty message and have nothing in the queue', function () { it('should do nothing if we receive an empty message and have nothing in the queue', function () {
sinon.spy(client, "_normalMsg"); sinon.spy(client, "_normalMsg");
@ -4901,7 +4901,7 @@ describe('RFB messages', function () {
sock.attach(websock); sock.attach(websock);
}); });
describe('Input Events', function () { describe('Input events', function () {
it('should send correct data for keyboard events', function () { it('should send correct data for keyboard events', function () {
// FIXME: down should be boolean // FIXME: down should be boolean
RFB.messages.keyEvent(sock, 0x12345678, 0); RFB.messages.keyEvent(sock, 0x12345678, 0);
@ -4936,7 +4936,7 @@ describe('RFB messages', function () {
}); });
}); });
describe('Clipboard Events', function () { describe('Clipboard events', function () {
it('should send correct data for clipboard events', function () { it('should send correct data for clipboard events', function () {
RFB.messages.clientCutText(sock, new Uint8Array([ 0x01, 0x23, 0x45, 0x67 ])); RFB.messages.clientCutText(sock, new Uint8Array([ 0x01, 0x23, 0x45, 0x67 ]));
let expected = let expected =
@ -4946,7 +4946,7 @@ describe('RFB messages', function () {
}); });
}); });
describe('Extended Clipboard Handling Send', function () { describe('Extended clipboard handling send', function () {
it('should call clientCutText with correct Caps data', function () { it('should call clientCutText with correct Caps data', function () {
let formats = { let formats = {
0: 2, 0: 2,
@ -5133,7 +5133,7 @@ describe('RFB messages', function () {
}); });
}); });
describe('Screen Layout', function () { describe('Screen layout', function () {
it('should send correct data for screen layout changes', function () { it('should send correct data for screen layout changes', function () {
RFB.messages.setDesktopSize(sock, 12345, 54321, 0x12345678, 0x90abcdef); RFB.messages.setDesktopSize(sock, 12345, 54321, 0x12345678, 0x90abcdef);
let expected = let expected =
@ -5155,7 +5155,7 @@ describe('RFB messages', function () {
}); });
}); });
describe('Continuous Updates', function () { describe('Continuous updates', function () {
it('should send correct data for continuous updates configuration', function () { it('should send correct data for continuous updates configuration', function () {
// FIXME: enable should be boolean // FIXME: enable should be boolean
RFB.messages.enableContinuousUpdates(sock, 0, 12345, 54321, 34343, 18181); RFB.messages.enableContinuousUpdates(sock, 0, 12345, 54321, 34343, 18181);
@ -5165,7 +5165,7 @@ describe('RFB messages', function () {
}); });
}); });
describe('Pixel Format', function () { describe('Pixel format', function () {
it('should send correct data for normal depth', function () { it('should send correct data for normal depth', function () {
RFB.messages.pixelFormat(sock, 24, true); RFB.messages.pixelFormat(sock, 24, true);
let expected = let expected =

View File

@ -41,7 +41,7 @@ function push32(arr, num) {
num & 0xFF); num & 0xFF);
} }
describe('RRE Decoder', function () { describe('RRE decoder', function () {
let decoder; let decoder;
let display; let display;

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done; return done;
} }
describe('Tight Decoder', function () { describe('Tight decoder', function () {
let decoder; let decoder;
let display; let display;

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done; return done;
} }
describe('TightPng Decoder', function () { describe('TightPng decoder', function () {
let decoder; let decoder;
let display; let display;

View File

@ -535,7 +535,7 @@ describe('Websock', function () {
}); });
}); });
describe('WebSocket Receiving', function () { describe('WebSocket receiving', function () {
let sock; let sock;
beforeEach(function () { beforeEach(function () {
sock = new Websock(); sock = new Websock();

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done; return done;
} }
describe('Zlib Decoder', function () { describe('Zlib decoder', function () {
let decoder; let decoder;
let display; let display;

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done; return done;
} }
describe('ZRLE Decoder', function () { describe('ZRLE decoder', function () {
let decoder; let decoder;
let display; let display;

View File

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<title>VNC Playback</title> <title>VNC playback</title>
<script type="module" src="./playback-ui.js"></script> <script type="module" src="./playback-ui.js"></script>
</head> </head>
<body> <body>

View File

@ -1,7 +1,7 @@
#!/usr/bin/env node #!/usr/bin/env node
/* /*
* genkeysymdef: X11 keysymdef.h to JavaScript converter * genkeysymdef: X11 keysymdef.h to JavaScript converter
* Copyright (C) 2018 The noVNC Authors * Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt) * Licensed under MPL 2.0 (see LICENSE.txt)
*/ */

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Copyright (C) 2018 The noVNC Authors # Copyright (C) 2018 The noVNC authors
# Licensed under MPL 2.0 or any later version (see LICENSE.txt) # Licensed under MPL 2.0 or any later version (see LICENSE.txt)
usage() { usage() {
@ -82,7 +82,7 @@ cleanup() {
fi fi
} }
# Process Arguments # Process arguments
# Arguments that only apply to chrooter itself # Arguments that only apply to chrooter itself
while [ "$*" ]; do while [ "$*" ]; do

View File

@ -4,7 +4,7 @@
<!-- <!--
noVNC example: simple example using default UI noVNC example: simple example using default UI
Copyright (C) 2019 The noVNC Authors Copyright (C) 2019 The noVNC authors
noVNC is licensed under the MPL 2.0 (see LICENSE.txt) noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
This file is licensed under the 2-Clause BSD license (see LICENSE.txt). This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
@ -108,7 +108,7 @@
</div> </div>
</div> </div>
<!-- noVNC Control Bar --> <!-- noVNC control bar -->
<div id="noVNC_control_bar_anchor" class="noVNC_vcenter"> <div id="noVNC_control_bar_anchor" class="noVNC_vcenter">
<div id="noVNC_control_bar"> <div id="noVNC_control_bar">
@ -123,18 +123,18 @@
<!-- Drag/Pan the viewport --> <!-- Drag/Pan the viewport -->
<input type="image" alt="Drag" src="app/images/drag.svg" <input type="image" alt="Drag" src="app/images/drag.svg"
id="noVNC_view_drag_button" class="noVNC_button noVNC_hidden" id="noVNC_view_drag_button" class="noVNC_button noVNC_hidden"
title="Move/Drag Viewport"> title="Move/Drag viewport">
<!--noVNC Touch Device only buttons--> <!--noVNC touch device only buttons-->
<div id="noVNC_mobile_buttons"> <div id="noVNC_mobile_buttons">
<input type="image" alt="Keyboard" src="app/images/keyboard.svg" <input type="image" alt="Keyboard" src="app/images/keyboard.svg"
id="noVNC_keyboard_button" class="noVNC_button" title="Show Keyboard"> id="noVNC_keyboard_button" class="noVNC_button" title="Show keyboard">
</div> </div>
<!-- Extra manual keys --> <!-- Extra manual keys -->
<input type="image" alt="Extra keys" src="app/images/toggleextrakeys.svg" <input type="image" alt="Extra keys" src="app/images/toggleextrakeys.svg"
id="noVNC_toggle_extra_keys_button" class="noVNC_button" id="noVNC_toggle_extra_keys_button" class="noVNC_button"
title="Show Extra Keys"> title="Show extra keys">
<div class="noVNC_vcenter"> <div class="noVNC_vcenter">
<div id="noVNC_modifiers" class="noVNC_panel"> <div id="noVNC_modifiers" class="noVNC_panel">
<input type="image" alt="Ctrl" src="app/images/ctrl.svg" <input type="image" alt="Ctrl" src="app/images/ctrl.svg"
@ -190,9 +190,9 @@
</div> </div>
<!-- Toggle fullscreen --> <!-- Toggle fullscreen -->
<input type="image" alt="Full Screen" src="app/images/fullscreen.svg" <input type="image" alt="Full screen" src="app/images/fullscreen.svg"
id="noVNC_fullscreen_button" class="noVNC_button noVNC_hidden" id="noVNC_fullscreen_button" class="noVNC_button noVNC_hidden"
title="Full Screen"> title="Full screen">
<!-- Settings --> <!-- Settings -->
<input type="image" alt="Settings" src="app/images/settings.svg" <input type="image" alt="Settings" src="app/images/settings.svg"
@ -205,21 +205,21 @@
</div> </div>
<ul> <ul>
<li> <li>
<label><input id="noVNC_setting_shared" type="checkbox"> Shared Mode</label> <label><input id="noVNC_setting_shared" type="checkbox"> Shared mode</label>
</li> </li>
<li> <li>
<label><input id="noVNC_setting_view_only" type="checkbox"> View Only</label> <label><input id="noVNC_setting_view_only" type="checkbox"> View only</label>
</li> </li>
<li><hr></li> <li><hr></li>
<li> <li>
<label><input id="noVNC_setting_view_clip" type="checkbox"> Clip to Window</label> <label><input id="noVNC_setting_view_clip" type="checkbox"> Clip to window</label>
</li> </li>
<li> <li>
<label for="noVNC_setting_resize">Scaling Mode:</label> <label for="noVNC_setting_resize">Scaling mode:</label>
<select id="noVNC_setting_resize" name="vncResize"> <select id="noVNC_setting_resize" name="vncResize">
<option value="off">None</option> <option value="off">None</option>
<option value="scale">Local Scaling</option> <option value="scale">Local scaling</option>
<option value="remote">Remote Resizing</option> <option value="remote">Remote resizing</option>
</select> </select>
</li> </li>
<li><hr></li> <li><hr></li>
@ -261,15 +261,15 @@
</li> </li>
<li><hr></li> <li><hr></li>
<li> <li>
<label><input id="noVNC_setting_reconnect" type="checkbox"> Automatic Reconnect</label> <label><input id="noVNC_setting_reconnect" type="checkbox"> Automatic reconnect</label>
</li> </li>
<li> <li>
<label for="noVNC_setting_reconnect_delay">Reconnect Delay (ms):</label> <label for="noVNC_setting_reconnect_delay">Reconnect delay (ms):</label>
<input id="noVNC_setting_reconnect_delay" type="number"> <input id="noVNC_setting_reconnect_delay" type="number">
</li> </li>
<li><hr></li> <li><hr></li>
<li> <li>
<label><input id="noVNC_setting_show_dot" type="checkbox"> Show Dot when No Cursor</label> <label><input id="noVNC_setting_show_dot" type="checkbox"> Show dot when no cursor</label>
</li> </li>
<li><hr></li> <li><hr></li>
<!-- Logging selection dropdown --> <!-- Logging selection dropdown -->
@ -290,7 +290,7 @@
</div> </div>
</div> </div>
<!-- Connection Controls --> <!-- Connection controls -->
<input type="image" alt="Disconnect" src="app/images/disconnect.svg" <input type="image" alt="Disconnect" src="app/images/disconnect.svg"
id="noVNC_disconnect_button" class="noVNC_button" id="noVNC_disconnect_button" class="noVNC_button"
title="Disconnect"> title="Disconnect">
@ -305,7 +305,7 @@
</div> </div>
</div> </div>
<!-- Status Dialog --> <!-- Status dialog -->
<div id="noVNC_status"></div> <div id="noVNC_status"></div>
<!-- Connect button --> <!-- Connect button -->
@ -320,7 +320,7 @@
</div> </div>
</div> </div>
<!-- Server Key Verification Dialog --> <!-- Server key verification dialog -->
<div class="noVNC_center noVNC_connect_layer"> <div class="noVNC_center noVNC_connect_layer">
<div id="noVNC_verify_server_dlg" class="noVNC_panel"><form> <div id="noVNC_verify_server_dlg" class="noVNC_panel"><form>
<div class="noVNC_heading"> <div class="noVNC_heading">
@ -344,7 +344,7 @@
</form></div> </form></div>
</div> </div>
<!-- Password Dialog --> <!-- Password dialog -->
<div class="noVNC_center noVNC_connect_layer"> <div class="noVNC_center noVNC_connect_layer">
<div id="noVNC_credentials_dlg" class="noVNC_panel"><form> <div id="noVNC_credentials_dlg" class="noVNC_panel"><form>
<div class="noVNC_heading"> <div class="noVNC_heading">
@ -359,12 +359,12 @@
<input id="noVNC_password_input" type="password"> <input id="noVNC_password_input" type="password">
</div> </div>
<div> <div>
<input id="noVNC_credentials_button" type="submit" value="Send Credentials" class="noVNC_submit"> <input id="noVNC_credentials_button" type="submit" value="Send credentials" class="noVNC_submit">
</div> </div>
</form></div> </form></div>
</div> </div>
<!-- Transition Screens --> <!-- Transition screens -->
<div id="noVNC_transition"> <div id="noVNC_transition">
<div id="noVNC_transition_text"></div> <div id="noVNC_transition_text"></div>
<div> <div>

View File

@ -7,7 +7,7 @@
This is a self-contained file which doesn't import WebUtil or external CSS. This is a self-contained file which doesn't import WebUtil or external CSS.
Copyright (C) 2019 The noVNC Authors Copyright (C) 2019 The noVNC authors
noVNC is licensed under the MPL 2.0 (see LICENSE.txt) noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
This file is licensed under the 2-Clause BSD license (see LICENSE.txt). This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
@ -80,7 +80,7 @@
// When this function is called, the server requires // When this function is called, the server requires
// credentials to authenticate // credentials to authenticate
function credentialsAreRequired(e) { function credentialsAreRequired(e) {
const password = prompt("Password Required:"); const password = prompt("Password required:");
rfb.sendCredentials({ password: password }); rfb.sendCredentials({ password: password });
} }