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
Feb 12, 2007
by
runge
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x11vnc: -grabalways, -forcedpms, -clientdpms, -noserverdpms, -loopbg, -svc, -xdmsvc
parent
90d96b97
Changes
21
Expand all
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>
* x11vnc: watch things like textchat, etc. more carefully
in unixpw state. Monitor broken XDAMAGE reports when
...
...
x11vnc/README
View file @
0016cd42
This diff is collapsed.
Click to expand it.
x11vnc/connections.c
View file @
0016cd42
...
...
@@ -2377,7 +2377,9 @@ void check_new_clients(void) {
return
;
}
if
(
grab_kbd
||
grab_ptr
)
{
if
(
grab_always
)
{
;
}
else
if
(
grab_kbd
||
grab_ptr
)
{
static
double
last_force
=
0
.
0
;
if
(
client_count
!=
last_count
||
dnow
()
>
last_force
+
0
.
25
)
{
int
q
=
(
client_count
==
last_count
);
...
...
x11vnc/help.c
View file @
0016cd42
This diff is collapsed.
Click to expand it.
x11vnc/options.c
View file @
0016cd42
...
...
@@ -356,6 +356,9 @@ int watch_fbpm = 0;
#endif
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_primary
=
1
;
/* more dicey, poll for changes in PRIMARY */
...
...
x11vnc/options.h
View file @
0016cd42
...
...
@@ -261,6 +261,9 @@ extern int all_input;
extern
int
watch_fbpm
;
extern
int
watch_dpms
;
extern
int
force_dpms
;
extern
int
client_dpms
;
extern
int
no_ultra_dpms
;
extern
int
watch_selection
;
extern
int
watch_primary
;
...
...
x11vnc/pm.c
View file @
0016cd42
...
...
@@ -123,16 +123,22 @@ void set_dpms_mode(char *mode) {
want
=
DPMSModeStandby
;
}
else
if
(
!
strcmp
(
mode
,
"suspend"
))
{
want
=
DPMSModeSuspend
;
}
else
if
(
!
strcmp
(
mode
,
"enable"
))
{
DPMSEnable
(
dpy
);
return
;
}
else
if
(
!
strcmp
(
mode
,
"disable"
))
{
DPMSDisable
(
dpy
);
return
;
}
else
{
return
;
}
if
(
DPMSInfo
(
dpy
,
&
level
,
&
enabled
))
{
char
*
from
;
fprintf
(
stderr
,
"DPMSInfo level: %d enabled: %d
\n
"
,
level
,
enabled
);
if
(
enabled
&&
level
!=
want
)
{
XErrorHandler
old_handler
=
XSetErrorHandler
(
trap_xerror
);
trapped_xerror
=
0
;
rfbLog
(
"DPMSInfo level: %d enabled: %d
\n
"
,
level
,
enabled
);
if
(
level
==
DPMSModeStandby
)
{
from
=
"DPMSModeStandby"
;
}
else
if
(
level
==
DPMSModeSuspend
)
{
...
...
@@ -188,6 +194,14 @@ static void check_dpms(void) {
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
)
{
return
;
}
...
...
x11vnc/remote.c
View file @
0016cd42
...
...
@@ -3287,6 +3287,9 @@ char *process_remote_cmd(char *cmd, int stringonly) {
goto
qry
;
}
grab_kbd
=
1
;
if
(
grab_always
)
{
adjust_grabs
(
1
,
0
);
}
rfbLog
(
"enabled grab_kbd
\n
"
);
}
else
if
(
!
strcmp
(
p
,
"nograbkbd"
))
{
int
orig
=
grab_kbd
;
...
...
@@ -3303,12 +3306,16 @@ char *process_remote_cmd(char *cmd, int stringonly) {
#endif
}
rfbLog
(
"disabled grab_kbd
\n
"
);
}
else
if
(
!
strcmp
(
p
,
"grabptr"
))
{
if
(
query
)
{
snprintf
(
buf
,
bufn
,
"ans=%s:%d"
,
p
,
grab_ptr
);
goto
qry
;
}
grab_ptr
=
1
;
if
(
grab_always
)
{
adjust_grabs
(
1
,
0
);
}
rfbLog
(
"enabled grab_ptr
\n
"
);
}
else
if
(
!
strcmp
(
p
,
"nograbptr"
))
{
int
orig
=
grab_ptr
;
...
...
@@ -3326,6 +3333,36 @@ char *process_remote_cmd(char *cmd, int stringonly) {
}
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
)
{
NOTAPP
COLON_CHECK
(
"client_input:"
)
...
...
@@ -3583,6 +3620,51 @@ char *process_remote_cmd(char *cmd, int stringonly) {
rfbLog
(
"remote_cmd: turning on -nodpms mode.
\n
"
);
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
)
{
COLON_CHECK
(
"fs:"
)
if
(
query
)
{
...
...
x11vnc/sslhelper.c
View file @
0016cd42
...
...
@@ -1458,6 +1458,24 @@ void accept_openssl(int mode) {
}
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
...
...
x11vnc/ssltools.h
View file @
0016cd42
...
...
@@ -869,6 +869,8 @@ char create_display[] =
"#!/bin/sh
\n
"
"
\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_EXEC
\"
=
\"
X
\"
]; then
\n
"
" CREATE_DISPLAY_EXEC=1
\n
"
...
...
@@ -1033,29 +1035,56 @@ char create_display[] =
" $have_xauth -f $authfile nextract - `hostname`:$N | $have_xauth nmerge -
\n
"
" fi
\n
"
"
\n
"
" result=0
\n
"
" ns=4
\n
"
" if [
\"
X$use_xdmcp_query
\"
=
\"
X1
\"
]; then
\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
"
" nohup $* -once -query localhost 1>&2 &
\n
"
" pid=$!
\n
"
" elif [
\"
X$have_startx
\"
!=
\"
X
\"
]; then
\n
"
" echo
\"
$have_startx $sess -- $* -nolisten tcp -auth $authfile
\"
1>&2
\n
"
" $have_startx $sess -- $* -nolisten tcp -auth $authfile 1>&2 &
\n
"
" if [
\"
X$have_root
\"
!=
\"
X
\"
]; then
\n
"
" nohup $* -once -query localhost 1>&2 &
\n
"
" else
\n
"
" nohup sh -c
\"
(sleep $ns; $* -once -query localhost -auth $authfile)
\"
1>&2 &
\n
"
" ns=0
\n
"
" result=1
\n
"
" fi
\n
"
" pid=$!
\n
"
" elif [
\"
X$have_xinit
\"
!=
\"
X
\"
]; then
\n
"
" echo
\"
$have_xinit $sess -- $* -nolisten tcp -auth $authfile
\"
1>&2
\n
"
" $have_xinit $sess -- $* -nolisten tcp -auth $authfile 1>&2 &
\n
"
" elif [
\"
X$have_startx
\"
!=
\"
X
\"
-o
\"
X$have_xinit
\"
!=
\"
X
\"
]; then
\n
"
" if [
\"
X$have_startx
\"
!=
\"
X
\"
]; then
\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
"
" else
\n
"
" echo
\"
$* -nolisten tcp -auth $authfile
\"
1>&2
\n
"
" nohup $* -nolisten tcp -auth $authfile 1>&2 &
\n
"
" pid=$!
\n
"
" nohup $sess 1>&2 &
\n
"
" if [
\"
X$have_root
\"
!=
\"
X
\"
]; then
\n
"
" nohup $* -nolisten tcp -auth $authfile 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
"
" sleep 4
\n
"
" if kill -0 $pid; then
\n
"
" sleep $ns
\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
"
" else
\n
"
" result=0
\n
"
...
...
@@ -1123,17 +1152,33 @@ char create_display[] =
" #have_startx=$save_have_startx
\n
"
"
\n
"
" if [
\"
X$result
\"
=
\"
X1
\"
-a
\"
X$have_xmodmap
\"
!=
\"
X
\"
]; then
\n
"
" (
\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
keycode any = Shift_R
\"
\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
add Shift = Shift_L Shift_R
\"
\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
keycode any = Control_R
\"
\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
add Control = Control_L Control_R
\"
\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
keycode any = Alt_L
\"
\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
keycode any = Alt_R
\"
\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
keycode any = Meta_L
\"
\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
clear Mod1
\"
\n
"
" sleep 1; $have_xmodmap -display :$N -e
\"
add Mod1 = Alt_L Alt_R Meta_L
\"
\n
"
" ) 1>&2 &
\n
"
" if [
\"
X$have_root
\"
=
\"
X
\"
]; then
\n
"
" nohup sh -c
\"
(
\n
"
" sleep 6;
\n
"
" $have_xmodmap -display :$N -e 'keycode any = Shift_R'
\\\n
"
" -e 'add Shift = Shift_L Shift_R'
\\\n
"
" -e 'keycode any = Control_R'
\\\n
"
" -e 'add Control = Control_L Control_R'
\\\n
"
" -e 'keycode any = Alt_L'
\\\n
"
" -e 'keycode any = Alt_R'
\\\n
"
" -e 'keycode any = Meta_L'
\\\n
"
" -e 'clear Mod1'
\\\n
"
" -e 'add Mod1 = Alt_L Alt_R Meta_L'
\\\n
"
" )
\"
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
"
"}
\n
"
"
\n
"
...
...
x11vnc/tkx11vnc
View file @
0016cd42
...
...
@@ -213,6 +213,7 @@ Pointer
=D nocursorshape
--
noxfixes
cursor_drag
=GAL AlphaBlending::
noalphablend
alphacut:
...
...
@@ -257,6 +258,8 @@ Misc
=D nobell
nolookup
bg
=S loop
=S loopbg
=-C:ignore,exit sigpipe:
=0 inetd
...
...
@@ -329,6 +332,10 @@ Permissions
timeout:
grabkbd
grabptr
grabalways
forcedpms
clientdpms
noserverdpms
=GAL LOFF
Tuning
...
...
x11vnc/tkx11vnc.h
View file @
0016cd42
...
...
@@ -224,6 +224,7 @@ char gui_code[] = "";
" =D nocursorshape
\n
"
" --
\n
"
" noxfixes
\n
"
" cursor_drag
\n
"
" =GAL AlphaBlending::
\n
"
" noalphablend
\n
"
" alphacut:
\n
"
...
...
@@ -268,6 +269,8 @@ char gui_code[] = "";
" =D nobell
\n
"
" nolookup
\n
"
" bg
\n
"
" =S loop
\n
"
" =S loopbg
\n
"
" =-C:ignore,exit sigpipe:
\n
"
" =0 inetd
\n
"
"
\n
"
...
...
@@ -340,6 +343,10 @@ char gui_code[] = "";
" timeout:
\n
"
" grabkbd
\n
"
" grabptr
\n
"
" grabalways
\n
"
" forcedpms
\n
"
" clientdpms
\n
"
" noserverdpms
\n
"
" =GAL LOFF
\n
"
"
\n
"
"Tuning
\n
"
...
...
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
#ifndef UNIXPW_SU
return
0
;
#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
;
char
*
slave
,
*
bin_true
=
NULL
,
*
bin_su
=
NULL
;
pid_t
pid
,
pidw
;
...
...
@@ -1542,7 +1542,7 @@ void unixpw_accept(char *user) {
}
else
if
(
switch_user
(
u
,
0
))
{
rfbLog
(
"unixpw_accept switched to user: %s
\n
"
,
user
);
}
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
);
}
...
...
x11vnc/user.c
View file @
0016cd42
...
...
@@ -1404,6 +1404,7 @@ int wait_for_client(int *argc, char** argv, int http) {
break
;
}
if
(
unixpw
)
{
if
(
!
unixpw_in_progress
)
{
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
fprintf
(
mt
,
"%s"
,
create_display
);
fclose
(
mt
);
findcreatedisplay
=
1
;
if
(
getuid
()
!=
0
)
{
/* if not root, run as the other user... */
n
=
18000
;
close_exec_fds
();
res
=
su_verify
(
keep_unixpw_user
,
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
{
FILE
*
p
;
...
...
@@ -1633,6 +1637,8 @@ if (db) fprintf(stderr, "\n");
fprintf
(
mt
,
"%s"
,
create_display
);
fclose
(
mt
);
findcreatedisplay
=
1
;
rfbLog
(
"wait_for_client: FINDCREATEDISPLAY cmd: %s
\n
"
,
create_cmd
);
p
=
popen
(
create_cmd
,
"r"
);
...
...
@@ -1772,7 +1778,7 @@ fprintf(stderr, "\n");}
}
else
if
(
switch_user
(
u
,
0
))
{
rfbLog
(
"unixpw_accept switched to user: %s
\n
"
,
user
);
}
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
);
}
...
...
x11vnc/x11vnc.1
View file @
0016cd42
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[]) {
loop_max
=
atoi
(
q
+
1
);
*
q
=
'\0'
;
}
if
(
strstr
(
p
,
"-loopbg"
)
==
p
)
{
set_env
(
"X11VNC_LOOP_MODE_BG"
,
"1"
);
loop_sleep
=
500
;
}
q
=
strpbrk
(
p
,
"0123456789"
);
if
(
q
)
{
loop_sleep
=
atoi
(
q
);
if
(
loop_sleep
<=
0
)
{
loop_sleep
=
1
0
;
loop_sleep
=
2
0
;
}
}
}
...
...
@@ -1528,7 +1532,6 @@ int main(int argc, char* argv[]) {
int
dt
=
0
,
bg
=
0
;
int
got_rfbwait
=
0
;
int
got_httpdir
=
0
,
try_http
=
0
;
int
waited_for_client
=
0
;
int
orig_use_xdamage
=
use_xdamage
;
XImage
*
fb0
=
NULL
;
...
...
@@ -1745,6 +1748,14 @@ int main(int argc, char* argv[]) {
connect_once
=
0
;
}
else
if
(
strstr
(
arg
,
"-loop"
)
==
arg
)
{
;
/* 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"
))
{
CHECK_ARGC
first_conn_timeout
=
atoi
(
argv
[
++
i
]);
...
...
@@ -1792,6 +1803,10 @@ int main(int argc, char* argv[]) {
grab_kbd
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-grabptr"
))
{
grab_ptr
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-grabalways"
))
{
grab_kbd
=
1
;
grab_ptr
=
1
;
grab_always
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-viewpasswd"
))
{
vpw_loc
=
i
;
CHECK_ARGC
...
...
@@ -1801,6 +1816,18 @@ int main(int argc, char* argv[]) {
CHECK_ARGC
passwdfile
=
strdup
(
argv
[
++
i
]);
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
}
else
if
(
!
strcmp
(
arg
,
"-unixpw_cmd"
)
||
!
strcmp
(
arg
,
"-unixpw_cmd_unsafe"
))
{
...
...
@@ -1834,6 +1861,9 @@ int main(int argc, char* argv[]) {
set_env
(
"UNIXPW_DISABLE_SSL"
,
"1"
);
set_env
(
"UNIXPW_DISABLE_LOCALHOST"
,
"1"
);
}
}
else
if
(
!
strcmp
(
arg
,
"-nossl"
))
{
use_openssl
=
0
;
openssl_pem
=
NULL
;
}
else
if
(
!
strcmp
(
arg
,
"-ssl"
))
{
use_openssl
=
1
;
if
(
i
<
argc
-
1
)
{
...
...
@@ -2344,6 +2374,12 @@ int main(int argc, char* argv[]) {
watch_dpms
=
1
;
}
else
if
(
!
strcmp
(
arg
,
"-dpms"
))
{
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"
))
{
use_xdamage
++
;
}
else
if
(
!
strcmp
(
arg
,
"-noxdamage"
))
{
...
...
@@ -2563,7 +2599,7 @@ int main(int argc, char* argv[]) {
orig_use_xdamage
=
use_xdamage
;
if
(
getenv
(
"X11VNC_LOOP_MODE"
))
{
if
(
bg
)
{
if
(
bg
&&
!
getenv
(
"X11VNC_LOOP_MODE_BG"
)
)
{
if
(
!
quiet
)
{
fprintf
(
stderr
,
"disabling -bg in -loop "
"mode
\n
"
);
...
...
@@ -3210,6 +3246,13 @@ int main(int argc, char* argv[]) {
scr
=
DefaultScreen
(
dpy
);
rootwin
=
RootWindow
(
dpy
,
scr
);
if
(
grab_always
)
{
Window
save
=
window
;
window
=
rootwin
;
adjust_grabs
(
1
,
0
);
window
=
save
;
}
if
(
!
quiet
&&
!
raw_fb_str
)
{
rfbLog
(
"
\n
"
);
rfbLog
(
"------------------ USEFUL INFORMATION ------------------
\n
"
);
...
...
@@ -3764,6 +3807,26 @@ int main(int argc, char* argv[]) {
#if LIBVNCSERVER_HAVE_FORK && LIBVNCSERVER_HAVE_SETSID
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 */
int
p
,
n
;
if
((
p
=
fork
())
>
0
)
{
...
...
x11vnc/x11vnc.h
View file @
0016cd42
...
...
@@ -482,6 +482,9 @@ extern int hack_val;
extern
rfbClientPtr
last_pointer_client
;
extern
rfbClientPtr
latest_client
;
extern
int
waited_for_client
;
extern
int
findcreatedisplay
;
extern
int
client_count
;
extern
int
clients_served
;
...
...
x11vnc/x11vnc_defs.c
View file @
0016cd42
...
...
@@ -15,7 +15,7 @@ int xtrap_base_event_type = 0;
int
xdamage_base_event_type
=
0
;
/* 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 */
...
...
@@ -146,6 +146,9 @@ int hack_val = 0;
rfbClientPtr
last_pointer_client
=
NULL
;
rfbClientPtr
latest_client
=
NULL
;
int
waited_for_client
=
0
;
int
findcreatedisplay
=
0
;
int
client_count
=
0
;
int
clients_served
=
0
;
...
...
x11vnc/xevents.c
View file @
0016cd42
...
...
@@ -21,6 +21,7 @@
int
grab_buster
=
0
;
int
grab_kbd
=
0
;
int
grab_ptr
=
0
;
int
grab_always
=
0
;
int
sync_tod_delay
=
20
;
void
initialize_vnc_connect_prop
(
void
);
...
...
@@ -871,6 +872,7 @@ void check_xevents(int reset) {
XSetErrorHandler
(
old_handler
);
trapped_xerror
=
0
;
last_call
=
now
;
}
/* check for CUT_BUFFER0 and VNC_CONNECT changes: */
...
...
@@ -1156,7 +1158,6 @@ void check_xevents(int reset) {
}
X_UNLOCK
;
last_call
=
now
;
#endif
/* NO_X11 */
}
...
...
@@ -1346,14 +1347,22 @@ void set_server_input(rfbClientPtr cl, int grab) {
return
;
#else
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=grabptr"
,
0
);
set_dpms_mode
(
"off"
);
}
else
{
process_remote_cmd
(
"cmd=nograbkbd"
,
0
);
process_remote_cmd
(
"cmd=nograbptr"
,
0
);
if
(
!
no_ultra_dpms
)
{
force_dpms
=
0
;
}
}
#endif
}
...
...
x11vnc/xevents.h
View file @
0016cd42
...
...
@@ -6,6 +6,7 @@
extern
int
grab_buster
;
extern
int
grab_kbd
;
extern
int
grab_ptr
;
extern
int
grab_always
;
extern
int
sync_tod_delay
;
extern
void
initialize_vnc_connect_prop
(
void
);
...
...
x11vnc/xwrappers.c
View file @
0016cd42
...
...
@@ -1042,7 +1042,7 @@ int xauth_raw(int on) {
rfbLog
(
"could not create tmp xauth file: %s
\n
"
,
tmp
);
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
);
close
(
tmp_fd
);
if
(
getenv
(
"XAUTHORITY"
))
{
...
...
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