#

## VNC Extras, Add-ons and modifications

Firewalls
Restricting connections by IP address (TCP wrapper)
Zlib compression
x2vnc
Enhanced Java viewer for JDK 1.1
VncMonitor
VNCProxy
VNConnector
VNCScan
iXvnc
Share a Single Window
Wallpaper disabling version of WinVNC
Proxy for session capture/replay
VNC Tight Encoder
x0rfbserver - accessing a standard X server with VNC
Dual Monitors in Windows
Policy Editor Template for Windows
Fastpush - Batch File Installer for Windows NT
IPv6 patch for X VNC

### Firewalls

Karl Harkimian <hakimian@aha.com> sent in a patch to compile the Unix viewer so that it can reach external servers through a SOCKS firewall. It's very simple, and the patch is here: socks-patch.txt. These patches apply to 3.3.1 but they are simple enough to apply by hand to later versions.

Obviously, you cannot access a server inside a firewall from outside without specially configuring the firewall; that's what firewalls are for! Christian A. Lademann cal@zls.de has used an elaborate scheme:

I have had a problem with connections from my workstation to a PC connected to a customers LAN, because my firewall as well as the customers firewall does IP-masquerading. This means that my workstation can only connect to the customers firewall and the customers PC can only connect to my
firewall. The reason for this is, of course, to hide the complete LAN behind the firewall(s).

Christian's solution involved a script listening on a single accessible well-known port behind the firewall, which could accept incoming connections and redirect them to the appropriate machine. His full details are here: rvnc.txt

Harmen van der Wal has made a patch to the VNC 3.3.3 Java Viewer Source Distribution, that allows the viewer to connect through a firewall using an HTTP proxy. This patch is available at http://www.xs4all.nl/~harmwal/vnc/readme.html

### Restricting connections by IP address (TCP wrapper)

Note that similar functionality is now built in to the Windows VNC server.

Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>.

writes:

In the list archives I notice there was a discussion of implementing access control for Xvnc with the tcp wrapper library. I have now implemented this for 3.3.2r2. You will need to have tcpd.h and libwrap already installed.

Wolfram's full message is at http://www.uk.research.att.com/vnc/archives/1998-09/0168.html .

Jared Smolens <jsmolens@andrew.cmu.edu> has done an equivalent for WinVNC. He writes:

... I wrote some code to read a list of IPs to allow and IPs to deny from a text file. The rules are identical (to the best of my knowledge) to /etc/hosts.allow and /etc/hosts.deny on my Linux box and the text file's syntax is close to that format. This is a feature which has been discussed at least once on the mailing list, so I thought that you might want to add it to the official code base.

The x86 binaries and source code are available at:

ftp://wik.res.cmu.edu/pub/vncip_bin.zip and ftp://wik.res.cmu.edu/pub/vncip_src.zip

I have two new files, ipauth.h and ipauth.cpp. I made some changes to vncclient.cpp (but not the header) to use the class and disconnect unauthorized clients. I also have a sample "iplist.txt" file which contains the allowed IPs.

The format of the text file works like this:

`<ALLOW|DENY> <Partial/full IP>`
`<DENY ALL>`

An unlimited, unordered list of IPs (or partial IPs) may be entered into the file like this:

`ALLOW 128.2.93.`
`ALLOW 128.2.87.80`
`DENY 128.220.`
`DENY ALL`

In this case, the DENY 128.220. is redundant because of the DENY ALL, but you get the point. ALLOW ALL is the default, and if the user specifies that, it is ignored. Allows always take precidence over denies. This code is not case sensitive.

I am fairly sure that I got rid of all of my memory leaks (I ran Purify on it, but I have done some slight modifications since then). I also use the fstream library. I don't know if you consider this to be too
much overhead.

-- Jared Smolens

### zlib compression

Dave DeBarr (debarr@mitre.org) has modified the X server and viewer to use zlib-based compression. We plan to incorporate something similar in the standard release before long, but until then you can find his patches at:

http://www.uk.research.att.com/vnc/archives/1998-08/0039.html

In addition, Dave has provided patches for the Windows viewer at:

http://www.uk.research.att.com:80/vnc/archives/1998-08/0228.html

Luis B. Almeida has also created a version of the Windows software which you can get from ftp://neural.inesc.pt/pub/lba/vnc .

Warren Toomey has done an alternative implementation of zlib compression, along with some other hacks, which you can get from:

http://minnie.cs.adfa.edu.au/VNC_bits/

### x2vnc

Here's a different twist to VNC. Fredrik Hubinette hubbe@hubbe.net has written a VNC-based variation on the popular x2x program. If you run x2vnc on an X server, you can move off the side of the screen and the mouse movements will then be sent to a VNC server (eg. a PC sitting beside it) He writes:

x2vnc is basically a stripped down version of the vncviewer but with slightly different goals and a very different GUI.. :)

x2vnc emulates a 'dual head' setup by catching when the user tries to move the pointer past the edge of the screen. This allows me to control
both computers from one mouse/keyboard.

I have made x2vnc available for download from my web site:

http://www.hubbe.net/~hubbe/x2vnc.html

### Enhanced Java viewer for JDK 1.1

Muddassar Farooq <mfarooq@cse.unsw.edu.au> has produced an enhanced version of the Java VNC viewer.

When run as a standalone application, it adds scrollbars, and the ability to specify 'host:display' as with the other VNC viewers.

It uses the Java 1.1 event model, so is 'better' Java, but won't run on older JVMs & browsers.

