x11vnc: long info and tips when XOpenDisplay fails, reinstate "bad desktop" for wireframe

pull/1/head
runge 19 years ago
parent 7b933e170e
commit b2323a90fd

@ -1,3 +1,7 @@
2005-06-21 Karl Runge <runge@karlrunge.com>
* reinstate "bad desktop" for wireframe.
* extra long info and tips of XOpenDisplay fails.
2005-06-18 Karl Runge <runge@karlrunge.com>
* clean up some malloc/free problems (don't free the current cursor)
* set DISPLAY before calling gconf, dcop under -solid

@ -1,5 +1,5 @@
x11vnc README file Date: Sat Jun 18 12:32:19 EDT 2005
x11vnc README file Date: Tue Jun 21 09:58:37 EDT 2005
The following information is taken from these URLs:
@ -207,8 +207,8 @@ x11vnc: a VNC server for real X displays
However, if you "know" port 5900 will be free on the local and remote
machines, you can easily automate the above two steps by using the
x11vnc option [26]-bg (forks into background after connection to the
display is set up) or using the -f option of ssh. Three example
scripts are shown below.
display is set up) or using the -f option of ssh. Some example scripts
are shown below.
_________________________________________________________________
#1. A simple example script, assuming no problems with port 5900 being
@ -301,7 +301,7 @@ vncviewer -via $host localhost:0 # must be TightVNC vncviewer.
Chaining ssh's: Note that for use of a ssh gateway and -L redirection
to a internal host (e.g. "-L 5900:otherhost:5900") the VNC traffic
to an internal host (e.g. "-L 5900:otherhost:5900") the VNC traffic
inside the firewall is not encrypted and you have to manually log into
otherhost to start x11vnc. Kyle Amon shows a method where you chain
two ssh's together that encrypts all network traffic and also
@ -578,7 +578,7 @@ make
I'd like to release version 0.7.2 in Jun/2005 sometime, here is the
current tarball:
RC-3 lastmod: 2005-06-18 [51]x11vnc-0.7.2beta.tar.gz
RC-3 lastmod: 2005-06-20 [51]x11vnc-0.7.2beta.tar.gz
There are also some Linux and Solaris test binaries [52]here. Please
kick the tires and report bugs, performance regressions, undesired
@ -1134,6 +1134,7 @@ make
your DISPLAY environment variable or use the [156]-display option to
specify it. Nearly always the correct value will be ":0"
For the latter error, you need to set up the X11 permissions
correctly.
@ -1148,13 +1149,19 @@ make
How to Solve: See the xauth(1), Xsecurity(7), and xhost(1) man pages
for much info on X11 permissions. For example, you may need to set
your XAUTHORITY environment variable or use the [157]-auth option to
point to the correct cookie file (e.g. /home/joe/.Xauthority or
/var/gdm/:0.Xauth), or simply be sure you run x11vnc as the correct
user (i.e. the user who owns the X session you wish to view). If sshd
has set XAUTHORITY to point to a random file it has created for X
forwarding that will cause problems. Running x11vnc as root is not
enough: you need to know where the XAUTHORITY file for the desired X
display is. Example:
point to the correct MIT-MAGIC-COOKIE file (e.g. /home/joe/.Xauthority
or /var/gdm/:0.Xauth), or simply be sure you run x11vnc as the correct
user (i.e. the user who owns the X session you wish to view).
The cookie file contains the secret key that allows x11vnc to connect
to the desired X display.
If, say, sshd has set XAUTHORITY to point to a random file it has
created for X forwarding that will cause problems. (Under some
circumstances even su(1) and telnet(1) can set XAUTHORITY.) Running
x11vnc as root is often not enough: you need to know where the
MIT-MAGIC-COOKIE file for the desired X display is. Example
solution:
x11vnc -display :0 -auth /var/gdm/:0.Xauth
(this is for the display manager gdm, see [158]this faq for other
@ -4419,7 +4426,7 @@ References
314. http://www.karlrunge.com/x11vnc/x11vnc_opts.html#opt-wireframe
315. http://www.karlrunge.com/x11vnc/x11vnc_opts.html#opt-wireframe
316. http://www.karlrunge.com/x11vnc/x11vnc_opts.html#opt-wireframe
317. http://www.karlrunge.com/x11vnc/fb_read_slow
317. http://www.karlrunge.com/x11vnc/index.html#fb_read_slow
318. http://www.karlrunge.com/x11vnc/x11vnc_opts.html#opt-scrollcopyrect
319. http://www.karlrunge.com/x11vnc/x11vnc_opts.html#opt-wireframe
320. http://www.karlrunge.com/x11vnc/x11vnc_opts.html#opt-wirecopyrect
@ -4508,7 +4515,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.7.2 lastmod: 2005-06-18
x11vnc: allow VNC connections to real X11 displays. 0.7.2 lastmod: 2005-06-21
x11vnc options:
-display disp -auth file
@ -4607,7 +4614,7 @@ libvncserver options:
% x11vnc -help
x11vnc: allow VNC connections to real X11 displays. 0.7.2 lastmod: 2005-06-18
x11vnc: allow VNC connections to real X11 displays. 0.7.2 lastmod: 2005-06-21
Typical usage is:

@ -2,7 +2,7 @@
.TH X11VNC "1" "June 2005" "x11vnc " "User Commands"
.SH NAME
x11vnc - allow VNC connections to real X11 displays
version: 0.7.2, lastmod: 2005-06-18
version: 0.7.2, lastmod: 2005-06-21
.SH SYNOPSIS
.B x11vnc
[OPTION]...

@ -382,7 +382,7 @@ double xdamage_scheduled_mark = 0.0;
sraRegionPtr xdamage_scheduled_mark_region = NULL;
/* date +'lastmod: %Y-%m-%d' */
char lastmod[] = "0.7.2 lastmod: 2005-06-18";
char lastmod[] = "0.7.2 lastmod: 2005-06-21";
int hack_val = 0;
/* X display info */
@ -25850,7 +25850,7 @@ int try_copyrect(Window frame, int x, int y, int w, int h, int dx, int dy,
dt_bad_check = time(0);
}
if (0 && dt_bad) {
if (dt_bad && wireframe_in_progress) {
sraRegionPtr rect;
/* send the whole thing... */
x1 = crfix(nfix(x, dpy_x), dx, dpy_x);
@ -27921,7 +27921,13 @@ void check_cursor_changes(void) {
if (cursor_changes) {
double tm, max_push = 0.125, multi_push = 0.01, wait = 0.02;
int cursor_shape, dopush = 0, link, latency, netrate;
cursor_shape = cursor_shape_updates_clients(screen);
if (! all_clients_initialized()) {
/* play it safe */
return;
}
if (0) cursor_shape = cursor_shape_updates_clients(screen);
dtime0(&tm);
link = link_rate(&latency, &netrate);
@ -30512,6 +30518,78 @@ void immediate_switch_user(int argc, char* argv[]) {
}
}
void xopen_display_fail_message(char *disp) {
fprintf(stderr, "\n");
fprintf(stderr, "*** x11vnc was unable to open the X DISPLAY: \"%s\","
" it cannot continue.\n", disp);
fprintf(stderr, "*** There may be \"Xlib:\" error messages above"
" with details about the failure.\n");
fprintf(stderr, "\n");
fprintf(stderr, "Some tips and guidelines:\n");
fprintf(stderr, "\n");
fprintf(stderr, " * An X server (the one you wish to view) must"
" be running before x11vnc is\n");
fprintf(stderr, " started: x11vnc does not start the X server.\n");
fprintf(stderr, "\n");
fprintf(stderr, " * You must use -display <disp>, -OR- set and"
" export your DISPLAY\n");
fprintf(stderr, " environment variable to refer to the display of"
" the desired X server.\n");
fprintf(stderr, " - Usually the display is simply \":0\" (in fact"
" x11vnc uses this if you forget\n");
fprintf(stderr, " to specify it), but in some multi-user"
" situations it could be \":1\", \":2\",\n");
fprintf(stderr, " or even \":137\". Ask your administrator"
" or a guru if you are having\n");
fprintf(stderr, " difficulty determining what your X DISPLAY is.\n");
fprintf(stderr, "\n");
fprintf(stderr, " * Next, you need to have sufficient permissions"
" (Xauthority) \n");
fprintf(stderr, " to connect to the X DISPLAY. Here are some"
" Tips:\n");
fprintf(stderr, "\n");
fprintf(stderr, " - Often, you just need to run x11vnc as the user"
" logged into the X session.\n");
fprintf(stderr, " So make sure to be that user when you type"
" x11vnc.\n");
fprintf(stderr, " - Being root is usually not enough because the"
" incorrect MIT-MAGIC-COOKIE\n");
fprintf(stderr, " file will be accessed. The cookie file contains"
" the secret key that\n");
fprintf(stderr, " allows x11vnc to connect to the desired"
" X DISPLAY.\n");
fprintf(stderr, " - You can explicity indicate which MIT-MAGIC-COOKIE"
" file should be used\n");
fprintf(stderr, " by the -auth option, e.g.:\n");
fprintf(stderr, " x11vnc -auth /home/someuser/.Xauthority"
" -display :0\n");
fprintf(stderr, " you must have read permission for that file.\n");
fprintf(stderr, "\n");
fprintf(stderr, " - If NO ONE is logged into an X session yet, but"
" there is a greeter login\n");
fprintf(stderr, " program like \"gdm\", \"kdm\", \"xdm\", or"
" \"dtlogin\" running, you will need\n");
fprintf(stderr, " to find and use the raw display manager"
" MIT-MAGIC-COOKIE file.\n");
fprintf(stderr, " Some examples for various display managers:\n");
fprintf(stderr, "\n");
fprintf(stderr, " gdm: -auth /var/gdm/:0.Xauth\n");
fprintf(stderr, " kdm: -auth /var/lib/kdm/A:0-crWk72\n");
fprintf(stderr, " xdm: -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk\n");
fprintf(stderr, " dtlogin: -auth /var/dt/A:0-UgaaXa\n");
fprintf(stderr, "\n");
fprintf(stderr, " Only root will have read permission for the"
" file, and so x11vnc must be run\n");
fprintf(stderr, " as root. The random characters in the filenames"
" will of course change,\n");
fprintf(stderr, " and the directory the cookie file resides in may"
" also be system dependent.\n");
fprintf(stderr, " Sometimes the command \"ps wwaux | grep auth\""
" can reveal the file location.\n");
fprintf(stderr, "\n");
fprintf(stderr, "See also: http://www.karlrunge.com/x11vnc/#faq\n");
}
int main(int argc, char* argv[]) {
int i, len, tmpi;
@ -31654,6 +31732,7 @@ int main(int argc, char* argv[]) {
if (! dpy && ! use_dpy && ! getenv("DISPLAY")) {
int i, s = 4;
rfbLogEnable(1);
rfbLog("\a\n");
rfbLog("*** XOpenDisplay failed. No -display or DISPLAY.\n");
rfbLog("*** Trying \":0\" in %d seconds. Press Ctrl-C to"
@ -31670,10 +31749,18 @@ int main(int argc, char* argv[]) {
rfbLog("*** XOpenDisplay of \":0\" successful.\n");
}
rfbLog("\n");
if (quiet) rfbLogEnable(0);
}
if (! dpy) {
rfbLog("XOpenDisplay failed (%s)\n", use_dpy ? use_dpy:"null");
char *d = use_dpy;
if (!d) d = getenv("DISPLAY");
if (!d) d = "null";
rfbLogEnable(1);
fprintf(stderr, "\n");
rfbLog("***************************************\n", d);
rfbLog("*** XOpenDisplay failed (%s)\n", d);
xopen_display_fail_message(d);
exit(1);
} else if (use_dpy) {
if (! quiet) rfbLog("Using X display %s\n", use_dpy);

Loading…
Cancel
Save