summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrunge <runge>2005-06-21 13:28:22 +0000
committerrunge <runge>2005-06-21 13:28:22 +0000
commitb2323a90fd8e5d8f481f871ead688db1961d6991 (patch)
tree1bac4571f584e1af82bc188f89ed284dbf164d66
parent7b933e170e04576873bb9bcd3f4d19c8ffbf83af (diff)
downloadlibtdevnc-b2323a90.tar.gz
libtdevnc-b2323a90.zip
x11vnc: long info and tips when XOpenDisplay fails, reinstate "bad desktop" for wireframe
-rw-r--r--x11vnc/ChangeLog4
-rw-r--r--x11vnc/README37
-rw-r--r--x11vnc/x11vnc.12
-rw-r--r--x11vnc/x11vnc.c95
4 files changed, 118 insertions, 20 deletions
diff --git a/x11vnc/ChangeLog b/x11vnc/ChangeLog
index 95456f0..ce37ec6 100644
--- a/x11vnc/ChangeLog
+++ b/x11vnc/ChangeLog
@@ -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
diff --git a/x11vnc/README b/x11vnc/README
index a5099a8..0d857e8 100644
--- a/x11vnc/README
+++ b/x11vnc/README
@@ -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:
diff --git a/x11vnc/x11vnc.1 b/x11vnc/x11vnc.1
index 7403dd1..a364c78 100644
--- a/x11vnc/x11vnc.1
+++ b/x11vnc/x11vnc.1
@@ -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]...
diff --git a/x11vnc/x11vnc.c b/x11vnc/x11vnc.c
index f448ee8..06c6595 100644
--- a/x11vnc/x11vnc.c
+++ b/x11vnc/x11vnc.c
@@ -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);