Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
libvncserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
rasky
libvncserver
Commits
067a8816
Commit
067a8816
authored
14 years ago
by
runge
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update to x11vnc 0.9.12
parent
ad254469
Changes
32
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
769 additions
and
265 deletions
+769
-265
prepare_x11vnc_dist.sh
prepare_x11vnc_dist.sh
+4
-3
8to24.c
x11vnc/8to24.c
+1
-1
ChangeLog
x11vnc/ChangeLog
+17
-0
Makefile.am
x11vnc/Makefile.am
+1
-2
README
x11vnc/README
+258
-124
avahi.c
x11vnc/avahi.c
+36
-10
avahi.h
x11vnc/avahi.h
+1
-1
cleanup.c
x11vnc/cleanup.c
+5
-3
connections.c
x11vnc/connections.c
+2
-6
help.c
x11vnc/help.c
+87
-26
inet.c
x11vnc/inet.c
+1
-1
keyboard.c
x11vnc/keyboard.c
+5
-5
ultravnc_repeater.pl
x11vnc/misc/ultravnc_repeater.pl
+5
-0
options.c
x11vnc/options.c
+1
-0
options.h
x11vnc/options.h
+1
-0
pointer.c
x11vnc/pointer.c
+3
-12
pointer.h
x11vnc/pointer.h
+1
-1
remote.c
x11vnc/remote.c
+21
-3
scan.c
x11vnc/scan.c
+2
-2
screen.c
x11vnc/screen.c
+85
-5
sslhelper.c
x11vnc/sslhelper.c
+5
-1
ssltools.h
x11vnc/ssltools.h
+31
-10
tkx11vnc
x11vnc/tkx11vnc
+1
-0
tkx11vnc.h
x11vnc/tkx11vnc.h
+1
-0
unixpw.c
x11vnc/unixpw.c
+49
-0
user.c
x11vnc/user.c
+2
-1
userinput.c
x11vnc/userinput.c
+2
-2
x11vnc.1
x11vnc/x11vnc.1
+90
-25
x11vnc.c
x11vnc/x11vnc.c
+9
-1
x11vnc_defs.c
x11vnc/x11vnc_defs.c
+1
-1
xevents.c
x11vnc/xevents.c
+33
-14
xwrappers.c
x11vnc/xwrappers.c
+8
-5
No files found.
prepare_x11vnc_dist.sh
View file @
067a8816
#!/bin/bash
VERSION
=
"0.9.1
1
"
VERSION
=
"0.9.1
3
"
cd
"
$(
dirname
"
$0
"
)
"
...
...
@@ -33,9 +33,10 @@ echo "" >> Makefile.am
cat
Makefile.am.LibVNCServer |
\
sed
-e
"s/^SUBDIRS.*
$/
#SUBDIRS=libvncserver libvncclient x11vnc classes/"
\
-e
"s/^DIST_SUBDIRS.*
$/
#DIST_SUBDIRS=libvncserver libvncclient x11vnc classes/"
\
-e
"/all: make_config_executable/,
\$
d"
\
-e
"/^.*bin_SCRIPTS.*
$/
d"
\
-e
"s/include_/noinst_/"
\
-e
"s/^include_HEADERS/if HAVE_SYSTEM_LIBVNCSERVER^else^include_HEADERS/"
\
-e
"s/rfbclient
\.
h/rfbclient.h^endif/"
\
|
tr
'^'
'\n'
\
>>
Makefile.am
mv
README README.LibVNCServer
...
...
This diff is collapsed.
Click to expand it.
x11vnc/8to24.c
View file @
067a8816
...
...
@@ -412,7 +412,7 @@ if (db24 > 2) fprintf(stderr, " check_for_multivis: %.4f\n", now - last_call);
/*
* every 10 seconds we try to clean out and also refresh the window
* info in the
the
8bpp window table:
* info in the 8bpp window table:
*/
if
(
now
>
last_clear
+
10
)
{
last_clear
=
now
;
...
...
This diff is collapsed.
Click to expand it.
x11vnc/ChangeLog
View file @
067a8816
2010-09-10 Karl Runge <runge@karlrunge.com>
* x11vnc: update classes/ssl jars, patches, and script.
update prepare_x11vnc_dist.sh to 0.9.13. Makefile.am no top_srcdir
Allow user to set avahi name and port via env. vars. Add
avahi_timeout() sigalarm. Rename pointer() to pointer_event()
because Xdefs.h is included for some unknown reason. Add
-always_inject option. Add vnc_reflect_cursor_pos() for -reflect
mode. Attempt at libvncclient VeNCrypt (disabled.) Fix bug
with --with-system-libvncserver missing FinishedFrameBufferUpdate.
More info in VncViewer.class http warning. Look for gdm* in
find display heuristics (e.g. gdm3). More heuristics with
XAUTHLOCALHOSTNAME attempts. X11VNC_CREATE_MAX_DISPLAYS: let user
specify max number of -create displays. FD_USERPREFS modes for
-unixpw (user conf file.) Document all exiting behavior. Let
user set X11VNC_NO_LIMIT_SHM to avoid autoreduction. Look for
kdm when avoiding being killed by dm, change timings too.
2010-05-08 Karl Runge <runge@karlrunge.com>
* x11vnc: set cd->unixname in apply_opts. Print message in
vnc_reflect_resize. Some tweaks to prepare_x11vnc_dist.sh
...
...
This diff is collapsed.
Click to expand it.
x11vnc/Makefile.am
View file @
067a8816
...
...
@@ -30,7 +30,6 @@ INCLUDES_LIBVNCSERVER = @SYSTEM_LIBVNCSERVER_CFLAGS@
else
INCLUDES_LIBVNCSERVER
=
endif
INCLUDES
=
-I
$(top_srcdir)
INCLUDES
+=
$(INCLUDES_LIBVNCSERVER)
@X_CFLAGS@ @AVAHI_CFLAGS@
INCLUDES
=
$(INCLUDES_LIBVNCSERVER)
@X_CFLAGS@ @AVAHI_CFLAGS@
x11vnc_LDADD
=
$(LDADD)
@SSL_LIBS@ @CRYPT_LIBS@ @X_LIBS@ @AVAHI_LIBS@
$(LD_CYGIPC)
This diff is collapsed.
Click to expand it.
x11vnc/README
View file @
067a8816
...
...
@@ -2,7 +2,7 @@
Copyright
(
C
)
2002
-
2010
Karl
J
.
Runge
<
runge
@
karlrunge
.
com
>
All
rights
reserved
.
x11vnc
README
file
Date
:
Sat
May
8
19
:
32
:
50
EDT
2010
x11vnc
README
file
Date
:
Fri
Sep
10
12
:
29
:
36
EDT
2010
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
May 2010, the x11vnc-0.9.10
.tar.gz source package is
released (recommended download). The x11vnc 0.9.1
0
release notes.
link. As of
Sep 2010, the x11vnc-0.9.12
.tar.gz source package is
released (recommended download). The x11vnc 0.9.1
2
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 x11vnc-0.9.1
1
-dev.tar.gz tarball to build the most up to
bleeding edge x11vnc-0.9.1
3
-dev.tar.gz tarball to build the most up to
date one.
Precompiled Binaries/Packages: See the FAQ below for information
...
...
@@ -629,13 +629,13 @@ vncviewer -via $host localhost:0 # must be TightVNC vncviewer.
default
.)
See
this
build
FAQ
for
more
details
.
If
your
OS
has
libjpeg
.
so
and
libz
.
so
in
standard
locations
you
can
build
as
follows
(
example
given
for
the
0.9.1
0
release
of
x11vnc
:
build
as
follows
(
example
given
for
the
0.9.1
2
release
of
x11vnc
:
replace
with
the
version
you
downloaded
):
(
un
-
tar
the
x11vnc
+
libvncserver
tarball
)
#
gzip
-
dc
x11vnc
-
0.9.1
0
.
tar
.
gz
|
tar
-
xvf
-
#
gzip
-
dc
x11vnc
-
0.9.1
2
.
tar
.
gz
|
tar
-
xvf
-
(
cd
to
the
source
directory
)
#
cd
x11vnc
-
0.9.1
0
#
cd
x11vnc
-
0.9.1
2
(
run
configure
and
then
run
make
)
#
./
configure
...
...
@@ -885,13 +885,13 @@ make
I'
d
appreciate
any
additional
testing
very
much
.
Thanks
to
those
who
suggested
features
and
helped
beta
test
x11vnc
0.9.1
0
released
in
May
2010
!
0.9.1
2
released
in
Sep
2010
!
Please
help
test
and
debug
the
0.9.1
1
version
for
release
sometime
in
Summ
er
2010.
Please
help
test
and
debug
the
0.9.1
3
version
for
release
sometime
in
Wint
er
2010.
The
version
0.9.1
1
beta
tarball
is
kept
here
:
x11vnc
-
0.9.1
1
-
dev
.
tar
.
gz
The
version
0.9.1
3
beta
tarball
is
kept
here
:
x11vnc
-
0.9.1
3
-
dev
.
tar
.
gz
There
are
also
some
Linux
,
Solaris
,
Mac
OS
X
,
and
other
OS
test
binaries
here
.
Please
kick
the
tires
and
report
bugs
,
performance
...
...
@@ -908,11 +908,40 @@ make
settings panel.)
Here are some features that will appear in the 0.9.11 release:
* Coming Soon.
Here are some features that appeared in the 0.9.10 release:
Here are some features that will appear in the 0.9.13 release:
* Coming Soon!
Here are some features that appeared in the 0.9.12 release:
* One can now specify the maximum number of displays that can be
created in -create mode via the env. var.
X11VNC_CREATE_MAX_DISPLAYS
* The X11VNC_NO_LIMIT_SHM env. var. is added to skip any automatic
shared memory reduction.
* The kdm display manager is now detected when trying not to get
killed by the display manager.
* A compile time bug is fixed so that configuring using
--with-system-libvncserver pointing to LibVNCServer 0.9.7 works
again. A bug from forced used of Xdefs.h is worked around.
Here are some features that appeared in the 0.9.11 release (Aug/2010):
* The source tree is synchronized with the most recent libvncclient
(this only affects -reflect mode.) Build is fixed for
incompatibilities when using an external LibVNCServer (e.g.
./configure --with-system-libvncserver...) Please help test these
build and runtime aspects and report back what you find, thanks.
* The SSL enabled Java VNC Viewer Makefile has been modified so that
the jar files that are built are compatible back to Java 1.4.
* In -create/-unixpw mode, the env. var. FD_USERPREFS may be set to
a filename in the user'
s
home
directory
that
includes
default
username
:
options
values
(
so
the
options
do
not
need
to
be
typed
every
time
at
the
login
prompt
.)
*
In
-
reflect
mode
cursor
position
updates
are
now
handled
correctly
.
Here
are
some
features
that
appeared
in
the
0.9.10
release
(
May
/
2010
):
*
The
included
SSL
enabled
Java
applet
viewer
now
supports
Chained
SSL
Certificates
.
The
debugCerts
=
yes
applet
parameter
aids
troubleshooting
certificate
validation
.
The
x11vnc
-
ssl
mode
has
...
...
@@ -1982,7 +2011,7 @@ http://www.karlrunge.com/x11vnc/faq.html:
Q
-
109
:
Help
! x11vnc and my KDE screensaver keep switching each other
on
and
off
every
few
seconds
.
Q-110: I am running the
beryl 3D window manager (or compiz
, MythTv,
Q
-
110
:
I
am
running
the
compiz
3
D
window
manager
(
or
beryl
,
MythTv
,
Google
Earth
,
or
some
other
OpenGL
app
)
and
I
do
not
get
screen
updates
in
x11vnc
.
...
...
@@ -5702,12 +5731,12 @@ ied)
* On Firefox/Mozilla (and anything else) turn off "Smooth Scroll"
animations. In Firefox put in the URL "about:config" and set
general.smoothScroll to false.
* On X
Free86 turn on the Shadow Framebuffer to speed up reading.
(Option "
ShadowFB
" "
true
" in the Device section of
* On X
org/XFree86 turn on the Shadow Framebuffer to speed up
reading.
(Option "ShadowFB" "true" in the Device section of
/etc/X11/XF86Config) This disables 2D acceleration on the physical
display and so may not be worth it
, but could be of use in some
situations. If the link is very slow, this speedup may not be
noticed.
display and so may not be worth it
(if you play games, etc), but
could be of use in some situations. Note: If the network link is
very slow, this speedup may not be
noticed.
VNC viewer parameters:
* Use a TightVNC enabled viewer! (Actually, RealVNC 4.x viewer with
...
...
@@ -5726,7 +5755,7 @@ ied)
* Try other VNC encodings via -encodings (tight may be the fastest,
but you should compare it to zrle and maybe some of the others)
* On the machine where vncviewer is run, make sure Backing Store is
enabled (X
Free86/Xorg
disables it by default causing re-exposures
enabled (X
org/XFree86
disables it by default causing re-exposures
of vncviewer to be very slow) Option "backingstore" in config
file.
...
...
@@ -6192,8 +6221,9 @@ EndSection
shared
)
client
-
side
caching
is
that
one
needs
to
extend
the
VNC
protocol
,
modify
a
viewer
and
then
also
convince
users
to
adopt
your
modified
VNC
Viewer
(
or
get
the
new
features
to
be
folded
into
the
main VNC viewers, patches accepted, etc... likely takes years before
they might be deployed in the field)
main
VNC
viewers
,
patches
accepted
,
etc
...
likely
takes
many
years
before
they
might
be
deployed
in
the
field
.)
So
it
is
convenient
that
the
"-ncache n"
works
with
any
unaltered
VNC
viewer
.
A
drawback
of
the
"-ncache n"
method
is
that
in
the
VNC
Viewer
you
can
scroll
down
and
actually
see
the
cached
pixel
data
.
So
it
looks
like
...
...
@@ -6292,13 +6322,14 @@ Section "Device"
EndSection
No
problems
like
this
have
been
observed
with
Windows
VNC
Viewers
:
they all seem to keep their entire framebuffer in local memory. Gotcha
for KDE krdc VNC Viewer: One user found that KDE's krdc viewer has
some sort of hardwired limit on the maximum size of the framebuffer
(64MB?). It fails quickly saying "
The
connection
to
the
host
has
been
interrupted
.
" The workaround for his 1280x1024 x11vnc-side display was
to run with "
-
ncache
10
", i.e. a smaller value to be under the krdc
threshold.
they
all
seem
to
keep
their
entire
framebuffer
in
local
memory
.
Gotcha
for
KDE
krdc
VNC
Viewer
:
One
user
found
that
KDE
's krdc viewer
has some sort of hardwired limit on the maximum size of the
framebuffer (64MB?). It fails quickly saying "The connection to the
host has been interrupted." The workaround for his 1280x1024
x11vnc-side display was to run with "-ncache 10", i.e. a smaller value
to be under the krdc threshold.
Although this scheme is not as quick (nor as compressed) as
nx/nomachine, say, it does provide a good step in the direction of
...
...
@@ -7337,18 +7368,18 @@ EndSection
the
screensaver
.)
Feel
free
to
file
a
bug
against
kdesktop_lock
with
KDE
.
Q-110: I am running the
beryl 3D window manager (or compiz
, MythTv,
Q
-
110
:
I
am
running
the
compiz
3
D
window
manager
(
or
beryl
,
MythTv
,
Google
Earth
,
or
some
other
OpenGL
app
)
and
I
do
not
get
screen
updates
in
x11vnc
.
This
appears
to
be
because
the
3
D
OpenGL
/
GLX
hardware
screen
updates
do
not
get
reported
via
the
XDAMAGE
mechanism
.
So
this
is
a
bug
in
beryl/compiz
or XDAMAGE/Xorg or the (possibly 3rd party) video card
compiz
/
beryl
or
XDAMAGE
/
Xorg
or
the
(
possibly
3
rd
party
)
video
card
driver
.
As
a
workaround
apply
the
-
noxdamage
option
.
As
of
Feb
/
2007
x11vnc
will
try
to
autodetect
the
problem
and
disable
XDAMAGE
if
is
appears
to be missing a lot of updates. But if you know you are using
beryl
to
be
missing
a
lot
of
updates
.
But
if
you
know
you
are
using
compiz
you
might
as
well
always
supply
-
noxdamage
.
Thanks
to
this
user
who
reported
the
problem
and
discovered
the
workaround
.
...
...
@@ -7361,6 +7392,10 @@ EndSection
responsiveness
(
especially
for
typing
)
and
also
leads
to
unnecessary
CPU
and
memory
I
/
O
load
due
to
the
extra
polling
.
Update
:
as
of
May
/
2010
NVIDIA
may
have
fixed
this
problem
in
their
proprietary
drivers
.
See
the
NVIDIA
Release
Notes
.
(
look
for
'x11vnc'
.)
Q
-
111
:
Can
I
use
x11vnc
to
view
my
VMWare
session
remotely
?
Yes
,
since
VMWare
usually
runs
as
an
X
application
you
can
view
it
via
...
...
@@ -8035,6 +8070,22 @@ rm -f $tmp
command
for
you
.)
Then
once
you
are
connected
via
VNC
,
iconify
the
Terminal
windows
(
you
can
't delete them since that will kill x11vnc.)
Update Aug/2010: A user reports the following useful information:
This is not a problem on Mac OS X 10.6.x when connecting via ssh to
start x11vnc. And, on Mac OS X 10.5.x, the problem can be permanently
eliminated by doing this:
sudo /usr/libexec/PlistBuddy -c '
delete
:
LimitLoadToSessionType
' \
-c '
add
:
LimitLoadToSessionType
string
Background
' \
/System/Library/LaunchAgents/com.apple.pboard.plist
# ignore any '
Delete
:
Entry
,
":LimitLoadToSessionType"
,
Does
Not
Exist
' message
and then restarting (yes, you must restart not just log off). But
ONLY do that for Mac OS X 10.5.x and NOT for 10.6.x (which doesn'
t
need
it
anyway
).
Q
-
118
:
Can
x11vnc
be
used
as
a
VNC
reflector
/
repeater
to
improve
performance
for
the
case
of
a
large
number
of
simultaneous
VNC
viewers
(
e
.
g
.
classroom
broadcasting
or
a
large
demo
)?
...
...
@@ -8367,7 +8418,6 @@ rm -f $tmp
* SingleWindow: "
Select
Single
Window
...
"
* TextChat: "
Open
Chat
...
"
* 1/n Server Scaling
*
rfbEncodingUltra
compression
encoding
The SSVNC Unix VNC viewer supports these UltraVNC extensions.
...
...
@@ -9106,6 +9156,31 @@ x11vnc-remote.o := CFLAGS += -O0
the command line option to disable optimization, or otherwise have the
lines set CFLAGS to the empty string.
_________________________________________________________________
Broken Thread Local Storage on SuSE 9.2: Starting with x11vnc 0.9.8
the bundled libvncserver uses the __thread keyword to make some of the
encodings (i.e. tight) thread safe (multiple VNC clients can be using
tight at the same time in x11vnc -threads mode.) Evidently on the old
SuSE 9.2 system the compiler does not support the thread local storage
properly. Here is an example build failure:
tight.c:1126: error: unrecognizable insn:
(insn:HI 11 10 13 0 (nil) (set (reg/f:SI 59)
(const:SI (plus:SI (symbol_ref:SI ("
%
lpalette
"))
(const_int 2048 [0x800])))) -1 (nil)
(expr_list:REG_EQUAL (const:SI (plus:SI (symbol_ref:SI ("
%
lpalette
"))
(const_int 2048 [0x800])))
(nil)))
tight.c:1126: internal compiler error: in extract_insn, at recog.c:2175
Please submit a full bug report,
with preprocessed source if appropriate.
See URL:http://www.suse.de/feedback for instructions.
The workaround is to disable thread local storage at configure time
like this:
env CPPFLAGS="
-
DTLS
=
''
" ./configure
and then build it.
_________________________________________________________________
=======================================================================
http://www.karlrunge.com/x11vnc/sunray.html:
...
...
@@ -11029,10 +11104,6 @@ Enhanced TightVNC Viewer (SSVNC: SSL/SSH VNC viewer)
simplified Terminal-Services mode (tsvnc) for use with x11vnc on the
remote side.
It is also possible (although not recommended) to disable encryption:
-noenc cmdline option; Ctrl-E toggle; or Vnc:// host prefix; see the
online Help for details.
The tool has many additional features; see the descriptions below.
It is a self-contained bundle, you could carry it around on, say, a
...
...
@@ -11217,7 +11288,7 @@ Unix and Mac OS X:
Unpack the archive:
% gzip -dc ssvnc-1.0.2
8
.tar.gz | tar xvf -
% gzip -dc ssvnc-1.0.2
9
.tar.gz | tar xvf -
Run the GUI:
...
...
@@ -11225,7 +11296,7 @@ Unix and Mac OS X:
% ./ssvnc/MacOSX/ssvnc (for Mac OS X)
The smaller file "ssvnc_no_windows-1.0.2
8
.tar.gz"
The smaller file "
ssvnc_no_windows
-
1.0.2
9
.
tar
.
gz
"
could have been used as well.
On MacOSX you could also click on the SSVNC app icon in the Finder.
...
...
@@ -11271,8 +11342,8 @@ Unix/MacOSX Install:
For the conventional source tarball it will compile and install, e.g.:
gzip
-
dc
ssvnc
-
1.0.2
8
.
src
.
tar
.
gz
|
tar
xvf
-
cd
ssvnc
-
1.0.2
8
gzip -dc ssvnc-1.0.2
9
.src.tar.gz | tar xvf -
cd ssvnc-1.0.2
9
make config
make all
make PREFIX=/my/install/dir install
...
...
@@ -11285,7 +11356,7 @@ Windows:
Unzip, using WinZip or a similar utility, the zip file:
ssvnc
-
1.0.2
8
.
zip
ssvnc-1.0.2
9
.zip
Run the GUI, e.g.:
...
...
@@ -11297,7 +11368,7 @@ Windows:
select Open, and then OK to launch it.
The
smaller
file
"ssvnc_windows_only-1.0.2
8
.zip"
The smaller file "
ssvnc_windows_only
-
1.0.2
9
.
zip
"
could have been used as well.
You can make a Windows shortcut to this program if you want to.
...
...
@@ -11964,25 +12035,25 @@ r
"
ssvnc_unix_only
" (or "
ssvnc_no_windows
" to recompile).
On Mac OS X? Use "
ssvnc_no_windows
".
On Windows? Use "
ssvnc_windows_only
".
ssvnc_windows_only-1.0.2
7
.zip Windows Binaries Only. No source included
ssvnc_windows_only-1.0.2
8
.zip Windows Binaries Only. No source included
(6.2MB)
ssvnc_no_windows-1.0.2
7
.tar.gz Unix and Mac OS X Only. No Windows binarie
ssvnc_no_windows-1.0.2
8
.tar.gz Unix and Mac OS X Only. No Windows binarie
s. Source included. (10.1MB)
ssvnc_unix_only-1.0.2
7
.tar.gz Unix Binaries Only. No source included
ssvnc_unix_only-1.0.2
8
.tar.gz Unix Binaries Only. No source included
. (7.2MB)
ssvnc_unix_minimal-1.0.2
7
.tar.gz Unix Minimal. You must supply your own vn
ssvnc_unix_minimal-1.0.2
8
.tar.gz Unix Minimal. You must supply your own vn
cviewer and stunnel. (0.2MB)
ssvnc-1.0.2
7
.tar.gz All Unix, Mac OS X, and Windows binaries a
ssvnc-1.0.2
8
.tar.gz All Unix, Mac OS X, and Windows binaries a
nd source TGZ. (16.1MB)
ssvnc-1.0.2
7
.zip All Unix, Mac OS X, and Windows binaries a
ssvnc-1.0.2
8
.zip All Unix, Mac OS X, and Windows binaries a
nd source ZIP. (16.4MB)
ssvnc_all-1.0.2
7
.zip All Unix, Mac OS X, and Windows binaries a
ssvnc_all-1.0.2
8
.zip All Unix, Mac OS X, and Windows binaries a
nd source AND full archives in the zip dir. (19.2MB)
Here is a conventional source tarball:
ssvnc-1.0.2
7
.src.tar.gz Conventional Source for SSVNC GUI and Unix
ssvnc-1.0.2
8
.src.tar.gz Conventional Source for SSVNC GUI and Unix
VNCviewer (0.5MB)
it will be of use to those who do not want the SSVNC
...
...
@@ -12000,19 +12071,19 @@ nd source AND full archives in the zip dir. (19.2MB)
"
ssvnc_all
", you may need to run the "
./
build
.
unix
" script in the top
directory to recompile for your operating system.
Here are the corresponding 1.0.2
8
development bundles (Please help
Here are the corresponding 1.0.2
9
development bundles (Please help
test them):
ssvnc_windows_only-1.0.2
8
.zip
ssvnc_no_windows-1.0.2
8
.tar.gz
ssvnc_unix_only-1.0.2
8
.tar.gz
ssvnc_unix_minimal-1.0.2
8
.tar.gz
ssvnc_windows_only-1.0.2
9
.zip
ssvnc_no_windows-1.0.2
9
.tar.gz
ssvnc_unix_only-1.0.2
9
.tar.gz
ssvnc_unix_minimal-1.0.2
9
.tar.gz
ssvnc-1.0.2
8
.tar.gz
ssvnc-1.0.2
8
.zip
ssvnc_all-1.0.2
8
.zip
ssvnc-1.0.2
9
.tar.gz
ssvnc-1.0.2
9
.zip
ssvnc_all-1.0.2
9
.zip
ssvnc-1.0.2
8
.src.tar.gz Conventional Source for SSVNC GUI and Unix
ssvnc-1.0.2
9
.src.tar.gz Conventional Source for SSVNC GUI and Unix
VNCviewer (0.5MB)
...
...
@@ -12036,6 +12107,7 @@ nd source AND full archives in the zip dir. (19.2MB)
Release 1.0.25 at Sourceforge.net
Release 1.0.26 at Sourceforge.net
Release 1.0.27 at Sourceforge.net
Release 1.0.28 at Sourceforge.net
Please help test the UltraVNC File Transfer support in the native Unix
...
...
@@ -12100,7 +12172,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.1
1 lastmod: 2010-05-08
x11vnc: allow VNC connections to real X11 displays. 0.9.1
3 lastmod: 2010-09-10
x11vnc options:
-display disp -auth file -N
...
...
@@ -12162,41 +12234,42 @@ x11vnc options:
-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 -input_eagerly -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
-noxwarppointer -always_inject -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 -input_eagerly
-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
...
...
@@ -12230,7 +12303,7 @@ libvncserver-tight-extension options:
% x11vnc -help
x11vnc
:
allow
VNC
connections
to
real
X11
displays
.
0.9.1
1
lastmod
:
2010
-
05
-
08
x11vnc: allow VNC connections to real X11 displays. 0.9.1
3 lastmod: 2010-09-10
(type "
x11vnc
-
opts
" to just list the options.)
...
...
@@ -12633,6 +12706,12 @@ Options:
-forever Keep listening for more connections rather than exiting
as soon as the first client(s) disconnect. Same as -many
To get the standard non-shared VNC behavior where when
a new VNC client connects the existing VNC client is
dropped use: -nevershared -forever This method can
also be used to guard against hung TCP connections that
do not go away.
-loop Create an outer loop restarting the x11vnc process
whenever it terminates. -bg and -inetd are ignored
in this mode (however see -loopbg below).
...
...
@@ -12740,6 +12819,11 @@ Options:
may need to start avahi-daemon and open udp port 5353
in your firewall.
You can set X11VNC_AVAHI_NAME, X11VNC_AVAHI_HOST,
and/or X11VNC_AVAHI_PORT environment variables
to override the default values. For example:
-env X11VNC_AVAHI_NAME=wally
If the avahi API cannot be found at build time, a helper
program like avahi-publish(1) or dns-sd(1) will be tried
...
...
@@ -13366,13 +13450,13 @@ Options:
virtual terminal of the X server.
-listdpy Have the FINDDISPLAY program list all of your displays
(i.e. all the X displays on the local machine that you
have access rights to).
have access rights to).
x11vnc then exits.
-findauth [disp] Apply the -find/-finddpy heuristics to try to guess
the XAUTHORITY file for DISPLAY '
disp
'. If '
disp
'
is not supplied, then the value in the -display on
the cmdline is used; failing that $DISPLAY is used;
and failing that ":0" is used.
and failing that ":0" is used.
x11vnc then exits.
If nothing is printed out, that means no XAUTHORITY was
found for '
disp
'; i.e. failure. If "XAUTHORITY="
...
...
@@ -13608,8 +13692,19 @@ Options:
if the viewer-side supplied value is not completely
composed of alphanumeric or '
_
' or '
-
' characters.
User preferences file: Instead of having the user type
in geom=WxH,... etc. every time he logs in to find
or create his X session, if you set FD_USERPREFS to
a string that does not contain the "/" character,
then the user'
s
home
directory
is
prepended
to
that
string
and
if
the
file
exists
its
first
line
is
read
and
appended
to
any
options
he
supplied
at
the
login
:
prompt
.
For
example
-
env
FD_USERPREFS
=.
x11vnc_create
and
the
user
put
"geom=1600x1200"
in
his
~/.
x11vnc_create
file
.
To
troubleshoot
the
FINDCREATEDISPLAY
mechanism
,
set the following env. var. to an ouput log file,
set
the
following
env
.
var
.
to
an
ou
t
put
log
file
,
e
.
g
-
env
CREATE_DISPLAY_OUTPUT
=/
tmp
/
mydebug
.
txt
To
disable
the
option
setting
set
the
environment
...
...
@@ -13699,6 +13794,8 @@ Options:
It will start looking for an open display number at :20
Override via X11VNC_CREATE_STARTING_DISPLAY_NUMBER=n
By default 80 X displays are allowed (i.e. going to :99)
Override via X11VNC_CREATE_MAX_DISPLAYS=n
By default FINDCREATEDISPLAY will try Xvfb and then
Xdummy:
...
...
@@ -14221,6 +14318,7 @@ Options:
-
sslGenCA
[
dir
]
Generate
your
own
Certificate
Authority
private
key
,
certificate
,
and
other
files
in
directory
[
dir
].
x11vnc
then
exits
.
If
[
dir
]
is
not
supplied
,
a
-
ssldir
setting
is
used
,
or
otherwise
~/.
vnc
/
certs
is
used
.
...
...
@@ -14231,7 +14329,7 @@ Options:
in
PATH
.
After
the
CA
files
and
directories
are
created
the
command exits; the VNC server is not run.
x11vnc
command
exits
;
the
VNC
server
is
not
run
.
You
will
be
prompted
for
information
to
put
into
the
CA
certificate
.
The
info
does
not
have
to
be
accurate
just
...
...
@@ -14259,8 +14357,8 @@ Options:
-
sslGenCA
.
The
openssl
(
1
)
program
must
be
installed
on
the
system
and
available
in
PATH
.
After the Certificate is generated
the command exits;
the
VNC server is not run.
After
the
Certificate
is
generated
x11vnc
exits
;
the
VNC
server
is
not
run
.
The
type
of
key
to
be
generated
is
the
string
"type"
.
It
is
either
"server"
(
i
.
e
.
for
use
by
x11vnc
)
or
...
...
@@ -14379,7 +14477,7 @@ Options:
scp
~/.
vnc
/
certs
/
clients
/
roger
.
pem
somehost
:.
rm
~/.
vnc
/
certs
/
clients
/
roger
.
pem
x11vnc is then started with the
the
option -sslverify
x11vnc
is
then
started
with
the
option
-
sslverify
~/.
vnc
/
certs
/
clients
/
roger
.
crt
(
or
simply
-
sslverify
roger
),
and
on
the
viewer
user
on
somehost
could
do
for
example
:
...
...
@@ -14402,7 +14500,7 @@ Options:
The
openssl
(
1
)
program
must
be
installed
on
the
system
and
available
in
PATH
.
After
the
Key
file
is
encrypted
the command exits; the VNC server is not run.
the
x11vnc
command
exits
;
the
VNC
server
is
not
run
.
Examples
:
x11vnc
-
sslEncKey
/
path
/
to
/
foo
.
pem
...
...
@@ -14414,6 +14512,9 @@ Options:
The
openssl
(
1
)
program
must
be
in
PATH
.
Basically
the
command
"openssl x509 -text"
is
run
on
the
pem
.
After
the
info
is
printed
the
x11vnc
command
exits
;
the
VNC
server
is
not
run
.
The
"SAVE"
notation
described
under
-
ssl
applies
as
well
.
...
...
@@ -14439,13 +14540,13 @@ Options:
also
be
lowercase
,
e
.
g
.
"list"
.
-
sslDelCert
pem
Prompts
you
to
delete
all
.
crt
.
pem
.
key
.
req
files
associated with [pem].
"SAVE" and lookups as in
-sslCertInfo apply as well.
associated
with
[
pem
].
x11vnc
then
exits
.
"SAVE"
and
lookups
as
in
-
sslCertInfo
apply
as
well
.
-
sslScripts
Prints
out
both
the
'genCA'
and
'genCert'
x11vnc
openssl
wrapper
scripts
for
you
to
examine
,
modify
,
etc
.
The scripts are printed to stdout and then the
program
exits.
The
scripts
are
printed
to
stdout
and
then
the
x11vnc
program
exits
.
-
stunnel
[
pem
]
Use
the
stunnel
(
8
)
(
stunnel
.
mirt
.
net
)
to
provide
an
...
...
@@ -15015,6 +15116,9 @@ t
just use 1 shm tile for polling. Limits shm segments
used to 3.
To disable any automatic shm reduction set the
env. var. X11VNC_NO_LIMIT_SHM.
-solid [color] To improve performance, when VNC clients are connected
try to change the desktop background to a solid color.
The [color] is optional: the default color is "cyan4".
...
...
@@ -15265,7 +15369,7 @@ t
the wire and are applied correctly to the x11vnc-side
X server. Note this mode probably won'
t
do
what
you
want
in
-
nomodtweak
mode
.
Also
,
a
kludge
for
KP_n
digits is always done i
t
this mode: they are mapped to
digits
is
always
done
i
n
this
mode
:
they
are
mapped
to
regular
digit
keysyms
.
See
also
-
capslock
above
.
The
default
is
-
noskip_lockkeys
.
...
...
@@ -15548,6 +15652,34 @@ t
enabled
by
default
if
XINERAMA
is
found
to
be
active
.
To
prevent
this
,
use
-
noxwarppointer
.
-
always_inject
Even
if
there
is
no
displacement
(
dx
=
dy
=
0
)
for
a
VNC
mouse
event
force
the
pointer
to
the
indicated
x
,
y
position
anyway
.
Recent
(
2009
)
gui
toolkits
(
gnome
)
have
problems
with
x11vnc
's original mouse input
injection method. So x11vnc'
s
mouse
input
injection
method
has
been
modified
.
To
regain
the
OLD
behavior
use
this
option
:
-
always_inject
.
Then
x11vnc
will
always
force
positioning
the
mouse
to
the
x
,
y
position
even
if
that
position
has
not
changed
since
the
previous
VNC
input
event
.
The
first
place
this
problem
was
noticed
was
in
gnome
terminal
:
if
you
pressed
and
released
mouse
button
3
,
a
menu
was
posted
and
then
its
first
element
'New Terminal
Window'
was
activated
.
This
was
because
x11vnc
injected
the
mouse
position
twice
:
once
on
ButtonPress
and
again
on
ButtonRelease
.
The
toolkit
interpreted
the
2
nd
one
as
mouse
motion
even
though
the
mouse
hadn
't moved.
So now by default x11vnc tries to avoid injecting the
2nd one.
Note that with the new default x11vnc will be oblivious
to applications moving the pointer (warping) or the
user at the physical display moving it. So it might,
e.g., inject ButtonRelease at the wrong position.
If this (or similar scenarios) causes problems in your
environment, specify -always_inject for the old method.
-buttonmap string String to remap mouse buttons. Format: IJK-LMN, this
maps buttons I -> L, etc., e.g. -buttonmap 13-31
...
...
@@ -16005,7 +16137,7 @@ t
the whole-server grabbing application expects mouse or
keyboard input before releasing the grab. It is usually
a window manager that does this. x11vnc takes care to
avoid the
the
problem, but if caught x11vnc will freeze.
avoid the problem, but if caught x11vnc will freeze.
Without -grab_buster, the only solution is to go the
physical display and give it some input to satisfy the
grabbing app. Or manually kill and restart the window
...
...
@@ -16845,7 +16977,7 @@ er
-macuskbd For the native MacOSX server, use the original
keystroke insertion code based on a US keyboard.
-gui [gui-opts] Start up a simple tcl/tk gui based on the
the
remote
-gui [gui-opts] Start up a simple tcl/tk gui based on the remote
control options -remote/-query described below.
Requires the "wish" program to be installed on the
machine. "gui-opts" is not required: the default
...
...
@@ -16976,9 +17108,9 @@ n
x11vnc server. "-R" and "-r" are aliases for
"-remote". After the remote control command is
sent to the running server the '
x11vnc
-
remote
...
'
command exits. You can often use the -query command
(see below) to see if the x11vnc server processed you
r
-remote command.
x11vnc command exits. You can often use the -query
command (see below) to see if the x11vnc serve
r
processed your
-remote command.
The default communication channel is that of X
properties (specifically X11VNC_REMOTE), and so this
...
...
@@ -17231,6 +17363,8 @@ n
nocursorpos
enable
-
nocursorpos
mode
.
xwarp
enable
-
xwarppointer
mode
.
noxwarp
disable
-
xwarppointer
mode
.
always_inject
enable
-
always_inject
mode
.
noalways_inject
disable
-
always_inject
mode
.
buttonmap
:
str
set
-
buttonmap
"str"
,
empty
to
disable
dragging
disable
-
nodragging
mode
.
nodragging
enable
-
nodragging
mode
.
...
...
@@ -17555,11 +17689,11 @@ n
nosetprimary
clipboard
noclipboard
setclipboard
nosetclipboard
seldir
cursorshape
nocursorshape
cursorpos
nocursorpos
cursor_drag
nocursor_drag
cursor
show_cursor
noshow_cursor
nocursor
arrow
xfixes
noxfixes
xdamage
noxdamage
xd_area
xd_mem
alphacut
alpha
frac
alpharemove
noalpharemove
alphablend
noalphablend
xwarppointer
xwarp
noxwarppointer
no
xwarp
buttonmap
dragging
nodragging
ncache_cr
show_cursor
noshow_cursor
nocursor
arrow
xfixes
noxfixes
xdamage
noxdamage
xd_area
xd_mem
alphacut
alphafrac
alpha
remove
noalpharemove
alphablend
no
alphablend
xwarppointer
xwarp
noxwarppointer
noxwarp
always_inject
no
always_inject
buttonmap
dragging
nodragging
ncache_cr
noncache_cr
ncache_no_moveraise
noncache_no_moveraise
ncache_no_dtchange
noncache_no_dtchange
ncache_no_rootpixmap
noncache_no_rootpixmap
...
...
This diff is collapsed.
Click to expand it.
x11vnc/avahi.c
View file @
067a8816
...
...
@@ -37,7 +37,7 @@ so, delete this exception statement from your version.
#include "cleanup.h"
void
avahi_initialise
(
void
);
void
avahi_advertise
(
c
onst
char
*
name
,
const
char
*
host
,
const
uint16_t
port
);
void
avahi_advertise
(
c
har
*
name
,
char
*
host
,
uint16_t
port
);
void
avahi_reset
(
void
);
void
avahi_cleanup
(
void
);
...
...
@@ -45,12 +45,13 @@ static pid_t avahi_pid = 0;
static
void
kill_avahi_pid
(
void
)
{
if
(
avahi_pid
!=
0
)
{
rfbLog
(
"kill_avahi_pid: %d
\n
"
,
(
int
)
avahi_pid
);
kill
(
avahi_pid
,
SIGTERM
);
avahi_pid
=
0
;
}
}
static
int
try_avahi_helper
(
c
onst
char
*
name
,
const
char
*
host
,
const
uint16_t
port
)
{
static
int
try_avahi_helper
(
c
har
*
name
,
char
*
host
,
uint16_t
port
)
{
#if LIBVNCSERVER_HAVE_FORK
char
*
cmd
,
*
p
,
*
path
=
getenv
(
"PATH"
),
portstr
[
32
];
int
i
;
...
...
@@ -146,7 +147,12 @@ void avahi_initialise(void) {
rfbLog
(
"avahi_initialise: no Avahi support at buildtime.
\n
"
);
}
void
avahi_advertise
(
const
char
*
name
,
const
char
*
host
,
const
uint16_t
port
)
{
void
avahi_advertise
(
char
*
name
,
char
*
host
,
uint16_t
port
)
{
char
*
t
;
t
=
getenv
(
"X11VNC_AVAHI_NAME"
);
if
(
t
)
name
=
t
;
t
=
getenv
(
"X11VNC_AVAHI_HOST"
);
if
(
t
)
host
=
t
;
t
=
getenv
(
"X11VNC_AVAHI_PORT"
);
if
(
t
)
port
=
atoi
(
t
);
if
(
!
try_avahi_helper
(
name
,
host
,
port
))
{
rfbLog
(
"avahi_advertise: no Avahi support at buildtime.
\n
"
);
avahi
=
0
;
...
...
@@ -243,8 +249,8 @@ if (db) fprintf(stderr, " avahi_initialise: poll not null\n");
if
(
db
)
fprintf
(
stderr
,
"out avahi_initialise
\n
"
);
}
static
void
_avahi_create_services
(
c
onst
char
*
name
,
const
char
*
host
,
const
uint16_t
port
);
static
void
_avahi_create_services
(
c
har
*
name
,
char
*
host
,
uint16_t
port
);
static
void
_avahi_entry_group_callback
(
AvahiEntryGroup
*
g
,
AvahiEntryGroupState
state
,
void
*
userdata
)
{
...
...
@@ -285,12 +291,11 @@ if (db) fprintf(stderr, "in _avahi_entry_group_callback %d 0x%p\n", state, svc)
if
(
db
)
fprintf
(
stderr
,
"out _avahi_entry_group_callback
\n
"
);
}
static
void
_avahi_create_services
(
const
char
*
name
,
const
char
*
host
,
const
uint16_t
port
)
{
static
void
_avahi_create_services
(
char
*
name
,
char
*
host
,
uint16_t
port
)
{
avahi_service_t
*
svc
=
(
avahi_service_t
*
)
malloc
(
sizeof
(
avahi_service_t
));
int
ret
=
0
;
if
(
db
)
fprintf
(
stderr
,
"in _avahi_create_services
%s %s
%d
\n
"
,
name
,
host
,
port
);
if
(
db
)
fprintf
(
stderr
,
"in _avahi_create_services
'%s' '%s'
%d
\n
"
,
name
,
host
,
port
);
svc
->
name
=
name
;
svc
->
host
=
host
;
svc
->
port
=
port
;
...
...
@@ -323,9 +328,14 @@ if (db) fprintf(stderr, " _avahi_create_services create group\n");
if
(
db
)
fprintf
(
stderr
,
"out _avahi_create_services
\n
"
);
}
void
avahi_advertise
(
c
onst
char
*
name
,
const
char
*
host
,
const
uint16_t
port
)
{
void
avahi_advertise
(
c
har
*
name
,
char
*
host
,
uint16_t
port
)
{
int
i
;
if
(
db
)
fprintf
(
stderr
,
"in avahi_advertise: %s %s %d
\n
"
,
name
,
host
,
port
);
char
*
t
;
t
=
getenv
(
"X11VNC_AVAHI_NAME"
);
if
(
t
)
name
=
t
;
t
=
getenv
(
"X11VNC_AVAHI_HOST"
);
if
(
t
)
host
=
t
;
t
=
getenv
(
"X11VNC_AVAHI_PORT"
);
if
(
t
)
port
=
atoi
(
t
);
if
(
db
)
fprintf
(
stderr
,
"in avahi_advertise: '%s' '%s' %d
\n
"
,
name
,
host
,
port
);
if
(
!
_client
)
{
if
(
db
)
fprintf
(
stderr
,
" avahi_advertise client null
\n
"
);
return
;
...
...
@@ -388,18 +398,34 @@ if (db) fprintf(stderr, " avahi_reset client/group null\n");
if
(
db
)
fprintf
(
stderr
,
"out avahi_reset
\n
"
);
}
static
void
avahi_timeout
(
int
sig
)
{
int
i
;
rfbLog
(
"sig: %d, avahi_cleanup timed out.
\n
"
,
sig
);
exit
(
1
);
}
void
avahi_cleanup
(
void
)
{
if
(
db
)
fprintf
(
stderr
,
"in avahi_cleanup
\n
"
);
if
(
!
_client
)
{
if
(
db
)
fprintf
(
stderr
,
" avahi_cleanup client null
\n
"
);
return
;
}
if
(
db
)
fprintf
(
stderr
,
" avahi_cleanup poll_lock
\n
"
);
avahi_threaded_poll_lock
(
_poll
);
if
(
db
)
fprintf
(
stderr
,
" avahi_cleanup poll_stop
\n
"
);
signal
(
SIGALRM
,
avahi_timeout
);
alarm
(
3
);
avahi_threaded_poll_stop
(
_poll
);
alarm
(
0
);
signal
(
SIGALRM
,
SIG_DFL
);
if
(
db
)
fprintf
(
stderr
,
" avahi_cleanup client_free
\n
"
);
avahi_client_free
(
_client
);
_client
=
NULL
;
if
(
db
)
fprintf
(
stderr
,
" avahi_cleanup poll_free
\n
"
);
avahi_threaded_poll_free
(
_poll
);
_poll
=
NULL
;
if
(
db
)
fprintf
(
stderr
,
"out avahi_cleanup
\n
"
);
...
...
This diff is collapsed.
Click to expand it.
x11vnc/avahi.h
View file @
067a8816
...
...
@@ -36,7 +36,7 @@ so, delete this exception statement from your version.
/* -- avahi.h -- */
extern
void
avahi_initialise
(
void
);
extern
void
avahi_advertise
(
c
onst
char
*
name
,
const
char
*
host
,
const
uint16_t
port
);
extern
void
avahi_advertise
(
c
har
*
name
,
char
*
host
,
uint16_t
port
);
extern
void
avahi_reset
(
void
);
extern
void
avahi_cleanup
(
void
);
...
...
This diff is collapsed.
Click to expand it.
x11vnc/cleanup.c
View file @
067a8816
...
...
@@ -165,9 +165,6 @@ void clean_up_exit(int ret) {
ssl_helper_pid
(
0
,
0
);
/* killall */
}
if
(
avahi
)
{
avahi_cleanup
();
}
if
(
ssh_pid
>
0
)
{
kill
(
ssh_pid
,
SIGTERM
);
ssh_pid
=
0
;
...
...
@@ -242,6 +239,11 @@ void clean_up_exit(int ret) {
rm_flagfile
=
NULL
;
}
if
(
avahi
)
{
avahi_cleanup
();
fflush
(
stderr
);
}
exit
(
ret
);
}
...
...
This diff is collapsed.
Click to expand it.
x11vnc/connections.c
View file @
067a8816
...
...
@@ -932,11 +932,7 @@ void client_gone(rfbClientPtr client) {
kill
(
gui_pid
,
SIGTERM
);
}
CLIENT_UNLOCK
;
if
(
connect_or_exit
)
{
clean_up_exit
(
1
);
}
else
{
clean_up_exit
(
0
);
}
clean_up_exit
(
0
);
}
#ifdef MACOSX
if
(
macosx_console
&&
client_count
==
0
)
{
...
...
@@ -3149,7 +3145,7 @@ static void pmove(int x, int y) {
return
;
}
rfbLog
(
"pmove: x y: %d %d
\n
"
,
x
,
y
);
pointer
(
0
,
x
,
y
,
NULL
);
pointer
_event
(
0
,
x
,
y
,
NULL
);
X_LOCK
;
XFlush_wr
(
dpy
);
X_UNLOCK
;
...
...
This diff is collapsed.
Click to expand it.
x11vnc/help.c
View file @
067a8816
...
...
@@ -467,6 +467,12 @@ void print_help(int mode) {
"-forever Keep listening for more connections rather than exiting
\n
"
" as soon as the first client(s) disconnect. Same as -many
\n
"
"
\n
"
" To get the standard non-shared VNC behavior where when
\n
"
" a new VNC client connects the existing VNC client is
\n
"
" dropped use: -nevershared -forever This method can
\n
"
" also be used to guard against hung TCP connections that
\n
"
" do not go away.
\n
"
"
\n
"
"-loop Create an outer loop restarting the x11vnc process
\n
"
" whenever it terminates. -bg and -inetd are ignored
\n
"
" in this mode (however see -loopbg below).
\n
"
...
...
@@ -574,6 +580,11 @@ void print_help(int mode) {
" may need to start avahi-daemon and open udp port 5353
\n
"
" in your firewall.
\n
"
"
\n
"
" You can set X11VNC_AVAHI_NAME, X11VNC_AVAHI_HOST,
\n
"
" and/or X11VNC_AVAHI_PORT environment variables
\n
"
" to override the default values. For example:
\n
"
" -env X11VNC_AVAHI_NAME=wally
\n
"
"
\n
"
" If the avahi API cannot be found at build time, a helper
\n
"
" program like avahi-publish(1) or dns-sd(1) will be tried
\n
"
"
\n
"
...
...
@@ -1212,13 +1223,13 @@ void print_help(int mode) {
" virtual terminal of the X server.
\n
"
"-listdpy Have the FINDDISPLAY program list all of your displays
\n
"
" (i.e. all the X displays on the local machine that you
\n
"
" have access rights to).
\n
"
" have access rights to).
x11vnc then exits.
\n
"
"
\n
"
"-findauth [disp] Apply the -find/-finddpy heuristics to try to guess
\n
"
" the XAUTHORITY file for DISPLAY 'disp'. If 'disp'
\n
"
" is not supplied, then the value in the -display on
\n
"
" the cmdline is used; failing that $DISPLAY is used;
\n
"
" and failing that
\"
:0
\"
is used.
\n
"
" and failing that
\"
:0
\"
is used.
x11vnc then exits.
\n
"
"
\n
"
" If nothing is printed out, that means no XAUTHORITY was
\n
"
" found for 'disp'; i.e. failure. If
\"
XAUTHORITY=
\"\n
"
...
...
@@ -1454,8 +1465,19 @@ void print_help(int mode) {
" if the viewer-side supplied value is not completely
\n
"
" composed of alphanumeric or '_' or '-' characters.
\n
"
"
\n
"
" User preferences file: Instead of having the user type
\n
"
" in geom=WxH,... etc. every time he logs in to find
\n
"
" or create his X session, if you set FD_USERPREFS to
\n
"
" a string that does not contain the
\"
/
\"
character,
\n
"
" then the user's home directory is prepended to that
\n
"
" string and if the file exists its first line is read
\n
"
" and appended to any options he supplied at the login:
\n
"
" prompt. For example -env FD_USERPREFS=.x11vnc_create
\n
"
" and the user put
\"
geom=1600x1200
\"
in his
\n
"
" ~/.x11vnc_create file.
\n
"
"
\n
"
" To troubleshoot the FINDCREATEDISPLAY mechanism,
\n
"
" set the following env. var. to an ouput log file,
\n
"
" set the following env. var. to an ou
t
put log file,
\n
"
" e.g -env CREATE_DISPLAY_OUTPUT=/tmp/mydebug.txt
\n
"
"
\n
"
" To disable the option setting set the environment
\n
"
...
...
@@ -1544,6 +1566,8 @@ void print_help(int mode) {
"
\n
"
" It will start looking for an open display number at :20
\n
"
" Override via X11VNC_CREATE_STARTING_DISPLAY_NUMBER=n
\n
"
" By default 80 X displays are allowed (i.e. going to :99)
\n
"
" Override via X11VNC_CREATE_MAX_DISPLAYS=n
\n
"
"
\n
"
" By default FINDCREATEDISPLAY will try Xvfb and then
\n
"
" Xdummy:
\n
"
...
...
@@ -2066,6 +2090,7 @@ void print_help(int mode) {
"
\n
"
"-sslGenCA [dir] Generate your own Certificate Authority private key,
\n
"
" certificate, and other files in directory [dir].
\n
"
" x11vnc then exits.
\n
"
"
\n
"
" If [dir] is not supplied, a -ssldir setting is used,
\n
"
" or otherwise ~/.vnc/certs is used.
\n
"
...
...
@@ -2076,7 +2101,7 @@ void print_help(int mode) {
" in PATH.
\n
"
"
\n
"
" After the CA files and directories are created the
\n
"
" command exits; the VNC server is not run.
\n
"
"
x11vnc
command exits; the VNC server is not run.
\n
"
"
\n
"
" You will be prompted for information to put into the CA
\n
"
" certificate. The info does not have to be accurate just
\n
"
...
...
@@ -2104,8 +2129,8 @@ void print_help(int mode) {
" -sslGenCA. The openssl(1) program must be installed
\n
"
" on the system and available in PATH.
\n
"
"
\n
"
" After the Certificate is generated
the command exits;
\n
"
"
the
VNC server is not run.
\n
"
" After the Certificate is generated
x11vnc exits; the
\n
"
" VNC server is not run.
\n
"
"
\n
"
" The type of key to be generated is the string
\"
type
\"
.
\n
"
" It is either
\"
server
\"
(i.e. for use by x11vnc) or
\n
"
...
...
@@ -2225,7 +2250,7 @@ void print_help(int mode) {
" scp ~/.vnc/certs/clients/roger.pem somehost:.
\n
"
" rm ~/.vnc/certs/clients/roger.pem
\n
"
"
\n
"
" x11vnc is then started with the
the
option -sslverify
\n
"
" x11vnc is then started with the option -sslverify
\n
"
" ~/.vnc/certs/clients/roger.crt (or simply -sslverify
\n
"
" roger), and on the viewer user on somehost could do
\n
"
" for example:
\n
"
...
...
@@ -2248,7 +2273,7 @@ void print_help(int mode) {
"
\n
"
" The openssl(1) program must be installed on the system
\n
"
" and available in PATH. After the Key file is encrypted
\n
"
" the command exits; the VNC server is not run.
\n
"
" the
x11vnc
command exits; the VNC server is not run.
\n
"
"
\n
"
" Examples:
\n
"
" x11vnc -sslEncKey /path/to/foo.pem
\n
"
...
...
@@ -2260,6 +2285,9 @@ void print_help(int mode) {
" The openssl(1) program must be in PATH. Basically the
\n
"
" command
\"
openssl x509 -text
\"
is run on the pem.
\n
"
"
\n
"
" After the info is printed the x11vnc command exits;
\n
"
" the VNC server is not run.
\n
"
"
\n
"
" The
\"
SAVE
\"
notation described under -ssl applies
\n
"
" as well.
\n
"
"
\n
"
...
...
@@ -2285,13 +2313,13 @@ void print_help(int mode) {
" also be lowercase, e.g.
\"
list
\"
.
\n
"
"
\n
"
"-sslDelCert pem Prompts you to delete all .crt .pem .key .req files
\n
"
" associated with [pem].
\"
SAVE
\"
and lookups as in
\n
"
" -sslCertInfo apply as well.
\n
"
" associated with [pem].
x11vnc then exits.
\"
SAVE
\"
\n
"
"
and lookups as in
-sslCertInfo apply as well.
\n
"
"
\n
"
"-sslScripts Prints out both the 'genCA' and 'genCert' x11vnc
\n
"
" openssl wrapper scripts for you to examine, modify, etc.
\n
"
" The scripts are printed to stdout and then the
program
\n
"
" exits.
\n
"
" The scripts are printed to stdout and then the
x11vnc
\n
"
"
program
exits.
\n
"
"
\n
"
"
\n
"
"-stunnel [pem] Use the stunnel(8) (stunnel.mirt.net) to provide an
\n
"
...
...
@@ -2860,6 +2888,9 @@ void print_help(int mode) {
" just use 1 shm tile for polling. Limits shm segments
\n
"
" used to 3.
\n
"
"
\n
"
" To disable any automatic shm reduction set the
\n
"
" env. var. X11VNC_NO_LIMIT_SHM.
\n
"
"
\n
"
"-solid [color] To improve performance, when VNC clients are connected
\n
"
" try to change the desktop background to a solid color.
\n
"
" The [color] is optional: the default color is
\"
cyan4
\"
.
\n
"
...
...
@@ -3109,7 +3140,7 @@ void print_help(int mode) {
" the wire and are applied correctly to the x11vnc-side
\n
"
" X server. Note this mode probably won't do what you
\n
"
" want in -nomodtweak mode. Also, a kludge for KP_n
\n
"
" digits is always done i
t
this mode: they are mapped to
\n
"
" digits is always done i
n
this mode: they are mapped to
\n
"
" regular digit keysyms. See also -capslock above.
\n
"
" The default is -noskip_lockkeys.
\n
"
"
\n
"
...
...
@@ -3392,6 +3423,34 @@ void print_help(int mode) {
" enabled by default if XINERAMA is found to be active.
\n
"
" To prevent this, use -noxwarppointer.
\n
"
"
\n
"
"-always_inject Even if there is no displacement (dx = dy = 0) for a
\n
"
" VNC mouse event force the pointer to the indicated x,y
\n
"
" position anyway. Recent (2009) gui toolkits (gnome)
\n
"
" have problems with x11vnc's original mouse input
\n
"
" injection method. So x11vnc's mouse input injection
\n
"
" method has been modified. To regain the OLD behavior
\n
"
" use this option: -always_inject. Then x11vnc will
\n
"
" always force positioning the mouse to the x,y position
\n
"
" even if that position has not changed since the previous
\n
"
" VNC input event.
\n
"
"
\n
"
" The first place this problem was noticed was in gnome
\n
"
" terminal: if you pressed and released mouse button 3, a
\n
"
" menu was posted and then its first element 'New Terminal
\n
"
" Window' was activated. This was because x11vnc injected
\n
"
" the mouse position twice: once on ButtonPress and again
\n
"
" on ButtonRelease. The toolkit interpreted the 2nd one
\n
"
" as mouse motion even though the mouse hadn't moved.
\n
"
" So now by default x11vnc tries to avoid injecting the
\n
"
" 2nd one.
\n
"
"
\n
"
" Note that with the new default x11vnc will be oblivious
\n
"
" to applications moving the pointer (warping) or the
\n
"
" user at the physical display moving it. So it might,
\n
"
" e.g., inject ButtonRelease at the wrong position.
\n
"
" If this (or similar scenarios) causes problems in your
\n
"
" environment, specify -always_inject for the old method.
\n
"
"
\n
"
"-buttonmap string String to remap mouse buttons. Format: IJK-LMN, this
\n
"
" maps buttons I -> L, etc., e.g. -buttonmap 13-31
\n
"
"
\n
"
...
...
@@ -3851,7 +3910,7 @@ void print_help(int mode) {
" the whole-server grabbing application expects mouse or
\n
"
" keyboard input before releasing the grab. It is usually
\n
"
" a window manager that does this. x11vnc takes care to
\n
"
" avoid the
the
problem, but if caught x11vnc will freeze.
\n
"
" avoid the problem, but if caught x11vnc will freeze.
\n
"
" Without -grab_buster, the only solution is to go the
\n
"
" physical display and give it some input to satisfy the
\n
"
" grabbing app. Or manually kill and restart the window
\n
"
...
...
@@ -4689,7 +4748,7 @@ void print_help(int mode) {
"-macuskbd For the native MacOSX server, use the original
\n
"
" keystroke insertion code based on a US keyboard.
\n
"
"
\n
"
"-gui [gui-opts] Start up a simple tcl/tk gui based on the
the
remote
\n
"
"-gui [gui-opts] Start up a simple tcl/tk gui based on the remote
\n
"
" control options -remote/-query described below.
\n
"
" Requires the
\"
wish
\"
program to be installed on the
\n
"
" machine.
\"
gui-opts
\"
is not required: the default
\n
"
...
...
@@ -4819,9 +4878,9 @@ void print_help(int mode) {
" x11vnc server.
\"
-R
\"
and
\"
-r
\"
are aliases for
\n
"
"
\"
-remote
\"
. After the remote control command is
\n
"
" sent to the running server the 'x11vnc -remote ...'
\n
"
"
command exits. You can often use the -query command
\n
"
"
(see below) to see if the x11vnc server processed you
r
\n
"
" -remote command.
\n
"
"
x11vnc command exits. You can often use the -query
\n
"
"
command (see below) to see if the x11vnc serve
r
\n
"
"
processed your
-remote command.
\n
"
"
\n
"
" The default communication channel is that of X
\n
"
" properties (specifically X11VNC_REMOTE), and so this
\n
"
...
...
@@ -5082,6 +5141,8 @@ void print_help(int mode) {
" nocursorpos enable -nocursorpos mode.
\n
"
" xwarp enable -xwarppointer mode.
\n
"
" noxwarp disable -xwarppointer mode.
\n
"
" always_inject enable -always_inject mode.
\n
"
" noalways_inject disable -always_inject mode.
\n
"
" buttonmap:str set -buttonmap
\"
str
\"
, empty to disable
\n
"
" dragging disable -nodragging mode.
\n
"
" nodragging enable -nodragging mode.
\n
"
...
...
@@ -5404,11 +5465,11 @@ void print_help(int mode) {
" nosetprimary clipboard noclipboard setclipboard
\n
"
" nosetclipboard seldir cursorshape nocursorshape
\n
"
" cursorpos nocursorpos cursor_drag nocursor_drag cursor
\n
"
" show_cursor noshow_cursor nocursor arrow xfixes
\n
"
"
noxfixes xdamage noxdamage xd_area xd_mem alphacut
\n
"
" alpha
frac alpharemove noalpharemove
alphablend
\n
"
"
noalphablend xwarppointer xwarp noxwarppointer
\n
"
" no
xwarp
buttonmap dragging nodragging ncache_cr
\n
"
" show_cursor noshow_cursor nocursor arrow xfixes
noxfixes
\n
"
"
xdamage noxdamage xd_area xd_mem alphacut alphafrac
\n
"
" alpha
remove noalpharemove alphablend no
alphablend
\n
"
"
xwarppointer xwarp noxwarppointer noxwarp always_inject
\n
"
" no
always_inject
buttonmap dragging nodragging ncache_cr
\n
"
" noncache_cr ncache_no_moveraise noncache_no_moveraise
\n
"
" ncache_no_dtchange noncache_no_dtchange
\n
"
" ncache_no_rootpixmap noncache_no_rootpixmap
\n
"
...
...
@@ -5830,7 +5891,7 @@ void nopassword_warning_msg(int gotloc) {
char
str4
[]
=
"#@ @#
\n
"
"#@ To disable this warning use the -nopw option, or put @#
\n
"
"#@
the setting in your ~/.x11vncrc file.
@#
\n
"
"#@
'nopw' on a line in your ~/.x11vncrc file.
@#
\n
"
"#@ @#
\n
"
"#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
\n
"
"###############################################################
\n
"
...
...
@@ -5845,7 +5906,7 @@ void nopassword_warning_msg(int gotloc) {
fprintf
(
stderr
,
"%s"
,
str1
);
fflush
(
stderr
);
#if !PASSWD_REQUIRED
usleep
(
100
0
*
1000
);
usleep
(
75
0
*
1000
);
#endif
if
(
!
quiet
)
{
fprintf
(
stderr
,
"%s"
,
str2
);
...
...
@@ -5858,7 +5919,7 @@ void nopassword_warning_msg(int gotloc) {
}
fflush
(
stderr
);
#if !PASSWD_REQUIRED
usleep
(
50
0
*
1000
);
usleep
(
25
0
*
1000
);
#endif
}
...
...
This diff is collapsed.
Click to expand it.
x11vnc/inet.c
View file @
067a8816
...
...
@@ -347,7 +347,7 @@ char *ident_username(rfbClientPtr client) {
if
(
ret
>
0
)
{
int
i
;
char
*
q
,
*
p
;
for
(
i
=
0
;
i
<
sizeof
(
msg
);
i
++
)
{
for
(
i
=
0
;
i
<
(
int
)
sizeof
(
msg
);
i
++
)
{
msg
[
i
]
=
'\0'
;
}
usleep
(
250
*
1000
);
...
...
This diff is collapsed.
Click to expand it.
x11vnc/keyboard.c
View file @
067a8816
...
...
@@ -1325,7 +1325,7 @@ xkbmodifiers[] For the KeySym bound to this (keycode,group,level) store
* loop over all possible (keycode, group, level) triples
* and record what we find for it:
*/
if
(
debug_keyboard
>
1
)
{
if
(
debug_keyboard
)
{
rfbLog
(
"initialize_xkb_modtweak: XKB keycode -> keysyms "
"mapping info:
\n
"
);
}
...
...
@@ -1502,7 +1502,7 @@ xkbmodifiers[] For the KeySym bound to this (keycode,group,level) store
xkbignore
[
kc
][
grp
][
lvl
]
=
mods_save
|
ms2
;
}
if
(
debug_keyboard
>
1
)
{
if
(
debug_keyboard
)
{
char
*
str
;
fprintf
(
stderr
,
" %03d G%d L%d mod=%s "
,
kc
,
grp
+
1
,
lvl
+
1
,
bitprint
(
ms
,
8
));
...
...
@@ -1560,7 +1560,7 @@ xkbmodifiers[] For the KeySym bound to this (keycode,group,level) store
}
free
(
str
);
}
if
(
debug_keyboard
>
1
)
{
if
(
debug_keyboard
)
{
fprintf
(
stderr
,
"grp_max=%d lvl_max=%d
\n
"
,
grp_max
,
lvl_max
);
}
}
...
...
@@ -2898,9 +2898,9 @@ static void pipe_keyboard(rfbBool down, rfbKeySym keysym, rfbClientPtr client) {
t
[
1
]
=
'\0'
;
if
(
sscanf
(
t
,
"%d"
,
&
butt
)
==
1
)
{
mask
=
1
<<
(
butt
-
1
);
pointer
(
mask
,
x
,
y
,
client
);
pointer
_event
(
mask
,
x
,
y
,
client
);
mask
=
0
;
pointer
(
mask
,
x
,
y
,
client
);
pointer
_event
(
mask
,
x
,
y
,
client
);
}
b
++
;
}
...
...
This diff is collapsed.
Click to expand it.
x11vnc/misc/ultravnc_repeater.pl
View file @
067a8816
...
...
@@ -725,6 +725,11 @@ sub xfer_both {
}
}
sub
fsleep
{
my
(
$time
)
=
@_
;
select
(
undef
,
undef
,
undef
,
$time
)
if
$time
;
}
sub
cleanup
{
close
$client_listen
if
$client_listen
;
close
$client_listen6
if
$client_listen6
;
...
...
This diff is collapsed.
Click to expand it.
x11vnc/options.c
View file @
067a8816
...
...
@@ -258,6 +258,7 @@ int cursor_drag_changes = CURSOR_DRAG;
int
cursor_pos_updates
=
1
;
/* cursor position updates -cursorpos */
int
cursor_shape_updates
=
1
;
/* cursor shape updates -nocursorshape */
int
use_xwarppointer
=
0
;
/* use XWarpPointer instead of XTestFake... */
int
always_inject
=
0
;
/* inject new mouse coordinates even if dx=dy=0 */
int
show_dragging
=
1
;
/* process mouse movement events */
#ifndef WIREFRAME
#define WIREFRAME 1
...
...
This diff is collapsed.
Click to expand it.
x11vnc/options.h
View file @
067a8816
...
...
@@ -222,6 +222,7 @@ extern int cursor_drag_changes;
extern
int
cursor_pos_updates
;
extern
int
cursor_shape_updates
;
extern
int
use_xwarppointer
;
extern
int
always_inject
;
extern
int
show_dragging
;
extern
int
wireframe
;
extern
int
wireframe_local
;
...
...
This diff is collapsed.
Click to expand it.
x11vnc/pointer.c
View file @
067a8816
...
...
@@ -54,7 +54,7 @@ int pointer_queued_sent = 0;
void
initialize_pointer_map
(
char
*
pointer_remap
);
void
do_button_mask_change
(
int
mask
,
int
button
);
void
pointer
(
int
mask
,
int
x
,
int
y
,
rfbClientPtr
client
);
void
pointer
_event
(
int
mask
,
int
x
,
int
y
,
rfbClientPtr
client
);
void
initialize_pipeinput
(
void
);
int
check_pipeinput
(
void
);
void
update_x11_pointer_position
(
int
x
,
int
y
);
...
...
@@ -342,20 +342,11 @@ void update_x11_pointer_position(int x, int y) {
return
;
#else
int
rc
;
static
int
watch_dx_dy
=
-
1
;
RAWFB_RET_VOID
if
(
watch_dx_dy
==
-
1
)
{
if
(
getenv
(
"X11VNC_WATCH_DX_DY"
))
{
watch_dx_dy
=
1
;
}
else
{
watch_dx_dy
=
0
;
}
}
X_LOCK
;
if
(
watch_dx_dy
&&
cursor_x
==
x
&&
cursor_y
==
y
)
{
if
(
!
always_inject
&&
cursor_x
==
x
&&
cursor_y
==
y
)
{
;
}
else
if
(
use_xwarppointer
)
{
/*
...
...
@@ -668,7 +659,7 @@ static void pipe_pointer(int mask, int x, int y, rfbClientPtr client) {
* This may queue pointer events rather than sending them immediately
* to the X server. (see update_x11_pointer*())
*/
void
pointer
(
int
mask
,
int
x
,
int
y
,
rfbClientPtr
client
)
{
void
pointer
_event
(
int
mask
,
int
x
,
int
y
,
rfbClientPtr
client
)
{
allowed_input_t
input
;
int
sent
=
0
,
buffer_it
=
0
;
double
now
;
...
...
This diff is collapsed.
Click to expand it.
x11vnc/pointer.h
View file @
067a8816
...
...
@@ -39,7 +39,7 @@ extern int pointer_queued_sent;
extern
void
initialize_pointer_map
(
char
*
pointer_remap
);
extern
void
do_button_mask_change
(
int
mask
,
int
button
);
extern
void
pointer
(
int
mask
,
int
x
,
int
y
,
rfbClientPtr
client
);
extern
void
pointer
_event
(
int
mask
,
int
x
,
int
y
,
rfbClientPtr
client
);
extern
int
check_pipeinput
(
void
);
extern
void
initialize_pipeinput
(
void
);
extern
void
update_x11_pointer_position
(
int
x
,
int
y
);
...
...
This diff is collapsed.
Click to expand it.
x11vnc/remote.c
View file @
067a8816
...
...
@@ -3443,6 +3443,24 @@ char *process_remote_cmd(char *cmd, int stringonly) {
use_xwarppointer
=
0
;
goto
done
;
}
if
(
strstr
(
p
,
"always_inject"
)
==
p
)
{
if
(
query
)
{
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
always_inject
);
goto
qry
;
}
rfbLog
(
"remote_cmd: turning on always_inject mode.
\n
"
);
always_inject
=
1
;
goto
done
;
}
if
(
strstr
(
p
,
"noalways_inject"
)
==
p
)
{
if
(
query
)
{
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
!
always_inject
);
goto
qry
;
}
rfbLog
(
"remote_cmd: turning off always_inject mode.
\n
"
);
always_inject
=
0
;
goto
done
;
}
if
(
strstr
(
p
,
"buttonmap"
)
==
p
)
{
COLON_CHECK
(
"buttonmap:"
)
if
(
query
)
{
...
...
@@ -4426,9 +4444,9 @@ char *process_remote_cmd(char *cmd, int stringonly) {
p
+=
strlen
(
"ptr:"
);
rfbLog
(
"remote_cmd: insert pointer event: %s
\n
"
,
p
);
if
(
sscanf
(
p
,
"%d,%d,%d"
,
&
x
,
&
y
,
&
m
)
==
3
)
{
pointer
(
m
,
x
,
y
,
NULL
);
pointer
_event
(
m
,
x
,
y
,
NULL
);
}
else
if
(
sscanf
(
p
,
"%d,%d"
,
&
x
,
&
y
)
==
2
)
{
pointer
(
m
,
x
,
y
,
NULL
);
pointer
_event
(
m
,
x
,
y
,
NULL
);
}
else
{
rfbLog
(
"remote_cmd: bad ptr:x,y,mask
\n
"
);
}
...
...
@@ -4593,7 +4611,7 @@ char *process_remote_cmd(char *cmd, int stringonly) {
}
else
if
(
strstr
(
res
,
"GRAB_FAIL"
)
&&
try
<
max_tries
)
{
rfbLog
(
"bcx_xattach: failed grab check for '%s': %s. Retrying[%d]...
\n
"
,
p
,
res
,
try
);
free
(
res
);
pointer
(
0
,
dpy_x
/
2
+
try
,
dpy_y
/
2
+
try
,
NULL
);
pointer
_event
(
0
,
dpy_x
/
2
+
try
,
dpy_y
/
2
+
try
,
NULL
);
#if !NO_X11
X_LOCK
;
XFlush_wr
(
dpy
);
...
...
This diff is collapsed.
Click to expand it.
x11vnc/scan.c
View file @
067a8816
...
...
@@ -3550,7 +3550,7 @@ int scan_for_updates(int count_only) {
fb_copy_in_progress
=
0
;
SCAN_FATAL
(
cs
);
if
(
use_threads
&&
pointer_mode
!=
1
)
{
pointer
(
-
1
,
0
,
0
,
NULL
);
pointer
_event
(
-
1
,
0
,
0
,
NULL
);
}
nap_check
(
tile_count
);
return
tile_count
;
...
...
@@ -3637,7 +3637,7 @@ if (tile_count) fprintf(stderr, "XX copytile: %.4f tile_count: %d\n", dnow() -
* tell the pointer handler it can process any queued
* pointer events:
*/
pointer
(
-
1
,
0
,
0
,
NULL
);
pointer
_event
(
-
1
,
0
,
0
,
NULL
);
}
if
(
blackouts
)
{
...
...
This diff is collapsed.
Click to expand it.
x11vnc/screen.c
View file @
067a8816
...
...
@@ -1265,6 +1265,28 @@ void vnc_reflect_got_cursorshape(rfbClient *cl, int xhot, int yhot, int width, i
set_cursor
(
cursor_x
,
cursor_y
,
get_which_cursor
());
}
rfbBool
vnc_reflect_cursor_pos
(
rfbClient
*
cl
,
int
x
,
int
y
)
{
if
(
cl
)
{}
if
(
debug_pointer
)
{
rfbLog
(
"vnc_reflect_cursor_pos: %d %d
\n
"
,
x
,
y
);
}
if
(
unixpw_in_progress
)
{
if
(
debug_pointer
)
{
rfbLog
(
"vnc_reflect_cursor_pos: unixpw_in_progress%d
\n
"
,
unixpw_in_progress
);
}
return
TRUE
;
}
if
(
!
all_clients_initialized
())
{
rfbLog
(
"vnc_reflect_cursor_pos: no send: uninitialized clients
\n
"
);
return
TRUE
;
/* some clients initializing, cannot send */
}
cursor_position
(
x
,
y
);
set_cursor
(
x
,
y
,
get_which_cursor
());
return
TRUE
;
}
static
void
from_libvncclient_CopyRectangleFromRectangle
(
rfbClient
*
client
,
int
src_x
,
int
src_y
,
int
w
,
int
h
,
int
dest_x
,
int
dest_y
)
{
int
i
,
j
;
...
...
@@ -1350,6 +1372,49 @@ rfbBool vnc_reflect_resize(rfbClient *cl) {
return
cl
->
frameBuffer
?
TRUE
:
FALSE
;
}
#ifdef rfbCredentialTypeX509
static
rfbCredential
*
vnc_reflect_get_credential
(
rfbClient
*
client
,
int
type
)
{
char
*
pass
=
getenv
(
"X11VNC_REFLECT_PASSWORD"
);
char
*
user
=
getenv
(
"X11VNC_REFLECT_USER"
);
char
*
cert
=
getenv
(
"X11VNC_REFLECT_CACERT"
);
char
*
ccrl
=
getenv
(
"X11VNC_REFLECT_CACRL"
);
char
*
clic
=
getenv
(
"X11VNC_REFLECT_CLIENTCERT"
);
char
*
clik
=
getenv
(
"X11VNC_REFLECT_CLIENTKEY"
);
int
db
=
0
;
if
(
client
)
{}
if
(
db
)
fprintf
(
stderr
,
"type: %d
\n
"
,
type
);
#ifdef rfbCredentialTypeUser
if
(
type
==
rfbCredentialTypeUser
)
{
if
(
!
pass
&&
!
user
)
{
return
NULL
;
}
else
{
rfbCredential
*
rc
=
(
rfbCredential
*
)
calloc
(
sizeof
(
rfbCredential
),
1
);
rc
->
userCredential
.
username
=
(
user
?
strdup
(
user
)
:
NULL
);
rc
->
userCredential
.
password
=
(
pass
?
strdup
(
pass
)
:
NULL
);
return
rc
;
}
}
#endif
if
(
type
==
rfbCredentialTypeX509
)
{
if
(
db
)
fprintf
(
stderr
,
"cert: %s
\n
"
,
cert
);
if
(
db
)
fprintf
(
stderr
,
"ccrl: %s
\n
"
,
ccrl
);
if
(
db
)
fprintf
(
stderr
,
"clic: %s
\n
"
,
clic
);
if
(
db
)
fprintf
(
stderr
,
"clik: %s
\n
"
,
clik
);
if
(
!
cert
&&
!
ccrl
&&
!
clic
&&
!
clik
)
{
return
NULL
;
}
else
{
rfbCredential
*
rc
=
(
rfbCredential
*
)
calloc
(
sizeof
(
rfbCredential
),
1
);
rc
->
x509Credential
.
x509CACertFile
=
(
cert
?
strdup
(
cert
)
:
NULL
);
rc
->
x509Credential
.
x509CACrlFile
=
(
ccrl
?
strdup
(
ccrl
)
:
NULL
);
rc
->
x509Credential
.
x509ClientCertFile
=
(
clic
?
strdup
(
clic
)
:
NULL
);
rc
->
x509Credential
.
x509ClientKeyFile
=
(
clik
?
strdup
(
clik
)
:
NULL
);
return
rc
;
}
}
return
NULL
;
}
#endif
static
char
*
vnc_reflect_get_password
(
rfbClient
*
client
)
{
char
*
q
,
*
p
,
*
str
=
getenv
(
"X11VNC_REFLECT_PASSWORD"
);
int
len
=
110
;
...
...
@@ -1408,17 +1473,32 @@ char *vnc_reflect_guess(char *str, char **raw_fb_addr) {
}
client
->
appData
.
useRemoteCursor
=
TRUE
;
client
->
canHandleNewFBSize
=
TRUE
;
client
->
HandleCursorPos
=
vnc_reflect_cursor_pos
;
client
->
GotFrameBufferUpdate
=
vnc_reflect_got_update
;
client
->
MallocFrameBuffer
=
vnc_reflect_resize
;
client
->
Bell
=
vnc_reflect_bell
;
#if 0
client->SoftCursorLockArea = NULL;
client->SoftCursorUnlockScreen = NULL;
client->FinishedFrameBufferUpdate = NULL;
client->HandleKeyboardLedState = NULL;
client->HandleTextChat = NULL;
#endif
client
->
GotXCutText
=
vnc_reflect_recv_cuttext
;
client
->
GotCopyRect
=
vnc_reflect_got_copyrect
;
client
->
GotCursorShape
=
vnc_reflect_got_cursorshape
;
client
->
MallocFrameBuffer
=
vnc_reflect_resize
;
client
->
canHandleNewFBSize
=
TRUE
;
client
->
GotFrameBufferUpdate
=
vnc_reflect_got_update
;
client
->
GotCopyRect
=
vnc_reflect_got_copyrect
;
if
(
getenv
(
"X11VNC_REFLECT_PASSWORD"
))
{
client
->
GetPassword
=
vnc_reflect_get_password
;
}
#ifdef rfbCredentialTypeX509
client
->
GetCredential
=
NULL
;
if
(
0
||
getenv
(
"LIBVNCCLIENT_GET_CREDENTIAL"
))
{
client
->
GetCredential
=
vnc_reflect_get_credential
;
}
#endif
if
(
first
)
{
argv
[
argc
++
]
=
"x11vnc_rawfb_vnc"
;
...
...
@@ -3538,7 +3618,7 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
/* event callbacks: */
screen
->
newClientHook
=
new_client
;
screen
->
kbdAddEvent
=
keyboard
;
screen
->
ptrAddEvent
=
pointer
;
screen
->
ptrAddEvent
=
pointer
_event
;
screen
->
setXCutText
=
xcut_receive
;
screen
->
setTranslateFunction
=
set_xlate_wrapper
;
...
...
This diff is collapsed.
Click to expand it.
x11vnc/sslhelper.c
View file @
067a8816
...
...
@@ -4009,7 +4009,11 @@ void accept_openssl(int mode, int presock) {
rfbLog
(
"helper[%d]:
\n
"
,
pid
);
rfbLog
(
"***********************************************************
\n
"
);
rfbLog
(
"SSL: WARNING CLIENT ASKED FOR NONEXISTENT 'VncViewer.class'
\n
"
);
rfbLog
(
"SSL: USER NEEDS TO **RESTART** HIS WEB BROWSER.
\n
"
);
rfbLog
(
"SSL: USER NEEDS TO MAKE SURE THE JAVA PLUGIN IS INSTALLED
\n
"
);
rfbLog
(
"SSL: AND WORKING PROPERLY (e.g. a test-java-plugin page.)
\n
"
);
rfbLog
(
"SSL: AND/OR USER NEEDS TO **RESTART** HIS WEB BROWSER.
\n
"
);
rfbLog
(
"SSL: SOMETIMES THE BROWSER 'REMEMBERS' FAILED APPLET DOWN-
\n
"
);
rfbLog
(
"SSL: LOADS AND RESTARTING IT IS THE ONLY WAY TO FIX THINGS.
\n
"
);
rfbLog
(
"***********************************************************
\n
"
);
rfbLog
(
"
\n
"
);
}
...
...
This diff is collapsed.
Click to expand it.
x11vnc/ssltools.h
View file @
067a8816
...
...
@@ -1151,7 +1151,7 @@ char find_display[] =
" list=
\"
$list
\"
`xauth list | awk '{print $1}' | grep /unix | grep
\"
^${host}
\"
| sed -e 's/^.*:/:/' | sort -n | uniq`
\n
"
"
\n
"
" # check for gdm and kdm non-NFS cookies in /tmp: (and now /var/run/gdm)
\n
"
" for xa in /tmp/.gdm* /tmp/.Xauth* /var/run/gdm
/auth-for-*/database /var/run/gdm
/auth-cookie-*-for-*
\n
"
" for xa in /tmp/.gdm* /tmp/.Xauth* /var/run/gdm
*/auth-for-*/database /var/run/gdm*
/auth-cookie-*-for-*
\n
"
" do
\n
"
" # try to be somewhat careful about the real owner of the file:
\n
"
" if [
\"
X$am_root
\"
=
\"
X1
\"
]; then
\n
"
...
...
@@ -1307,16 +1307,34 @@ char find_display[] =
" if [
\"
X$p
\"
=
\"
X
\"
]; then
\n
"
" continue
\n
"
" fi
\n
"
"
\n
"
" env
\"
$myenv
\"
xdpyinfo -display
\"
$p
\"
>/dev/null 2>&1
\n
"
" rc=$?
\n
"
" if [ $rc != 0 -a
\"
X$XAUTHLOCALHOSTNAME
\"
=
\"
X
\"
]; then
\n
"
"
\n
"
" if [ $rc != 0 ]; then
\n
"
" # guard against libxcb/desktop silliness:
\n
"
" env
\"
$myenv
\"
XAUTHLOCALHOSTNAME=localhost xdpyinfo -display
\"
$p
\"
>/dev/null 2>&1
\n
"
" rc=$?
\n
"
" if [ $rc = 0 ]; then
\n
"
" # better export it for cmds below...
\n
"
" XAUTHLOCALHOSTNAME=localhost
\n
"
" export XAUTHLOCALHOSTNAME
\n
"
" xalhn_save=$XAUTHLOCALHOSTNAME
\n
"
"
\n
"
" if [
\"
X$xalhn_save
\"
!=
\"
X
\"
]; then
\n
"
" # try it again unset
\n
"
" unset XAUTHLOCALHOSTNAME
\n
"
" env
\"
$myenv
\"
xdpyinfo -display
\"
$p
\"
>/dev/null 2>&1
\n
"
" rc=$?
\n
"
" if [ $rc != 0 ]; then
\n
"
" # did not work; put it back
\n
"
" XAUTHLOCALHOSTNAME=$xalhn_save
\n
"
" export XAUTHLOCALHOSTNAME
\n
"
" fi
\n
"
" fi
\n
"
" if [ $rc != 0 -a
\"
X$xalhn_save
\"
!=
\"
Xlocalhost
\"
]; then
\n
"
" # try it again with localhost
\n
"
" env
\"
$myenv
\"
XAUTHLOCALHOSTNAME=localhost xdpyinfo -display
\"
$p
\"
>/dev/null 2>&1
\n
"
" rc=$?
\n
"
" if [ $rc = 0 ]; then
\n
"
" # better export it for cmds below...
\n
"
" XAUTHLOCALHOSTNAME=localhost
\n
"
" export XAUTHLOCALHOSTNAME
\n
"
" fi
\n
"
" fi
\n
"
" fi
\n
"
"
\n
"
...
...
@@ -1460,11 +1478,14 @@ char create_display[] =
"
\n
"
"findfree() {
\n
"
" try=20
\n
"
"
sry=9
9
\n
"
"
dpymax=7
9
\n
"
" if [
\"
X$X11VNC_CREATE_STARTING_DISPLAY_NUMBER
\"
!=
\"
X
\"
]; then
\n
"
" try=$X11VNC_CREATE_STARTING_DISPLAY_NUMBER
\n
"
" sry=`expr $try + 99`
\n
"
" fi
\n
"
" if [
\"
X$X11VNC_CREATE_MAX_DISPLAYS
\"
!=
\"
X
\"
]; then
\n
"
" dpymax=$X11VNC_CREATE_MAX_DISPLAYS
\n
"
" fi
\n
"
" sry=`expr $try + $dpymax`
\n
"
" n=
\"\"\n
"
" nsout=
\"\"\n
"
" if [
\"
X$have_netstat
\"
!=
\"
X
\"
]; then
\n
"
...
...
This diff is collapsed.
Click to expand it.
x11vnc/tkx11vnc
View file @
067a8816
...
...
@@ -238,6 +238,7 @@ Pointer
buttonmap:
--
xwarppointer
always_inject
Misc
=GD-C:full,icon,tray WindowView:
...
...
This diff is collapsed.
Click to expand it.
x11vnc/tkx11vnc.h
View file @
067a8816
...
...
@@ -249,6 +249,7 @@ char gui_code[] = "";
" buttonmap:
\n
"
" --
\n
"
" xwarppointer
\n
"
" always_inject
\n
"
"
\n
"
"Misc
\n
"
" =GD-C:full,icon,tray WindowView:
\n
"
...
...
This diff is collapsed.
Click to expand it.
x11vnc/unixpw.c
View file @
067a8816
...
...
@@ -1512,6 +1512,52 @@ static void progress_skippy(void) {
usleep
(
50
*
1000
);
}
void
check_unixpw_userprefs
(
void
)
{
char
*
prefs
=
getenv
(
"FD_USERPREFS"
);
if
(
keep_unixpw_user
==
NULL
||
keep_unixpw_opts
==
NULL
)
{
return
;
}
#if LIBVNCSERVER_HAVE_PWD_H
if
(
prefs
!=
NULL
&&
!
strchr
(
prefs
,
'/'
))
{
struct
passwd
*
pw
=
getpwnam
(
keep_unixpw_user
);
if
(
pw
!=
NULL
)
{
char
*
file
;
FILE
*
f
;
file
=
(
char
*
)
malloc
(
strlen
(
pw
->
pw_dir
)
+
1
+
strlen
(
prefs
)
+
1
);
sprintf
(
file
,
"%s/%s"
,
pw
->
pw_dir
,
prefs
);
f
=
fopen
(
file
,
"r"
);
if
(
f
)
{
char
*
t
,
*
q
,
buf
[
1024
];
memset
(
buf
,
0
,
sizeof
(
buf
));
fgets
(
buf
,
1024
,
f
);
fclose
(
f
);
q
=
strchr
(
buf
,
'\n'
);
if
(
q
)
*
q
=
'\0'
;
q
=
strchr
(
buf
,
'\r'
);
if
(
q
)
*
q
=
'\0'
;
rfbLog
(
"read user prefs %s: %s
\n
"
,
file
,
buf
);
if
(
buf
[
0
]
==
'#'
)
buf
[
0
]
=
'\0'
;
t
=
(
char
*
)
malloc
(
strlen
(
keep_unixpw_opts
)
+
1
+
strlen
(
buf
)
+
1
);
sprintf
(
t
,
"%s,%s"
,
keep_unixpw_opts
,
buf
);
free
(
keep_unixpw_opts
);
keep_unixpw_opts
=
t
;
}
else
{
rfbLog
(
"could not read user prefs %s
\n
"
,
file
);
rfbLogPerror
(
"fopen"
);
}
free
(
file
);
}
}
#endif
}
void
unixpw_verify_screen
(
char
*
user
,
char
*
pass
)
{
int
x
,
y
;
...
...
@@ -1569,7 +1615,9 @@ if (db) fprintf(stderr, "unixpw_verify: '%s' '%s'\n", user, db > 1 ? pass : "***
}
else
{
keep_unixpw_opts
=
strdup
(
""
);
}
check_unixpw_userprefs
();
}
if
(
colon
)
*
colon
=
':'
;
return
;
...
...
@@ -1759,6 +1807,7 @@ void unixpw_keystroke(rfbBool down, rfbKeySym keysym, int init) {
}
else
{
keep_unixpw_opts
=
strdup
(
""
);
}
check_unixpw_userprefs
();
}
unixpw_system_greeter_active
=
2
;
set_env
(
"X11VNC_XDM_ONLY"
,
"1"
);
...
...
This diff is collapsed.
Click to expand it.
x11vnc/user.c
View file @
067a8816
...
...
@@ -1985,8 +1985,9 @@ static char *build_create_cmd(char *cmd, int *saw_xdmcp, char *usslpeer, char *t
fdxdmcpif
[
0
]
=
'\0'
;
cdout
[
0
]
=
'\0'
;
if
(
unixpw
&&
keep_unixpw_opts
&&
keep_unixpw_opts
[
0
]
!=
'\0'
)
{
if
(
unixpw
&&
keep_unixpw_opts
&&
!
getenv
(
"X11VNC_NO_UNIXPW_OPTS"
)
)
{
char
*
q
,
*
p
,
*
t
=
strdup
(
keep_unixpw_opts
);
if
(
strstr
(
t
,
"gnome"
))
{
sprintf
(
fdsess
,
"gnome"
);
}
else
if
(
strstr
(
t
,
"kde"
))
{
...
...
This diff is collapsed.
Click to expand it.
x11vnc/userinput.c
View file @
067a8816
...
...
@@ -3008,7 +3008,7 @@ if (db) fprintf(stderr, "check_xrecord: BUTTON-UP-KEEP-GOING: %.3f/%.3f %d/%d %
pointer_queued_sent
=
0
;
last_x
=
cursor_x
;
last_y
=
cursor_y
;
pointer
(
-
1
,
0
,
0
,
NULL
);
pointer
_event
(
-
1
,
0
,
0
,
NULL
);
pointer_flush_delay
=
0
.
0
;
if
(
xrecording
&&
pointer_queued_sent
&&
button_mask_save
&&
...
...
@@ -4565,7 +4565,7 @@ if (db) fprintf(stderr, "INTERIOR\n");
/* -threads support for check_wireframe() is rough... crash? */
if
(
use_threads
)
{
/* purge any stored up pointer events: */
pointer
(
-
1
,
0
,
0
,
NULL
);
pointer
_event
(
-
1
,
0
,
0
,
NULL
);
}
if
(
cursor_noshape_updates_clients
(
screen
))
{
...
...
This diff is collapsed.
Click to expand it.
x11vnc/x11vnc.1
View file @
067a8816
.\" This file was automatically generated from x11vnc -help output.
.TH X11VNC "1" "
May
2010" "x11vnc " "User Commands"
.TH X11VNC "1" "
September
2010" "x11vnc " "User Commands"
.SH NAME
x11vnc - allow VNC connections to real X11 displays
version: 0.9.1
1, lastmod: 2010-05-08
version: 0.9.1
3, lastmod: 2010-09-10
.SH SYNOPSIS
.B x11vnc
[OPTION]...
...
...
@@ -487,6 +487,12 @@ disconnects, opposite of \fB-forever.\fR This is the Default.
.IP
Keep listening for more connections rather than exiting
as soon as the first client(s) disconnect. Same as \fB-many\fR
.IP
To get the standard non-shared VNC behavior where when
a new VNC client connects the existing VNC client is
dropped use: \fB-nevershared\fR \fB-forever\fR This method can
also be used to guard against hung TCP connections that
do not go away.
.PP
\fB-loop\fR
.IP
...
...
@@ -617,6 +623,11 @@ Rendezvous, Bonjour). Depending on your setup, you
may need to start avahi-daemon and open udp port 5353
in your firewall.
.IP
You can set X11VNC_AVAHI_NAME, X11VNC_AVAHI_HOST,
and/or X11VNC_AVAHI_PORT environment variables
to override the default values. For example:
\fB-env\fR X11VNC_AVAHI_NAME=wally
.IP
If the avahi API cannot be found at build time, a helper
program like avahi-
.IR publish (1)
...
...
@@ -1329,7 +1340,7 @@ virtual terminal of the X server.
.IP
Have the FINDDISPLAY program list all of your displays
(i.e. all the X displays on the local machine that you
have access rights to).
have access rights to).
x11vnc then exits.
.PP
\fB-findauth\fR \fI[disp]\fR
.IP
...
...
@@ -1337,7 +1348,7 @@ Apply the \fB-find/-finddpy\fR heuristics to try to guess
the XAUTHORITY file for DISPLAY 'disp'. If 'disp'
is not supplied, then the value in the \fB-display\fR on
the cmdline is used; failing that $DISPLAY is used;
and failing that ":0" is used.
and failing that ":0" is used.
x11vnc then exits.
.IP
If nothing is printed out, that means no XAUTHORITY was
found for 'disp'; i.e. failure. If "XAUTHORITY="
...
...
@@ -1611,8 +1622,19 @@ be ignored if the FD_TAG env. var. is already set or
if the viewer-side supplied value is not completely
composed of alphanumeric or '_' or '-' characters.
.IP
User preferences file: Instead of having the user type
in geom=WxH,... etc. every time he logs in to find
or create his X session, if you set FD_USERPREFS to
a string that does not contain the "/" character,
then the user's home directory is prepended to that
string and if the file exists its first line is read
and appended to any options he supplied at the login:
prompt. For example \fB-env\fR FD_USERPREFS=.x11vnc_create
and the user put "geom=1600x1200" in his
~/.x11vnc_create file.
.IP
To troubleshoot the FINDCREATEDISPLAY mechanism,
set the following env. var. to an ouput log file,
set the following env. var. to an ou
t
put log file,
e.g \fB-env\fR CREATE_DISPLAY_OUTPUT=/tmp/mydebug.txt
.IP
To disable the option setting set the environment
...
...
@@ -1706,6 +1728,8 @@ The option "\fB-create\fR" is an alias for this mode.
.IP
It will start looking for an open display number at :20
Override via X11VNC_CREATE_STARTING_DISPLAY_NUMBER=n
By default 80 X displays are allowed (i.e. going to :99)
Override via X11VNC_CREATE_MAX_DISPLAYS=n
.IP
By default FINDCREATEDISPLAY will try Xvfb and then
Xdummy:
...
...
@@ -2268,6 +2292,7 @@ commands 'openssl ca \fB-revoke\fR ...' and 'openssl ca
.IP
Generate your own Certificate Authority private key,
certificate, and other files in directory [dir].
x11vnc then exits.
.IP
If [dir] is not supplied, a \fB-ssldir\fR setting is used,
or otherwise ~/.vnc/certs is used.
...
...
@@ -2279,7 +2304,7 @@ program must be installed on the system and available
in PATH.
.IP
After the CA files and directories are created the
command exits; the VNC server is not run.
x11vnc
command exits; the VNC server is not run.
.IP
You will be prompted for information to put into the CA
certificate. The info does not have to be accurate just
...
...
@@ -2311,8 +2336,8 @@ key pair signed by the CA created previously with
program must be installed
on the system and available in PATH.
.IP
After the Certificate is generated
the command exits;
the
VNC server is not run.
After the Certificate is generated
x11vnc exits; the
VNC server is not run.
.IP
The type of key to be generated is the string \fItype\fR.
It is either "server" (i.e. for use by x11vnc) or
...
...
@@ -2431,7 +2456,7 @@ x11vnc \fB-sslGenCert\fR client roger
scp ~/.vnc/certs/clients/roger.pem somehost:.
rm ~/.vnc/certs/clients/roger.pem
.IP
x11vnc is then started with the
the
option \fB-sslverify\fR
x11vnc is then started with the option \fB-sslverify\fR
~/.vnc/certs/clients/roger.crt (or simply \fB-sslverify\fR
roger), and on the viewer user on somehost could do
for example:
...
...
@@ -2460,7 +2485,7 @@ The
.IR openssl (1)
program must be installed on the system
and available in PATH. After the Key file is encrypted
the command exits; the VNC server is not run.
the
x11vnc
command exits; the VNC server is not run.
.IP
Examples:
x11vnc \fB-sslEncKey\fR /path/to/foo.pem
...
...
@@ -2476,6 +2501,9 @@ The
program must be in PATH. Basically the
command "openssl x509 \fB-text"\fR is run on the pem.
.IP
After the info is printed the x11vnc command exits;
the VNC server is not run.
.IP
The "SAVE" notation described under \fB-ssl\fR applies
as well.
.IP
...
...
@@ -2503,15 +2531,15 @@ also be lowercase, e.g. "list".
\fB-sslDelCert\fR \fIpem\fR
.IP
Prompts you to delete all .crt .pem .key .req files
associated with [pem].
"SAVE" and lookups as in
\fB-sslCertInfo\fR apply as well.
associated with [pem].
x11vnc then exits. "SAVE"
and lookups as in
\fB-sslCertInfo\fR apply as well.
.PP
\fB-sslScripts\fR
.IP
Prints out both the 'genCA' and 'genCert' x11vnc
openssl wrapper scripts for you to examine, modify, etc.
The scripts are printed to stdout and then the
program
exits.
The scripts are printed to stdout and then the
x11vnc
program
exits.
.PP
\fB-stunnel\fR \fI[pem]\fR
.IP
...
...
@@ -3142,6 +3170,9 @@ endianness. Ignored unless \fB-noshm\fR is set.
Do not use the new copy_tiles() framebuffer mechanism,
just use 1 shm tile for polling. Limits shm segments
used to 3.
.IP
To disable any automatic shm reduction set the
env. var. X11VNC_NO_LIMIT_SHM.
.PP
\fB-solid\fR \fI[color]\fR
.IP
...
...
@@ -3457,7 +3488,7 @@ Nevertheless your capitalized letters come in over
the wire and are applied correctly to the x11vnc-side
X server. Note this mode probably won't do what you
want in \fB-nomodtweak\fR mode. Also, a kludge for KP_n
digits is always done i
t
this mode: they are mapped to
digits is always done i
n
this mode: they are mapped to
regular digit keysyms. See also \fB-capslock\fR above.
The default is \fB-noskip_lockkeys.\fR
.PP
...
...
@@ -3818,6 +3849,36 @@ It is also sometimes needed on XINERAMA displays and is
enabled by default if XINERAMA is found to be active.
To prevent this, use \fB-noxwarppointer.\fR
.PP
\fB-always_inject\fR
.IP
Even if there is no displacement (dx = dy = 0) for a
VNC mouse event force the pointer to the indicated x,y
position anyway. Recent (2009) gui toolkits (gnome)
have problems with x11vnc's original mouse input
injection method. So x11vnc's mouse input injection
method has been modified. To regain the OLD behavior
use this option: \fB-always_inject.\fR Then x11vnc will
always force positioning the mouse to the x,y position
even if that position has not changed since the previous
VNC input event.
.IP
The first place this problem was noticed was in gnome
terminal: if you pressed and released mouse button 3, a
menu was posted and then its first element 'New Terminal
Window' was activated. This was because x11vnc injected
the mouse position twice: once on ButtonPress and again
on ButtonRelease. The toolkit interpreted the 2nd one
as mouse motion even though the mouse hadn't moved.
So now by default x11vnc tries to avoid injecting the
2nd one.
.IP
Note that with the new default x11vnc will be oblivious
to applications moving the pointer (warping) or the
user at the physical display moving it. So it might,
e.g., inject ButtonRelease at the wrong position.
If this (or similar scenarios) causes problems in your
environment, specify \fB-always_inject\fR for the old method.
.PP
\fB-buttonmap\fR \fIstring\fR
.IP
String to remap mouse buttons. Format: IJK-LMN, this
...
...
@@ -4336,7 +4397,7 @@ tiny window for XGrabServer deadlock. This is only if
the whole-server grabbing application expects mouse or
keyboard input before releasing the grab. It is usually
a window manager that does this. x11vnc takes care to
avoid the
the
problem, but if caught x11vnc will freeze.
avoid the problem, but if caught x11vnc will freeze.
Without \fB-grab_buster,\fR the only solution is to go the
physical display and give it some input to satisfy the
grabbing app. Or manually kill and restart the window
...
...
@@ -5334,7 +5395,7 @@ keystroke insertion code based on a US keyboard.
.PP
\fB-gui\fR \fI[gui-opts]\fR
.IP
Start up a simple tcl/tk gui based on the
the
remote
Start up a simple tcl/tk gui based on the remote
control options \fB-remote/-query\fR described below.
Requires the "wish" program to be installed on the
machine. "gui-opts" is not required: the default
...
...
@@ -5466,9 +5527,9 @@ Remotely control some aspects of an already running
x11vnc server. "\fB-R\fR" and "\fB-r\fR" are aliases for
"\fB-remote\fR". After the remote control command is
sent to the running server the 'x11vnc \fB-remote\fR ...'
command exits. You can often use the \fB-query\fR command
(see below) to see if the x11vnc server processed you
r
\fB-remote\fR command.
x11vnc command exits. You can often use the \fB-query\fR
command (see below) to see if the x11vnc serve
r
processed your
\fB-remote\fR command.
.IP
The default communication channel is that of X
properties (specifically X11VNC_REMOTE), and so this
...
...
@@ -5886,6 +5947,10 @@ xwarp enable \fB-xwarppointer\fR mode.
.IP
noxwarp disable \fB-xwarppointer\fR mode.
.IP
always_inject enable \fB-always_inject\fR mode.
.IP
noalways_inject disable \fB-always_inject\fR mode.
.IP
buttonmap:str set \fB-buttonmap\fR "str", empty to disable
.IP
dragging disable \fB-nodragging\fR mode.
...
...
@@ -6376,11 +6441,11 @@ nobell sendbell sel nosel primary noprimary setprimary
nosetprimary clipboard noclipboard setclipboard
nosetclipboard seldir cursorshape nocursorshape
cursorpos nocursorpos cursor_drag nocursor_drag cursor
show_cursor noshow_cursor nocursor arrow xfixes
noxfixes xdamage noxdamage xd_area xd_mem alphacut
alpha
frac alpharemove noalpharemove
alphablend
noalphablend xwarppointer xwarp noxwarppointer
no
xwarp
buttonmap dragging nodragging ncache_cr
show_cursor noshow_cursor nocursor arrow xfixes
noxfixes
xdamage noxdamage xd_area xd_mem alphacut alphafrac
alpha
remove noalpharemove alphablend no
alphablend
xwarppointer xwarp noxwarppointer noxwarp always_inject
no
always_inject
buttonmap dragging nodragging ncache_cr
noncache_cr ncache_no_moveraise noncache_no_moveraise
ncache_no_dtchange noncache_no_dtchange
ncache_no_rootpixmap noncache_no_rootpixmap
...
...
This diff is collapsed.
Click to expand it.
x11vnc/x11vnc.c
View file @
067a8816
...
...
@@ -992,6 +992,9 @@ static int limit_shm(void) {
if
(
UT
.
sysname
==
NULL
)
{
return
0
;
}
if
(
getenv
(
"X11VNC_NO_LIMIT_SHM"
))
{
return
0
;
}
if
(
!
strcmp
(
UT
.
sysname
,
"SunOS"
))
{
char
*
r
=
UT
.
release
;
if
(
*
r
==
'5'
&&
*
(
r
+
1
)
==
'.'
)
{
...
...
@@ -1554,6 +1557,7 @@ static void print_settings(int try_http, int bg, char *gui_str) {
fprintf
(
stderr
,
" cursorshape:%d
\n
"
,
cursor_shape_updates
);
fprintf
(
stderr
,
" cursorpos: %d
\n
"
,
cursor_pos_updates
);
fprintf
(
stderr
,
" xwarpptr: %d
\n
"
,
use_xwarppointer
);
fprintf
(
stderr
,
" alwaysinj: %d
\n
"
,
always_inject
);
fprintf
(
stderr
,
" buttonmap: %s
\n
"
,
pointer_remap
?
pointer_remap
:
"null"
);
fprintf
(
stderr
,
" dragging: %d
\n
"
,
show_dragging
);
...
...
@@ -2280,7 +2284,7 @@ int main(int argc, char* argv[]) {
}
if
(
!
strcmp
(
arg
,
"-reflect"
))
{
CHECK_ARGC
raw_fb_str
=
(
char
*
)
malloc
(
4
+
strlen
(
argv
[
i
])
+
1
);
raw_fb_str
=
(
char
*
)
malloc
(
4
+
strlen
(
argv
[
i
+
1
])
+
1
);
sprintf
(
raw_fb_str
,
"vnc:%s"
,
argv
[
++
i
]);
shared
=
1
;
continue
;
...
...
@@ -3397,6 +3401,10 @@ int main(int argc, char* argv[]) {
got_noxwarppointer
=
1
;
continue
;
}
if
(
!
strcmp
(
arg
,
"-always_inject"
))
{
always_inject
=
1
;
continue
;
}
if
(
!
strcmp
(
arg
,
"-buttonmap"
))
{
CHECK_ARGC
pointer_remap
=
strdup
(
argv
[
++
i
]);
...
...
This diff is collapsed.
Click to expand it.
x11vnc/x11vnc_defs.c
View file @
067a8816
...
...
@@ -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.1
1 lastmod: 2010-05-08
"
;
char
lastmod
[]
=
"0.9.1
3 lastmod: 2010-09-10
"
;
/* X display info */
...
...
This diff is collapsed.
Click to expand it.
x11vnc/xevents.c
View file @
067a8816
...
...
@@ -148,25 +148,34 @@ void initialize_clipboard_atom(void) {
18 gdm_string: Gdm-simple-greeter
24 gdm_string: metacity
36 gdm_string: gdm-simple-greeter
kdmgreet
Kdmgreet
*/
static
int
gdm_string
(
char
*
str
)
{
static
int
dm_string
(
char
*
str
)
{
char
*
s
=
getenv
(
"DEBUG_WM_RUNNING"
);
if
(
str
==
NULL
)
{
return
0
;
}
if
(
str
[
0
]
==
'\0'
)
{
return
0
;
}
if
(
0
)
fprintf
(
stderr
,
"
g
dm_string: %s
\n
"
,
str
);
if
(
0
)
fprintf
(
stderr
,
"dm_string: %s
\n
"
,
str
);
if
(
strstr
(
str
,
"gdm-"
)
==
str
||
strstr
(
str
,
"Gdm-"
)
==
str
)
{
if
(
strstr
(
str
,
"-greeter"
)
!=
NULL
)
{
if
(
s
)
rfbLog
(
"dm_string: %s
\n
"
,
str
);
return
1
;
}
}
if
(
!
strcmp
(
str
,
"kdmgreet"
)
||
!
strcmp
(
str
,
"Kdmgreet"
))
{
if
(
s
)
rfbLog
(
"dm_string: %s
\n
"
,
str
);
return
1
;
}
return
0
;
}
static
int
g
dm_still_running
(
void
)
{
static
int
dm_still_running
(
void
)
{
#if NO_X11
return
0
;
#else
...
...
@@ -195,7 +204,7 @@ static int gdm_still_running(void) {
char
*
name
=
NULL
;
Window
w
=
winlist
[
i
];
if
(
XFetchName
(
dpy
,
w
,
&
name
)
&&
name
!=
NULL
)
{
saw_gdm_name
+=
g
dm_string
(
name
);
saw_gdm_name
+=
dm_string
(
name
);
XFree_wr
(
name
);
}
classhint
->
res_name
=
NULL
;
...
...
@@ -203,12 +212,12 @@ static int gdm_still_running(void) {
if
(
XGetClassHint
(
dpy
,
w
,
classhint
))
{
name
=
classhint
->
res_name
;
if
(
name
!=
NULL
)
{
saw_gdm_name
+=
g
dm_string
(
name
);
saw_gdm_name
+=
dm_string
(
name
);
XFree_wr
(
name
);
}
name
=
classhint
->
res_class
;
if
(
name
!=
NULL
)
{
saw_gdm_name
+=
g
dm_string
(
name
);
saw_gdm_name
+=
dm_string
(
name
);
XFree_wr
(
name
);
}
}
...
...
@@ -230,6 +239,7 @@ static int gdm_still_running(void) {
static
int
wm_running
(
void
)
{
char
*
s
=
getenv
(
"DEBUG_WM_RUNNING"
);
int
ret
=
0
;
RAWFB_RET
(
0
)
#if NO_X11
return
0
;
...
...
@@ -238,30 +248,36 @@ static int wm_running(void) {
* Unfortunately with recent GDM (v2.28), they run gnome-session,
* dbus-launch, and metacity for the Login greeter! So the simple
* XInternAtom checks below no longer work.
* We also see a similar thing with KDE.
*/
if
(
g
dm_still_running
())
{
if
(
dm_still_running
())
{
return
0
;
}
/* we are xlocked. */
if
(
XInternAtom
(
dpy
,
"_NET_SUPPORTED"
,
True
)
!=
None
)
{
if
(
s
)
rfbLog
(
"wm is running (_NET_SUPPORTED).
\n
"
);
ret
urn
1
;
ret
++
;
}
if
(
XInternAtom
(
dpy
,
"_WIN_PROTOCOLS"
,
True
)
!=
None
)
{
if
(
s
)
rfbLog
(
"wm is running (_WIN_PROTOCOLS).
\n
"
);
ret
urn
1
;
ret
++
;
}
if
(
XInternAtom
(
dpy
,
"_XROOTPMAP_ID"
,
True
)
!=
None
)
{
if
(
s
)
rfbLog
(
"wm is running (_XROOTPMAP_ID).
\n
"
);
ret
urn
1
;
ret
++
;
}
if
(
XInternAtom
(
dpy
,
"_MIT_PRIORITY_COLORS"
,
True
)
!=
None
)
{
if
(
s
)
rfbLog
(
"wm is running (_MIT_PRIORITY_COLORS).
\n
"
);
ret
++
;
}
if
(
!
ret
)
{
if
(
s
)
rfbLog
(
"wm is not running.
\n
"
);
return
0
;
}
else
{
if
(
s
)
rfbLog
(
"wm is running ret=%d.
\n
"
,
ret
);
return
1
;
}
if
(
s
)
rfbLog
(
"wm is not running.
\n
"
);
return
0
;
#endif
/* NO_X11 */
}
...
...
@@ -307,6 +323,9 @@ int guess_dm_gone(int t1, int t2) {
}
X_UNLOCK
;
}
if
(
getenv
(
"DEBUG_WM_RUNNING"
))
{
rfbLog
(
"guess_dm_gone: wait=%d
\n
"
,
wait
);
}
/* we assume they've logged in OK after wait seconds... */
if
(
time
(
NULL
)
<=
tcheck
+
wait
)
{
return
0
;
...
...
@@ -365,7 +384,7 @@ static void initialize_xevents(int reset) {
* We try to delay creating selwin until we are past
* any GDM, (or other KillInitClients=true) manager.
*/
if
(
guess_dm_gone
(
5
,
45
))
{
if
(
guess_dm_gone
(
8
,
45
))
{
X_LOCK
;
selwin
=
XCreateSimpleWindow
(
dpy
,
rootwin
,
3
,
2
,
1
,
1
,
0
,
0
,
0
);
X_UNLOCK
;
...
...
@@ -400,7 +419,7 @@ static void initialize_xevents(int reset) {
* we are past the display manager, due to Xorg bug:
* http://bugs.freedesktop.org/show_bug.cgi?id=18451
*/
if
(
guess_dm_gone
(
5
,
45
))
{
if
(
guess_dm_gone
(
8
,
45
))
{
initialize_xfixes
();
did_xfixes
=
1
;
if
(
!
quiet
)
rfbLog
(
"called initialize_xfixes()
\n
"
);
...
...
This diff is collapsed.
Click to expand it.
x11vnc/xwrappers.c
View file @
067a8816
...
...
@@ -1320,22 +1320,25 @@ Display *XOpenDisplay_wr(char *display_name) {
d
=
XOpenDisplay
(
display_name
);
if
(
db
)
fprintf
(
stderr
,
"XOpenDisplay_wr: %s %p
\n
"
,
display_name
,
(
void
*
)
d
);
if
(
d
==
NULL
)
{
if
(
!
getenv
(
"NO_XAUTHLOCALHOSTNAME"
))
{
if
(
!
getenv
(
"XAUTHLOCALHOSTNAME"
)
)
{
if
(
d
==
NULL
&&
!
getenv
(
"NO_XAUTHLOCALHOSTNAME"
)
)
{
char
*
xalhn
=
getenv
(
"XAUTHLOCALHOSTNAME"
);
if
(
1
||
!
xalhn
)
{
rfbLog
(
"XOpenDisplay(
\"
%s
\"
) failed.
\n
"
,
display_name
?
display_name
:
""
);
rfbLog
(
"Trying again with XAUTHLOCALHOSTNAME=localhost ...
\n
"
);
set_env
(
"XAUTHLOCALHOSTNAME"
,
"localhost"
);
d
=
XOpenDisplay
(
display_name
);
if
(
0
)
{
if
(
d
==
NULL
&&
xalhn
)
{
char
*
ptr
=
getenv
(
"XAUTHLOCALHOSTNAME"
);
if
(
ptr
)
{
*
(
ptr
-
2
)
=
'_'
;
/* yow */
rfbLog
(
"XOpenDisplay(
\"
%s
\"
) failed.
\n
"
,
display_name
?
display_name
:
""
);
rfbLog
(
"Trying again with unset XAUTHLOCALHOSTNAME ...
\n
"
);
d
=
XOpenDisplay
(
display_name
);
}
}
}
}
}
xauth_raw
(
0
);
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment