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
0016cd42
Commit
0016cd42
authored
18 years ago
by
runge
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x11vnc: -grabalways, -forcedpms, -clientdpms, -noserverdpms, -loopbg, -svc, -xdmsvc
parent
90d96b97
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
2299 additions
and
1651 deletions
+2299
-1651
ChangeLog
x11vnc/ChangeLog
+6
-0
README
x11vnc/README
+1725
-1520
connections.c
x11vnc/connections.c
+3
-1
help.c
x11vnc/help.c
+120
-45
options.c
x11vnc/options.c
+3
-0
options.h
x11vnc/options.h
+3
-0
pm.c
x11vnc/pm.c
+15
-1
remote.c
x11vnc/remote.c
+82
-0
sslhelper.c
x11vnc/sslhelper.c
+18
-0
ssltools.h
x11vnc/ssltools.h
+71
-26
tkx11vnc
x11vnc/tkx11vnc
+7
-0
tkx11vnc.h
x11vnc/tkx11vnc.h
+7
-0
unixpw.c
x11vnc/unixpw.c
+2
-2
user.c
x11vnc/user.c
+8
-2
x11vnc.1
x11vnc/x11vnc.1
+142
-46
x11vnc.c
x11vnc/x11vnc.c
+66
-3
x11vnc.h
x11vnc/x11vnc.h
+3
-0
x11vnc_defs.c
x11vnc/x11vnc_defs.c
+4
-1
xevents.c
x11vnc/xevents.c
+12
-3
xevents.h
x11vnc/xevents.h
+1
-0
xwrappers.c
x11vnc/xwrappers.c
+1
-1
No files found.
x11vnc/ChangeLog
View file @
0016cd42
2007-02-11 Karl Runge <runge@karlrunge.com>
* x11vnc: add -grabalways, -forcedpms, -clientdpms, and
-noserverdpms (ultravnc viewer) for improvements in
the still approximate server locking. Add -loopbg
and -svc, -xdmsvc aliases. Bug fix create_display.
2007-02-10 Karl Runge <runge@karlrunge.com>
2007-02-10 Karl Runge <runge@karlrunge.com>
* x11vnc: watch things like textchat, etc. more carefully
* x11vnc: watch things like textchat, etc. more carefully
in unixpw state. Monitor broken XDAMAGE reports when
in unixpw state. Monitor broken XDAMAGE reports when
...
...
This diff is collapsed.
Click to expand it.
x11vnc/README
View file @
0016cd42
This source diff could not be displayed because it is too large. You can
view the blob
instead.
This diff is collapsed.
Click to expand it.
x11vnc/connections.c
View file @
0016cd42
...
@@ -2377,7 +2377,9 @@ void check_new_clients(void) {
...
@@ -2377,7 +2377,9 @@ void check_new_clients(void) {
return
;
return
;
}
}
if
(
grab_kbd
||
grab_ptr
)
{
if
(
grab_always
)
{
;
}
else
if
(
grab_kbd
||
grab_ptr
)
{
static
double
last_force
=
0
.
0
;
static
double
last_force
=
0
.
0
;
if
(
client_count
!=
last_count
||
dnow
()
>
last_force
+
0
.
25
)
{
if
(
client_count
!=
last_count
||
dnow
()
>
last_force
+
0
.
25
)
{
int
q
=
(
client_count
==
last_count
);
int
q
=
(
client_count
==
last_count
);
...
...
This diff is collapsed.
Click to expand it.
x11vnc/help.c
View file @
0016cd42
...
@@ -306,14 +306,32 @@ void print_help(int mode) {
...
@@ -306,14 +306,32 @@ void print_help(int mode) {
" disconnects, opposite of -forever. This is the Default.
\n
"
" disconnects, opposite of -forever. This is the Default.
\n
"
"-forever Keep listening for more connections rather than exiting
\n
"
"-forever Keep listening for more connections rather than exiting
\n
"
" as soon as the first client(s) disconnect. Same as -many
\n
"
" as soon as the first client(s) disconnect. Same as -many
\n
"
"
\n
"
"-loop Create an outer loop restarting the x11vnc process
\n
"
"-loop Create an outer loop restarting the x11vnc process
\n
"
" whenever it terminates. -bg and -inetd are ignored in
\n
"
" whenever it terminates. -bg and -inetd are ignored
\n
"
" this mode. Useful for continuing even if the X server
\n
"
" in this mode (however see -loopbg below).
\n
"
" terminates and restarts (you will need permission to
\n
"
"
\n
"
" reconnect of course). Use, e.g., -loop100 to sleep
\n
"
" Useful for continuing even if the X server terminates
\n
"
" 100 millisecs between restarts, etc. Default is 2000ms
\n
"
" and restarts (at that moment the process will need
\n
"
" (i.e. 2 secs) Use, e.g. -loop300,5 to sleep 300 ms
\n
"
" permission to reconnect to the new X server of course).
\n
"
" and only loop 5 times.
\n
"
"
\n
"
" Use, e.g., -loop100 to sleep 100 millisecs between
\n
"
" restarts, etc. Default is 2000ms (i.e. 2 secs) Use,
\n
"
" e.g. -loop300,5 to sleep 300 ms and only loop 5 times.
\n
"
"
\n
"
" If -loopbg (plus any numbers) is specified instead,
\n
"
" the
\"
-bg
\"
option is implied and the mode approximates
\n
"
" inetd(8) usage to some degree. In this case when
\n
"
" it goes into the background any listening sockets
\n
"
" (i.e. ports 5900, 5800) are closed, so the next one
\n
"
" in the loop can use them. This mode will only be of
\n
"
" use if a VNC client (the only client for that process)
\n
"
" is already connected before the process goes into the
\n
"
" background, for example, usage of -display WAIT:..,
\n
"
" -svc, and -connect can make use of this
\"
poor man's
\"\n
"
" inetd mode. The default wait time is 500ms in this
\n
"
" mode. This usage could use useful: -svc -loopbg
\n
"
"
\n
"
"-timeout n Exit unless a client connects within the first n seconds
\n
"
"-timeout n Exit unless a client connects within the first n seconds
\n
"
" after startup.
\n
"
" after startup.
\n
"
"-inetd Launched by inetd(8): stdio instead of listening socket.
\n
"
"-inetd Launched by inetd(8): stdio instead of listening socket.
\n
"
...
@@ -445,6 +463,11 @@ void print_help(int mode) {
...
@@ -445,6 +463,11 @@ void print_help(int mode) {
" act on the local user's input. Again, some degree of
\n
"
" act on the local user's input. Again, some degree of
\n
"
" cooperation from the person at the display is assumed.
\n
"
" cooperation from the person at the display is assumed.
\n
"
"
\n
"
"
\n
"
"-grabalways Apply both -grabkbd and -grabptr even when no VNC
\n
"
" viewers are connected. If you only want one of them,
\n
"
" use the -R remote control to turn the other back on,
\n
"
" e.g. -R nograbptr.
\n
"
"
\n
"
"-viewpasswd string Supply a 2nd password for view-only logins. The -passwd
\n
"
"-viewpasswd string Supply a 2nd password for view-only logins. The -passwd
\n
"
" (full-access) password must also be supplied.
\n
"
" (full-access) password must also be supplied.
\n
"
"
\n
"
"
\n
"
...
@@ -688,6 +711,14 @@ void print_help(int mode) {
...
@@ -688,6 +711,14 @@ void print_help(int mode) {
" in addition to this option.
\n
"
" in addition to this option.
\n
"
"
\n
"
"
\n
"
#endif
#endif
"-svc Terminal services mode. Also
\"
-service
\"
, implies
\n
"
" -display WAIT:cmd=FINDCREATEDISPLAY-Xvfb -unixpw
\n
"
" -users unixpw= -ssl SAVE
\n
"
"
\n
"
"-xdmsvc Terminal services mode. Also
\"
-xdm_service
\"
, implies
\n
"
" -display WAIT:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp -unixpw
\n
"
" -users unixpw= -ssl SAVE
\n
"
"
\n
"
"-display WAIT:... A special usage mode for the normal -display option.
\n
"
"-display WAIT:... A special usage mode for the normal -display option.
\n
"
" Useful with -unixpw, but can be used independently
\n
"
" Useful with -unixpw, but can be used independently
\n
"
" of it. If the display string begins with WAIT: then
\n
"
" of it. If the display string begins with WAIT: then
\n
"
...
@@ -792,7 +823,7 @@ void print_help(int mode) {
...
@@ -792,7 +823,7 @@ void print_help(int mode) {
" Where /.../x11vnc is the full path to x11vnc.
\n
"
" Where /.../x11vnc is the full path to x11vnc.
\n
"
" It is used in the Apache SSL-portal example (see FAQ).
\n
"
" It is used in the Apache SSL-portal example (see FAQ).
\n
"
"
\n
"
"
\n
"
" An
experimental
option is WAIT:cmd=FINDCREATEDISPLAY
\n
"
" An
interesting
option is WAIT:cmd=FINDCREATEDISPLAY
\n
"
" that is like FINDDISPLAY in that is uses the same method
\n
"
" that is like FINDDISPLAY in that is uses the same method
\n
"
" to find an existing display. However, if it does not
\n
"
" to find an existing display. However, if it does not
\n
"
" find one it will try to *start* up an X server session
\n
"
" find one it will try to *start* up an X server session
\n
"
...
@@ -807,11 +838,12 @@ void print_help(int mode) {
...
@@ -807,11 +838,12 @@ void print_help(int mode) {
" and only works on Linux. Xvfb is available on most
\n
"
" and only works on Linux. Xvfb is available on most
\n
"
" platforms and does not require root.
\n
"
" platforms and does not require root.
\n
"
"
\n
"
"
\n
"
" When x11vnc exits (i.e. user disconnects) the X server
\n
"
" When x11vnc exits (i.e. user disconnects) the X
\n
"
" session stays running in the background. Presumably
\n
"
" server session stays running in the background.
\n
"
" the FINDDISPLAY will find it next time. The user must
\n
"
" The FINDDISPLAY will find it directly next time.
\n
"
" exit the X session in the usual way for it to terminate
\n
"
" The user must exit the X session in the usual way for
\n
"
" (or kill the X server process if all else fails).
\n
"
" it to terminate (or kill the X server process if all
\n
"
" else fails).
\n
"
"
\n
"
"
\n
"
" So this is a somewhat odd mode for x11vnc in that it
\n
"
" So this is a somewhat odd mode for x11vnc in that it
\n
"
" will start up and poll virtual X servers! This can
\n
"
" will start up and poll virtual X servers! This can
\n
"
...
@@ -848,7 +880,14 @@ void print_help(int mode) {
...
@@ -848,7 +880,14 @@ void print_help(int mode) {
" for kdm in kdmrc: Enable=true in section [Xdmcp]
\n
"
" for kdm in kdmrc: Enable=true in section [Xdmcp]
\n
"
" for xdm in xdm-config: DisplayManager.requestPort: 177
\n
"
" for xdm in xdm-config: DisplayManager.requestPort: 177
\n
"
"
\n
"
"
\n
"
" See the shorthand options above
\"
-svc
\"
and
\"
-xdmsvc
\"\n
"
" that specify the above options for some useful cases.
\n
"
"
\n
"
#ifndef NO_SSL_OR_UNIXPW
#ifndef NO_SSL_OR_UNIXPW
"-nossl Disable the -ssl option (see below). Since -ssl is off
\n
"
" by default -nossl would only be used on the commandline
\n
"
" to unset any *earlier* -ssl option (or -svc...)
\n
"
"
\n
"
"-ssl [pem] Use the openssl library (www.openssl.org) to provide a
\n
"
"-ssl [pem] Use the openssl library (www.openssl.org) to provide a
\n
"
" built-in encrypted SSL tunnel between VNC viewers and
\n
"
" built-in encrypted SSL tunnel between VNC viewers and
\n
"
" x11vnc. This requires libssl support to be compiled
\n
"
" x11vnc. This requires libssl support to be compiled
\n
"
...
@@ -2649,6 +2688,32 @@ void print_help(int mode) {
...
@@ -2649,6 +2688,32 @@ void print_help(int mode) {
" for details. -nodpms is basically the same as running
\n
"
" for details. -nodpms is basically the same as running
\n
"
"
\"
xset dpms force on
\"
periodically. Default: %s
\n
"
"
\"
xset dpms force on
\"
periodically. Default: %s
\n
"
"
\n
"
"
\n
"
"-forcedpms If the system supports the DPMS (Display Power
\n
"
" Management Signaling) extension, then try to keep the
\n
"
" monitor in a powered off state. This is to prevent
\n
"
" nosey people at the physical display from viewing
\n
"
" what is on the screen. Be sure lock the screen before
\n
"
" disconnecting.
\n
"
"
\n
"
" This method is far from bullet proof, e.g. suppose
\n
"
" someone attaches a non-DPMS monitor, or loads the
\n
"
" machine so that there is a gap of time before x11vnc
\n
"
" restores the powered off state? On many machines if
\n
"
" he floods it with keyboard and mouse input he can see
\n
"
" flashes of what is on the screen before the DPMS off
\n
"
" state is reestablished. For this to work securely
\n
"
" there would need to be support in the X server to do
\n
"
" this exactly rather than approximately with DPMS.
\n
"
"
\n
"
"-clientdpms As -forcedpms but only when VNC clients are connected.
\n
"
"
\n
"
"-noserverdpms The UltraVNC ServerInput extension is supported.
\n
"
" This allows the VNC viewer to click a button that will
\n
"
" cause the server (x11vnc) to try to disable keyboard
\n
"
" and mouse input at the physical display and put the
\n
"
" monitor in dpms powered off state. Use this option to
\n
"
" skip powering off the monitor.
\n
"
"
\n
"
"-noxdamage Do not use the X DAMAGE extension to detect framebuffer
\n
"
"-noxdamage Do not use the X DAMAGE extension to detect framebuffer
\n
"
" changes even if it is available. Use -xdamage if your
\n
"
" changes even if it is available. Use -xdamage if your
\n
"
" default is to have it off.
\n
"
" default is to have it off.
\n
"
...
@@ -3339,6 +3404,8 @@ void print_help(int mode) {
...
@@ -3339,6 +3404,8 @@ void print_help(int mode) {
" nograbkbd disable -grabkbd mode.
\n
"
" nograbkbd disable -grabkbd mode.
\n
"
" grabptr enable -grabptr mode.
\n
"
" grabptr enable -grabptr mode.
\n
"
" nograbptr disable -grabptr mode.
\n
"
" nograbptr disable -grabptr mode.
\n
"
" grabalways enable -grabalways mode.
\n
"
" nograbalways disable -grabalways mode.
\n
"
" client_input:str set the K, M, B -input on a per-client
\n
"
" client_input:str set the K, M, B -input on a per-client
\n
"
" basis. select which client as for
\n
"
" basis. select which client as for
\n
"
" disconnect, e.g. client_input:host:MB
\n
"
" disconnect, e.g. client_input:host:MB
\n
"
...
@@ -3503,6 +3570,12 @@ void print_help(int mode) {
...
@@ -3503,6 +3570,12 @@ void print_help(int mode) {
" nofbpm enable -nofbpm mode.
\n
"
" nofbpm enable -nofbpm mode.
\n
"
" dpms disable -nodpms mode.
\n
"
" dpms disable -nodpms mode.
\n
"
" nodpms enable -nodpms mode.
\n
"
" nodpms enable -nodpms mode.
\n
"
" forcedpms enable -forcedpms mode.
\n
"
" noforcedpms disable -forcedpms mode.
\n
"
" clientdpms enable -clientdpms mode.
\n
"
" noclientdpms disable -clientdpms mode.
\n
"
" noserverdpms enable -noserverdpms mode.
\n
"
" serverdpms disable -noserverdpms mode.
\n
"
" xdamage enable xdamage polling hints.
\n
"
" xdamage enable xdamage polling hints.
\n
"
" noxdamage disable xdamage polling hints.
\n
"
" noxdamage disable xdamage polling hints.
\n
"
" xd_area:A set -xd_area max pixel area to
\"
A
\"\n
"
" xd_area:A set -xd_area max pixel area to
\"
A
\"\n
"
...
@@ -3608,38 +3681,40 @@ void print_help(int mode) {
...
@@ -3608,38 +3681,40 @@ void print_help(int mode) {
" listen lookup nolookup accept afteraccept gone shm
\n
"
" listen lookup nolookup accept afteraccept gone shm
\n
"
" noshm flipbyteorder noflipbyteorder onetile noonetile
\n
"
" noshm flipbyteorder noflipbyteorder onetile noonetile
\n
"
" solid_color solid nosolid blackout xinerama noxinerama
\n
"
" solid_color solid nosolid blackout xinerama noxinerama
\n
"
" xtrap noxtrap xrandr noxrandr xrandr_mode rotate
\n
"
" xtrap noxtrap xrandr noxrandr xrandr_mode rotate padgeom
\n
"
" padgeom quiet q noquiet modtweak nomodtweak xkb noxkb
\n
"
" quiet q noquiet modtweak nomodtweak xkb noxkb capslock
\n
"
" capslock nocapslock skip_lockkeys noskip_lockkeys
\n
"
" nocapslock skip_lockkeys noskip_lockkeys skip_keycodes
\n
"
" skip_keycodes sloppy_keys nosloppy_keys skip_dups
\n
"
" sloppy_keys nosloppy_keys skip_dups noskip_dups
\n
"
" noskip_dups add_keysyms noadd_keysyms clear_mods
\n
"
" add_keysyms noadd_keysyms clear_mods noclear_mods
\n
"
" noclear_mods clear_keys noclear_keys remap repeat
\n
"
" clear_keys noclear_keys remap repeat norepeat fb nofb
\n
"
" norepeat fb nofb bell nobell sel nosel primary
\n
"
" bell nobell sel nosel primary noprimary setprimary
\n
"
" noprimary setprimary nosetprimary clipboard noclipboard
\n
"
" nosetprimary clipboard noclipboard setclipboard
\n
"
" setclipboard nosetclipboard seldir cursorshape
\n
"
" nosetclipboard seldir cursorshape nocursorshape
\n
"
" nocursorshape cursorpos nocursorpos cursor_drag
\n
"
" cursorpos nocursorpos cursor_drag nocursor_drag cursor
\n
"
" nocursor_drag cursor show_cursor noshow_cursor
\n
"
" show_cursor noshow_cursor nocursor arrow xfixes
\n
"
" nocursor arrow xfixes noxfixes xdamage noxdamage
\n
"
" noxfixes xdamage noxdamage xd_area xd_mem alphacut
\n
"
" xd_area xd_mem alphacut alphafrac alpharemove
\n
"
" alphafrac alpharemove noalpharemove alphablend
\n
"
" noalpharemove alphablend noalphablend xwarppointer
\n
"
" noalphablend xwarppointer xwarp noxwarppointer
\n
"
" xwarp noxwarppointer noxwarp buttonmap dragging
\n
"
" noxwarp buttonmap dragging nodragging ncache_cr
\n
"
" nodragging ncache_cr noncache_cr ncache_no_moveraise
\n
"
" noncache_cr ncache_no_moveraise noncache_no_moveraise
\n
"
" noncache_no_moveraise ncache_no_dtchange
\n
"
" ncache_no_dtchange noncache_no_dtchange
\n
"
" noncache_no_dtchange ncache_no_rootpixmap
\n
"
" ncache_no_rootpixmap noncache_no_rootpixmap
\n
"
" noncache_no_rootpixmap ncache_reset_rootpixmap
\n
"
" ncache_reset_rootpixmap ncache_keep_anims
\n
"
" ncache_keep_anims noncache_keep_anims ncache noncache
\n
"
" noncache_keep_anims ncache_old_wm noncache_old_wm
\n
"
" ncache_size wireframe_mode wireframe wf nowireframe nowf
\n
"
" ncache noncache ncache_size wireframe_mode wireframe wf
\n
"
" wireframelocal wfl nowireframelocal nowfl wirecopyrect
\n
"
" nowireframe nowf wireframelocal wfl nowireframelocal
\n
"
" wcr nowirecopyrect nowcr scr_area scr_skip scr_inc
\n
"
" nowfl wirecopyrect wcr nowirecopyrect nowcr scr_area
\n
"
" scr_keys scr_term scr_keyrepeat scr_parms scrollcopyrect
\n
"
" scr_skip scr_inc scr_keys scr_term scr_keyrepeat
\n
"
" scr noscrollcopyrect noscr fixscreen noxrecord xrecord
\n
"
" scr_parms scrollcopyrect scr noscrollcopyrect noscr
\n
"
" reset_record pointer_mode pm input_skip allinput
\n
"
" fixscreen noxrecord xrecord reset_record pointer_mode pm
\n
"
" noallinput input grabkbd nograbkbd grabptr nograbptr
\n
"
" input_skip allinput noallinput input grabkbd nograbkbd
\n
"
" client_input ssltimeout speeds wmdt debug_pointer dp
\n
"
" grabptr nograbptr grabalways nograbalways client_input
\n
"
" nodebug_pointer nodp debug_keyboard dk nodebug_keyboard
\n
"
" ssltimeout speeds wmdt debug_pointer dp nodebug_pointer
\n
"
" nodk deferupdate defer wait_ui wait_bog nowait_bog
\n
"
" nodp debug_keyboard dk nodebug_keyboard nodk deferupdate
\n
"
" slow_fb wait readtimeout nap nonap sb screen_blank
\n
"
" defer wait_ui wait_bog nowait_bog slow_fb wait
\n
"
" fbpm nofbpm dpms nodpms fs gaps grow fuzz snapfb
\n
"
" readtimeout nap nonap sb screen_blank fbpm nofbpm dpms
\n
"
" nodpms clientdpms noclientdpms forcedpms noforcedpms
\n
"
" noserverdpms serverdpms fs gaps grow fuzz snapfb
\n
"
" nosnapfb rawfb uinput_accel uinput_thresh uinput_reset
\n
"
" nosnapfb rawfb uinput_accel uinput_thresh uinput_reset
\n
"
" uinput_always progressive rfbport http nohttp httpport
\n
"
" uinput_always progressive rfbport http nohttp httpport
\n
"
" httpdir enablehttpproxy noenablehttpproxy alwaysshared
\n
"
" httpdir enablehttpproxy noenablehttpproxy alwaysshared
\n
"
...
...
This diff is collapsed.
Click to expand it.
x11vnc/options.c
View file @
0016cd42
...
@@ -356,6 +356,9 @@ int watch_fbpm = 0;
...
@@ -356,6 +356,9 @@ int watch_fbpm = 0;
#endif
#endif
int
watch_dpms
=
0
;
/* -dpms */
int
watch_dpms
=
0
;
/* -dpms */
int
force_dpms
=
0
;
int
client_dpms
=
0
;
int
no_ultra_dpms
=
0
;
int
watch_selection
=
1
;
/* normal selection/cutbuffer maintenance */
int
watch_selection
=
1
;
/* normal selection/cutbuffer maintenance */
int
watch_primary
=
1
;
/* more dicey, poll for changes in PRIMARY */
int
watch_primary
=
1
;
/* more dicey, poll for changes in PRIMARY */
...
...
This diff is collapsed.
Click to expand it.
x11vnc/options.h
View file @
0016cd42
...
@@ -261,6 +261,9 @@ extern int all_input;
...
@@ -261,6 +261,9 @@ extern int all_input;
extern
int
watch_fbpm
;
extern
int
watch_fbpm
;
extern
int
watch_dpms
;
extern
int
watch_dpms
;
extern
int
force_dpms
;
extern
int
client_dpms
;
extern
int
no_ultra_dpms
;
extern
int
watch_selection
;
extern
int
watch_selection
;
extern
int
watch_primary
;
extern
int
watch_primary
;
...
...
This diff is collapsed.
Click to expand it.
x11vnc/pm.c
View file @
0016cd42
...
@@ -123,16 +123,22 @@ void set_dpms_mode(char *mode) {
...
@@ -123,16 +123,22 @@ void set_dpms_mode(char *mode) {
want
=
DPMSModeStandby
;
want
=
DPMSModeStandby
;
}
else
if
(
!
strcmp
(
mode
,
"suspend"
))
{
}
else
if
(
!
strcmp
(
mode
,
"suspend"
))
{
want
=
DPMSModeSuspend
;
want
=
DPMSModeSuspend
;
}
else
if
(
!
strcmp
(
mode
,
"enable"
))
{
DPMSEnable
(
dpy
);
return
;
}
else
if
(
!
strcmp
(
mode
,
"disable"
))
{
DPMSDisable
(
dpy
);
return
;
}
else
{
}
else
{
return
;
return
;
}
}
if
(
DPMSInfo
(
dpy
,
&
level
,
&
enabled
))
{
if
(
DPMSInfo
(
dpy
,
&
level
,
&
enabled
))
{
char
*
from
;
char
*
from
;
fprintf
(
stderr
,
"DPMSInfo level: %d enabled: %d
\n
"
,
level
,
enabled
);
if
(
enabled
&&
level
!=
want
)
{
if
(
enabled
&&
level
!=
want
)
{
XErrorHandler
old_handler
=
XSetErrorHandler
(
trap_xerror
);
XErrorHandler
old_handler
=
XSetErrorHandler
(
trap_xerror
);
trapped_xerror
=
0
;
trapped_xerror
=
0
;
rfbLog
(
"DPMSInfo level: %d enabled: %d
\n
"
,
level
,
enabled
);
if
(
level
==
DPMSModeStandby
)
{
if
(
level
==
DPMSModeStandby
)
{
from
=
"DPMSModeStandby"
;
from
=
"DPMSModeStandby"
;
}
else
if
(
level
==
DPMSModeSuspend
)
{
}
else
if
(
level
==
DPMSModeSuspend
)
{
...
@@ -188,6 +194,14 @@ static void check_dpms(void) {
...
@@ -188,6 +194,14 @@ static void check_dpms(void) {
init_dpms
=
1
;
init_dpms
=
1
;
}
}
if
(
force_dpms
||
(
client_dpms
&&
client_count
))
{
static
int
last_enable
=
0
;
if
(
time
(
NULL
)
>
last_enable
)
{
set_dpms_mode
(
"enable"
);
last_enable
=
time
(
NULL
);
}
set_dpms_mode
(
"off"
);
}
if
(
!
watch_dpms
)
{
if
(
!
watch_dpms
)
{
return
;
return
;
}
}
...
...
This diff is collapsed.
Click to expand it.
x11vnc/remote.c
View file @
0016cd42
...
@@ -3287,6 +3287,9 @@ char *process_remote_cmd(char *cmd, int stringonly) {
...
@@ -3287,6 +3287,9 @@ char *process_remote_cmd(char *cmd, int stringonly) {
goto
qry
;
goto
qry
;
}
}
grab_kbd
=
1
;
grab_kbd
=
1
;
if
(
grab_always
)
{
adjust_grabs
(
1
,
0
);
}
rfbLog
(
"enabled grab_kbd
\n
"
);
rfbLog
(
"enabled grab_kbd
\n
"
);
}
else
if
(
!
strcmp
(
p
,
"nograbkbd"
))
{
}
else
if
(
!
strcmp
(
p
,
"nograbkbd"
))
{
int
orig
=
grab_kbd
;
int
orig
=
grab_kbd
;
...
@@ -3303,12 +3306,16 @@ char *process_remote_cmd(char *cmd, int stringonly) {
...
@@ -3303,12 +3306,16 @@ char *process_remote_cmd(char *cmd, int stringonly) {
#endif
#endif
}
}
rfbLog
(
"disabled grab_kbd
\n
"
);
rfbLog
(
"disabled grab_kbd
\n
"
);
}
else
if
(
!
strcmp
(
p
,
"grabptr"
))
{
}
else
if
(
!
strcmp
(
p
,
"grabptr"
))
{
if
(
query
)
{
if
(
query
)
{
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
grab_ptr
);
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
grab_ptr
);
goto
qry
;
goto
qry
;
}
}
grab_ptr
=
1
;
grab_ptr
=
1
;
if
(
grab_always
)
{
adjust_grabs
(
1
,
0
);
}
rfbLog
(
"enabled grab_ptr
\n
"
);
rfbLog
(
"enabled grab_ptr
\n
"
);
}
else
if
(
!
strcmp
(
p
,
"nograbptr"
))
{
}
else
if
(
!
strcmp
(
p
,
"nograbptr"
))
{
int
orig
=
grab_ptr
;
int
orig
=
grab_ptr
;
...
@@ -3326,6 +3333,36 @@ char *process_remote_cmd(char *cmd, int stringonly) {
...
@@ -3326,6 +3333,36 @@ char *process_remote_cmd(char *cmd, int stringonly) {
}
}
rfbLog
(
"disabled grab_ptr
\n
"
);
rfbLog
(
"disabled grab_ptr
\n
"
);
}
else
if
(
!
strcmp
(
p
,
"grabalways"
))
{
if
(
query
)
{
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
grab_always
);
goto
qry
;
}
grab_ptr
=
1
;
grab_kbd
=
1
;
grab_always
=
1
;
adjust_grabs
(
1
,
0
);
rfbLog
(
"enabled grab_always
\n
"
);
}
else
if
(
!
strcmp
(
p
,
"nograbalways"
))
{
int
orig
=
grab_always
;
if
(
query
)
{
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
!
grab_always
);
goto
qry
;
}
grab_ptr
=
0
;
grab_kbd
=
0
;
grab_always
=
0
;
if
(
orig
&&
dpy
)
{
#if !NO_X11
X_LOCK
;
XUngrabKeyboard
(
dpy
,
CurrentTime
);
XUngrabPointer
(
dpy
,
CurrentTime
);
X_UNLOCK
;
#endif
}
adjust_grabs
(
0
,
0
);
rfbLog
(
"disabled grab_always
\n
"
);
}
else
if
(
strstr
(
p
,
"client_input"
)
==
p
)
{
}
else
if
(
strstr
(
p
,
"client_input"
)
==
p
)
{
NOTAPP
NOTAPP
COLON_CHECK
(
"client_input:"
)
COLON_CHECK
(
"client_input:"
)
...
@@ -3583,6 +3620,51 @@ char *process_remote_cmd(char *cmd, int stringonly) {
...
@@ -3583,6 +3620,51 @@ char *process_remote_cmd(char *cmd, int stringonly) {
rfbLog
(
"remote_cmd: turning on -nodpms mode.
\n
"
);
rfbLog
(
"remote_cmd: turning on -nodpms mode.
\n
"
);
watch_dpms
=
1
;
watch_dpms
=
1
;
}
else
if
(
!
strcmp
(
p
,
"clientdpms"
))
{
if
(
query
)
{
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
client_dpms
);
goto
qry
;
}
rfbLog
(
"remote_cmd: turning on -clientdpms mode.
\n
"
);
client_dpms
=
1
;
}
else
if
(
!
strcmp
(
p
,
"noclientdpms"
))
{
if
(
query
)
{
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
!
client_dpms
);
goto
qry
;
}
rfbLog
(
"remote_cmd: turning off -clientdpms mode.
\n
"
);
client_dpms
=
0
;
}
else
if
(
!
strcmp
(
p
,
"forcedpms"
))
{
if
(
query
)
{
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
force_dpms
);
goto
qry
;
}
rfbLog
(
"remote_cmd: turning on -forcedpms mode.
\n
"
);
force_dpms
=
1
;
}
else
if
(
!
strcmp
(
p
,
"noforcedpms"
))
{
if
(
query
)
{
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
!
force_dpms
);
goto
qry
;
}
rfbLog
(
"remote_cmd: turning off -forcedpms mode.
\n
"
);
force_dpms
=
0
;
}
else
if
(
!
strcmp
(
p
,
"noserverdpms"
))
{
if
(
query
)
{
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
no_ultra_dpms
);
goto
qry
;
}
rfbLog
(
"remote_cmd: turning on -noserverdpms mode.
\n
"
);
no_ultra_dpms
=
1
;
}
else
if
(
!
strcmp
(
p
,
"serverdpms"
))
{
if
(
query
)
{
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
!
no_ultra_dpms
);
goto
qry
;
}
rfbLog
(
"remote_cmd: turning off -noserverdpms mode.
\n
"
);
no_ultra_dpms
=
0
;
}
else
if
(
strstr
(
p
,
"fs"
)
==
p
)
{
}
else
if
(
strstr
(
p
,
"fs"
)
==
p
)
{
COLON_CHECK
(
"fs:"
)
COLON_CHECK
(
"fs:"
)
if
(
query
)
{
if
(
query
)
{
...
...
This diff is collapsed.
Click to expand it.
x11vnc/sslhelper.c
View file @
0016cd42
...
@@ -1458,6 +1458,24 @@ void accept_openssl(int mode) {
...
@@ -1458,6 +1458,24 @@ void accept_openssl(int mode) {
}
}
close
(
i
);
close
(
i
);
}
}
if
(
screen
->
listenSock
>=
0
)
{
close
(
screen
->
listenSock
);
FD_CLR
(
screen
->
listenSock
,
&
screen
->
allFds
);
screen
->
listenSock
=
-
1
;
}
if
(
screen
->
httpListenSock
>=
0
)
{
close
(
screen
->
httpListenSock
);
FD_CLR
(
screen
->
httpListenSock
,
&
screen
->
allFds
);
screen
->
httpListenSock
=
-
1
;
}
if
(
openssl_sock
>=
0
)
{
close
(
openssl_sock
);
openssl_sock
=
-
1
;
}
if
(
https_sock
>=
0
)
{
close
(
https_sock
);
https_sock
=
-
1
;
}
/*
/*
* sadly, we are a long lived child and so the large
* sadly, we are a long lived child and so the large
...
...
This diff is collapsed.
Click to expand it.
x11vnc/ssltools.h
View file @
0016cd42
...
@@ -869,6 +869,8 @@ char create_display[] =
...
@@ -869,6 +869,8 @@ char create_display[] =
"#!/bin/sh
\n
"
"#!/bin/sh
\n
"
"
\n
"
"
\n
"
"#CREATE_DISPLAY_OUTPUT=/tmp/cdo.txt
\n
"
"#CREATE_DISPLAY_OUTPUT=/tmp/cdo.txt
\n
"
"
\n
"
"CREATE_DISPLAY_OUTPUT=/tmp/cdo.$USER.txt
\n
"
"if [
\"
X$CREATE_DISPLAY_OUTPUT
\"
!=
\"
X
\"
]; then
\n
"
"if [
\"
X$CREATE_DISPLAY_OUTPUT
\"
!=
\"
X
\"
]; then
\n
"
" if [
\"
X$CREATE_DISPLAY_EXEC
\"
=
\"
X
\"
]; then
\n
"
" if [
\"
X$CREATE_DISPLAY_EXEC
\"
=
\"
X
\"
]; then
\n
"
" CREATE_DISPLAY_EXEC=1
\n
"
" CREATE_DISPLAY_EXEC=1
\n
"
...
@@ -1033,29 +1035,56 @@ char create_display[] =
...
@@ -1033,29 +1035,56 @@ char create_display[] =
" $have_xauth -f $authfile nextract - `hostname`:$N | $have_xauth nmerge -
\n
"
" $have_xauth -f $authfile nextract - `hostname`:$N | $have_xauth nmerge -
\n
"
" fi
\n
"
" fi
\n
"
"
\n
"
"
\n
"
" result=0
\n
"
" ns=4
\n
"
" if [
\"
X$use_xdmcp_query
\"
=
\"
X1
\"
]; then
\n
"
" if [
\"
X$use_xdmcp_query
\"
=
\"
X1
\"
]; then
\n
"
" # we cannot use -nolisten tcp
\n
"
" # we cannot use -nolisten tcp
\n
"
" #echo
\"
$* -from localhost -once -query localhost
\"\n
"
" #nohup $* -from localhost -once -query localhost 1>&2 &
\n
"
" echo
\"
$* -once -query localhost
\"
1>&2
\n
"
" echo
\"
$* -once -query localhost
\"
1>&2
\n
"
" nohup $* -once -query localhost 1>&2 &
\n
"
" if [
\"
X$have_root
\"
!=
\"
X
\"
]; then
\n
"
" pid=$!
\n
"
" nohup $* -once -query localhost 1>&2 &
\n
"
" elif [
\"
X$have_startx
\"
!=
\"
X
\"
]; then
\n
"
" else
\n
"
" echo
\"
$have_startx $sess -- $* -nolisten tcp -auth $authfile
\"
1>&2
\n
"
" nohup sh -c
\"
(sleep $ns; $* -once -query localhost -auth $authfile)
\"
1>&2 &
\n
"
" $have_startx $sess -- $* -nolisten tcp -auth $authfile 1>&2 &
\n
"
" ns=0
\n
"
" result=1
\n
"
" fi
\n
"
" pid=$!
\n
"
" pid=$!
\n
"
" elif [
\"
X$have_xinit
\"
!=
\"
X
\"
]; then
\n
"
" elif [
\"
X$have_startx
\"
!=
\"
X
\"
-o
\"
X$have_xinit
\"
!=
\"
X
\"
]; then
\n
"
" echo
\"
$have_xinit $sess -- $* -nolisten tcp -auth $authfile
\"
1>&2
\n
"
" if [
\"
X$have_startx
\"
!=
\"
X
\"
]; then
\n
"
" $have_xinit $sess -- $* -nolisten tcp -auth $authfile 1>&2 &
\n
"
" sxcmd=$have_startx
\n
"
" else
\n
"
" sxcmd=$have_xinit
\n
"
" fi
\n
"
" echo
\"
$sxcmd $sess -- $* -nolisten tcp -auth $authfile
\"
1>&2
\n
"
" if [
\"
X$have_root
\"
!=
\"
X
\"
]; then
\n
"
" $sxcmd $sess -- $* -nolisten tcp -auth $authfile 1>&2 &
\n
"
" else
\n
"
" nohup sh -c
\"
(sleep $ns; $sxcmd $sess -- $* -nolisten tcp -auth $authfile)
\"
1>&2 &
\n
"
" ns=0
\n
"
" result=1
\n
"
" fi
\n
"
" pid=$!
\n
"
" pid=$!
\n
"
" else
\n
"
" else
\n
"
" echo
\"
$* -nolisten tcp -auth $authfile
\"
1>&2
\n
"
" echo
\"
$* -nolisten tcp -auth $authfile
\"
1>&2
\n
"
" nohup $* -nolisten tcp -auth $authfile 1>&2 &
\n
"
" if [
\"
X$have_root
\"
!=
\"
X
\"
]; then
\n
"
" pid=$!
\n
"
" nohup $* -nolisten tcp -auth $authfile 1>&2 &
\n
"
" nohup $sess 1>&2 &
\n
"
" pid=$!
\n
"
" sleep 2
\n
"
" nohup $sess 1>&2 &
\n
"
" else
\n
"
" nohup sh -c
\"
(sleep $ns; $* -nolisten tcp -auth $authfile)
\"
1>&2 &
\n
"
" pid=$!
\n
"
" sleep 2
\n
"
" nohup sh -c
\"
(sleep $ns; $sess)
\"
1>&2 &
\n
"
" ns=0
\n
"
" result=1
\n
"
" fi
\n
"
" fi
\n
"
" fi
\n
"
" sleep 4
\n
"
" sleep $ns
\n
"
" if kill -0 $pid; then
\n
"
" if [
\"
X$result
\"
=
\"
X1
\"
]; then
\n
"
" :
\n
"
" elif [ -d /proc/$pid ]; then
\n
"
" result=1
\n
"
" elif kill -0 $pid; then
\n
"
" result=1
\n
"
" result=1
\n
"
" else
\n
"
" else
\n
"
" result=0
\n
"
" result=0
\n
"
...
@@ -1123,17 +1152,33 @@ char create_display[] =
...
@@ -1123,17 +1152,33 @@ char create_display[] =
" #have_startx=$save_have_startx
\n
"
" #have_startx=$save_have_startx
\n
"
"
\n
"
"
\n
"
" if [
\"
X$result
\"
=
\"
X1
\"
-a
\"
X$have_xmodmap
\"
!=
\"
X
\"
]; then
\n
"
" if [
\"
X$result
\"
=
\"
X1
\"
-a
\"
X$have_xmodmap
\"
!=
\"
X
\"
]; then
\n
"
" (
\n
"
" if [
\"
X$have_root
\"
=
\"
X
\"
]; then
\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
keycode any = Shift_R
\"
\n
"
" nohup sh -c
\"
(
\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
add Shift = Shift_L Shift_R
\"
\n
"
" sleep 6;
\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
keycode any = Control_R
\"
\n
"
" $have_xmodmap -display :$N -e 'keycode any = Shift_R'
\\\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
add Control = Control_L Control_R
\"
\n
"
" -e 'add Shift = Shift_L Shift_R'
\\\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
keycode any = Alt_L
\"
\n
"
" -e 'keycode any = Control_R'
\\\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
keycode any = Alt_R
\"
\n
"
" -e 'add Control = Control_L Control_R'
\\\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
keycode any = Meta_L
\"
\n
"
" -e 'keycode any = Alt_L'
\\\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
clear Mod1
\"
\n
"
" -e 'keycode any = Alt_R'
\\\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
add Mod1 = Alt_L Alt_R Meta_L
\"
\n
"
" -e 'keycode any = Meta_L'
\\\n
"
" ) 1>&2 &
\n
"
" -e 'clear Mod1'
\\\n
"
" -e 'add Mod1 = Alt_L Alt_R Meta_L'
\\\n
"
" )
\"
1>&2 &
\n
"
" else
\n
"
" (
\n
"
" sleep 1;
\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
"
" ) 1>&2 &
\n
"
" fi
\n
"
" fi
\n
"
" fi
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"
\n
"
...
...
This diff is collapsed.
Click to expand it.
x11vnc/tkx11vnc
View file @
0016cd42
...
@@ -213,6 +213,7 @@ Pointer
...
@@ -213,6 +213,7 @@ Pointer
=D nocursorshape
=D nocursorshape
--
--
noxfixes
noxfixes
cursor_drag
=GAL AlphaBlending::
=GAL AlphaBlending::
noalphablend
noalphablend
alphacut:
alphacut:
...
@@ -257,6 +258,8 @@ Misc
...
@@ -257,6 +258,8 @@ Misc
=D nobell
=D nobell
nolookup
nolookup
bg
bg
=S loop
=S loopbg
=-C:ignore,exit sigpipe:
=-C:ignore,exit sigpipe:
=0 inetd
=0 inetd
...
@@ -329,6 +332,10 @@ Permissions
...
@@ -329,6 +332,10 @@ Permissions
timeout:
timeout:
grabkbd
grabkbd
grabptr
grabptr
grabalways
forcedpms
clientdpms
noserverdpms
=GAL LOFF
=GAL LOFF
Tuning
Tuning
...
...
This diff is collapsed.
Click to expand it.
x11vnc/tkx11vnc.h
View file @
0016cd42
...
@@ -224,6 +224,7 @@ char gui_code[] = "";
...
@@ -224,6 +224,7 @@ char gui_code[] = "";
" =D nocursorshape
\n
"
" =D nocursorshape
\n
"
" --
\n
"
" --
\n
"
" noxfixes
\n
"
" noxfixes
\n
"
" cursor_drag
\n
"
" =GAL AlphaBlending::
\n
"
" =GAL AlphaBlending::
\n
"
" noalphablend
\n
"
" noalphablend
\n
"
" alphacut:
\n
"
" alphacut:
\n
"
...
@@ -268,6 +269,8 @@ char gui_code[] = "";
...
@@ -268,6 +269,8 @@ char gui_code[] = "";
" =D nobell
\n
"
" =D nobell
\n
"
" nolookup
\n
"
" nolookup
\n
"
" bg
\n
"
" bg
\n
"
" =S loop
\n
"
" =S loopbg
\n
"
" =-C:ignore,exit sigpipe:
\n
"
" =-C:ignore,exit sigpipe:
\n
"
" =0 inetd
\n
"
" =0 inetd
\n
"
"
\n
"
"
\n
"
...
@@ -340,6 +343,10 @@ char gui_code[] = "";
...
@@ -340,6 +343,10 @@ char gui_code[] = "";
" timeout:
\n
"
" timeout:
\n
"
" grabkbd
\n
"
" grabkbd
\n
"
" grabptr
\n
"
" grabptr
\n
"
" grabalways
\n
"
" forcedpms
\n
"
" clientdpms
\n
"
" noserverdpms
\n
"
" =GAL LOFF
\n
"
" =GAL LOFF
\n
"
"
\n
"
"
\n
"
"Tuning
\n
"
"Tuning
\n
"
...
...
This diff is collapsed.
Click to expand it.
x11vnc/unixpw.c
View file @
0016cd42
...
@@ -558,7 +558,7 @@ int su_verify(char *user, char *pass, char *cmd, char *rbuf, int *rbuf_size, int
...
@@ -558,7 +558,7 @@ int su_verify(char *user, char *pass, char *cmd, char *rbuf, int *rbuf_size, int
#ifndef UNIXPW_SU
#ifndef UNIXPW_SU
return
0
;
return
0
;
#else
#else
int
i
,
j
,
status
,
fd
=
-
1
,
sfd
,
tfd
,
drain_size
=
409
6
,
rsize
=
0
;
int
i
,
j
,
status
,
fd
=
-
1
,
sfd
,
tfd
,
drain_size
=
6553
6
,
rsize
=
0
;
int
slow_pw
=
1
;
int
slow_pw
=
1
;
char
*
slave
,
*
bin_true
=
NULL
,
*
bin_su
=
NULL
;
char
*
slave
,
*
bin_true
=
NULL
,
*
bin_su
=
NULL
;
pid_t
pid
,
pidw
;
pid_t
pid
,
pidw
;
...
@@ -1542,7 +1542,7 @@ void unixpw_accept(char *user) {
...
@@ -1542,7 +1542,7 @@ void unixpw_accept(char *user) {
}
else
if
(
switch_user
(
u
,
0
))
{
}
else
if
(
switch_user
(
u
,
0
))
{
rfbLog
(
"unixpw_accept switched to user: %s
\n
"
,
user
);
rfbLog
(
"unixpw_accept switched to user: %s
\n
"
,
user
);
}
else
{
}
else
{
rfbLog
(
"unixpw_accept failed to switch
ed
to user: %s
\n
"
,
user
);
rfbLog
(
"unixpw_accept failed to switch to user: %s
\n
"
,
user
);
}
}
free
(
u
);
free
(
u
);
}
}
...
...
This diff is collapsed.
Click to expand it.
x11vnc/user.c
View file @
0016cd42
...
@@ -1404,6 +1404,7 @@ int wait_for_client(int *argc, char** argv, int http) {
...
@@ -1404,6 +1404,7 @@ int wait_for_client(int *argc, char** argv, int http) {
break
;
break
;
}
}
if
(
unixpw
)
{
if
(
unixpw
)
{
if
(
!
unixpw_in_progress
)
{
if
(
!
unixpw_in_progress
)
{
rfbLog
(
"unixpw but no unixpw_in_progress
\n
"
);
rfbLog
(
"unixpw but no unixpw_in_progress
\n
"
);
...
@@ -1517,12 +1518,15 @@ if (db) {fprintf(stderr, "line: "); write(2, line, n); write(2, "\n", 1); fprint
...
@@ -1517,12 +1518,15 @@ if (db) {fprintf(stderr, "line: "); write(2, line, n); write(2, "\n", 1); fprint
fprintf
(
mt
,
"%s"
,
create_display
);
fprintf
(
mt
,
"%s"
,
create_display
);
fclose
(
mt
);
fclose
(
mt
);
findcreatedisplay
=
1
;
if
(
getuid
()
!=
0
)
{
if
(
getuid
()
!=
0
)
{
/* if not root, run as the other user... */
/* if not root, run as the other user... */
n
=
18000
;
n
=
18000
;
close_exec_fds
();
res
=
su_verify
(
keep_unixpw_user
,
res
=
su_verify
(
keep_unixpw_user
,
keep_unixpw_pass
,
create_cmd
,
line
,
&
n
,
nodisp
);
keep_unixpw_pass
,
create_cmd
,
line
,
&
n
,
nodisp
);
if
(
db
)
fprintf
(
stderr
,
"
line: '%s'
\n
"
,
line
);
if
(
db
)
fprintf
(
stderr
,
"
c-res=%d n=%d line: '%s'
\n
"
,
res
,
n
,
line
);
}
else
{
}
else
{
FILE
*
p
;
FILE
*
p
;
...
@@ -1633,6 +1637,8 @@ if (db) fprintf(stderr, "\n");
...
@@ -1633,6 +1637,8 @@ if (db) fprintf(stderr, "\n");
fprintf
(
mt
,
"%s"
,
create_display
);
fprintf
(
mt
,
"%s"
,
create_display
);
fclose
(
mt
);
fclose
(
mt
);
findcreatedisplay
=
1
;
rfbLog
(
"wait_for_client: FINDCREATEDISPLAY cmd: %s
\n
"
,
create_cmd
);
rfbLog
(
"wait_for_client: FINDCREATEDISPLAY cmd: %s
\n
"
,
create_cmd
);
p
=
popen
(
create_cmd
,
"r"
);
p
=
popen
(
create_cmd
,
"r"
);
...
@@ -1772,7 +1778,7 @@ fprintf(stderr, "\n");}
...
@@ -1772,7 +1778,7 @@ fprintf(stderr, "\n");}
}
else
if
(
switch_user
(
u
,
0
))
{
}
else
if
(
switch_user
(
u
,
0
))
{
rfbLog
(
"unixpw_accept switched to user: %s
\n
"
,
user
);
rfbLog
(
"unixpw_accept switched to user: %s
\n
"
,
user
);
}
else
{
}
else
{
rfbLog
(
"unixpw_accept failed to switch
ed
to user: %s
\n
"
,
user
);
rfbLog
(
"unixpw_accept failed to switch to user: %s
\n
"
,
user
);
}
}
free
(
u
);
free
(
u
);
}
}
...
...
This diff is collapsed.
Click to expand it.
x11vnc/x11vnc.1
View file @
0016cd42
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
.TH X11VNC "1" "February 2007" "x11vnc " "User Commands"
.TH X11VNC "1" "February 2007" "x11vnc " "User Commands"
.SH NAME
.SH NAME
x11vnc - allow VNC connections to real X11 displays
x11vnc - allow VNC connections to real X11 displays
version: 0.8.5, lastmod: 2007-02-1
0
version: 0.8.5, lastmod: 2007-02-1
1
.SH SYNOPSIS
.SH SYNOPSIS
.B x11vnc
.B x11vnc
[OPTION]...
[OPTION]...
...
@@ -360,13 +360,30 @@ as soon as the first client(s) disconnect. Same as \fB-many\fR
...
@@ -360,13 +360,30 @@ as soon as the first client(s) disconnect. Same as \fB-many\fR
\fB-loop\fR
\fB-loop\fR
.IP
.IP
Create an outer loop restarting the x11vnc process
Create an outer loop restarting the x11vnc process
whenever it terminates. \fB-bg\fR and \fB-inetd\fR are ignored in
whenever it terminates. \fB-bg\fR and \fB-inetd\fR are ignored
this mode. Useful for continuing even if the X server
in this mode (however see \fB-loopbg\fR below).
terminates and restarts (you will need permission to
.IP
reconnect of course). Use, e.g., \fB-loop100\fR to sleep
Useful for continuing even if the X server terminates
100 millisecs between restarts, etc. Default is 2000ms
and restarts (at that moment the process will need
(i.e. 2 secs) Use, e.g. \fB-loop300,5\fR to sleep 300 ms
permission to reconnect to the new X server of course).
and only loop 5 times.
.IP
Use, e.g., \fB-loop100\fR to sleep 100 millisecs between
restarts, etc. Default is 2000ms (i.e. 2 secs) Use,
e.g. \fB-loop300,5\fR to sleep 300 ms and only loop 5 times.
.IP
If \fB-loopbg\fR (plus any numbers) is specified instead,
the "\fB-bg\fR" option is implied and the mode approximates
.IR inetd (8)
usage to some degree. In this case when
it goes into the background any listening sockets
(i.e. ports 5900, 5800) are closed, so the next one
in the loop can use them. This mode will only be of
use if a VNC client (the only client for that process)
is already connected before the process goes into the
background, for example, usage of \fB-display\fR WAIT:..,
\fB-svc,\fR and \fB-connect\fR can make use of this "poor man's"
inetd mode. The default wait time is 500ms in this
mode. This usage could use useful: \fB-svc\fR \fB-loopbg\fR
.PP
.PP
\fB-timeout\fR \fIn\fR
\fB-timeout\fR \fIn\fR
.IP
.IP
...
@@ -544,6 +561,13 @@ for resizes, etc, will
...
@@ -544,6 +561,13 @@ for resizes, etc, will
act on the local user's input. Again, some degree of
act on the local user's input. Again, some degree of
cooperation from the person at the display is assumed.
cooperation from the person at the display is assumed.
.PP
.PP
\fB-grabalways\fR
.IP
Apply both \fB-grabkbd\fR and \fB-grabptr\fR even when no VNC
viewers are connected. If you only want one of them,
use the \fB-R\fR remote control to turn the other back on,
e.g. \fB-R\fR nograbptr.
.PP
\fB-viewpasswd\fR \fIstring\fR
\fB-viewpasswd\fR \fIstring\fR
.IP
.IP
Supply a 2nd password for view-only logins. The \fB-passwd\fR
Supply a 2nd password for view-only logins. The \fB-passwd\fR
...
@@ -819,6 +843,18 @@ is given 3 tries to enter the correct password.
...
@@ -819,6 +843,18 @@ is given 3 tries to enter the correct password.
If a list of allowed users is needed use \fB-unixpw\fR [list]
If a list of allowed users is needed use \fB-unixpw\fR [list]
in addition to this option.
in addition to this option.
.PP
.PP
\fB-svc\fR
.IP
Terminal services mode. Also "\fB-service\fR", implies
\fB-display\fR WAIT:cmd=FINDCREATEDISPLAY-Xvfb \fB-unixpw\fR
\fB-users\fR unixpw= \fB-ssl\fR SAVE
.PP
\fB-xdmsvc\fR
.IP
Terminal services mode. Also "\fB-xdm_service\fR", implies
\fB-display\fR WAIT:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp \fB-unixpw\fR
\fB-users\fR unixpw= \fB-ssl\fR SAVE
.PP
\fB-display\fR \fIWAIT:...\fR
\fB-display\fR \fIWAIT:...\fR
.IP
.IP
A special usage mode for the normal \fB-display\fR option.
A special usage mode for the normal \fB-display\fR option.
...
@@ -928,7 +964,7 @@ by client web browsers. For example:
...
@@ -928,7 +964,7 @@ by client web browsers. For example:
Where /.../x11vnc is the full path to x11vnc.
Where /.../x11vnc is the full path to x11vnc.
It is used in the Apache SSL-portal example (see FAQ).
It is used in the Apache SSL-portal example (see FAQ).
.IP
.IP
An
experimental
option is WAIT:cmd=FINDCREATEDISPLAY
An
interesting
option is WAIT:cmd=FINDCREATEDISPLAY
that is like FINDDISPLAY in that is uses the same method
that is like FINDDISPLAY in that is uses the same method
to find an existing display. However, if it does not
to find an existing display. However, if it does not
find one it will try to *start* up an X server session
find one it will try to *start* up an X server session
...
@@ -943,11 +979,12 @@ the shared library. Xdummy requires root permission
...
@@ -943,11 +979,12 @@ the shared library. Xdummy requires root permission
and only works on Linux. Xvfb is available on most
and only works on Linux. Xvfb is available on most
platforms and does not require root.
platforms and does not require root.
.IP
.IP
When x11vnc exits (i.e. user disconnects) the X server
When x11vnc exits (i.e. user disconnects) the X
session stays running in the background. Presumably
server session stays running in the background.
the FINDDISPLAY will find it next time. The user must
The FINDDISPLAY will find it directly next time.
exit the X session in the usual way for it to terminate
The user must exit the X session in the usual way for
(or kill the X server process if all else fails).
it to terminate (or kill the X server process if all
else fails).
.IP
.IP
So this is a somewhat odd mode for x11vnc in that it
So this is a somewhat odd mode for x11vnc in that it
will start up and poll virtual X servers! This can
will start up and poll virtual X servers! This can
...
@@ -991,6 +1028,15 @@ display manager. This seems to be:
...
@@ -991,6 +1028,15 @@ display manager. This seems to be:
for gdm in gdm.conf: Enable=true in section [xdmcp]
for gdm in gdm.conf: Enable=true in section [xdmcp]
for kdm in kdmrc: Enable=true in section [Xdmcp]
for kdm in kdmrc: Enable=true in section [Xdmcp]
for xdm in xdm-config: DisplayManager.requestPort: 177
for xdm in xdm-config: DisplayManager.requestPort: 177
.IP
See the shorthand options above "\fB-svc\fR" and "\fB-xdmsvc\fR"
that specify the above options for some useful cases.
.PP
\fB-nossl\fR
.IP
Disable the \fB-ssl\fR option (see below). Since \fB-ssl\fR is off
by default \fB-nossl\fR would only be used on the commandline
to unset any *earlier* \fB-ssl\fR option (or \fB-svc...)\fR
.PP
.PP
\fB-ssl\fR \fI[pem]\fR
\fB-ssl\fR \fI[pem]\fR
.IP
.IP
...
@@ -3117,6 +3163,38 @@ manpage
...
@@ -3117,6 +3163,38 @@ manpage
for details. \fB-nodpms\fR is basically the same as running
for details. \fB-nodpms\fR is basically the same as running
"xset dpms force on" periodically. Default: \fB-dpms\fR
"xset dpms force on" periodically. Default: \fB-dpms\fR
.PP
.PP
\fB-forcedpms\fR
.IP
If the system supports the DPMS (Display Power
Management Signaling) extension, then try to keep the
monitor in a powered off state. This is to prevent
nosey people at the physical display from viewing
what is on the screen. Be sure lock the screen before
disconnecting.
.IP
This method is far from bullet proof, e.g. suppose
someone attaches a non-DPMS monitor, or loads the
machine so that there is a gap of time before x11vnc
restores the powered off state? On many machines if
he floods it with keyboard and mouse input he can see
flashes of what is on the screen before the DPMS off
state is reestablished. For this to work securely
there would need to be support in the X server to do
this exactly rather than approximately with DPMS.
.PP
\fB-clientdpms\fR
.IP
As \fB-forcedpms\fR but only when VNC clients are connected.
.PP
\fB-noserverdpms\fR
.IP
The UltraVNC ServerInput extension is supported.
This allows the VNC viewer to click a button that will
cause the server (x11vnc) to try to disable keyboard
and mouse input at the physical display and put the
monitor in dpms powered off state. Use this option to
skip powering off the monitor.
.PP
\fB-noxdamage\fR
\fB-noxdamage\fR
.IP
.IP
Do not use the X DAMAGE extension to detect framebuffer
Do not use the X DAMAGE extension to detect framebuffer
...
@@ -3940,6 +4018,10 @@ grabptr enable \fB-grabptr\fR mode.
...
@@ -3940,6 +4018,10 @@ grabptr enable \fB-grabptr\fR mode.
.IP
.IP
nograbptr disable \fB-grabptr\fR mode.
nograbptr disable \fB-grabptr\fR mode.
.IP
.IP
grabalways enable \fB-grabalways\fR mode.
.IP
nograbalways disable \fB-grabalways\fR mode.
.IP
client_input:str set the K, M, B \fB-input\fR on a per-client
client_input:str set the K, M, B \fB-input\fR on a per-client
basis. select which client as for
basis. select which client as for
disconnect, e.g. client_input:host:MB
disconnect, e.g. client_input:host:MB
...
@@ -4245,6 +4327,18 @@ dpms disable \fB-nodpms\fR mode.
...
@@ -4245,6 +4327,18 @@ dpms disable \fB-nodpms\fR mode.
.IP
.IP
nodpms enable \fB-nodpms\fR mode.
nodpms enable \fB-nodpms\fR mode.
.IP
.IP
forcedpms enable \fB-forcedpms\fR mode.
.IP
noforcedpms disable \fB-forcedpms\fR mode.
.IP
clientdpms enable \fB-clientdpms\fR mode.
.IP
noclientdpms disable \fB-clientdpms\fR mode.
.IP
noserverdpms enable \fB-noserverdpms\fR mode.
.IP
serverdpms disable \fB-noserverdpms\fR mode.
.IP
xdamage enable xdamage polling hints.
xdamage enable xdamage polling hints.
.IP
.IP
noxdamage disable xdamage polling hints.
noxdamage disable xdamage polling hints.
...
@@ -4422,38 +4516,40 @@ unlock connect allowonce allow localhost nolocalhost
...
@@ -4422,38 +4516,40 @@ unlock connect allowonce allow localhost nolocalhost
listen lookup nolookup accept afteraccept gone shm
listen lookup nolookup accept afteraccept gone shm
noshm flipbyteorder noflipbyteorder onetile noonetile
noshm flipbyteorder noflipbyteorder onetile noonetile
solid_color solid nosolid blackout xinerama noxinerama
solid_color solid nosolid blackout xinerama noxinerama
xtrap noxtrap xrandr noxrandr xrandr_mode rotate
xtrap noxtrap xrandr noxrandr xrandr_mode rotate padgeom
padgeom quiet q noquiet modtweak nomodtweak xkb noxkb
quiet q noquiet modtweak nomodtweak xkb noxkb capslock
capslock nocapslock skip_lockkeys noskip_lockkeys
nocapslock skip_lockkeys noskip_lockkeys skip_keycodes
skip_keycodes sloppy_keys nosloppy_keys skip_dups
sloppy_keys nosloppy_keys skip_dups noskip_dups
noskip_dups add_keysyms noadd_keysyms clear_mods
add_keysyms noadd_keysyms clear_mods noclear_mods
noclear_mods clear_keys noclear_keys remap repeat
clear_keys noclear_keys remap repeat norepeat fb nofb
norepeat fb nofb bell nobell sel nosel primary
bell nobell sel nosel primary noprimary setprimary
noprimary setprimary nosetprimary clipboard noclipboard
nosetprimary clipboard noclipboard setclipboard
setclipboard nosetclipboard seldir cursorshape
nosetclipboard seldir cursorshape nocursorshape
nocursorshape cursorpos nocursorpos cursor_drag
cursorpos nocursorpos cursor_drag nocursor_drag cursor
nocursor_drag cursor show_cursor noshow_cursor
show_cursor noshow_cursor nocursor arrow xfixes
nocursor arrow xfixes noxfixes xdamage noxdamage
noxfixes xdamage noxdamage xd_area xd_mem alphacut
xd_area xd_mem alphacut alphafrac alpharemove
alphafrac alpharemove noalpharemove alphablend
noalpharemove alphablend noalphablend xwarppointer
noalphablend xwarppointer xwarp noxwarppointer
xwarp noxwarppointer noxwarp buttonmap dragging
noxwarp buttonmap dragging nodragging ncache_cr
nodragging ncache_cr noncache_cr ncache_no_moveraise
noncache_cr ncache_no_moveraise noncache_no_moveraise
noncache_no_moveraise ncache_no_dtchange
ncache_no_dtchange noncache_no_dtchange
noncache_no_dtchange ncache_no_rootpixmap
ncache_no_rootpixmap noncache_no_rootpixmap
noncache_no_rootpixmap ncache_reset_rootpixmap
ncache_reset_rootpixmap ncache_keep_anims
ncache_keep_anims noncache_keep_anims ncache noncache
noncache_keep_anims ncache_old_wm noncache_old_wm
ncache_size wireframe_mode wireframe wf nowireframe nowf
ncache noncache ncache_size wireframe_mode wireframe wf
wireframelocal wfl nowireframelocal nowfl wirecopyrect
nowireframe nowf wireframelocal wfl nowireframelocal
wcr nowirecopyrect nowcr scr_area scr_skip scr_inc
nowfl wirecopyrect wcr nowirecopyrect nowcr scr_area
scr_keys scr_term scr_keyrepeat scr_parms scrollcopyrect
scr_skip scr_inc scr_keys scr_term scr_keyrepeat
scr noscrollcopyrect noscr fixscreen noxrecord xrecord
scr_parms scrollcopyrect scr noscrollcopyrect noscr
reset_record pointer_mode pm input_skip allinput
fixscreen noxrecord xrecord reset_record pointer_mode pm
noallinput input grabkbd nograbkbd grabptr nograbptr
input_skip allinput noallinput input grabkbd nograbkbd
client_input ssltimeout speeds wmdt debug_pointer dp
grabptr nograbptr grabalways nograbalways client_input
nodebug_pointer nodp debug_keyboard dk nodebug_keyboard
ssltimeout speeds wmdt debug_pointer dp nodebug_pointer
nodk deferupdate defer wait_ui wait_bog nowait_bog
nodp debug_keyboard dk nodebug_keyboard nodk deferupdate
slow_fb wait readtimeout nap nonap sb screen_blank
defer wait_ui wait_bog nowait_bog slow_fb wait
fbpm nofbpm dpms nodpms fs gaps grow fuzz snapfb
readtimeout nap nonap sb screen_blank fbpm nofbpm dpms
nodpms clientdpms noclientdpms forcedpms noforcedpms
noserverdpms serverdpms fs gaps grow fuzz snapfb
nosnapfb rawfb uinput_accel uinput_thresh uinput_reset
nosnapfb rawfb uinput_accel uinput_thresh uinput_reset
uinput_always progressive rfbport http nohttp httpport
uinput_always progressive rfbport http nohttp httpport
httpdir enablehttpproxy noenablehttpproxy alwaysshared
httpdir enablehttpproxy noenablehttpproxy alwaysshared
...
...
This diff is collapsed.
Click to expand it.
x11vnc/x11vnc.c
View file @
0016cd42
...
@@ -1302,12 +1302,16 @@ static void check_loop_mode(int argc, char* argv[]) {
...
@@ -1302,12 +1302,16 @@ static void check_loop_mode(int argc, char* argv[]) {
loop_max
=
atoi
(
q
+
1
);
loop_max
=
atoi
(
q
+
1
);
*
q
=
'\0'
;
*
q
=
'\0'
;
}
}
if
(
strstr
(
p
,
"-loopbg"
)
==
p
)
{
set_env
(
"X11VNC_LOOP_MODE_BG"
,
"1"
);
loop_sleep
=
500
;
}
q
=
strpbrk
(
p
,
"0123456789"
);
q
=
strpbrk
(
p
,
"0123456789"
);
if
(
q
)
{
if
(
q
)
{
loop_sleep
=
atoi
(
q
);
loop_sleep
=
atoi
(
q
);
if
(
loop_sleep
<=
0
)
{
if
(
loop_sleep
<=
0
)
{
loop_sleep
=
1
0
;
loop_sleep
=
2
0
;
}
}
}
}
}
}
...
@@ -1528,7 +1532,6 @@ int main(int argc, char* argv[]) {
...
@@ -1528,7 +1532,6 @@ int main(int argc, char* argv[]) {
int
dt
=
0
,
bg
=
0
;
int
dt
=
0
,
bg
=
0
;
int
got_rfbwait
=
0
;
int
got_rfbwait
=
0
;
int
got_httpdir
=
0
,
try_http
=
0
;
int
got_httpdir
=
0
,
try_http
=
0
;
int
waited_for_client
=
0
;
int
orig_use_xdamage
=
use_xdamage
;
int
orig_use_xdamage
=
use_xdamage
;
XImage
*
fb0
=
NULL
;
XImage
*
fb0
=
NULL
;
...
@@ -1745,6 +1748,14 @@ int main(int argc, char* argv[]) {
...
@@ -1745,6 +1748,14 @@ int main(int argc, char* argv[]) {
connect_once
=
0
;
connect_once
=
0
;
}
else
if
(
strstr
(
arg
,
"-loop"
)
==
arg
)
{
}
else
if
(
strstr
(
arg
,
"-loop"
)
==
arg
)
{
;
/* handled above */
;
/* handled above */
#if LIBVNCSERVER_HAVE_SETSID
bg
=
1
;
opts_bg
=
bg
;
#else
fprintf
(
stderr
,
"warning: -bg mode not supported.
\n
"
);
#endif
}
else
if
(
strstr
(
arg
,
"-loop"
)
==
arg
)
{
;
/* handled above */
}
else
if
(
!
strcmp
(
arg
,
"-timeout"
))
{
}
else
if
(
!
strcmp
(
arg
,
"-timeout"
))
{
CHECK_ARGC
CHECK_ARGC
first_conn_timeout
=
atoi
(
argv
[
++
i
]);
first_conn_timeout
=
atoi
(
argv
[
++
i
]);
...
@@ -1792,6 +1803,10 @@ int main(int argc, char* argv[]) {
...
@@ -1792,6 +1803,10 @@ int main(int argc, char* argv[]) {
grab_kbd
=
1
;
grab_kbd
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-grabptr"
))
{
}
else
if
(
!
strcmp
(
arg
,
"-grabptr"
))
{
grab_ptr
=
1
;
grab_ptr
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-grabalways"
))
{
grab_kbd
=
1
;
grab_ptr
=
1
;
grab_always
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-viewpasswd"
))
{
}
else
if
(
!
strcmp
(
arg
,
"-viewpasswd"
))
{
vpw_loc
=
i
;
vpw_loc
=
i
;
CHECK_ARGC
CHECK_ARGC
...
@@ -1801,6 +1816,18 @@ int main(int argc, char* argv[]) {
...
@@ -1801,6 +1816,18 @@ int main(int argc, char* argv[]) {
CHECK_ARGC
CHECK_ARGC
passwdfile
=
strdup
(
argv
[
++
i
]);
passwdfile
=
strdup
(
argv
[
++
i
]);
got_passwdfile
=
1
;
got_passwdfile
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-svc"
)
||
!
strcmp
(
arg
,
"-service"
))
{
use_dpy
=
strdup
(
"WAIT:cmd=FINDCREATEDISPLAY-Xvfb"
);
unixpw
=
1
;
users_list
=
strdup
(
"unixpw="
);
use_openssl
=
1
;
openssl_pem
=
strdup
(
"SAVE"
);
}
else
if
(
!
strcmp
(
arg
,
"-xdmsvc"
)
||
!
strcmp
(
arg
,
"-xdm_service"
))
{
use_dpy
=
strdup
(
"WAIT:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp"
);
unixpw
=
1
;
users_list
=
strdup
(
"unixpw="
);
use_openssl
=
1
;
openssl_pem
=
strdup
(
"SAVE"
);
#ifndef NO_SSL_OR_UNIXPW
#ifndef NO_SSL_OR_UNIXPW
}
else
if
(
!
strcmp
(
arg
,
"-unixpw_cmd"
)
}
else
if
(
!
strcmp
(
arg
,
"-unixpw_cmd"
)
||
!
strcmp
(
arg
,
"-unixpw_cmd_unsafe"
))
{
||
!
strcmp
(
arg
,
"-unixpw_cmd_unsafe"
))
{
...
@@ -1834,6 +1861,9 @@ int main(int argc, char* argv[]) {
...
@@ -1834,6 +1861,9 @@ int main(int argc, char* argv[]) {
set_env
(
"UNIXPW_DISABLE_SSL"
,
"1"
);
set_env
(
"UNIXPW_DISABLE_SSL"
,
"1"
);
set_env
(
"UNIXPW_DISABLE_LOCALHOST"
,
"1"
);
set_env
(
"UNIXPW_DISABLE_LOCALHOST"
,
"1"
);
}
}
}
else
if
(
!
strcmp
(
arg
,
"-nossl"
))
{
use_openssl
=
0
;
openssl_pem
=
NULL
;
}
else
if
(
!
strcmp
(
arg
,
"-ssl"
))
{
}
else
if
(
!
strcmp
(
arg
,
"-ssl"
))
{
use_openssl
=
1
;
use_openssl
=
1
;
if
(
i
<
argc
-
1
)
{
if
(
i
<
argc
-
1
)
{
...
@@ -2344,6 +2374,12 @@ int main(int argc, char* argv[]) {
...
@@ -2344,6 +2374,12 @@ int main(int argc, char* argv[]) {
watch_dpms
=
1
;
watch_dpms
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-dpms"
))
{
}
else
if
(
!
strcmp
(
arg
,
"-dpms"
))
{
watch_dpms
=
0
;
watch_dpms
=
0
;
}
else
if
(
!
strcmp
(
arg
,
"-forcedpms"
))
{
force_dpms
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-clientdpms"
))
{
client_dpms
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-noserverdpms"
))
{
no_ultra_dpms
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-xdamage"
))
{
}
else
if
(
!
strcmp
(
arg
,
"-xdamage"
))
{
use_xdamage
++
;
use_xdamage
++
;
}
else
if
(
!
strcmp
(
arg
,
"-noxdamage"
))
{
}
else
if
(
!
strcmp
(
arg
,
"-noxdamage"
))
{
...
@@ -2563,7 +2599,7 @@ int main(int argc, char* argv[]) {
...
@@ -2563,7 +2599,7 @@ int main(int argc, char* argv[]) {
orig_use_xdamage
=
use_xdamage
;
orig_use_xdamage
=
use_xdamage
;
if
(
getenv
(
"X11VNC_LOOP_MODE"
))
{
if
(
getenv
(
"X11VNC_LOOP_MODE"
))
{
if
(
bg
)
{
if
(
bg
&&
!
getenv
(
"X11VNC_LOOP_MODE_BG"
)
)
{
if
(
!
quiet
)
{
if
(
!
quiet
)
{
fprintf
(
stderr
,
"disabling -bg in -loop "
fprintf
(
stderr
,
"disabling -bg in -loop "
"mode
\n
"
);
"mode
\n
"
);
...
@@ -3210,6 +3246,13 @@ int main(int argc, char* argv[]) {
...
@@ -3210,6 +3246,13 @@ int main(int argc, char* argv[]) {
scr
=
DefaultScreen
(
dpy
);
scr
=
DefaultScreen
(
dpy
);
rootwin
=
RootWindow
(
dpy
,
scr
);
rootwin
=
RootWindow
(
dpy
,
scr
);
if
(
grab_always
)
{
Window
save
=
window
;
window
=
rootwin
;
adjust_grabs
(
1
,
0
);
window
=
save
;
}
if
(
!
quiet
&&
!
raw_fb_str
)
{
if
(
!
quiet
&&
!
raw_fb_str
)
{
rfbLog
(
"
\n
"
);
rfbLog
(
"
\n
"
);
rfbLog
(
"------------------ USEFUL INFORMATION ------------------
\n
"
);
rfbLog
(
"------------------ USEFUL INFORMATION ------------------
\n
"
);
...
@@ -3764,6 +3807,26 @@ int main(int argc, char* argv[]) {
...
@@ -3764,6 +3807,26 @@ int main(int argc, char* argv[]) {
#if LIBVNCSERVER_HAVE_FORK && LIBVNCSERVER_HAVE_SETSID
#if LIBVNCSERVER_HAVE_FORK && LIBVNCSERVER_HAVE_SETSID
if
(
bg
)
{
if
(
bg
)
{
if
(
getenv
(
"X11VNC_LOOP_MODE_BG"
))
{
if
(
screen
&&
screen
->
listenSock
>=
0
)
{
close
(
screen
->
listenSock
);
FD_CLR
(
screen
->
listenSock
,
&
screen
->
allFds
);
screen
->
listenSock
=
-
1
;
}
if
(
screen
&&
screen
->
httpListenSock
>=
0
)
{
close
(
screen
->
httpListenSock
);
FD_CLR
(
screen
->
httpListenSock
,
&
screen
->
allFds
);
screen
->
httpListenSock
=
-
1
;
}
if
(
openssl_sock
>=
0
)
{
close
(
openssl_sock
);
openssl_sock
=
-
1
;
}
if
(
https_sock
>=
0
)
{
close
(
https_sock
);
https_sock
=
-
1
;
}
}
/* fork into the background now */
/* fork into the background now */
int
p
,
n
;
int
p
,
n
;
if
((
p
=
fork
())
>
0
)
{
if
((
p
=
fork
())
>
0
)
{
...
...
This diff is collapsed.
Click to expand it.
x11vnc/x11vnc.h
View file @
0016cd42
...
@@ -482,6 +482,9 @@ extern int hack_val;
...
@@ -482,6 +482,9 @@ extern int hack_val;
extern
rfbClientPtr
last_pointer_client
;
extern
rfbClientPtr
last_pointer_client
;
extern
rfbClientPtr
latest_client
;
extern
rfbClientPtr
latest_client
;
extern
int
waited_for_client
;
extern
int
findcreatedisplay
;
extern
int
client_count
;
extern
int
client_count
;
extern
int
clients_served
;
extern
int
clients_served
;
...
...
This diff is collapsed.
Click to expand it.
x11vnc/x11vnc_defs.c
View file @
0016cd42
...
@@ -15,7 +15,7 @@ int xtrap_base_event_type = 0;
...
@@ -15,7 +15,7 @@ int xtrap_base_event_type = 0;
int
xdamage_base_event_type
=
0
;
int
xdamage_base_event_type
=
0
;
/* date +'lastmod: %Y-%m-%d' */
/* date +'lastmod: %Y-%m-%d' */
char
lastmod
[]
=
"0.8.5 lastmod: 2007-02-1
0
"
;
char
lastmod
[]
=
"0.8.5 lastmod: 2007-02-1
1
"
;
/* X display info */
/* X display info */
...
@@ -146,6 +146,9 @@ int hack_val = 0;
...
@@ -146,6 +146,9 @@ int hack_val = 0;
rfbClientPtr
last_pointer_client
=
NULL
;
rfbClientPtr
last_pointer_client
=
NULL
;
rfbClientPtr
latest_client
=
NULL
;
rfbClientPtr
latest_client
=
NULL
;
int
waited_for_client
=
0
;
int
findcreatedisplay
=
0
;
int
client_count
=
0
;
int
client_count
=
0
;
int
clients_served
=
0
;
int
clients_served
=
0
;
...
...
This diff is collapsed.
Click to expand it.
x11vnc/xevents.c
View file @
0016cd42
...
@@ -21,6 +21,7 @@
...
@@ -21,6 +21,7 @@
int
grab_buster
=
0
;
int
grab_buster
=
0
;
int
grab_kbd
=
0
;
int
grab_kbd
=
0
;
int
grab_ptr
=
0
;
int
grab_ptr
=
0
;
int
grab_always
=
0
;
int
sync_tod_delay
=
20
;
int
sync_tod_delay
=
20
;
void
initialize_vnc_connect_prop
(
void
);
void
initialize_vnc_connect_prop
(
void
);
...
@@ -871,6 +872,7 @@ void check_xevents(int reset) {
...
@@ -871,6 +872,7 @@ void check_xevents(int reset) {
XSetErrorHandler
(
old_handler
);
XSetErrorHandler
(
old_handler
);
trapped_xerror
=
0
;
trapped_xerror
=
0
;
last_call
=
now
;
}
}
/* check for CUT_BUFFER0 and VNC_CONNECT changes: */
/* check for CUT_BUFFER0 and VNC_CONNECT changes: */
...
@@ -1156,7 +1158,6 @@ void check_xevents(int reset) {
...
@@ -1156,7 +1158,6 @@ void check_xevents(int reset) {
}
}
X_UNLOCK
;
X_UNLOCK
;
last_call
=
now
;
#endif
/* NO_X11 */
#endif
/* NO_X11 */
}
}
...
@@ -1346,14 +1347,22 @@ void set_server_input(rfbClientPtr cl, int grab) {
...
@@ -1346,14 +1347,22 @@ void set_server_input(rfbClientPtr cl, int grab) {
return
;
return
;
#else
#else
if
(
grab
)
{
if
(
grab
)
{
if
(
!
no_ultra_dpms
)
{
set_dpms_mode
(
"enable"
);
set_dpms_mode
(
"off"
);
force_dpms
=
1
;
}
process_remote_cmd
(
"cmd=grabkbd"
,
0
);
process_remote_cmd
(
"cmd=grabkbd"
,
0
);
process_remote_cmd
(
"cmd=grabptr"
,
0
);
process_remote_cmd
(
"cmd=grabptr"
,
0
);
set_dpms_mode
(
"off"
);
}
else
{
}
else
{
process_remote_cmd
(
"cmd=nograbkbd"
,
0
);
process_remote_cmd
(
"cmd=nograbkbd"
,
0
);
process_remote_cmd
(
"cmd=nograbptr"
,
0
);
process_remote_cmd
(
"cmd=nograbptr"
,
0
);
if
(
!
no_ultra_dpms
)
{
force_dpms
=
0
;
}
}
}
#endif
#endif
}
}
...
...
This diff is collapsed.
Click to expand it.
x11vnc/xevents.h
View file @
0016cd42
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
extern
int
grab_buster
;
extern
int
grab_buster
;
extern
int
grab_kbd
;
extern
int
grab_kbd
;
extern
int
grab_ptr
;
extern
int
grab_ptr
;
extern
int
grab_always
;
extern
int
sync_tod_delay
;
extern
int
sync_tod_delay
;
extern
void
initialize_vnc_connect_prop
(
void
);
extern
void
initialize_vnc_connect_prop
(
void
);
...
...
This diff is collapsed.
Click to expand it.
x11vnc/xwrappers.c
View file @
0016cd42
...
@@ -1042,7 +1042,7 @@ int xauth_raw(int on) {
...
@@ -1042,7 +1042,7 @@ int xauth_raw(int on) {
rfbLog
(
"could not create tmp xauth file: %s
\n
"
,
tmp
);
rfbLog
(
"could not create tmp xauth file: %s
\n
"
,
tmp
);
return
0
;
return
0
;
}
}
if
(
db
)
fprintf
(
stderr
,
"tmp: %s
\n
"
,
tmp
);
if
(
db
)
fprintf
(
stderr
,
"
XAUTHORITY
tmp: %s
\n
"
,
tmp
);
write
(
tmp_fd
,
xauth_raw_data
,
xauth_raw_len
);
write
(
tmp_fd
,
xauth_raw_data
,
xauth_raw_len
);
close
(
tmp_fd
);
close
(
tmp_fd
);
if
(
getenv
(
"XAUTHORITY"
))
{
if
(
getenv
(
"XAUTHORITY"
))
{
...
...
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