mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-12-14 11:02:04 +08:00
完善虚拟机连接
This commit is contained in:
83
VM/novnc/docs/API-internal.md
Normal file
83
VM/novnc/docs/API-internal.md
Normal file
@@ -0,0 +1,83 @@
|
||||
# 1. Internal Modules
|
||||
|
||||
The noVNC client is composed of several internal modules that handle
|
||||
rendering, input, networking, etc. Each of the modules is designed to
|
||||
be cross-browser and independent from each other.
|
||||
|
||||
Note however that the API of these modules is not guaranteed to be
|
||||
stable, and this documentation is not maintained as well as the
|
||||
official external API.
|
||||
|
||||
|
||||
## 1.1 Module List
|
||||
|
||||
* __Keyboard__ (core/input/keyboard.js): Keyboard input event handler with
|
||||
non-US keyboard support. Translates keyDown and keyUp events to X11
|
||||
keysym values.
|
||||
|
||||
* __Display__ (core/display.js): Efficient 2D rendering abstraction
|
||||
layered on the HTML5 canvas element.
|
||||
|
||||
* __Websock__ (core/websock.js): Websock client from websockify
|
||||
with transparent binary data support.
|
||||
[Websock API](https://github.com/novnc/websockify-js/wiki/websock.js) wiki page.
|
||||
|
||||
|
||||
## 1.2 Callbacks
|
||||
|
||||
For the Mouse, Keyboard and Display objects the callback functions are
|
||||
assigned to configuration attributes, just as for the RFB object. The
|
||||
WebSock module has a method named 'on' that takes two parameters: the
|
||||
callback event name, and the callback function.
|
||||
|
||||
## 2. Modules
|
||||
|
||||
## 2.1 Keyboard Module
|
||||
|
||||
### 2.1.1 Configuration Attributes
|
||||
|
||||
None
|
||||
|
||||
### 2.1.2 Methods
|
||||
|
||||
| name | parameters | description
|
||||
| ------ | ---------- | ------------
|
||||
| grab | () | Begin capturing keyboard events
|
||||
| ungrab | () | Stop capturing keyboard events
|
||||
|
||||
### 2.1.3 Callbacks
|
||||
|
||||
| name | parameters | description
|
||||
| ---------- | -------------------- | ------------
|
||||
| onkeypress | (keysym, code, down) | Handler for key press/release
|
||||
|
||||
|
||||
## 2.2 Display Module
|
||||
|
||||
### 2.2.1 Configuration Attributes
|
||||
|
||||
| name | type | mode | default | description
|
||||
| ------------ | ----- | ---- | ------- | ------------
|
||||
| scale | float | RW | 1.0 | Display area scale factor 0.0 - 1.0
|
||||
| clipViewport | bool | RW | false | Use viewport clipping
|
||||
| width | int | RO | | Display area width
|
||||
| height | int | RO | | Display area height
|
||||
|
||||
### 2.2.2 Methods
|
||||
|
||||
| name | parameters | description
|
||||
| ------------------ | ------------------------------------------------------- | ------------
|
||||
| viewportChangePos | (deltaX, deltaY) | Move the viewport relative to the current location
|
||||
| viewportChangeSize | (width, height) | Change size of the viewport
|
||||
| absX | (x) | Return X relative to the remote display
|
||||
| absY | (y) | Return Y relative to the remote display
|
||||
| resize | (width, height) | Set width and height
|
||||
| flip | (from_queue) | Update the visible canvas with the contents of the rendering canvas
|
||||
| pending | () | Check if there are waiting items in the render queue
|
||||
| flush | () | Resume processing the render queue unless it's empty
|
||||
| fillRect | (x, y, width, height, color, from_queue) | Draw a filled in rectangle
|
||||
| copyImage | (old_x, old_y, new_x, new_y, width, height, from_queue) | Copy a rectangular area
|
||||
| imageRect | (x, y, width, height, mime, arr) | Draw a rectangle with an image
|
||||
| blitImage | (x, y, width, height, arr, offset, from_queue) | Blit pixels (of R,G,B,A) to the display
|
||||
| drawImage | (img, x, y) | Draw image and track damage
|
||||
| autoscale | (containerWidth, containerHeight) | Scale the display
|
||||
546
VM/novnc/docs/API.md
Normal file
546
VM/novnc/docs/API.md
Normal file
@@ -0,0 +1,546 @@
|
||||
# noVNC API
|
||||
|
||||
The interface of the noVNC client consists of a single RFB object that
|
||||
is instantiated once per connection.
|
||||
|
||||
## RFB
|
||||
|
||||
The `RFB` object represents a single connection to a VNC server. It
|
||||
communicates using a WebSocket that must provide a standard RFB
|
||||
protocol stream.
|
||||
|
||||
### Constructor
|
||||
|
||||
[`RFB()`](#rfb-1)
|
||||
- Creates and returns a new `RFB` object.
|
||||
|
||||
### Properties
|
||||
|
||||
`background`
|
||||
- Is a valid CSS [background][mdn-bg] style value indicating which
|
||||
background style should be applied to the element containing the
|
||||
remote session screen. The default value is `rgb(40, 40, 40)` (solid
|
||||
gray color).
|
||||
|
||||
[mdn-bg]: https://developer.mozilla.org/en-US/docs/Web/CSS/background
|
||||
|
||||
`capabilities` *Read only*
|
||||
- Is an `Object` indicating which optional extensions are available
|
||||
on the server. Some methods may only be called if the corresponding
|
||||
capability is set. The following capabilities are defined:
|
||||
|
||||
| name | type | description
|
||||
| -------- | --------- | -----------
|
||||
| `power` | `boolean` | Machine power control is available
|
||||
|
||||
`clippingViewport` *Read only*
|
||||
- Is a `boolean` indicating if the remote session is currently being
|
||||
clipped to its container. Only relevant if `clipViewport` is
|
||||
enabled.
|
||||
|
||||
`clipViewport`
|
||||
- Is a `boolean` indicating if the remote session should be clipped
|
||||
to its container. When disabled scrollbars will be shown to handle
|
||||
the resulting overflow. Disabled by default.
|
||||
|
||||
`compressionLevel`
|
||||
- Is an `int` in range `[0-9]` controlling the desired compression
|
||||
level. Value `0` means no compression. Level 1 uses a minimum of CPU
|
||||
resources and achieves weak compression ratios, while level 9 offers
|
||||
best compression but is slow in terms of CPU consumption on the server
|
||||
side. Use high levels with very slow network connections.
|
||||
Default value is `2`.
|
||||
|
||||
`dragViewport`
|
||||
- Is a `boolean` indicating if mouse events should control the
|
||||
relative position of a clipped remote session. Only relevant if
|
||||
`clipViewport` is enabled. Disabled by default.
|
||||
|
||||
`focusOnClick`
|
||||
- Is a `boolean` indicating if keyboard focus should automatically be
|
||||
moved to the remote session when a `mousedown` or `touchstart`
|
||||
event is received. Enabled by default.
|
||||
|
||||
`qualityLevel`
|
||||
- Is an `int` in range `[0-9]` controlling the desired JPEG quality.
|
||||
Value `0` implies low quality and `9` implies high quality.
|
||||
Default value is `6`.
|
||||
|
||||
`resizeSession`
|
||||
- Is a `boolean` indicating if a request to resize the remote session
|
||||
should be sent whenever the container changes dimensions. Disabled
|
||||
by default.
|
||||
|
||||
`scaleViewport`
|
||||
- Is a `boolean` indicating if the remote session should be scaled
|
||||
locally so it fits its container. When disabled it will be centered
|
||||
if the remote session is smaller than its container, or handled
|
||||
according to `clipViewport` if it is larger. Disabled by default.
|
||||
|
||||
`showDotCursor`
|
||||
- Is a `boolean` indicating whether a dot cursor should be shown
|
||||
instead of a zero-sized or fully-transparent cursor if the server
|
||||
sets such invisible cursor. Disabled by default.
|
||||
|
||||
`viewOnly`
|
||||
- Is a `boolean` indicating if any events (e.g. key presses or mouse
|
||||
movement) should be prevented from being sent to the server.
|
||||
Disabled by default.
|
||||
|
||||
### Events
|
||||
|
||||
[`bell`](#bell)
|
||||
- The `bell` event is fired when a audible bell request is received
|
||||
from the server.
|
||||
|
||||
[`capabilities`](#capabilities)
|
||||
- The `capabilities` event is fired when `RFB.capabilities` is
|
||||
updated.
|
||||
|
||||
[`clipboard`](#clipboard)
|
||||
- The `clipboard` event is fired when clipboard data is received from
|
||||
the server.
|
||||
|
||||
[`clippingviewport`](#clippingviewport)
|
||||
- The `clippingviewport` event is fired when `RFB.clippingViewport` is
|
||||
updated.
|
||||
|
||||
[`connect`](#connect)
|
||||
- The `connect` event is fired when the `RFB` object has completed
|
||||
the connection and handshaking with the server.
|
||||
|
||||
[`credentialsrequired`](#credentialsrequired)
|
||||
- The `credentialsrequired` event is fired when more credentials must
|
||||
be given to continue.
|
||||
|
||||
[`desktopname`](#desktopname)
|
||||
- The `desktopname` event is fired when the remote desktop name
|
||||
changes.
|
||||
|
||||
[`disconnect`](#disconnect)
|
||||
- The `disconnect` event is fired when the `RFB` object disconnects.
|
||||
|
||||
[`securityfailure`](#securityfailure)
|
||||
- The `securityfailure` event is fired when the security negotiation
|
||||
with the server fails.
|
||||
|
||||
[`serververification`](#serververification)
|
||||
- The `serververification` event is fired when the server identity
|
||||
must be confirmed by the user.
|
||||
|
||||
### Methods
|
||||
|
||||
[`RFB.approveServer()`](#rfbapproveserver)
|
||||
- Proceed connecting to the server. Should be called after the
|
||||
[`serververification`](#serververification) event has fired and the
|
||||
user has verified the identity of the server.
|
||||
|
||||
[`RFB.blur()`](#rfbblur)
|
||||
- Remove keyboard focus from the remote session.
|
||||
|
||||
[`RFB.clipboardPasteFrom()`](#rfbclipboardpastefrom)
|
||||
- Send clipboard contents to server.
|
||||
|
||||
[`RFB.disconnect()`](#rfbdisconnect)
|
||||
- Disconnect from the server.
|
||||
|
||||
[`RFB.focus()`](#rfbfocus)
|
||||
- Move keyboard focus to the remote session.
|
||||
|
||||
[`RFB.getImageData()`](#rfbgetimagedata)
|
||||
- Return the current content of the screen as an ImageData array.
|
||||
|
||||
[`RFB.machineReboot()`](#rfbmachinereboot)
|
||||
- Request a reboot of the remote machine.
|
||||
|
||||
[`RFB.machineReset()`](#rfbmachinereset)
|
||||
- Request a reset of the remote machine.
|
||||
|
||||
[`RFB.machineShutdown()`](#rfbmachineshutdown)
|
||||
- Request a shutdown of the remote machine.
|
||||
|
||||
[`RFB.sendCredentials()`](#rfbsendcredentials)
|
||||
- Send credentials to server. Should be called after the
|
||||
[`credentialsrequired`](#credentialsrequired) event has fired.
|
||||
|
||||
[`RFB.sendCtrlAltDel()`](#rfbsendctrlaltdel)
|
||||
- Send Ctrl-Alt-Del key sequence.
|
||||
|
||||
[`RFB.sendKey()`](#rfbsendkey)
|
||||
- Send a key event.
|
||||
|
||||
[`RFB.toBlob()`](#rfbtoblob)
|
||||
- Return the current content of the screen as Blob encoded image file.
|
||||
|
||||
[`RFB.toDataURL()`](#rfbtodataurl)
|
||||
- Return the current content of the screen as data-url encoded image file.
|
||||
|
||||
### Details
|
||||
|
||||
#### RFB()
|
||||
|
||||
The `RFB()` constructor returns a new `RFB` object and initiates a new
|
||||
connection to a specified VNC server.
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
new RFB(target, urlOrChannel);
|
||||
new RFB(target, urlOrChannel, options);
|
||||
```
|
||||
|
||||
###### Parameters
|
||||
|
||||
**`target`**
|
||||
- A block [`HTMLElement`][mdn-elem] that specifies where the `RFB`
|
||||
object should attach itself. The existing contents of the
|
||||
`HTMLElement` will be untouched, but new elements will be added
|
||||
during the lifetime of the `RFB` object.
|
||||
|
||||
[mdn-elem]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement
|
||||
|
||||
**`urlOrChannel`**
|
||||
- A `DOMString` specifying the VNC server to connect to. This must be
|
||||
a valid WebSocket URL. This can also be a `WebSocket` or `RTCDataChannel`.
|
||||
|
||||
**`options`** *Optional*
|
||||
- An `Object` specifying extra details about how the connection
|
||||
should be made.
|
||||
|
||||
Possible options:
|
||||
|
||||
`shared`
|
||||
- A `boolean` indicating if the remote server should be shared or
|
||||
if any other connected clients should be disconnected. Enabled
|
||||
by default.
|
||||
|
||||
`credentials`
|
||||
- An `Object` specifying the credentials to provide to the server
|
||||
when authenticating. The following credentials are possible:
|
||||
|
||||
| name | type | description
|
||||
| ------------ | ----------- | -----------
|
||||
| `"username"` | `DOMString` | The user that authenticates
|
||||
| `"password"` | `DOMString` | Password for the user
|
||||
| `"target"` | `DOMString` | Target machine or session
|
||||
|
||||
`repeaterID`
|
||||
- A `DOMString` specifying the ID to provide to any VNC repeater
|
||||
encountered.
|
||||
|
||||
`wsProtocols`
|
||||
- An `Array` of `DOMString`s specifying the sub-protocols to use
|
||||
in the WebSocket connection. Empty by default.
|
||||
|
||||
#### bell
|
||||
|
||||
The `bell` event is fired when the server has requested an audible
|
||||
bell.
|
||||
|
||||
#### capabilities
|
||||
|
||||
The `capabilities` event is fired whenever an entry is added or removed
|
||||
from `RFB.capabilities`. The `detail` property is an `Object` with the
|
||||
property `capabilities` containing the new value of `RFB.capabilities`.
|
||||
|
||||
#### clippingviewport
|
||||
|
||||
The `clippingviewport` event is fired whenever `RFB.clippingViewport`
|
||||
changes between `true` and `false`. The `detail` property is a `boolean`
|
||||
with the new value of `RFB.clippingViewport`.
|
||||
|
||||
#### clipboard
|
||||
|
||||
The `clipboard` event is fired when the server has sent clipboard data.
|
||||
The `detail` property is an `Object` containing the property `text`
|
||||
which is a `DOMString` with the clipboard data.
|
||||
|
||||
#### credentialsrequired
|
||||
|
||||
The `credentialsrequired` event is fired when the server requests more
|
||||
credentials than were specified to [`RFB()`](#rfb-1). The `detail`
|
||||
property is an `Object` containing the property `types` which is an
|
||||
`Array` of `DOMString` listing the credentials that are required.
|
||||
|
||||
#### connect
|
||||
|
||||
The `connect` event is fired after all the handshaking with the server
|
||||
is completed and the connection is fully established. After this event
|
||||
the `RFB` object is ready to recieve graphics updates and to send input.
|
||||
|
||||
#### desktopname
|
||||
|
||||
The `desktopname` event is fired when the name of the remote desktop
|
||||
changes. The `detail` property is an `Object` with the property `name`
|
||||
which is a `DOMString` specifying the new name.
|
||||
|
||||
#### disconnect
|
||||
|
||||
The `disconnect` event is fired when the connection has been
|
||||
terminated. The `detail` property is an `Object` that contains the
|
||||
property `clean`. `clean` is a `boolean` indicating if the termination
|
||||
was clean or not. In the event of an unexpected termination or an error
|
||||
`clean` will be set to false.
|
||||
|
||||
#### securityfailure
|
||||
|
||||
The `securityfailure` event is fired when the handshaking process with
|
||||
the server fails during the security negotiation step. The `detail`
|
||||
property is an `Object` containing the following properties:
|
||||
|
||||
| Property | Type | Description
|
||||
| -------- | ----------- | -----------
|
||||
| `status` | `long` | The failure status code
|
||||
| `reason` | `DOMString` | The **optional** reason for the failure
|
||||
|
||||
The property `status` corresponds to the [SecurityResult][rfb-secresult]
|
||||
status code in cases of failure. A status of zero will not be sent in
|
||||
this event since that indicates a successful security handshaking
|
||||
process. The optional property `reason` is provided by the server and
|
||||
thus the language of the string is not known. However most servers will
|
||||
probably send English strings. The server can choose to not send a
|
||||
reason and in these cases the `reason` property will be omitted.
|
||||
|
||||
[rfb-secresult]: https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#securityresult
|
||||
|
||||
#### serververification
|
||||
|
||||
The `serververification` event is fired when the server provides
|
||||
information that allows the user to verify that it is the correct server
|
||||
and protect against a man-in-the-middle attack. The `detail` property is
|
||||
an `Object` containing the property `type` which is a `DOMString`
|
||||
specifying which type of information the server has provided. Other
|
||||
properties are also available, depending on the value of `type`:
|
||||
|
||||
`"RSA"`
|
||||
- The server identity is verified using just a RSA key. The property
|
||||
`publickey` is a `Uint8Array` containing the public key in a unsigned
|
||||
big endian representation.
|
||||
|
||||
#### RFB.approveServer()
|
||||
|
||||
The `RFB.approveServer()` method is used to signal that the user has
|
||||
verified the server identity provided in a `serververification` event
|
||||
and that the connection can continue.
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.approveServer();
|
||||
```
|
||||
|
||||
#### RFB.blur()
|
||||
|
||||
The `RFB.blur()` method remove keyboard focus on the remote session.
|
||||
Keyboard events will no longer be sent to the remote server after this
|
||||
point.
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.blur();
|
||||
```
|
||||
|
||||
#### RFB.clipboardPasteFrom()
|
||||
|
||||
The `RFB.clipboardPasteFrom()` method is used to send clipboard data
|
||||
to the remote server.
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.clipboardPasteFrom(text);
|
||||
```
|
||||
|
||||
###### Parameters
|
||||
|
||||
**`text`**
|
||||
- A `DOMString` specifying the clipboard data to send.
|
||||
|
||||
#### RFB.disconnect()
|
||||
|
||||
The `RFB.disconnect()` method is used to disconnect from the currently
|
||||
connected server.
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.disconnect();
|
||||
```
|
||||
|
||||
#### RFB.focus()
|
||||
|
||||
The `RFB.focus()` method sets the keyboard focus on the remote session.
|
||||
Keyboard events will be sent to the remote server after this point.
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.focus();
|
||||
RFB.focus(options);
|
||||
```
|
||||
|
||||
###### Parameters
|
||||
|
||||
**`options`** *Optional*
|
||||
- A `object` providing options to control how the focus will be
|
||||
performed. Please see [`HTMLElement.focus()`][mdn-focus] for
|
||||
available options.
|
||||
|
||||
[mdn-focus]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus
|
||||
|
||||
#### RFB.getImageData()
|
||||
|
||||
The `RFB.getImageData()` method is used to return the current content of
|
||||
the screen encoded as [`ImageData`][mdn-imagedata].
|
||||
|
||||
[mdn-imagedata]: https://developer.mozilla.org/en-US/docs/Web/API/ImageData
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.getImageData();
|
||||
```
|
||||
|
||||
#### RFB.machineReboot()
|
||||
|
||||
The `RFB.machineReboot()` method is used to request a clean reboot of
|
||||
the remote machine. The capability `power` must be set for this method
|
||||
to have any effect.
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.machineReboot();
|
||||
```
|
||||
|
||||
#### RFB.machineReset()
|
||||
|
||||
The `RFB.machineReset()` method is used to request a forced reset of
|
||||
the remote machine. The capability `power` must be set for this method
|
||||
to have any effect.
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.machineReset();
|
||||
```
|
||||
|
||||
#### RFB.machineShutdown()
|
||||
|
||||
The `RFB.machineShutdown()` method is used to request to shut down the
|
||||
remote machine. The capability `power` must be set for this method to
|
||||
have any effect.
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.machineShutdown();
|
||||
```
|
||||
|
||||
#### RFB.sendCredentials()
|
||||
|
||||
The `RFB.sendCredentials()` method is used to provide the missing
|
||||
credentials after a `credentialsrequired` event has been fired.
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.sendCredentials(credentials);
|
||||
```
|
||||
|
||||
###### Parameters
|
||||
|
||||
**`credentials`**
|
||||
- An `Object` specifying the credentials to provide to the server
|
||||
when authenticating. See [`RFB()`](#rfb-1) for details.
|
||||
|
||||
#### RFB.sendCtrlAltDel()
|
||||
|
||||
The `RFB.sendCtrlAltDel()` method is used to send the key sequence
|
||||
*left Control*, *left Alt*, *Delete*. This is a convenience wrapper
|
||||
around [`RFB.sendKey()`](#rfbsendkey).
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.sendCtrlAltDel();
|
||||
```
|
||||
|
||||
#### RFB.sendKey()
|
||||
|
||||
The `RFB.sendKey()` method is used to send a key event to the server.
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.sendKey(keysym, code);
|
||||
RFB.sendKey(keysym, code, down);
|
||||
```
|
||||
|
||||
###### Parameters
|
||||
|
||||
**`keysym`**
|
||||
- A `long` specifying the RFB keysym to send. Can be `0` if a valid
|
||||
**`code`** is specified.
|
||||
|
||||
**`code`**
|
||||
- A `DOMString` specifying the physical key to send. Valid values are
|
||||
those that can be specified to [`KeyboardEvent.code`][mdn-keycode].
|
||||
If the physical key cannot be determined then `null` shall be
|
||||
specified.
|
||||
|
||||
[mdn-keycode]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code
|
||||
|
||||
**`down`** *Optional*
|
||||
- A `boolean` specifying if a press or a release event should be
|
||||
sent. If omitted then both a press and release event are sent.
|
||||
|
||||
#### RFB.toBlob()
|
||||
|
||||
The `RFB.toBlob()` method is used to return the current content of the
|
||||
screen encoded as [`Blob`][mdn-blob].
|
||||
|
||||
[mdn-blob]: https://developer.mozilla.org/en-US/docs/Web/API/Blob
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.toBlob(callback);
|
||||
RFB.toBlob(callback, type);
|
||||
RFB.toBlob(callback, type, quality);
|
||||
```
|
||||
|
||||
###### Parameters
|
||||
|
||||
**`callback`**
|
||||
- A callback function which will receive the resulting
|
||||
[`Blob`][mdn-blob] as the single argument
|
||||
|
||||
**`type`** *Optional*
|
||||
- A string indicating the requested MIME type of the image
|
||||
|
||||
**`quality`** *Optional*
|
||||
- A number between 0 and 1 indicating the image quality.
|
||||
|
||||
#### RFB.toDataURL()
|
||||
|
||||
The `RFB.toDataURL()` method is used to return the current content of the
|
||||
screen encoded as a data URL that could for example be put in the `src` attribute
|
||||
of an `img` tag.
|
||||
|
||||
##### Syntax
|
||||
|
||||
```js
|
||||
RFB.toDataURL();
|
||||
RFB.toDataURL(type);
|
||||
RFB.toDataURL(type, encoderOptions);
|
||||
```
|
||||
|
||||
###### Parameters
|
||||
|
||||
**`type`** *Optional*
|
||||
- A string indicating the requested MIME type of the image
|
||||
|
||||
**`encoderOptions`** *Optional*
|
||||
- A number between 0 and 1 indicating the image quality.
|
||||
105
VM/novnc/docs/EMBEDDING.md
Normal file
105
VM/novnc/docs/EMBEDDING.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# Embedding and Deploying noVNC Application
|
||||
|
||||
This document describes how to embed and deploy the noVNC application, which
|
||||
includes settings and a full user interface. If you are looking for
|
||||
documentation on how to use the core noVNC library in your own application,
|
||||
then please see our [library documentation](LIBRARY.md).
|
||||
|
||||
## Files
|
||||
|
||||
The noVNC application consists of the following files and directories:
|
||||
|
||||
* `vnc.html` - The main page for the application and where users should go. It
|
||||
is possible to rename this file.
|
||||
|
||||
* `app/` - Support files for the application. Contains code, images, styles and
|
||||
translations.
|
||||
|
||||
* `core/` - The core noVNC library.
|
||||
|
||||
* `vendor/` - Third party support libraries used by the application and the
|
||||
core library.
|
||||
|
||||
The most basic deployment consists of simply serving these files from a web
|
||||
server and setting up a WebSocket proxy to the VNC server.
|
||||
|
||||
## Parameters
|
||||
|
||||
The noVNC application can be controlled by including certain settings in the
|
||||
query string. Currently the following options are available:
|
||||
|
||||
* `autoconnect` - Automatically connect as soon as the page has finished
|
||||
loading.
|
||||
|
||||
* `reconnect` - If noVNC should automatically reconnect if the connection is
|
||||
dropped.
|
||||
|
||||
* `reconnect_delay` - How long to wait in milliseconds before attempting to
|
||||
reconnect.
|
||||
|
||||
* `host` - The WebSocket host to connect to.
|
||||
|
||||
* `port` - The WebSocket port to connect to.
|
||||
|
||||
* `encrypt` - If TLS should be used for the WebSocket connection.
|
||||
|
||||
* `path` - The WebSocket path to use.
|
||||
|
||||
* `password` - The password sent to the server, if required.
|
||||
|
||||
* `repeaterID` - The repeater ID to use if a VNC repeater is detected.
|
||||
|
||||
* `shared` - If other VNC clients should be disconnected when noVNC connects.
|
||||
|
||||
* `bell` - If the keyboard bell should be enabled or not.
|
||||
|
||||
* `view_only` - If the remote session should be in non-interactive mode.
|
||||
|
||||
* `view_clip` - If the remote session should be clipped or use scrollbars if
|
||||
it cannot fit in the browser.
|
||||
|
||||
* `resize` - How to resize the remote session if it is not the same size as
|
||||
the browser window. Can be one of `off`, `scale` and `remote`.
|
||||
|
||||
* `quality` - The session JPEG quality level. Can be `0` to `9`.
|
||||
|
||||
* `compression` - The session compression level. Can be `0` to `9`.
|
||||
|
||||
* `show_dot` - If a dot cursor should be shown when the remote server provides
|
||||
no local cursor, or provides a fully-transparent (invisible) cursor.
|
||||
|
||||
* `logging` - The console log level. Can be one of `error`, `warn`, `info` or
|
||||
`debug`.
|
||||
|
||||
## HTTP Serving Considerations
|
||||
### Browser Cache Issue
|
||||
|
||||
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
|
||||
you on upgrade, resulting in a red error box. The issue is caused by a mismatch
|
||||
between the new vnc.html (which is reloaded because the user has used it with
|
||||
new query string after the upgrade) and the old javascript files (that the
|
||||
browser reuses from its cache). To avoid this issue, the browser must be told
|
||||
to always revalidate cached files using conditional requests. The correct
|
||||
semantics are achieved via the (confusingly named) `Cache-Control: no-cache`
|
||||
header that needs to be provided in the web server responses.
|
||||
|
||||
### Example Server Configurations
|
||||
|
||||
Apache:
|
||||
|
||||
```
|
||||
# In the main configuration file
|
||||
# (Debian/Ubuntu users: use "a2enmod headers" instead)
|
||||
LoadModule headers_module modules/mod_headers.so
|
||||
|
||||
# In the <Directory> or <Location> block related to noVNC
|
||||
Header set Cache-Control "no-cache"
|
||||
```
|
||||
|
||||
Nginx:
|
||||
|
||||
```
|
||||
# In the location block related to noVNC
|
||||
add_header Cache-Control no-cache;
|
||||
```
|
||||
31
VM/novnc/docs/LIBRARY.md
Normal file
31
VM/novnc/docs/LIBRARY.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Using the noVNC JavaScript library
|
||||
|
||||
This document describes how to make use of the noVNC JavaScript library for
|
||||
integration in your own VNC client application. If you wish to embed the more
|
||||
complete noVNC application with its included user interface then please see
|
||||
our [embedding documentation](EMBEDDING.md).
|
||||
|
||||
## API
|
||||
|
||||
The API of noVNC consists of a single object called `RFB`. The formal
|
||||
documentation for that object can be found in our [API documentation](API.md).
|
||||
|
||||
## Example
|
||||
|
||||
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
|
||||
do things.
|
||||
|
||||
## Conversion of Modules
|
||||
|
||||
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
|
||||
library must first be converted.
|
||||
|
||||
Fortunately noVNC includes a script to handle this conversion. Please follow
|
||||
the following steps:
|
||||
|
||||
1. Install Node.js
|
||||
2. Run `npm install` in the noVNC directory
|
||||
|
||||
The result of the conversion is available in the `lib/` directory.
|
||||
22
VM/novnc/docs/LICENSE.BSD-2-Clause
Normal file
22
VM/novnc/docs/LICENSE.BSD-2-Clause
Normal file
@@ -0,0 +1,22 @@
|
||||
Copyright (c) <year>, <copyright holder>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
24
VM/novnc/docs/LICENSE.BSD-3-Clause
Normal file
24
VM/novnc/docs/LICENSE.BSD-3-Clause
Normal file
@@ -0,0 +1,24 @@
|
||||
Copyright (c) <year>, <copyright holder>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the <organization> nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
373
VM/novnc/docs/LICENSE.MPL-2.0
Normal file
373
VM/novnc/docs/LICENSE.MPL-2.0
Normal file
@@ -0,0 +1,373 @@
|
||||
Mozilla Public License Version 2.0
|
||||
==================================
|
||||
|
||||
1. Definitions
|
||||
--------------
|
||||
|
||||
1.1. "Contributor"
|
||||
means each individual or legal entity that creates, contributes to
|
||||
the creation of, or owns Covered Software.
|
||||
|
||||
1.2. "Contributor Version"
|
||||
means the combination of the Contributions of others (if any) used
|
||||
by a Contributor and that particular Contributor's Contribution.
|
||||
|
||||
1.3. "Contribution"
|
||||
means Covered Software of a particular Contributor.
|
||||
|
||||
1.4. "Covered Software"
|
||||
means Source Code Form to which the initial Contributor has attached
|
||||
the notice in Exhibit A, the Executable Form of such Source Code
|
||||
Form, and Modifications of such Source Code Form, in each case
|
||||
including portions thereof.
|
||||
|
||||
1.5. "Incompatible With Secondary Licenses"
|
||||
means
|
||||
|
||||
(a) that the initial Contributor has attached the notice described
|
||||
in Exhibit B to the Covered Software; or
|
||||
|
||||
(b) that the Covered Software was made available under the terms of
|
||||
version 1.1 or earlier of the License, but not also under the
|
||||
terms of a Secondary License.
|
||||
|
||||
1.6. "Executable Form"
|
||||
means any form of the work other than Source Code Form.
|
||||
|
||||
1.7. "Larger Work"
|
||||
means a work that combines Covered Software with other material, in
|
||||
a separate file or files, that is not Covered Software.
|
||||
|
||||
1.8. "License"
|
||||
means this document.
|
||||
|
||||
1.9. "Licensable"
|
||||
means having the right to grant, to the maximum extent possible,
|
||||
whether at the time of the initial grant or subsequently, any and
|
||||
all of the rights conveyed by this License.
|
||||
|
||||
1.10. "Modifications"
|
||||
means any of the following:
|
||||
|
||||
(a) any file in Source Code Form that results from an addition to,
|
||||
deletion from, or modification of the contents of Covered
|
||||
Software; or
|
||||
|
||||
(b) any new file in Source Code Form that contains any Covered
|
||||
Software.
|
||||
|
||||
1.11. "Patent Claims" of a Contributor
|
||||
means any patent claim(s), including without limitation, method,
|
||||
process, and apparatus claims, in any patent Licensable by such
|
||||
Contributor that would be infringed, but for the grant of the
|
||||
License, by the making, using, selling, offering for sale, having
|
||||
made, import, or transfer of either its Contributions or its
|
||||
Contributor Version.
|
||||
|
||||
1.12. "Secondary License"
|
||||
means either the GNU General Public License, Version 2.0, the GNU
|
||||
Lesser General Public License, Version 2.1, the GNU Affero General
|
||||
Public License, Version 3.0, or any later versions of those
|
||||
licenses.
|
||||
|
||||
1.13. "Source Code Form"
|
||||
means the form of the work preferred for making modifications.
|
||||
|
||||
1.14. "You" (or "Your")
|
||||
means an individual or a legal entity exercising rights under this
|
||||
License. For legal entities, "You" includes any entity that
|
||||
controls, is controlled by, or is under common control with You. For
|
||||
purposes of this definition, "control" means (a) the power, direct
|
||||
or indirect, to cause the direction or management of such entity,
|
||||
whether by contract or otherwise, or (b) ownership of more than
|
||||
fifty percent (50%) of the outstanding shares or beneficial
|
||||
ownership of such entity.
|
||||
|
||||
2. License Grants and Conditions
|
||||
--------------------------------
|
||||
|
||||
2.1. Grants
|
||||
|
||||
Each Contributor hereby grants You a world-wide, royalty-free,
|
||||
non-exclusive license:
|
||||
|
||||
(a) under intellectual property rights (other than patent or trademark)
|
||||
Licensable by such Contributor to use, reproduce, make available,
|
||||
modify, display, perform, distribute, and otherwise exploit its
|
||||
Contributions, either on an unmodified basis, with Modifications, or
|
||||
as part of a Larger Work; and
|
||||
|
||||
(b) under Patent Claims of such Contributor to make, use, sell, offer
|
||||
for sale, have made, import, and otherwise transfer either its
|
||||
Contributions or its Contributor Version.
|
||||
|
||||
2.2. Effective Date
|
||||
|
||||
The licenses granted in Section 2.1 with respect to any Contribution
|
||||
become effective for each Contribution on the date the Contributor first
|
||||
distributes such Contribution.
|
||||
|
||||
2.3. Limitations on Grant Scope
|
||||
|
||||
The licenses granted in this Section 2 are the only rights granted under
|
||||
this License. No additional rights or licenses will be implied from the
|
||||
distribution or licensing of Covered Software under this License.
|
||||
Notwithstanding Section 2.1(b) above, no patent license is granted by a
|
||||
Contributor:
|
||||
|
||||
(a) for any code that a Contributor has removed from Covered Software;
|
||||
or
|
||||
|
||||
(b) for infringements caused by: (i) Your and any other third party's
|
||||
modifications of Covered Software, or (ii) the combination of its
|
||||
Contributions with other software (except as part of its Contributor
|
||||
Version); or
|
||||
|
||||
(c) under Patent Claims infringed by Covered Software in the absence of
|
||||
its Contributions.
|
||||
|
||||
This License does not grant any rights in the trademarks, service marks,
|
||||
or logos of any Contributor (except as may be necessary to comply with
|
||||
the notice requirements in Section 3.4).
|
||||
|
||||
2.4. Subsequent Licenses
|
||||
|
||||
No Contributor makes additional grants as a result of Your choice to
|
||||
distribute the Covered Software under a subsequent version of this
|
||||
License (see Section 10.2) or under the terms of a Secondary License (if
|
||||
permitted under the terms of Section 3.3).
|
||||
|
||||
2.5. Representation
|
||||
|
||||
Each Contributor represents that the Contributor believes its
|
||||
Contributions are its original creation(s) or it has sufficient rights
|
||||
to grant the rights to its Contributions conveyed by this License.
|
||||
|
||||
2.6. Fair Use
|
||||
|
||||
This License is not intended to limit any rights You have under
|
||||
applicable copyright doctrines of fair use, fair dealing, or other
|
||||
equivalents.
|
||||
|
||||
2.7. Conditions
|
||||
|
||||
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
|
||||
in Section 2.1.
|
||||
|
||||
3. Responsibilities
|
||||
-------------------
|
||||
|
||||
3.1. Distribution of Source Form
|
||||
|
||||
All distribution of Covered Software in Source Code Form, including any
|
||||
Modifications that You create or to which You contribute, must be under
|
||||
the terms of this License. You must inform recipients that the Source
|
||||
Code Form of the Covered Software is governed by the terms of this
|
||||
License, and how they can obtain a copy of this License. You may not
|
||||
attempt to alter or restrict the recipients' rights in the Source Code
|
||||
Form.
|
||||
|
||||
3.2. Distribution of Executable Form
|
||||
|
||||
If You distribute Covered Software in Executable Form then:
|
||||
|
||||
(a) such Covered Software must also be made available in Source Code
|
||||
Form, as described in Section 3.1, and You must inform recipients of
|
||||
the Executable Form how they can obtain a copy of such Source Code
|
||||
Form by reasonable means in a timely manner, at a charge no more
|
||||
than the cost of distribution to the recipient; and
|
||||
|
||||
(b) You may distribute such Executable Form under the terms of this
|
||||
License, or sublicense it under different terms, provided that the
|
||||
license for the Executable Form does not attempt to limit or alter
|
||||
the recipients' rights in the Source Code Form under this License.
|
||||
|
||||
3.3. Distribution of a Larger Work
|
||||
|
||||
You may create and distribute a Larger Work under terms of Your choice,
|
||||
provided that You also comply with the requirements of this License for
|
||||
the Covered Software. If the Larger Work is a combination of Covered
|
||||
Software with a work governed by one or more Secondary Licenses, and the
|
||||
Covered Software is not Incompatible With Secondary Licenses, this
|
||||
License permits You to additionally distribute such Covered Software
|
||||
under the terms of such Secondary License(s), so that the recipient of
|
||||
the Larger Work may, at their option, further distribute the Covered
|
||||
Software under the terms of either this License or such Secondary
|
||||
License(s).
|
||||
|
||||
3.4. Notices
|
||||
|
||||
You may not remove or alter the substance of any license notices
|
||||
(including copyright notices, patent notices, disclaimers of warranty,
|
||||
or limitations of liability) contained within the Source Code Form of
|
||||
the Covered Software, except that You may alter any license notices to
|
||||
the extent required to remedy known factual inaccuracies.
|
||||
|
||||
3.5. Application of Additional Terms
|
||||
|
||||
You may choose to offer, and to charge a fee for, warranty, support,
|
||||
indemnity or liability obligations to one or more recipients of Covered
|
||||
Software. However, You may do so only on Your own behalf, and not on
|
||||
behalf of any Contributor. You must make it absolutely clear that any
|
||||
such warranty, support, indemnity, or liability obligation is offered by
|
||||
You alone, and You hereby agree to indemnify every Contributor for any
|
||||
liability incurred by such Contributor as a result of warranty, support,
|
||||
indemnity or liability terms You offer. You may include additional
|
||||
disclaimers of warranty and limitations of liability specific to any
|
||||
jurisdiction.
|
||||
|
||||
4. Inability to Comply Due to Statute or Regulation
|
||||
---------------------------------------------------
|
||||
|
||||
If it is impossible for You to comply with any of the terms of this
|
||||
License with respect to some or all of the Covered Software due to
|
||||
statute, judicial order, or regulation then You must: (a) comply with
|
||||
the terms of this License to the maximum extent possible; and (b)
|
||||
describe the limitations and the code they affect. Such description must
|
||||
be placed in a text file included with all distributions of the Covered
|
||||
Software under this License. Except to the extent prohibited by statute
|
||||
or regulation, such description must be sufficiently detailed for a
|
||||
recipient of ordinary skill to be able to understand it.
|
||||
|
||||
5. Termination
|
||||
--------------
|
||||
|
||||
5.1. The rights granted under this License will terminate automatically
|
||||
if You fail to comply with any of its terms. However, if You become
|
||||
compliant, then the rights granted under this License from a particular
|
||||
Contributor are reinstated (a) provisionally, unless and until such
|
||||
Contributor explicitly and finally terminates Your grants, and (b) on an
|
||||
ongoing basis, if such Contributor fails to notify You of the
|
||||
non-compliance by some reasonable means prior to 60 days after You have
|
||||
come back into compliance. Moreover, Your grants from a particular
|
||||
Contributor are reinstated on an ongoing basis if such Contributor
|
||||
notifies You of the non-compliance by some reasonable means, this is the
|
||||
first time You have received notice of non-compliance with this License
|
||||
from such Contributor, and You become compliant prior to 30 days after
|
||||
Your receipt of the notice.
|
||||
|
||||
5.2. If You initiate litigation against any entity by asserting a patent
|
||||
infringement claim (excluding declaratory judgment actions,
|
||||
counter-claims, and cross-claims) alleging that a Contributor Version
|
||||
directly or indirectly infringes any patent, then the rights granted to
|
||||
You by any and all Contributors for the Covered Software under Section
|
||||
2.1 of this License shall terminate.
|
||||
|
||||
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
|
||||
end user license agreements (excluding distributors and resellers) which
|
||||
have been validly granted by You or Your distributors under this License
|
||||
prior to termination shall survive termination.
|
||||
|
||||
************************************************************************
|
||||
* *
|
||||
* 6. Disclaimer of Warranty *
|
||||
* ------------------------- *
|
||||
* *
|
||||
* Covered Software is provided under this License on an "as is" *
|
||||
* basis, without warranty of any kind, either expressed, implied, or *
|
||||
* statutory, including, without limitation, warranties that the *
|
||||
* Covered Software is free of defects, merchantable, fit for a *
|
||||
* particular purpose or non-infringing. The entire risk as to the *
|
||||
* quality and performance of the Covered Software is with You. *
|
||||
* Should any Covered Software prove defective in any respect, You *
|
||||
* (not any Contributor) assume the cost of any necessary servicing, *
|
||||
* repair, or correction. This disclaimer of warranty constitutes an *
|
||||
* essential part of this License. No use of any Covered Software is *
|
||||
* authorized under this License except under this disclaimer. *
|
||||
* *
|
||||
************************************************************************
|
||||
|
||||
************************************************************************
|
||||
* *
|
||||
* 7. Limitation of Liability *
|
||||
* -------------------------- *
|
||||
* *
|
||||
* Under no circumstances and under no legal theory, whether tort *
|
||||
* (including negligence), contract, or otherwise, shall any *
|
||||
* Contributor, or anyone who distributes Covered Software as *
|
||||
* permitted above, be liable to You for any direct, indirect, *
|
||||
* special, incidental, or consequential damages of any character *
|
||||
* including, without limitation, damages for lost profits, loss of *
|
||||
* goodwill, work stoppage, computer failure or malfunction, or any *
|
||||
* and all other commercial damages or losses, even if such party *
|
||||
* shall have been informed of the possibility of such damages. This *
|
||||
* limitation of liability shall not apply to liability for death or *
|
||||
* personal injury resulting from such party's negligence to the *
|
||||
* extent applicable law prohibits such limitation. Some *
|
||||
* jurisdictions do not allow the exclusion or limitation of *
|
||||
* incidental or consequential damages, so this exclusion and *
|
||||
* limitation may not apply to You. *
|
||||
* *
|
||||
************************************************************************
|
||||
|
||||
8. Litigation
|
||||
-------------
|
||||
|
||||
Any litigation relating to this License may be brought only in the
|
||||
courts of a jurisdiction where the defendant maintains its principal
|
||||
place of business and such litigation shall be governed by laws of that
|
||||
jurisdiction, without reference to its conflict-of-law provisions.
|
||||
Nothing in this Section shall prevent a party's ability to bring
|
||||
cross-claims or counter-claims.
|
||||
|
||||
9. Miscellaneous
|
||||
----------------
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof. If any provision of this License is held to be
|
||||
unenforceable, such provision shall be reformed only to the extent
|
||||
necessary to make it enforceable. Any law or regulation which provides
|
||||
that the language of a contract shall be construed against the drafter
|
||||
shall not be used to construe this License against a Contributor.
|
||||
|
||||
10. Versions of the License
|
||||
---------------------------
|
||||
|
||||
10.1. New Versions
|
||||
|
||||
Mozilla Foundation is the license steward. Except as provided in Section
|
||||
10.3, no one other than the license steward has the right to modify or
|
||||
publish new versions of this License. Each version will be given a
|
||||
distinguishing version number.
|
||||
|
||||
10.2. Effect of New Versions
|
||||
|
||||
You may distribute the Covered Software under the terms of the version
|
||||
of the License under which You originally received the Covered Software,
|
||||
or under the terms of any subsequent version published by the license
|
||||
steward.
|
||||
|
||||
10.3. Modified Versions
|
||||
|
||||
If you create software not governed by this License, and you want to
|
||||
create a new license for such software, you may create and use a
|
||||
modified version of this License if you rename the license and remove
|
||||
any references to the name of the license steward (except to note that
|
||||
such modified license differs from this License).
|
||||
|
||||
10.4. Distributing Source Code Form that is Incompatible With Secondary
|
||||
Licenses
|
||||
|
||||
If You choose to distribute Source Code Form that is Incompatible With
|
||||
Secondary Licenses under the terms of this version of the License, the
|
||||
notice described in Exhibit B of this License must be attached.
|
||||
|
||||
Exhibit A - Source Code Form License Notice
|
||||
-------------------------------------------
|
||||
|
||||
This Source Code Form is subject to the terms of the Mozilla Public
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
If it is not possible or desirable to put the notice in a particular
|
||||
file, then You may include the notice in a location (such as a LICENSE
|
||||
file in a relevant directory) where a recipient would be likely to look
|
||||
for such a notice.
|
||||
|
||||
You may add additional accurate notices of copyright ownership.
|
||||
|
||||
Exhibit B - "Incompatible With Secondary Licenses" Notice
|
||||
---------------------------------------------------------
|
||||
|
||||
This Source Code Form is "Incompatible With Secondary Licenses", as
|
||||
defined by the Mozilla Public License, v. 2.0.
|
||||
91
VM/novnc/docs/LICENSE.OFL-1.1
Normal file
91
VM/novnc/docs/LICENSE.OFL-1.1
Normal file
@@ -0,0 +1,91 @@
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
4
VM/novnc/docs/flash_policy.txt
Normal file
4
VM/novnc/docs/flash_policy.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Manual setup:
|
||||
|
||||
DATA="echo \'<cross-domain-policy><allow-access-from domain=\\\"*\\\" to-ports=\\\"*\\\" /></cross-domain-policy>\'"
|
||||
/usr/bin/socat -T 1 TCP-L:843,reuseaddr,fork,crlf SYSTEM:"$DATA"
|
||||
76
VM/novnc/docs/links
Normal file
76
VM/novnc/docs/links
Normal file
@@ -0,0 +1,76 @@
|
||||
New tight PNG protocol:
|
||||
http://wiki.qemu.org/VNC_Tight_PNG
|
||||
http://xf.iksaif.net/blog/index.php?post/2010/06/14/QEMU:-Tight-PNG-and-some-profiling
|
||||
|
||||
RFB protocol and extensions:
|
||||
http://tigervnc.org/cgi-bin/rfbproto
|
||||
|
||||
Canvas Browser Compatibility:
|
||||
http://philip.html5.org/tests/canvas/suite/tests/results.html
|
||||
|
||||
WebSockets API standard:
|
||||
http://www.whatwg.org/specs/web-apps/current-work/complete.html#websocket
|
||||
http://dev.w3.org/html5/websockets/
|
||||
http://www.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-00.txt
|
||||
|
||||
Browser Keyboard Events detailed:
|
||||
http://unixpapa.com/js/key.html
|
||||
|
||||
ActionScript (Flash) WebSocket implementation:
|
||||
http://github.com/gimite/web-socket-js
|
||||
|
||||
ActionScript (Flash) crypto/TLS library:
|
||||
http://code.google.com/p/as3crypto
|
||||
http://github.com/lyokato/as3crypto_patched
|
||||
|
||||
TLS Protocol:
|
||||
http://en.wikipedia.org/wiki/Transport_Layer_Security
|
||||
|
||||
Generate self-signed certificate:
|
||||
http://docs.python.org/dev/library/ssl.html#certificates
|
||||
|
||||
Cursor appearance/style (for Cursor pseudo-encoding):
|
||||
http://en.wikipedia.org/wiki/ICO_(file_format)
|
||||
http://www.daubnet.com/en/file-format-cur
|
||||
https://developer.mozilla.org/en/Using_URL_values_for_the_cursor_property
|
||||
http://www.fileformat.info/format/bmp/egff.htm
|
||||
|
||||
Icon/Cursor file format:
|
||||
http://msdn.microsoft.com/en-us/library/ms997538
|
||||
http://msdn.microsoft.com/en-us/library/aa921550.aspx
|
||||
http://msdn.microsoft.com/en-us/library/aa930622.aspx
|
||||
|
||||
|
||||
RDP Protocol specification:
|
||||
http://msdn.microsoft.com/en-us/library/cc240445(v=PROT.10).aspx
|
||||
|
||||
|
||||
Related projects:
|
||||
|
||||
guacamole: http://guacamole.sourceforge.net/
|
||||
|
||||
- Web client, but Java servlet does pre-processing
|
||||
|
||||
jsvnc: http://code.google.com/p/jsvnc/
|
||||
|
||||
- No releases
|
||||
|
||||
webvnc: http://code.google.com/p/webvnc/
|
||||
|
||||
- Jetty web server gateway, no updates since April 2008.
|
||||
|
||||
RealVNC Java applet: http://www.realvnc.com/support/javavncviewer.html
|
||||
|
||||
- Java applet
|
||||
|
||||
Flashlight-VNC: http://www.wizhelp.com/flashlight-vnc/
|
||||
|
||||
- Adobe Flash implementation
|
||||
|
||||
FVNC: http://osflash.org/fvnc
|
||||
|
||||
- Adbove Flash implementation
|
||||
|
||||
CanVNC: http://canvnc.sourceforge.net/
|
||||
|
||||
- HTML client with REST to VNC python proxy. Mostly vapor.
|
||||
5
VM/novnc/docs/notes
Normal file
5
VM/novnc/docs/notes
Normal file
@@ -0,0 +1,5 @@
|
||||
Rebuilding inflator.js
|
||||
|
||||
- Download pako from npm
|
||||
- Install browserify using npm
|
||||
- browserify core/inflator.mod.js -o core/inflator.js -s Inflator
|
||||
37
VM/novnc/docs/novnc_proxy.1
Normal file
37
VM/novnc/docs/novnc_proxy.1
Normal file
@@ -0,0 +1,37 @@
|
||||
.TH novnc_proxy 1 "June 25, 2020" "version 1.2.0" "USER COMMANDS"
|
||||
|
||||
.SH NAME
|
||||
novnc_proxy - noVNC proxy server
|
||||
.SH SYNOPSIS
|
||||
.B novnc_proxy [--listen [HOST:]PORT] [--vnc VNC_HOST:PORT] [--cert CERT] [--ssl-only]
|
||||
|
||||
Starts the WebSockets proxy and a mini-webserver and
|
||||
provides a cut-and-paste URL to go to.
|
||||
|
||||
--listen [HOST:]PORT Port for proxy/webserver to listen on
|
||||
Default: 6080 (on all interfaces)
|
||||
--vnc VNC_HOST:PORT VNC server host:port proxy target
|
||||
Default: localhost:5900
|
||||
--cert CERT Path to combined cert/key file, or just
|
||||
the cert file if used with --key
|
||||
Default: self.pem
|
||||
--key KEY Path to key file, when not combined with cert
|
||||
--web WEB Path to web files (e.g. vnc.html)
|
||||
Default: ./
|
||||
--ssl-only Disable non-https connections.
|
||||
|
||||
--record FILE Record traffic to FILE.session.js
|
||||
|
||||
--syslog SERVER Can be local socket such as /dev/log, or a UDP host:port pair.
|
||||
|
||||
--heartbeat SEC send a ping to the client every SEC seconds
|
||||
--timeout SEC after SEC seconds exit when not connected
|
||||
--idle-timeout SEC server exits after SEC seconds if there are no
|
||||
active connections
|
||||
|
||||
.SH AUTHOR
|
||||
The noVNC Authors
|
||||
https://github.com/novnc/noVNC
|
||||
|
||||
.SH SEE ALSO
|
||||
websockify(1), nova-novncproxy(1)
|
||||
147
VM/novnc/docs/rfb_notes
Normal file
147
VM/novnc/docs/rfb_notes
Normal file
@@ -0,0 +1,147 @@
|
||||
5.1.1 ProtocolVersion: 12, 12 bytes
|
||||
|
||||
- Sent by server, max supported
|
||||
12 ascii - "RFB 003.008\n"
|
||||
- Response by client, version to use
|
||||
12 ascii - "RFB 003.003\n"
|
||||
|
||||
5.1.2 Authentication: >=4, [16, 4] bytes
|
||||
|
||||
- Sent by server
|
||||
CARD32 - authentication-scheme
|
||||
0 - connection failed
|
||||
CARD32 - length
|
||||
length - reason
|
||||
1 - no authentication
|
||||
|
||||
2 - VNC authentication
|
||||
16 CARD8 - challenge (random bytes)
|
||||
|
||||
- Response by client (if VNC authentication)
|
||||
16 CARD8 - client encrypts the challenge with DES, using user
|
||||
password as key, sends resulting 16 byte response
|
||||
|
||||
- Response by server (if VNC authentication)
|
||||
CARD32 - 0 - OK
|
||||
1 - failed
|
||||
2 - too-many
|
||||
|
||||
5.1.3 ClientInitialisation: 1 byte
|
||||
- Sent by client
|
||||
CARD8 - shared-flag, 0 exclusive, non-zero shared
|
||||
|
||||
5.1.4 ServerInitialisation: >=24 bytes
|
||||
- Sent by server
|
||||
CARD16 - framebuffer-width
|
||||
CARD16 - framebuffer-height
|
||||
16 byte PIXEL_FORMAT - server-pixel-format
|
||||
CARD8 - bits-per-pixel
|
||||
CARD8 - depth
|
||||
CARD8 - big-endian-flag, non-zero is big endian
|
||||
CARD8 - true-color-flag, non-zero then next 6 apply
|
||||
CARD16 - red-max
|
||||
CARD16 - green-max
|
||||
CARD16 - blue-max
|
||||
CARD8 - red-shift
|
||||
CARD8 - green-shift
|
||||
CARD8 - blue-shift
|
||||
3 bytes - padding
|
||||
CARD32 - name-length
|
||||
|
||||
CARD8[length] - name-string
|
||||
|
||||
|
||||
|
||||
Client to Server Messages:
|
||||
|
||||
5.2.1 SetPixelFormat: 20 bytes
|
||||
CARD8: 0 - message-type
|
||||
...
|
||||
|
||||
5.2.2 FixColourMapEntries: >=6 bytes
|
||||
CARD8: 1 - message-type
|
||||
...
|
||||
|
||||
5.2.3 SetEncodings: >=8 bytes
|
||||
CARD8: 2 - message-type
|
||||
CARD8 - padding
|
||||
CARD16 - numer-of-encodings
|
||||
|
||||
CARD32 - encoding-type in preference order
|
||||
0 - raw
|
||||
1 - copy-rectangle
|
||||
2 - RRE
|
||||
4 - CoRRE
|
||||
5 - hextile
|
||||
|
||||
5.2.4 FramebufferUpdateRequest (10 bytes)
|
||||
CARD8: 3 - message-type
|
||||
CARD8 - incremental (0 for full-update, non-zero for incremental)
|
||||
CARD16 - x-position
|
||||
CARD16 - y-position
|
||||
CARD16 - width
|
||||
CARD16 - height
|
||||
|
||||
|
||||
5.2.5 KeyEvent: 8 bytes
|
||||
CARD8: 4 - message-type
|
||||
CARD8 - down-flag
|
||||
2 bytes - padding
|
||||
CARD32 - key (X-Windows keysym values)
|
||||
|
||||
5.2.6 PointerEvent: 6 bytes
|
||||
CARD8: 5 - message-type
|
||||
CARD8 - button-mask
|
||||
CARD16 - x-position
|
||||
CARD16 - y-position
|
||||
|
||||
5.2.7 ClientCutText: >=9 bytes
|
||||
CARD8: 6 - message-type
|
||||
...
|
||||
|
||||
|
||||
Server to Client Messages:
|
||||
|
||||
5.3.1 FramebufferUpdate
|
||||
CARD8: 0 - message-type
|
||||
1 byte - padding
|
||||
CARD16 - number-of-rectangles
|
||||
|
||||
CARD16 - x-position
|
||||
CARD16 - y-position
|
||||
CARD16 - width
|
||||
CARD16 - height
|
||||
CARD16 - encoding-type:
|
||||
0 - raw
|
||||
1 - copy rectangle
|
||||
2 - RRE
|
||||
4 - CoRRE
|
||||
5 - hextile
|
||||
|
||||
raw:
|
||||
- width x height pixel values
|
||||
|
||||
copy rectangle:
|
||||
CARD16 - src-x-position
|
||||
CARD16 - src-y-position
|
||||
|
||||
RRE:
|
||||
CARD32 - N number-of-subrectangles
|
||||
Nxd bytes - background-pixel-value (d bits-per-pixel)
|
||||
|
||||
...
|
||||
|
||||
5.3.2 SetColourMapEntries (no support)
|
||||
CARD8: 1 - message-type
|
||||
...
|
||||
|
||||
5.3.3 Bell
|
||||
CARD8: 2 - message-type
|
||||
|
||||
5.3.4 ServerCutText
|
||||
CARD8: 3 - message-type
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
VM/novnc/docs/rfbproto-3.3.pdf
Normal file
BIN
VM/novnc/docs/rfbproto-3.3.pdf
Normal file
Binary file not shown.
BIN
VM/novnc/docs/rfbproto-3.7.pdf
Normal file
BIN
VM/novnc/docs/rfbproto-3.7.pdf
Normal file
Binary file not shown.
BIN
VM/novnc/docs/rfbproto-3.8.pdf
Normal file
BIN
VM/novnc/docs/rfbproto-3.8.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user