Merge branch 'doc' of https://github.com/CendioOssman/tigervnc
diff --git a/common/rfb/CSecurityTLS.cxx b/common/rfb/CSecurityTLS.cxx
index a8abeeb..30de37e 100644
--- a/common/rfb/CSecurityTLS.cxx
+++ b/common/rfb/CSecurityTLS.cxx
@@ -63,8 +63,8 @@
using namespace rfb;
-StringParameter CSecurityTLS::x509ca("x509ca", "X509 CA certificate", "", ConfViewer);
-StringParameter CSecurityTLS::x509crl("x509crl", "X509 CRL file", "", ConfViewer);
+StringParameter CSecurityTLS::X509CA("X509CA", "X509 CA certificate", "", ConfViewer);
+StringParameter CSecurityTLS::X509CRL("X509CRL", "X509 CRL file", "", ConfViewer);
static LogWriter vlog("TLS");
static LogWriter vlog_raw("RawTLS");
@@ -94,8 +94,8 @@
CSecurityTLS::CSecurityTLS(bool _anon) : session(0), anon_cred(0),
anon(_anon), fis(0), fos(0)
{
- cafile = x509ca.getData();
- crlfile = x509crl.getData();
+ cafile = X509CA.getData();
+ crlfile = X509CRL.getData();
}
void CSecurityTLS::setDefaults()
@@ -115,9 +115,9 @@
delete [] homeDir;
if (!fileexists(caDefault.buf))
- x509ca.setDefaultStr(strdup(caDefault.buf));
+ X509CA.setDefaultStr(strdup(caDefault.buf));
if (!fileexists(crlDefault.buf))
- x509crl.setDefaultStr(strdup(crlDefault.buf));
+ X509CRL.setDefaultStr(strdup(crlDefault.buf));
}
void CSecurityTLS::shutdown(bool needbye)
diff --git a/common/rfb/CSecurityTLS.h b/common/rfb/CSecurityTLS.h
index c19307e..f5f10e4 100644
--- a/common/rfb/CSecurityTLS.h
+++ b/common/rfb/CSecurityTLS.h
@@ -50,8 +50,8 @@
{ return anon ? "TLS Encryption without VncAuth" : "X509 Encryption without VncAuth"; }
static void setDefaults();
- static StringParameter x509ca;
- static StringParameter x509crl;
+ static StringParameter X509CA;
+ static StringParameter X509CRL;
static UserMsgBox *msg;
protected:
diff --git a/common/rfb/ConnParams.cxx b/common/rfb/ConnParams.cxx
index cc0a768..615f49a 100644
--- a/common/rfb/ConnParams.cxx
+++ b/common/rfb/ConnParams.cxx
@@ -22,7 +22,6 @@
#include <rdr/OutStream.h>
#include <rfb/Exception.h>
#include <rfb/encodings.h>
-#include <rfb/EncodeManager.h>
#include <rfb/ConnParams.h>
#include <rfb/util.h>
@@ -37,8 +36,7 @@
supportsSetDesktopSize(false), supportsFence(false),
supportsContinuousUpdates(false),
compressLevel(2), qualityLevel(-1), fineQualityLevel(-1),
- subsampling(subsampleUndefined), name_(0),
- preferredEncoding_(encodingRaw), verStrPos(0)
+ subsampling(subsampleUndefined), name_(0), verStrPos(0)
{
setName("");
}
@@ -118,7 +116,6 @@
qualityLevel = -1;
fineQualityLevel = -1;
subsampling = subsampleUndefined;
- preferredEncoding_ = encodingRaw;
encodings_.clear();
encodings_.insert(encodingRaw);
@@ -184,9 +181,6 @@
encodings[i] <= pseudoEncodingFineQualityLevel100)
fineQualityLevel = encodings[i] - pseudoEncodingFineQualityLevel0;
- if (EncodeManager::supported(encodings[i]))
- preferredEncoding_ = encodings[i];
-
if (encodings[i] > 0)
encodings_.insert(encodings[i]);
}
diff --git a/common/rfb/ConnParams.h b/common/rfb/ConnParams.h
index 625f265..0b8a89c 100644
--- a/common/rfb/ConnParams.h
+++ b/common/rfb/ConnParams.h
@@ -80,7 +80,6 @@
const Cursor& cursor() { return cursor_; }
void setCursor(const Cursor& cursor);
- rdr::S32 preferredEncoding() { return preferredEncoding_; }
bool supportsEncoding(rdr::S32 encoding);
void setEncodings(int nEncodings, const rdr::S32* encodings);
@@ -108,7 +107,6 @@
PixelFormat pf_;
char* name_;
Cursor cursor_;
- rdr::S32 preferredEncoding_;
std::set<rdr::S32> encodings_;
char verStr[13];
int verStrPos;
diff --git a/common/rfb/EncodeManager.cxx b/common/rfb/EncodeManager.cxx
index 1bd00c7..ca60da4 100644
--- a/common/rfb/EncodeManager.cxx
+++ b/common/rfb/EncodeManager.cxx
@@ -164,7 +164,7 @@
indexed = indexedRLE = fullColour = encoderRaw;
// Try to respect the client's wishes
- preferred = conn->cp.preferredEncoding();
+ preferred = conn->getPreferredEncoding();
switch (preferred) {
case encodingRRE:
// Horrible for anything high frequency and/or lots of colours
diff --git a/common/rfb/SConnection.cxx b/common/rfb/SConnection.cxx
index 48acf0a..eeaeafe 100644
--- a/common/rfb/SConnection.cxx
+++ b/common/rfb/SConnection.cxx
@@ -26,6 +26,8 @@
#include <rfb/SMsgWriter.h>
#include <rfb/SConnection.h>
#include <rfb/ServerCore.h>
+#include <rfb/encodings.h>
+#include <rfb/EncodeManager.h>
#include <rfb/LogWriter.h>
@@ -47,7 +49,8 @@
: readyForSetColourMapEntries(false),
is(0), os(0), reader_(0), writer_(0),
security(0), ssecurity(0), state_(RFBSTATE_UNINITIALISED),
- reverseConnection(reverseConnection_)
+ reverseConnection(reverseConnection_),
+ preferredEncoding(encodingRaw)
{
defaultMajorVersion = 3;
defaultMinorVersion = 8;
@@ -264,6 +267,21 @@
os->flush();
}
+void SConnection::setEncodings(int nEncodings, rdr::S32* encodings)
+{
+ int i;
+
+ preferredEncoding = encodingRaw;
+ for (i = 0;i < nEncodings;i++) {
+ if (EncodeManager::supported(encodings[i])) {
+ preferredEncoding = encodings[i];
+ break;
+ }
+ }
+
+ SMsgHandler::setEncodings(nEncodings, encodings);
+}
+
void SConnection::versionReceived()
{
}
diff --git a/common/rfb/SConnection.h b/common/rfb/SConnection.h
index b6ff7cd..7718f4c 100644
--- a/common/rfb/SConnection.h
+++ b/common/rfb/SConnection.h
@@ -70,6 +70,11 @@
void approveConnection(bool accept, const char* reason=0);
+ // Overridden from SMsgHandler
+
+ virtual void setEncodings(int nEncodings, rdr::S32* encodings);
+
+
// Methods to be overridden in a derived class
// versionReceived() indicates that the version number has just been read
@@ -173,6 +178,8 @@
stateEnum state() { return state_; }
+ rdr::S32 getPreferredEncoding() { return preferredEncoding; }
+
protected:
void setState(stateEnum s) { state_ = s; }
void writeFakeColourMap(void);
@@ -194,6 +201,7 @@
SSecurity* ssecurity;
stateEnum state_;
bool reverseConnection;
+ rdr::S32 preferredEncoding;
};
}
#endif
diff --git a/common/rfb/SSecurityTLS.cxx b/common/rfb/SSecurityTLS.cxx
index 7a1a41e..a40ec13 100644
--- a/common/rfb/SSecurityTLS.cxx
+++ b/common/rfb/SSecurityTLS.cxx
@@ -39,10 +39,10 @@
using namespace rfb;
StringParameter SSecurityTLS::X509_CertFile
-("x509cert", "specifies path to the x509 certificate in PEM format", "", ConfServer);
+("X509Cert", "Path to the X509 certificate in PEM format", "", ConfServer);
StringParameter SSecurityTLS::X509_KeyFile
-("x509key", "specifies path to the key of the x509 certificate in PEM format", "", ConfServer);
+("X509Key", "Path to the key of the X509 certificate in PEM format", "", ConfServer);
static LogWriter vlog("TLS");
static LogWriter vlog_raw("RawTLS");
diff --git a/common/rfb/SecurityClient.cxx b/common/rfb/SecurityClient.cxx
index 4173c74..fe34712 100644
--- a/common/rfb/SecurityClient.cxx
+++ b/common/rfb/SecurityClient.cxx
@@ -43,7 +43,11 @@
StringParameter SecurityClient::secTypes
("SecurityTypes",
- "Specify which security scheme to use (None, VncAuth)",
+ "Specify which security scheme to use (None, VncAuth, Plain"
+#ifdef HAVE_GNUTLS
+ ", TLSNone, TLSVnc, TLSPlain, X509None, X509Vnc, X509Plain"
+#endif
+ ")",
#ifdef HAVE_GNUTLS
"X509Plain,TLSPlain,X509Vnc,TLSVnc,X509None,TLSNone,VncAuth,None",
#else
diff --git a/common/rfb/SecurityServer.cxx b/common/rfb/SecurityServer.cxx
index 76ece77..5bd7b2c 100644
--- a/common/rfb/SecurityServer.cxx
+++ b/common/rfb/SecurityServer.cxx
@@ -37,7 +37,11 @@
StringParameter SecurityServer::secTypes
("SecurityTypes",
- "Specify which security scheme to use (None, VncAuth)",
+ "Specify which security scheme to use (None, VncAuth, Plain"
+#ifdef HAVE_GNUTLS
+ ", TLSNone, TLSVnc, TLSPlain, X509None, X509Vnc, X509Plain"
+#endif
+ ")",
#ifdef HAVE_GNUTLS
"VncAuth,TLSVnc",
#else
diff --git a/common/rfb/UnixPasswordValidator.cxx b/common/rfb/UnixPasswordValidator.cxx
index 5a3996d..d096079 100644
--- a/common/rfb/UnixPasswordValidator.cxx
+++ b/common/rfb/UnixPasswordValidator.cxx
@@ -31,8 +31,10 @@
using namespace rfb;
-static StringParameter pam_service
- ("pam_service", "service name for pam password validation", "vnc");
+static StringParameter pamService
+ ("PAMService", "Service name for PAM password validation", "vnc");
+AliasParameter pam_service("pam_service", "Alias for PAMService",
+ &pamService);
int do_pam_auth(const char *service, const char *username,
const char *password);
@@ -42,7 +44,7 @@
const char *password)
{
#ifdef HAVE_PAM
- CharArray service(strDup(pam_service.getData()));
+ CharArray service(strDup(pamService.getData()));
return do_pam_auth(service.buf, username, password);
#else
throw AuthFailureException("PAM not supported");
diff --git a/doc/TODO b/doc/TODO
deleted file mode 100644
index 2069e69..0000000
--- a/doc/TODO
+++ /dev/null
@@ -1,31 +0,0 @@
-
-* When running the UNIX vncviewer on a host with a different byte
- order than the Xserver, the colors are incorrect. This happens when
- using color depth 24 ("cutZeros"). Basically, the problem is that
- the RGB24_TO_PIXEL32 macro is wrong; we need to swap endianess
- in this situation. There seems to be something wrong with the local
- cursor handling as well.
-
-* Change version strings.
-
-* Tight encoding support
-
-* Update vncviewer.man: many parameters are currently not documented.
-
-* When manually changing color level and running against an old server
- (Xvnc from TightVNC 1.2.9, for example), the user should perhaps be
- warned that vncviewer might crash.
-
-* Document the Tight protocol extensions in a text file.
-
-* All other features from the TightVNC 1.3 series: Filetransfer etc
-
-* Consider adding the toolbar from http://lars.werner.no/vnc/.
-
-* Implement support for rfbEncodingXCursor. When this is finished, it
- should be safe to allow dynamic pixel format changes again, as long
- as we only orders new pixel formats after recieving a framebuffer
- update with real pixel data.
-
-* The vncviewer password dialog should probably display the server
- name in the password dialog windows title. Wish from Gaetano Giunta.
diff --git a/doc/dev/make_release b/doc/dev/make_release
deleted file mode 100644
index 13956f8..0000000
--- a/doc/dev/make_release
+++ /dev/null
@@ -1,8 +0,0 @@
-Quick overview of steps to make a release.
-
-1. tag the release
-2. go to the correct tags/<tag> directory and run `svn export . tigervnc-<version>`
-3. pack the exported source as ".tar.gz" archive
-4. upload the tarball and binaries built from it to Sourceforge
-5. fill the release_announcement template
-6. send announcement to tigervnc-announce
diff --git a/doc/dev/release_announcement b/doc/dev/release_announcement
deleted file mode 100644
index e867f4e..0000000
--- a/doc/dev/release_announcement
+++ /dev/null
@@ -1,25 +0,0 @@
-TigerVNC <version> is now available.
-
-TigerVNC <version> is the <*1> of TigerVNC <branch>.
-
-Highlights of TigerVNC <version>:
-- this version is better
-- this version is really better
-
-Changes since <previous version>:
-[Bugfix] Bug is now fixed.
-[Enhancement] Enhancement has been added.
-[Documentation] Yes, we really updated documentation.
-
-TigerVNC <version> binaries and source can be downloaded from
- <link>
-
-Please report bugs to https://sourceforge.net/tracker/?group_id=254363&atid=1126848.
-
----
-TigerVNC team, http://www.tigervnc.com
-
-
-
-*1 - first/second alpha/beta release; first/second release candidate; stable release
-
diff --git a/doc/dev/version_numbers b/doc/dev/version_numbers
deleted file mode 100644
index 543aba0..0000000
--- a/doc/dev/version_numbers
+++ /dev/null
@@ -1,6 +0,0 @@
-Files written below contain release numbers which should be changed during
-release process.
-
-CMakeLists.txt
-java/CMakeLists.txt
-unix/xserver/hw/vnc/xvnc.cc
diff --git a/doc/ft-protocol-problems.txt b/doc/ft-protocol-problems.txt
deleted file mode 100644
index b0198fb..0000000
--- a/doc/ft-protocol-problems.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-From: Peter Rosin <peda@lysator.liu.se>
-To: vnc-tight-list@lists.sourceforge.net
-Date: Thu, 25 Sep 2008 10:21:07 +0200
-Message-ID: <48DB49F3.6030609@lysator.liu.se>
-Subject: Problems with timestamps in file transfers.
-
-Hi list!
-
-I'm writing some VNC client software that supports the the file
-transfer extensions described in the rfbtight.tex document in
-the svn repo. However, when I communicate with a TightVNC server
-version 1.3.9 (WinVNC.exe) I get strange data for the modification
-times of the files.
-
-Specifically, in the FileListData message, I have understood
-that directories are encoded as <size ~0, mod-time 0>. For
-regular files I get the expected size, but the mod-time is
-always 0xffffffe7 (-25) which seem totally bogus.
-
-The next problem is more disturbing since you will get interop
-problems if you fix it. In the last FileDownloadData message
-(the one with raw-length = compressed-length = 0), the mod-time
-is transmitted in little-endian byte order (at least my TightVNC
-server does so). Since it's more problems fixing this than
-documenting it, I think this endianness issue should be recorded
-in the rfbtight.tex file.
-
-(However, when you use FileUploadData you should transmit
- the mod-time in the expected big-endian network byte order.)
-
-Cheers,
-Peter
-
-==================================================================
-
diff --git a/doc/keyboard-test.txt b/doc/keyboard-test.txt
new file mode 100644
index 0000000..2d2b2b6
--- /dev/null
+++ b/doc/keyboard-test.txt
@@ -0,0 +1,107 @@
+Test protocol for keyboard handling
+===================================
+
+Platform specific tests/issues are marked with [].
+
+Client
+------
+
+- Normal symbols:
+
+ - ASCII characters
+ - Latin 1 character
+ - Unicode BMP characters
+ - Unicode non-BMP characters
+
+- Dead keys:
+
+ - Grave
+ - Acute
+ - Circumflex
+ - Tilde
+ - Macron
+ - Breve
+ - Dot above
+ - Diaeresis
+ - Ring above
+ - Double acute
+ - Caron
+ - Cedilla
+ - Ogonek
+ - Ypogegrammeni
+ - Katakana voiced mark
+ - Katakana semi-voiced mark
+ - Dialytika tonos
+ - FIXME: Many more that we currently probably don't support
+
+ - No composition on client
+
+- Modifiers:
+
+ - CapsLock, NumLock (sent but ignored by server)
+ - Shift, Ctrl
+ - Alt, AltGr, Super [Win, X11] (FIXME: AltGr broken on Win)
+ - Left/right identification (FIXME: broken for Shift on Win)
+ - CmdL => AltL, CmdR => SuperL, AltL => ModeSwitch, AltR => Level3Shift [Mac]
+ - Meta and Hyper sends Super [X11]
+
+ - CapsLock, Shift and AltGr affect symbol lookup
+ - NumLock affects symbol lookup [Win, X11]
+ - Ctrl does not affect symbol lookup
+ - Shift inverts NumLock behaviour [X11]
+ - Shift turns NumLock off, but not on [Win] (FIXME: fake Shifts also sent)
+ - CtrlL+AltR fake release [Win]
+ - Ctrl+Alt+any (note behaviour above though)
+ - Ctrl+AltGr+any (FIXME: broken on Win)
+ - "Shift press, A press, Shift release, A release" should not send "a release"
+
+- Numpad:
+
+ - Numpad specific symbols are sent
+ - Affected by NumLock
+ - Decimal key should send Decimal for layouts with . as a symbol, and
+ Separator for layouts with , as a symbol
+
+- Multimedia keys:
+
+ - Back, Forward, Refresh, Stop
+ - HomePage, Search, Favourites
+ - Mail, Calculator
+ - Volume up, down, mute
+ - Media next, previous, stop, play
+ - Sleep
+ - FIXME: probably more keys exist
+
+- Non-character keys:
+
+ - F1-F24
+ - Tab, Space, Backspace, Return
+ - LeftTab sends Tab
+ - Esc, PrntScrn, ScrollLock, Pause
+ - Insert, Delete, Home, End, PageUp, PageDown
+ - Arrow keys
+ - Menu
+
+- French layout (AZERTY and inverted shift behaviour for many keys)
+
+- Key repeat should not send repeated release events
+
+- Keys are released on loss of focus
+
+- Local layout changes are respected
+
+- Local input methods are disabled/enabled with focus
+
+- System keys should be grabbed in full screen
+
+ The exact keys depends on the system and configuration, but it
+ is usually variants of these:
+
+ - Alt+Tab
+ - Super (and Super+other)
+ - Multimedia keys
+ - Ctrl+Alt+Delete
+ - Ctrl+Esc
+ - F8-F12
+
+- Virtual keyboard (as much of the above as is possible)
diff --git a/doc/realvnc-internals.txt b/doc/realvnc-internals.txt
deleted file mode 100644
index 16975ac..0000000
--- a/doc/realvnc-internals.txt
+++ /dev/null
@@ -1,389 +0,0 @@
-
-The RealVNC code base is mostly undocumented. Rather than adding
-comments to the actual source files, documentation is keept in
-separate files in this directory. This is done because we want to make
-as few changes to the RealVNC sources as possible.
-
-
-
-Files
-=====
-(t) means only in TigerVNC.
-
-Name Server/Client/Both Windows/UNIX/Both
--------------------------------------------------------------------------
-Xregion/Xregion.h
-Xregion/region.h
-jpeg/jchuff.h B(t) B(t)
-jpeg/jconfig.h B(t) B(t)
-jpeg/jdct.h B(t) B(t)
-jpeg/jdhuff.h B(t) B(t)
-jpeg/jerror.h B(t) B(t)
-jpeg/jinclude.h B(t) B(t)
-jpeg/jmemsys.h B(t) B(t)
-jpeg/jmorecfg.h B(t) B(t)
-jpeg/jpegint.h B(t) B(t)
-jpeg/jpeglib.h B(t) B(t)
-jpeg/jversion.h B(t) B(t)
-logmessages/messages.h
-network/Socket.h
-network/TcpSocket.cxx
-network/TcpSocket.h
-network/msvcwarning.h
-
-Name Server/Client/Both Windows/UNIX/Both
--------------------------------------------------------------------------
-rdr/Exception.cxx
-rdr/Exception.h
-rdr/FdInStream.cxx
-rdr/FdInStream.h
-rdr/FdOutStream.cxx
-rdr/FdOutStream.h
-rdr/FixedMemOutStream.h
-rdr/HexInStream.cxx
-rdr/HexInStream.h
-rdr/HexOutStream.cxx
-rdr/HexOutStream.h
-rdr/InStream.cxx
-rdr/InStream.h
-rdr/MemInStream.h
-rdr/MemOutStream.h
-rdr/NullOutStream.cxx
-rdr/NullOutStream.h
-rdr/OutStream.h
-rdr/RandomStream.cxx
-rdr/RandomStream.h
-rdr/SubstitutingInStream.h
-rdr/ZlibInStream.cxx
-rdr/ZlibInStream.h
-rdr/ZlibOutStream.cxx
-rdr/ZlibOutStream.h
-rdr/msvcwarning.h
-rdr/types.h
-
-Name Server/Client/Both Windows/UNIX/Both
--------------------------------------------------------------------------
-rfb/win32/Threading_win32.cxx
-rfb/win32/Threading_win32.h
-rfb/win32/msvcwarning.h
-rfb/win32/util_win32.h
-rfb/Blacklist.cxx
-rfb/Blacklist.h
-rfb/CConnection.cxx
-rfb/CConnection.h
-rfb/CMsgHandler.cxx
-rfb/CMsgHandler.h
-rfb/CMsgReader.h
-rfb/CMsgReaderV3.cxx
-rfb/CMsgReaderV3.h
-rfb/CMsgWriter.cxx
-rfb/CMsgWriter.h
-rfb/CMsgWriterV3.cxx
-rfb/CMsgWriterV3.h
-rfb/CSecurity.h
-rfb/CSecurityNone.h
-rfb/CSecurityVncAuth.cxx
-rfb/CSecurityVncAuth.h
-rfb/ColourCube.h
-rfb/ColourMap.h
-rfb/ComparingUpdateTracker.cxx
-rfb/ComparingUpdateTracker.h
-rfb/Configuration.cxx
-rfb/Configuration.h
-rfb/ConnParams.cxx B B
-rfb/ConnParams.h B B
-rfb/Cursor.cxx
-rfb/Cursor.h
-rfb/Decoder.cxx
-rfb/Decoder.h
-rfb/Encoder.cxx
-rfb/Encoder.h
-rfb/Exception.h
-rfb/HTTPServer.cxx
-rfb/HTTPServer.h
-rfb/HextileDecoder.cxx
-rfb/HextileDecoder.h
-rfb/HextileEncoder.cxx
-rfb/HextileEncoder.h
-rfb/Hostname.h
-rfb/ImageGetter.h
-rfb/LogWriter.cxx
-rfb/LogWriter.h
-rfb/Logger.cxx
-rfb/Logger.h
-rfb/Logger_file.cxx
-rfb/Logger_file.h
-rfb/Logger_stdio.cxx
-rfb/Logger_stdio.h
-rfb/Pixel.h
-rfb/PixelBuffer.cxx
-rfb/PixelBuffer.h
-rfb/PixelFormat.cxx
-rfb/PixelFormat.h
-rfb/RREDecoder.cxx
-rfb/RREDecoder.h
-rfb/RREEncoder.cxx
-rfb/RREEncoder.h
-rfb/RawDecoder.cxx
-rfb/RawDecoder.h
-rfb/RawEncoder.cxx
-rfb/RawEncoder.h
-rfb/Rect.h
-rfb/Region.cxx
-rfb/Region.h
-rfb/SConnection.cxx
-rfb/SConnection.h
-rfb/SDesktop.h
-rfb/SMsgHandler.cxx
-rfb/SMsgHandler.h
-rfb/SMsgReader.cxx
-rfb/SMsgReader.h
-rfb/SMsgReaderV3.cxx
-rfb/SMsgReaderV3.h
-rfb/SMsgWriter.cxx
-rfb/SMsgWriter.h
-rfb/SMsgWriterV3.h
-rfb/SSecurity.h
-rfb/SSecurityFactoryStandard.cxx
-rfb/SSecurityFactoryStandard.h
-rfb/SSecurityNone.h
-rfb/SSecurityVncAuth.cxx
-rfb/SSecurityVncAuth.h
-rfb/ServerCore.cxx
-rfb/ServerCore.h
-rfb/Threading.h
-rfb/TransImageGetter.cxx
-rfb/TransImageGetter.h
-rfb/TrueColourMap.h
-rfb/UpdateTracker.cxx
-rfb/UpdateTracker.h
-rfb/UserPasswdGetter.h
-rfb/VNCSConnectionST.cxx
-rfb/VNCSConnectionST.h
-rfb/VNCServer.h
-rfb/VNCServerST.cxx
-rfb/VNCServerST.h
-rfb/ZRLEDecoder.cxx
-rfb/ZRLEDecoder.h
-rfb/ZRLEEncoder.cxx
-rfb/ZRLEEncoder.h
-rfb/d3des.h
-rfb/encodings.cxx
-rfb/encodings.h
-rfb/hextileConstants.h
-rfb/hextileDecode.h
-rfb/hextileEncode.h
-rfb/keysymdef.h
-rfb/msgTypes.h
-rfb/msvcwarning.h
-rfb/rreDecode.h
-rfb/rreEncode.h
-rfb/SMsgWriterV3.cxx
-rfb/transInitTempl.h
-rfb/transTempl.h
-rfb/util.cxx
-rfb/util.h
-rfb/vncAuth.cxx
-rfb/vncAuth.h
-rfb/zrleDecode.h
-rfb/zrleEncode.h
-rfb/secTypes.cxx
-rfb/CMsgReader.cxx
-rfb/TightDecoder.cxx
-rfb/tightDecode.h
-rfb/TightDecoder.h
-rfb/secTypes.h
-
-Name Server/Client/Both Windows/UNIX/Both
--------------------------------------------------------------------------
-rfb_win32/AboutDialog.cxx
-rfb_win32/AboutDialog.h
-rfb_win32/CKeyboard.cxx
-rfb_win32/CKeyboard.h
-rfb_win32/CPointer.cxx
-rfb_win32/CPointer.h
-rfb_win32/CleanDesktop.cxx
-rfb_win32/CleanDesktop.h
-rfb_win32/Clipboard.cxx
-rfb_win32/Clipboard.h
-rfb_win32/CurrentUser.cxx
-rfb_win32/CurrentUser.h
-rfb_win32/DIBSectionBuffer.cxx
-rfb_win32/DIBSectionBuffer.h
-rfb_win32/DeviceFrameBuffer.cxx
-rfb_win32/DeviceFrameBuffer.h
-rfb_win32/Dialog.cxx
-rfb_win32/Dialog.h
-rfb_win32/IntervalTimer.h
-rfb_win32/LaunchProcess.cxx
-rfb_win32/LaunchProcess.h
-rfb_win32/MsgWindow.cxx
-rfb_win32/MsgWindow.h
-rfb_win32/OSVersion.cxx
-rfb_win32/OSVersion.h
-rfb_win32/RegConfig.cxx
-rfb_win32/RegConfig.h
-rfb_win32/Registry.cxx
-rfb_win32/Registry.h
-rfb_win32/SDisplay.cxx
-rfb_win32/SDisplay.h
-rfb_win32/SInput.cxx
-rfb_win32/SInput.h
-rfb_win32/Security.h
-rfb_win32/Service.cxx
-rfb_win32/Service.h
-rfb_win32/SocketManager.cxx
-rfb_win32/SocketManager.h
-rfb_win32/TCharArray.cxx
-rfb_win32/TCharArray.h
-rfb_win32/TrayIcon.h
-rfb_win32/WMCursor.cxx
-rfb_win32/WMCursor.h
-rfb_win32/WMHooks.cxx
-rfb_win32/WMHooks.h
-rfb_win32/WMNotifier.cxx
-rfb_win32/WMNotifier.h
-rfb_win32/WMPoller.cxx
-rfb_win32/WMPoller.h
-rfb_win32/WMShatter.cxx
-rfb_win32/WMShatter.h
-rfb_win32/WMWindowCopyRect.cxx
-rfb_win32/WMWindowCopyRect.h
-rfb_win32/Win32Util.cxx
-rfb_win32/Win32Util.h
-rfb_win32/keymap.h
-rfb_win32/msvcwarning.h
-
-Name Server/Client/Both Windows/UNIX/Both
--------------------------------------------------------------------------
-tx/TXButton.h
-tx/TXCheckbox.h
-tx/TXDialog.h
-tx/TXEntry.h
-tx/TXImage.cxx
-tx/TXImage.h
-tx/TXLabel.h
-tx/TXMenu.cxx
-tx/TXMenu.h
-tx/TXMsgBox.h
-tx/TXScrollbar.cxx
-tx/TXScrollbar.h
-tx/TXViewport.cxx
-tx/TXViewport.h
-tx/TXWindow.cxx
-tx/TXWindow.h
-tx/Timer.cxx
-tx/Timer.h
-
-Name Server/Client/Both Windows/UNIX/Both
--------------------------------------------------------------------------
-vncconfig/Authentication.h
-vncconfig/Connections.h
-vncconfig/Desktop.h
-vncconfig/Hooking.h
-vncconfig/Inputs.h
-vncconfig/Legacy.cxx
-vncconfig/Legacy.h
-vncconfig/Sharing.h
-vncconfig/resource.h
-vncconfig/vncconfig.cxx
-vncconfig_unix/vncExt.h
-vncconfig_unix/vncconfig.cxx
-vncmkdepend/def.h
-vncmkdepend/ifparser.h
-vncpasswd/vncpasswd.cxx
-
-Name Server/Client/Both Windows/UNIX/Both
--------------------------------------------------------------------------
-vncviewer/CViewManager.cxx
-vncviewer/CViewManager.h
-vncviewer/CViewOptions.cxx C W
-vncviewer/CViewOptions.h C W
-vncviewer/ConnectingDialog.h
-vncviewer/ConnectionDialog.cxx
-vncviewer/ConnectionDialog.h
-vncviewer/InfoDialog.cxx
-vncviewer/InfoDialog.h
-vncviewer/MRU.h
-vncviewer/OptionsDialog.cxx
-vncviewer/OptionsDialog.h
-vncviewer/UserPasswdDialog.cxx
-vncviewer/UserPasswdDialog.h
-vncviewer/buildTime.cxx
-vncviewer/cview.cxx C W
-vncviewer/cview.h
-vncviewer/msvcwarning.h
-vncviewer/resource.h
-vncviewer/vncviewer.cxx
-
-Name Server/Client/Both Windows/UNIX/Both
--------------------------------------------------------------------------
-vncviewer_unix/AboutDialog.h
-vncviewer_unix/CConn.cxx
-vncviewer_unix/CConn.h
-vncviewer_unix/DesktopWindow.cxx
-vncviewer_unix/DesktopWindow.h
-vncviewer_unix/InfoDialog.h
-vncviewer_unix/OptionsDialog.h
-vncviewer_unix/PasswdDialog.h
-vncviewer_unix/ServerDialog.h
-vncviewer_unix/parameters.h
-vncviewer_unix/vncviewer.cxx
-
-Name Server/Client/Both Windows/UNIX/Both
--------------------------------------------------------------------------
-winvnc/AddNewClientDialog.h
-winvnc/JavaViewer.cxx
-winvnc/JavaViewer.h
-winvnc/QueryConnectDialog.cxx
-winvnc/QueryConnectDialog.h
-winvnc/STrayIcon.cxx
-winvnc/STrayIcon.h
-winvnc/VNCServerService.cxx
-winvnc/VNCServerService.h
-winvnc/VNCServerWin32.cxx
-winvnc/VNCServerWin32.h
-winvnc/buildTime.cxx
-winvnc/msvcwarning.h
-winvnc/resource.h
-winvnc/winvnc.cxx
-wm_hooks/msvcwarning.h
-wm_hooks/resource.h
-wm_hooks/wm_hooks.cxx
-wm_hooks/wm_hooks.h
-
-Name Server/Client/Both Windows/UNIX/Both
--------------------------------------------------------------------------
-x0vncserver/Image.cxx
-x0vncserver/Image.h
-x0vncserver/x0vncserver.cxx
-xc/programs/Xserver/vnc/RegionHelper.h
-xc/programs/Xserver/vnc/XserverDesktop.h
-xc/programs/Xserver/vnc/vncExtInit.h
-xc/programs/Xserver/vnc/vncHooks.h
-
-Name Server/Client/Both Windows/UNIX/Both
--------------------------------------------------------------------------
-zlib/deflate.h
-zlib/infblock.h
-zlib/infcodes.h
-zlib/inffast.h
-zlib/inffixed.h
-zlib/inftrees.h
-zlib/infutil.h
-zlib/trees.h
-zlib/zconf.h
-zlib/zlib.h
-zlib/zutil.h
-
-Name Server/Client/Both Windows/UNIX/Both
--------------------------------------------------------------------------
-rfbplayer/FbsInputStream.cxx
-rfbplayer/FbsInputStream.h
-rfbplayer/RfbProto.cxx
-rfbplayer/RfbProto.h
-rfbplayer/buildTime.cxx
-rfbplayer/resource.h
-rfbplayer/rfbplayer.cxx
-rfbplayer/rfbplayer.h
-rfbplayer/utils.h
diff --git a/doc/registered-codes.txt b/doc/registered-codes.txt
deleted file mode 100644
index ed97a06..0000000
--- a/doc/registered-codes.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-[Vendor=TGHT]
-Title: TightVNC
-Web: http://www.tightvnc.com/
-
-[Vendor=STDV]
-Title: RealVNC
-Web: http://www.realvnc.com/
-
-[Vendor=TRDV]
-Title: TridiaVNC
-Web: http://www.tridiavnc.com/
-
-[Vendor=GGI_]
-Title: General Graphics Interface Project
-Web: http://www.ggi-project.org/
-
-[Tunneling=0]
-Vendor: TGHT
-Signature: NOTUNNEL
-Abbrev: NoTunelling
-Description: No tunneling
-
-[Auth=1]
-Vendor: STDV
-Signature: NOAUTH__
-Abbrev: AuthNone
-Description: No authentication
-
-[Auth=2]
-Vendor: STDV
-Signature: VNCAUTH_
-Abbrev: AuthVNC
-Description: Standard VNC Authentication
-
-[Auth=129]
-Vendor: THGT
-Signature: ULGNAUTH
-Abbrev: AuthUnixLogin
-Description: Unix Login Authentication
-Notes: Not used in public versions
-
-[Auth=130]
-Vendor: THGT
-Signature: XTRNAUTH
-Abbrev: AuthExternal
-Description: External Authentication
-Notes: Not used in public versions
-
-[ServerMessageRange=130..149]
-Vendor: THGT
-Description: TightVNC File Transfers
-
-[ServerMessage=150]
-Vendor: THGT
-Signature: CUS_EOCU
-Abbrev: EndOfContinuousUpdates
-Description: End Of Continuous Updates
-
-[ServerMessage=253]
-Vendor: GGI_
-Signature: GII_SERV
-
-[ClientMessageRange=130..150]
-Vendor: THGT
-Description: TightVNC File Transfers
-
-[ClientMessage=150]
-Vendor: THGT
-Signature: CUC_ENCU
-Abbrev: EnableContinuousUpdates
-Description: Enable/Disable Continuous Updates
-
-[ClientMessage=151]
-Vendor: THGT
-Signature: VRECTSEL
-Abbrev: VideoRectangleSelection
-Description: Video Rectangle Selection
-
-[ClientMessage=253]
-Vendor: GGI_
-Signature: GII_CLNT
-
-[EncodingRange=0xFFFFFF00..0xFFFFFFFF]
-AltNotation: -256..-1
-AltNotation: 4294967040..4294967295
-Vendor: TGHT
-Description: TightVNC-Specific Pseudo-Encodings
-
-[Encoding=0xFFFFFECF]
-AltNotation: -305
-AltNotation: 4294966991
-Vendor: GGI_
-Signature: GII_____
-
diff --git a/doc/requirements.txt b/doc/requirements.txt
deleted file mode 100644
index 4957be3..0000000
--- a/doc/requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-
-- The UNIX version requires snprintf().
diff --git a/doc/rfbtight.odt b/doc/rfbtight.odt
deleted file mode 100644
index 3630481..0000000
--- a/doc/rfbtight.odt
+++ /dev/null
Binary files differ
diff --git a/doc/rfbtight.tex b/doc/rfbtight.tex
deleted file mode 100644
index 088ab60..0000000
--- a/doc/rfbtight.tex
+++ /dev/null
@@ -1,1121 +0,0 @@
-\documentclass[a4paper]{article}
-\usepackage{geometry}
-\geometry{verbose,a4paper,tmargin=20mm,bmargin=20mm,lmargin=30mm,rmargin=30mm}
-\setlength{\parindent}{0pt}
-\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
-
-\newcommand{\typestr}[1]{\textit{#1}}
-\newcommand{\literal}[1]{\textit{\textbf{#1}}}
-
-\begin{document}
-
-\title{TightVNC Extensions to the RFB~Protocol
- \thanks{This document refers to RFB protocol versions 3.3, 3.7}}
-\author{Constantin Kaplinsky\\
- TightVNC Group}
-\date{Revision 1 --- July, 2006}
-\maketitle
-
-\tableofcontents
-
-\newpage
-\section{Overview}
-This document describes various extensions to the RFB protocol used in
-the TightVNC distribution and in other software compatible with
-TightVNC. Only differences from the stardard RFB protocol are
-discussed. The original RFB protocol specification (protocol versions
-3.3, 3.7, 3.8) can be obtained here:
-\begin{center}
-\texttt{http://www.realvnc.com/docs/rfbproto.pdf}
-\end{center}
-
-At the moment of writing this document, TightVNC supports RFB protocol
-version 3.3 (all TightVNC versions) and 3.7 (TightVNC 1.3.x). It does
-not use the version 3.8 of the protocol, and it's not safe to assume
-that the TightVNC-specific changes to the protocol 3.7 initialization
-procedure can be used with the protocol 3.8. However, all encodings,
-pseudo-encodings and protocol messages described in this document can
-be safely used with the protocol 3.8.
-% (pseudo-)encodings: 3.3+, messages: 3.7+ with sec-type == Tight
-
-TightVNC introduces the following protocol changes:
-\begin{itemize}
-\item extended protocol initialization procedure,
-\item new encodings,
-\item new pseudo-encodings,
-\item new protocol messages.
-\end{itemize}
-
-\newpage
-\section{Protocol initialization}
-
-\subsection{Protocol version 3.3}
-\subsection{Protocol version 3.7}
-
-\newpage
-\section{Encodings}
-\subsection{Tight}
-\begin{verbatim}
-Encoding type: 7
-Name signature: "TIGHT___"
-Vendor signature: "TGHT"
-\end{verbatim}
-Tight encoding provides efficient compression for pixel data.
-
-The first byte of each Tight-encoded rectangle is a
-\typestr{compression-control} byte:
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & & \typestr{compression-control} \\ \hline
-\end{tabular}
-
-\begin{quote}
-The least significant four bits of \typestr{compression-control} byte
-inform the client which zlib compression streams should be reset
-before decoding the rectangle. Each bit is independent and corresponds
-to a separate zlib stream that should be reset:
-
-\begin{tabular}{l|l}
-\hline
-Bit & Description \\
-\hline
-0 & if 1: reset stream 0 \\
-1 & if 1: reset stream 1 \\
-2 & if 1: reset stream 2 \\
-3 & if 1: reset stream 4 \\
-\hline
-\end{tabular}
-
-One of three possible compression methods are supported in Tight
-encoding. These are \literal{BasicCompression},
-\literal{FillCompression} and \literal{JpegCompression}. If the bit 7 (the
-most significant bit) of \typestr{compression-control} byte is 0, then
-the compression type is \literal{BasicCompression}. In that case, bits
-7-4 (the most significant four bits) of \typestr{compression-control}
-should be interpreted as follows:
-
-\begin{tabular}{l|c|l}
-\hline
-Bits & Binary value & Description \\
-\hline
-5-4 & 00 & \literal{UseStream0} \\
- & 01 & \literal{UseStream1} \\
- & 10 & \literal{UseStream2} \\
- & 11 & \literal{UseStream3} \\
-\hline
-6 & 0 & --- \\
- & 1 & \literal{ReadFilterId} \\
-\hline
-7 & 0 & \literal{BasicCompression} \\
-\hline
-\end{tabular}
-
-Otherwise, if the bit 7 of \typestr{compression-control} is set to 1,
-then the compression method is either \literal{FillCompression} or
-\literal{JpegCompression}, depending on other bits of the same byte:
-
-\begin{tabular}{l|c|l}
-\hline
-Bits & Binary value & Description \\
-\hline
-7-4 & 1000 & \literal{FillCompression} \\
- & 1001 & \literal{JpegCompression} \\
- & any other & invalid \\
-\hline
-\end{tabular}
-
-Note: \literal{JpegCompression} may only be used when
-\typestr{bits-per-pixel} is either 16 or 32.
-
-\end{quote}
-
-The data following the \typestr{compression-control} byte depends on
-the compression method.
-
-\subsubsection*{\literal{FillCompression}}
-
--- If the compression type is "fill", then the only pixel value follows, in
- client pixel format (see NOTE 1). This value applies to all pixels of the
- rectangle.
-
-\subsubsection*{\literal{JpegCompression}}
-
--- If the compression type is "jpeg", the following data stream looks like
- this:
-
- 1..3 bytes: data size (N) in compact representation;
- N bytes: JPEG image.
-
- Data size is compactly represented in one, two or three bytes, according
- to the following scheme:
-
- 0xxxxxxx (for values 0..127)
- 1xxxxxxx 0yyyyyyy (for values 128..16383)
- 1xxxxxxx 1yyyyyyy zzzzzzzz (for values 16384..4194303)
-
- Here each character denotes one bit, xxxxxxx are the least significant 7
- bits of the value (bits 0-6), yyyyyyy are bits 7-13, and zzzzzzzz are the
- most significant 8 bits (bits 14-21). For example, decimal value 10000
- should be represented as two bytes: binary 10010000 01001110, or
- hexadecimal 90 4E.
-
-\subsubsection*{\literal{BasicCompression}}
-
--- If the compression type is "basic" and bit 6 of the compression control
- byte was set to 1, then the next (second) byte specifies "filter id" which
- tells the decoder what filter type was used by the encoder to pre-process
- pixel data before the compression. The "filter id" byte can be one of the
- following:
-
- 0: no filter ("copy" filter);
- 1: "palette" filter;
- 2: "gradient" filter.
-
--- If bit 6 of the compression control byte is set to 0 (no "filter id"
- byte), or if the filter id is 0, then raw pixel values in the client
- format (see NOTE 1) will be compressed. See below details on the
- compression.
-
--- The "gradient" filter pre-processes pixel data with a simple algorithm
- which converts each color component to a difference between a "predicted"
- intensity and the actual intensity. Such a technique does not affect
- uncompressed data size, but helps to compress photo-like images better.
- Pseudo-code for converting intensities to differences is the following:
-
- P[i,j] := V[i-1,j] + V[i,j-1] - V[i-1,j-1];
- if (P[i,j] < 0) then P[i,j] := 0;
- if (P[i,j] > MAX) then P[i,j] := MAX;
- D[i,j] := V[i,j] - P[i,j];
-
- Here V[i,j] is the intensity of a color component for a pixel at
- coordinates (i,j). MAX is the maximum value of intensity for a color
- component.
-
--- The "palette" filter converts true-color pixel data to indexed colors
- and a palette which can consist of 2..256 colors. If the number of colors
- is 2, then each pixel is encoded in 1 bit, otherwise 8 bits is used to
- encode one pixel. 1-bit encoding is performed such way that the most
- significant bits correspond to the leftmost pixels, and each raw of pixels
- is aligned to the byte boundary. When "palette" filter is used, the
- palette is sent before the pixel data. The palette begins with an unsigned
- byte which value is the number of colors in the palette minus 1 (i.e. 1
- means 2 colors, 255 means 256 colors in the palette). Then follows the
- palette itself which consist of pixel values in client pixel format (see
- NOTE 1).
-
--- The pixel data is compressed using the zlib library. But if the data
- size after applying the filter but before the compression is less then 12,
- then the data is sent as is, uncompressed. Four separate zlib streams
- (0..3) can be used and the decoder should read the actual stream id from
- the compression control byte (see NOTE 2).
-
- If the compression is not used, then the pixel data is sent as is,
- otherwise the data stream looks like this:
-
- 1..3 bytes: data size (N) in compact representation;
- N bytes: zlib-compressed data.
-
- Data size is compactly represented in one, two or three bytes, just like
- in the "jpeg" compression method (see above).
-
--- NOTE 1. If the color depth is 24, and all three color components are
- 8-bit wide, then one pixel in Tight encoding is always represented by
- three bytes, where the first byte is red component, the second byte is
- green component, and the third byte is blue component of the pixel color
- value. This applies to colors in palettes as well.
-
--- NOTE 2. The decoder must reset compression streams' states before
- decoding the rectangle, if some of bits 0,1,2,3 in the compression control
- byte are set to 1. Note that the decoder must reset zlib streams even if
- the compression type is "fill" or "jpeg".
-
--- NOTE 3. The "gradient" filter and "jpeg" compression may be used only
- when bits-per-pixel value is either 16 or 32, not 8.
-
--- NOTE 4. The width of any Tight-encoded rectangle cannot exceed 2048
- pixels. If a rectangle is wider, it must be split into several rectangles
- and each one should be encoded separately.
-
-\newpage
-\section{Pseudo-encodings}
-\subsection{NewFBSize}
-\begin{verbatim}
-Encoding type: 0xFFFFFF21
-Name signature: "NEWFBSIZ"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The NewFBSize pseudo-encoding is used to transmit information about
-framebuffer size changes from server to client.
-
-This pseudo-encoding was introduced in TightVNC, and was adopted for
-use in RealVNC 4 (see the DesktopSize pseudo-encoding in the RFB 3.7+
-specification). However, there is known incompatibility between
-TightVNC and RealVNC in the way the server sends information about new
-framebuffer size. TightVNC implementation requires that a NewFBSize
-``rectangle'' must be the last one in a framebuffer update, while
-RealVNC does not make such a requirement. As a result, TightVNC
-viewers may incorrectly interpret the data stream received from
-RealVNC 4 servers.
-
-Hopefully, this incompatibility will be fixed in future versions of
-TightVNC. Ideally, the server should send NewFBSize ``rectangles''
-according to the TightVNC rules (with valid rectangle counter in the
-FramebufferUpdate header), while the client should interpet it in
-accordance to the DesktopSize pseudo-encoding description from
-RealVNC's official RFB specification.
-
-Below is the complete specification of the NewFBSize pseudo-encoding,
-as it was introduced in TightVNC:
-
-\subsubsection*{
-\begin{center}
- Handling framebuffer size changes in the RFB protocol v.3\\
- Technical Specification, revision 3
-\end{center}
-}
-
-\begin{quote}
-The following pseudo-encoding is used to transmit information about
-framebuffer size changes from server to client:
-
-\begin{center}
-\texttt{\#define rfbEncodingNewFBSize 0xFFFFFF21}
-\end{center}
-
-A client supporting variable framebuffer size should send this
-pseudo-encoding number in the encodings list within the SetEncodings
-RFB message.
-
-After a client informed the server about this capability, the server
-may send a special rectangle within the FramebufferUpdate RFB message,
-where the header contains encoding-type field set to the
-rfbEncodingNewFBSize value. Fields width and height in this rectangle
-header should be interpreted as new framebuffer size, fields
-x-position and y-position are currently not used and should be set to
-zero values by the server. Unlike true rectangle in framebuffer
-updates, this one should not include any pixel data. This rectangle
-must always be the last one in a FramebufferUpdate message, and a
-client should treat it similarly to the LastRect marker, that is, it
-should not expect more rectangles in this update, even if the
-number-of-rectangles field in the FramebufferUpdate message header
-exceeds current number of rectangles.
-
-Immediately after receiving such a special rectangle, a client should
-change its framebuffer size accordingly, and should interpret all
-following framebuffer updates in context of the new framebuffer size.
-
-Changing framebuffer size invalidates framebuffer contents, so the
-server should mark all the framebuffer contents as changed.
-
-FIXME: Allow zero-size framebuffer?
-\end{quote}
-
-\subsection{RichCursor}
-\subsection{XCursor}
-\subsection{PointerPos}
-\subsection{CompressLevel}
-\subsection{QualityLevel}
-
-\subsection{LastRect}
-\begin{verbatim}
-Encoding type: 0xFFFFFF20
-Name signature: "LASTRECT"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-\typestr{LastRect} enables \typestr{FramebufferUpdate} messages that
-include less rectangles than was specified in the message header. For
-example, VNC server can send a big conter like 0xFFFF as
-\typestr{number-of-rectangles}, then arbitrary number of rectangles and
-pseudo-rectangles (less than 0xFFFF). Finally, it sends
-\typestr{LastRect} pseudo-rectangle which marks the end of current
-\typestr{FramebufferUpdate} message.
-
-The fields
-\typestr{x-position}, \typestr{y-position}, \typestr{width} and
-\typestr{height} are not used and should be filled with zero values.
-
-To enable this pseudo-encoding, the client specifies
-\typestr{LastRect} in the \typestr{SetEncodings} message. From that
-moment, the server may use \typestr{LastRect} pseudo-encoding in some
-of the framebuffer updates it will send.
-
-% For each message, describe its place in the message sequence.
-
-\newpage
-\section{Protocol messages, file transfers (client to server)}
-
-\subsection{FileListRequest}
-\begin{verbatim}
-Message type: 130
-Name signature: "FTC_LSRQ"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The client sends \typestr{FileListRequest} message to obtain the list
-of files in a particular directory. The server is expected to respond
-with exactly one \typestr{FileListData} message.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 130 & \typestr{message-type} \\
-1 & U8 & & \typestr{flags} \\
-2 & U16 & & \typestr{dirname-length} \\
-\typestr{dirname-length} & U8 array & & \typestr{dirname-string} \\
-\hline\end{tabular}
-
-The \typestr{flags} byte has the following format:
-
-\begin{tabular}{l|l|l}
-\hline
-Bits & Binary value & Description \\ \hline
-3-0 & 0000 & do not compress file list data \\
- & 0001..1001 & use compression level 1..9 \\
- & 1010 or greater & invalid \\
-\hline
-4 & 0 & list of files and directories requested \\
- & 1 & list of directories only requested \\
-\hline
-\end{tabular}
-
-The client can request compression only if enabled via the server's
-\typestr{FileEnableCompression} message. Otherwise, bits 3-0 of
-\typestr{flags} must be all zeroes (for no compression). See more
-details in the specification for the \typestr{FileEnableCompression}
-message.
-
-% Add a note that specifying compression levels is not fatal here.
-
-The \typestr{dirname-string} should be an absolute path represented in
-Unix-style format: it should start with a forward slash
-(``\verb|/|''), path components should be separated also with forward
-slashes. There should be no trailing slash at the end of the path,
-except for the root (highest level) directory which is denoted with a
-single slash. Note that Windows-style path like
-``\verb|c:\Program Files\TightVNC|'' should be sent as
-``\verb|/c:/Program Files/TightVNC|''.
-
-\newpage
-\subsection{FileDownloadRequest}
-\begin{verbatim}
-Message type: 131
-Name signature: "FTC_DNRQ"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The client sends \typestr{FileDownloadRequest} message to start
-downloading (receiving) a particular file from the server.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 131 & \typestr{message-type} \\
-1 & U8 & & \typestr{flags} \\
-2 & U16 & & \typestr{filename-length} \\
-4 & U32 & & \typestr{initial-offset} \\
-\typestr{filename-length} & U8 array & & \typestr{filename-string} \\
-\hline\end{tabular}
-
-The \typestr{flags} byte has the following format:
-
-\begin{tabular}{l|l|l}
-\hline
-Bits & Binary value & Description \\ \hline
-3-0 & 0000 & do not compress file data \\
- & 0001..1001 & use compression level 1..9 \\
- & 1010 or greater & invalid \\
-\hline
-\end{tabular}
-
-% \typestr{initial-offset}
-% do not use compression when not enabled by the server
-
-After the client sends \typestr{FileDownloadRequest}, the server is
-expected to respond with one of the following:
-
-\begin{itemize}
-
-\item \typestr{FileLastRequestFailed} message, if there was an error
-opening file on the server side.
-
-\item Arbitrary number (including zero) of \typestr{FileDownloadData}
-messages with file data, and then one more \typestr{FileDownloadData}
-message with \typestr{raw-length} and \typestr{compressed-length}
-fields set to zero. This is the normal scenario when there was no
-error and download was not interrupted.
-
-\item Arbitrary number (including zero) of \typestr{FileDownloadData}
-messages with file data, and then one \typestr{FileDownloadFailed}
-message. This happens when the server cannot complete file download
-for some reason.
-
-\item \dots
-
-\end{itemize}
-
-% Can FileDownloadFailed go first? -- probably yes.
-% How zero-size files are transmitted?
-% How to detect the beginning of the next file, when previous
-% download was cancelled with FileDownloadCancel?
-
-The \typestr{filename-string} should be a file name with complete
-absolute path represented in Unix-style format: it should start with a
-forward slash (``\verb|/|''), path components should be separated also
-with forward slashes. For example, Windows-style file name
-``\verb|c:\Temp\Report.doc|'' should be sent as
-``\verb|/c:/Temp/Report.doc|''.
-
-\newpage
-\subsection{FileUploadRequest}
-\begin{verbatim}
-Message type: 132
-Name signature: "FTC_UPRQ"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The client sends \typestr{FileUploadRequest} message to start
-uploading (sending) a particular file to the server.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 132 & \typestr{message-type} \\
-1 & U8 & & \typestr{flags} \\
-2 & U16 & & \typestr{filename-length} \\
-4 & U32 & & \typestr{initial-offset} \\
-\typestr{filename-length} & U8 array & & \typestr{filename-string} \\
-\hline\end{tabular}
-
-The \typestr{flags} byte has the following format:
-
-\begin{tabular}{l|l|l}
-\hline
-Bits & Binary value & Description \\ \hline
-3-0 & 0000 & file data is expected to be uncompressed \\
- & 0001..1001 & expected compression level (1..9) \\
- & 1010 or greater & invalid \\
-\hline
-\end{tabular}
-
-% \typestr{initial-offset}
-% do not use compression when not enabled by the server
-
-Normally, the server does not respond to this message, so the client
-can start sending \typestr{FileUploadData} messages immediately.
-However, the server may send \typestr{FileUploadCancel} to make the
-client cancel current upload. The client can cancel current upload by
-sending \typestr{FileUploadFailed} message.
-
-The \typestr{filename-string} should be a file name with complete
-absolute path represented in Unix-style format: it should start with a
-forward slash (``\verb|/|''), path components should be separated also
-with forward slashes. For example, Windows-style file name
-``\verb|c:\Temp\Report.doc|'' should be sent as
-``\verb|/c:/Temp/Report.doc|''.
-
-\newpage
-\subsection{FileUploadData}
-\begin{verbatim}
-Message type: 133
-Name signature: "FTC_UPDT"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The client uses \typestr{FileUploadData} message to send each
-successive portion of file data, as a part of file upload procedure.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 133 & \typestr{message-type} \\
-1 & U8 & & \typestr{flags} \\
-2 & U16 & & \typestr{raw-length} \\
-2 & U16 & & \typestr{compressed-length} \\
-\typestr{compressed-length} & U8 array & & \typestr{file-data} \\
-\hline\end{tabular}
-
-The \typestr{flags} byte has the following format:
-
-\begin{tabular}{l|l|l}
-\hline
-Bits & Binary value & Description \\ \hline
-3-0 & 0000 & file data is not compressed \\
- & 0001..1001 & compression level used (1..9) \\
- & 1010 or greater & invalid \\
-\hline
-\end{tabular}
-
-Last message per file (both \typestr{raw-length} and
-\typestr{compressed-length} are set to zeroes):
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 133 & \typestr{message-type} \\
-1 & & & \typestr{padding} \\
-2 & U16 & 0 & \typestr{raw-length} \\
-2 & U16 & 0 & \typestr{compressed-length} \\
-4 & U32 & & \typestr{modification-time} \\
-\hline\end{tabular}
-
-% do not use compression when not enabled by the server
-% data is compressed with zlib
-% format of the modification-time
-
-\newpage
-\subsection{FileDownloadCancel}
-\begin{verbatim}
-Message type: 134
-Name signature: "FTC_DNCN"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The client sends \typestr{FileDownloadCancel} message to make the
-server break current download operation.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 134 & \typestr{message-type} \\
-1 & & & \typestr{padding} \\
-2 & U16 & & \typestr{reason-length} \\
-\typestr{reason-length} & U8 array & & \typestr{reason-string} \\
-\hline\end{tabular}
-
-% reason-string may be empty
-
-\newpage
-\subsection{FileUploadFailed}
-\begin{verbatim}
-Message type: 135
-Name signature: "FTC_UPFL"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The client sends \typestr{FileUploadFailed} message to notify the
-server that current upload operation will not be completed.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 135 & \typestr{message-type} \\
-1 & & & \typestr{padding} \\
-2 & U16 & & \typestr{reason-length} \\
-\typestr{reason-length} & U8 array & & \typestr{reason-string} \\
-\hline\end{tabular}
-
-% reason-string may be empty
-
-\newpage
-\subsection{FileCreateDirRequest}
-\begin{verbatim}
-Message type: 136
-Name signature: "FTC_FCDR"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-\typestr{FileCreateDirRequest} message requests the server to create a
-new directory.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 136 & \typestr{message-type} \\
-1 & & & \typestr{padding} \\
-2 & U16 & & \typestr{dirname-length} \\
-\typestr{dirname-length} & U8 array & & \typestr{dirname-string} \\
-\hline\end{tabular}
-
-The \typestr{dirname-string} should be an absolute path represented in
-Unix-style format: it should start with a forward slash
-(``\verb|/|''), path components should be separated also with forward
-slashes. There should be no trailing slash at the end of the path.
-Note that Windows-style path like
-``\verb|c:\Temp\MyNewDir|'' should be sent as
-``\verb|/c:/Temp/MyNewDir|''.
-
-% All components of the path except the last one should exist in the
-% server's file system?
-
-\newpage
-\subsection{FileDirSizeRequest}
-\begin{verbatim}
-Message type: 137
-Name signature: "FTC_DSRQ"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The client can send \typestr{FileDirSizeRequest} message to inquire
-about the total size of all files within a particular directory on the
-server (including files in sub-directories).
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 137 & \typestr{message-type} \\
-1 & & & \typestr{padding} \\
-2 & U16 & & \typestr{dirname-length} \\
-\typestr{dirname-length} & U8 array & & \typestr{dirname-string} \\
-\hline\end{tabular}
-
-The \typestr{dirname-string} should be an absolute path represented in
-Unix-style format: it should start with a forward slash
-(``\verb|/|''), path components should be separated also with forward
-slashes. There should be no trailing slash at the end of the path,
-except for the root (highest level) directory which is denoted with a
-single slash. Note that Windows-style path like
-``\verb|c:\Program Files\TightVNC|'' should be sent as
-``\verb|/c:/Program Files/TightVNC|''.
-
-\newpage
-\subsection{FileRenameRequest}
-\begin{verbatim}
-Message type: 138
-Name signature: "FTC_RNRQ"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-\typestr{FileRenameRequest} message requests the server to rename the
-specified file or directory.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 138 & \typestr{message-type} \\
-1 & & & \typestr{padding} \\
-2 & U16 & & \typestr{old-name-length} \\
-2 & U16 & & \typestr{new-name-length} \\
-\typestr{old-name-length} & U8 array & & \typestr{old-name-string} \\
-\typestr{new-name-length} & U8 array & & \typestr{new-name-string} \\
-\hline\end{tabular}
-
-Both \typestr{old-name-string} and \typestr{new-name-string} should be
-file names with complete absolute paths and should be represented in
-Unix-style format: the strings should start with forward slashes
-(``\verb|/|''), path components should be separated also with forward
-slashes. For example, Windows-style file name
-``\verb|c:\Temp\Report.doc|'' should be sent as
-``\verb|/c:/Temp/Report.doc|''.
-
-% All components of two paths except the last one should be the same?
-
-\newpage
-\subsection{FileDeleteRequest}
-\begin{verbatim}
-Message type: 139
-Name signature: "FTC_RMRQ"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-\typestr{FileDeleteRequest} message requests the server to delete the
-specified file or directory.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 139 & \typestr{message-type} \\
-1 & & & \typestr{padding} \\
-2 & U16 & & \typestr{filename-length} \\
-\typestr{filename-length} & U8 array & & \typestr{filename-string} \\
-\hline\end{tabular}
-
-The \typestr{filename-string} should be a file name with complete
-absolute path represented in Unix-style format: it should start with a
-forward slash (``\verb|/|''), path components should be separated also
-with forward slashes. For example, Windows-style file name
-``\verb|c:\Temp\Report.doc|'' should be sent as
-``\verb|/c:/Temp/Report.doc|''.
-
-\newpage
-\section{Protocol messages, file transfers (server to client)}
-
-\subsection{FileListData}
-\begin{verbatim}
-Message type: 130
-Name signature: "FTS_LSDT"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The server sends \typestr{FileListData} message in response to
-\typestr{FileListRequest} client message. \typestr{FileListData}
-message lists files and sub-directories in a particular directory, and
-includes information about file sizes and last modification times.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 130 & \typestr{message-type} \\
-1 & U8 & & \typestr{flags} \\
-2 & U16 & & \typestr{number-of-files} \\
-2 & U16 & & \typestr{raw-length} \\
-2 & U16 & & \typestr{compressed-length} \\
-8 $\times$ \typestr{number-of-files} & U32 array & & \typestr{file-properties-data} \\
-\typestr{compressed-length} & U8 array & & \typestr{file-names-data} \\
-\hline\end{tabular}
-
-The \typestr{flags} byte has the following format:
-
-\begin{tabular}{l|l|l}
-\hline
-Bits & Binary value & Description \\ \hline
-3-0 & 0000 & file list data is not compressed \\
- & 0001..1001 & compression level used (1..9) \\
- & 1010 or greater & invalid \\
-\hline
-4 & 0 & list of files and directories requested \\
- & 1 & list of directories only requested \\
-\hline
-5 & 0 & success \\
- & 1 & non-existent or inaccessible directory requested \\
-\hline
-\end{tabular}
-
-In the \typestr{flags} byte:
-
-\begin{itemize}
-\item bit 4 duplicates the same bit from the corresponding
- \typestr{FileListRequest} message;
-\item if bit 5 is set to 1, then \typestr{number-of-files},
- \typestr{raw-length} and \typestr{compressed-length} all should be
- set to zero values. In that case, \typestr{file-properties-data} and
- \typestr{file-names-data} should be empty;
-\item compression bits (bits 3-0) should be set only if compression
- was requested by the client in the corresponding
- \typestr{FileListRequest} message.
-\end{itemize}
-
-\typestr{File-properties-data} array is sent as
-\typestr{number-of-files} repetitions of the following structure:
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-4 & U32 & & \typestr{file-size} \\
-4 & U32 & & \typestr{modification-time} \\
-\hline\end{tabular}
-
-In that structure, \typestr{file-size} is specified in bytes,
-\typestr{modification-time} is an offset is seconds since the Epoch
-(00:00:00 UTC, January 1, 1970).
-
-\typestr{File-names-data} is a sequence of file and directory names
-found in the requested directory. Names do not include paths.
-Each individual record is terminated with a zero byte. The
-\typestr{file-names-data} list should include
-\typestr{number-of-files} individual records. If compression is
-enabled (bits 3-0 of \typestr{flags} designate a valid compression
-level), then \typestr{file-names-data} is compressed using zlib
-library.
-
-% the number-of-files may be 0; in that case ...
-% how directories should be ditinguished
-% what about symbolic links etc.
-% describe raw-length and compressed-length
-
-\newpage
-\subsection{FileDownloadData}
-\begin{verbatim}
-Message type: 131
-Name signature: "FTS_DNDT"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The server uses \typestr{FileDownloadData} message to send each
-successive portion of file data, as a part of file download procedure.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 131 & \typestr{message-type} \\
-1 & U8 & & \typestr{flags} \\
-2 & U16 & & \typestr{raw-length} \\
-2 & U16 & & \typestr{compressed-length} \\
-\typestr{compressed-length} & U8 array & & \typestr{file-data} \\
-\hline\end{tabular}
-
-Last message per file (both \typestr{raw-length} and
-\typestr{compressed-length} are set to zeroes):
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 131 & \typestr{message-type} \\
-1 & & & \typestr{padding} \\
-2 & U16 & 0 & \typestr{raw-length} \\
-2 & U16 & 0 & \typestr{compressed-length} \\
-4 & U32 & & \typestr{modification-time} \\
-\hline\end{tabular}
-
-The \typestr{flags} byte has the following format:
-
-\begin{tabular}{l|l|l}
-\hline
-Bits & Binary value & Description \\ \hline
-3-0 & 0000 & file data is not compressed \\
- & 0001..1001 & compression level used (1..9) \\
- & 1010 or greater & invalid \\
-\hline
-\end{tabular}
-
-Compression should be used only if it was requested by the client in
-corresponding \typestr{FileListRequest} message.
-
-% data is compressed with zlib
-% format of the modification-time
-
-\newpage
-\subsection{FileUploadCancel}
-\begin{verbatim}
-Message type: 132
-Name signature: "FTS_UPCN"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The server sends \typestr{FileUploadCancel} message to make the client
-break current upload operation.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 132 & \typestr{message-type} \\
-1 & & & \typestr{padding} \\
-2 & U16 & & \typestr{reason-length} \\
-\typestr{reason-length} & U8 array & & \typestr{reason-string} \\
-\hline\end{tabular}
-
-% reason-string may be empty
-
-\newpage
-\subsection{FileDownloadFailed}
-\begin{verbatim}
-Message type: 133
-Name signature: "FTS_DNFL"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The server sends \typestr{FileDownloadFailed} message to notify the
-client that current download operation will not be completed.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 133 & \typestr{message-type} \\
-1 & & & \typestr{padding} \\
-2 & U16 & & \typestr{reason-length} \\
-\typestr{reason-length} & U8 array & & \typestr{reason-string} \\
-\hline\end{tabular}
-
-% reason-string may be empty
-
-\newpage
-\subsection{FileDirSizeData}
-\begin{verbatim}
-Message type: 134
-Name signature: "FTS_DSDT"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The server sends \typestr{FileDirSizeData} message in response to
-\typestr{FileDirSizeRequest} client message. \typestr{FileDirSizeData}
-message returns total size of all files within the requested directory
-on the server (including files in sub-directories). The size in bytes
-is returned as an unsigned 48-bit value.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 134 & \typestr{message-type} \\
-1 & & & \typestr{padding} \\
-2 & U16 & & \typestr{dir-size-high-bits} \\
-4 & U32 & & \typestr{dir-size-low-bits} \\
-\hline\end{tabular}
-
-\newpage
-\subsection{FileLastRequestFailed}
-\begin{verbatim}
-Message type: 135
-Name signature: "FTS_RQFL"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The server sends \typestr{FileLastRequestFailed} message if it cannot
-execute an operation requested by the client. It can be sent in
-response to the following client messages:
-\typestr{FileDownloadRequest}, \typestr{FileCreateDirRequest},
-\typestr{FileRenameRequest}, \typestr{FileDeleteRequest}.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 135 & \typestr{message-type} \\
-1 & U8 & & \typestr{message-type-of-request} \\
-2 & U16 & & \typestr{reason-length} \\
-\typestr{reason-length} & U8 array & & \typestr{reason-string} \\
-\hline\end{tabular}
-
-% reason-string may be empty
-
-\newpage
-\subsection{FileEnableCompression}
-\begin{verbatim}
-Message type: 137
-Name signature: "FTS_CMPR"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-This message controls compression in file transfer operations.
-\typestr{Enable-flag} is non-zero (true) if the client should be
-allowed to request and use compression for file transfers, or zero
-(false) otherwise.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 137 & \typestr{message-type} \\
-1 & U8 & & \typestr{enable-flag} \\
-\hline\end{tabular}
-
-\typestr{FileEnableCompression} message controls how clients send the
-following messages:
-
-\begin{itemize}
-\item \typestr{FileListRequest}
-\item \typestr{FileDownloadRequest}
-\item \typestr{FileUploadRequest}
-\item \typestr{FileUploadData}
-\end{itemize}
-
-If the client did not receive a \typestr{FileEnableCompression}
-message from the server, or the most recent
-\typestr{FileEnableCompression} message included \typestr{enable-flag}
-set to false, then it must specify zero as compression level in the
-messages listed above and, most importantly, may not compress file
-data on uploading files.
-
-Otherwise, if the most recent \typestr{FileEnableCompression} message
-included non-zero \typestr{enable-flag}, then the client is allowed to
-request non-zero compression level and may send compressed data in
-\typestr{FileUploadData} messages.
-
-This message should not have effect on file transfers that are already
-in progress.
-
-\begin{quote}
-Note: this message was introduced to preserve compatibility with
-servers that do not support compression in file transfers. Old servers
-expect uncompressed data in \typestr{FileUploadData} messages but new
-clients might send it compressed. Using
-\typestr{FileEnableCompression} message makes sure the client will
-never compress upload data unless enabled explicitly by the server.
-\end{quote}
-
-\newpage
-\section{Protocol messages (client to server)}
-
-\subsection{EnableContinuousUpdates}
-\begin{verbatim}
-Message type: 150
-Name signature: "CUC_ENCU"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-This message either enables continuous updates for the specified
-pixels, or disables continuous updates completely.
-
-If \typestr{enable-flag} is set to true (non-zero), continuous updates
-are enabled for the framebuffer area specified by
-\typestr{x-position}, \typestr{y-position}, \typestr{width} and
-\typestr{height}.
-
-If \typestr{enable-flag} is set to false (zero), continuous updates
-are to be completely disabled. In this case, the values of
-\typestr{x-position}, \typestr{y-position}, \typestr{width} and
-\typestr{height} are not used.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 150 & \typestr{message-type} \\
-1 & U8 & & \typestr{enable-flag} \\
-2 & U16 & & \typestr{x-position} \\
-2 & U16 & & \typestr{y-position} \\
-2 & U16 & & \typestr{width} \\
-2 & U16 & & \typestr{height} \\
-\hline\end{tabular}
-
-Normally, the server would send \typestr{FramebufferUpdate} messages
-only in response to corresponding \typestr{FramebufferUpdateRequest}
-messages received from the client. In contrast, when continuous
-updates are in effect, the server is allowed to send a
-\typestr{FramebufferUpdate} message at any time, not waiting for
-client requests.
-
-Initially, contunuous updates are disabled since they violate the
-original RFB protocol. To enable this mode, the client sends an
-\typestr{EnableContinuousUpdates} message with non-zero
-\typestr{enable-flag}. On receiving such a message, the server
-immediately enables continuous updates for the area specified by
-\typestr{x-position}, \typestr{y-position}, \typestr{width} and
-\typestr{height}. The server will not send updates for pixels outside
-of this area.
-
-If continuous updates are already in effect, the client may always
-change the coordinates of currently updated area by sending another
-\typestr{EnableContinuousUpdates} message with non-zero
-\typestr{enable-flag}. On receiving each next message, the server
-discards old coordinates and re-enables continuous updates for the
-newly specified area.
-
-If \typestr{enable-flag} is set to zero, the server should disable
-continuous updates completely and respond with an
-\typestr{EndOfContinuousUpdates} message. After the client has
-received an \typestr{EndOfContinuousUpdates}, it can be sure that
-there will be no more updates without prior update requests.
-
-The client may send a message with zero \typestr{enable-flag} even if
-continuous updates were disabled already. In response, the server
-should send an \typestr{EndOfContinuousUpdates} each time it is asked
-to disable continuous updates. This behavior may be useful for
-protocol synchronization purposes.
-
-While continuous updates are in effect, the server completely ignores
-incremental update requests (\typestr{FramebufferUpdateRequest} with
-\typestr{incremental} flag set to non-zero). Such requests are ignored
-regardless of the coordinates specified within the request. Thus, it's
-not possible to request an incremental update for pixels outside of
-current continuously updated area.
-
-Non-incremental update requests (\typestr{FramebufferUpdateRequest}
-with \typestr{incremental} flag set to zero) should work as usual.
-That is, in response to such requests, the server should send the
-entire contents of the specified area as soon as possible.
-
-FIXME: Respect incremental update requests?
-
-FIXME: Decide how to handle framebuffer size changes.
-
-FIXME: Decide how to change pixel format while continuously updating.
-
-See also:
-\begin{itemize}
-\item \typestr{EndOfContinuousUpdates} server-to-client message.
-\end{itemize}
-
-\newpage
-\section{Protocol messages (server to client)}
-
-\subsection{EndOfContinuousUpdates}
-\begin{verbatim}
-Message type: 150
-Name signature: "CUS_EOCU"
-Vendor signature: "TGHT"
-\end{verbatim}
-
-The server sends \typestr{EndOfContinuousUpdates} message in response
-to each \typestr{EnableContinuousUpdates} message if and only if its
-\typestr{enable-flag} was set to false (zero).
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 & 150 & \typestr{message-type} \\
-\hline\end{tabular}
-
-The message informs the client that it should not expect unsolicited
-framebuffer updates any more. In other words, after this message,
-there will be no framebuffer updates with no corresponding update
-requests received from the client.
-
-Note that this message should be sent each time the client is asking
-to disable continuous updates, even if continuous updates were not
-previously enabled.
-
-FIXME: Allow unsolicited EndOfContinuousUpdates messages?
-
-See also:
-\begin{itemize}
-\item \typestr{EnableContinuousUpdates} client-to-server message.
-\end{itemize}
-
-\end{document}
diff --git a/unix/vncconfig/vncconfig.man b/unix/vncconfig/vncconfig.man
index 10a487a..6695be3 100644
--- a/unix/vncconfig/vncconfig.man
+++ b/unix/vncconfig/vncconfig.man
@@ -1,4 +1,4 @@
-.TH vncconfig 1 "17 Apr 2006" "TigerVNC" "Virtual Network Computing"
+.TH vncconfig 1 "" "TigerVNC" "Virtual Network Computing"
.SH NAME
vncconfig \- configure and control a VNC server
.SH SYNOPSIS
@@ -64,26 +64,26 @@
server). \fIhost\fP is the host where the listening viewer is running. If it's
not listening on the default port of 5500, you can specify \fIhost:port\fP
instead.
-
+.
.TP
.B \-disconnect
This causes Xvnc to disconnect from all viewers so that the VNC desktop is not
displayed anywhere.
-
+.
.TP
[\fB-set\fP] \fIXvnc-param\fP=\fIvalue\fP
Sets an Xvnc parameter to the given value. Note that some of Xvnc's parameters
are read only once at startup so that changing them in this way may not have
any effect.
-
+.
.TP
.B \-list
Lists all the parameters supported by Xvnc.
-
+.
.TP
.B \-get \fIXvnc-param\fP
Prints the current value of the given Xvnc parameter.
-
+.
.TP
.B \-desc \fIXvnc-param\fP
Prints a short description of the given Xvnc parameter.
@@ -102,11 +102,11 @@
.TP
.B \-display \fIXdisplay\fP
Specifies the Xvnc server to control.
-
+.
.TP
.B \-nowin
When run as a "helper" app, don't put up a window.
-
+.
.TP
.B \-iconic
When run as a "helper" app, make the window iconified at startup.
@@ -120,9 +120,10 @@
http://www.tigervnc.org
.SH AUTHOR
-Tristan Richardson, RealVNC Ltd.
+Tristan Richardson, RealVNC Ltd. and others.
VNC was originally developed by the RealVNC team while at Olivetti
Research Ltd / AT&T Laboratories Cambridge. TightVNC additions were
-implemented by Constantin Kaplinsky. Many other people participated in
-development, testing and support.
+implemented by Constantin Kaplinsky. Many other people have since
+participated in development, testing and support. This manual is part
+of the TigerVNC software suite.
diff --git a/unix/vncpasswd/vncpasswd.man b/unix/vncpasswd/vncpasswd.man
index 27c04fe..e9250fd 100644
--- a/unix/vncpasswd/vncpasswd.man
+++ b/unix/vncpasswd/vncpasswd.man
@@ -1,4 +1,4 @@
-.TH vncpasswd 1 "09 Jul 2010" "TigerVNC" "Virtual Network Computing"
+.TH vncpasswd 1 "" "TigerVNC" "Virtual Network Computing"
.SH NAME
vncpasswd \- change the VNC password
.SH SYNOPSIS
@@ -47,13 +47,10 @@
http://www.tigervnc.org
.SH AUTHORS
-Tristan Richardson, RealVNC Ltd.
-.br
-Antoine Martin
-.br
-D. R. Commander
+Tristan Richardson, RealVNC Ltd., Antoine Martin, D. R. Commander and others.
VNC was originally developed by the RealVNC team while at Olivetti
Research Ltd / AT&T Laboratories Cambridge. TightVNC additions were
-implemented by Constantin Kaplinsky. Many other people participated in
-development, testing and support.
+implemented by Constantin Kaplinsky. Many other people have since
+participated in development, testing and support. This manual is part
+of the TigerVNC software suite.
diff --git a/unix/vncserver.man b/unix/vncserver.man
index 7654380..04a060e 100644
--- a/unix/vncserver.man
+++ b/unix/vncserver.man
@@ -1,4 +1,4 @@
-.TH vncserver 1 "13 Mar 2011" "TigerVNC" "Virtual Network Computing"
+.TH vncserver 1 "" "TigerVNC" "Virtual Network Computing"
.SH NAME
vncserver \- start or stop a VNC server
.SH SYNOPSIS
@@ -19,6 +19,8 @@
.RI [ Xvnc-options... ]
.br
.BI "vncserver \-kill :" display#
+.br
+.BI "vncserver \-list"
.SH DESCRIPTION
.B vncserver
is used to start a VNC (Virtual Network Computing) desktop.
@@ -54,24 +56,24 @@
change it with this option. The desktop name option is passed to the xstartup
script via the $VNCDESKTOP environment variable, which allows you to run a
different set of applications depending on the name of the desktop.
-
+.
.TP
.B \-geometry \fIwidth\fPx\fIheight\fP
Specify the size of the VNC desktop to be created. Default is 1024x768.
-
+.
.TP
.B \-depth \fIdepth\fP
Specify the pixel depth (in bits) of the VNC desktop to be created. Default is
24. Other possible values are 8, 15 and 16 - anything else is likely to cause
strange behaviour by applications.
-
+.
.TP
.B \-pixelformat \fIformat\fP
Specify pixel format for Xvnc to use (BGRnnn or RGBnnn). The default for
depth 8 is BGR233 (meaning the most significant two bits represent blue, the
next three green, and the least significant three represent red), the default
for depth 16 is RGB565, and the default for depth 24 is RGB888.
-
+.
.TP
.B \-cc 3
As an alternative to the default TrueColor visual, this allows you to run an
@@ -80,7 +82,7 @@
work on such a display. Values other than 3 (PseudoColor) and 4 (TrueColor)
for the \-cc option may result in strange behaviour, and PseudoColor desktops
must have an 8-bit depth.
-
+.
.TP
.B \-kill :\fIdisplay#\fP
This kills a VNC desktop previously started with vncserver. It does this by
@@ -90,7 +92,7 @@
option ignores anything preceding the first colon (":") in the display
argument. Thus, you can invoke "vncserver \-kill $DISPLAY", for example at the
end of your xstartup file after a particular application exits.
-
+.
.TP
.B \-fp \fIfont-path\fP
If the vncserver script detects that the X Font Server (XFS) is running, it
@@ -106,19 +108,23 @@
.B \-fp
argument allows you to override the above fallback logic and specify a font
path for Xvnc to use.
-
+.
.TP
.B \-fg
Runs Xvnc as a foreground process. This has two effects: (1) The VNC server
can be aborted with CTRL-C, and (2) the VNC server will exit as soon as the
user logs out of the window manager in the VNC session. This may be necessary
when launching TigerVNC from within certain grid computing environments.
-
+.
.TP
.B \-autokill
Automatically kill Xvnc whenever the xstartup script exits. In most cases,
this has the effect of terminating Xvnc when the user logs out of the window
manager.
+.
+.TP
+.B \-list
+Lists all VNC desktops started by vncserver.
.SH FILES
Several VNC-related files are found in the directory $HOME/.vnc:
@@ -148,11 +154,10 @@
http://www.tigervnc.org
.SH AUTHOR
-Tristan Richardson, RealVNC Ltd.
-.br
-D. R. Commander
+Tristan Richardson, RealVNC Ltd., D. R. Commander and others.
VNC was originally developed by the RealVNC team while at Olivetti
Research Ltd / AT&T Laboratories Cambridge. TightVNC additions were
-implemented by Constantin Kaplinsky. Many other people participated in
-development, testing and support.
+implemented by Constantin Kaplinsky. Many other people have since
+participated in development, testing and support. This manual is part
+of the TigerVNC software suite.
diff --git a/unix/x0vncserver/Geometry.cxx b/unix/x0vncserver/Geometry.cxx
index 94e2df6..adc72c3 100644
--- a/unix/x0vncserver/Geometry.cxx
+++ b/unix/x0vncserver/Geometry.cxx
@@ -32,11 +32,6 @@
"If the argument is empty, full screen is shown to VNC clients.",
"");
-StringParameter Geometry::m_videoAreaParam("VideoArea",
- "Screen area to be handled as video. "
- "Format is <width>x<height>+<offset_x>+<offset_y>.",
- "");
-
Geometry::Geometry(int fullWidth, int fullHeight)
: m_fullWidth(fullWidth),
m_fullHeight(fullHeight),
@@ -58,25 +53,6 @@
// Everything went good so far.
vlog.info("Desktop geometry is set to %dx%d+%d+%d",
width(), height(), offsetLeft(), offsetTop());
-
- // Handle the VideoArea parameter, save the result in m_videoRect.
- // Note that we log absolute coordinates but save relative ones.
- param = m_videoAreaParam.getData();
- bool videoAreaSpecified = (strlen(param) > 0);
- if (videoAreaSpecified) {
- Rect absVideoRect = parseString(param);
- if (!absVideoRect.is_empty()) {
- vlog.info("Video area set to %dx%d+%d+%d",
- absVideoRect.width(), absVideoRect.height(),
- absVideoRect.tl.x, absVideoRect.tl.y);
- Point base(-offsetLeft(), -offsetTop());
- m_videoRect = absVideoRect.translate(base);
- } else {
- vlog.info("Video area was not set");
- m_videoRect.clear();
- }
- }
- delete[] param;
}
Rect Geometry::parseString(const char *arg) const
diff --git a/unix/x0vncserver/Geometry.h b/unix/x0vncserver/Geometry.h
index 69ab687..9caeeba 100644
--- a/unix/x0vncserver/Geometry.h
+++ b/unix/x0vncserver/Geometry.h
@@ -45,25 +45,16 @@
// Return the same information as a Rect structure.
const Rect& getRect() const { return m_rect; }
- // Return coordinates of the video rectangle if one was set with the
- // "VideoArea" parameter. The coordinates are relative to the whole
- // rectangle as returned by getRect(). In other words, the
- // coordinate (0, 0) corresponds to the top left corner of the
- // rectangle shown to RFB clients.
- const Rect& getVideoRect() const { return m_videoRect; }
-
protected:
// Parse a string, extract size and coordinates,
// and return that rectangle clipped to m_rect.
Rect parseString(const char *arg) const;
static StringParameter m_geometryParam;
- static StringParameter m_videoAreaParam;
int m_fullWidth;
int m_fullHeight;
Rect m_rect;
- Rect m_videoRect;
};
#endif // __GEOMETRY_H__
diff --git a/unix/x0vncserver/x0vncserver.man b/unix/x0vncserver/x0vncserver.man
index e98030e..87fedf3 100644
--- a/unix/x0vncserver/x0vncserver.man
+++ b/unix/x0vncserver/x0vncserver.man
@@ -1,4 +1,4 @@
-.TH X0VNCSERVER 1 "Dec 23, 2008" "TigerVNC" "TigerVNC Manual"
+.TH X0VNCSERVER 1 "" "TigerVNC" "TigerVNC Manual"
.SH NAME
x0vncserver \- TigerVNC Server for X displays
.SH SYNOPSIS
@@ -12,6 +12,11 @@
TigerVNC or compatible viewers. Unlike \fBXvnc\fP(1), it does not create a
virtual display. Instead, it just shares an existing X server (typically,
that one connected to the physical screen).
+
+XDamage will be used if the existing X server supports it. Otherwise
+.B x0vncserver
+will fall back to polling the screen for changes.
+
.SH OPTIONS
.B x0vncserver
interprets the command line as a list of parameters with optional values.
@@ -21,13 +26,16 @@
.PP
There are several forms of specifying parameters in the command line (here we
use `\fISomeParameter\fP' as an example parameter name):
+
.TP
.B -\fISomeParameter\fP
Enable the parameter, turn the feature on. This form can be used with
parameters that simply enable or disable some feature.
+.
.TP
.B -\fISomeParameter\fP=0
Disable the parameter, turn the feature off.
+.
.TP
.B -\fISomeParameter\fP=\fIvalue\fP
Assign the specified \fIvalue\fP to the parameter. The leading dash can be
@@ -35,15 +43,19 @@
.PP
Parameter names are case-insensitive, their order in the command line can be
arbitrary.
+
.SH PARAMETERS
+
.TP
.B display
The X display name. If not specified, it defaults to the value of the
DISPLAY environment variable.
+.
.TP
.B rfbport
TCP port to listen for incoming VNC connections (RFB protocol). The default
port is 5900.
+.
.TP
.B Log
Specifies which log output should be directed to which target logger, and the
@@ -51,6 +63,7 @@
Default is \fB*:stderr:30\fP (log everything to stderr, set log level to 30).
Log level should be a value between 0 and 100, higher levels produce more
output.
+.
.TP
.B HostsFile
This parameter allows to specify a file name with IP access control rules.
@@ -63,64 +76,103 @@
\fINetmask\fP is optional and can be specified either in dotted format
(e.g. /255.255.255.0), or as a single number of bits (e.g. /24). Default is
to accept connections from any IP address.
+.
.TP
.B SecurityTypes
Specify which security scheme to use for incoming connections. Valid values
-are \fBNone\fP and \fBVncAuth\fP. Default is \fBVncAuth\fP.
+are a comma separated list of \fBNone\fP, \fBVncAuth\fP, \fBPlain\fP,
+\fBTLSNone\fP, \fBTLSVnc\fP, \fBTLSPlain\fP, \fBX509None\fP, \fBX509Vnc\fP
+and \fBX509Plain\fP. Default is \fBVncAuth,TLSVnc\fP.
+.
.TP
-.B PasswordFile
+.B rfbauth, PasswordFile
Password file for VNC authentication. There is no default, you should
specify the password file explicitly. Password file should be created with
the \fBvncpasswd\fP(1) utility.
+.
.TP
.B Password
Obfuscated binary encoding of the password which clients must supply to
access the server. Using this parameter is insecure, use \fBPasswordFile\fP
parameter instead.
+.
+.TP
+.B PlainUsers
+A comma separated list of user names that are allowed to authenticate via
+any of the "Plain" security types (Plain, TLSPlain, etc.). Specify \fB*\fP
+to allow any user to authenticate using this security type. Default is to
+deny all users.
+.
+.TP
+.B pam_service, PAMService
+PAM service name to use when authentication users using any of the "Plain"
+security types. Default is \fBvnc\fP.
+.
+.TP
+.B X509Cert
+Path to a X509 certificate in PEM format to be used for all X509 based
+security types (X509None, X509Vnc, etc.).
+.
+.TP
+.B X509Key
+Private key counter part to the certificate given in \fBX509Cert\fP. Must
+also be in PEM format.
+.
.TP
.B BlacklistThreshold
The number of unauthenticated connection attempts allowed from any individual
host before that host is black-listed. Default is 5.
+.
.TP
.B BlacklistTimeout
The initial timeout applied when a host is first black-listed. The host
cannot re-attempt a connection until the timeout expires. Default is 10.
+.
.TP
.B QueryConnect
Prompt the local user to accept or reject incoming connections. Default is
off.
+.
.TP
.B QueryConnectTimeout
Number of seconds to show the Accept Connection dialog before rejecting the
connection. Default is 10.
+.
.TP
.B AlwaysShared
Always treat incoming connections as shared, regardless of the
client-specified setting. Default is off.
+.
.TP
.B NeverShared
Never treat incoming connections as shared, regardless of the
client-specified setting. Default is off.
+.
.TP
.B DisconnectClients
Disconnect existing clients if an incoming connection is non-shared. If
combined with \fBNeverShared\fP then new connections will be refused while
there is a client active. Default is on.
+.
.TP
.B AcceptKeyEvents
Accept key press and release events from clients. Default is on.
+.
.TP
.B AcceptPointerEvents
Accept pointer events from clients. Default is on.
+.
.TP
.B RemapKeys
Comma-separated list of incoming keysyms to remap. Mappings are expressed as
two hex values, prefixed by \fB0x\fP, and separated by \fB->\fP (`dash' and
`greater than' characters).
+.
.TP
.B Protocol3.3
Always use RFB protocol version 3.3 for backwards compatibility with
badly-behaved clients. Default is off.
+.
.TP
.B Geometry
This option specifies the screen area that will be shown to VNC clients. The
@@ -130,102 +182,106 @@
right and/or from the bottom of the screen. Offsets are optional, +0+0 is
assumed by default (top left corner). If the argument is empty, full screen
is shown to VNC clients (this is the default).
+.
.TP
.B MaxProcessorUsage
Maximum percentage of CPU time to be consumed when polling the
screen. Default is 35.
+.
.TP
.B PollingCycle
Milliseconds per one polling cycle. Actual interval may be dynamically
adjusted to satisfy \fBMaxProcessorUsage\fP setting. Default is 30.
+.
.TP
-.B VideoArea
-This option specifies the screen area that will be handled as video. The
-format is
-.B \fIwidth\fPx\fIheight\fP+\fIxoffset\fP+\fIyoffset\fP
-, where `+' signs can be replaced with `\-' signs to specify offsets from the
-right and/or from the bottom of the screen. Offsets are optional, +0+0 is
-assumed by default (top left corner). Video area is not checked for actual
-changes, it is assumed to be changing continuously and is sent in each screen
-update. Normally, video area is compressed with JPEG (if allowed by the
-client). Note that this setting can be overriden by TigerVNC clients
-supporting VideoRectangleSelection protocol extension. In other words,
-clients may choose video selection themselves, but if they do not, then the
-\fBVideoArea\fP parameter will take effect. If the argument is empty, no
-video area is set (this is the default).
+.B DeferUpdate
+x0vncserver uses a "deferred update" mechanism which enhances performance in
+many cases. After any change to the framebuffer, x0vncserver waits for this
+number of milliseconds (default 1) before sending an update to any waiting
+clients. This means that more changes tend to get coalesced together in a
+single update. Setting it to 0 results in the same behaviour as earlier
+versions of x0vncserver, where the first change to the framebuffer causes an
+immediate update to any waiting clients.
+.
.TP
-.B VideoPriority
-Specify the priority of sending video updates. \fBx0vncserver\fP can be
-instructed to treat certain rectangular part of the screen as a video area
-and handle it in a special way for improved performance (see documentation on
-the \fBVideoArea\fP parameter). \fBVideoPriority\fP value controls how often
-video area will be sent to clients as compared to the rest of the screen.
-The priority must be an integer between 0 and 8, and the default value is 2.
-
-\fBVideoPriority\fP set to 1 gives the same priority both to video and to
-other pixels. Higher values give more priority to video. For example, the
-value 5 specifies that the rate of sending video will be five times higher
-than the rate of updating the rest of the screen. If \fBVideoPriority\fP is
-set to 0, it gives equal priority to video and other updates (just like the
-value 1) and also disables special encoding for video data. In other words,
-\fBVideoPriority\fP video area will be sent as a part of other screen
-contents.
+.B AlwaysSetDeferUpdateTimer
+Keep delaying sending the screen update to the client(s) each time the
+screen is updated. Otherwise the delay is from the first update. Default
+is off.
+.
.TP
.B CompareFB
-Perform pixel comparison on framebuffer to reduce unnecessary updates.
-Default is on.
+Perform pixel comparison on framebuffer to reduce unnecessary updates. Can
+be either \fB0\fP (off), \fB1\fP (always) or \fB2\fP (auto). Default is
+\fB2\fP.
+.
.TP
.B UseSHM
Use MIT-SHM extension if available. Using that extension accelerates reading
the screen. Default is on.
+.
.TP
.B OverlayMode
Use overlay mode in IRIX or Solaris (does not have effect in other systems).
This enables system-specific access to complete full-color version of the
screen (the default X visual often provides 256 colors). Also, in overlay
mode, \fBx0vncserver\fP can show correct mouse cursor. Default is on.
-.TP
-.B UseHardwareJPEG
-Use hardware-accelerated JPEG compressor for video if available.
-\fBx0vncserver\fP can be instructed to treat certain rectangular part of the
-screen as a video area and handle it in a special way for improved
-performance. If the client supports Tight encoding and JPEG compression,
-such video areas will be sent as JPEG-encoded rectangles. And if this option
-is on, compression will be hardware-accelerated (currently, supported only in
-SGI/IRIX equipped with appropriate hardware). Default is on.
+.
.TP
.B ZlibLevel
Zlib compression level for ZRLE encoding (it does not affect Tight encoding).
Acceptable values are between 0 and 9. Default is to use the standard
compression level provided by the \fBzlib\fP(3) compression library.
+.
.TP
.B ImprovedHextile
Use improved compression algorithm for Hextile encoding which achieves better
compression ratios by the cost of using slightly more CPU time. Default is
on.
+.
.TP
.B IdleTimeout
The number of seconds after which an idle VNC connection will be dropped
(zero means no timeout). Default is 0.
+.
.TP
.B MaxDisconnectionTime
Terminate when no client has been connected for \fIN\fP seconds. Default is
0.
+.
.TP
.B MaxConnectionTime
Terminate when a client has been connected for \fIN\fP seconds. Default is
0.
+.
.TP
.B MaxIdleTime
Terminate after \fIN\fP seconds of user inactivity. Default is 0.
+.
.TP
.B ClientWaitTimeMillis
The number of milliseconds to wait for a client which is no longer
responding. Default is 20000.
+.
+.TP
+.B AcceptCutText
+.TQ
+.B SendCutText
+.TQ
+.B MaxCutText
+Currently unused.
+
.SH SEE ALSO
.BR Xvnc (1),
.BR vncpasswd (1),
.br
http://www.tigervnc.org/
+
.SH AUTHOR
-This manual page was written by Constantin Kaplinsky.
+Constantin Kaplinsky and others.
+
+VNC was originally developed by the RealVNC team while at Olivetti
+Research Ltd / AT&T Laboratories Cambridge. TightVNC additions were
+implemented by Constantin Kaplinsky. Many other people have since
+participated in development, testing and support. This manual is part
+of the TigerVNC software suite.
diff --git a/unix/xserver/hw/vnc/Xvnc.man b/unix/xserver/hw/vnc/Xvnc.man
index 356925d..18957bf 100644
--- a/unix/xserver/hw/vnc/Xvnc.man
+++ b/unix/xserver/hw/vnc/Xvnc.man
@@ -1,4 +1,4 @@
-.TH Xvnc 1 "17 Apr 2006" "TigerVNC" "Virtual Network Computing"
+.TH Xvnc 1 "" "TigerVNC" "Virtual Network Computing"
.SH NAME
Xvnc \- the X VNC server
.SH SYNOPSIS
@@ -33,38 +33,29 @@
.TP
.B \-geometry \fIwidth\fPx\fIheight\fP
Specify the size of the desktop to be created. Default is 1024x768.
-
+.
.TP
.B \-depth \fIdepth\fP
Specify the pixel depth in bits of the desktop to be created. Default is 24,
other possible values are 8, 15, and 16 - anything else is likely to cause
strange behaviour by applications.
-
+.
.TP
.B \-pixelformat \fIformat\fP
Specify pixel format for server to use (BGRnnn or RGBnnn). The default for
depth 8 is BGR233 (meaning the most significant two bits represent blue, the
next three green, and the least significant three represent red), the default
for depth 16 is RGB565 and for depth 24 is RGB888.
-
+.
.TP
.B \-interface \fIIP address\fP or \-i \fIIP address\fP
Listen on interface. By default Xvnc listens on all available interfaces.
-
-.TP
-.B \-cc 3
-As an alternative to the default TrueColor visual, this allows you to run an
-Xvnc server with a PseudoColor visual (i.e. one which uses a color map or
-palette), which can be useful for running some old X applications which only
-work on such a display. Values other than 3 (PseudoColor) and 4 (TrueColor)
-for the \-cc option may result in strange behaviour, and PseudoColor desktops
-must be 8 bits deep (i.e. \fB-depth 8\fP).
-
+.
.TP
.B \-inetd
This significantly changes Xvnc's behaviour so that it can be launched from
inetd. See the section below on usage with inetd.
-
+.
.TP
.B \-help
List all the options and parameters
@@ -84,13 +75,13 @@
.B \-desktop \fIdesktop-name\fP
Each desktop has a name which may be displayed by the viewer. It defaults to
"x11".
-
+.
.TP
.B \-rfbport \fIport\fP
Specifies the TCP port on which Xvnc listens for connections from viewers (the
protocol used in VNC is called RFB - "remote framebuffer"). The default is
5900 plus the display number.
-
+.
.TP
.B \-rfbwait \fItime\fP, \-ClientWaitTimeMillis \fItime\fP
@@ -98,7 +89,7 @@
necessary because Xvnc is single-threaded and sometimes blocks until the viewer
has finished sending or receiving a message - note that this does not mean an
update will be aborted after this time. Default is 20000 (20 seconds).
-
+.
.TP
.B \-httpd \fIdirectory\fP
Run a mini-HTTP server which serves files from the given directory. Normally
@@ -106,20 +97,20 @@
with a .vnc extension will have certain substitutions made so that a single
installation of the Java VNC viewer can be served by separate instances of
Xvnc.
-
+.
.TP
.B \-httpPort \fIport\fP
Specifies the port on which the mini-HTTP server runs. Default is 5800 plus
the display number.
-
+.
.TP
.B \-rfbauth \fIpasswd-file\fP, \-PasswordFile \fIpasswd-file\fP
Specifies the file containing the password used to authenticate viewers. The
file is accessed each time a connection comes in, so it can be changed on the
fly via \fBvncpasswd\fP(1).
-
+.
.TP
-.B \-deferUpdate \fItime\fP
+.B \-DeferUpdate \fItime\fP
Xvnc uses a "deferred update" mechanism which enhances performance in many
cases. After any change to the framebuffer, Xvnc waits for this number of
milliseconds (default 1) before sending an update to any waiting clients. This
@@ -127,64 +118,139 @@
update. Setting it to 0 results in the same behaviour as earlier versions of
Xvnc, where the first change to the framebuffer causes an immediate update to
any waiting clients.
-
+.
+.TP
+.B \-AlwaysSetDeferUpdateTimer
+Keep delaying sending the screen update to the client(s) each time the
+screen is updated. Otherwise the delay is from the first update. Default
+is off.
+.
.TP
.B \-SendCutText
Send clipboard changes to clients (default is on). Note that you must also run
\fBvncconfig\fP(1) to get the clipboard to work.
-
+.
.TP
.B \-AcceptCutText
Accept clipboard updates from clients (default is on). Note that you must also
run \fBvncconfig\fP(1) to get the clipboard to work.
-
+.
+.TP
+.B \-MaxCutText \fIbytes\fP
+The maximum size of a clipboard update that will be accepted from a client.
+Default is \fB262144\fP.
+.
.TP
.B \-AcceptPointerEvents
Accept pointer press and release events from clients (default is on).
-
+.
.TP
.B \-AcceptKeyEvents
Accept key press and release events from clients (default is on).
-
+.
.TP
.B \-DisconnectClients
Disconnect existing clients if an incoming connection is non-shared (default is
on). If \fBDisconnectClients\fP is false, then a new non-shared connection will
be refused while there is a client active. When combined with
\fBNeverShared\fP this means only one client is allowed at a time.
-
+.
.TP
.B \-NeverShared
Never treat incoming connections as shared, regardless of the client-specified
setting (default is off).
-
+.
.TP
.B \-AlwaysShared
Always treat incoming connections as shared, regardless of the client-specified
setting (default is off).
-
+.
.TP
.B \-Protocol3.3
Always use protocol version 3.3 for backwards compatibility with badly-behaved
clients (default is off).
-
+.
.TP
.B \-CompareFB
Perform pixel comparison on framebuffer to reduce unnecessary updates (default
is on).
-
+.
+.TP
+.B \-ZlibLevel
+Zlib compression level for ZRLE encoding (it does not affect Tight encoding).
+Acceptable values are between 0 and 9. Default is to use the standard
+compression level provided by the \fBzlib\fP(3) compression library.
+.
+.TP
+.B \-ImprovedHextile
+Use improved compression algorithm for Hextile encoding which achieves better
+compression ratios by the cost of using slightly more CPU time. Default is
+on.
+.
.TP
.B \-SecurityTypes \fIsec-types\fP
-Specify which security schemes to use separated by commas. At present only
-"None" and "VncAuth" are supported. The default is "VncAuth" - note that if
-you want a server which does not require a password, you must set this
-parameter to "None".
-
+Specify which security scheme to use for incoming connections. Valid values
+are a comma separated list of \fBNone\fP, \fBVncAuth\fP, \fBPlain\fP,
+\fBTLSNone\fP, \fBTLSVnc\fP, \fBTLSPlain\fP, \fBX509None\fP, \fBX509Vnc\fP
+and \fBX509Plain\fP. Default is \fBVncAuth,TLSVnc\fP.
+.
+.TP
+.B \-Password \fIpassword\fP
+Obfuscated binary encoding of the password which clients must supply to
+access the server. Using this parameter is insecure, use \fBPasswordFile\fP
+parameter instead.
+.
+.TP
+.B \-PlainUsers \fIuser-list\fP
+A comma separated list of user names that are allowed to authenticate via
+any of the "Plain" security types (Plain, TLSPlain, etc.). Specify \fB*\fP
+to allow any user to authenticate using this security type. Default is to
+deny all users.
+.
+.TP
+.B \-pam_service \fIname\fP, \-PAMService \fIname\fP
+PAM service name to use when authentication users using any of the "Plain"
+security types. Default is \fBvnc\fP.
+.
+.TP
+.B \-X509Cert \fIpath\fP
+Path to a X509 certificate in PEM format to be used for all X509 based
+security types (X509None, X509Vnc, etc.).
+.
+.TP
+.B \-X509Key \fIpath\fP
+Private key counter part to the certificate given in \fBX509Cert\fP. Must
+also be in PEM format.
+.
+.TP
+.B \-BlacklistThreshold \fIcount\fP
+The number of unauthenticated connection attempts allowed from any individual
+host before that host is black-listed. Default is 5.
+.
+.TP
+.B \-BlacklistTimeout \fIseconds\fP
+The initial timeout applied when a host is first black-listed. The host
+cannot re-attempt a connection until the timeout expires. Default is 10.
+.
.TP
.B \-IdleTimeout \fIseconds\fP
The number of seconds after which an idle VNC connection will be dropped
(default is 0, which means that idle connections will never be dropped).
-
+.
+.TP
+.B \-MaxDisconnectionTime \fIseconds\fP
+Terminate when no client has been connected for \fIN\fP seconds. Default is
+0.
+.
+.TP
+.B \-MaxConnectionTime \fIseconds\fP
+Terminate when a client has been connected for \fIN\fP seconds. Default is
+0.
+.
+.TP
+.B \-MaxIdleTime \fIseconds\fP
+Terminate after \fIN\fP seconds of user inactivity. Default is 0.
+.
.TP
.B \-QueryConnect
Prompts the user of the desktop to explicitly accept or reject incoming
@@ -195,21 +261,25 @@
QueryConnect to be supported by the \fBvnc.so\fP(1) module or
\fBXvnc\fP(1) program. The \fBx0vncserver\fP(1) program does not require
\fBvncconfig\fP(1) to be running.
-
+.
+.TP
+.B \-QueryConnectTimeout \fIseconds\fP
+Number of seconds to show the Accept Connection dialog before rejecting the
+connection. Default is \fB10\fP.
+.
.TP
.B \-localhost
Only allow connections from the same machine. Useful if you use SSH and want to
-stop non-SSH connections from any other hosts. See the guide to using VNC with
-SSH on the web site.
-
+stop non-SSH connections from any other hosts.
+.
.TP
-.B \-log \fIlogname\fP:\fIdest\fP:\fIlevel\fP
+.B \-Log \fIlogname\fP:\fIdest\fP:\fIlevel\fP
Configures the debug log settings. \fIdest\fP can currently be \fBstderr\fP or
\fBstdout\fP, and \fIlevel\fP is between 0 and 100, 100 meaning most verbose
output. \fIlogname\fP is usually \fB*\fP meaning all, but you can target a
specific source file if you know the name of its "LogWriter". Default is
\fB*:stderr:30\fP.
-
+.
.TP
.B \-RemapKeys \fImapping
Sets up a keyboard mapping.
@@ -223,6 +293,13 @@
is a hexadecimal keysym. For example, to exchange the " and @ symbols you would specify the following:
.IP "" 10
RemapKeys=0x22<>0x40
+.
+.TP
+.B \-AvoidShiftNumLock
+Key affected by NumLock often require a fake Shift to be inserted in order
+for the correct symbol to be generated. Turning on this option avoids these
+extra fake Shift events but may result in a slightly different symbol
+(e.g. a Return instead of a keypad Enter).
.SH USAGE WITH INETD
By configuring the \fBinetd\fP(1) service appropriately, Xvnc can be launched
@@ -280,9 +357,10 @@
http://www.tigervnc.org
.SH AUTHOR
-Tristan Richardson, RealVNC Ltd.
+Tristan Richardson, RealVNC Ltd. and others.
VNC was originally developed by the RealVNC team while at Olivetti
Research Ltd / AT&T Laboratories Cambridge. TightVNC additions were
-implemented by Constantin Kaplinsky. Many other people participated in
-development, testing and support.
+implemented by Constantin Kaplinsky. Many other people have since
+participated in development, testing and support. This manual is part
+of the TigerVNC software suite.
diff --git a/vncviewer/OptionsDialog.cxx b/vncviewer/OptionsDialog.cxx
index e21f2dd..b9752aa 100644
--- a/vncviewer/OptionsDialog.cxx
+++ b/vncviewer/OptionsDialog.cxx
@@ -252,8 +252,8 @@
}
}
- caInput->value(CSecurityTLS::x509ca);
- crlInput->value(CSecurityTLS::x509crl);
+ caInput->value(CSecurityTLS::X509CA);
+ crlInput->value(CSecurityTLS::X509CRL);
handleX509(encX509Checkbox, this);
#endif
@@ -368,8 +368,8 @@
SecurityClient::secTypes.setParam(security.ToString());
- CSecurityTLS::x509ca.setParam(caInput->value());
- CSecurityTLS::x509crl.setParam(crlInput->value());
+ CSecurityTLS::X509CA.setParam(caInput->value());
+ CSecurityTLS::X509CRL.setParam(crlInput->value());
#endif
/* Input */
diff --git a/vncviewer/parameters.cxx b/vncviewer/parameters.cxx
index 68ddee1..b7b33b5 100644
--- a/vncviewer/parameters.cxx
+++ b/vncviewer/parameters.cxx
@@ -144,8 +144,8 @@
VoidParameter* parameterArray[] = {
#ifdef HAVE_GNUTLS
- &CSecurityTLS::x509ca,
- &CSecurityTLS::x509crl,
+ &CSecurityTLS::X509CA,
+ &CSecurityTLS::X509CRL,
#endif // HAVE_GNUTLS
&SecurityClient::secTypes,
&dotWhenNoCursor,
diff --git a/vncviewer/vncviewer.man b/vncviewer/vncviewer.man
index f8796da..5dd3b45 100644
--- a/vncviewer/vncviewer.man
+++ b/vncviewer/vncviewer.man
@@ -1,4 +1,4 @@
-.TH vncviewer 1 "05 May 2004" "TigerVNC" "Virtual Network Computing"
+.TH vncviewer 1 "" "TigerVNC" "Virtual Network Computing"
.SH NAME
vncviewer \- VNC viewer for X
.SH SYNOPSIS
@@ -81,9 +81,6 @@
screen is bigger, you can scroll by bumping the mouse against the edge of the
screen.
-Unfortunately this mode doesn't work completely with all window managers, since
-it breaks the X window management conventions.
-
.SH OPTIONS (PARAMETERS)
You can get a list of parameters by giving \fB\-h\fP as a command-line option
to vncviewer. Parameters can be turned on with -\fIparam\fP or off with
@@ -99,11 +96,11 @@
.TP
.B \-display \fIXdisplay\fP
Specifies the X display on which the VNC viewer window should appear.
-
+.
.TP
.B \-geometry \fIgeometry\fP
Standard X position and sizing specification.
-
+.
.TP
.B \-listen \fI[port]\fP
Causes vncviewer to listen on the given port (default 5500) for reverse
@@ -111,51 +108,99 @@
using the 'Add New Client' menu option or the '\-connect' command-line option.
Xvnc supports reverse connections with a helper program called
.B vncconfig.
-
+.
.TP
-.B \-passwd \fIpassword-file\fP
+.B \-SecurityTypes \fIsec-types\fP
+Specify which security schemes to attempt to use when authenticating with
+the server. Valid values are a comma separated list of \fBNone\fP,
+\fBVncAuth\fP, \fBPlain\fP, \fBTLSNone\fP, \fBTLSVnc\fP, \fBTLSPlain\fP,
+\fBX509None\fP, \fBX509Vnc\fP and \fBX509Plain\fP. Default is to attempt
+every supported scheme.
+.
+.TP
+.B \-passwd, \-PasswordFile \fIpassword-file\fP
If you are on a filesystem which gives you access to the password file used by
the server, you can specify it here to avoid typing it in. It will usually be
"~/.vnc/passwd".
-
+.
+.TP
+.B \-X509CA \fIpath\fP
+Path to CA certificate to use when authenticating remote servers using any
+of the X509 security schemes (X509None, X509Vnc, etc.). Must be in PEM
+format. Default is \fB$HOME/.vnc/x509_ca.pem\fP, if it exists.
+.
+.TP
+.B \-X509CRL \fIpath\fP
+Path to certificate revocation list to use in conjunction with
+\fB-X509CA\fP. Must also be in PEM format. Default is
+\fB$HOME/.vnc/x509_crl.pem\fP, if it exists.
+.
.TP
.B \-Shared
When you make a connection to a VNC server, all other existing connections are
normally closed. This option requests that they be left open, allowing you to
share the desktop with someone already using it.
-
+.
.TP
.B \-ViewOnly
Specifies that no keyboard or mouse events should be sent to the server.
Useful if you want to view a desktop without interfering; often needs to be
combined with
.B \-Shared.
-
+.
+.TP
+.B \-AcceptClipboard
+Accept clipboard changes from the server. Default is on.
+.
+.TP
+.B \-SendClipboard
+Send clipboard changes to the server. Default is on.
+.
+.TP
+.B \-SendPrimary
+Send the primary selection and cut buffer to the server as well as the
+clipboard selection. Default is on.
+.
.TP
.B \-Maximize
Maximize viewer window.
-
+.
.TP
.B \-FullScreen
Start in full-screen mode.
-
+.
+.TP
+.B \-FullScreenAllMonitors
+Use all local monitors and not just the current one when switching to
+full-screen mode.
+.
+.TP
+.B \-FullscreenSystemKeys
+Pass special keys (like Alt+Tab) directly to the server when in full-screen
+mode.
+.
.TP
.B \-DesktopSize \fIwidth\fPx\fIheight\fP
Instead of keeping the existing remote screen size, the client will attempt to
switch to the specified since when connecting. If the server does not support
the SetDesktopSize message then the screen will retain the original size.
-
+.
+.TP
+.B \-RemoteResize
+Dynamically resize the remote desktop size as the size of the local client
+window changes. Note that this may not work with all VNC servers.
+.
.TP
.B \-AutoSelect
Use automatic selection of encoding and pixel format (default is on). Normally
the viewer tests the speed of the connection to the server and chooses the
encoding and pixel format appropriately. Turn it off with \fB-AutoSelect=0\fP.
-
+.
.TP
.B \-FullColor, \-FullColour
Tells the VNC server to send full-color pixels in the best format for this
display. This is default.
-
+.
.TP
.B \-LowColorLevel, \-LowColourLevel \fIlevel\fP
Selects the reduced color level to use on slow links. \fIlevel\fP can range
@@ -163,40 +208,53 @@
256 colors. Note that decision if reduced color level is used is made by
vncviewer. If you would like to force vncviewer to use reduced color level
use \fB-AutoSelect=0\fP parameter.
-
+.
.TP
.B \-PreferredEncoding \fIencoding\fP
This option specifies the preferred encoding to use from one of "Tight", "ZRLE",
"hextile" or "raw".
-
+.
.TP
-.B -UseLocalCursor
-Render the mouse cursor locally if the server supports it (default is on).
-This can make the interactive performance feel much better over slow links.
-
+.B \-NoJpeg
+Disable lossy JPEG compression in Tight encoding. Default is off.
+.
.TP
-.B \-WMDecorationWidth \fIw\fP, \-WMDecorationHeight \fIh\fP
-The total width and height taken up by window manager decorations. This is
-used to calculate the maximum size of the VNC viewer window. Default is
-width 6, height 24.
-
+.B \-QualityLevel \fIlevel\fP
+JPEG quality level. 0 = Low, 9 = High. May be adjusted automatically if
+\fB-AutoSelect\fP is turned on. Default is 8.
+.
.TP
-.B \-log \fIlogname\fP:\fIdest\fP:\fIlevel\fP
+.B \-CompressLevel \fIlevel\fP
+Use specified lossless compression level. 0 = Low, 6 = High. Default is 2.
+.
+.TP
+.B \-CustomCompressLevel
+Use custom compression level. Default if \fBCompressLevel\fP is specified.
+.
+.TP
+.B \-DotWhenNoCursor
+Show the dot cursor when the server sends an invisible cursor. Default is off.
+.
+.TP
+.B \-PointerEventInterval \fItime\fP
+Time in milliseconds to rate-limit successive pointer events. Default is
+to send events immediately.
+.
+.TP
+.B \-Log \fIlogname\fP:\fIdest\fP:\fIlevel\fP
Configures the debug log settings. \fIdest\fP can currently be \fBstderr\fP or
\fBstdout\fP, and \fIlevel\fP is between 0 and 100, 100 meaning most verbose
output. \fIlogname\fP is usually \fB*\fP meaning all, but you can target a
specific source file if you know the name of its "LogWriter". Default is
\fB*:stderr:30\fP.
-
+.
.TP
.B \-MenuKey \fIkeysym-name\fP
-This option specifies the key which brings up the popup menu. The key is
-specified as an X11 keysym name (these can be obtained by removing the XK_
-prefix from the entries in "/usr/include/X11/keysymdef.h" - the currently
-implemented list is: F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, Pause,
+This option specifies the key which brings up the popup menu. The currently
+supported list is: F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, Pause,
Print, Scroll_Lock, Escape, Insert, Delete, Home, Page_Up, Page_Down).
Default is F8.
-
+.
.TP
\fB\-via\fR \fIgateway\fR
Automatically create encrypted TCP tunnel to the \fIgateway\fR machine
@@ -214,6 +272,17 @@
host, the port number on the remote host, and the gateway machine
respectively.
+.SH FILES
+.TP
+$HOME/.vnc/default.tigervnc
+Default configuration options.
+.TP
+$HOME/.vnc/x509_ca.pem
+Default CA certificate for authenticating servers.
+.TP
+$HOME/.vnc/x509_crl.pem
+Default certificate revocation list.
+
.SH SEE ALSO
.BR Xvnc (1),
.BR vncpasswd (1),
@@ -223,9 +292,10 @@
http://www.tigervnc.org
.SH AUTHOR
-Tristan Richardson, RealVNC Ltd.
+Tristan Richardson, RealVNC Ltd. and others.
VNC was originally developed by the RealVNC team while at Olivetti
Research Ltd / AT&T Laboratories Cambridge. TightVNC additions were
-implemented by Constantin Kaplinsky. Many other people participated in
-development, testing and support.
+implemented by Constantin Kaplinsky. Many other people have since
+participated in development, testing and support. This manual is part
+of the TigerVNC software suite.