diff options
author | runge <runge@karlrunge.com> | 2009-10-17 22:36:54 -0400 |
---|---|---|
committer | runge <runge@karlrunge.com> | 2009-10-17 22:36:54 -0400 |
commit | 35c42cf3a64b633ca07f0fe47182955736b8c5e1 (patch) | |
tree | e556e94d79e678b44687e519cd18103172227fcd | |
parent | 387e189b37a1456ee5a4df52d495a9f31d01306a (diff) | |
download | libvncserver-35c42cf3a64b633ca07f0fe47182955736b8c5e1.zip libvncserver-35c42cf3a64b633ca07f0fe47182955736b8c5e1.tar.gz |
Workaround for inane X_ShmAttach incompatibility in Xorg, -solid support in xfce, showrfbauth option.
-rw-r--r-- | x11vnc/ChangeLog | 5 | ||||
-rw-r--r-- | x11vnc/README | 241 | ||||
-rw-r--r-- | x11vnc/cleanup.c | 7 | ||||
-rw-r--r-- | x11vnc/help.c | 30 | ||||
-rw-r--r-- | x11vnc/solid.c | 101 | ||||
-rw-r--r-- | x11vnc/sslhelper.c | 2 | ||||
-rw-r--r-- | x11vnc/x11vnc.1 | 36 | ||||
-rw-r--r-- | x11vnc/x11vnc.c | 13 | ||||
-rw-r--r-- | x11vnc/x11vnc_defs.c | 2 |
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 */ |