diff options
-rw-r--r-- | x11vnc/ChangeLog | 6 | ||||
-rw-r--r-- | x11vnc/README | 150 | ||||
-rw-r--r-- | x11vnc/help.c | 8 | ||||
-rw-r--r-- | x11vnc/user.c | 97 | ||||
-rw-r--r-- | x11vnc/x11vnc.1 | 10 | ||||
-rw-r--r-- | x11vnc/x11vnc_defs.c | 2 |
6 files changed, 201 insertions, 72 deletions
diff --git a/x11vnc/ChangeLog b/x11vnc/ChangeLog index 02eda3a..26b9866 100644 --- a/x11vnc/ChangeLog +++ b/x11vnc/ChangeLog @@ -1,3 +1,9 @@ +2007-08-15 Karl Runge <[email protected]> + * x11vnc: add reverse -connect support to -display WAIT: + i.e. -find, -create, -svc, ... mode. Document need for + -shared under -connect host1,host2,... Fix bug in -display + WAIT: mode if vnc client tries to only retrieve SSL cert. + 2007-08-03 Karl Runge <[email protected]> * x11vnc: add -xrefresh option, fix KDE .DCOPserver parse bug, make sure UNIXPW_DISABLE_LOCALHOST/-unixpw_unsafe ignore diff --git a/x11vnc/README b/x11vnc/README index 9a880a7..89672be 100644 --- a/x11vnc/README +++ b/x11vnc/README @@ -1,5 +1,5 @@ -x11vnc README file Date: Fri Aug 3 17:26:56 EDT 2007 +x11vnc README file Date: Wed Aug 15 15:33:58 EDT 2007 The following information is taken from these URLs: @@ -10060,6 +10060,7 @@ Enhanced TightVNC Viewer (SSVNC: SSL/SSH VNC viewer) has many additional features (see below for a list). The short name for this project is "ssvnc" for SSL/SSH VNC Viewer. + This is the name of the command to start it. It is a self-contained bundle, you could carry it around on, say, a [4]USB memory stick / flash drive for secure VNC viewing from almost @@ -10082,7 +10083,7 @@ Enhanced TightVNC Viewer (SSVNC: SSL/SSH VNC viewer) connecting. * You can also use your own VNC Viewer, e.g. UltraVNC or RealVNC, with the front-end if you like. - * Sets up any additional SSH port redirections that you desire. + * Sets up any additional SSH port redirections that you want. * Support for native MacOS X usage with bundled Chicken of the VNC viewer. * Reverse (viewer listening) VNC connections via SSL and SSH. @@ -10102,6 +10103,9 @@ Enhanced TightVNC Viewer (SSVNC: SSL/SSH VNC viewer) * Support for UltraVNC extensions: 1/n Server side scaling, Text Chat, Single Window, Disable Server-side Input. Both UltraVNC and x11vnc servers support these extensions. + * UltraVNC File Transfer via an auxiliary Java helper program (java + must be in $PATH). Note that x11vnc supports UltraVNC file + transfer. * Extremely low color modes: 64 and 8 colors in 8bpp (-use64/-bgr222, -use8/-bgr111) * Medium color mode: 16bpp mode on a 32bpp Viewer display @@ -10127,7 +10131,7 @@ Enhanced TightVNC Viewer (SSVNC: SSL/SSH VNC viewer) * Fix for Popup menu positioning for old window managers (-popupfix option). - The list of software bundled in the archive files: + The list of 3rd party software bundled in the archive files: * TightVNC Viewer (windows, unix, macosx) * Chicken of the VNC Viewer (macosx) * Stunnel (windows, unix, macosx) @@ -10137,7 +10141,7 @@ Enhanced TightVNC Viewer (SSVNC: SSL/SSH VNC viewer) These are all self-contained in the bundle directory: they will not be installed on your system. Just un-zip or un-tar the file you - downloaded and run it straight from its directory. + downloaded and run the frontend ssvnc straight from its directory. Here is the Quick Start info from the README for how to do that: Quick Start: @@ -10149,7 +10153,7 @@ Unix and Mac OS X: Unpack the archive: - % gzip -dc ssvnc-1.0.17.tar.gz | tar xvf - + % gzip -dc ssvnc-1.0.18.tar.gz | tar xvf - Run the GUI: @@ -10157,7 +10161,7 @@ Unix and Mac OS X: % ./ssvnc/MacOSX/ssvnc (for Mac OS X) - The smaller file "ssvnc_no_windows-1.0.17.tar.gz" could have been + The smaller file "ssvnc_no_windows-1.0.18.tar.gz" could have been used as well. On MacOSX there is also a SSVNC.app directory icon you can click on @@ -10174,7 +10178,7 @@ Windows: Unzip, using WinZip or a similar utility, the zip file: - ssvnc-1.0.17.zip + ssvnc-1.0.18.zip Run the GUI, e.g.: @@ -10186,7 +10190,7 @@ Windows: select Open, and then OK to launch it. - The smaller file "ssvnc_windows_only-1.0.17.zip" could have been used + The smaller file "ssvnc_windows_only-1.0.18.zip" could have been used as well. You can make a Windows shortcut to this program if you want to. @@ -10208,7 +10212,7 @@ C: cd \ssvnc\Windows ssvnc.exe - Update: A simple workaround is now in place were it will copy + Update: A simple workaround is now in place where it will copy everything to a cache directory ss_vnc/cache in your Windows home directory and run out of there. _________________________________________________________________ @@ -10238,9 +10242,11 @@ ssvnc.exe you want to place SSVNC on a USB flash drive that you carry around for mobile use and you want the profiles you create to stay with the drive (otherwise you'd have to browse to the drive directory each time you - load or save). WARNING: if you use ssvnc from an "Internet Cafe", i.e. - an untrusted computer, someone may have set it up to be capturing your - keystrokes, etc. + load or save). + + WARNING: if you use ssvnc from an "Internet Cafe", i.e. some untrusted + computer, please be aware that someone may have set up that machine to + be capturing your keystrokes, etc. Dynamic VNC Server Port determination: If you are running SSVNC on Unix and are using SSH to start the remote VNC server and the VNC @@ -10474,33 +10480,33 @@ Enhanced TightVNC viewer (SSVNC) options: Downloading: This project can be downloaded here, choose the archive file bundle that best suits you (e.g. no source code, windows only, unix only, zip, tar etc): - [18]ssvnc_windows_only-1.0.17.zip Windows Binaries Only. No source incl + [18]ssvnc_windows_only-1.0.18.zip Windows Binaries Only. No source incl uded (~6MB) - [19]ssvnc_no_windows-1.0.17.tar.gz Unix and Mac OS X Only. No Windows bin + [19]ssvnc_no_windows-1.0.18.tar.gz Unix and Mac OS X Only. No Windows bin aries. Source included. (~6MB) - [20]ssvnc_unix_only-1.0.17.tar.gz Unix Binaries Only. No source incl + [20]ssvnc_unix_only-1.0.18.tar.gz Unix Binaries Only. No source incl uded. (~3.5MB) - [21]ssvnc_unix_minimal-1.0.17.tar.gz Unix Minimal. You must supply your ow + [21]ssvnc_unix_minimal-1.0.18.tar.gz Unix Minimal. You must supply your ow n vncviewer and stunnel. (~0.1MB) - [22]ssvnc-1.0.17.tar.gz All Unix, Mac OS X, and Windows binari + [22]ssvnc-1.0.18.tar.gz All Unix, Mac OS X, and Windows binari es and source TGZ. (~11MB) - [23]ssvnc-1.0.17.zip All Unix, Mac OS X, and Windows binari + [23]ssvnc-1.0.18.zip All Unix, Mac OS X, and Windows binari es and source ZIP. (~11MB) - [24]ssvnc_all-1.0.17.zip All Unix, Mac OS X, and Windows binari + [24]ssvnc_all-1.0.18.zip All Unix, Mac OS X, and Windows binari es and source AND full archives in the zip dir. (~15MB) - You can try for an older one by replacing, e.g. ".17" by ".11", etc. + You can try for an older one by replacing, e.g. ".18" by ".11", etc. Here are the corresponding development bundles: - [25]ssvnc_windows_only-1.0.18.zip - [26]ssvnc_no_windows-1.0.18.tar.gz - [27]ssvnc_unix_only-1.0.18.tar.gz - [28]ssvnc_unix_minimal-1.0.18.tar.gz + [25]ssvnc_windows_only-1.0.19.zip + [26]ssvnc_no_windows-1.0.19.tar.gz + [27]ssvnc_unix_only-1.0.19.tar.gz + [28]ssvnc_unix_minimal-1.0.19.tar.gz - [29]ssvnc-1.0.18.tar.gz - [30]ssvnc-1.0.18.zip - [31]ssvnc_all-1.0.18.zip + [29]ssvnc-1.0.19.tar.gz + [30]ssvnc-1.0.19.zip + [31]ssvnc_all-1.0.19.zip Please help test the UltraVNC File Transfer support in the native Unix VNC viewer! @@ -10533,7 +10539,8 @@ es and source AND full archives in the zip dir. (~15MB) compatibility reasons they should install both by default but not all do). So you may need to instruct your distro to install the 0.9.7 library (it is fine to have both runtimes installed simultaneously - since the libraries have different names). + since the libraries have different names). Update: I now try to + statically link libssl.a for all of the binaries in the archive. You can also run the included build.unix script to try to automatically build the binaries if your OS is not in the above list @@ -10645,6 +10652,9 @@ The enhanced TightVNC viewer features are: ssh's builtin SOCKS proxy, -D) for servers like x11vnc that print out PORT= at startup. + - Unix Username and Password entry for use with "x11vnc -unixpw" + type login dialogs. + (the following features only apply to the bundled Unix tightvnc viewer) @@ -10652,16 +10662,25 @@ The enhanced TightVNC viewer features are: - ZRLE VNC encoding support (RealVNC's encoding) + - Cursor alphablending with x11vnc at 32bpp (-alpha option) + + - Option "-unixpw ..." for use with "x11vnc -unixpw" login dialogs. + + - Support for UltraVNC extensions: Single Window, Disable + Server-side Input, 1/n Server side scaling, Text Chat (shell + terminal UI). Both UltraVNC and x11vnc servers support these + extensions + + - UltraVNC File Transfer via an auxiliary Java helper program + (java must be in $PATH). Note that x11vnc supports UltraVNC + file transfer. + - Extremely low color modes: 64 and 8 colors in 8bpp (-use64/-bgr222, -use8/-bgr111) - Medium color mode: 16bpp mode even for 32bpp Viewer display (-16bpp/-bgr565) - - Cursor alphablending with x11vnc at 32bpp (-alpha option) - - - Maintains its own BackingStore if the X server does not - - x11vnc's client-side caching -ncache method cropping option (-ycrop n). This will "hide" the large pixel buffer cache below the actual display. Set to actual height or use -1 for @@ -10670,6 +10689,14 @@ The enhanced TightVNC viewer features are: - Scrollbar width setting: -sbwidth n, the default is very thin, 2 pixels, for less distracting -ycrop usage. + - Improvements to the Popup menu, all of these can now be changed + dynamically via the menu: ViewOnly, Toggle Bell, CursorShape + updates, X11 Cursor, Cursor Alphablending, Toggle Tight/ZRLE, + Toggle JPEG, FullColor/16bpp/8bpp (256/64/8 colors), Greyscale + for low color modes. + + - Maintains its own BackingStore if the X server does not + - The default for localhost:0 connections is not raw encoding (local machine). Default assumes you are using SSH tunnel. Use -rawlocal to revert. @@ -10680,17 +10707,6 @@ The enhanced TightVNC viewer features are: - Fix for Popup menu positioning for old window managers (-popupfix option). - - Improvements to the Popup menu, all of these can now be changed - dynamically via the menu: ViewOnly, Toggle Bell, CursorShape - updates, X11 Cursor, Cursor Alphablending, Toggle Tight/ZRLE, - Toggle JPEG, FullColor/16bpp/8bpp (256/64/8 colors), Greyscale - for low color modes. - - - Support for UltraVNC extensions: Single Window, Disable - Server-side Input, 1/n Server side scaling, Text Chat (shell - terminal UI). Both UltraVNC and x11vnc servers support these - extensions - - Run vncviewer -help for all options. @@ -10718,7 +10734,7 @@ Unix and Mac OS X: Unpack the archive: - % gzip -dc ssvnc-1.0.15.tar.gz | tar xvf - + % gzip -dc ssvnc-1.0.18.tar.gz | tar xvf - Run the GUI: @@ -10728,7 +10744,7 @@ Unix and Mac OS X: On MacOSX you could also click on the SSVNC app in the Finder. - The smaller file "ssvnc_no_windows-1.0.15.tar.gz" + The smaller file "ssvnc_no_windows-1.0.18.tar.gz" could have been used as well. On MacOSX there is also a SSVNC.app directory icon you can click on @@ -10745,7 +10761,7 @@ Windows: Unzip, using WinZip or a similar utility, the zip file: - ssvnc-1.0.15.zip + ssvnc-1.0.18.zip Run the GUI, e.g.: @@ -10757,7 +10773,7 @@ Windows: select Open, and then OK to launch it. - The smaller file "ssvnc_windows_only-1.0.15.zip" + The smaller file "ssvnc_windows_only-1.0.18.zip" could have been used as well. You can make a Windows shortcut to this program if you want to. @@ -11022,20 +11038,20 @@ References 15. http://www.karlrunge.com/x11vnc/index.html#faq-smb-shares 16. http://www.karlrunge.com/x11vnc/index.html#faq-cups 17. http://www.karlrunge.com/x11vnc/index.html#faq-sound - 18. http://www.karlrunge.com/x11vnc/etv/ssvnc_windows_only-1.0.17.zip - 19. http://www.karlrunge.com/x11vnc/etv/ssvnc_no_windows-1.0.17.tar.gz - 20. http://www.karlrunge.com/x11vnc/etv/ssvnc_unix_only-1.0.17.tar.gz - 21. http://www.karlrunge.com/x11vnc/etv/ssvnc_unix_minimal-1.0.17.tar.gz - 22. http://www.karlrunge.com/x11vnc/etv/ssvnc-1.0.17.tar.gz - 23. http://www.karlrunge.com/x11vnc/etv/ssvnc-1.0.17.zip - 24. http://www.karlrunge.com/x11vnc/etv/ssvnc_all-1.0.17.zip - 25. http://www.karlrunge.com/x11vnc/etv/ssvnc_windows_only-1.0.18.zip - 26. http://www.karlrunge.com/x11vnc/etv/ssvnc_no_windows-1.0.18.tar.gz - 27. http://www.karlrunge.com/x11vnc/etv/ssvnc_unix_only-1.0.18.tar.gz - 28. http://www.karlrunge.com/x11vnc/etv/ssvnc_unix_minimal-1.0.18.tar.gz - 29. http://www.karlrunge.com/x11vnc/etv/ssvnc-1.0.18.tar.gz - 30. http://www.karlrunge.com/x11vnc/etv/ssvnc-1.0.18.zip - 31. http://www.karlrunge.com/x11vnc/etv/ssvnc_all-1.0.18.zip + 18. http://www.karlrunge.com/x11vnc/etv/ssvnc_windows_only-1.0.18.zip + 19. http://www.karlrunge.com/x11vnc/etv/ssvnc_no_windows-1.0.18.tar.gz + 20. http://www.karlrunge.com/x11vnc/etv/ssvnc_unix_only-1.0.18.tar.gz + 21. http://www.karlrunge.com/x11vnc/etv/ssvnc_unix_minimal-1.0.18.tar.gz + 22. http://www.karlrunge.com/x11vnc/etv/ssvnc-1.0.18.tar.gz + 23. http://www.karlrunge.com/x11vnc/etv/ssvnc-1.0.18.zip + 24. http://www.karlrunge.com/x11vnc/etv/ssvnc_all-1.0.18.zip + 25. http://www.karlrunge.com/x11vnc/etv/ssvnc_windows_only-1.0.19.zip + 26. http://www.karlrunge.com/x11vnc/etv/ssvnc_no_windows-1.0.19.tar.gz + 27. http://www.karlrunge.com/x11vnc/etv/ssvnc_unix_only-1.0.19.tar.gz + 28. http://www.karlrunge.com/x11vnc/etv/ssvnc_unix_minimal-1.0.19.tar.gz + 29. http://www.karlrunge.com/x11vnc/etv/ssvnc-1.0.19.tar.gz + 30. http://www.karlrunge.com/x11vnc/etv/ssvnc-1.0.19.zip + 31. http://www.karlrunge.com/x11vnc/etv/ssvnc_all-1.0.19.zip 32. http://www.karlrunge.com/x11vnc/etv/ssvnc 33. http://www.stunnel.org/ 34. http://stunnel.mirt.net/ @@ -11056,7 +11072,7 @@ x11vnc: a VNC server for real X displays Here are all of x11vnc command line options: % x11vnc -opts (see below for -help long descriptions) -x11vnc: allow VNC connections to real X11 displays. 0.9.3 lastmod: 2007-08-03 +x11vnc: allow VNC connections to real X11 displays. 0.9.3 lastmod: 2007-08-15 x11vnc options: -display disp -auth file -N @@ -11170,7 +11186,7 @@ libvncserver-tight-extension options: % x11vnc -help -x11vnc: allow VNC connections to real X11 displays. 0.9.3 lastmod: 2007-08-03 +x11vnc: allow VNC connections to real X11 displays. 0.9.3 lastmod: 2007-08-15 (type "x11vnc -opts" to just list the options.) @@ -11555,8 +11571,12 @@ Options: -connect string For use with "vncviewer -listen" reverse connections. If "string" has the form "host" or "host:port" - the connection is made once at startup. Use commas - for a list of host's and host:port's. + the connection is made once at startup. + + Use commas for a list of host's and host:port's. + E.g. -connect host1,host2 or host1:0,host2:5678. + Note that to reverse connect to multiple hosts at the + same time you will likely need to also supply: -shared Note that unlike most vnc servers, x11vnc will require a password for reverse as well as for forward connections. diff --git a/x11vnc/help.c b/x11vnc/help.c index 40e0cca..41c8b61 100644 --- a/x11vnc/help.c +++ b/x11vnc/help.c @@ -405,8 +405,12 @@ void print_help(int mode) { "\n" "-connect string For use with \"vncviewer -listen\" reverse connections.\n" " If \"string\" has the form \"host\" or \"host:port\"\n" -" the connection is made once at startup. Use commas\n" -" for a list of host's and host:port's.\n" +" the connection is made once at startup.\n" +"\n" +" Use commas for a list of host's and host:port's.\n" +" E.g. -connect host1,host2 or host1:0,host2:5678.\n" +" Note that to reverse connect to multiple hosts at the\n" +" same time you will likely need to also supply: -shared\n" "\n" " Note that unlike most vnc servers, x11vnc will require a\n" " password for reverse as well as for forward connections.\n" diff --git a/x11vnc/user.c b/x11vnc/user.c index 4fe39ce..49df433 100644 --- a/x11vnc/user.c +++ b/x11vnc/user.c @@ -1328,6 +1328,8 @@ int wait_for_client(int *argc, char** argv, int http) { char *users_list_save = NULL; int created_disp = 0; int ncache_save; + int did_client_connect = 0; + int loop = 0; if (! use_dpy || strstr(use_dpy, "WAIT:") != use_dpy) { return 0; @@ -1527,20 +1529,113 @@ int wait_for_client(int *argc, char** argv, int http) { #endif } + if (inetd && use_openssl) { accept_openssl(OPENSSL_INETD, -1); } + if (client_connect != NULL) { + char *remainder = NULL; + if (inetd) { + rfbLog("wait_for_client: -connect disallowed in inetd mode: %s\n", + client_connect); + } else if (screen && screen->clientHead) { + rfbLog("wait_for_client: -connect disallowed: client exists: %s\n", + client_connect); + } else if (strchr(client_connect, '=')) { + rfbLog("wait_for_client: invalid -connect string: %s\n", + client_connect); + } else { + char *q = strchr(client_connect, ','); + if (q) { + rfbLog("wait_for_client: only using first" + " connect host in: %s\n", client_connect); + remainder = strdup(q+1); + *q = '\0'; + } + rfbLog("wait_for_client: reverse_connect(%s)\n", + client_connect); + reverse_connect(client_connect); + did_client_connect = 1; + } + free(client_connect); + if (remainder != NULL) { + /* reset to host2,host3,... */ + client_connect = remainder; + } else { + client_connect = NULL; + } + } + while (1) { + loop++; if (shut_down) { clean_up_exit(0); } - if (use_openssl) { + if (loop < 2) { + if (did_client_connect) { + goto screen_check; + } + if (inetd) { + goto screen_check; + } + if (screen && screen->clientHead) { + goto screen_check; + } + } + if (use_openssl && !inetd) { + check_openssl(); + /* + * This is to handle an initial verify cert from viewer, + * they disconnect right after fetching the cert. + */ + if (! use_threads) rfbPE(-1); + if (screen && screen->clientHead) { + int i; + if (unixpw) { + if (! unixpw_in_progress) { + rfbLog("unixpw but no unixpw_in_progress\n"); + clean_up_exit(1); + } + if (unixpw_client && unixpw_client->onHold) { + rfbLog("taking unixpw_client off hold\n"); + unixpw_client->onHold = FALSE; + } + } + for (i=0; i<10; i++) { + if (shut_down) { + clean_up_exit(0); + } + usleep(20 * 1000); + if (0) rfbLog("wait_for_client: %d\n", i); + + if (! use_threads) { + if (unixpw) { + unixpw_in_rfbPE = 1; + } + rfbPE(-1); + if (unixpw) { + unixpw_in_rfbPE = 0; + } + } + + if (unixpw && !unixpw_in_progress) { + /* XXX too soon. */ + goto screen_check; + } + if (!screen->clientHead) { + break; + } + } + } + } else if (use_openssl) { check_openssl(); } + if (! use_threads) { rfbPE(-1); } + screen_check: if (! screen || ! screen->clientHead) { usleep(100 * 1000); continue; diff --git a/x11vnc/x11vnc.1 b/x11vnc/x11vnc.1 index 99670c5..2f1a717 100644 --- a/x11vnc/x11vnc.1 +++ b/x11vnc/x11vnc.1 @@ -2,7 +2,7 @@ .TH X11VNC "1" "August 2007" "x11vnc " "User Commands" .SH NAME x11vnc - allow VNC connections to real X11 displays - version: 0.9.3, lastmod: 2007-08-03 + version: 0.9.3, lastmod: 2007-08-15 .SH SYNOPSIS .B x11vnc [OPTION]... @@ -480,8 +480,12 @@ Same as \fB-avahi.\fR .IP For use with "vncviewer -listen" reverse connections. If \fIstring\fR has the form "host" or "host:port" -the connection is made once at startup. Use commas -for a list of host's and host:port's. +the connection is made once at startup. +.IP +Use commas for a list of host's and host:port's. +E.g. \fB-connect\fR host1,host2 or host1:0,host2:5678. +Note that to reverse connect to multiple hosts at the +same time you will likely need to also supply: \fB-shared\fR .IP Note that unlike most vnc servers, x11vnc will require a password for reverse as well as for forward connections. diff --git a/x11vnc/x11vnc_defs.c b/x11vnc/x11vnc_defs.c index 1bb08e3..e4fd94a 100644 --- a/x11vnc/x11vnc_defs.c +++ b/x11vnc/x11vnc_defs.c @@ -15,7 +15,7 @@ int xtrap_base_event_type = 0; int xdamage_base_event_type = 0; /* date +'lastmod: %Y-%m-%d' */ -char lastmod[] = "0.9.3 lastmod: 2007-08-03"; +char lastmod[] = "0.9.3 lastmod: 2007-08-15"; /* X display info */ |