summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrunge <runge@karlrunge.com>2009-10-17 22:36:54 -0400
committerrunge <runge@karlrunge.com>2009-10-17 22:36:54 -0400
commit35c42cf3a64b633ca07f0fe47182955736b8c5e1 (patch)
treee556e94d79e678b44687e519cd18103172227fcd
parent387e189b37a1456ee5a4df52d495a9f31d01306a (diff)
downloadlibvncserver-35c42cf3a64b633ca07f0fe47182955736b8c5e1.zip
libvncserver-35c42cf3a64b633ca07f0fe47182955736b8c5e1.tar.gz
Workaround for inane X_ShmAttach incompatibility in Xorg, -solid support in xfce, showrfbauth option.
-rw-r--r--x11vnc/ChangeLog5
-rw-r--r--x11vnc/README241
-rw-r--r--x11vnc/cleanup.c7
-rw-r--r--x11vnc/help.c30
-rw-r--r--x11vnc/solid.c101
-rw-r--r--x11vnc/sslhelper.c2
-rw-r--r--x11vnc/x11vnc.136
-rw-r--r--x11vnc/x11vnc.c13
-rw-r--r--x11vnc/x11vnc_defs.c2
9 files changed, 295 insertions, 142 deletions
diff --git a/x11vnc/ChangeLog b/x11vnc/ChangeLog
index f66a563..3154d37 100644
--- a/x11vnc/ChangeLog
+++ b/x11vnc/ChangeLog
@@ -1,3 +1,8 @@
+2009-10-17 Karl Runge <runge@karlrunge.com>
+ * x11vnc: support for -solid option in xfce desktop.
+ List -Q guess_dbus query. Implement -showrfbauth option.
+ Workaround for inane X_ShmAttach incompatibility in Xorg.
+
2009-10-08 Karl Runge <runge@karlrunge.com>
* x11vnc: bcx_xattach/x2x desktop switching facility.
More remote control features: grab_state, ping:mystring,
diff --git a/x11vnc/README b/x11vnc/README
index a04c02a..700f3e0 100644
--- a/x11vnc/README
+++ b/x11vnc/README
@@ -2,7 +2,7 @@
Copyright (C) 2002-2009 Karl J. Runge <runge@karlrunge.com>
All rights reserved.
-x11vnc README file Date: Wed Oct 7 23:29:05 EDT 2009
+x11vnc README file Date: Sat Oct 17 22:21:49 EDT 2009
The following information is taken from these URLs:
@@ -48,8 +48,8 @@ x11vnc: a VNC server for real X displays
impossible to build on Solaris and had poor performance. The primary
x0rfbserver build problems centered around esoteric C++ toolkits.
x11vnc is written in plain C and needs only standard libraries and so
- should work on nearly all Unixes. I also added some enhancements to
- improve the interactive response, add many features, and etc.
+ should work on nearly all Unixes. I also created some enhancements to
+ improve the interactive response, added many features, etc.
This page including the [22]FAQ contains much information [23][*];
solutions to many problems; and interesting applications, but
@@ -11689,8 +11689,11 @@ Enhanced TightVNC Viewer (SSVNC: SSL/SSH VNC viewer)
GUI as an enhanced replacement for the xvncviewer, xtightvncviewer,
etc., viewers.
- SSVNC also supports the [6]VeNCrypt SSL/TLS extension to VNC (Unix and
- Mac OS X only.)
+ SSVNC also supports the [6]VeNCrypt SSL/TLS and Vino/ANONTLS
+ extensions to VNC on Unix, Mac OS X, and Windows. Via the provided
+ SSVNC VeNCrypt bridge, VeNCrypt and ANONTLS encryption also works with
+ any third party VNC Viewer (e.g. RealVNC, TightVNC, UltraVNC, etc...)
+ you select via 'Change VNC Viewer'.
The short name for this project is "ssvnc" for SSL/SSH VNC Viewer.
This is the name of the command to start it.
@@ -11736,14 +11739,21 @@ Enhanced TightVNC Viewer (SSVNC: SSL/SSH VNC viewer)
* Automatic SSH connections from the GUI (system ssh is used on Unix
and MacOS X; bundled plink is used on Windows)
* Ability to Save and Load VNC profiles for different hosts.
+ * You can also use your own VNC Viewer, e.g. UltraVNC or RealVNC,
+ with the SSVNC encryption GUI front-end if you like.
* Create or Import SSL Certificates and Private Keys.
* Reverse (viewer listening) VNC connections via SSL and SSH.
- * Support for Web [13]Proxies, SOCKS Proxies, and the [14]UltraVNC
+ * VeNCrypt SSL/TLS VNC encryption support (used by [13]VeNCrypt,
+ QEMU, ggi, libvirt/virt-manager/xen, vinagre/gvncviewer/gtk-vnc)
+ * ANONTLS SSL/TLS VNC encryption support (used by Vino)
+ * VeNCrypt and ANONTLS are also enabled for any 3rd party VNC Viewer
+ (e.g. RealVNC, TightVNC, UltraVNC ...) on Unix, MacOSX, and
+ Windows via the provided SSVNC VeNCrypt Viewer Bridge tool (use
+ 'Change VNC Viewer' to select the one you want.)
+ * Support for Web [14]Proxies, SOCKS Proxies, and the [15]UltraVNC
repeater proxy (e.g. repeater://host:port+ID:1234). Multiple
proxies may be chained together (3 max).
* Support for SSH Gateway connections and non-standard SSH ports.
- * You can also use your own VNC Viewer, e.g. UltraVNC or RealVNC,
- with the SSVNC encryption GUI front-end if you like.
* Automatic Service tunnelling via SSH for CUPS and SMB Printing,
ESD/ARTSD Audio, and SMB (Windows/Samba) filesystem mounting.
* Sets up any additional SSH port redirections that you want.
@@ -11757,33 +11767,30 @@ Enhanced TightVNC Viewer (SSVNC: SSL/SSH VNC viewer)
* Support for native MacOS X usage with bundled Chicken of the VNC
viewer (the Unix X11 viewer is also provided for MacOS X, and is
better IMHO. It is now the default on MacOS X.)
- * [15]Dynamic VNC Server Port determination and redirection (using
+ * [16]Dynamic VNC Server Port determination and redirection (using
ssh's builtin SOCKS proxy, ssh -D) for servers like x11vnc that
print out PORT= at startup.
* Unix Username and Password entry for use with "x11vnc -unixpw"
type login dialogs.
- * Simplified mode launched by command "[16]sshvnc" that is SSH Only.
- * Simplified mode launched by command "[17]tsvnc" that provides a
+ * Simplified mode launched by command "[17]sshvnc" that is SSH Only.
+ * Simplified mode launched by command "[18]tsvnc" that provides a
VNC "Terminal Services" mode (uses x11vnc on the remote side).
- [18]Unix TightVNC Viewer improvements (these only apply to the Unix
+ [19]Unix TightVNC Viewer improvements (these only apply to the Unix
VNC viewer, including Mac OS X):
* rfbNewFBSize VNC support (dynamic screen resizing)
* Client-side Scaling of the Desktop in the viewer.
* ZRLE VNC encoding support (RealVNC's encoding)
* Support for the ZYWRLE encoding, a wavelet based extension to ZRLE
to improve compression of motion video and photo regions.
- * [19]TurboVNC support ([20]VirtualGL's modified TightVNC encoding;
+ * [20]TurboVNC support ([21]VirtualGL's modified TightVNC encoding;
requires TurboJPEG library)
* Pipelined Updates of the framebuffer as in TurboVNC (asks for the
next update before the current one has finished downloading; this
gives some speedup on high latency connections.)
- * Cursor [21]alphablending with x11vnc at 32bpp (-alpha option)
+ * Cursor [22]alphablending with x11vnc at 32bpp (-alpha option)
* Option "-unixpw ..." for use with "x11vnc -unixpw" type login
dialogs.
- * VeNCrypt SSL/TLS VNC encryption support (used by [22]VeNCrypt,
- QEMU, ggi, libvirt/virt-manager/xen, vinagre/gvncviewer/gtk-vnc)
- * ANONTLS SSL/TLS VNC encryption support (used by vino)
* 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.
@@ -12717,16 +12724,16 @@ References
10. http://www.karlrunge.com/x11vnc/enhanced_tightvnc_viewer.html#source
11. http://www.debian.org/security/2008/dsa-1571
12. http://www.karlrunge.com/x11vnc/ssvnc_untrusted_local_users.html
- 13. http://www.karlrunge.com/x11vnc/ssvnc-proxies.html
- 14. http://www.uvnc.com/addons/repeater.html
- 15. http://www.karlrunge.com/x11vnc/enhanced_tightvnc_viewer.html#dynamic-port
- 16. http://www.karlrunge.com/x11vnc/enhanced_tightvnc_viewer.html#sshvnc
- 17. http://www.karlrunge.com/x11vnc/enhanced_tightvnc_viewer.html#tsvnc
- 18. http://www.karlrunge.com/x11vnc/enhanced_tightvnc_viewer.html#unix-patches
- 19. http://www.karlrunge.com/x11vnc/faq.html#faq-turbovnc
- 20. http://www.virtualgl.org/
- 21. http://www.karlrunge.com/x11vnc/faq.html#faq-xfixes-alpha-hacks
- 22. http://sourceforge.net/projects/vencrypt/
+ 13. http://sourceforge.net/projects/vencrypt/
+ 14. http://www.karlrunge.com/x11vnc/ssvnc-proxies.html
+ 15. http://www.uvnc.com/addons/repeater.html
+ 16. http://www.karlrunge.com/x11vnc/enhanced_tightvnc_viewer.html#dynamic-port
+ 17. http://www.karlrunge.com/x11vnc/enhanced_tightvnc_viewer.html#sshvnc
+ 18. http://www.karlrunge.com/x11vnc/enhanced_tightvnc_viewer.html#tsvnc
+ 19. http://www.karlrunge.com/x11vnc/enhanced_tightvnc_viewer.html#unix-patches
+ 20. http://www.karlrunge.com/x11vnc/faq.html#faq-turbovnc
+ 21. http://www.virtualgl.org/
+ 22. http://www.karlrunge.com/x11vnc/faq.html#faq-xfixes-alpha-hacks
23. http://www.uvnc.com/addons/repeater.html
24. http://www.uvnc.com/addons/singleclick.html
25. http://www.uvnc.com/features/encryption.html
@@ -12795,7 +12802,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.9 lastmod: 2009-10-07
+x11vnc: allow VNC connections to real X11 displays. 0.9.9 lastmod: 2009-10-15
x11vnc options:
-display disp -auth file -N
@@ -12815,79 +12822,79 @@ x11vnc options:
-allow host1[,host2..] -localhost -nolookup
-input string -grabkbd -grabptr
-grabalways -viewpasswd string -passwdfile filename
- -unixpw [list] -unixpw_nis [list] -unixpw_cmd cmd
- -find -finddpy -listdpy
- -create -xdummy -xvnc
- -xvnc_redirect -svc -svc_xdummy
- -svc_xvnc -xdmsvc -sshxdmsvc
- -unixpw_system_greeter -redirect port -display WAIT:...
- -vencrypt mode -anontls mode -sslonly
- -dhparams file -nossl -ssl [pem]
- -ssltimeout n -sslnofail -ssldir [dir]
- -sslverify [path] -sslCRL path -sslGenCA [dir]
- -sslGenCert type name -sslEncKey [pem] -sslCertInfo [pem]
- -sslDelCert [pem] -stunnel [pem] -stunnel3 [pem]
- -enc cipher:keyfile -https [port] -httpsredir [port]
- -http_oneport -ssh user@host:disp -usepw
- -storepasswd pass file -nopw -accept string
- -afteraccept string -gone string -users list
- -noshm -flipbyteorder -onetile
- -solid [color] -blackout string -xinerama
- -noxinerama -xtrap -xrandr [mode]
- -rotate string -padgeom WxH -o logfile
- -flag file -rmflag file -rc filename
- -norc -env VAR=VALUE -prog /path/to/x11vnc
- -h, -help -?, -opts -V, -version
- -license -dbg -q, -quiet
- -v, -verbose -bg -modtweak
- -nomodtweak -xkb -noxkb
- -capslock -skip_lockkeys -noskip_lockkeys
- -skip_keycodes string -sloppy_keys -skip_dups
- -noskip_dups -add_keysyms -noadd_keysyms
- -clear_mods -clear_keys -clear_all
- -remap string -norepeat -repeat
- -nofb -nobell -nosel
- -noprimary -nosetprimary -noclipboard
- -nosetclipboard -seldir string -cursor [mode]
- -nocursor -cursor_drag -arrow n
- -noxfixes -alphacut n -alphafrac fraction
- -alpharemove -noalphablend -nocursorshape
- -cursorpos -nocursorpos -xwarppointer
- -noxwarppointer -buttonmap string -nodragging
- -ncache n -ncache_cr -ncache_no_moveraise
- -ncache_no_dtchange -ncache_no_rootpixmap -ncache_keep_anims
- -ncache_old_wm -ncache_pad n -debug_ncache
- -wireframe [str] -nowireframe -nowireframelocal
- -wirecopyrect mode -nowirecopyrect -debug_wireframe
- -scrollcopyrect mode -noscrollcopyrect -scr_area n
- -scr_skip list -scr_inc list -scr_keys list
- -scr_term list -scr_keyrepeat lo-hi -scr_parms string
- -fixscreen string -debug_scroll -noxrecord
- -grab_buster -nograb_buster -debug_grabs
- -debug_sel -pointer_mode n -input_skip n
- -allinput -speeds rd,bw,lat -wmdt string
- -debug_pointer -debug_keyboard -defer time
- -wait time -extra_fbur n -wait_ui factor
- -setdefer n -nowait_bog -slow_fb time
- -xrefresh time -nap -nonap
- -sb time -readtimeout n -ping n
- -nofbpm -fbpm -nodpms
- -dpms -forcedpms -clientdpms
- -noserverdpms -noultraext -chatwindow
- -noxdamage -xd_area A -xd_mem f
- -sigpipe string -threads -nothreads
- -fs f -gaps n -grow n
- -fuzz n -debug_tiles -snapfb
- -rawfb string -freqtab file -pipeinput cmd
- -macnodim -macnosleep -macnosaver
- -macnowait -macwheel n -macnoswap
- -macnoresize -maciconanim n -macmenu
- -macuskbd -gui [gui-opts] -remote command
- -query variable -QD variable -sync
- -query_retries str -remote_prefix str -noremote
- -yesremote -unsafe -safer
- -privremote -nocmds -allowedcmds list
- -deny_all
+ -showrfbauth filename -unixpw [list] -unixpw_nis [list]
+ -unixpw_cmd cmd -find -finddpy
+ -listdpy -create -xdummy
+ -xvnc -xvnc_redirect -svc
+ -svc_xdummy -svc_xvnc -xdmsvc
+ -sshxdmsvc -unixpw_system_greeter -redirect port
+ -display WAIT:... -vencrypt mode -anontls mode
+ -sslonly -dhparams file -nossl
+ -ssl [pem] -ssltimeout n -sslnofail
+ -ssldir [dir] -sslverify [path] -sslCRL path
+ -sslGenCA [dir] -sslGenCert type name -sslEncKey [pem]
+ -sslCertInfo [pem] -sslDelCert [pem] -stunnel [pem]
+ -stunnel3 [pem] -enc cipher:keyfile -https [port]
+ -httpsredir [port] -http_oneport -ssh user@host:disp
+ -usepw -storepasswd pass file -nopw
+ -accept string -afteraccept string -gone string
+ -users list -noshm -flipbyteorder
+ -onetile -solid [color] -blackout string
+ -xinerama -noxinerama -xtrap
+ -xrandr [mode] -rotate string -padgeom WxH
+ -o logfile -flag file -rmflag file
+ -rc filename -norc -env VAR=VALUE
+ -prog /path/to/x11vnc -h, -help -?, -opts
+ -V, -version -license -dbg
+ -q, -quiet -v, -verbose -bg
+ -modtweak -nomodtweak -xkb
+ -noxkb -capslock -skip_lockkeys
+ -noskip_lockkeys -skip_keycodes string -sloppy_keys
+ -skip_dups -noskip_dups -add_keysyms
+ -noadd_keysyms -clear_mods -clear_keys
+ -clear_all -remap string -norepeat
+ -repeat -nofb -nobell
+ -nosel -noprimary -nosetprimary
+ -noclipboard -nosetclipboard -seldir string
+ -cursor [mode] -nocursor -cursor_drag
+ -arrow n -noxfixes -alphacut n
+ -alphafrac fraction -alpharemove -noalphablend
+ -nocursorshape -cursorpos -nocursorpos
+ -xwarppointer -noxwarppointer -buttonmap string
+ -nodragging -ncache n -ncache_cr
+ -ncache_no_moveraise -ncache_no_dtchange -ncache_no_rootpixmap
+ -ncache_keep_anims -ncache_old_wm -ncache_pad n
+ -debug_ncache -wireframe [str] -nowireframe
+ -nowireframelocal -wirecopyrect mode -nowirecopyrect
+ -debug_wireframe -scrollcopyrect mode -noscrollcopyrect
+ -scr_area n -scr_skip list -scr_inc list
+ -scr_keys list -scr_term list -scr_keyrepeat lo-hi
+ -scr_parms string -fixscreen string -debug_scroll
+ -noxrecord -grab_buster -nograb_buster
+ -debug_grabs -debug_sel -pointer_mode n
+ -input_skip n -allinput -speeds rd,bw,lat
+ -wmdt string -debug_pointer -debug_keyboard
+ -defer time -wait time -extra_fbur n
+ -wait_ui factor -setdefer n -nowait_bog
+ -slow_fb time -xrefresh time -nap
+ -nonap -sb time -readtimeout n
+ -ping n -nofbpm -fbpm
+ -nodpms -dpms -forcedpms
+ -clientdpms -noserverdpms -noultraext
+ -chatwindow -noxdamage -xd_area A
+ -xd_mem f -sigpipe string -threads
+ -nothreads -fs f -gaps n
+ -grow n -fuzz n -debug_tiles
+ -snapfb -rawfb string -freqtab file
+ -pipeinput cmd -macnodim -macnosleep
+ -macnosaver -macnowait -macwheel n
+ -macnoswap -macnoresize -maciconanim n
+ -macmenu -macuskbd -gui [gui-opts]
+ -remote command -query variable -QD variable
+ -sync -query_retries str -remote_prefix str
+ -noremote -yesremote -unsafe
+ -safer -privremote -nocmds
+ -allowedcmds list -deny_all
libvncserver options:
-rfbport port TCP port for RFB protocol
@@ -12921,7 +12928,7 @@ libvncserver-tight-extension options:
% x11vnc -help
-x11vnc: allow VNC connections to real X11 displays. 0.9.9 lastmod: 2009-10-07
+x11vnc: allow VNC connections to real X11 displays. 0.9.9 lastmod: 2009-10-15
(type "x11vnc -opts" to just list the options.)
@@ -13642,6 +13649,9 @@ Options:
and last line be "__BEGIN_VIEWONLY__" to have 2
full-access passwords)
+-showrfbauth filename Print to the screen the obscured VNC password kept in
+ the rfbauth file "filename" and then exit.
+
-unixpw [list] Use Unix username and password authentication. x11vnc
will use the su(1) program to verify the user's
password. [list] is an optional comma separated list
@@ -15438,15 +15448,18 @@ t
e.g. "darkblue" or numerical "#RRGGBB").
Currently this option only works on GNOME, KDE, CDE,
- and classic X (i.e. with the background image on the
- root window). The "gconftool-2" and "dcop" external
- commands are run for GNOME and KDE respectively.
- Other desktops won't work, e.g. Xfce (send us the
- corresponding commands if you find them). If x11vnc is
- running as root (inetd(8) or gdm(1)), the -users option
- may be needed for GNOME and KDE. If x11vnc guesses
- your desktop incorrectly, you can force it by prefixing
- color with "gnome:", "kde:", "cde:" or "root:".
+ XFCE, and classic X (i.e. with the background image
+ on the root window). The "gconftool-2", "dcop"
+ and "xfconf-query" external commands are run for
+ GNOME, KDE, and XFCE respectively. This also works
+ on native MacOSX. (There is no color selection for
+ MacOSX or XFCE.) Other desktops won't work, (send
+ us the corresponding commands if you find them).
+ If x11vnc is running as root (inetd(8) or gdm(1)),
+ the -users option may be needed for GNOME, KDE, XFCE.
+ If x11vnc guesses your desktop incorrectly, you can
+ force it by prefixing color with "gnome:", "kde:",
+ "cde:", "xfce:", or "root:".
This mode works in a limited way on the Mac OS X Console
with one color ('kelp') using the screensaver writing
@@ -17951,9 +17964,9 @@ n
macnomenu nomacmenu macuskbd nomacuskbd noremote
aro= noop display vncdisplay autoport loop loopbg
- desktopname guess_desktop http_url auth xauth
- users rootshift clipshift scale_str scaled_x
- scaled_y scale_numer scale_denom scale_fac_x
+ desktopname guess_desktop guess_dbus http_url
+ auth xauth users rootshift clipshift scale_str
+ scaled_x scaled_y scale_numer scale_denom scale_fac_x
scale_fac_y scaling_blend scaling_nomult4 scaling_pad
scaling_interpolate inetd privremote unsafe safer
nocmds passwdfile unixpw unixpw_nis unixpw_list ssl
diff --git a/x11vnc/cleanup.c b/x11vnc/cleanup.c
index 9081db1..7d57d90 100644
--- a/x11vnc/cleanup.c
+++ b/x11vnc/cleanup.c
@@ -276,6 +276,13 @@ int trap_getimage_xerror(Display *d, XErrorEvent *error) {
return 0;
}
+/* Are silly Xorg people removing X_ShmAttach from XShm.h? */
+/* INDEED! What stupid, myopic morons... */
+/* Maintenance Monkeys busy typing at their keyboards... */
+#ifndef X_ShmAttach
+#define X_ShmAttach 1
+#endif
+
static int Xerror(Display *d, XErrorEvent *error) {
X_UNLOCK;
diff --git a/x11vnc/help.c b/x11vnc/help.c
index d16f98a..fadcf32 100644
--- a/x11vnc/help.c
+++ b/x11vnc/help.c
@@ -781,6 +781,9 @@ void print_help(int mode) {
" and last line be \"__BEGIN_VIEWONLY__\" to have 2\n"
" full-access passwords)\n"
"\n"
+"-showrfbauth filename Print to the screen the obscured VNC password kept in\n"
+" the rfbauth file \"filename\" and then exit.\n"
+"\n"
"-unixpw [list] Use Unix username and password authentication. x11vnc\n"
" will use the su(1) program to verify the user's\n"
" password. [list] is an optional comma separated list\n"
@@ -2576,15 +2579,18 @@ void print_help(int mode) {
" e.g. \"darkblue\" or numerical \"#RRGGBB\").\n"
"\n"
" Currently this option only works on GNOME, KDE, CDE,\n"
-" and classic X (i.e. with the background image on the\n"
-" root window). The \"gconftool-2\" and \"dcop\" external\n"
-" commands are run for GNOME and KDE respectively.\n"
-" Other desktops won't work, e.g. Xfce (send us the\n"
-" corresponding commands if you find them). If x11vnc is\n"
-" running as root (inetd(8) or gdm(1)), the -users option\n"
-" may be needed for GNOME and KDE. If x11vnc guesses\n"
-" your desktop incorrectly, you can force it by prefixing\n"
-" color with \"gnome:\", \"kde:\", \"cde:\" or \"root:\".\n"
+" XFCE, and classic X (i.e. with the background image\n"
+" on the root window). The \"gconftool-2\", \"dcop\"\n"
+" and \"xfconf-query\" external commands are run for\n"
+" GNOME, KDE, and XFCE respectively. This also works\n"
+" on native MacOSX. (There is no color selection for\n"
+" MacOSX or XFCE.) Other desktops won't work, (send\n"
+" us the corresponding commands if you find them).\n"
+" If x11vnc is running as root (inetd(8) or gdm(1)),\n"
+" the -users option may be needed for GNOME, KDE, XFCE.\n"
+" If x11vnc guesses your desktop incorrectly, you can\n"
+" force it by prefixing color with \"gnome:\", \"kde:\",\n"
+" \"cde:\", \"xfce:\", or \"root:\".\n"
"\n"
" This mode works in a limited way on the Mac OS X Console\n"
" with one color ('kelp') using the screensaver writing\n"
@@ -5094,9 +5100,9 @@ void print_help(int mode) {
" macnomenu nomacmenu macuskbd nomacuskbd noremote\n"
"\n"
" aro= noop display vncdisplay autoport loop loopbg\n"
-" desktopname guess_desktop http_url auth xauth\n"
-" users rootshift clipshift scale_str scaled_x\n"
-" scaled_y scale_numer scale_denom scale_fac_x\n"
+" desktopname guess_desktop guess_dbus http_url\n"
+" auth xauth users rootshift clipshift scale_str\n"
+" scaled_x scaled_y scale_numer scale_denom scale_fac_x\n"
" scale_fac_y scaling_blend scaling_nomult4 scaling_pad\n"
" scaling_interpolate inetd privremote unsafe safer\n"
" nocmds passwdfile unixpw unixpw_nis unixpw_list ssl\n"
diff --git a/x11vnc/solid.c b/x11vnc/solid.c
index a6500d8..916566a 100644
--- a/x11vnc/solid.c
+++ b/x11vnc/solid.c
@@ -735,6 +735,100 @@ static void solid_gnome(char *color) {
#endif /* NO_X11 */
}
+static void solid_xfce(char *color) {
+#if NO_X11
+ RAWFB_RET_VOID
+ if (!color) {}
+ return;
+#else
+ char get_image_show[] = "%s xfconf-query -v -c xfce4-desktop -p /backdrop/screen0/monitor0/image-show";
+ char set_image_show[] = "%s xfconf-query -v -c xfce4-desktop -p /backdrop/screen0/monitor0/image-show -s '%s'";
+ char get_color_style[] = "%s xfconf-query -v -c xfce4-desktop -p /backdrop/screen0/monitor0/color-style";
+ char set_color_style[] = "%s xfconf-query -v -c xfce4-desktop -p /backdrop/screen0/monitor0/color-style -s '%s'";
+
+ static char *orig_image_show = NULL;
+ static char *orig_color_style = NULL;
+ char *cmd, *dbus = "";
+
+ RAWFB_RET_VOID
+
+ dbus = dbus_session();
+ rfbLog("guessed dbus: %s\n", dbus);
+
+ if (! color) {
+ if (! orig_image_show) {
+ orig_image_show = strdup("true");
+ }
+ if (! orig_color_style) {
+ orig_color_style = strdup("0");
+ }
+ if (strstr(orig_image_show, "'") != NULL) {
+ rfbLog("invalid image show: %s\n", orig_image_show);
+ return;
+ }
+ if (strstr(orig_color_style, "'") != NULL) {
+ rfbLog("invalid color style: %s\n", orig_color_style);
+ return;
+ }
+ cmd = (char *) malloc(strlen(set_image_show) - 2 + strlen(orig_image_show) + strlen(dbus) + 1);
+ sprintf(cmd, set_image_show, dbus, orig_image_show);
+ dt_cmd(cmd);
+ free(cmd);
+ cmd = (char *) malloc(strlen(set_color_style) - 2 + strlen(orig_color_style) + strlen(dbus) + 1);
+ sprintf(cmd, set_color_style, dbus, orig_color_style);
+ dt_cmd(cmd);
+ free(cmd);
+ return;
+ }
+
+ if (! orig_image_show) {
+ char *q;
+ if (cmd_ok("dt")) {
+ cmd = (char *) malloc(strlen(get_image_show) + strlen(dbus) + 1);
+ sprintf(cmd, get_image_show, dbus);
+ orig_image_show = strdup(cmd_output(cmd));
+ free(cmd);
+ }
+ if (*orig_image_show == '\0') {
+ orig_image_show = strdup("true");
+ }
+ if ((q = strchr(orig_image_show, '\n')) != NULL) {
+ *q = '\0';
+ }
+ }
+ if (! orig_color_style) {
+ char *q;
+ if (cmd_ok("dt")) {
+ cmd = (char *) malloc(strlen(get_color_style) + strlen(dbus) + 1);
+ sprintf(cmd, get_color_style, dbus);
+ orig_color_style = strdup(cmd_output(cmd));
+ free(cmd);
+ }
+ if (*orig_color_style == '\0') {
+ orig_color_style = strdup("0");
+ }
+ if ((q = strchr(orig_color_style, '\n')) != NULL) {
+ *q = '\0';
+ }
+ }
+ if (strstr(color, "'") != NULL) {
+ rfbLog("invalid color: %s\n", color);
+ return;
+ }
+ cmd = (char *) malloc(strlen(set_color_style) + strlen("0") + strlen(dbus) + 1);
+ sprintf(cmd, set_color_style, dbus, "0");
+ dt_cmd(cmd);
+ free(cmd);
+
+ cmd = (char *) malloc(strlen(set_image_show) + strlen("false") + strlen(dbus) + 1);
+ sprintf(cmd, set_image_show, dbus, "false");
+ dt_cmd(cmd);
+ free(cmd);
+
+#endif /* NO_X11 */
+}
+
+
static char *dcop_session(void) {
char *empty = strdup("");
#if NO_X11
@@ -1219,6 +1313,8 @@ void solid_bg(int restore) {
solid_kde(NULL);
} else if (desktop == 3) {
solid_cde(NULL);
+ } else if (desktop == 4) {
+ solid_xfce(NULL);
}
solid_on = 0;
return;
@@ -1240,6 +1336,8 @@ void solid_bg(int restore) {
dtname = "kde";
} else if (strstr(solid_str, "cde:") == solid_str) {
dtname = "cde";
+ } else if (strstr(solid_str, "xfce:") == solid_str) {
+ dtname = "xfce";
} else {
dtname = "root";
}
@@ -1268,6 +1366,9 @@ void solid_bg(int restore) {
} else if (!strcmp(dtname, "cde")) {
desktop = 3;
solid_cde(color);
+ } else if (!strcmp(dtname, "xfce")) {
+ desktop = 4;
+ solid_xfce(color);
} else {
desktop = 0;
solid_root(color);
diff --git a/x11vnc/sslhelper.c b/x11vnc/sslhelper.c
index 4c84cbc..b9b0058 100644
--- a/x11vnc/sslhelper.c
+++ b/x11vnc/sslhelper.c
@@ -3639,8 +3639,8 @@ void accept_openssl(int mode, int presock) {
wrote_cookie:
ssl_xfer(vncsock, s_in, s_out, 0);
-
rfbLog("SSL: ssl_helper[%d]: exit case 7 (ssl_xfer done)\n", getpid());
+ if (0) usleep(50 * 1000);
exit(0);
}
/* parent here */
diff --git a/x11vnc/x11vnc.1 b/x11vnc/x11vnc.1
index 09c0275..893c9a6 100644
--- a/x11vnc/x11vnc.1
+++ b/x11vnc/x11vnc.1
@@ -2,7 +2,7 @@
.TH X11VNC "1" "October 2009" "x11vnc " "User Commands"
.SH NAME
x11vnc - allow VNC connections to real X11 displays
- version: 0.9.9, lastmod: 2009-10-07
+ version: 0.9.9, lastmod: 2009-10-15
.SH SYNOPSIS
.B x11vnc
[OPTION]...
@@ -868,6 +868,11 @@ used to have viewonly passwords. (tip: make the 3rd
and last line be "__BEGIN_VIEWONLY__" to have 2
full-access passwords)
.PP
+\fB-showrfbauth\fR \fIfilename\fR
+.IP
+Print to the screen the obscured VNC password kept in
+the rfbauth file \fIfilename\fR and then exit.
+.PP
\fB-unixpw\fR \fI[list]\fR
.IP
Use Unix username and password authentication. x11vnc
@@ -2856,19 +2861,22 @@ For a different one specify the X color (rgb.txt name,
e.g. "darkblue" or numerical "#RRGGBB").
.IP
Currently this option only works on GNOME, KDE, CDE,
-and classic X (i.e. with the background image on the
-root window). The "gconftool-2" and "dcop" external
-commands are run for GNOME and KDE respectively.
-Other desktops won't work, e.g. Xfce (send us the
-corresponding commands if you find them). If x11vnc is
-running as root (
+XFCE, and classic X (i.e. with the background image
+on the root window). The "gconftool-2", "dcop"
+and "xfconf-query" external commands are run for
+GNOME, KDE, and XFCE respectively. This also works
+on native MacOSX. (There is no color selection for
+MacOSX or XFCE.) Other desktops won't work, (send
+us the corresponding commands if you find them).
+If x11vnc is running as root (
.IR inetd (8)
or
.IR gdm (1)
-), the \fB-users\fR option
-may be needed for GNOME and KDE. If x11vnc guesses
-your desktop incorrectly, you can force it by prefixing
-color with "gnome:", "kde:", "cde:" or "root:".
+),
+the \fB-users\fR option may be needed for GNOME, KDE, XFCE.
+If x11vnc guesses your desktop incorrectly, you can
+force it by prefixing color with "gnome:", "kde:",
+"cde:", "xfce:", or "root:".
.IP
This mode works in a limited way on the Mac OS X Console
with one color ('kelp') using the screensaver writing
@@ -6045,9 +6053,9 @@ macnoresize macresize nomacnoresize maciconanim macmenu
macnomenu nomacmenu macuskbd nomacuskbd noremote
.IP
aro= noop display vncdisplay autoport loop loopbg
-desktopname guess_desktop http_url auth xauth
-users rootshift clipshift scale_str scaled_x
-scaled_y scale_numer scale_denom scale_fac_x
+desktopname guess_desktop guess_dbus http_url
+auth xauth users rootshift clipshift scale_str
+scaled_x scaled_y scale_numer scale_denom scale_fac_x
scale_fac_y scaling_blend scaling_nomult4 scaling_pad
scaling_interpolate inetd privremote unsafe safer
nocmds passwdfile unixpw unixpw_nis unixpw_list ssl
diff --git a/x11vnc/x11vnc.c b/x11vnc/x11vnc.c
index d4dcce7..c02f813 100644
--- a/x11vnc/x11vnc.c
+++ b/x11vnc/x11vnc.c
@@ -2791,6 +2791,19 @@ int main(int argc, char* argv[]) {
}
continue;
}
+ if (!strcmp(arg, "-showrfbauth")) {
+ if (argc >= i+2) {
+ char *f = argv[i+1];
+ char *s = rfbDecryptPasswdFromFile(f);
+ if (!s) {
+ fprintf(stderr, "rfbDecryptPasswdFromFile failed: %s\n", f);
+ exit(1);
+ }
+ fprintf(stdout, "rfbDecryptPasswdFromFile file: %s\n", f);
+ fprintf(stdout, "rfbDecryptPasswdFromFile pass: %s\n", s);
+ }
+ exit(0);
+ }
if (!strcmp(arg, "-accept")) {
CHECK_ARGC
accept_cmd = strdup(argv[++i]);
diff --git a/x11vnc/x11vnc_defs.c b/x11vnc/x11vnc_defs.c
index 470d23a..cf08747 100644
--- a/x11vnc/x11vnc_defs.c
+++ b/x11vnc/x11vnc_defs.c
@@ -47,7 +47,7 @@ int xtrap_base_event_type = 0;
int xdamage_base_event_type = 0;
/* date +'lastmod: %Y-%m-%d' */
-char lastmod[] = "0.9.9 lastmod: 2009-10-07";
+char lastmod[] = "0.9.9 lastmod: 2009-10-15";
/* X display info */
OpenPOWER on IntegriCloud