summaryrefslogtreecommitdiffstats
path: root/x11vnc/help.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11vnc/help.c')
-rw-r--r--x11vnc/help.c187
1 files changed, 145 insertions, 42 deletions
diff --git a/x11vnc/help.c b/x11vnc/help.c
index 7d41797..3ea9606 100644
--- a/x11vnc/help.c
+++ b/x11vnc/help.c
@@ -400,7 +400,7 @@ void print_help(int mode) {
"-http_ssl As -http, but force lookup for ssl classes subdir.\n"
#endif
"\n"
-"-avahi Use the Avahi/mDNS ZeroConf protocol to advertize\n"
+"-avahi Use the Avahi/mDNS ZeroConf protocol to advertise\n"
" this VNC server to the local network. (Related terms:\n"
" Rendezvous, Bonjour). Depending on your setup, you\n"
" may need to start avahi-daemon and open udp port 5353\n"
@@ -432,8 +432,67 @@ void print_help(int mode) {
"-connect_or_exit str As with -connect, except if none of the reverse\n"
" connections succeed, then x11vnc shutdowns immediately.\n"
"\n"
-" If you do not want x11vnc to listen on ANY interface\n"
-" use -rfbport 0\n"
+" By the way, if you do not want x11vnc to listen on\n"
+" ANY interface use -rfbport 0 which is handy for the\n"
+" -connect_or_exit mode.\n"
+"\n"
+"-proxy string Use proxy in string (e.g. host:port) as a proxy for\n"
+" making reverse connections (-connect or -connect_or_exit\n"
+" options).\n"
+"\n"
+" Web proxies are supported, but note by default most of\n"
+" them only support destination connections to ports 443\n"
+" or 563, so this might not be very useful (the viewer\n"
+" would need to listen on that port or the router would\n"
+" have to do a port redirection).\n"
+"\n"
+" A web proxy may be specified by either \"host:port\"\n"
+" or \"http://host:port\" (the port is required even if\n"
+" it is the common choices 80 or 8080)\n"
+"\n"
+" SOCKS4, SOCKS4a, and SOCKS5 are also supported.\n"
+" SOCKS proxies normally do not have restrictions on the\n"
+" destination port number.\n"
+"\n"
+" Use a format like this: socks://host:port or\n"
+" socks5://host:port. Note that ssh -D does not support\n"
+" SOCKS4a, so use socks5://. For socks:// SOCKS4 is used\n"
+" on a numerical IP and \"localhost\", otherwise SOCKS4a\n"
+" is used (and so the proxy tries to do the DNS lookup).\n"
+"\n"
+" An experimental mode is \"-proxy http://host:port/...\"\n"
+" Note the \"/\" after the port that distinguishes it from\n"
+" a normal web proxy. The port must be supplied even if\n"
+" it is the default 80. For this mode a GET is done to\n"
+" the supplied URL with the string host=H&port=P appended.\n"
+" H and P will be the -connect reverse connect host\n"
+" and port. Use the string \"__END__\" to disable the\n"
+" appending. The basic idea here is that maybe some cgi\n"
+" script provides the actual viewer hookup and tunnelling.\n"
+" How to actually achieve this within cgi, php, etc. is\n"
+" not clear... A custom web server or apache module\n"
+" would be straight-forward.\n"
+"\n"
+" Another experimental mode is \"-proxy ssh://user@host\"\n"
+" in which case a SSH tunnel is used for the proxying.\n"
+" \"user@\" is not needed unless your unix username is\n"
+" different on \"host\". For a non-standard SSH port\n"
+" use ssh://user@host:port. If proxies are chained (see\n"
+" next paragraph) then the ssh one must be the first one.\n"
+" If ssh-agent is not active, then the ssh password needs\n"
+" to be entered in the terminal where x11vnc is running.\n"
+" Examples:\n"
+"\n"
+" -connect localhost:0 -proxy ssh://me@friends-pc:2222\n"
+"\n"
+" -connect snoopy:0 -proxy ssh://ssh.company.com\n"
+"\n"
+" Multiple proxies may be chained together in case one\n"
+" needs to ricochet off of a number of hosts to finally\n"
+" reach the VNC viewer. Up to 3 may be chained, separate\n"
+" them by commas in the order they are to be connected to.\n"
+" E.g.: http://host1:port1,socks5://host2:port2 or three\n"
+" like: first,second,third\n"
"\n"
"-vncconnect Monitor the VNC_CONNECT X property set by the standard\n"
"-novncconnect VNC program vncconnect(1). When the property is\n"
@@ -578,7 +637,7 @@ void print_help(int mode) {
" If multiple non-blank lines exist in the file they are\n"
" all taken as valid passwords. Blank lines are ignored.\n"
" Password lines may be \"commented out\" (ignored) if\n"
-" they begin with the charactor \"#\" or the line contains\n"
+" they begin with the character \"#\" or the line contains\n"
" the string \"__SKIP__\". Lines may be annotated by use\n"
" of the \"__COMM__\" string: from it to the end of the\n"
" line is ignored. An empty password may be specified\n"
@@ -721,7 +780,7 @@ void print_help(int mode) {
"-unixpw_nis [list] As -unixpw above, however do not use su(1) but rather\n"
" use the traditional getpwnam(3) + crypt(3) method to\n"
" verify passwords. All of the above -unixpw options and\n"
-" contraints apply.\n"
+" constraints apply.\n"
"\n"
" This mode requires that the encrypted passwords be\n"
" readable. Encrypted passwords stored in /etc/shadow\n"
@@ -1090,6 +1149,11 @@ void print_help(int mode) {
" with libssl support it will exit immediately when -ssl\n"
" is prescribed.\n"
"\n"
+" The VNC Viewer-side needs support SSL as well.\n"
+" See this URL and also the discussion below for ideas\n"
+" on how to enable SSL support for the viewer:\n"
+" http://www.karlrunge.com/x11vnc/#faq-ssl-tunnel-viewers\n"
+"\n"
" [pem] is optional, use \"-ssl /path/to/mycert.pem\"\n"
" to specify a PEM certificate file to use to identify\n"
" and provide a key for this server. See openssl(1) for\n"
@@ -1098,12 +1162,12 @@ void print_help(int mode) {
" The connecting VNC viewer SSL tunnel can optionally\n"
" authenticate this server if they have the public\n"
" key part of the certificate (or a common certificate\n"
-" authority, CA, is a more sophisicated way to verify\n"
+" authority, CA, is a more sophisticated way to verify\n"
" this server's cert, see -sslGenCA below). This is\n"
" used to prevent man-in-the-middle attacks. Otherwise,\n"
" if the VNC viewer accepts this server's key without\n"
" verification, at least the traffic is protected\n"
-" from passive sniffing on the network (but NOT from\n"
+" from passive sniffing on the network (but *NOT* from\n"
" man-in-the-middle attacks).\n"
"\n"
" If [pem] is not supplied and the openssl(1) utility\n"
@@ -1136,6 +1200,8 @@ void print_help(int mode) {
" made based on your answers to its prompts for info such\n"
" as OrganizationalName, CommonName, etc.\n"
"\n"
+" We expect most users to use \"-ssl SAVE\".\n"
+"\n"
" Use \"SAVE-<string>\" and \"SAVE_PROMPT-<string>\"\n"
" to refer to the file ~/.vnc/certs/server-<string>.pem\n"
" instead. E.g. \"SAVE-charlie\" will store to the file\n"
@@ -1146,20 +1212,14 @@ void print_help(int mode) {
"\n"
" Example: x11vnc -ssl SAVE -display :0 ...\n"
"\n"
-#if 0
-" Reverse connections are disabled in -ssl mode because\n"
-" there is no way to ensure that data channel will\n"
-" be encrypted. Set X11VNC_SSL_ALLOW_REVERSE=1 to\n"
-" override this.\n"
-"\n"
-#endif
-" Your VNC viewer will also need to be able to connect\n"
+" Your VNC viewer will need to be able to connect\n"
" via SSL. See the discussion below under -stunnel and\n"
-" the FAQ (ss_vncviewer script) for how this might be\n"
-" achieved. E.g. on Unix it is easy to write a shell\n"
-" script that starts up stunnel and then vncviewer.\n"
-" Also in the x11vnc source a SSL enabled Java VNC Viewer\n"
-" applet is provided in the classes/ssl directory.\n"
+" http://www.karlrunge.com/x11vnc/#faq-ssl-tunnel-viewers\n"
+" for how this might be achieved. E.g. on Unix it is\n"
+" easy to write a shell script that starts up stunnel\n"
+" and then vncviewer. Also in the x11vnc source a SSL\n"
+" enabled Java VNC Viewer applet is provided in the\n"
+" classes/ssl directory.\n"
"\n"
"-ssltimeout n Set SSL read timeout to n seconds. In some situations\n"
" (i.e. an iconified viewer in Windows) the viewer stops\n"
@@ -1326,7 +1386,7 @@ void print_help(int mode) {
" Once you have generated the CA you can distribute\n"
" its certificate part, [dir]/CA/cacert.pem, to other\n"
" workstations where VNC viewers will be run. One will\n"
-" need to \"import\" this certicate in the applications,\n"
+" need to \"import\" this certificate in the applications,\n"
" e.g. Web browser, Java applet plugin, stunnel, etc.\n"
" Next, you can create and sign keys using the CA with\n"
" the -sslGenCert option below.\n"
@@ -1400,7 +1460,7 @@ void print_help(int mode) {
" Similar to -sslGenCA, you will be prompted to fill\n"
" in some information that will be recorded in the\n"
" certificate when it is created. Tip: if you know\n"
-" the fully-quailified hostname other people will be\n"
+" the fully-qualified hostname other people will be\n"
" connecting to you can use that as the CommonName \"CN\"\n"
" to avoid some applications (e.g. web browsers and java\n"
" plugin) complaining it does not match the hostname.\n"
@@ -1408,7 +1468,7 @@ void print_help(int mode) {
" You will also need to supply the CA private key\n"
" passphrase to unlock the private key created from\n"
" -sslGenCA. This private key is used to sign the server\n"
-" or client certicate.\n"
+" or client certificate.\n"
"\n"
" The \"server\" certs can be used by x11vnc directly by\n"
" pointing to them via the -ssl [pem] option. The default\n"
@@ -1621,13 +1681,51 @@ void print_help(int mode) {
"\n"
" This spares the user from having to type in\n"
" https://mygateway.com/?PORT=443 into their web\n"
-" browser. Note taht port 443 is the default https port;\n"
-" other ports must be explicity indicated, for example:\n"
+" browser. Note that port 443 is the default https port;\n"
+" other ports must be explicitly indicated, for example:\n"
" https://mygateway.com:8000/?PORT=8000. To avoid having\n"
" to include the PORT= in the browser URL, simply supply\n"
" \"-httpsredir\" to x11vnc.\n"
"\n"
#endif
+"-ssh user@host:disp Create a remote listening port on machine \"host\"\n"
+" via a SSH tunnel using the -R rport:localhost:lport\n"
+" method. lport will be the local x11vnc listening port,\n"
+" so a connection to rport (5900+disp) on \"host\"\n"
+" will reach x11vnc. E.g. fred@snoopy.com:0\n"
+"\n"
+" This could be useful if a firewall/router prevents\n"
+" incoming connections to the x11vnc machine, but\n"
+" the ssh machine \"host\" can be reached by the VNC\n"
+" viewer. \"user@\" is not needed unless the remote unix\n"
+" username differs from the current one.\n"
+"\n"
+" By default the remote sshd is usually configured to\n"
+" only listen on localhost for rport, so the viewer may\n"
+" need to ssh -L redir to \"host\" as well (See SSVNC to\n"
+" automate this). The sshd setting GatewayPorts enables\n"
+" listening on all interfaces for rport; viewers can\n"
+" reach it more easily.\n"
+"\n"
+" \"disp\" is the VNC display for the remote SSH side,\n"
+" e.g. 0 corresponds to port 5900, etc. If disp is\n"
+" greater than 200 the value is used as the port. Use a\n"
+" negative value to force a low port, e.g. host:-80 will\n"
+" use port 80.\n"
+"\n"
+" If ssh-agent is not active, then the ssh password needs\n"
+" to be entered in the terminal where x11vnc is running.\n"
+"\n"
+" By default the remote ssh will issue a 'sleep 300' to\n"
+" wait for the incoming connection for 5 mins. To modify\n"
+" this use user@host:disp+secs.\n"
+"\n"
+" If the remote SSH server is on a non-standard port\n"
+" (i.e. not 22) use user@host:port:disp+secs.\n"
+"\n"
+" Note that the ssh process may NOT be killed when\n"
+" x11vnc exits. It tries by looking at ps(1) output.\n"
+"\n"
"-usepw If no other password method was supplied on the command\n"
" line, first look for ~/.vnc/passwd and if found use it\n"
" with -rfbauth; next, look for ~/.vnc/passwdfile and\n"
@@ -1674,7 +1772,7 @@ void print_help(int mode) {
" in RFB_CLIENT_COUNT. RFB_MODE will be \"accept\".\n"
" RFB_STATE will be PROTOCOL_VERSION, SECURITY_TYPE,\n"
" AUTHENTICATION, INITIALISATION, NORMAL, or UNKNOWN\n"
-" indicating up to which state the client has acheived.\n"
+" indicating up to which state the client has achieved.\n"
" RFB_LOGIN_VIEWONLY will be 0, 1, or -1 (unknown).\n"
" RFB_USERNAME, RFB_LOGIN_TIME, and RFB_CURRENT_TIME may\n"
" also be set.\n"
@@ -2913,7 +3011,7 @@ void print_help(int mode) {
"-nowait_bog Do not detect if the screen polling is \"bogging down\"\n"
" and sleep more. Some activities with no user input can\n"
" slow things down a lot: consider a large terminal window\n"
-" with a long build running in it continously streaming\n"
+" with a long build running in it continuously streaming\n"
" text output. By default x11vnc will try to detect this\n"
" (3 screen polls in a row each longer than 0.25 sec with\n"
" no user input), and sleep up to 1.5 secs to let things\n"
@@ -3110,7 +3208,7 @@ void print_help(int mode) {
" so take care.\n"
"\n"
" If the string begins with \"video\", see the VIDEO4LINUX\n"
-" discusion below where the device may be queried for\n"
+" discussion below where the device may be queried for\n"
" (and possibly set) the framebuffer parameters.\n"
"\n"
" If the string begins with \"console\", \"/dev/fb\", or\n"
@@ -3668,10 +3766,10 @@ void print_help(int mode) {
" nohttp disable http client connections.\n"
" deny deny any new connections, same as \"lock\"\n"
" nodeny allow new connections, same as \"unlock\"\n"
-" avahi enable avahi service advertizing.\n"
-" noavahi disable avahi service advertizing.\n"
-" mdns enable avahi service advertizing.\n"
-" nomdns disable avahi service advertizing.\n"
+" avahi enable avahi service advertising.\n"
+" noavahi disable avahi service advertising.\n"
+" mdns enable avahi service advertising.\n"
+" nomdns disable avahi service advertising.\n"
/* access, filename */
" connect:host do reverse connection to host, \"host\"\n"
" may be a comma separated list of hosts\n"
@@ -3684,6 +3782,8 @@ void print_help(int mode) {
" If you know the client internal hex ID,\n"
" e.g. 0x3 (returned by \"-query clients\"\n"
" and RFB_CLIENT_ID) you can use that too.\n"
+" proxy:host:port set reverse connection proxy (empty to\n"
+" disable).\n"
/* access */
" allowonce:host For the next connection only, allow\n"
" connection from \"host\".\n"
@@ -3819,11 +3919,14 @@ void print_help(int mode) {
" noncache_no_moveraise disable no_moveraise mode.\n"
" ncache_no_dtchange enable ncache_no_dtchange mode.\n"
" noncache_no_dtchange disable ncache_no_dtchange mode.\n"
+" ncache_old_wm enable ncache_old_wm mode.\n"
+" noncache_old_wm disable ncache_old_wm mode.\n"
" ncache_no_rootpixmap enable ncache_no_rootpixmap.\n"
" noncache_no_rootpixmap disable ncache_no_rootpixmap.\n"
" ncache_reset_rootpixmap recheck the root pixmap, ncrp\n"
" ncache_keep_anims enable ncache_keep_anims.\n"
" noncache_keep_anims disable ncache_keep_anims.\n"
+" ncache_pad:n set -ncache_pad to n.\n"
" wireframe enable -wireframe mode. same as \"wf\"\n"
" nowireframe disable -wireframe mode. same as \"nowf\"\n"
" wireframe:str enable -wireframe mode string.\n"
@@ -3981,8 +4084,8 @@ void print_help(int mode) {
" 8to24_opts 24to32 no24to32 visual scale scale_cursor\n"
" viewonly noviewonly shared noshared forever noforever\n"
" once timeout tightfilexfer notightfilexfer ultrafilexfer\n"
-" noultrafilexfer rfbversion deny lock nodeny unlock\n"
-" avahi mdns noavahi nomdns connect allowonce allow\n"
+" noultrafilexfer rfbversion deny lock nodeny unlock avahi\n"
+" mdns noavahi nomdns connect proxy allowonce allow\n"
" localhost nolocalhost listen lookup nolookup accept\n"
" afteraccept gone shm noshm flipbyteorder noflipbyteorder\n"
" onetile noonetile solid_color solid nosolid blackout\n"
@@ -4004,12 +4107,12 @@ void print_help(int mode) {
" nodragging ncache_cr noncache_cr ncache_no_moveraise\n"
" noncache_no_moveraise ncache_no_dtchange\n"
" noncache_no_dtchange ncache_no_rootpixmap\n"
-" noncache_no_rootpixmap ncache_reset_rootpixmap\n"
+" noncache_no_rootpixmap ncache_reset_rootpixmap ncrp\n"
" ncache_keep_anims noncache_keep_anims ncache_old_wm\n"
-" noncache_old_wm ncache noncache ncache_size debug_ncache\n"
-" nodebug_ncache wireframe_mode wireframe wf nowireframe\n"
-" nowf wireframelocal wfl nowireframelocal nowfl\n"
-" wirecopyrect wcr nowirecopyrect nowcr scr_area\n"
+" noncache_old_wm ncache_pad ncache noncache ncache_size\n"
+" debug_ncache nodebug_ncache wireframe_mode wireframe wf\n"
+" nowireframe nowf wireframelocal wfl nowireframelocal\n"
+" nowfl wirecopyrect wcr nowirecopyrect nowcr scr_area\n"
" scr_skip scr_inc scr_keys scr_term scr_keyrepeat\n"
" scr_parms scrollcopyrect scr noscrollcopyrect noscr\n"
" fixscreen noxrecord xrecord reset_record pointer_mode\n"
@@ -4074,7 +4177,7 @@ void print_help(int mode) {
" command was processed by querying for any new settings.\n"
" Note however that there is timeout of a few seconds so\n"
" if the x11vnc takes longer than that to process the\n"
-" requests the requestor will think that a failure has\n"
+" requests the requester will think that a failure has\n"
" taken place.\n"
"\n"
"-noremote Do not process any remote control commands or queries.\n"
@@ -4120,7 +4223,7 @@ void print_help(int mode) {
" associated options is:\n"
"\n"
" stunnel, ssl, unixpw, WAIT, id, accept, afteraccept,\n"
-" gone, pipeinput, v4l-info, rawfb-setup, dt, gui,\n"
+" gone, pipeinput, v4l-info, rawfb-setup, dt, gui, ssh,\n"
" storepasswd, passwdfile, custom_passwd, crash.\n"
"\n"
" See each option's help to learn the associated external\n"
@@ -4257,7 +4360,7 @@ void xopen_display_fail_message(char *disp) {
" 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"
+ fprintf(stderr, " - You can explicitly 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"