Commit 35c42cf3 authored by runge's avatar runge

Workaround for inane X_ShmAttach incompatibility in Xorg, -solid support in...

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