summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Grunt <pgrunt@redhat.com>2016-10-07 10:53:55 +0200
committerPavel Grunt <pgrunt@redhat.com>2016-10-07 11:05:57 +0200
commit7aa6a066b76f7e70c2ca297312074591bf092b6a (patch)
treef24447ba7a79c60744523a1c085caf77b6515e0d
parent9fe8a265cb36fb67e72a20650d3723ce16900591 (diff)
Use submodule for pages
-rw-r--r--.gitmodules3
m---------content/pages0
-rw-r--r--content/pages/agent-protocol.rst305
-rw-r--r--content/pages/contact.rst34
-rw-r--r--content/pages/developers.rst75
-rw-r--r--content/pages/documentation.rst54
-rw-r--r--content/pages/download.rst141
-rw-r--r--content/pages/faq.rst60
-rw-r--r--content/pages/features.rst61
-rw-r--r--content/pages/home.rst34
-rw-r--r--content/pages/introduction.rst38
-rw-r--r--content/pages/multiple-clients.rst66
-rw-r--r--content/pages/osx-client.rst119
-rw-r--r--content/pages/smartcard-usage.rst319
-rw-r--r--content/pages/spice-gtk.rst50
-rw-r--r--content/pages/spice-html5.rst41
-rw-r--r--content/pages/spice-style.asc363
-rw-r--r--content/pages/spice-user-manual.asc1268
-rw-r--r--content/pages/support.rst58
-rw-r--r--content/pages/xspice.rst36
20 files changed, 3 insertions, 3122 deletions
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..bbfb207
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "content/pages"]
+ path = content/pages
+ url = https://gitlab.com/spice/spice-space-pages.git
diff --git a/content/pages b/content/pages
new file mode 160000
+Subproject aa52fe1d749d0cc842a0e17d2c3703e1151fcaa
diff --git a/content/pages/agent-protocol.rst b/content/pages/agent-protocol.rst
deleted file mode 100644
index 252ca09..0000000
--- a/content/pages/agent-protocol.rst
+++ /dev/null
@@ -1,305 +0,0 @@
-Agent Protocol
-###############################################################################
-
-:slug: agent-protocol
-:modified: 2016-01-05 10:28
-
-!!UPDATE!!
-
-For certain features to work spice requires that the guest os is running the spice agent (vdagent). This document describes how vdagent communicates with the spice server and client.
-
-vdagent virtio serial port
-++++++++++++++++++++++++++
-
-All vdagent communications on the guest side run over a single pipe which gets presented to the guest os as a virtio serial port. Under windows this virtio serial port has the following name:
-
-.. code-block:: sh
-
- \\\\.\\Global\\com.redhat.spice.0
-
-Under Linux this virtio serial port has the following name:
-
-.. code-block:: sh
-
- /dev/virtio-ports/com.redhat.spice.0
-
-Qemu will enable the virtio serial port when using the following params:
-
-.. code-block:: sh
-
- -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x5 -chardev spicevmc,name=vdagent,id=vdagent -device virtserialport,nr=1,bus=virtio-serial0.0,chardev=vdagent,name=com.redhat.spice.0
-
-vdagent data chunks / ports
-+++++++++++++++++++++++++++
-
-The vdagent is connect through the virtio serial port (vdagent virtio port) with the spice server but it can receive messages from / send messages to both the spice server and the spice client. To make this possible all messages on the vdagent virtio port are prefixed with a VDIChunkHeader:
-
-.. code-block:: c
-
- typedef struct SPICE_ATTR_PACKED VDIChunkHeader {
- uint32_t port;
- uint32_t size;
- } VDIChunkHeader;
-
-Where size is the size of the VDAgentMessage being send / received including the variable data part, iow it is sizeof(VDAgentMessage) + variable_data_len, and port is one of:
-
-.. code-block:: c
-
- enum {
- VDP_CLIENT_PORT = 1,
- VDP_SERVER_PORT,
- };
-
-When the vdagent receives messages port indicates where the message came from. When sending messages port indicates the intended receiver. When a message is a reply / ack of a received message port should have the same value as it had in the received message the message being send is a reply to.
-
-When the spice server receives a message it removes the chunk header and then depending on the port in the chunk header, forwards it to the client, handles it itself, or if the port is not a valid value logs an error and drops the message.
-
-Note currently there are no messages from the agent which are meant for the server so all messages sent by the agent with a port of VDP_SERVER_PORT get dropped silently.
-
-vdagent message struct
-++++++++++++++++++++++
-
-Messages sent / received by the agent are encapsulated in the VDAgentMessage struct:
-
-.. code-block:: c
-
- typedef struct SPICE_ATTR_PACKED VDAgentMessage {
- uint32_t protocol;
- uint32_t type;
- uint64_t opaque;
- uint32_t size;
- uint8_t data[0];
- } VDAgentMessage;
-
-Where protocol is always VD_AGENT_PROTOCOL.
-
-Type is a value from the following enum:
-
-.. code-block:: c
-
- enum {
- VD_AGENT_MOUSE_STATE = 1,
- VD_AGENT_MONITORS_CONFIG,
- VD_AGENT_REPLY,
- VD_AGENT_CLIPBOARD,
- VD_AGENT_DISPLAY_CONFIG,
- VD_AGENT_ANNOUNCE_CAPABILITIES,
- VD_AGENT_END_MESSAGE,
- };
-
-Opaque is a place holder for message types which only need to pass a single integer as message data, for message types which have more data it is always set to 0.
-
-Size is the size of the variable length data. Note that the size of the complete message in the virtio port is sizeof(VDIChunkHeader) + sizeof(VDAgentMessage) + variable_data_len.
-
-Data is the start of the variable length data, the contents of this depends on the message types, for most messages it is a message type specific struct such as VDAgentMouseState. Note that data is declared as a 0 sized array meaning that it does not take up any size in the struct, it is simply there to be able to easily determine the start address of the data.
-
-vdagent messages
-++++++++++++++++
-
-VD_AGENT_MOUSE_STATE
-^^^^^^^^^^^^^^^^^^^^
-
-Spice supports two mouse modes, server and client.
-
-In server mode the the QEMU ps/2 mouse emulation is used for sending mouse state to the guest. Upon user click inside the Spice client window, the client mouse is captured and the client sends mouse moves as delta coordinates.
-
-In client mode mouse coordinates are sent as absolute values to the guest, this requires using either usb table emulation, or sending them to the vdagent which will them notify the guest os of the mouse position (and of button clicks).
-
-The VD_AGENT_MOUSE_STATE message contains mouse state updates sent by the spice server when the mouse is in client mode. The variable data of these messages consists of the following structure:
-
-.. code-block:: c
-
- typedef struct SPICE_ATTR_PACKED VDAgentMouseState {
- uint32_t x;
- uint32_t y;
- uint32_t buttons;
- uint8_t display_id;
- } VDAgentMouseState;
-
-Note these messages are sent by the spice server, not by the spice client as the server does all the mouse handling (like switching between client and server mode as the vdagent connects / disconnects).
-
-VD_AGENT_MONITORS_CONFIG
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-This message gets sent by the client to the agent when the client is run in fullscreen auto configuration mode. This message contains information about the monitors attached to the client machine. Upon receiving this message the agent should reconfigure the output(s) of the qxl vga devices in the guest to match those in the message in as far as possible. For example if the client has more outputs then there are configured in the vm the outputs which are present should be configured to match what is in the message.
-
-The variable data of these messages consists of the following structure:
-
-.. code-block:: c
-
- typedef struct SPICE_ATTR_PACKED VDAgentMonitorsConfig {
- uint32_t num_of_monitors;
- uint32_t flags;
- VDAgentMonConfig monitors[0];
- } VDAgentMonitorsConfig;
-
-Followed by num_of_monitors times the following structure:
-
-.. code-block:: c
-
- typedef struct SPICE_ATTR_PACKED VDAgentMonConfig {
- uint32_t height;
- uint32_t width;
- uint32_t depth;
- int32_t x;
- int32_t y;
- } VDAgentMonConfig;
-
-When the agent is done configuring the outputs it should send back in VD_AGENT_REPLY message with a type set to VD_AGENT_MONITORS_CONFIG and error set to VD_AGENT_SUCCESS or VD_AGENT_ERROR to indicate success resp. error in configuring the outputs.
-
-VD_AGENT_REPLY
-^^^^^^^^^^^^^^
-
-This message gets sent by the vdagent to the spice client to signal it is done handling a VD_AGENT_MONITORS_CONFIG or VD_AGENT_DISPLAY_CONFIG, and if it succeeded or not:
-
-.. code-block:: c
-
- typedef struct SPICE_ATTR_PACKED VDAgentReply {
- uint32_t type;
- uint32_t error;
- } VDAgentReply;
-
- enum {
- VD_AGENT_SUCCESS = 1,
- VD_AGENT_ERROR,
- };
-
-Clipboard
-+++++++++
-
-Spice allows sharing clipboard data between the Spice client host, and the guest via its agent.
-
-To do so, the guest agent and the client play a symmetric role: they can both claim ownership (GRAB), RELEASE ownership, REQUEST clipboard data and send CLIPBOARD data. For example, the GRAB message is sent after receiving a system notification of clipboard data available after a Copy operation in some application. When the clipboard is emptied, the grab must be RELEASEd. The other side can REQUEST the data while the GRAB is active, and should expect a CLIPBOARD reply with the data.
-
-The data is described with a type. The Spice clipboard type are rather self-descriptive:
-
-.. code-block:: c
-
- enum {
- VD_AGENT_CLIPBOARD_NONE = 0,
- VD_AGENT_CLIPBOARD_UTF8_TEXT,
- VD_AGENT_CLIPBOARD_IMAGE_PNG, /* All clients with image support should support this one */
- VD_AGENT_CLIPBOARD_IMAGE_BMP, /* optional */
- VD_AGENT_CLIPBOARD_IMAGE_TIFF, /* optional */
- VD_AGENT_CLIPBOARD_IMAGE_JPG, /* optional */
- };
-
-If both side implement VD_AGENT_CAP_CLIPBOARD_SELECTION capability, clipboard messages are prepended with a uint8_t indicating which clipboard selection to operate. Please refer to VD_AGENT_CAP_CLIPBOARD_SELECTION documentation.
-
-VD_AGENT_CLIPBOARD
-^^^^^^^^^^^^^^^^^^
-
-.. code-block:: c
-
- struct VDAgentClipboard {
- if VD_AGENT_CAP_CLIPBOARD_SELECTION capability
- uint8_t selection;
- uint8_t __reserved[3];
- endif
- uint32_t type;
- uint8_t data[0];
- };
-
-The VD_AGENT_CLIPBOARD is used to send clipboard data. The data shouldn't be sent unless it was requested with VD_AGENT_CLIPBOARD_REQUEST before to avoid wasting bandwidth. It is quite common that the clipboard data to be transfered is large. In that case, it is to be expected that the message is split across several VD_AGENT_MESSAGE.
-
-VD_AGENT_CLIPBOARD_REQUEST
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: c
-
- struct VDAgentClipboardRequest {
- if VD_AGENT_CAP_CLIPBOARD_SELECTION capability
- uint8_t selection;
- uint8_t __reserved[3];
- endif
- uint32_t type;
- };
-
-Request clipboard data with the specified type.
-
-VD_AGENT_CLIPBOARD_GRAB
-^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: c
-
- struct VDAgentClipboardGrab {
- if VD_AGENT_CAP_CLIPBOARD_SELECTION capability
- uint8_t selection;
- uint8_t __reserved[3];
- endif
- uint32_t types[0];
- };
-
-Grab clipboard. The REQUEST of data should succeed with any of the GRAB types.
-
-VD_AGENT_CLIPBOARD_RELEASE
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: c
-
- struct VDAgentClipboardRelease {
- if VD_AGENT_CAP_CLIPBOARD_SELECTION capability
- uint8_t selection;
- uint8_t __reserved[3];
- endif
- };
-
-Release the clipboard (example: when clipboard becomes empty).
-
-Important:
-
-If a GRAB message has been sent and is currently active, then a successive GRAB message is received from the peer, no RELEASE message should be sent to the peer for the previous active grab. It has been implicitly released by the peer. Sending an extra RELEASE message would only confuse the peer.
-
-VD_AGENT_DISPLAY_CONFIG
-^^^^^^^^^^^^^^^^^^^^^^^
-
-This message gets sent by the spice client to the vdagent to notify it of any special performance related settings. The client can ask the vdagent to disable various features of the guest os like font anti aliasing to improve performance. vdagent should do a best effort here, esp. as most settings are rather windows centric and should return a success status using VD_AGENT_REPLY unless something really went wrong.
-
-.. code-block:: c
-
- typedef struct SPICE_ATTR_PACKED VDAgentDisplayConfig {
- uint32_t flags;
- uint32_t depth;
- } VDAgentDisplayConfig;
-
- enum {
- VD_AGENT_DISPLAY_CONFIG_FLAG_DISABLE_WALLPAPER = (1 << 0),
- VD_AGENT_DISPLAY_CONFIG_FLAG_DISABLE_FONT_SMOOTH = (1 << 1),
- VD_AGENT_DISPLAY_CONFIG_FLAG_DISABLE_ANIMATION = (1 << 2),
- VD_AGENT_DISPLAY_CONFIG_FLAG_SET_COLOR_DEPTH = (1 << 3),
- };
-
-VD_AGENT_ANNOUNCE_CAPABILITIES
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This message can (and should) be send by both the client and the vdagent, it announces which messages / capabilities (one capability can encompass multiple messages) the sending side may send and/or knows how to handle when received. The purpose of this message is to allow different client and vdagent versions to work together:
-
-.. code-block:: c
-
- typedef struct SPICE_ATTR_PACKED VDAgentAnnounceCapabilities {
- uint32_t request;
- uint32_t caps[0];
- } VDAgentAnnounceCapabilities;
-
-The request field is a boolean which indicates if the receiver of the message should send back an VD_AGENT_ANNOUNCE_CAPABILITIES message as the sender wants to know its capabilities too. It should be true when initiating a capabilities exchange, and set to false when sending an announce capabilities as a reply to a received one.
-
-The caps member of the struct is the beginning of a variable length array holding the capabilities bit, the length of this array can be determined using the VD_AGENT_CAPS_SIZE_FROM_MSG_SIZE macro on the VDAgentMessage msg size member. The indexes for the different capabilities are in an enum defining VD_AGENT_CAP constants and there are VD_AGENT_HAS_CAPABILITY and VD_AGENT_SET_CAPABILITY macros to test / set the capability bits in the array.
-
-One should never send messages with a type associated with a capability which is not announced as supported by the other side. Older versions do not support announce capabilities, so until an announce capabilities message has been received the following capabilities (which are supported by all versions) should be assumed:
-
-.. code-block:: c
-
- VD_AGENT_CAP_MOUSE_STATE
- VD_AGENT_CAP_MONITORS_CONFIG
- VD_AGENT_CAP_REPLY
-
-VD_AGENT_CAP_CLIPBOARD_SELECTION
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When both client and servers have the selection capability, the VDAgentClipboard* messages MUST be prepended with a uint8_t indicating which clipboard selection to operate + 3 bytes stuffing for alignment that could be used for future capabilities or extensions.
-
-A few clipboard selection are defined according to X11/Gtk scheme:
-
-- VD_AGENT_CLIPBOARD_SELECTION_CLIPBOARD: the default clipboard, implemented by most OS to deal with explicit Copy/Paste operations.
-- VD_AGENT_CLIPBOARD_SELECTION_PRIMARY: the PRIMARY clipboard, used for mouse selections.
-- VD_AGENT_CLIPBOARD_SELECTION_SECONDARY: the SECONDARY clipboard.
diff --git a/content/pages/contact.rst b/content/pages/contact.rst
deleted file mode 100644
index 9bc78bb..0000000
--- a/content/pages/contact.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-Contact
-###############################################################################
-
-.. _spice-devel: http://lists.freedesktop.org/archives/spice-devel/
-.. _Join spice-devel@lists.freedesktop.org: http://lists.freedesktop.org/mailman/listinfo/spice-devel
-.. _Join spice-commits@lists.freedesktop.org: http://lists.freedesktop.org/mailman/listinfo/spice-commits
-.. _spice-commits: http://lists.freedesktop.org/archives/spice-commits/
-.. _Join spice-announce@lists.freedesktop.org: http://lists.freedesktop.org/mailman/listinfo/spice-announce
-.. _spice-announce: http://lists.freedesktop.org/archives/spice-announce/
-.. _irc.gimp.net #spice: irc://irc.gimp.net/spice
-
-Spice developers list
-+++++++++++++++++++++
-
-- Post email to spice-devel@lists.freedesktop.org
-- `Join spice-devel@lists.freedesktop.org`_
-- Search `spice-devel`_ archive
-
-Spice commit list
-+++++++++++++++++
-
-- `Join spice-commits@lists.freedesktop.org`_
-- Search `spice-commits`_ archive
-
-Spice announce list
-+++++++++++++++++++
-
-- `Join spice-announce@lists.freedesktop.org`_
-- Search `spice-announce`_ archive
-
-Spice irc channel
-+++++++++++++++++
-
-- `irc.gimp.net #spice`_
diff --git a/content/pages/developers.rst b/content/pages/developers.rst
deleted file mode 100644
index c24e965..0000000
--- a/content/pages/developers.rst
+++ /dev/null
@@ -1,75 +0,0 @@
-Developers
-###############################################################################
-
-.. _Spice User Manual: spice-user-manual.html
-.. _spice for newbies: {filename}/static/docs/spice_for_newbies.pdf
-.. _spice protocol: {filename}/static/docs/spice_protocol.pdf
-.. _VD-Interfaces: {filename}/static/docs/vd_interfaces.pdf
-.. _spice-html5: http://cgit.freedesktop.org/spice/spice-html5
-.. _spice style: spice-project-coding-style-and-coding-conventions.html
-.. _xf86-video-qxl: http://cgit.freedesktop.org/xorg/driver/xf86-video-qxl
-.. _style: http://cgit.freedesktop.org/pixman/tree/CODING_STYLE
-.. _bug-tracker: https://bugs.freedesktop.org/enter_bug.cgi?product=Spice
-.. _feature-tracker: https://bugs.freedesktop.org/enter_bug.cgi?product=Spice&component=RFE
-.. _Future Features list:
-.. _Features: features.html
-.. _documentation: documentation.html
-
-New to Spice?
-+++++++++++++
-
-Spice project provies documentation that will help you get familiar with Spice.
-Start by reading `Spice For Newbies`_ for getting information about Spice basic
-architecture and Spice components. You can use `Spice user manual`_ for information
-on how to get, make and use Spice. Read `SPICE Protocol`_ and `VD-Interfaces`_ which
-contain additional and more specific information.
-
-Like to get involved?
-+++++++++++++++++++++
-
-The Spice project is open for contribution. As the project activity is spread
-across many areas of interest, a variety of C/C++ programmers will find areas of
-interest. Javascript/web developers should checkout `spice-html5`_.
-
-The project is devoted to offering increased reliability, quality and usability.
-If you choose to get involved, you are obligated to keep Spice project
-standards. Commit and forget style is unacceptable; code maintenance and bug
-fixing is part of the trade.
-
-Still like to get involved?
-+++++++++++++++++++++++++++
-
-You can start by reading the Spice documentation_ and
-the `Spice style`_ document (`xf86-video-qxl`_ is under another `style`_). Browse Spice
-`feature-tracker`_ and Spice `bug-tracker`_ in order to find a task. You can also post
-to spice-devel@lists.freedesktop.org the type of task you are looking for, so
-maybe someone have just the right task for you. You can also refer to the `Future Features list`_. Before starting to work on some new feature or a big
-change, coordinate it with Spice project members. Doing so will reduce the
-chance that you'll do a duplicate work, while it will also reduce the chance
-that your patch will get rejected.
-
-Like to send a patch?
-+++++++++++++++++++++
-
-Before sending a patch to spice-devel@lists.freedesktop.org using **git send-email**
-make sure that it follows these guidelines:
-
-- It applies and compiles correctly with the latest development version
-- The code adheres to Spice coding convention and style as specified in `Spice
- style`_
-- Split a large patch to multiple smaller patches, each having a meaningful
- logical purpose. It will help in the process of reviewing and accepting your
- patch. Make sure applying each patch does not break the build
-- Write clear and meaningful description and explanation in the commit message
-- Be as responsive as possible to the review comments
-- The patch was prepared using **git format-patch**
-- The patch successfully compiles on all supported platforms
-
-Like to send a patch but don't have time for all the “nonsense”?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If it is a simple bug fix, send the patch to spice-devel@lists.freedesktop.org
-and specify that you don't care what we do with the patch. We will do with it
-whatever seems appropriate.
-
-For more developers content, visit `Features`_.
diff --git a/content/pages/documentation.rst b/content/pages/documentation.rst
deleted file mode 100644
index c02abef..0000000
--- a/content/pages/documentation.rst
+++ /dev/null
@@ -1,54 +0,0 @@
-Documentation
-###############################################################################
-
-:slug: documentation
-:submenu: documentation
-:modified: 2015-10-13 09:00
-
-.. _spice for newbies: {filename}/static/docs/spice_for_newbies.pdf
-.. _spice protocol: {filename}/static/docs/spice_protocol.pdf
-.. _ODP version: {filename}/static/docs/spice_redhat_summit_2009.odp
-.. _PDF version: {filename}/static/docs/spice_redhat_summit_2009.pdf
-.. _spice style: spice-project-coding-style-and-coding-conventions.html
-.. _UsbDk Presentation: {filename}/static/docs/UsbDk_at_a_Glance.pdf
-.. _UsbDk Manual: {filename}/static/docs/UsbDk_Software_Development_Manual.pdf
-.. _Spice Reference Manual: spice-user-manual.html
-.. _spice-gtk API documentation: spice-gtk.html
-.. _agent protocol: agent-protocol.html
-
-`Spice Reference Manual`_
-+++++++++++++++++++++++++
-
-Describes the various features provided by SPICE, and how to make use of
-them when using QEMU/libvirt/virt-manager.
-
-`spice-gtk API documentation`_
-++++++++++++++++++++++++++++++
-
-Describes spice-gtk C API.
-
-`Spice For Newbies`_
-++++++++++++++++++++
-Contains basic information about Spice's architecture, components, and features.
-
-`SPICE Protocol`_
-+++++++++++++++++
-
-Outlines the complete definition of the SPICE remote computing protocol and SPICE client <-> `agent protocol`_
-
-`Spice style`_
-++++++++++++++
-
-Defines Spice project's coding style and coding conventions.
-
-Red Hat Summit 2009
-+++++++++++++++++++
-
-Spice session presentation at Red Hat Summit 2009
-
-Download `ODP version`_ or `PDF version`_
-
-UsbDk
-+++++
-
-Download `UsbDk Presentation`_ and `UsbDk Manual`_
diff --git a/content/pages/download.rst b/content/pages/download.rst
deleted file mode 100644
index 088f411..0000000
--- a/content/pages/download.rst
+++ /dev/null
@@ -1,141 +0,0 @@
-Download
-###############################################################################
-
-:slug: download
-:modified: 2015-10-29 09:00
-
-.. _Boxes: https://wiki.gnome.org/Apps/Boxes
-.. _virt-manager: http://virt-manager.org/
-.. _virt-viewer:
-.. _virt-manager download page: http://virt-manager.org/download
-.. _oVirt: http://www.ovirt.org/
-.. _QEMU: http://www.qemu.org/
-.. _spice-gtk-0.32.tar.bz2: https://spice-space.org/download/gtk/spice-gtk-0.32.tar.bz2
-.. _UsbDk_1.0.14_x64.msi: https://www.spice-space.org/download/windows/usbdk/UsbDk_1.0.14_x64.msi
-.. _UsbDk_1.0.14_x86.msi: https://www.spice-space.org/download/windows/usbdk/UsbDk_1.0.14_x86.msi
-.. _aSPICE:
-.. _aSPICE from play.google.com: https://play.google.com/store/apps/details?id=com.iiordanov.freeaSPICE
-.. _Web client: spice-html5.html
-.. _OS X client: osx-client.html
-.. _spicec_n900-0.tar.gz: https://www.spice-space.org/download/arm/spicec_n900-0.tar.gz
-.. _launcher-mobile: https://github.com/flexvdi/launcher-mobile
-.. _flexVDI: https://flexvdi.com
-.. _flexVDI Client at App Store: https://itunes.apple.com/us/app/flexvdi-client/id1051361263?mt=8
-.. _flexVDI Client at Play Store: https://play.google.com/store/apps/details?id=com.flexvdi.androidlauncher
-.. _spice-vdagent-0.17.0.tar.bz2: https://www.spice-space.org/download/releases/spice-vdagent-0.17.0.tar.bz2
-.. _xf86-video-qxl:
-.. _xf86-video-qxl-0.1.4.tar.bz2: http://xorg.freedesktop.org/releases/individual/driver/xf86-video-qxl-0.1.4.tar.bz2
-.. _spice-guest-tools-0.100.exe: https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-0.100.exe
-.. _Windows QXL driver: https://www.spice-space.org/download/windows/qxl/qxl-0.1-21/
-.. _Windows SPICE agent: https://www.spice-space.org/download/windows/vdagent/vdagent-win-0.7.2
-.. _spice-0.12.8.tar.bz2: https://www.spice-space.org/download/releases/spice-0.12.8.tar.bz2
-.. _spice-0.13.2.tar.bz2: https://www.spice-space.org/download/releases/spice-0.13.2.tar.bz2
-.. _spice-protocol-0.12.12.tar.bz2: https://www.spice-space.org/download/releases/spice-protocol-0.12.12.tar.bz2
-.. _usbredir-0.7.1.tar.bz2: http://spice-space.org/download/usbredir/usbredir-0.7.1.tar.bz2
-.. _Xspice: xspice.html
-.. _README.xspice: http://cgit.freedesktop.org/xorg/driver/xf86-video-qxl/tree/README.xspice
-
-
-Client
-++++++
-To connect to a virtual machine using SPICE, you need a client application.
-
-GTK+ widget
-^^^^^^^^^^^
-spice-gtk is a GTK+3 SPICE widget. It features glib-based objects for SPICE protocol parsing and a gtk widget for embedding the SPICE display into other applications such as virt-manager_ or Boxes_. Python and Vala bindings are available too.
-
-- SPICE GTK+ Widget - `spice-gtk-0.32.tar.bz2`_
-
- - http://cgit.freedesktop.org/spice/spice-gtk
-
-The recommended client application is virt-viewer_.
-
-Windows binaries
-^^^^^^^^^^^^^^^^
-- virt-viewer Windows installer - can be downloaded from `virt-manager download page`_
-- UsbDk - A Windows filter driver developed for Spice USB redirection (windows client side) - `UsbDk_1.0.14_x64.msi`_, `UsbDk_1.0.14_x86.msi`_, (`source code <https://www.spice-space.org/download/windows/usbdk/spice-usbdk-win-1.0-12-sources.zip>`_)
-
- - http://cgit.freedesktop.org/spice/win32/usbdk
-
-Other clients
-^^^^^^^^^^^^^
-- Android client - aSPICE_ is a secure, SSH capable, open source SPICE protocol client that makes use of the LGPL licensed native libspice library. You can find and install `aSPICE from play.google.com`_.
-- `Web client`_ - a simple javascript client
-
- - http://cgit.freedesktop.org/spice/spice-html5
-- Experimental `OS X client`_
-- Experimental N900 SPICE client - `spicec_n900-0.tar.gz`_
-- launcher-mobile_ - A GPLv2 licensed cross-platform mobile client for both iOS and Android. Though mainly intended to be used as a client for flexVDI_, it can also connect to conventional SPICE sessions.
-
- - It is also avaiable in binary form: `flexVDI Client at App Store`_, `flexVDI Client at Play Store`_
-
-
-Guest
-+++++
-This section contains various optional drivers and daemons that can be installed on the guest to provide enhanced SPICE integration and performance.
-
-Linux sources
-^^^^^^^^^^^^^
-- SPICE vdagent - `spice-vdagent-0.17.0.tar.bz2`_
-
- - http://cgit.freedesktop.org/spice/linux/vd_agent
-- x.org QXL video driver - `xf86-video-qxl-0.1.4.tar.bz2`_; Also contains Xspice
-
- - http://cgit.freedesktop.org/xorg/driver/xf86-video-qxl
-
-
-Windows binaries
-^^^^^^^^^^^^^^^^
-- Windows guest tools - `spice-guest-tools-0.100.exe`_
-
- - http://cgit.freedesktop.org/spice/spice-nsis/
-
-This installer contains some optional drivers and services that can be installed in Windows guest to improve SPICE performance and integration. This includes the qxl video driver and the SPICE guest agent (for copy and paste, automatic resolution switching, ...)
-
-- `Windows QXL driver`_
-
- - http://cgit.freedesktop.org/spice/win32/qxl
-
-This is not needed if you are using the Windows guest tools installer above.
-
-- `Windows SPICE agent`_
-
- - http://cgit.freedesktop.org/spice/win32/vd_agent
-
-This is not needed if you are using the Windows guest tools installer above.
-
-Server
-++++++
-The SPICE server code is needed when building SPICE support into QEMU_. It should be available as a package in your favourite Linux distribution, which is the preferred way of getting it.
-
-- spice-protocol - headers defining protocols, `spice-protocol-0.12.12.tar.bz2`_
-
- - http://cgit.freedesktop.org/spice/spice-protocol
-
-- libusbredir - For USB redirection support, `usbredir-0.7.1.tar.bz2`_
-
- - http://cgit.freedesktop.org/spice/usbredir
-
-0.12.8 - stable release
-^^^^^^^^^^^^^^^^^^^^^^^
-- SPICE - Server `spice-0.12.8.tar.bz2`_
-
- - http://cgit.freedesktop.org/spice/spice?h=0.12
-
-0.13.2 - development release
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-- SPICE - Server `spice-0.13.2.tar.bz2`_
-
- - http://cgit.freedesktop.org/spice/spice
-
-Xspice
-^^^^^^
-Xspice_ - an X and Spice server. Requires Xorg. See `README.xspice`_.
-
-- The latest sources are `xf86-video-qxl`_. Xspice is mostly reusing that driver and linking directly with spice-server.
-
-Older releases
-++++++++++++++
-Older source releases can be found here__. Old versions of spice-gtk can be found `here <https://www.spice-space.org/download/gtk/>`_.
-
-__ https://www.spice-space.org/download/releases/
diff --git a/content/pages/faq.rst b/content/pages/faq.rst
deleted file mode 100644
index 82761f9..0000000
--- a/content/pages/faq.rst
+++ /dev/null
@@ -1,60 +0,0 @@
-FAQ
-###############################################################################
-
-:slug: faq
-:modified: 2015-10-12 12:20
-
-.. _Download: download.html
-.. _Documentation: documentation.html
-.. _Developers: developers.html
-.. _Spice User Manual: spice-user-manual.html
-.. _Spice for Newbies: {filename}/static/docs/spice_for_newbies.pdf
-
-Why Spice?
-++++++++++
-
-Adequate user experience and the lack of a good solution for virtual machine
-remote access were what sparked the Spice project. To ensure that Spice is a
-success, the following project goals were set:
-
-#. To deliver a high-quality user experience, similar to local machine, in LAN
- environments
-#. To maintain low CPU consumption in order to have high VM density on the host
-#. To provide high-quality video streaming
-
-Why choose Spice?
-+++++++++++++++++
-
-- Spice offers greater user experience and increased usability and reliability
-- Spice has a lot more space to evolve
-- Spice is open source
-- Spice architecture is cross-platform, allowing for greater interoperability
-
-Under what license is Spice distributed?
-++++++++++++++++++++++++++++++++++++++++
-
-Most of Spice sources are distributed under GPL v2. For some exceptions the
-project uses LGPL or BSD style licenses. Documents are distributed under
-Creative Commons Attribution-Share Alike 3.0 license.
-
-How does Spice work?
-++++++++++++++++++++
-
-Download `Spice for Newbies`_ for information on Spice basic architecture,
-components, and features.
-
-How do I get Spice?
-+++++++++++++++++++
-
-Refer to our Download_ page or the `Spice User Manual`_.
-
-How do I use Spice?
-+++++++++++++++++++
-
-Consult `Spice User Manual`_ for detailed information.
-
-How can I contribute to Spice?
-++++++++++++++++++++++++++++++
-
-Your help and feedback are welcomed. If you are a Spice user, refer to the
-Documentation_ page. For developers, refer to the Developers_ page.
diff --git a/content/pages/features.rst b/content/pages/features.rst
deleted file mode 100644
index 1e848f5..0000000
--- a/content/pages/features.rst
+++ /dev/null
@@ -1,61 +0,0 @@
-Features
-###############################################################################
-
-:slug: features
-:modified: 2016-01-05 14:45
-
-.. _Video streaming: spice-user-manual.html#_video_compression
-.. _Image compression: spice-user-manual.html#_image_compression
-.. _Two way audio: spice-user-manual.html#_other_features
-.. _Windows drivers: spice-user-manual.html#guest-additions
-.. _Multiple monitors: spice-user-manual.html#_multiple_monitor_support
-.. _Two mouse modes: spice-user-manual.html#_mouse_modes
-.. _Spice agent: spice-user-manual.html#agent
-.. _USB redirection: spice-user-manual.html#_usb_redirection
-.. _Encrypted communication: spice-user-manual.html#_tls
-.. _SASL authentication: spice-user-manual.html#_sasl
-.. _Xspice: xspice.html
-.. _Smartcard: spice-user-manual.html#_cac_smartcard_redirection
-.. _Folder sharing: spice-user-manual.html#_folder_sharing
-.. _SSH authentization agent: https://bugs.freedesktop.org/show_bug.cgi?id=85925
-.. _Seamless applications: https://bugs.freedesktop.org/show_bug.cgi?id=39238
-.. _CD sharing: https://bugs.freedesktop.org/show_bug.cgi?id=85956
-.. _3D acceleration Support: spice-user-manual.html#_gl_acceleration_virgl
-.. _OSX client: osx-client.html
-.. _Web client: spice-html5.html
-.. _Simultaneous clients connection: multiple-clients.html
-
-Current Features
-++++++++++++++++
-
-- `Video streaming`_ - heuristically identifies video streams and transmits M-JPEG
- video streams
-- `Image compression`_ - offers various compression algorithm that were built
- specifically for Spice, including QUIC (based on SFALIC), LZ, GLZ
- (history-based global dictionary), and auto (heuristic compression choice per
- image)
-- Live migration - supports clients while migrating Spice servers to new hosts,
- thus avoiding interruptions
-- `Windows drivers`_ - Windows drivers for QXL display device and VDI-port
-- `Multiple monitors`_ with support for enabling selection of the screen used by
- the client (in virt-viewer/remote-viewer)
-- `Two way audio`_ - supports audio playback and captures; audio data stream is
- optionally compressed using CELT Encryption - using OpenSSL
-- Clipboard sharing and arbitrary resolutions - features provided by the `Spice agent`_ running on the guest
-- `USB redirection`_ - allows clients to use their USB devices with Spice servers
-- `Encrypted communication`_
-- `SASL authentication`_
-- Xspice_ - a standalone server that is both an X server and a Spice server
-- `Web client`_ - a simple javacript client
-- Smartcard_ - CAC smartcard redirection
-- `Folder sharing`_ - for sharing a client's folder with the remote guest
-
-Future Features
-+++++++++++++++
-
-- `SSH authentization agent`_
-- `Seamless applications`_
-- `CD sharing`_ - share your CD with Spice server
-- `3D acceleration Support`_
-- `OSX client`_
-- `Simultaneous clients connection`_ \ No newline at end of file
diff --git a/content/pages/home.rst b/content/pages/home.rst
deleted file mode 100644
index 7bef988..0000000
--- a/content/pages/home.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-Home
-###############################################################################
-
-:slug: index
-:modified: 2016-02-24 11:28
-
-The SPICE project aims to provide a complete open source solution for remote
-access to virtual machines in a seamless way so you can play videos, record
-audio, share usb devices and share folders without complications.
-
-.. image:: static/images/rhel7_win7.png
- :width: 48%
- :alt: RHEL7 client connected to a Windows guest
- :align: left
- :target: static/images/rhel7_win7.png
-.. image:: static/images/win7_rhel.png
- :width: 48%
- :alt: Windows7 client connected to RHEL6 and RHEL7 guests
- :align: right
- :target: static/images/win7_rhel.png
-
-SPICE could be divided into 4 different components: Protocol, Client, Server
-and Guest. The protocol is the specification in the communication of the three
-other components; A client such as remote-viewer is responsible to send data and
-and translate the data from the Virtual Machine (VM) so you can interact with it;
-The SPICE server is the library used by the hypervisor in order to share the VM
-under SPICE protocol; And finally, the Guest side is all the software that must
-be running in the VM in order to make SPICE fully functional, such as the QXL
-driver and SPICE VDAgent.
-
-.. image:: static/images/spice_schem.png
- :alt: scheme with SPICE components
- :align: center
- :target: static/images/spice_schem.png
diff --git a/content/pages/introduction.rst b/content/pages/introduction.rst
deleted file mode 100644
index 31c557c..0000000
--- a/content/pages/introduction.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-Introduction
-###############################################################################
-
-:slug: introduction
-:modified: 2015-10-13 10:30
-
-The Spice project aims to provide a complete open source solution for
-interaction with virtualized desktop devices.The Spice project deals with both
-the virtualized devices and the front-end. Interaction between front-end and
-back-end is done using VD-Interfaces. The VD-Interfaces (VDI) enable both ends
-of the solution to be easily utilized by a third-party component.
-
-The following diagram illustrates VD-Interfaces:
-
-.. image:: {filename}/static/images/vdi_schem.png
- :alt: VDI scheme
-
-Currently, the project main focus is to provide high-quality remote access to
-QEMU virtual machine. Seeking to help break down the barriers to virtualization
-adoption by overcoming traditional desktop virtualization challenges,
-emphasizing user experience. For this purpose, Red Hat introduced the SPICE
-remote computing protocol that is used for Spice client-server communication.
-Other components developed include QXL display device and driver, etc.
-
-The following diagram illustrates the current Spice solution on top of QEMU.
-
-.. image:: {filename}/static/images/spice_schem.png
- :alt: SPICE scheme
-
-The Spice project plans to provide additional solutions, including:
-
-- Remote access for a physical machine
-- VM front-end for local users (i.e., render on and share devices of the
- same physical machine)
-
-Like to know whats going on? Join spice-devel@lists.freedesktop.org to
-get information about all things related to the Spice project. For
-other mailing lists and irc channel see the contact page
diff --git a/content/pages/multiple-clients.rst b/content/pages/multiple-clients.rst
deleted file mode 100644
index b2b5dcf..0000000
--- a/content/pages/multiple-clients.rst
+++ /dev/null
@@ -1,66 +0,0 @@
-Simultaneous clients connection
-###############################################################################
-
-.. role:: bash(code)
- :language: bash
-
-:slug: multiple-clients
-:modified: 2016-01-06 15:20
-
-Support multiple concurrent connections to a single spice server.
-
-Status
-++++++
-
-This feature is still experimental, it is not expected to work correctly under different client bandwidths, although it should not crash the server.
-
-To enable:
-
-Using libvirt
-^^^^^^^^^^^^^
-
-Modify the xml definition of the virtual machine to use :bash:`SPICE_DEBUG_ALLOW_MC` environment variable:
-
-.. code-block:: XML
-
- <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
- ....
- <qemu:commandline>
- <qemu:env name='SPICE_DEBUG_ALLOW_MC' value='1'/>
- </qemu:commandline>
- </domain>
-
-Using QEMU
-^^^^^^^^^^
-
-:bash:`export SPICE_DEBUG_ALLOW_MC=1`
-
-Launch qemu vm as usual.
-
-The stdout will contain an additional line:
-
-:bash:`spice: allowing multiple client connections`
-
-You can then launch clients as usual. A second client connection will not disconnect any of the previous clients. There is no set limit. The behavior of each channel in multiple client mode:
-
-- inputs - shared. All clients can supply mouse and keyboard.
-- display - shared. All clients receive display updates.
-- cursor - shared. All clients receive cursor updates.
-- playback - first connection after no connections. To do: make it shared.
-- record - first connection after no connections. To do: make it shared.
-- smartcard - first connection after no connections. To do: make it shared.
-- usbredir - first connection after no connections. To do: make it shared.
-- agent - ?
-
-NB: The main channel is not on that list because it isn't a user visible channel. Every client has it's own main connection.
-
-NB: First connection after no connections: To receive this channel you will have to connect after explicitly disconnecting all the previous clients. Otherwise you will easily reach a situation where ''none'' of the clients have any of those channels:
-
-.. code-block:: sh
-
- connect A
- connect B (A is connected)
- disconnect A (B is still connected)
- connect C
-
-Now both B and C only have {inputs,display,cursor}, no one has any other (playback,cursor,smartcard) connection. Specifically, the server didn't advertise those channels to clients B and C.
diff --git a/content/pages/osx-client.rst b/content/pages/osx-client.rst
deleted file mode 100644
index c90fdb6..0000000
--- a/content/pages/osx-client.rst
+++ /dev/null
@@ -1,119 +0,0 @@
-OSX Client
-###############################################################################
-
-:slug: osx-client
-:modified: 2016-01-06 10:28
-
-.. _bundle: http://people.freedesktop.org/~teuf/spice-gtk-osx/dmg/0.5.7/RemoteViewer-0.5.7-1.dmg
-.. _jhbuild: https://wiki.gnome.org/action/show/Projects/Jhbuild
-.. _gtk-osx: http://www.gtk.org/download/macos.php
-.. _spice-osx moduleset:
-.. _this repository: http://cgit.freedesktop.org/spice/spice-jhbuild/log/?h=osx
-.. _gtk-osx project:
-.. _OSX bundle: https://wiki.gnome.org/Projects/GTK%2B/OSX/Building
-.. _spice-osx-build-setup.sh script: http://cgit.freedesktop.org/spice/spice-jhbuild/plain/spice-osx-build-setup.sh?h=osx
-.. _gtk-mac-bundler: https://wiki.gnome.org/Projects/GTK%2B/OSX/Bundling
-
-Status
-++++++
-
-A bundle_ is now available.
-
-- Works with either gtk2 or gtk3
-- Uses GStreamer for audio (output and input?)
-- No USB support
-- No smartcard support
-
-Building
-++++++++
-
-The MacOSX client uses the jhbuild_ moduleset provided by the `gtk-osx`_ project. `This repository`_ contains an additional moduleset to build the needed SPICE modules. The OSX client is based on remote-viewer (as the Windows client).
-
-Prerequisite
-^^^^^^^^^^^^
-
-Before using it, you need to install XCode. I'm using XCode 4.3.3 for Lion.
-After installing it, I had to run the command below to setup everything
-as expected:
-
-.. code-block:: sh
-
- sudo xcode-select --switch /Applications/Xcode.app/ContentsDeveloper
-
-If you want to build spice-gtk from git (the default moduleset is building it
-from tarballs), you also need the Perl module Text::CSV. To install it you can run:
-
-.. code-block:: sh
-
- sudo cpan Text::CSV
-
-Setup
-^^^^^
-
-Once these prerequisite are addressed, you can download the `spice-osx-build-setup.sh script`_ and run it:
-
-.. code-block:: sh
-
- sh spice-osx-build-setup.sh
-
-It will download the gtk-osx jhbuild moduleset using the gtk-osx-build-setup.sh script from the `gtk-osx project`_. This in turn installs jhbuild in
-~/Source and creates ~/.local/bin/jhbuild. It will also install ~/.jhbuildrc
-and ~/.jhbuildrc-custom and will copy the current gtk-osx modules into
-~/Source/jhbuild/modulesets.
-
-After the script runs, ~/Source/spice-jhbuild will contain a jhbuildrc file.
-You can copy it to ~/.jhbuildrc-custom and jhbuild (as setup by the ~/.jhbuildrc
-file created by gtk-osx) will pick it automatically. Alternatively, you can copy
-it to ~/.jhbuildrc-spice and set the JHB environment variable to 'spice' (or
-use any other prefix of your liking). You can edit this jhbuildrc file if you
-want to configure the location where source will be downloaded/expanded, and
-the location where the built binaries/libraries will be installed.
-
-Building
-^^^^^^^^
-
-Make sure ~/.local/bin is in your PATH, this is where the jhbuild binary is
-located. You can then run
-
-.. code-block:: sh
-
- jhbuild bootstrap
- jhbuild build
-
-This will download and build virt-viewer and all its dependencies. Once this is
-done, you can start remote-viewer with
-
-.. code-block:: sh
-
- jhbuild run remote-viewer
-
-
-If a weird build error happens while building freetype, exit jhbuild, run
-
-.. code-block:: sh
-
- jhbuild buildone -cfa freetype
-
-and then restart jhbuild with
-
-.. code-block:: sh
-
- jhbuild build
-
-Bundling
-++++++++
-The SPICE jhbuild moduleset also comes with the needed files to generate an `OSX bundle`_ for easy deployment. This uses gtk-mac-bundler from the `gtk-osx project`_.
-
-After building virt-viewer or virt-viewer-gtk3, make sure you have installed `gtk-mac-bundler`_. You can then use the bundle/remote-viewer.bundle and bundle/remote-viewer-gtk3.bundle files that come with the `spice-osx moduleset`_ to generate a bundle. If you used the spice-osx-build-setup.sh, the bundle file name will be ~/Source/spice-jhbuild/bundle/remote-viewer.bundle. Once it is installed, you can call
-
-.. code-block:: sh
-
- jhbuild run gtk-mac-bundler ~/Source/spice-jhbuild/bundle/remote-viewer.bundle
-
-This will create a RemoteViewer.app bundle on your desktop containing everything that is needed to run the remote-viewer binary you just built on any system.
-
-Finally, you then generate a dmg file from this bundle from the commandline using
-
-.. code-block:: sh
-
- hdiutil create ~/Desktop/dist/RemoteViewer.dmg -srcfolder ~/Desktop/dist/ -ov
diff --git a/content/pages/smartcard-usage.rst b/content/pages/smartcard-usage.rst
deleted file mode 100644
index f508bcd..0000000
--- a/content/pages/smartcard-usage.rst
+++ /dev/null
@@ -1,319 +0,0 @@
-Smartcard usage
-###############################################################################
-
-:slug: smartcard-usage
-:modified: 2016-01-14 11:28
-
-.. _esc for windows: http://directory.fedoraproject.org/docs/389ds/FAQ/esc-guide.html#windows
-
-This page is meant to get people started with smartcard support in Spice.
-
-QEMU
-++++
-
-Compilation
-^^^^^^^^^^^
-
-First make sure your spice-server is compiled with smartcard support (--enable-smart must have been passed to autogen.sh/configure).
-QEMU must also be compiled with smartcard support. All you have to do is to make sure you passed --enable-smartcard --enable-smartcard-nss to QEMU's configure.
-
-Running QEMU and exporting a smartcard spice channel
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can start a VM with smartcard support using
-
-.. code-block:: sh
-
- qemu-system-x86_64 #allyouroptions#
- -spice addr=127.0.0.1,port=5930,disable-ticketing
- -chardev spicevmc,name=smartcard,id=ccid
- -device usb-ccid -device ccid-card-passthru,chardev=ccid -usb
-
-Breakdown of the parameters
----------------------------
-
-This just explains the above parameters for those interested:
-
-- '''-usb''' enable the usb bus (this is a usb 1.1 host, I think uhci)
-- '''-device usb-ccid''' create a single usb-ccid device on the usb bus
-- '''-chardev spicevmc,name=smartcard,id=ccid''' create a chardev of type spicevmc with subtype smartcard (just a tag) and id ccid (the id is referenced by the next qemu device)
-- '''-device ccid-card-passthru,chardev=ccid''' create a ccid-card-passthru device on the usb-ccid bus (there is only one usb-ccid device in this example so no need to id it) using the created chardev to communicate to the world.
-
-Using a physical smartcard
-++++++++++++++++++++++++++
-
-Preliminary Setup
-^^^^^^^^^^^^^^^^^
-
-Install pcscd on the client and make sure you can use your smartcard with nss
-
-.. code-block:: sh
-
- mkdir -p /etc/pki/nssdb
- certutil -N -d /etc/pki/nssdb
-
-Add your library to the database to access your smartcard (mine is aet)
-
-.. code-block:: sh
-
- modutil -add "aet" -dbdir /etc/pki/nssdb -libfile /usr/lib/libaetpkss.so
-
-or coolkey
-
-.. code-block:: sh
-
- modutil -add "coolkey" -dbdir /etc/pki/nssdb -libfile /usr/lib/pkcs11/libcoolkeypk11.so
-
-Make sure you can show the certificates (mine asks for a pin)
-
-.. code-block:: sh
-
- certutil -L -d sql:/etc/pki/nssdb -h all
-
-Spice Client
-^^^^^^^^^^^^
-
-Now we can start the spice client with the smartcard option (pay attention to the blinking led if any on the smartcard reader)
-
-.. code-block:: sh
-
- remote-viewer --spice-smartcard spice://127.0.0.1:5930
-
-Login to the VM and make sure a smartcard reader appears in the VM
-
-.. code-block:: sh
-
- lsusb|grep -i gem
-
-If you have the device install pcscd and coolkey
-
-.. code-block:: sh
-
- apt-get install pcscd coolkey
- mkdir -p /etc/pki/nssdb
- certutil -N -d /etc/pki/nssdb
-
-The virtual smartcard is based on the CAC standard and coolkey uses this standard so use this to access your card
-
-.. code-block:: sh
-
- modutil -add "coolkey" -dbdir /etc/pki/nssdb -libfile /usr/lib/pkcs11/libcoolkeypk11.so
- certutil -L -d sql:/etc/pki/nssdb -h all
-
-If right your certificates would show up on the vm
-
-Using a software smartcard
-++++++++++++++++++++++++++
-
-Preliminary Setup
-^^^^^^^^^^^^^^^^^
-
-To emulate a software smartcard, we need to generate 3 certificates which will be used for the "fake" smartcard.
-This can be done using
-
-.. code-block:: sh
-
- mkdir ~/.netscape
- certutil -N (use an empty password)
- certutil -x -t "CT,CT,CT" -S -s "CN=cert1" -n cert1
- certutil -x -t "CT,CT,CT" -S -s "CN=cert2" -n cert2
- certutil -x -t "CT,CT,CT" -S -s "CN=cert3" -n cert3
-
-After doing this, cert1, cert2 and cert3 should be listed when typing
-
-.. code-block:: sh
-
- certutil -L
-
-Spice Client
-^^^^^^^^^^^^
-
-Now you can start the client. You need to give it the name of the certificates to use for the software smartcard:
-
-.. code-block:: sh
-
- remote-viewer spice://localhost:5924 --spice-smartcard --spice-smartcard-db ~/.netscape/ --spice-smartcard-certificates cert1,cert2,cert3
-
-Login to the VM and make sure a smartcard reader appears in the VM
-
-.. code-block:: sh
-
- lsusb|grep -i gem
-
-The software smartcard is initially inserted in the virtual smartcard reader in the VM, this can be checked with pcsc_scan. Card removal can be simulated with shit+F9, and card (re)insertion with shit+F8.
-
-Testing
-^^^^^^^
-
-In the VM, make sure you have pcscd and its tool installed, and that it's running. On Debian/Ubuntu the package to install is pcscd, on
-Fedora it's pcsc-tools, and you need to start the daemon with service pcscd start.
-
-The smartcard reader state can be queried with pcsc_scan, and you can check which certificates are available on the smartcard by running pkcs11_listcerts. When using a software smartcard, it's You can also install the "esc" graphical tool to manage your smartcards.
-
-Firefox setup to see certificates from smart card
-+++++++++++++++++++++++++++++++++++++++++++++++++
-
-You need to add the libcoolkeypk11.so provider, see:
-- http://www.gooze.eu/howto/iceweasel-firefox-smartcard-and-token-howto/configuring-the-navigator-to-use-smart-cards
-
-Linux Esc
-+++++++++
-
-This is a gecko based smartcard manager.
-
-For fedora:
-
-.. code-block:: sh
-
- dnf install esc
-
-Windows Esc
-+++++++++++
-For windows: `esc for Windows`_
-- The download link is broken in that page, use: http://www.nabber.org/projects/coolkey/
-
-Debugging
-+++++++++
-
-According to what can go wrong
-
-Are the certificates visible in the client
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If this is a software backed card, and you followed the above instructions, then certutil -L should give:
-
-.. code-block:: sh
-
- $ certutil -L
-
- Certificate Nickname Trust Attributes
- SSL,S/MIME,JAR/XPI
-
- cert2 CTu,Cu,Cu
- cert3 CTu,Cu,Cu
- cert1 CTu,Cu,Cu
-
-If this is a real smartcard, likewise.
-
-Is the usb device visible inside the guest
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The ccid reader should show up doing lsusb or from device manager.
-
-.. code-block:: sh
-
- $ lsusb | grep Gemplus
- Bus 001 Device 002: ID 08e6:4433 Gemplus GemPC433-Swap
-
-Does spice client see the reader
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: sh
-
- $ cat ~/.spicec/spicec.log | grep Smart
- 1322144481 INFO [28131:28139] SmartCardChannel::cac_card_events_thread_main: VEVENT_READER_INSERT
- 1322144481 INFO [28131:28139] SmartCardChannel::cac_card_events_thread_main: VEVENT_CARD_INSERT
- 1322144481 INFO [28131:28131] SmartCardChannel::add_unallocated_reader: adding unallocated reader 0x1ed0570
- 1322144481 INFO [28131:28131] SmartCardChannel::add_reader: adding 0x1ed0570->0
-
-Does the guest have the coolkey provider?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: sh
-
- $ modutil -list -dbdir /etc/pki/nssdb/
-
- Listing of PKCS #11 Modules
- -----------------------------------------------------------
- 1. NSS Internal PKCS #11 Module
- slots: 2 slots attached
- status: loaded
-
- slot: NSS Internal Cryptographic Services
- token: NSS Generic Crypto Services
-
- slot: NSS User Private Key and Certificate Services
- token: NSS Certificate DB
-
- 2. CoolKey PKCS #11 Module
- library name: libcoolkeypk11.so
- slots: 1 slot attached
- status: loaded
-
- slot: Gemalto GemPC433 SL [CCID Interface] (1) 00 00
- token: cert1
- -----------------------------------------------------------
-
-Does the coolkey module load?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-As an alternative to the above, you could try to add the module and see that it actually loads using something like this (in the guest of course):
-
-.. code-block:: sh
-
- # NSS_DEBUG_PKCS11_MODULE="coolkey" modutil -add coolkey -dbdir /etc/pki/nssdb/ -libfile /usr/lib/pkcs11/libcoolkeypk11.so
-
- WARNING: Performing this operation while the browser is running could cause
- corruption of your security databases. If the browser is currently running,
- you should exit browser before continuing this operation. Type
- 'q <enter>' to abort, or <enter> to continue:
-
- ERROR: Failed to add module "coolkey". Probable cause : "Failure to load dynamic library".
- Function # Calls Time Avg. % Time
-
- C_Initialize 1 1000us 1000.00us 0.14%
- C_Finalize 1 1000us 1000.00us 0.14%
- C_GetInfo 1 0 z 0.00us 0.00%
- C_GetSlotList 2 724ms 362000.00us 99.59%
- C_GetSlotInfo 2 0 z 0.00us 0.00%
- C_GetTokenInfo 1 0 z 0.00us 0.00%
- C_GetMechanismList 2 1000us 500.00us 0.14%
- C_OpenSession 1 0 z 0.00us 0.00%
- C_CloseAllSessions 1 0 z 0.00us 0.00%
- C_GetSessionInfo 1 0 z 0.00us 0.00%
- C_FindObjectsInit 1 0 z 0.00us 0.00%
- C_FindObjects 1 0 z 0.00us 0.00%
- C_FindObjectsFinal 1 0 z 0.00us 0.00%
-
- Totals 16 727ms
-
-
- Maximum number of concurrent open sessions: 1
-
-
-Does the guest see the certificates
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-pcsc_scan is not available in all installations (RHEL doesn't have it), and also only provides ATR + card inserted/removed status. Use pkcs11_listcerts to get the certs: (for the emulated card there is no pin, use <enter>)
-
-.. code-block:: sh
-
- # pkcs11_listcerts
- PIN for token:
- Found '3' certificate(s)
- Certificate #1:
- - Subject: CN=cert1
- - Issuer: CN=cert1
- - Algorithm: PKCS #1 RSA Encryption
- verify_certificate() failed:
- Certificate #2:
- - Subject: CN=cert2
- - Issuer: CN=cert2
- - Algorithm: PKCS #1 RSA Encryption
- verify_certificate() failed:
- Certificate #3:
- - Subject: CN=cert3
- - Issuer: CN=cert3
- - Algorithm: PKCS #1 RSA Encryption
- verify_certificate() failed:
-
-Verification failure is normal. The certificates are self signed.
-
-How to get log of smartcard messages sent on wire?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Actual messages passed by libcacard library (part of qemu sources). To get them, the easiest way is to run client with libcacard debug output enabled on the client:
-
-.. code-block:: sh
-
- G_MESSAGES_DEBUG=libcacard LIBCACARD_DEBUG=1 remote-viewer --spice-smartcard [URI or .vv file]
diff --git a/content/pages/spice-gtk.rst b/content/pages/spice-gtk.rst
deleted file mode 100644
index 24a28e0..0000000
--- a/content/pages/spice-gtk.rst
+++ /dev/null
@@ -1,50 +0,0 @@
-spice-gtk
-###############################################################################
-:slug: spice-gtk
-:submenu: documentation
-:modified: 2015-11-03 12:00
-
-|frame|
-
-.. |frame| raw:: html
-
- <script type="text/javascript">
- function getDocHeight(doc)
- {
- doc = doc || document;
- // stackoverflow.com/questions/1145850/
- var body = doc.body, html = doc.documentElement;
- var height = Math.max(body.scrollHeight,
- body.offsetHeight,
- html.clientHeight,
- html.scrollHeight,
- html.offsetHeight);
- return height;
- }
-
- function setIframeHeight(id)
- {
- var ifrm = document.getElementById(id);
- var doc = ifrm.contentDocument ?
- ifrm.contentDocument : ifrm.contentWindow.document;
- var height = getDocHeight( doc ) + 4 + "px";
-
- // It seems that on firefox, ie and chrome, onload behaves
- // differently - inner links might not work on firefox. The
- // workaround bellow does not work on firefox and it is not
- // necessary to chrome.
- // if (ifrm.style.height == height)
- // return;
-
- ifrm.style.visibility = 'hidden';
- ifrm.style.height = "10px"; // reset to minimal height ...
- // IE opt. for bing/msn needs a bit added or scrollbar appears
- ifrm.style.height = getDocHeight( doc ) + 4 + "px";
- ifrm.style.visibility = 'visible';
- }
- </script>
- <iframe id="ifrm"
- width="100%"
- src="api/spice-gtk/"
- onload="setIframeHeight(this.id)">
- </iframe>
diff --git a/content/pages/spice-html5.rst b/content/pages/spice-html5.rst
deleted file mode 100644
index 461fe52..0000000
--- a/content/pages/spice-html5.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-HTML5 Client
-###############################################################################
-
-:slug: spice-html5
-:modified: 2016-06-30 10:28
-
-.. role:: bash(code)
- :language: bash
-
-.. _TODO: http://cgit.freedesktop.org/spice/spice-html5/tree/TODO
-.. _websockify: https://github.com/kanaka/websockify
-.. _the git page: http://cgit.freedesktop.org/spice/spice-html5
-
-
-Spice has a prototype Web client which runs entirely within a modern browser. It is limited in function, a bit slow, and lacks support for many features of Spice (audio, video, agents just to name a few).
-
-A complete TODO_ list is kept in the source code.
-
-However, it is surprisingly functional, and certainly a useful proof of concept.
-
-Requirements
-++++++++++++
-
-The browser must support binary WebSockets as well as the binaryType of arraybuffer. As of June, 2012, Firefox 12 and Chrome >= 18 both provided the required features.
-
-Currently, you must also use a WebSocket proxy, as Spice has no built in support for the WebSocket protocol. websockify_ works great.
-
-You must, of course, also have a Spice server of some kind. It has been tested primarily against Xspice, but it also works with qemu. However, it works better with linux guests than with Windows guests.
-
-To Try It
-+++++++++
-
-The following steps should enable you to use the HTML5 Client:
-
-#. (optional) Obtain the spice-html5 client. See `the git page`_ for more details.
-#. Start your spice server. This is left as an exercise for the reader. For the purposes of this set of instructions, we imagine it is running on your localhost at port 5900.
-#. Obtain websockify_
-#. Start websockify :bash:`websockify/websockify.py 5959 localhost:5900`
-#. Point your browser to spice.html and try it!
-
-Be sure to give the hostname where websockify is running and the port number you provided when starting websockify.
diff --git a/content/pages/spice-style.asc b/content/pages/spice-style.asc
deleted file mode 100644
index e2d7a3e..0000000
--- a/content/pages/spice-style.asc
+++ /dev/null
@@ -1,363 +0,0 @@
-Spice project coding style and coding conventions
-=================================================
-
-Copyright (C) 2009-2016 Red Hat, Inc.
-Licensed under a Creative Commons Attribution-Share Alike 3.0
-United States License (see http://creativecommons.org/licenses/by-sa/3.0/us/legalcode).
-
-
-Source Files
-------------
-
-Names
-~~~~~
-
-Use lower case and separate words using dashes (e.g., file-name.c, header.h).
-
-Use standard file extension for C source and header files.
-
-Line width
-~~~~~~~~~~
-
-No more then 100 character on a single line
-
-Tabs
-~~~~
-
-Tabs are not allowed, use 4 spaces instead
-
-White spaces
-~~~~~~~~~~~~
-
-Trailing white spaces are not allowed
-
-New Line
-~~~~~~~~
-
-Use Unix style line ending (i.e., LF)
-
-New line (i.e., EOL) must be the last char in the file
-
-Comparing
----------
-
-Use right-hand comparison style.
-
-Examples: +
- use `(var == 7)` instead of `(7 == var)` +
- use `(function(var) > 7)` instead of `(7 < function(var))`
-
-TRUE, FALSE and NULL
---------------------
-
-Use `TRUE`, `FALSE` and `NULL` instead of 1 and 0 in order to improve code readability.
-
-Static storage initialization
------------------------------
-
-To improve code readability, explicitly initialize variables that depend on default initialization with zero/null.
-
-FIXME and TODO
---------------
-
-Comments that are prefixed with `FIXME` describe a bug that need to be fixed. Generally, it is not allowed to commit new code having `FIXME` comment. Committing `FIXME` is allowed only for existing bugs. Comments that are prefixed with `TODO` describe further features, optimization or code improvements, and they are allowed to be committed along with the relevant code.
-
-ASSERT
-------
-
-Use it freely. ASSERT helps testing function arguments and function results validity. ASSERT helps detecting bugs and improve code readability and stability.
-
-sizeof
-------
-
-Apply function style to `sizeof` (i.e., use `sizeof(x)`)
-
-const
------
-
-Use const keyword when applicable to improve code reliability and celerity.
-
-goto
-----
-
-Using goto is allowed in C code for error handling. In any other case it will be used only as a special exception.
-
-Defining Constant values
-------------------------
-
-Use defines for constant values for improving readability and ease of changes. Alternatively, use global `const` variables.
-
-Short functions
----------------
-
-Try to split code to short functions, each having simple functionality, in order to improve code readability and re-usability. Prefix with inline short functions or functions that were splitted for readability reason.
-
-Return on if
-------------
-
-Try to return immediately on if in places that can reduce indentation level.
-
-Example:
-
-prefer
-[source,c]
-----
-void function(int *n)
-{
- if (!n) {
- return;
- }
- ...
-}
-----
-on
-[source,c]
-----
-void function(int *n)
-{
- if (!n) {
- return;
- } else {
- ...
- }
-}
-----
-
-Names
------
-
-* Don't underestimate the importance of name choosing. Good names make the code more easy to understand and reduce the required level of code documentation. When choosing names, prefer long meaningful names over short vague name.
-* Variable and Function names - use lower case and separate words using underscore (e.g., sample_variable_name)
-* Structures, class and enum names - one or more words, each word start with upper case (e.g., Name, SampleStructName)
-* Defines and enum items names - uppercase words separated using underscores (e.g., NAME, SAMPLE_DEFINE_NAME)
-
-Type prefix
-~~~~~~~~~~~
-In the code there are some common prefixes for types, `Red` and `Spice`.
-As a basic rule `Spice` refers to types in the public external headers while `Red` is used for internal types.
-
-Common abbreviations
-~~~~~~~~~~~~~~~~~~~~
-`ccc` CursorChannelClient
-
-`dc` DisplayChannel
-
-`dcc` DisplayChannelClient
-
-`dpi` drawable pipe item
-
-`rcc` RedChannelClient
-
-`sif` spice interface
-
-`sin` spice instance
-
-Optimization
-------------
-
-Keep optimization to fast path code. Prefer safe, clear and easy to maintain coding for code that is not on the fast path.
-
-Spacing
--------
-
-Use spacing for improving code readability.
-
-[source,c]
-for (i = 0; i < 10; ++i) {
- some_func(var, i * i + *ptr, &var, sizeof(var));
-}
-
-[[function_indentation]]
-Function Indentation
---------------------
-
-* No spaces between function name to left bracket.
-* Curly bracket start on new line.
-* Functions must be padded with empty lines on both sides
-+
-[source,c]
-void function(type1 arg1, type2 arg2, type2 arg3)
-{
- ...
-}
-+
-* In case of a new line in arguments list, align it to the first argument type.
-+
-[source,c]
-----
-void function(type1 arg1,
- type2 arg2,
- type3 arg3)
-----
-+
-Or
-+
-[source,c]
-----
-void function(type1 arg1, type2 arg2,
- type3 arg3)
-----
-+
-* New line is acceptable only in arguments list
-
-Branching indentation
----------------------
-
-* Add space after a branch keyword and after the right bracket.
-* Curly bracket starts on the same line the branch starts.
-* Place curly brackets after all control flow constructs even where optional. This convention reduces branching bugs that are difficult to detect. It also makes it easier to add logging messages during debugging since it eliminates the need to add the brackets.
-+
-[source,c]
-----
-if (condition) {
- ...
-} else if (condition) {
- ...
-} else {
- ...
-}
-----
-+
-In case of long condition statement, prefer having additional temporary variable over multiple line condition statement.
-+
-In case of new line in condition statement.
-+
-[source,c]
-----
-if (long_name && very_long_name && very_long ||
- var_name) {
-----
-+
-or indent under the round bracket using spaces
-+
-[source,c]
-----
-if (long_name && very_long_name && long_name ||
- var_name) {
-----
-+
-Break function arguments list in long condition statement according to <<function_indentation, Function Indentation>> section.
-+
-[source,c]
-----
-while (condition) {
- ...
-}
-
-do {
- ...
-} while (condition);
-
-for (i = x; i < y; i++) {
- ...
-}
-
-
-switch (x) {
-case A: {
- ...
- break;
-}
-case B:
- ...
- ...
- break;
-default:
- ...
-}
-----
-
-Types indentation
------------------
-
-[source,c]
-----
-struct StructName {
- type1 name1;
- type2 name2;
-
- ...
-};
-
-enum {
- A,
- B,
- C = 10,
- D,
-};
-
-union {
- type1 name1;
- type2 name2;
- ...
-} u;
-----
-
-Vertical indentation
---------------------
-
-Use one space no tabs and no vertical alignment.
-[source,c]
-----
-long var_name_1 = 7;
-int var_name_2 = 1111l;
-unsigned long long_var_name_1 = 666;
-char long_var_name_1 = 'a';
-
-void f1(int a, char ch);
-unsigned long f2(int a, char ch);
-----
-
-Multi line macro indentation
-----------------------------
-
-[source,c]
-#define MACRO_NAME(a, b, c) { \
- int ab = a + c; \
- int ac = a + b; \
- int bc = b + c; \
- f(ab, ac, bc); \
-}
-
-Multi line array indentation
-----------------------------
-
-[source,c]
-char *array[] = {
- "item_1",
- "item_2",
- "item_3",
-};
-
-Header inclusion
-----------------
-
-Headers should be included in this order
-
-[source,c]
-----
-#include <system_headers.h>
-#include <no_spice_no_system_libraries.h>
-#include <spice_protocol.h>
-#include <spice_common.h>
-
-#include "spice_server.h"
-----
-
-(note the empty line between no spice-server and spice-server headers)
-
-Also in source (no header) files you must include `config.h` at the beginning so should start (beside comments and copyright) with
-
-[source,c]
-----
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <system_headers.h>
-#include <no_spice_no_system_libraries.h>
-#include <spice_protocol.h>
-#include <spice_common.h>
-
-#include "spice_server.h"
-----
diff --git a/content/pages/spice-user-manual.asc b/content/pages/spice-user-manual.asc
deleted file mode 100644
index 3340341..0000000
--- a/content/pages/spice-user-manual.asc
+++ /dev/null
@@ -1,1268 +0,0 @@
-Spice User Manual
-=================
-
-Licensed under a Creative Commons Attribution-Share Alike 3.0 United
-States License (see
-http://creativecommons.org/licenses/by-sa/3.0/us/legalcode).
-
-Introduction
-============
-
-Spice is an open remote computing solution, providing client access to
-remote displays and devices (e.g. keyboard, mouse, audio). The main
-use case is to get remote access to virtual machines, although other
-use cases are possible and in various development stage.
-
-Spice provides a desktop-like user experience, while trying to offload
-most of the intensive CPU and GPU tasks to the client. The basic
-building blocks of Spice are:
-
- * <<spice-server, Spice Server>>
- * <<spice-client, Spice Client>>
- * <<spice-protocol, Spice Protocol>>
-
-The following sections provide basic information on Spice components
-and features, obtaining, building installing and using Spice.
-
-Spice and Spice-related components
-----------------------------------
-
-[[spice-server]]
-Spice Server
-~~~~~~~~~~~~
-
-Spice server is implemented in libspice, a VDI pluggable
-library. Currently, the main user of this library is QEMU. QEMU uses
-spice-server to provide remote access to virtual machines through the
-Spice protocol. Virtual Device Interface (VDI) defines a set of
-interfaces that provide a standard way to publish virtual devices
-(e.g. display device, keyboard, mouse) and enables different Spice
-components to interact with those devices. On one side, the server
-communicates with the remote client using the Spice protocol and on
-the other side, it interacts with the VDI host application (e.g QEMU).
-
-[[spice-client]]
-Spice Client
-~~~~~~~~~~~~
-
-The Spice client is a program which is used by the end user to access
-remote systems through Spice. The recommended client is remote-viewer
-(which is shipped with virt-viewer). GNOME Boxes can also be used as a
-Spice client. spicec is an obsolete legacy client, and spicy is only a
-test application.
-
-QXL Device and Drivers
-~~~~~~~~~~~~~~~~~~~~~~
-
-Spice server supports the QXL VDI interface. When libspice is used
-with QEMU, a specific video PCI device can be used for improving
-remote display performance and enhancing the graphic capabilities of
-the guest graphic system. This video device is called a QXL device and
-requires guest QXL drivers for full functionality. However, standard
-VGA is supported when no driver exists.
-
-Spice Agent
-~~~~~~~~~~~
-
-The Spice agent is an optional component for enhancing user experience
-and performing guest-oriented management tasks. For example, the agent
-injects mouse position and state to the guest when using client mouse
-mode. It also enables you to move cursor freely between guest and
-client. Other features of agent are shared clipboard (copy and paste
-between guest and host) and aligning guest resolution with client when
-entering fullscreen mode.
-
-VDI Port Device
-~~~~~~~~~~~~~~~
-
-The Spice protocol supports a communication channel between the client
-and the agent on the server side. When using QEMU, Spice agent resides
-on the guest. VDI port is a QEMU PCI device used for communication
-with the agent.
-
-[[spice-protocol]]
-Spice Protocol
-~~~~~~~~~~~~~~
-
-The Spice protocol defines the messages and rules for the
-communication between the various Spice components.
-
-Features
---------
-
-Multiple Channels
-~~~~~~~~~~~~~~~~~
-
-The server and client communicate via channels. Each channel is
-dedicated to a specific type of data. The available channels are the
-following:
-
-Main::
-control and configuration
-
-Display::
-graphics commands images and video streams
-
-Inputs::
-keyboard and mouse inputs
-
-Cursor::
-pointer device position and cursor shape
-
-Playback::
-audio received from the server to be played by the client
-
-Record::
-audio captured on the client side
-
-Smartcard::
-passthrough of smartcard data from the client machine to the guest OS
-
-USB::
-redirection of USB devices plugged into the client to the guest OS
-
-Image Compression
-~~~~~~~~~~~~~~~~~
-
-Spice offers several image compression algorithms, which can be chosen
-on server initiation and dynamically at run-time. Quic is a Spice
-proprietary image compression technology based on the SFALIC
-algorithm. The Lempel-Ziv (LZ) algorithm is another option. Both Quic
-and LZ are local algorithms encoding each image separately. Global LZ
-(GLZ) is another proprietary Spice technology that uses LZ with
-history-based global dictionary. GLZ takes advantage of repeating
-patterns among images to shrink the traffic and save bandwidth, which
-is critical in a WAN environment. Spice also offers an automatic mode
-for compression selection per image, where the choice between LZ/GLZ
-and Quic is heuristically based on image properties. Conceptually,
-synthetic images are better compressed with LZ/GLZ and real images are
-better with Quic.
-
-Video Compression
-~~~~~~~~~~~~~~~~~
-
-Spice uses loss-less compression for images sent to the
-client. However, video streams are handled differently. Spice server
-heuristically identifies video areas and sends them as a video stream
-coded using M-JPEG. This handling saves a lot of traffic, improving
-Spice performance, especially in a WAN environment. However, in some
-circumstances the heuristic behavior might cause low quality images
-(e.g. identifying updated text area as a video stream). Video
-streaming can be chosen on server initiation and dynamically at
-run-time.
-
-Mouse modes
-~~~~~~~~~~~
-
-Spice supports two mouse modes: server and client. The mode can be
-changed dynamically and is negotiated between the client and the
-server.
-
-Server mouse::
-When a user clicks inside the Spice client window, the client mouse is
-captured and set invisible. In this mode, the server controls the
-mouse position on display. However, it might be problematic on WAN or
-on a loaded server, where mouse cursor might have some latency or
-non-responsiveness.
-
-Client mouse::
-Not captured and is used as the effective pointing device. To enable
-client mouse, the VDI host application must register an absolute
-pointing device (e.g. USB tablet in QEMU). This mode is appropriate
-for WAN or for a loaded server, since cursor has smooth motion and
-responsiveness. However, the cursor might lose synchronization
-(position and shape) for a while.
-
-Other Features
-~~~~~~~~~~~~~~
-
-Multiple Monitors::
-any number of monitors is supported
-
-Arbitrary Resolution::
-when using the QXL driver, the resolution of the guest OS will be
-automatically adjusted to the size of the client window.
-
-USB Redirection::
-Spice can be used to redirect USB devices that are plugged in the
-client to the guest OS. This redirection can either be automatic (all
-newly plugged devices are redirected), or manual (the user selects
-which devices (s)he wants to redirect).
-
-Smartcard Redirection::
-data from smartcard that are inserted into the client machine can be
-passed through to the guest OS. The smartcard can be used by both the
-client OS and the guest OS.
-
-Bidirectional Audio::
-Spice supports audio playback and recording. Playback is compressed
-using the CELT algorithm
-
-Lip-sync::
-between video and audio. Available only when video streaming is
-enabled.
-
-Migration::
-switching channel connectivity for supporting server migration
-
-Pixmap and Palette caching::
-image data is cached on the client to avoid sending the same data
-
-Using Spice
-===========
-
-[NOTE]
-I'll use `qemu-kvm` as a name for the executable. If you're using a
-manually built qemu or a qemu without kvm then just replace `qemu-kvm`
-with your own binary. I'll use `host$`, `client$` and `guest$` shell
-prompt notations to distinguish where the command should be the
-command. See section <<glossary>> to be sure that you know
-difference between the host, client and guest. You can ignore the
-difference between guest, client and host if they are all running on
-the same machine.
-
-Running qemu manually
----------------------
-
-*The first thing to do* is to create a guest image. You can use any
-raw device such as a clean logical volume, or an iSCSI lun. You may
-also use a file as the disk image for the guest. I'll use a file
-created by `qemu-img` as a demonstration.
-
-The following command will allocate a 10GB file. See `qemu-img` man
-page for further information.
-
-[source,sh]
-host$ qemu-img create /path/to/xp.img 10G
-
-Now that we created an image, we can now start with image
-population. I assume that you have a locally stored ISO of your
-favourite operating system so you can use it for installation.
-
-[source,sh]
-host$ qemu-kvm -boot order=dc -vga qxl \
- -spice port=3001,disable-ticketing -soundhw ac97 \
- -device virtio-serial -chardev spicevmc,id=vdagent,debug=0,name=vdagent \
- -device virtserialport,chardev=vdagent,name=com.redhat.spice.0 \
- -cdrom /path/to/your.iso /path/to/your.img
-
-
-Let's take a brief look at the qemu options that were used. The option
-`-boot order=dc` specifies that the guest system should try to boot
-from the first cdrom and then fallback to the first disk, `-vga qxl`
-specifies that qemu uses a qxl graphics device.
-
-The Spice `port` option defines what port will be used for
-communication with the client. The Spice option `disable-ticketing` is
-specifying that ticketing (simple authentication method) is not
-used. The virtio and chardev devices are required by the guest agent.
-
-Basic configuration
--------------------
-
-This section will assume that you already have a running QEMU virtual
-machine, and that you are running it either through virt-manager,
-libvirt or through direct QEMU use, and that you want to enable Spice
-support for this virtual machine.
-
-.Using virt-manager
-
-Double-click on the virtual machine you are interested in, go to
-"View/Details". If the left pane has a "Display Spice" entry, then the
-virtual machine already has Spice support, and you can check the
-connection details (port number) by clicking on it. If it has no Spice
-entry, click on "Add Hardware", and add a "Graphics" element of type
-"Spice server". If the host and the client are not the same machine,
-you should check the "Listen on all public network interfaces"
-checkbox, otherwise you don't need to make any changes.
-
-You should also add a QXL video device. It can be done by
-double-clicking on a virtual machine, then by going to View/Details,
-and by clicking on "Add Hardware" if the virtual machine does not have
-a "Video QXL" item in its left pane. From the "Add hardware" dialog,
-you should then create a "Video" device whose model is "QXL".
-
-After stopping and restarting the virtual machine, it should be
-accessible with a Spice client.
-
-You can remove non-Spice display entries and non-QXL video entries
-from the virtual machine configuration.
-
-If you go to "Edit/Preferences/VM Details" in the main virt-manager
-window, you can set Spice graphics type as the default setting for new
-virtual machines.
-
-.Using libvirt
-
-All libvirt examples will assume that the virtual machine to modify is
-`$vmname` and that virsh is using the correct libvirt connection by
-default.
-
-To add Spice support to an existing virtual machine managed by
-libvirt, you need to edit it:
-
-[source,sh]
-host$ virsh edit $vmname
-
-and then add a Spice graphics element:
-
-[source,xml]
-<graphics type='spice'/>
-
-You should also add a QXL video device
-
-[source,xml]
-<video>
- <model type='qxl'/>
-</video>
-
-After stopping and restarting the virtual machine `$vmname`, it should
-be accessible through Spice. You can check the connection parameters
-with:
-
-[source,sh]
-host$ virsh domdisplay $vmname
-
-.Using QEMU
-
-To enable Spice support to your virtual machine, you only need to
-append the following to your QEMU command line:
-
-[source,sh]
--spice port=3001,disable-ticketing
-
-This will setup a Spice session listening on port 3001 exporting your
-virtual machine display.
-
-You can also add a QXL device by appending `-vga qxl` to the command
-line.
-
-Connecting to the guest
------------------------
-
-The following section will show you basic usage of the Spice
-client. The example connection will be related to the qemu instance
-started in the previous sections.
-
-Be aware that the port used for spice communication (port 3001 in our
-case) should not be blocked by firewall. Host `myhost` is referring to
-the machine which is running our qemu instance.
-
-[source,sh]
-client$ remote-viewer spice://myhost:3001
-
-Ticketing
-=========
-
-Spice does not support multiple connections to the same QEMU instance
-by default. So anybody who will connect to the same host and port can
-simply take over your session. You can solve this problem by using
-ticketing.
-
-Ticketing is a simple authentication system which enables you to set
-simple tickets to a VM. Client has to authenticate before the
-connection can be established. See the Spice option `password` in the
-following examples.
-
-Configuration
--------------
-
-.Using virt-manager
-
-To set a Spice password for a virtual machine, go to this machine
-details in virt-manager, and then click on the "Display Spice" item in
-the left pane, and enter the ticket you want to use in the "Password"
-field.
-
-.Using libvirt
-
-All you need to do is to append a `passwd` attribute to the Spice
-graphics node for your virtual machine:
-
-[source,xml]
-<graphics type='spice' passwd='mysecretpassword'/>
-
-.Using QEMU
-
-Adding a ticket with QEMU involves a slight modification of the
-`-spice` parameter used when running QEMU:
-
-[source,sh]
--spice port=3001,password=mysecretpassword
-
-Client
-------
-
-When you start the client as usual, if ticketing was enabled on the
-host, remote-viewer will pop up a window asking for a password before
-starting the Spice session. It won't be established if an incorrect
-ticket was passed to the client.
-
-IMPORTANT: You might have figured out that passing tickets as a
-command-line option isn't very safe. It's not safe as everybody with
-access to the host can read it from the output of `ps(1)`. To prevent
-this, the ticket can be also set by using the QEMU console command
-`spice._set_ticket`.
-
-
-[[agent]]
-Agent
-=====
-
-Agent support allows better integration with the guest. For example,
-it allows copy and paste between the guest and the host OSes, dynamic
-resolution changes when the client window is resized/full-screened,
-file transfers through drag and drop, ...
-
-The agent is a daemon/service running in the guest OS so it must be
-installed if it was not installed by default during the guest OS
-installation. It also relies on a virtio-serial PCI device and a
-dedicated spicevmc char device to achieve communication between the
-guest and the host. These devices must be added to the virtual machine
-for the agent to work in the guest.
-
-Configuration
--------------
-
-.Using virt-manager
-
-The needed devices can be added from the virtual machine
-details. Click on "Add hardware" and then add a "Channel" device with
-type "Spice agent (spicevmc)". This will automatically add the needed
-virtio-serial device in addition to the spicevmc channel.
-
-.Using libvirt
-
-Two distinct devices must be added:
-
-* http://libvirt.org/formatdomain.html#elementsControllers[a virtio serial device]
-* http://libvirt.org/formatdomain.html#elementCharChannel[a spicevmc channel]
-
-[source,xml]
-<devices>
- <controller type='virtio-serial' index='0'/>
- <channel type='spicevmc'>
- <target type='virtio' name='com.redhat.spice.0'/>
- </channel>
-</devices>
-
-.Using QEMU
-
-Adding the following parameters to your QEMU command line will enable
-the needed devices for agent support in the guest OS:
-
-[source,sh]
--device virtio-serial \
--chardev spicevmc,id=vdagent,debug=0,name=vdagent \
--device virtserialport,chardev=vdagent,name=com.redhat.spice.0 \
-
-USB redirection
-===============
-
-With USB redirection, USB devices plugged into the client machine can
-be transparently redirected to the guest OS. This redirection can
-either be automatic (all newly plugged devices are redirected), or
-manual (the user selects which devices (s)he wants to redirect).
-
-For redirection to work, the virtual machine must have an USB2 EHCI
-controller (this implies 3 additional UHCI controllers). It also needs
-to have Spice channels for USB redirection. The number of such
-channels correspond to the number of USB devices that it will be
-possible to redirect at the same time.
-
-Configuration
--------------
-
-.Using virt-manager
-
-Virtual machines created with virt-manager should have a USB
-controller by default. In the virtual machine details, select
-"Controller USB" in the left pane, and make sure its model is set to
-USB2. You can then click on "Add Hardware" and add as many "USB
-Redirection" items as the number of USB devices you want to be able to
-redirect simultaneously.
-
-.Using libvirt
-
-You need to add the needed USB controllers to the libvirt XML (make
-sure there is no pre-existing USB controller in your virtual machine
-XML before doing this), as well as one Spice USB redirection channel
-per device you want to redirect simultaneously.
-
-[source,xml]
-<controller type='usb' index='0' model='ich9-ehci1'/>
-<controller type='usb' index='0' model='ich9-uhci1'>
- <master startport='0'/>
-</controller>
-<controller type='usb' index='0' model='ich9-uhci2'>
- <master startport='2'/>
-</controller>
-<controller type='usb' index='0' model='ich9-uhci3'>
- <master startport='4'/>
-</controller>
-<redirdev bus='usb' type='spicevmc'/>
-<redirdev bus='usb' type='spicevmc'/>
-<redirdev bus='usb' type='spicevmc'/>
-<redirdev bus='usb' type='spicevmc'/>
-
-.Using QEMU
-
-Similarly to libvirt, we need to add EHCI/UHCI controllers to QEMU
-command line, and we also need to add one Spice redirection channel
-per device we want to redirect simultaneously.
-
-[source,sh]
--device ich9-usb-ehci1,id=usb \
--device ich9-usb-uhci1,masterbus=usb.0,firstport=0,multifunction=on \
--device ich9-usb-uhci2,masterbus=usb.0,firstport=2 \
--device ich9-usb-uhci3,masterbus=usb.0,firstport=4 \
--chardev spicevmc,name=usbredir,id=usbredirchardev1 \
--device usb-redir,chardev=usbredirchardev1,id=usbredirdev1 \
--chardev spicevmc,name=usbredir,id=usbredirchardev2 \
--device usb-redir,chardev=usbredirchardev2,id=usbredirdev2 \
--chardev spicevmc,name=usbredir,id=usbredirchardev3 \
--device usb-redir,chardev=usbredirchardev3,id=usbredirdev3
-
-Client
-------
-
-The client needs to have support for USB redirection. In
-remote-viewer, you can select which USB devices to redirect in
-"File/USB device" selection once the Spice connection is
-established. There are also various command line redirection options
-which are described when running remote-viewer with `--help-spice`.
-
-[NOTE]
-You may need additional services running in the client, such as the
-Spice USB Clerk service on Windows.
-
-CAC smartcard redirection
-=========================
-
-Spice has a dedicated channel for smartcard redirection, using
-libcacard, which currently supports limited CAC emulation.
-
-You may consider redirecting your USB card reader instead. This is
-easier to setup but will prevent from sharing the smartcard with both
-the client and the remote simultaneously.
-
-libcacard is actually emulating a simple CAC card, sharing the card
-and its certificates. It can successfully be used with the coolkey
-PKCS#11 module.
-
-Configuration
--------------
-
-.Using virt-manager
-
-In the hardware details, click on "Add Hardware", then select
-"Smartcard". Add a "passthrough" device type.
-
-.Using libvirt
-
-Setup a "passthrough" smartcard of type "spicevmc" on a CCID
-controller:
-
-[source,xml]
-<controller type='ccid' index='0'/>
-<smartcard mode='passthrough' type='spicevmc'>
- <address type='ccid' controller='0' slot='0'/>
-</smartcard>
-
-.Using QEMU
-
-With the qemu command line, you must add a USB CCID device, and a
-"ccid-card-passthru" associated with a "spicevmc" channel with the
-name "smartcard":
-
-[source,sh]
--device usb-ccid -chardev spicevmc,name=smartcard -device ccid-card-passthru,chardev=ccid
-
-Client
-------
-
-In order for the client certificates to be shared with the remote, you
-need a NSS database configured to access the smartcard. Please look
-for instructions on coolkey or NSS setup and make sure you certficates
-can be listed with certutil.
-
-[NOTE]
-Most Spice clients disable smartcard support by default, and
-need `--spice-smartcard` or similar configuration.
-
-Multiple monitor support
-========================
-
-When using Spice, it's possible to use multiple monitors. For that,
-the guest must have multiple QXL devices (for Windows guests), or a
-single QXL device configured to support multiple heads (for Linux
-guests).
-
-Before following the instructions in this section, make sure your
-virtual machine already has a QXL device. If that is not the case,
-refer to this section. Your guest OS will also need to have the QXL
-driver installed or multiple monitor support will not work.
-
-Once your virtual machine is using a QXL device, you don't need to
-make any other change to get multiple heads in a Linux guest. The
-following paragraph will deal with adding multiple QXL devices to get
-multiple monitors in a Windows guest.
-
-Configuration
--------------
-
-.Using virt-manager
-
-To add an additional QXL device for Windows guests, simply go to your
-virtual machine details. Check that you already have a "Video QXL"
-device, if not, click on "Add Hardware", and add a "Video" device with
-model "QXL". This can also work with Linux guests if your are willing
-to configure X.Org to use Xinerama (instead of XRandR).
-
-If you are using a new enough distribution (for example Fedora 19),
-and if your virtual machine already has a QXL device, you should not
-need to make any changes in virt-manager. If you are using an older
-distribution, you can't do the required changes from virt-manager,
-you'll need to edit libvirt XML as described on this blog post.
-
-.Using libvirt
-
-To add an additional QXL device to your virtual machine managed by
-libvirt, you simply need to append a new video node whose model is
-QXL:
-
-[source,xml]
-<video>
- <model type='qxl'/>
-</video>
-<video>
- <model type='qxl'/>
-</video>
-
-
-.Using QEMU
-
-To get a second QXL device in your virtual machine, you need to append
-`-device qxl` to your QEMU command line in addition to the `-vga qxl`
-that is already there:
-
-[source,sh]
--vga qxl -device qxl
-
-Client
-------
-
-You can enable additional displays from the "View -> Displays"
-menu in remote-viewer.
-
-TLS
-===
-
-TLS support allows to encrypt all/some of the channels Spice uses for
-its communication. A separate port is used for the encrypted
-channels. When connecting through a TLS channel, the Spice client will
-verify the certificate sent by the host. It will check that this
-certificate matches the hostname it's connecting, and that this
-certificate is signed by a known certificate authority (CA). This can
-be achieved by either getting the host certificate signed by an
-official CA, or by passing to the client the certificate of the
-authority which signed the host certificate. The latter allows the use
-of self-signed certificates.
-
-Configuration
--------------
-
-.Using virt-manager
-
-IMPORTANT: It's not currently possible to define the CA
-certificate/host certificate to use for the TLS connection using
-virt-manager, see the next section for how to enable this using
-libvirt.
-
-.Using libvirt
-
-The certificate must be specified in libvirtd configuration file in
-'/etc/libvirt/qemu.conf' (or in '~/.config/libvirt/qemu.conf' if you
-are using a session libvirt). See the documentation in this file
-reproduced below:
-
- # Enable use of TLS encryption on the SPICE server.
- #
- # It is necessary to setup CA and issue a server certificate
- # before enabling this.
- #
- spice_tls = 1
-
-
- # Use of TLS requires that x509 certificates be issued. The
- # default it to keep them in /etc/pki/libvirt-spice. This directory
- # must contain
- #
- # ca-cert.pem - the CA master certificate
- # server-cert.pem - the server certificate signed with ca-cert.pem
- # server-key.pem - the server private key
- #
- # This option allows the certificate directory to be changed.
- #
- spice_tls_x509_cert_dir = "/etc/pki/libvirt-spice"
-
-Once the above is done, when the domain is running, you should get
-something like what is below if you are leaving Spice port allocation
-up to libvirt:
-
-****
-TODO proof-read the following section:
-*****
-
-[source,sh]
-host$ virsh domdisplay
-spice://127.0.0.1?tls-port=5901
-host$
-
-This means that the connection is possible both through TLS and
-without any encryption. You can edit the libvirt graphics node if you
-want to change that behaviour and only allow connections through TLS:
-
-[source,xml]
-<graphics type='spice' autoport='yes' defaultMode='secure'/>
-
-.Using QEMU
-
-QEMU expects the certificates to be named the same way as what libvirt
-expects in the previous paragraph. The directory where these
-certificates can be found is specified as options to the `-spice`
-command line parameters:
-
-[source,sh]
--spice port=5900,tls-port=5901,disable-ticketing,x509-dir=/etc/pki/libvirt-spice
-
-Client
-------
-
-We need to change 2 things when starting the client:
-
-* specify the tls port to use
-* specify the CA certificate to use when verifying the host certificate
-
-With remote-viewer, this is done this way:
-
-[source,sh]
-client$ remote-viewer --spice-ca-file=/etc/pki/libvirt-spice/ca-cert.ca spice://myhost?tls-port=5901
-
-Generating self-signed certificates
------------------------------------
-
-The following script can be used to create the various certificates
-needed to use a TLS Spice connection. Make sure to substitute the
-hostname of your Spice host in the subject of the certificate signing
-request.
-
-[source,sh]
--------------------------------------------------
-SERVER_KEY=server-key.pem
-
-# creating a key for our ca
-if [ ! -e ca-key.pem ]; then
- openssl genrsa -des3 -out ca-key.pem 1024
-fi
-# creating a ca
-if [ ! -e ca-cert.pem ]; then
- openssl req -new -x509 -days 1095 -key ca-key.pem -out ca-cert.pem -utf8 -subj "/C=IL/L=Raanana/O=Red Hat/CN=my CA"
-fi
-# create server key
-if [ ! -e $SERVER_KEY ]; then
- openssl genrsa -out $SERVER_KEY 1024
-fi
-# create a certificate signing request (csr)
-if [ ! -e server-key.csr ]; then
- openssl req -new -key $SERVER_KEY -out server-key.csr -utf8 -subj "/C=IL/L=Raanana/O=Red Hat/CN=myhostname.example.com"
-fi
-# signing our server certificate with this ca
-if [ ! -e server-cert.pem ]; then
- openssl x509 -req -days 1095 -in server-key.csr -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
-fi
-
-# now create a key that doesn't require a passphrase
-openssl rsa -in $SERVER_KEY -out $SERVER_KEY.insecure
-mv $SERVER_KEY $SERVER_KEY.secure
-mv $SERVER_KEY.insecure $SERVER_KEY
-
-# show the results (no other effect)
-openssl rsa -noout -text -in $SERVER_KEY
-openssl rsa -noout -text -in ca-key.pem
-openssl req -noout -text -in server-key.csr
-openssl x509 -noout -text -in server-cert.pem
-openssl x509 -noout -text -in ca-cert.pem
--------------------------------------------------
-
-SASL
-====
-
-Spice server and client have support for SASL authentication. When
-using QEMU, '/etc/sasl2/qemu.conf' will be used as a configuration
-file. For testing, you can use the `digest-md5` mechanism, and populate
-a test database using `saslpasswd2 -f /etc/qemu/passwd.db -c
-foo`. These files have to be readable by the QEMU process that will
-handle your VM.
-
-To troubleshoot SASL issues, running `strace -e open` on the QEMU
-process can be a useful first step.
-
-Configuration
--------------
-
-.Using virt-manager
-
-It's currently not possible to enable SASL from virt-manager.
-
-.Using libvirt
-
-SASL support for SPICE has been added to libvirt mid-October 2013 so
-you need a libvirt version that was released after this date. To
-enable SASL, you need to add `spice_sasl = 1` in '/etc/libvirt/qemu.conf'
-for the system libvirtd instance, and to '~/.config/libvirt/qemu.conf'
-for the session libvirtd instance.
-
-.Using QEMU
-
-Using SASL with QEMU involves a slight modification of the `-spice`
-parameter used when running QEMU:
-
-[source,sh]
--spice port=3001,sasl
-
-Client
-------
-
-When you start the client as usual, if SASL was enabled on the host,
-remote-viewer will pop up a window asking for a password before
-starting the Spice session. It won't be established if an incorrect
-ticket was passed to the client.
-
-Folder sharing
-==============
-
-The Spice client can share a folder with the remote guest. By default folder
-sharing is disabled. Use the remote-viewer "File" -> "Preferences" menu
-to enable it. The default shared directory is the XDG Public Share directory
-(ie '~/Public' if you use a regular system). You may specify a different folder
-with `--spice-share-dir` client option.
-
-Configuration
--------------
-
-.Using virt-manager
-
-In the hardware details, click on "Add Hardware", then select
-"Channel". Add a "Spice port" device type with the
-"org.spice-space.webdav.0" name.
-
-.Using libvirt
-
-In order to set up folder sharing, qemu needs to expose a
-`org.spice-space.webdav.0` virtio port, associated with a
-corresponding Spice port:
-
-[source,xml]
-<devices>
- <channel type='spiceport'>
- <source channel='org.spice-space.webdav.0'/>
- <target type='virtio' name='org.spice-space.webdav.0'/>
- </channel>
-</devices>
-
-.Using QEMU
-
-In order to set up folder sharing, qemu needs to expose a
-`org.spice-space.webdav.0` virtio port, associated with a
-corresponding Spice port:
-
-[source,sh]
--device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel1,id=channel1,name=org.spice-space.webdav.0 -chardev spiceport,name=org.spice-space.webdav.0,id=charchannel1
-
-Guest configuration
--------------------
-
-.Windows
-In a Windows guest, you must then install
-http://elmarco.fedorapeople.org/spice-webdavd-x86-0.1.24.msi[spice-webdavd]
-service, and register the drive (by running 'map-drive.bat' from
-'Program Files/Spice webdav').
-
-.Linux
-
-With a Linux guest, you must install the spice-webdavd service (the
-sources are available at https://git.gnome.org/browse/phodav). The
-folder will show up in GNOME Files network places (or Nautilus). It
-can then be mounted and browsed in traditional applications thanks to
-`gvfs-fuse`.
-
-GL acceleration (virgl)
-=======================
-
-OpenGL acceleration is currently local only (it has to go through a Unix socket)
-and it needs guest support. It's currently limited to recent linux
-distributions (for example, as a guest, you need an up to date Fedora 23 +
-updated mesa packages from
-https://copr.fedorainfracloud.org/coprs/kraxel/virgl/[copr:kraxel]).
-
-Host-side, you need qemu 2.6, libvirt 1.3.3 and spice 0.13.1, as well as a 4.4
-Linux kernel and Mesa 11.1.
-
-Client-side, you need spice-gtk 0.31.
-
-Guest-side, you need Mesa 11.1 and a 4.4 Linux kernel.
-
-Configuration
--------------
-
-.Using libvirt
-
-You need to add a virtio-gpu video device to your virtual machine instead of QXL.
-[source,xml]
-<video>
- <model type='virtio' heads='1'>
- <acceleration accel3d='yes'/>
- </model>
-</video>
-
-Then you need to enable OpenGL on your SPICE graphics node:
-[source,xml]
-<graphics type='spice' autoport='no'>
- <gl enable='yes'/>
-</graphics>
-
-You don't need any port/address as they won't be usable with
-GL.
-
-.Using QEMU
-
-You need to add a virtio-gpu device on QEMU command line,
-as well as enable GL with SPICE. port/tls-port/addr arguments
-won't be used in this setup. You need to configure a Unix socket to
-connect to the VM display.
-
-[source,sh]
--device virtio-vga,virgl=on -spice gl=on,unix,addr=/run/user/1000/spice.sock
-
-Connecting to the guest
------------------------
-
-Connecting to the guest when virgl is in use is slightly different
-than usual
-
-.If libvirt is being used
-
-[source,sh]
-client$ virt-viewer -a $vmname
-
-.If a Unix socket has been set on QEMU command line
-
-[source,sh]
-client$ remote-viewer spice+unix:///run/user/1000/spice.sock
-
-QEMU Spice reference
-====================
-
-****
-TODO, incomplete
-****
-
-Command line options
---------------------
-
-They are covered in the
-http://qemu.weilnetz.de/qemu-doc.html#index-g_t_002dspice-58[QEMU
-online documentation]. Basic syntax is `-spice <spice_options>`.
-
-QXL command line options
-------------------------
-
- * ram_size
- * vram_size
- * revision
- * debug
- * guestdebug
- * cmdlog
- * ram_size_mb
- * vram_size_mb
- * vram64_size_mb
- * vgamem_mb
- * surfaces
-
-QEMU console Spice commands
----------------------------
-
- * `set_password spice <password> [keep|disconnect]` Set the spice connection ticket (one time password). An empty password prevents any connection. keep/disconnect indicates what to do if a client is already connected when the command is issued.
- * `expire_password`
- * `client_migrate_info`
- * `info spice` Show current spice state
-
-[[guest-additions]]
-Spice guest additions
-=====================
-
-While you will be able to remotely access your virtual machine through
-Spice without making any change to the virtual machine configuration,
-you can get better integration if you tweak it specially for Spice.
-
-If your virtual machine has a QXL video device and you install the
-corrresponding guest driver, your guest will support higher
-resolutions, multiple monitors, resizing to arbitrary resolutions, ...
-
-Installing the Spice vdagent in your guest will let you copy and paste
-between your guest and client OSes, to drag and drop files between the
-2 OSes, ... In order for the agent to work, your virtual machine must
-have a virtio serial device (and the corresponding guest drivers) as
-well as a Spice spicevmc channel.
-
-Windows guest
--------------
-
-The recommended way of getting all the needed drivers installed is to
-use the all-in-one Spice guest tools installer which can be found on
-http://spice-space.org/download/windows/spice-guest-tools/[spice-space.org].
-
-To get USB redirection working on Windows, you need to install
-http://www.spice-space.org/download/windows/usbdk/[UsbDk]
-
-If you want to manually install them, the QXL driver can be downloaded
-from http://spice-space.org/download/windows/qxl/[this location] ,
-agent builds can be found
-http://spice-space.org/download/windows/vdagent/[here]. You also need
-the vioserial driver which is distributed with the other
-https://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/[
-virtio-win drivers].
-
-Installation
-============
-
-Installing Spice on RHEL or Fedora
-----------------------------------
-
-Be aware that RHEL has no builds of qemu/spice-server for i386, only
-x86_64 builds are available. RHEL >=6 and Fedora >=13
-
-[source,sh]
-yum install qemu-kvm virt-viewer
-
-The package spice-protocol will be downloaded automatically as a
-dependency of package kvm.
-
-RHEVM Users
-~~~~~~~~~~~
-
-oVirt/RHEVM users could be also interested in the spice-xpi package as
-it allows you to execute spice-client directly from the oVirt/RHEVM
-UserPortal.
-
-[source,sh]
-yum install spice-xpi
-
-General build instructions
---------------------------
-
-This section is for distributions that don't have Spice packages in
-their repositories. It will show you step by step how to build the
-required Spice components.
-
-Client requirements
-~~~~~~~~~~~~~~~~~~~
-
-See the http://cgit.freedesktop.org/spice/spice-gtk/tree/README[README
-file in spice-gtk] for the list of dependencies.
-
-Host requirements
-~~~~~~~~~~~~~~~~~
-
- * KVM supported by kernel (It should work also without KVM, but it's
- not being tested as most Linux distrubitions already support KVM.)
-
-
-Guest requirements
-~~~~~~~~~~~~~~~~~~
-
-.Linux guest
-
-spice-vdagent requires virtio-serial support to be enabled. This is
-described in the chapter <<agent>>. Guest should have installed qxl
-driver (xorg-x11-drv-qxl on Fedora and RHEL).
-
-.Windows guest
-
-Drivers for QXL and drivers for virtio-serial require Win XP SP3.
-
-Building
-~~~~~~~~
-
-The environment variable `$BUILD_ROOT` will point to a directory with
-stored sources and will be used during the whole build process. The
-variable `$INST_ROOT` will point to a directory in which Spice will be
-installed.
-
-IMPORTANT: These instructions may be outdated. Feel free to ask on the
-Spice mailing list if you need help building from source.
-
-[source,sh]
--------------------------------------------------
-export BUILD_ROOT=/tmp/spice; mkdir $BUILD_ROOT
-export INST_ROOT="/opt/spice"; mkdir $INST_ROOT
-export PKG_CONFIG_PATH=$INST_ROOT/lib/pkgconfig:$PKG_CONFIG_PATH
-
-cd $BUILD_ROOT
-git clone git://cgit.freedesktop.org/spice/spice
-cd $BUILD_ROOT/spice
-./configure --prefix=$INST_ROOT
-make
-make install
-
-cd $BUILD_ROOT
-git clone git://git.qemu.org/qemu.git
-cd $BUILD_ROOT/qemu
-./configure --prefix=$INST_ROOT --target-list=x86_64-softmmu --enable-spice
-make
-make install
--------------------------------------------------
-
-Setting up PATH
-~~~~~~~~~~~~~~~
-
-Last steps before starting with Spice are to set proper `PATH`
-variable. For example RHEL is using /usr/libexec as directory for
-qemu-kvm binaries. The following setup should be suitable for qemu and
-Spice built according to the instructions in this chapter.
-
-[source,sh]
--------------------------------------------------
-echo "export PATH=$PATH:$INST_ROOT/bin" >> ~/.bashrc
-source ~/.bashrc
--------------------------------------------------
-
-You should now be able to access the qemu-system-x86_64 Spice binary.
-
-:numbered!:
-
-Debugging
-=========
-
-Server side
------------
-
-If the virtual machine was started using QEMU directly, SPICE server logs will be output to
-your console stdout.
-When using libvirt, logs are located in `/var/log/libvirt/qemu/` for the qemu
-system instance (`qemu:///system`), and in `~/.cache/libvirt/qemu/log` for the
-qemu session instance (`qemu:///session`).
-
-Client side
------------
-
-remote-viewer can be started with `SPICE_DEBUG=1` in the environment, or with
-`--spice-debug` in order to get it to output more logs on stdout. `SPICE_DEBUG`
-should work with any application using spice-gtk (virt-manager, gnome-boxes, ...).
-
-Guest side
-----------
-
-.QXL KMS driver
-
-On recent Linux kernels using the QXL kms driver, booting the kernel with the
-`drm.debug=0xf` parameter. `journalctl -k`/`dmesg` will then contain debug
-logs for the QXL kms driver. This can also be changed at runtime by echo'ing
-this value to `/sys/module/drm/parameters/debug`.
-
-
-.qxl.guestdebug QEMU parameter
-
-It's also possible to get some host-side debugging logs from the guest QXL driver.
-The driver reads a guestdebug parameter from the rom, which can be set when starting
-the VM. Only the Windows QXL driver is using this feature, see `qxl.cmdlog` for
-something guest-agnostic. This can be enabled with `-global
-qxl-vga.guestdebug=3`, or `-global qxl.guestdebug=3` for secondary devices.
-
-The corresponding libvirt XML is:
-
-[source,xml]
--------------------------------------------------
-<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
- ....
- <qemu:commandline>
- <qemu:arg value='-global'/>
- <qemu:arg value='qxl-vga.guestdebug=3'/>
- </qemu:commandline>
-</domain>
--------------------------------------------------
-
-(don't forget to add the
-`xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'` attribute to the
-toplevel `<domain>` node)
-
-
-You can go up to 12 (or more, look for DEBUG_PRINT in the driver), you get really a lot of debug information. Interesting values are:
-
- * 3 - will give you all the highlevel commands (DrvCopyBits, DrvBitBlt, etc.)
- * 6 - will also show QXLGetBitMap
- * 11 - will show caching of images (this is a driver cache, not to be confused with the cache shared between server and client).
-
-
-.qxl.cmdlog QEMU parameter
-
-This will dump all the commands passing through the ringbuffer on the device
-side. It is driver and hence guest agnostic. This can be enabled with
-`-global qxl-vga.cmdlog=1`, or `-global qxl.cmdlog=1` for secondary devices.
-See the section above for the libvirt XML to use.
-
-
-Agent
-~~~~~
-
-On Linux, `journalctl -t spice-vdagentd -t spice-vdagent` will display the agent log messages.
-spice-vdagent can also be restarted by hand with the `-d` argument in order to display more logs.
-
-On Windows, the agent logs can be found in `C:\WINDOWS\TEMP\VDAGENT.LOG` and
-`C:\WINDOWS\TEMP\VDSERVICE.LOG`
-
-
-Recording/replaying SPICE server traffic
-----------------------------------------
-
-Since spice-server 0.12.6, it's possible to record display traffic sent by the
-SPICE server in order to replay it afterwards for a client without needing to
-start a VM. This is achieved by setting the environment variable
-`SPICE_WORKER_RECORD_FILENAME` to the filename to write the traffic to before starting
-QEMU.
-
-Once the recording session is done, the `spice-server-replay` tool can be used
-to replay the previously recorded SPICE session, for example:
-
-[source,sh]
--------------------------------------------------
-spice-server-replay -p 5900 -c "remote-viewer spice://localhost:5900" recorded-session.spice
--------------------------------------------------
-
-
-[appendix]
-Manual authors
-==============
-
-The following people have contributed to this manual:
-
-Arnon Gilboa +
-Christophe Fergeau +
-Lubos Kocman +
-Marc-André Lureau +
-Yaniv Kamay
-
-[[glossary]]
-Glossary
-========
-
-[glossary]
-Host::
-Host is a machine running an instance of qemu-kvm.
-
-Guest::
-Guest is a virtual machine hosted on the host which will be accessed with a Spice client.
-
-Client::
-Client is referring to a system running the Spice client (the recommended one is virt-viewer).
diff --git a/content/pages/support.rst b/content/pages/support.rst
deleted file mode 100644
index 25e6999..0000000
--- a/content/pages/support.rst
+++ /dev/null
@@ -1,58 +0,0 @@
-Support
-###############################################################################
-
-:slug: support
-:modified: 2015-10-20 10:20
-
-.. _Spice User Manual: spice-user-manual.html
-.. _spice for newbies: {filename}/static/docs/spice_for_newbies.pdf
-.. _Spice list archive: http://lists.freedesktop.org/archives/spice-devel/
-.. _opened bugs: https://bugs.freedesktop.org/describecomponents.cgi?product=Spice
-.. _bug-tracker: https://bugs.freedesktop.org/enter_bug.cgi?product=Spice
-.. _feature-tracker: https://bugs.freedesktop.org/enter_bug.cgi?product=Spice&component=RFE
-.. _Features: features.html
-.. _search: https://bugs.freedesktop.org/query.cgi?product=Spice
-.. _opened RFEs: https://bugs.freedesktop.org/buglist.cgi?component=RFE&list_id=560478&product=Spice&resolution=---
-
-Using Spice for the first time?
-+++++++++++++++++++++++++++++++
-
-`Spice user manual`_ provides all the information on how to get, build, install and use Spice. You can also read `Spice for newbies`_ in case you want to have a better understanding about Spice architecture and features.
-
-Need help using Spice?
-++++++++++++++++++++++
-
-Many questions can be answered in the `Spice user manual`_ and the `Spice list archive`_. If you can't find the answer there, post your question to spice-devel@lists.freedesktop.org. Be sure to detail your issue so that we can offer the best response.
-
-Have some feedback to share?
-++++++++++++++++++++++++++++
-Spice project would like to have your feedback - either negative or positive. Please post your feedback to spice-devel@lists.freedesktop.org.
-
-Found a bug? Want to help and report?
-+++++++++++++++++++++++++++++++++++++
-1. Look at `opened bugs`_ to see whether it is a known bug.
-
- - There is no need to open a new bug in case it is a known bug, but optionally you can add your comment to the existing bug report or add yourself to the CC list.
- - In case you are not using the latest version of Spice, upgrade and see if it was resolved.
-
-2. Open a new bug report in Spice `bug-tracker`_ that follow these guidelines:
-
- - Write clear and detailed description of the bug.
- - Provide instructions on how to reproduce the bug.
- - Specify the relevant components and their versions.
- - Attach relevant logs.
-
- - Spice server send its log messages to stdout, so you will need to redirect QEMU stdout to a file in order to have a server log file.
- - Linux Spice client log is /tmp/spicec.log, Windows Spice client log is in %temp%\spicec.log.
-
- - Provide the necessary information:
-
- - Crash - provide the crash message.
- - Client bug - specify the OS type and version.
- - Wrong rendering - attach a screen shot. (You will have to take client screen shot so make sure that the cursor is not on Spice window area while taking the screen shot).
-
-Your help for tracking down the bug is very important, so please try to be as cooperative as possible and help us resolve the bug.
-
-Like to have a new feature?
-+++++++++++++++++++++++++++
-First look at Spice `opened RFEs`_ or `search`_ to see whether it was already requested. In addition, refer to the Features_ page. If it was not requested you can submit your request in Spice `feature-tracker`_ using a clear and detailed description.
diff --git a/content/pages/xspice.rst b/content/pages/xspice.rst
deleted file mode 100644
index bcb79c7..0000000
--- a/content/pages/xspice.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-Xspice
-###############################################################################
-
-:slug: xspice
-:modified: 2016-01-05 10:28
-
-.. _Download: download.html
-
-What is it
-+++++++++++
-
-A standalone server that is both an X server and a Spice server. Iow, you get a new DISPLAY to launch X clients against, and you can view and interact with them via a spice client.
-
-Status
-++++++
-
-Released, now part of xf86-video-qxl. Download_
-
-Known Problems
-++++++++++++++
-
-!!This page is not up to date!!
-
-Bugs for Xspice are reported against the xorg-x11-drv-qxl component due to technically the Xspice server being part of the xf86-video-qxl driver tarball, and should all have Xspice in the title: https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-Lock when last X client leaves
-++++++++++++++++++++++++++++++
-
-Bug in handling server reset. Not yet fixed. Workaround: run with xspice "-noreset" flag (it is passed to Xorg and does just what it says - no reset when last client leaves. Meaning you have to explicitly kill the Xorg, by Ctrl-C or a signal).
-
-Performance issues
-++++++++++++++++++
-
-- takes way too much memory (256MB)
-- some stuff is just too damn slow - like lines and circles in gtkperf (and hence in anything else) (this is actually the same in a vm - it's a problem of the driver / device / architecture)
-- cursor is only server side (i.e. cursor channel not really used? not sure)