x11vnc: prepare_x11vnc_dist.sh for 0.9.10. -xdummy_xvfb,

-svc_xdummy_xvfb and -create_x shorthand. lxde session.
        Xdummy improvements and root no longer required.
pull/1/head
runge 15 years ago
parent 9659bc129f
commit c96107783c

@ -1,6 +1,6 @@
#!/bin/bash
VERSION="0.9.9"
VERSION="0.9.10"
cd "$(dirname "$0")"

@ -1,3 +1,8 @@
2009-12-24 Karl Runge <runge@karlrunge.com>
* x11vnc: prepare_x11vnc_dist.sh for 0.9.10. -xdummy_xvfb,
-svc_xdummy_xvfb and -create_x shorthand. lxde session.
Xdummy improvements and root no longer required.
2009-12-21 Karl Runge <runge@karlrunge.com>
* x11vnc: -DENC_HAVE_OPENSSL=0 to disable enc.h but still
have ssl. Tweak ps command in find_display. Try to handle

@ -2,7 +2,7 @@
Copyright (C) 2002-2009 Karl J. Runge <runge@karlrunge.com>
All rights reserved.
x11vnc README file Date: Mon Dec 21 00:00:59 EST 2009
x11vnc README file Date: Thu Dec 24 16:08:39 EST 2009
The following information is taken from these URLs:
@ -586,12 +586,12 @@ vncviewer -via $host localhost:0 # must be TightVNC vncviewer.
SourceForge.net. I use libvncserver for all of the VNC aspects; I
couldn't have done without it. The full source code may be found and
downloaded (either file-release tarball or GIT tree) from the above
link. As of Jul 2009, the [91]x11vnc-0.9.8.tar.gz source package is
released (recommended download). The [92]x11vnc 0.9.8 release notes.
link. As of Dec 2009, the [91]x11vnc-0.9.9.tar.gz source package is
released (recommended download). The [92]x11vnc 0.9.9 release notes.
The x11vnc package is the subset of the libvncserver package needed to
build the x11vnc program. Also, you can get a copy of my latest,
bleeding edge [93]x11vnc-0.9.9.tar.gz tarball to build the most up to
bleeding edge [93]x11vnc-0.9.10.tar.gz tarball to build the most up to
date one.
Precompiled Binaries/Packages: See the [94]FAQ below for information
@ -629,13 +629,13 @@ vncviewer -via $host localhost:0 # must be TightVNC vncviewer.
them by default.)
If your OS has libjpeg.so and libz.so in standard locations you can
build as follows (example given for the 0.9.8 release of x11vnc:
build as follows (example given for the 0.9.9 release of x11vnc:
replace with the version you downloaded):
(un-tar the x11vnc+libvncserver tarball)
# gzip -dc x11vnc-0.9.8.tar.gz | tar -xvf -
# gzip -dc x11vnc-0.9.9.tar.gz | tar -xvf -
(cd to the source directory)
# cd x11vnc-0.9.8
# cd x11vnc-0.9.9
(run configure and then run make)
# ./configure
@ -886,13 +886,13 @@ make
I'd appreciate any additional testing very much.
Thanks to those who suggested features and helped beta test x11vnc
0.9.8 released in Jul 2009!
0.9.9 released in Dec 2009!
Please help test and debug the 0.9.9 version for release sometime in
2009.
Please help test and debug the 0.9.10 version for release sometime in
Spring 2010.
The version 0.9.9 beta tarball is kept here:
[114]x11vnc-0.9.9.tar.gz
The version 0.9.10 beta tarball is kept here:
[114]x11vnc-0.9.10.tar.gz
There are also some Linux, Solaris, Mac OS X, and other OS test
binaries [115]here. Please kick the tires and report bugs, performance
@ -909,7 +909,11 @@ make
Encryption Plugin' settings panel.)
Here are some features that will appear in the 0.9.9 release:
Here are some features that will appear in the 0.9.10 release:
* Coming Soon.
Here are some features that appeared in the 0.9.9 release:
* The [122]-unixpw_system_greeter option, when used in combined
unixpw and XDMCP FINDCREATEDISPLAY mode (e.g. [123]-xdmsvc),
enables the user to press Escape to jump directly to the
@ -1507,7 +1511,7 @@ LAY
description of the [294]-create option that does all of this
automatically for you.
Also, a faster and more accurate way is to use the "dummy"
XFree86/Xorg device driver (or our Xdummy wrapper script.) See
Xorg/XFree86 device driver (or our Xdummy wrapper script.) See
[295]this FAQ for details.
* Somewhat surprisingly, the X11 mouse (cursor) shape is write-only
and cannot be queried from the X server. So traditionally in
@ -1629,9 +1633,9 @@ References
88. http://www.karlrunge.com/x11vnc/faq.html#faq-ssl-tunnel-int
89. http://www.karlrunge.com/x11vnc/ssvnc.html
90. http://sourceforge.net/projects/libvncserver/
91. http://sourceforge.net/project/showfiles.php?group_id=32584&package_id=119006&release_id=695585
92. http://sourceforge.net/project/shownotes.php?group_id=32584&release_id=695585
93. http://x11vnc.sourceforge.net/dev/x11vnc-0.9.9.tar.gz
91. http://sourceforge.net/projects/libvncserver/files/x11vnc/0.9.9/
92. http://sourceforge.net/projects/libvncserver/files/x11vnc/0.9.9/release-notes-0.9.9.txt/view
93. http://x11vnc.sourceforge.net/dev/x11vnc-0.9.10.tar.gz
94. http://www.karlrunge.com/x11vnc/faq.html#faq-binaries
95. http://www.tightvnc.com/download.html
96. http://www.realvnc.com/products/free/4.1/download.html
@ -1652,7 +1656,7 @@ References
111. http://www.karlrunge.com/x11vnc/faq.html#faq-solaris251build
112. http://www.karlrunge.com/x11vnc/faq.html#faq-macosx
113. http://www.karlrunge.com/x11vnc/faq.html#faq-ssl-tunnel-int
114. http://x11vnc.sourceforge.net/dev/x11vnc-0.9.9.tar.gz
114. http://x11vnc.sourceforge.net/dev/x11vnc-0.9.10.tar.gz
115. http://www.karlrunge.com/x11vnc/bins
116. mailto:xvml@karlrunge.com
117. http://www.karlrunge.com/x11vnc/faq.html#faq-ssl-tunnel-int
@ -5314,9 +5318,11 @@ xpw=
FINDDISPLAY method it will create an X server session for the user
(i.e. desktop/terminal server.) This is the only time x11vnc actually
tries to start up an X server. By default it will only try to start up
virtual (non-hardware) X servers: first [439]Xdummy and if that is not
available then Xvfb. Note that Xdummy requires root permission and
only works on Linux whereas Xvfb works just about everywhere.
virtual (non-hardware) X servers: first [439]Xvfb and if that is not
available then Xdummy. Note that Xdummy only works on Linux whereas
Xvfb works just about everywhere (and in some situations Xdummy must
be run as root.) An advantage of Xdummy over Xvfb is that Xdummy
supports RANDR dynamic screen resizing.
So an inetd(8) example might look like:
5900 stream tcp nowait root /usr/sbin/tcpd /usr/local/bin/x11vnc -inetd \
@ -5693,9 +5699,8 @@ xmodmap -e "add Mod1 = Alt_L Alt_R Meta_L"
server that turn off the VT usage in the X server. Update: As of
Jul/2005 we have an LD_PRELOAD script [470]Xdummy that allows you to
use a stock (i.e. unpatched) Xorg or XFree86 server with the "dummy"
driver and not have any VT switching problems! Currently Xdummy needs
to be run as root, but with some luck that may be relaxed in the
future.
driver and not have any VT switching problems! An advantage of Xdummy
over Xvfb is that Xdummy supports RANDR dynamic screen resizing.
The standard way to start the "dummy" driver would be:
startx -- :1 -config /etc/X11/xorg.conf.dummy
@ -12914,7 +12919,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-12-21
x11vnc: allow VNC connections to real X11 displays. 0.9.10 lastmod: 2009-12-24
x11vnc options:
-display disp -auth file -N
@ -12938,8 +12943,9 @@ x11vnc options:
-unixpw_nis [list] -unixpw_cmd cmd -find
-finddpy -listdpy -findauth [disp]
-create -xdummy -xvnc
-xvnc_redirect -svc -svc_xdummy
-svc_xvnc -xdmsvc -sshxdmsvc
-xvnc_redirect -xdummy_xvfb -create_x str
-svc -svc_xdummy -svc_xvnc
-svc_xdummy_xvfb -xdmsvc -sshxdmsvc
-unixpw_system_greeter -redirect port -display WAIT:...
-vencrypt mode -anontls mode -sslonly
-dhparams file -nossl -ssl [pem]
@ -13041,7 +13047,7 @@ libvncserver-tight-extension options:
% x11vnc -help
x11vnc: allow VNC connections to real X11 displays. 0.9.9 lastmod: 2009-12-21
x11vnc: allow VNC connections to real X11 displays. 0.9.10 lastmod: 2009-12-24
(type "x11vnc -opts" to just list the options.)
@ -14091,6 +14097,11 @@ Options:
-xdummy As in -create, except Xdummy instead of Xvfb.
-xvnc As in -create, except Xvnc instead of Xvfb.
-xvnc_redirect As in -create, except Xvnc.redirect instead of Xvfb.
-xdummy_xvfb Sets WAIT:cmd=FINDCREATEDISPLAY-Xdummy,Xvfb
-create_x str Sets WAIT:cmd=FINDCREATEDISPLAY-<str> Can be on cmdline
after anything that sets WAIT:.. and other things
(e.g. -svc, -xdmsvc) to adjust the X server list.
-svc Terminal services mode based on SSL access. Alias for
-display WAIT:cmd=FINDCREATEDISPLAY-Xvfb -unixpw -users
@ -14098,6 +14109,7 @@ Options:
-svc_xdummy As -svc except Xdummy instead of Xvfb.
-svc_xvnc As -svc except Xvnc instead of Xvfb.
-svc_xdummy_xvfb As -svc with Xdummy,Xvfb.
-xdmsvc Display manager Terminal services mode based on SSL.
Alias for -display WAIT:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp
@ -14269,11 +14281,13 @@ Options:
mode when a virtual X server such as Xvfb is going
to be created. It sets the width and height of
the new display, and optionally the color depth as
well. You can also supply "gnome", "kde", "twm",
well.
You can also supply "gnome", "kde", "twm",
"fvwm", "mwm", "dtwm", "wmaker", "xfce",
"enlightenment", "Xsession", or "failsafe"
(same as "xterm") to have the created display use
that mode for the user session.
"lxde", "enlightenment", "Xsession", or
"failsafe" (same as "xterm") to have the created
display use that mode for the user session.
Specify "tag=..." to set the unique FD_TAG desktop
session tag described below. Note: this option will
@ -14373,17 +14387,21 @@ Options:
Xdummy:
The Xdummy wrapper is part of the x11vnc source code
(x11vnc/misc/Xdummy) It should be available in PATH and
have run "Xdummy -install" once to create the shared
library. Xdummy requires root permission and only works
on Linux. (Note: specify FD_XDUMMY_NOROOT=1 to skip
a check for the root id; evidently your sudo(1) will
take care of everything. The -xdummy and -svc_xdummy
options imply FD_XDUMMY_NOROOT=1).
(x11vnc/misc/Xdummy) It should be available in PATH
and have run "Xdummy -install" once to create the
shared library. Xdummy only works on Linux. As of
12/2009 it no longer needs to be run as root, and the
default is to not run as root. In some circumstances
permissions may require running it as root, in these
cases specify FD_XDUMMY_RUN_AS_ROOT=1, this is the same
as supplying -root to the Xdummy cmdline.
Xvfb is available on most platforms and does not
require root.
An advantage of Xdummy over Xvfb is that Xdummy supports
RANDR dynamic screen resizing.
When x11vnc exits (i.e. user disconnects) the X
server session stays running in the background.
The FINDDISPLAY will find it directly next time.
@ -14441,13 +14459,11 @@ Options:
More FD tricks: FD_CUPS=port or FD_CUPS=host:port
will set the cups printing environment. Similarly for
FD_ESD=port or FD_ESD=host:port for esddsp sound
redirection. FD_XDUMMY_NOROOT means the Xdummy
server does not need to be started as root (e.g. it
will sudo automatically). Set FD_EXTRA to a command
to be run a few seconds after the X server starts up.
Set FD_TAG to be a unique name for the session, it is
set as an X property, that makes FINDDISPLAY only find
sessions with that tag value.
redirection. Set FD_EXTRA to a command to be run a
few seconds after the X server starts up. Set FD_TAG
to be a unique name for the session, it is set as an
X property, that makes FINDDISPLAY only find sessions
with that tag value.
If you want the FINDCREATEDISPLAY session to contact an
XDMCP login manager (xdm/gdm/kdm) on the same machine,

@ -1117,6 +1117,11 @@ void print_help(int mode) {
"-xdummy As in -create, except Xdummy instead of Xvfb.\n"
"-xvnc As in -create, except Xvnc instead of Xvfb.\n"
"-xvnc_redirect As in -create, except Xvnc.redirect instead of Xvfb.\n"
"-xdummy_xvfb Sets WAIT:cmd=FINDCREATEDISPLAY-Xdummy,Xvfb\n"
"\n"
"-create_x str Sets WAIT:cmd=FINDCREATEDISPLAY-<str> Can be on cmdline\n"
" after anything that sets WAIT:.. and other things\n"
" (e.g. -svc, -xdmsvc) to adjust the X server list.\n"
"\n"
"-svc Terminal services mode based on SSL access. Alias for\n"
" -display WAIT:cmd=FINDCREATEDISPLAY-Xvfb -unixpw -users\n"
@ -1124,6 +1129,7 @@ void print_help(int mode) {
"\n"
"-svc_xdummy As -svc except Xdummy instead of Xvfb.\n"
"-svc_xvnc As -svc except Xvnc instead of Xvfb.\n"
"-svc_xdummy_xvfb As -svc with Xdummy,Xvfb.\n"
"\n"
"-xdmsvc Display manager Terminal services mode based on SSL.\n"
" Alias for -display WAIT:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp\n"
@ -1295,11 +1301,13 @@ void print_help(int mode) {
" mode when a virtual X server such as Xvfb is going\n"
" to be created. It sets the width and height of\n"
" the new display, and optionally the color depth as\n"
" well. You can also supply \"gnome\", \"kde\", \"twm\",\n"
" well.\n"
"\n"
" You can also supply \"gnome\", \"kde\", \"twm\",\n"
" \"fvwm\", \"mwm\", \"dtwm\", \"wmaker\", \"xfce\",\n"
" \"enlightenment\", \"Xsession\", or \"failsafe\"\n"
" (same as \"xterm\") to have the created display use\n"
" that mode for the user session.\n"
" \"lxde\", \"enlightenment\", \"Xsession\", or\n"
" \"failsafe\" (same as \"xterm\") to have the created\n"
" display use that mode for the user session.\n"
"\n"
" Specify \"tag=...\" to set the unique FD_TAG desktop\n"
" session tag described below. Note: this option will\n"
@ -1398,17 +1406,21 @@ void print_help(int mode) {
" Xdummy:\n"
"\n"
" The Xdummy wrapper is part of the x11vnc source code\n"
" (x11vnc/misc/Xdummy) It should be available in PATH and\n"
" have run \"Xdummy -install\" once to create the shared\n"
" library. Xdummy requires root permission and only works\n"
" on Linux. (Note: specify FD_XDUMMY_NOROOT=1 to skip\n"
" a check for the root id; evidently your sudo(1) will\n"
" take care of everything. The -xdummy and -svc_xdummy\n"
" options imply FD_XDUMMY_NOROOT=1).\n"
" (x11vnc/misc/Xdummy) It should be available in PATH\n"
" and have run \"Xdummy -install\" once to create the\n"
" shared library. Xdummy only works on Linux. As of\n"
" 12/2009 it no longer needs to be run as root, and the\n"
" default is to not run as root. In some circumstances\n"
" permissions may require running it as root, in these\n"
" cases specify FD_XDUMMY_RUN_AS_ROOT=1, this is the same\n"
" as supplying -root to the Xdummy cmdline.\n"
"\n"
" Xvfb is available on most platforms and does not\n"
" require root.\n"
"\n"
" An advantage of Xdummy over Xvfb is that Xdummy supports\n"
" RANDR dynamic screen resizing.\n"
"\n"
" When x11vnc exits (i.e. user disconnects) the X\n"
" server session stays running in the background.\n"
" The FINDDISPLAY will find it directly next time.\n"
@ -1466,13 +1478,11 @@ void print_help(int mode) {
" More FD tricks: FD_CUPS=port or FD_CUPS=host:port\n"
" will set the cups printing environment. Similarly for\n"
" FD_ESD=port or FD_ESD=host:port for esddsp sound\n"
" redirection. FD_XDUMMY_NOROOT means the Xdummy\n"
" server does not need to be started as root (e.g. it\n"
" will sudo automatically). Set FD_EXTRA to a command\n"
" to be run a few seconds after the X server starts up.\n"
" Set FD_TAG to be a unique name for the session, it is\n"
" set as an X property, that makes FINDDISPLAY only find\n"
" sessions with that tag value.\n"
" redirection. Set FD_EXTRA to a command to be run a\n"
" few seconds after the X server starts up. Set FD_TAG\n"
" to be a unique name for the session, it is set as an\n"
" X property, that makes FINDDISPLAY only find sessions\n"
" with that tag value.\n"
"\n"
" If you want the FINDCREATEDISPLAY session to contact an\n"
" XDMCP login manager (xdm/gdm/kdm) on the same machine,\n"

File diff suppressed because it is too large Load Diff

@ -1537,6 +1537,9 @@ char create_display[] =
" elif [ \"X$have_startkde\" != \"X\" -a \"X$FD_SESS\" = \"Xkde\" ]; then\n"
" echo \"$have_startkde\"\n"
" return\n"
" elif [ \"X$have_startlxde\" != \"X\" -a \"X$FD_SESS\" = \"Xlxde\" ]; then\n"
" echo \"$have_startlxde\"\n"
" return\n"
" elif [ \"X$have_twm\" != \"X\" -a \"X$FD_SESS\" = \"Xtwm\" ]; then\n"
" echo \"$have_twm\"\n"
" return\n"
@ -1605,6 +1608,12 @@ char create_display[] =
" return\n"
" fi\n"
" fi\n"
" if [ \"X$have_startlxde\" != \"X\" ]; then\n"
" if egrep -i 'Session=lxde' \"$home/.dmrc\" > /dev/null; then\n"
" echo \"$have_startlxde\"\n"
" return\n"
" fi\n"
" fi\n"
" if [ \"X$have_gnome_session\" != \"X\" ]; then\n"
" if egrep -i 'Session=gnome' \"$home/.dmrc\" > /dev/null; then\n"
" echo \"$have_gnome_session\"\n"
@ -1990,19 +1999,6 @@ char create_display[] =
" fi\n"
"}\n"
"\n"
"try_Xdummy() {\n"
" if [ \"X$have_Xdummy\" = \"X\" ]; then\n"
" return\n"
" fi\n"
" if [ \"X$FD_XDUMMY_NOROOT\" != \"X\" ]; then\n"
" :\n"
" elif [ \"X$have_root\" = \"X\" ]; then\n"
" return\n"
" fi\n"
"\n"
" server $have_Xdummy :$N -geometry $geom -depth $depth\n"
"}\n"
"\n"
"try_Xvnc() {\n"
" if [ \"X$have_Xvnc\" = \"X\" ]; then\n"
" return\n"
@ -2019,6 +2015,57 @@ char create_display[] =
" server $FD_XSRV :$N -geometry $geom -depth $depth\n"
"}\n"
"\n"
"add_modmap() {\n"
" if [ \"X$have_root\" = \"X\" ]; then\n"
" $have_nohup sh -c \"(\n"
" sleep 10;\n"
" $have_xmodmap -display :$N -e 'keycode any = Shift_R' \\\n"
" -e 'add Shift = Shift_L Shift_R' \\\n"
" -e 'keycode any = Control_R' \\\n"
" -e 'add Control = Control_L Control_R' \\\n"
" -e 'keycode any = Alt_L' \\\n"
" -e 'keycode any = Alt_R' \\\n"
" -e 'keycode any = Meta_L' \\\n"
" -e 'clear Mod1' \\\n"
" -e 'add Mod1 = Alt_L Alt_R Meta_L';\n"
" if uname | grep SunOS > /dev/null; then\n"
" for sym in SunAudioMute SunAudioLowerVolume SunAudioRaiseVolume\n"
" do\n"
" if $have_xmodmap -pk | grep -w \\$sym > /dev/null; then\n"
" :\n"
" else\n"
" $have_xmodmap -e \\\"keycode any = \\$sym\\\"\n"
" fi\n"
" done\n"
" fi\n"
"\n"
" )\" 1>&2 &\n"
" else\n"
" (\n"
" sleep 6;\n"
" $have_xmodmap -display :$N -e 'keycode any = Shift_R' \\\n"
" -e 'add Shift = Shift_L Shift_R' \\\n"
" -e 'keycode any = Control_R' \\\n"
" -e 'add Control = Control_L Control_R' \\\n"
" -e 'keycode any = Alt_L' \\\n"
" -e 'keycode any = Alt_R' \\\n"
" -e 'keycode any = Meta_L' \\\n"
" -e 'clear Mod1' \\\n"
" -e 'add Mod1 = Alt_L Alt_R Meta_L';\n"
" # this is to workaround a bug with JDS Solaris 10 gnome-session-daemon.\n"
" if uname | grep SunOS > /dev/null; then\n"
" for sym in SunAudioMute SunAudioLowerVolume SunAudioRaiseVolume\n"
" do\n"
" if $have_xmodmap -pk | grep -w $sym > /dev/null; then\n"
" :\n"
" else\n"
" $have_xmodmap -e \"keycode any = $sym\"\n"
" fi\n"
" done\n"
" fi\n"
" ) 1>&2 &\n"
" fi\n"
"}\n"
"\n"
"try_Xvfb() {\n"
" if [ \"X$have_Xvfb\" = \"X\" ]; then\n"
@ -2045,58 +2092,27 @@ char create_display[] =
" server $have_Xvfb :$N $sarg 0 ${geom}x${depth} $margs\n"
"\n"
" if [ \"X$result\" = \"X1\" -a \"X$have_xmodmap\" != \"X\" ]; then\n"
" if [ \"X$have_root\" = \"X\" ]; then\n"
" $have_nohup sh -c \"(\n"
" sleep 10;\n"
" $have_xmodmap -display :$N -e 'keycode any = Shift_R' \\\n"
" -e 'add Shift = Shift_L Shift_R' \\\n"
" -e 'keycode any = Control_R' \\\n"
" -e 'add Control = Control_L Control_R' \\\n"
" -e 'keycode any = Alt_L' \\\n"
" -e 'keycode any = Alt_R' \\\n"
" -e 'keycode any = Meta_L' \\\n"
" -e 'clear Mod1' \\\n"
" -e 'add Mod1 = Alt_L Alt_R Meta_L';\n"
" if uname | grep SunOS > /dev/null; then\n"
" for sym in SunAudioMute SunAudioLowerVolume SunAudioRaiseVolume\n"
" do\n"
" if $have_xmodmap -pk | grep -w \\$sym > /dev/null; then\n"
" :\n"
" else\n"
" $have_xmodmap -e \\\"keycode any = \\$sym\\\"\n"
" fi\n"
" done\n"
" fi\n"
" add_modmap\n"
" fi\n"
"}\n"
"\n"
" )\" 1>&2 &\n"
" else\n"
" (\n"
" sleep 6;\n"
" $have_xmodmap -display :$N -e 'keycode any = Shift_R' \\\n"
" -e 'add Shift = Shift_L Shift_R' \\\n"
" -e 'keycode any = Control_R' \\\n"
" -e 'add Control = Control_L Control_R' \\\n"
" -e 'keycode any = Alt_L' \\\n"
" -e 'keycode any = Alt_R' \\\n"
" -e 'keycode any = Meta_L' \\\n"
" -e 'clear Mod1' \\\n"
" -e 'add Mod1 = Alt_L Alt_R Meta_L';\n"
" # this is to workaround a bug with JDS Solaris 10 gnome-session-daemon.\n"
" if uname | grep SunOS > /dev/null; then\n"
" for sym in SunAudioMute SunAudioLowerVolume SunAudioRaiseVolume\n"
" do\n"
" if $have_xmodmap -pk | grep -w $sym > /dev/null; then\n"
" :\n"
" else\n"
" $have_xmodmap -e \"keycode any = $sym\"\n"
" fi\n"
" done\n"
" fi\n"
" ) 1>&2 &\n"
" fi\n"
"try_Xdummy() {\n"
" if [ \"X$have_Xdummy\" = \"X\" ]; then\n"
" return\n"
" fi\n"
" if [ \"X$FD_XDUMMY_RUN_AS_ROOT\" != \"X\" -a \"X$have_root\" = \"X\" ]; then\n"
" return\n"
" fi\n"
"\n"
" server $have_Xdummy :$N -geometry $geom -depth $depth\n"
" \n"
" if [ \"X$result\" = \"X1\" -a \"X$have_xprop\" != \"X\" ]; then\n"
" (sleep 1; $have_xprop -display :$N -root -f X11VNC_TRAP_XRANDR 8s -set X11VNC_TRAP_XRANDR 1 >/dev/null 2>&1) &\n"
" sleep 1\n"
" fi\n"
"}\n"
"\n"
"\n"
"cookie() {\n"
" cookie=\"\"\n"
" if [ \"X$have_mcookie\" != \"X\" ]; then\n"
@ -2234,7 +2250,7 @@ char create_display[] =
" USER=`whoami`\n"
"fi\n"
"\n"
"PATH=$PATH:/usr/X11R6/bin:/usr/bin/X11:/usr/openwin/bin:/usr/dt/bin:/opt/kde4/bin:/opt/kde3/bin:/opt/gnome/bin:/usr/bin:/bin:/usr/sfw/bin\n"
"PATH=$PATH:/usr/X11R6/bin:/usr/bin/X11:/usr/openwin/bin:/usr/dt/bin:/opt/kde4/bin:/opt/kde3/bin:/opt/gnome/bin:/usr/bin:/bin:/usr/sfw/bin:/usr/local/bin\n"
"\n"
"have_root=\"\"\n"
"id0=`id`\n"
@ -2247,7 +2263,7 @@ char create_display[] =
" p_ok=1\n"
"fi\n"
"\n"
"for prog in startx xinit xdm gdm kdm xterm Xdummy Xvfb Xvnc xauth xdpyinfo mcookie md5sum xmodmap startkde dbus-launch gnome-session blackbox fvwm2 mwm openbox twm windowmaker wmaker enlightenment metacity X Xorg XFree86 Xsun Xsession dtwm netstat nohup esddsp konsole gnome-terminal x-terminal-emulator perl startxfce4 startxfce\n"
"for prog in startx xinit xdm gdm kdm xterm Xdummy Xvfb Xvnc xauth xdpyinfo mcookie md5sum xmodmap startkde startlxde dbus-launch gnome-session blackbox fvwm2 mwm openbox twm windowmaker wmaker enlightenment metacity X Xorg XFree86 Xsun Xsession dtwm netstat nohup esddsp konsole gnome-terminal x-terminal-emulator perl startxfce4 startxfce xprop\n"
"do\n"
" p2=`echo \"$prog\" | sed -e 's/-/_/g'`\n"
" eval \"have_$p2=''\"\n"

@ -1272,8 +1272,11 @@ int su_verify(char *user, char *pass, char *cmd, char *rbuf, int *rbuf_size, int
sprintf(luser, "%s's", user);
lowercase(luser);
if (db) fprintf(stderr, "\nAIX luser compare: \"%s\" to \"%s\"\n", luser, instr);
if (strstr(luser, instr) == luser) {
if (db) fprintf(stderr, "AIX luser compare: strstr OK.\n");
if (!strcmp(luser, instr)) {
if (db) fprintf(stderr, "AIX luser compare: strings equal.\n");
i = -1;
j = 0;
memset(instr, 0, sizeof(instr));
@ -1286,6 +1289,7 @@ int su_verify(char *user, char *pass, char *cmd, char *rbuf, int *rbuf_size, int
continue;
}
} else {
if (db) fprintf(stderr, "AIX luser compare: problem=1\n");
problem = 1;
}
free(luser);
@ -1297,7 +1301,6 @@ int su_verify(char *user, char *pass, char *cmd, char *rbuf, int *rbuf_size, int
}
if (problem) {
if (db) {
fprintf(stderr, "\"Password:\" did not "
"appear: '%s'" " n=%d\n", instr, n);
@ -1319,7 +1322,7 @@ int su_verify(char *user, char *pass, char *cmd, char *rbuf, int *rbuf_size, int
return 0;
}
if (db > 2) fprintf(stderr, "\nsending passwd: %s\n", pass);
if (db) fprintf(stderr, "\nsending passwd: %s\n", db > 2 ? pass : "****");
usleep(100 * 1000);
if (slow_pw) {
unsigned int k;
@ -1703,7 +1706,7 @@ void unixpw_keystroke(rfbBool down, rfbKeySym keysym, int init) {
char h3[] = " scale=... (n/m); scale_cursor=... (sc=); solid (so); id=; repeat; clear_mods (cm); clear_keys (ck);";
char h4[] = " clear_all (ca); speeds=... (sp=); readtimeout=... (rd=) rotate=... (ro=); noncache (nc) (nc=n);";
char h5[] = " geom=WxHxD (ge=); nodisplay=... (nd=); viewonly (vo); tag=...; gnome kde twm fvwm mwm dtwm wmaker";
char h6[] = " xfce enlightenment Xsession failsafe. Examples: fred:3/4,so,cm wilma:geom=1024x768x16,kde";
char h6[] = " xfce lxde enlightenment Xsession failsafe. Examples: fred:3/4,so,cm wilma:geom=1024x768x16,kde";
int ch = 13, p;
if (f1_help) {
p = black_pixel();

@ -1988,6 +1988,8 @@ static char *build_create_cmd(char *cmd, int *saw_xdmcp, char *usslpeer, char *t
sprintf(fdsess, "gnome");
} else if (strstr(t, "kde")) {
sprintf(fdsess, "kde");
} else if (strstr(t, "lxde")) {
sprintf(fdsess, "lxde");
} else if (strstr(t, "twm")) {
sprintf(fdsess, "twm");
} else if (strstr(t, "fvwm")) {
@ -2120,8 +2122,8 @@ static char *build_create_cmd(char *cmd, int *saw_xdmcp, char *usslpeer, char *t
if (fdtag[0] == '\0' && getenv("FD_TAG")) {
snprintf(fdtag, 120, "%s", getenv("FD_TAG"));
}
if (fdxdum[0] == '\0' && getenv("FD_XDUMMY_NOROOT")) {
snprintf(fdxdum, 120, "%s", getenv("FD_XDUMMY_NOROOT"));
if (fdxdum[0] == '\0' && getenv("FD_XDUMMY_RUN_AS_ROOT")) {
snprintf(fdxdum, 120, "%s", getenv("FD_XDUMMY_RUN_AS_ROOT"));
}
if (getenv("CREATE_DISPLAY_OUTPUT")) {
snprintf(cdout, 120, "CREATE_DISPLAY_OUTPUT='%s'", getenv("CREATE_DISPLAY_OUTPUT"));
@ -2151,7 +2153,7 @@ static char *build_create_cmd(char *cmd, int *saw_xdmcp, char *usslpeer, char *t
set_env("FD_NAS", fdnas);
set_env("FD_SMB", fdsmb);
set_env("FD_TAG", fdtag);
set_env("FD_XDUMMY_NOROOT", fdxdum);
set_env("FD_XDUMMY_RUN_AS_ROOT", fdxdum);
set_env("FD_SESS", fdsess);
if (usslpeer || (unixpw && keep_unixpw_user)) {
@ -2174,7 +2176,7 @@ static char *build_create_cmd(char *cmd, int *saw_xdmcp, char *usslpeer, char *t
+ strlen("FD_NAS='' ")
+ strlen("FD_SMB='' ")
+ strlen("FD_TAG='' ")
+ strlen("FD_XDUMMY_NOROOT='' ")
+ strlen("FD_XDUMMY_RUN_AS_ROOT='' ")
+ strlen("FD_SESS='' /bin/sh ")
+ strlen(uu) + 1
+ strlen(fdgeom) + 1
@ -2194,7 +2196,7 @@ static char *build_create_cmd(char *cmd, int *saw_xdmcp, char *usslpeer, char *t
sprintf(create_cmd, "env USER='%s' FD_GEOM='%s' FD_SESS='%s' "
"FD_OPTS='%s' FD_EXTRA='%s' FD_PROG='%s' FD_XSRV='%s' FD_CUPS='%s' "
"FD_ESD='%s' FD_NAS='%s' FD_SMB='%s' FD_TAG='%s' "
"FD_XDUMMY_NOROOT='%s' %s /bin/sh %s %s",
"FD_XDUMMY_RUN_AS_ROOT='%s' %s /bin/sh %s %s",
uu, fdgeom, fdsess, fdopts, fdextra, fdprog, fdxsrv,
fdcups, fdesd, fdnas, fdsmb, fdtag, fdxdum, cdout, tmp, opts);
} else {

@ -2,7 +2,7 @@
.TH X11VNC "1" "December 2009" "x11vnc " "User Commands"
.SH NAME
x11vnc - allow VNC connections to real X11 displays
version: 0.9.9, lastmod: 2009-12-21
version: 0.9.10, lastmod: 2009-12-24
.SH SYNOPSIS
.B x11vnc
[OPTION]...
@ -1247,6 +1247,16 @@ As in \fB-create,\fR except Xvnc instead of Xvfb.
.IP
As in \fB-create,\fR except Xvnc.redirect instead of Xvfb.
.PP
\fB-xdummy_xvfb\fR
.IP
Sets WAIT:cmd=FINDCREATEDISPLAY-Xdummy,Xvfb
.PP
\fB-create_x\fR \fIstr\fR
.IP
Sets WAIT:cmd=FINDCREATEDISPLAY-<str> Can be on cmdline
after anything that sets WAIT:.. and other things
(e.g. \fB-svc,\fR \fB-xdmsvc)\fR to adjust the X server list.
.PP
\fB-svc\fR
.IP
Terminal services mode based on SSL access. Alias for
@ -1261,6 +1271,10 @@ As \fB-svc\fR except Xdummy instead of Xvfb.
.IP
As \fB-svc\fR except Xvnc instead of Xvfb.
.PP
\fB-svc_xdummy_xvfb\fR
.IP
As \fB-svc\fR with Xdummy,Xvfb.
.PP
\fB-xdmsvc\fR
.IP
Display manager Terminal services mode based on SSL.
@ -1444,11 +1458,13 @@ ge=). This only has an effect in FINDCREATEDISPLAY
mode when a virtual X server such as Xvfb is going
to be created. It sets the width and height of
the new display, and optionally the color depth as
well. You can also supply "gnome", "kde", "twm",
well.
.IP
You can also supply "gnome", "kde", "twm",
"fvwm", "mwm", "dtwm", "wmaker", "xfce",
"enlightenment", "Xsession", or "failsafe"
(same as "xterm") to have the created display use
that mode for the user session.
"lxde", "enlightenment", "Xsession", or
"failsafe" (same as "xterm") to have the created
display use that mode for the user session.
.IP
Specify "tag=..." to set the unique FD_TAG desktop
session tag described below. Note: this option will
@ -1552,19 +1568,21 @@ By default FINDCREATEDISPLAY will try Xvfb and then
Xdummy:
.IP
The Xdummy wrapper is part of the x11vnc source code
(x11vnc/misc/Xdummy) It should be available in PATH and
have run "Xdummy \fB-install"\fR once to create the shared
library. Xdummy requires root permission and only works
on Linux. (Note: specify FD_XDUMMY_NOROOT=1 to skip
a check for the root id; evidently your
.IR sudo (1)
will
take care of everything. The \fB-xdummy\fR and \fB-svc_xdummy\fR
options imply FD_XDUMMY_NOROOT=1).
(x11vnc/misc/Xdummy) It should be available in PATH
and have run "Xdummy \fB-install"\fR once to create the
shared library. Xdummy only works on Linux. As of
12/2009 it no longer needs to be run as root, and the
default is to not run as root. In some circumstances
permissions may require running it as root, in these
cases specify FD_XDUMMY_RUN_AS_ROOT=1, this is the same
as supplying \fB-root\fR to the Xdummy cmdline.
.IP
Xvfb is available on most platforms and does not
require root.
.IP
An advantage of Xdummy over Xvfb is that Xdummy supports
RANDR dynamic screen resizing.
.IP
When x11vnc exits (i.e. user disconnects) the X
server session stays running in the background.
The FINDDISPLAY will find it directly next time.
@ -1629,13 +1647,11 @@ be the full path to the session/windowmanager program.
More FD tricks: FD_CUPS=port or FD_CUPS=host:port
will set the cups printing environment. Similarly for
FD_ESD=port or FD_ESD=host:port for esddsp sound
redirection. FD_XDUMMY_NOROOT means the Xdummy
server does not need to be started as root (e.g. it
will sudo automatically). Set FD_EXTRA to a command
to be run a few seconds after the X server starts up.
Set FD_TAG to be a unique name for the session, it is
set as an X property, that makes FINDDISPLAY only find
sessions with that tag value.
redirection. Set FD_EXTRA to a command to be run a
few seconds after the X server starts up. Set FD_TAG
to be a unique name for the session, it is set as an
X property, that makes FINDDISPLAY only find sessions
with that tag value.
.IP
If you want the FINDCREATEDISPLAY session to contact an
XDMCP login manager (xdm/gdm/kdm) on the same machine,

@ -2221,10 +2221,20 @@ int main(int argc, char* argv[]) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xvfb");
continue;
}
if (!strcmp(arg, "-create_x")) {
CHECK_ARGC
use_dpy = (char *) malloc(strlen(argv[i+1])+100);
sprintf(use_dpy, "WAIT:cmd=FINDCREATEDISPLAY-%s", argv[++i]);
continue;
}
if (!strcmp(arg, "-xdummy")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xdummy");
continue;
}
if (!strcmp(arg, "-xdummy_xvfb")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xdummy,Xvfb");
continue;
}
if (!strcmp(arg, "-xvnc")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xvnc");
continue;
@ -2557,7 +2567,14 @@ int main(int argc, char* argv[]) {
users_list = strdup("unixpw=");
use_openssl = 1;
openssl_pem = strdup("SAVE");
set_env("FD_XDUMMY_NOROOT", "1");
continue;
}
if (!strcmp(arg, "-svc_xdummy_xvfb")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xdummy,Xvfb");
unixpw = 1;
users_list = strdup("unixpw=");
use_openssl = 1;
openssl_pem = strdup("SAVE");
continue;
}
if (!strcmp(arg, "-svc_xvnc")) {
@ -4924,6 +4941,15 @@ int main(int argc, char* argv[]) {
} else if (use_dpy && strstr(use_dpy, "WAIT:") == use_dpy) {
char *mcm = multiple_cursors_mode;
if (strstr(use_dpy, "Xdummy")) {
if (!xrandr && !got_noxrandr) {
if (! quiet) {
rfbLog("Enabling -xrandr for possible use of Xdummy server.\n");
}
xrandr = 1;
}
}
waited_for_client = wait_for_client(&argc_vnc, argv_vnc,
try_http && ! got_httpdir);
@ -4933,6 +4959,7 @@ int main(int argc, char* argv[]) {
}
}
if (auth_file) {
check_guess_auth_file();
if (auth_file != NULL) {
@ -4990,6 +5017,16 @@ int main(int argc, char* argv[]) {
exit(0);
}
if (dpy && !xrandr && !got_noxrandr) {
Atom trap_xrandr = XInternAtom(dpy, "X11VNC_TRAP_XRANDR", True);
if (trap_xrandr != None) {
if (! quiet) {
rfbLog("Enabling -xrandr due to X11VNC_TRAP_XRANDR atom.\n");
}
xrandr = 1;
}
}
#ifdef MACOSX
if (! dpy && ! raw_fb_str) {
raw_fb_str = strdup("console");

@ -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-12-21";
char lastmod[] = "0.9.10 lastmod: 2009-12-24";
/* X display info */

Loading…
Cancel
Save