You can get it from http://www.uk.research.att.com/vnc/contrib/mfviewer.tar.gz .

### VncMonitor

John Wilson <tug@wilson.co.uk> writes:

VncMonitor is intended for those people who need to monitor several remote systems. A single window is used to present all the displays. The tab or backtab key allows the user to switch between systems. The return key causes the currently viewed system display to be transferred to its own window and the user can interact with the system using the mouse and keyboard. Closing
the new window returns the monitored system display back to the initial window.

The configuration of VncMonitor is controlled by a file which contains all the information about what systems are to be monitored.

A version can be downloaded from:

http://www.wilson.co.uk/Software/vnc/VncMonitor.htm

### VNCProxy

John Wilson has also written VNCProxy, a Java proxy that can sit between a VNC viewer and server and can be configured to map various incoming requests to different VNC servers. You can find it at http://www.wilson.co.uk/Software/vnc/proxy/VncProxy.htm

### VNConnector

Alastair Burr has written a similar program to allow you to switch between multiple VNC servers. VNConnector can be found here.

### VNCScan

Steve Bostedor has written a utility which will scan a network and list the machines running VNC servers. You can find it at http://tgcs.web-it.com. You'll need to email Steve for the password to unzip the file.

(You can also use port scanners such as nmap or Netcat to scan for the ports used by VNC. See the VNC FAQ for details of these ports.)

### iXvnc

Note that as of 3.3.3r2, Xvnc includes the functionality of iXvnc already. However Andre's page is still the best documentation for how to use it at the moment.

Andre Moreira <andre@dei.isep.ipp.pt> has written some patches for Xvnc to allow it to be run under the control of inetd and hence be started automatically as users connect. See http://www.dei.isep.ipp.pt/~andre/extern/ixvnc.htm for details.

### Share a Single Window

Céline FAGES <celine.fages@silogic.fr> has written some modifications for WinVNC to allow it to share a single window.

See http://www.uk.research.att.com/vnc/contrib/one-window.txt for the modification details.

See Céline's original message in: http://www.uk.research.att.com/vnc/archives/2000-02/0658.html

Rudi De Vos has done further work based on Celine's patches. See http://services.simac.be/vnc/single/index.htm (binaries available).

### Wallpaper disabling version of WinVNC

Note that as of 3.3.3r8, there is a RemoveWallpaper option in standard WinVNC - see the WinVNC documentation for details.

Jeremy Peaks jeremy@jerpeaks.freeserve.co.uk has amended WinVNC 3.3.3r7 to allow you to automatically disable the wallpaper while someone is connected to your PC. This cuts down on needless graphics being sent to the viewer, which can make VNC significantly faster. See http://www.jerpeaks.clara.net for details.

### Proxy for session capture/replay

Tim Waugh twaugh@redhat.com writes:

I have written two programs called rfbproxy and rfbplaymacro.

rfbproxy can be used for session capture and replay. Session replay can be looped, and cycling between multiple capture sessions is supported. (I use it for doing demos at shows.)

http://people.redhat.com/twaugh/rfbproxy/

rfbplaymacro can be used to provide scriptable control of VNC sessions. It uses a simple scripting language to control the position of the mouse, keys to press, etc. It can be used for quality assurance for graphical applications, scriptable control of otherwise unscriptable programs, and so on.

http://people.redhat.com/twaugh/rfbplaymacro/

### VNC Tight Encoder

Const Kaplinsky const@ce.cctpu.edu.ru writes:

VNC Tight Encoder adds low-bandwidth optimizations to VNC (both Unix and Windows versions). Compression ratios achieved by "tight" encoder are usually 5-75% higher than pure zlib compression. Additionally, this encoder is often much faster than zlib at both server and client sides. Other enhancements like "local cursor" feature are either implemented or in progress. Modified servers and viewers do not extend current RFB protocol and thus are fully compatible with the standard VNC software. The Tight Encoder homepage is at http://www.ce.cctpu.edu.ru/vnc/

### x0rfbserver - accessing a standard X server with VNC

Jens Wagner has written some VNC-related tools, amongst which is a program called x0rfbserver. This is a VNC server which serves a standard X server desktop thus behaving more like WinVNC and MacVNC than does Xvnc. It is available in the rfb-n.n.n.tar.gz package from http://www.hexonet.de/software.en/

### Dual Monitors in Windows

Jay Freeman has done a patch for multiple monitor support in Windows 2000. See his message at http://www.uk.research.att.com/vnc/archives/2001-02/0365.html

### Policy Editor Template for Windows

Daniel Quinlan has written a policy template for VNC on Win32, which allows VNC settings to be fixed across a whole domain. Useful in big domains! See http://projects.chaosengine.net/winvnc/winvnc.ADM

### Fastpush - Batch File Installer for Windows NT

Richard Harris has developed a batch file for Windows NT that let's it push VNC out and install it as a service to other NT boxes. See http://www.darkage.co.uk/vnc/

### IPv6 patch for X VNC

Mohacsi Janos mohacsi@ik.bme.hu writes:

Jun-ichiro itojun Itoh itojun@iijlab.net from the KAME project created an IPv6 patch for VNC 3.3.3r2 available from ftp://ftp.kame.net/pub/kame/misc/vnc-3.3.3r2-v6-20010421.diff.gz.

| For comments, feedback, etc, please see the 'Keeping in touch' page. Copyright 1999 - AT&T Laboratories Cambridge