parent
38b55a056b
commit
8dead0759f
@ -1,158 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006 by Karl J. Runge <runge@karlrunge.com>
|
|
||||||
#
|
|
||||||
# ssl_tightvncviewer:
|
|
||||||
#
|
|
||||||
# A wrapper that calls ssl_vncviewer to use the enhanced TightVNC viewer.
|
|
||||||
#
|
|
||||||
# The enhanced TightVNC viewer features are:
|
|
||||||
#
|
|
||||||
# - SSL support for connections using the co-bundled stunnel program.
|
|
||||||
# - rfbNewFBSize VNC support (screen resizing)
|
|
||||||
# - cursor alphablending with x11vnc at 32bpp
|
|
||||||
# - xgrabserver support for fullscreen mode (for old window mgrs)
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Your platform (e.g. Linux.i686) is autodetected and enhanced
|
|
||||||
# vncviewer and stunnel binaries for it are used (see the ./bin directory).
|
|
||||||
#
|
|
||||||
# See the build.unix script if your platform is not in this package.
|
|
||||||
# You can also set the env. var. UNAME=os.arch to any "os.arch" you want
|
|
||||||
# to override the autodetetion.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
#
|
|
||||||
# ssl_tightvncviewer [ssl_vncviewer-args] hostname:N [tightvncviewer-args]
|
|
||||||
#
|
|
||||||
# "hostname:N" is the host and VNC display to connect to, e.g. snoopy:0
|
|
||||||
#
|
|
||||||
# See the script util/ssl_vncviewer for details about its arguments:
|
|
||||||
#
|
|
||||||
# -verify pemfile
|
|
||||||
# -mycert pemfile
|
|
||||||
# -proxy phost:pport
|
|
||||||
# -alpha
|
|
||||||
# -grab
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# If the *very first* argument is "-cotvnc" then it is assumed you are on
|
|
||||||
# Darwin and want to run the Chicken of the VNC viewer via our wrapper.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# See the TightVNC viewer documentation for on its cmdline arguments.
|
|
||||||
#
|
|
||||||
# For convenience, here is the current (7/2006) TightVNC viewer -help output:
|
|
||||||
#
|
|
||||||
# TightVNC viewer version 1.3dev5
|
|
||||||
#
|
|
||||||
# Usage: vncviewer [<OPTIONS>] [<HOST>][:<DISPLAY#>]
|
|
||||||
# vncviewer [<OPTIONS>] [<HOST>][::<PORT#>]
|
|
||||||
# vncviewer [<OPTIONS>] -listen [<DISPLAY#>]
|
|
||||||
# vncviewer -help
|
|
||||||
#
|
|
||||||
# <OPTIONS> are standard Xt options, or:
|
|
||||||
# -via <GATEWAY>
|
|
||||||
# -shared (set by default)
|
|
||||||
# -noshared
|
|
||||||
# -viewonly
|
|
||||||
# -fullscreen
|
|
||||||
# -noraiseonbeep
|
|
||||||
# -passwd <PASSWD-FILENAME> (standard VNC authentication)
|
|
||||||
# -user <USERNAME> (Unix login authentication)
|
|
||||||
# -encodings <ENCODING-LIST> (e.g. "tight copyrect")
|
|
||||||
# -bgr233
|
|
||||||
# -owncmap
|
|
||||||
# -truecolour
|
|
||||||
# -depth <DEPTH>
|
|
||||||
# -compresslevel <COMPRESS-VALUE> (0..9: 0-fast, 9-best)
|
|
||||||
# -quality <JPEG-QUALITY-VALUE> (0..9: 0-low, 9-high)
|
|
||||||
# -nojpeg
|
|
||||||
# -nocursorshape
|
|
||||||
# -x11cursor
|
|
||||||
# -autopass
|
|
||||||
#
|
|
||||||
# Option names may be abbreviated, e.g. -bgr instead of -bgr233.
|
|
||||||
# See the manual page for more information.
|
|
||||||
#
|
|
||||||
|
|
||||||
if [ "X$1" = "X-h" -o "X$1" = "X-help" -o "X$1" = "X--help" ]; then
|
|
||||||
head -76 "$0" | grep -v bin/sh
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Include /usr/bin... to be sure to get regular utilities:
|
|
||||||
#
|
|
||||||
PATH=$PATH:/usr/bin:/bin
|
|
||||||
export PATH
|
|
||||||
|
|
||||||
# Set this for ssl_vncviewer to pick up:
|
|
||||||
#
|
|
||||||
use_ours=0
|
|
||||||
if [ "X$1" = "X-cotvnc" ]; then
|
|
||||||
shift
|
|
||||||
DARWIN_COTVNC=1
|
|
||||||
export DARWIN_COTVNC
|
|
||||||
fi
|
|
||||||
if [ "X$VNCVIEWERCMD" = "X" ]; then
|
|
||||||
VNCVIEWERCMD="vncviewer"
|
|
||||||
export VNCVIEWERCMD
|
|
||||||
if [ "X$DARWIN_COTVNC" = "X" ]; then
|
|
||||||
use_ours=1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# work out os.arch platform string and check for binaries:
|
|
||||||
#
|
|
||||||
name=$UNAME
|
|
||||||
if [ "X$name" = "X" ]; then
|
|
||||||
name=`uname -sm | sed -e 's/ /./g'`
|
|
||||||
fi
|
|
||||||
|
|
||||||
f="$0"
|
|
||||||
for t in 1 2 3 4 5
|
|
||||||
do
|
|
||||||
if [ -L "$f" ]; then
|
|
||||||
f0="$f"
|
|
||||||
f=`ls -l "$f" | sed -e 's/^.* -> //'`
|
|
||||||
if echo "$f" | grep '^/' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
f="`dirname "$f0"`/$f"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
dir=`dirname "$f"`
|
|
||||||
|
|
||||||
if [ ! -d "$dir/$name" ]; then
|
|
||||||
echo "cannot find platform dir: $dir/$name for your OS:"
|
|
||||||
uname -sm
|
|
||||||
echo "you can set the \$UNAME env. var. to override the setting."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Put our os.arch and other utils dirs at head of PATH to be sure to
|
|
||||||
# pick them up:
|
|
||||||
#
|
|
||||||
PATH="$dir:$dir/$name:$dir/util:$PATH"
|
|
||||||
if echo "$dir" | grep '^/' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
dir=`pwd`/$dir
|
|
||||||
PATH="$dir:$dir/$name:$dir/util:$PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
STUNNEL_EXTRA_OPTS=${STUNNEL_EXTRA_OPTS:-"maxconn = 1"}
|
|
||||||
export STUNNEL_EXTRA_OPTS
|
|
||||||
|
|
||||||
# If ours (and not cotvnc), force the use of tight encoding for localhost
|
|
||||||
# redir connection:
|
|
||||||
#
|
|
||||||
#
|
|
||||||
if [ $use_ours = 1 ]; then
|
|
||||||
ssl_vncviewer "$@" -encodings 'copyrect tight zrle zlib hextile'
|
|
||||||
else
|
|
||||||
ssl_vncviewer "$@"
|
|
||||||
fi
|
|
@ -1,78 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006 by Karl J. Runge <runge@karlrunge.com>
|
|
||||||
#
|
|
||||||
# ssl_vnc_gui:
|
|
||||||
#
|
|
||||||
# A wrapper for ssl_tightvncviewer using a tcl/tk gui.
|
|
||||||
#
|
|
||||||
# See ssl_tightvncviewer for details.
|
|
||||||
#
|
|
||||||
if [ "X$XTERM_PRINT" != "X" ]; then
|
|
||||||
XTERM_PRINT=""
|
|
||||||
cat > /dev/null
|
|
||||||
fi
|
|
||||||
if [ "X$1" = "X-bg" ]; then
|
|
||||||
shift
|
|
||||||
$0 "$@" &
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
PATH=$PATH:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/openwin/bin
|
|
||||||
export PATH
|
|
||||||
|
|
||||||
|
|
||||||
SSL_VNC_GUI_CMD="$0 $*"
|
|
||||||
export SSL_VNC_GUI_CMD
|
|
||||||
SSL_VNC_LAUNCH=$SSL_VNC_GUI_CMD
|
|
||||||
export SSL_VNC_LAUNCH
|
|
||||||
|
|
||||||
# work out os.arch platform string and check for binaries:
|
|
||||||
#
|
|
||||||
name=$UNAME
|
|
||||||
if [ "X$name" = "X" ]; then
|
|
||||||
name=`uname -sm | sed -e 's/ /./g'`
|
|
||||||
fi
|
|
||||||
|
|
||||||
f="$0"
|
|
||||||
for t in 1 2 3 4 5
|
|
||||||
do
|
|
||||||
if [ -L "$f" ]; then
|
|
||||||
f0="$f"
|
|
||||||
f=`ls -l "$f" | sed -e 's/^.* -> //'`
|
|
||||||
if echo "$f" | grep '^/' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
f="`dirname "$f0"`/$f"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
dir=`dirname "$f"`
|
|
||||||
|
|
||||||
if [ ! -d "$dir/$name" ]; then
|
|
||||||
echo "cannot find platform dir: $dir/$name for your OS:"
|
|
||||||
uname -sm
|
|
||||||
echo "you can set the \$UNAME env. var. to override the setting."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Put our os.arch and other utils dirs at head of PATH to be sure to
|
|
||||||
# pick them up:
|
|
||||||
#
|
|
||||||
PATH="$dir:$dir/$name:$dir/util:$PATH"
|
|
||||||
if echo "$dir" | grep '^/' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
dir=`pwd`/$dir
|
|
||||||
PATH="$dir:$dir/$name:$dir/util:$PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
SSL_VNC_BASEDIR="$dir"
|
|
||||||
export SSL_VNC_BASEDIR
|
|
||||||
|
|
||||||
STUNNEL_EXTRA_OPTS=${STUNNEL_EXTRA_OPTS:-"maxconn = 1"}
|
|
||||||
export STUNNEL_EXTRA_OPTS
|
|
||||||
|
|
||||||
exec ssl_tightvncviewer.tcl "$@"
|
|
@ -1,163 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006 by Karl J. Runge <runge@karlrunge.com>
|
|
||||||
#
|
|
||||||
# tightvncviewer:
|
|
||||||
#
|
|
||||||
# A wrapper that calls the enhanced TightVNC viewer.
|
|
||||||
#
|
|
||||||
# The enhanced TightVNC viewer features are:
|
|
||||||
#
|
|
||||||
# - SSL support for connections using the co-bundled stunnel program.
|
|
||||||
# - rfbNewFBSize VNC support (screen resizing)
|
|
||||||
# - cursor alphablending with x11vnc at 32bpp
|
|
||||||
# - xgrabserver support for fullscreen mode (for old window mgrs)
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Your platform (e.g. Linux.i686) is autodetected and enhanced
|
|
||||||
# vncviewer and stunnel binaries for it are used (see the ./bin directory).
|
|
||||||
#
|
|
||||||
# See the build.unix script if your platform is not in this package if
|
|
||||||
# you want to build one.
|
|
||||||
#
|
|
||||||
# See the build.unix script if your platform is not in this package if you want to build one.
|
|
||||||
# You can also set the env. var. UNAME=os.arch to any "os.arch" you want
|
|
||||||
# to override the autodetetion.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
#
|
|
||||||
# tightvncviewer [tightvncviewer-args] hostname:N
|
|
||||||
# or
|
|
||||||
# tightvncviewer -ssl hostname:N [tightvncviewer-args]
|
|
||||||
#
|
|
||||||
# "hostname:N" is the host and VNC display to connect to, e.g. snoopy:0
|
|
||||||
#
|
|
||||||
# If the *very first* argument is "-cotvnc" then it is assumed you are on
|
|
||||||
# Darwin and want to run the Chicken of the VNC viewer via our wrapper.
|
|
||||||
#
|
|
||||||
# If the next argument is "-ssl" then ssl_tightvncviewer is called
|
|
||||||
# instead. See that script for details.
|
|
||||||
#
|
|
||||||
# See the TightVNC viewer documentation for on its cmdline arguments.
|
|
||||||
#
|
|
||||||
# For convenience, here is the current (7/2006) TightVNC viewer -help output:
|
|
||||||
#
|
|
||||||
# TightVNC viewer version 1.3dev5
|
|
||||||
#
|
|
||||||
# Usage: vncviewer [<OPTIONS>] [<HOST>][:<DISPLAY#>]
|
|
||||||
# vncviewer [<OPTIONS>] [<HOST>][::<PORT#>]
|
|
||||||
# vncviewer [<OPTIONS>] -listen [<DISPLAY#>]
|
|
||||||
# vncviewer -help
|
|
||||||
#
|
|
||||||
# <OPTIONS> are standard Xt options, or:
|
|
||||||
# -via <GATEWAY>
|
|
||||||
# -shared (set by default)
|
|
||||||
# -noshared
|
|
||||||
# -viewonly
|
|
||||||
# -fullscreen
|
|
||||||
# -noraiseonbeep
|
|
||||||
# -passwd <PASSWD-FILENAME> (standard VNC authentication)
|
|
||||||
# -user <USERNAME> (Unix login authentication)
|
|
||||||
# -encodings <ENCODING-LIST> (e.g. "tight copyrect")
|
|
||||||
# -bgr233
|
|
||||||
# -owncmap
|
|
||||||
# -truecolour
|
|
||||||
# -depth <DEPTH>
|
|
||||||
# -compresslevel <COMPRESS-VALUE> (0..9: 0-fast, 9-best)
|
|
||||||
# -quality <JPEG-QUALITY-VALUE> (0..9: 0-low, 9-high)
|
|
||||||
# -nojpeg
|
|
||||||
# -nocursorshape
|
|
||||||
# -x11cursor
|
|
||||||
# -autopass
|
|
||||||
#
|
|
||||||
# Option names may be abbreviated, e.g. -bgr instead of -bgr233.
|
|
||||||
# See the manual page for more information.
|
|
||||||
#
|
|
||||||
|
|
||||||
if [ "X$1" = "X-h" -o "X$1" = "X-help" -o "X$1" = "X--help" ]; then
|
|
||||||
head -76 "$0" | grep -v bin/sh
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Include /usr/bin... to be sure to get regular utilities:
|
|
||||||
#
|
|
||||||
PATH=$PATH:/usr/bin:/bin
|
|
||||||
export PATH
|
|
||||||
|
|
||||||
# Set this for ssl_vncviewer to pick up:
|
|
||||||
#
|
|
||||||
use_ours=0
|
|
||||||
if [ "X$1" = "X-cotvnc" ]; then
|
|
||||||
shift
|
|
||||||
DARWIN_COTVNC=1
|
|
||||||
export DARWIN_COTVNC
|
|
||||||
fi
|
|
||||||
if [ "X$VNCVIEWERCMD" = "X" ]; then
|
|
||||||
VNCVIEWERCMD="vncviewer"
|
|
||||||
export VNCVIEWERCMD
|
|
||||||
if [ "X$DARWIN_COTVNC" = "X" ]; then
|
|
||||||
use_ours=1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# work out os.arch platform string and check for binaries:
|
|
||||||
#
|
|
||||||
name=$UNAME
|
|
||||||
if [ "X$name" = "X" ]; then
|
|
||||||
name=`uname -sm | sed -e 's/ /./g'`
|
|
||||||
fi
|
|
||||||
|
|
||||||
f="$0"
|
|
||||||
for t in 1 2 3 4 5
|
|
||||||
do
|
|
||||||
if [ -L "$f" ]; then
|
|
||||||
f0="$f"
|
|
||||||
f=`ls -l "$f" | sed -e 's/^.* -> //'`
|
|
||||||
if echo "$f" | grep '^/' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
f="`dirname "$f0"`/$f"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
dir=`dirname "$f"`
|
|
||||||
|
|
||||||
if [ ! -d "$dir/$name" ]; then
|
|
||||||
echo "cannot find platform dir: $dir/$name for your OS:"
|
|
||||||
uname -sm
|
|
||||||
echo "you can set the \$UNAME env. var. to override the setting."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Put our os.arch and other utils dirs at head of PATH to be sure to
|
|
||||||
# pick them up:
|
|
||||||
#
|
|
||||||
PATH="$dir:$dir/$name:$dir/util:$PATH"
|
|
||||||
if echo "$dir" | grep '^/' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
dir=`pwd`/$dir
|
|
||||||
PATH="$dir:$dir/$name:$dir/util:$PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
STUNNEL_EXTRA_OPTS=${STUNNEL_EXTRA_OPTS:-"maxconn = 1"}
|
|
||||||
export STUNNEL_EXTRA_OPTS
|
|
||||||
|
|
||||||
if [ "X$1" = "X-ssl" ]; then
|
|
||||||
shift
|
|
||||||
ssl_tightvncviewer "$@"
|
|
||||||
exit $?
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Force the use of tight encoding for localhost redir connection:
|
|
||||||
#
|
|
||||||
# If ours (and not doing cotvnc), force the use of tight encoding for
|
|
||||||
# the connection:
|
|
||||||
#
|
|
||||||
if [ $use_ours = 1 ]; then
|
|
||||||
"$VNCVIEWERCMD" -encodings 'copyrect tight zrle zlib hextile' "$@"
|
|
||||||
else
|
|
||||||
"$VNCVIEWERCMD" "$@"
|
|
||||||
fi
|
|
File diff suppressed because it is too large
Load Diff
@ -1,638 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# ssl_vncviewer: wrapper for vncviewer to use an stunnel SSL tunnel
|
|
||||||
# or an SSH tunnel.
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006 by Karl J. Runge <runge@karlrunge.com>
|
|
||||||
#
|
|
||||||
# You must have stunnel(8) installed on the system and in your PATH
|
|
||||||
# (however, see the -ssh option below, in which case you will need ssh(1)
|
|
||||||
# installed) Note: stunnel is usually installed in an "sbin" subdirectory.
|
|
||||||
#
|
|
||||||
# You should have "x11vnc -ssl ..." or "x11vnc -stunnel ..."
|
|
||||||
# already running as the VNC server on the remote machine.
|
|
||||||
# (or use stunnel on the server side for any other VNC server)
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Usage: ssl_vncviewer [cert-args] host:display <vncviewer-args>
|
|
||||||
#
|
|
||||||
# e.g.: ssl_vncviewer snoopy:0
|
|
||||||
# ssl_vncviewer snoopy:0 -encodings "copyrect tight zrle hextile"
|
|
||||||
#
|
|
||||||
# [cert-args] can be:
|
|
||||||
#
|
|
||||||
# -verify /path/to/cacert.pem
|
|
||||||
# -mycert /path/to/mycert.pem
|
|
||||||
# -proxy host:port
|
|
||||||
#
|
|
||||||
# -verify specifies a CA cert PEM file (or a self-signed one) for
|
|
||||||
# authenticating the VNC server.
|
|
||||||
#
|
|
||||||
# -mycert specifies this client's cert+key PEM file for the VNC server to
|
|
||||||
# authenticate this client.
|
|
||||||
#
|
|
||||||
# -proxy try host:port as a Web proxy to use the CONNECT method
|
|
||||||
# to reach the VNC server (e.g. your firewall requires a proxy).
|
|
||||||
#
|
|
||||||
# For the "double proxy" case use -proxy host1:port1,host2:port2
|
|
||||||
# (the first CONNECT is done through host1:port1 to host2:port2
|
|
||||||
# and then a 2nd CONNECT to the destination VNC server.)
|
|
||||||
#
|
|
||||||
# See http://www.karlrunge.com/x11vnc/#faq-ssl-ca for details on SSL
|
|
||||||
# certificates with VNC.
|
|
||||||
#
|
|
||||||
# A few other args (not related to SSL and certs):
|
|
||||||
#
|
|
||||||
# -ssh Use ssh instead of stunnel SSL. ssh(1) must be installed and you
|
|
||||||
# must be able to log into the remote machine via ssh.
|
|
||||||
#
|
|
||||||
# In this case "host:display" may be of the form "user@host:display"
|
|
||||||
# where "user@host" is used for the ssh login (see ssh(1) manpage).
|
|
||||||
#
|
|
||||||
# If -proxy is supplied it can be of the forms: "gwhost" "gwhost:port"
|
|
||||||
# "user@gwhost" or "user@gwhost:port". "gwhost" is an incoming ssh
|
|
||||||
# gateway machine (the VNC server is not running there), an ssh -L
|
|
||||||
# redir is used to "host" in "host:display" from "gwhost". Any "user@"
|
|
||||||
# part must be in the -proxy string (not in "host:display").
|
|
||||||
#
|
|
||||||
# Under -proxy use "gwhost:port" if connecting to any ssh port
|
|
||||||
# other than the default (22). (even for the non-gateway case,
|
|
||||||
# -proxy must be used to specify a non-standard ssh port)
|
|
||||||
#
|
|
||||||
# A "double ssh" can be specified via a -proxy string with the two
|
|
||||||
# hosts separated by a comma:
|
|
||||||
#
|
|
||||||
# [user1@]host1[:port1],[user2@]host2[:port2]
|
|
||||||
#
|
|
||||||
# in which case a ssh to host1 and thru it via a -L redir a 2nd
|
|
||||||
# ssh is established to host2.
|
|
||||||
#
|
|
||||||
# Examples:
|
|
||||||
#
|
|
||||||
# ssl_vncviewer -ssh bob@bobs-home.net:0
|
|
||||||
# ssl_vncviewer -ssh -sshcmd 'x11vnc -localhost' bob@bobs-home.net:0
|
|
||||||
#
|
|
||||||
# ssl_vncviewer -ssh -proxy fred@mygate.com:2022 mymachine:0
|
|
||||||
# ssl_vncviewer -ssh -proxy bob@bobs-home.net:2222 localhost:0
|
|
||||||
#
|
|
||||||
# ssl_vncviewer -ssh -proxy fred@gw-host,fred@peecee localhost:0
|
|
||||||
#
|
|
||||||
# -sshcmd cmd Run "cmd" via ssh instead of the default "sleep 15"
|
|
||||||
# e.g. -sshcmd 'x11vnc -display :0 -localhost -rfbport 5900'
|
|
||||||
#
|
|
||||||
# -sshargs "args" pass "args" to the ssh process, e.g. -L/-R port redirs.
|
|
||||||
#
|
|
||||||
# -sshssl Tunnel the SSL connection thru a SSH connection. The tunnel as
|
|
||||||
# under -ssh is set up and the SSL connection goes thru it. Use
|
|
||||||
# this if you want to have and end-to-end SSL connection but must
|
|
||||||
# go thru a SSH gateway host (e.g. not the vnc server). Or use
|
|
||||||
# this if you need to tunnel additional services via -R and -L
|
|
||||||
# (see -sshargs above).
|
|
||||||
#
|
|
||||||
# ssl_vncviewer -sshssl -proxy fred@mygate.com mymachine:0
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# -alpha turn on cursor alphablending hack if you are using the
|
|
||||||
# enhanced tightvnc vncviewer.
|
|
||||||
#
|
|
||||||
# -grab turn on XGrabServer hack if you are using the enhanced tightvnc
|
|
||||||
# vncviewer (e.g. for fullscreen mode in some windowmanagers like
|
|
||||||
# fvwm that do not otherwise work in fullscreen mode)
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# set VNCVIEWERCMD to whatever vncviewer command you want to use.
|
|
||||||
#
|
|
||||||
VNCIPCMD=${VNCVIEWERCMD:-vncip}
|
|
||||||
VNCVIEWERCMD=${VNCVIEWERCMD:-vncviewer}
|
|
||||||
#
|
|
||||||
# Same for STUNNEL, e.g. set it to /path/to/stunnel or stunnel4, etc.
|
|
||||||
#
|
|
||||||
|
|
||||||
PATH=$PATH:/usr/sbin:/usr/local/sbin:/dist/sbin; export PATH
|
|
||||||
|
|
||||||
if [ "X$STUNNEL" = "X" ]; then
|
|
||||||
type stunnel4 > /dev/null 2>&1
|
|
||||||
if [ $? = 0 ]; then
|
|
||||||
STUNNEL=stunnel4
|
|
||||||
else
|
|
||||||
STUNNEL=stunnel
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
help() {
|
|
||||||
tail +2 "$0" | sed -e '/^$/ q'
|
|
||||||
}
|
|
||||||
|
|
||||||
gotalpha=""
|
|
||||||
use_ssh=""
|
|
||||||
use_sshssl=""
|
|
||||||
direct_connect=""
|
|
||||||
ssh_sleep=15
|
|
||||||
ssh_cmd="sleep $ssh_sleep"
|
|
||||||
if [ "X$SSL_VNCVIEWER_SSH_CMD" != "X" ]; then
|
|
||||||
ssh_cmd="$SSL_VNCVIEWER_SSH_CMD"
|
|
||||||
fi
|
|
||||||
ssh_args=""
|
|
||||||
|
|
||||||
# grab our cmdline options:
|
|
||||||
while [ "X$1" != "X" ]
|
|
||||||
do
|
|
||||||
case $1 in
|
|
||||||
"-verify") shift; verify="$1"
|
|
||||||
;;
|
|
||||||
"-mycert") shift; mycert="$1"
|
|
||||||
;;
|
|
||||||
"-proxy") shift; proxy="$1"
|
|
||||||
;;
|
|
||||||
"-ssh") use_ssh=1
|
|
||||||
;;
|
|
||||||
"-sshssl") use_ssh=1
|
|
||||||
use_sshssl=1
|
|
||||||
;;
|
|
||||||
"-sshcmd") shift; ssh_cmd="$1"
|
|
||||||
;;
|
|
||||||
"-sshargs") shift; ssh_args="$1"
|
|
||||||
;;
|
|
||||||
"-alpha") gotalpha=1
|
|
||||||
;;
|
|
||||||
"-grab") VNCVIEWER_GRAB_SERVER=1; export VNCVIEWER_GRAB_SERVER
|
|
||||||
;;
|
|
||||||
"-h"*) help; exit 0
|
|
||||||
;;
|
|
||||||
"--h"*) help; exit 0
|
|
||||||
;;
|
|
||||||
*) break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "X$gotalpha" != "X1" ]; then
|
|
||||||
NO_ALPHABLEND=1
|
|
||||||
export NO_ALPHABLEND
|
|
||||||
fi
|
|
||||||
|
|
||||||
orig="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
if [ "X$use_ssh" = "X1" -a "X$use_sshssl" = "X" ]; then
|
|
||||||
if [ "X$mycert" != "X" -o "X$verify" != "X" ]; then
|
|
||||||
echo "-mycert and -verify cannot be used in -ssh mode"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if echo "$orig" | grep '^vnc://' > /dev/null; then
|
|
||||||
orig=`echo "$orig" | sed -e 's,vnc://,,'`
|
|
||||||
verify=""
|
|
||||||
mycert=""
|
|
||||||
use_ssh=""
|
|
||||||
use_sshssl=""
|
|
||||||
direct_connect=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# play around with host:display port:
|
|
||||||
if echo "$orig" | grep ':' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
orig="$orig:0"
|
|
||||||
fi
|
|
||||||
|
|
||||||
host=`echo "$orig" | awk -F: '{print $1}'`
|
|
||||||
disp=`echo "$orig" | awk -F: '{print $2}'`
|
|
||||||
if [ "X$host" = "X" ]; then
|
|
||||||
host=localhost
|
|
||||||
fi
|
|
||||||
if [ $disp -lt 200 ]; then
|
|
||||||
port=`expr $disp + 5900`
|
|
||||||
else
|
|
||||||
port=$disp
|
|
||||||
fi
|
|
||||||
|
|
||||||
# try to find an open listening port via netstat(1):
|
|
||||||
inuse=""
|
|
||||||
if uname | grep Linux > /dev/null; then
|
|
||||||
inuse=`netstat -ant | egrep 'LISTEN|WAIT|ESTABLISH|CLOSE' | awk '{print $4}' | sed 's/^.*://'`
|
|
||||||
elif uname | grep SunOS > /dev/null; then
|
|
||||||
inuse=`netstat -an -f inet -P tcp | grep LISTEN | awk '{print $1}' | sed 's/^.*\.//'`
|
|
||||||
# add others...
|
|
||||||
fi
|
|
||||||
|
|
||||||
date_sec=`date +%S`
|
|
||||||
|
|
||||||
findfree() {
|
|
||||||
try0=$1
|
|
||||||
try=$try0
|
|
||||||
use0=""
|
|
||||||
|
|
||||||
while [ $try -lt 6000 ]
|
|
||||||
do
|
|
||||||
if [ "X$inuse" = "X" ]; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
if echo "$inuse" | grep -w $try > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
use0=$try
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
try=`expr $try + 1`
|
|
||||||
done
|
|
||||||
if [ "X$use0" = "X" ]; then
|
|
||||||
use0=`expr $date_sec + $try0`
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo $use0
|
|
||||||
}
|
|
||||||
|
|
||||||
use=`findfree 5930`
|
|
||||||
|
|
||||||
if [ $use -ge 5900 ]; then
|
|
||||||
N=`expr $use - 5900`
|
|
||||||
else
|
|
||||||
N=$use
|
|
||||||
fi
|
|
||||||
|
|
||||||
if echo "$0" | grep vncip > /dev/null; then
|
|
||||||
VNCVIEWERCMD="$VNCIPCMD"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "X$use_ssh" = "X1" ]; then
|
|
||||||
ssh_port="22"
|
|
||||||
ssh_host="$host"
|
|
||||||
vnc_host="localhost"
|
|
||||||
ssh=${SSH:-"ssh -x"}
|
|
||||||
if echo "$proxy" | grep "," > /dev/null; then
|
|
||||||
proxy1=`echo "$proxy" | awk -F, '{print $1}'`
|
|
||||||
proxy2=`echo "$proxy" | awk -F, '{print $2}'`
|
|
||||||
# user1@gw1.com:port1,user2@ws2:port2
|
|
||||||
ssh_host1=`echo "$proxy1" | awk -F: '{print $1}'`
|
|
||||||
ssh_port1=`echo "$proxy1" | awk -F: '{print $2}'`
|
|
||||||
if [ "X$ssh_port1" = "X" ]; then
|
|
||||||
ssh_port1="22"
|
|
||||||
fi
|
|
||||||
ssh_host2=`echo "$proxy2" | awk -F: '{print $1}'`
|
|
||||||
ssh_user2=`echo "$ssh_host2" | awk -F@ '{print $1}'`
|
|
||||||
ssh_host2=`echo "$ssh_host2" | awk -F@ '{print $2}'`
|
|
||||||
if [ "X$ssh_host2" = "X" ]; then
|
|
||||||
ssh_host2=$ssh_user2
|
|
||||||
ssh_user2=""
|
|
||||||
else
|
|
||||||
ssh_user2="${ssh_user2}@"
|
|
||||||
fi
|
|
||||||
ssh_port2=`echo "$proxy2" | awk -F: '{print $2}'`
|
|
||||||
if [ "X$ssh_port2" = "X" ]; then
|
|
||||||
ssh_port2="22"
|
|
||||||
fi
|
|
||||||
proxport=`findfree 3500`
|
|
||||||
echo
|
|
||||||
echo "Running 1st ssh proxy:"
|
|
||||||
echo "$ssh -f -x -p $ssh_port1 -t -e none -L $proxport:$ssh_host2:$ssh_port2 $ssh_host1 \"sleep 30\""
|
|
||||||
$ssh -f -x -p $ssh_port1 -t -e none -L $proxport:$ssh_host2:$ssh_port2 $ssh_host1 "sleep 30"
|
|
||||||
ssh_args="$ssh_args -o NoHostAuthenticationForLocalhost=yes"
|
|
||||||
sleep 1
|
|
||||||
stty sane
|
|
||||||
proxy="${ssh_user2}localhost:$proxport"
|
|
||||||
fi
|
|
||||||
if [ "X$proxy" != "X" ]; then
|
|
||||||
ssh_port=`echo "$proxy" | awk -F: '{print $2}'`
|
|
||||||
if [ "X$ssh_port" = "X" ]; then
|
|
||||||
ssh_port="22"
|
|
||||||
fi
|
|
||||||
ssh_host=`echo "$proxy" | awk -F: '{print $1}'`
|
|
||||||
vnc_host="$host"
|
|
||||||
fi
|
|
||||||
echo ""
|
|
||||||
echo "Running ssh:"
|
|
||||||
sz=`echo "$ssh_cmd" | wc -c`
|
|
||||||
if [ "$sz" -gt 200 ]; then
|
|
||||||
info="..."
|
|
||||||
else
|
|
||||||
info="$ssh_cmd"
|
|
||||||
fi
|
|
||||||
|
|
||||||
C=""
|
|
||||||
if [ "X$SSL_VNCVIEWER_USE_C" != "X" ]; then
|
|
||||||
C="-C"
|
|
||||||
fi
|
|
||||||
# the -t option actually speeds up typing response via VNC!!
|
|
||||||
if [ "X$SSL_VNCVIEWER_SSH_ONLY" != "X" ]; then
|
|
||||||
echo "$ssh -x -p $ssh_port -t $C $ssh_args $ssh_host \"$info\""
|
|
||||||
echo ""
|
|
||||||
$ssh -x -p $ssh_port -t $C $ssh_args $ssh_host "$ssh_cmd"
|
|
||||||
exit $?
|
|
||||||
elif [ "X$SSL_VNCVIEWER_NO_F" != "X" ]; then
|
|
||||||
echo "$ssh -x -p $ssh_port -t $C -L ${use}:${vnc_host}:${port} $ssh_args $ssh_host \"$info\""
|
|
||||||
echo ""
|
|
||||||
$ssh -x -p $ssh_port -t $C -L ${use}:${vnc_host}:${port} $ssh_args $ssh_host "$ssh_cmd"
|
|
||||||
else
|
|
||||||
echo "$ssh -x -f -p $ssh_port -t $C -L ${use}:${vnc_host}:${port} $ssh_args $ssh_host \"$info\""
|
|
||||||
echo ""
|
|
||||||
$ssh -x -f -p $ssh_port -t $C -L ${use}:${vnc_host}:${port} $ssh_args $ssh_host "$ssh_cmd"
|
|
||||||
fi
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
echo ""
|
|
||||||
echo "ssh to $ssh_host failed."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo ""
|
|
||||||
if [ "X$ssh_cmd" = "Xsleep $ssh_sleep" ] ; then
|
|
||||||
sleep 1
|
|
||||||
else
|
|
||||||
# let any command get started a bit.
|
|
||||||
sleep 5
|
|
||||||
fi
|
|
||||||
echo ""
|
|
||||||
#reset
|
|
||||||
stty sane
|
|
||||||
if [ "X$use_sshssl" = "X" ]; then
|
|
||||||
echo "Running viewer:"
|
|
||||||
echo "$VNCVIEWERCMD" "$@" localhost:$N
|
|
||||||
echo ""
|
|
||||||
"$VNCVIEWERCMD" "$@" localhost:$N
|
|
||||||
|
|
||||||
exit $?
|
|
||||||
else
|
|
||||||
use2=`findfree 5960`
|
|
||||||
host0=$host
|
|
||||||
port0=$port
|
|
||||||
host=localhost
|
|
||||||
port=$use
|
|
||||||
use=$use2
|
|
||||||
N=`expr $use - 5900`
|
|
||||||
proxy=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# create the stunnel config file:
|
|
||||||
if [ "X$verify" != "X" ]; then
|
|
||||||
if [ -d $verify ]; then
|
|
||||||
verify="CApath = $verify"
|
|
||||||
else
|
|
||||||
verify="CAfile = $verify"
|
|
||||||
fi
|
|
||||||
verify="$verify
|
|
||||||
verify = 2"
|
|
||||||
fi
|
|
||||||
if [ "X$mycert" != "X" ]; then
|
|
||||||
cert="cert = $mycert"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mytmp() {
|
|
||||||
tf=$1
|
|
||||||
rm -rf "$tf" || exit 1
|
|
||||||
if [ -d "$tf" ]; then
|
|
||||||
echo "tmp file $tf still exists as a directory."
|
|
||||||
exit 1
|
|
||||||
elif [ -L "$tf" ]; then
|
|
||||||
echo "tmp file $tf still exists as a symlink."
|
|
||||||
exit 1
|
|
||||||
elif [ -f "$tf" ]; then
|
|
||||||
echo "tmp file $tf still exists."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
touch "$tf" || exit 1
|
|
||||||
chmod 600 "$tf" || exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if echo "$RANDOM" | grep '[^0-9]' > /dev/null; then
|
|
||||||
RANDOM=`date +%S`
|
|
||||||
fi
|
|
||||||
|
|
||||||
pcode() {
|
|
||||||
tf=$1
|
|
||||||
SSL_VNC_PROXY=$proxy; export SSL_VNC_PROXY
|
|
||||||
SSL_VNC_DEST="$host:$port"; export SSL_VNC_DEST
|
|
||||||
cod='#!/usr/bin/perl
|
|
||||||
|
|
||||||
# A hack to glue stunnel to a Web proxy for client connections.
|
|
||||||
|
|
||||||
use IO::Socket::INET;
|
|
||||||
|
|
||||||
my ($first, $second) = split(/,/, $ENV{SSL_VNC_PROXY});
|
|
||||||
my ($proxy_host, $proxy_port) = split(/:/, $first);
|
|
||||||
my $connect = $ENV{SSL_VNC_DEST};
|
|
||||||
|
|
||||||
print STDERR "\nperl script for web proxing:\n";
|
|
||||||
print STDERR "proxy_host: $proxy_host\n";
|
|
||||||
print STDERR "proxy_port: $proxy_port\n";
|
|
||||||
print STDERR "proxy_connect: $connect\n";
|
|
||||||
|
|
||||||
my $listen_handle = "";
|
|
||||||
if ($ENV{SSL_VNC_LISTEN} != "") {
|
|
||||||
my $listen_sock = IO::Socket::INET->new(
|
|
||||||
Listen => 2,
|
|
||||||
LocalAddr => "localhost",
|
|
||||||
LocalPort => $ENV{SSL_VNC_LISTEN},
|
|
||||||
Proto => "tcp");
|
|
||||||
if (! $listen_sock) {
|
|
||||||
die "perl proxy: $!\n";
|
|
||||||
}
|
|
||||||
my $ip;
|
|
||||||
($listen_handle, $ip) = $listen_sock->accept();
|
|
||||||
if (! $listen_handle) {
|
|
||||||
die "perl proxy: $!\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
my $sock = IO::Socket::INET->new(
|
|
||||||
PeerAddr => $proxy_host,
|
|
||||||
PeerPort => $proxy_port,
|
|
||||||
Proto => "tcp");
|
|
||||||
|
|
||||||
if (! $sock) {
|
|
||||||
unlink($0);
|
|
||||||
die "perl proxy: $!\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
my $con = "";
|
|
||||||
if ($second ne "") {
|
|
||||||
$con = "CONNECT $second HTTP/1.1\r\n";
|
|
||||||
$con .= "Host: $second\r\n\r\n";
|
|
||||||
} else {
|
|
||||||
$con = "CONNECT $connect HTTP/1.1\r\n";
|
|
||||||
$con .= "Host: $connect\r\n\r\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
print STDERR "proxy_request1:\n$con";
|
|
||||||
print $sock $con;
|
|
||||||
|
|
||||||
unlink($0);
|
|
||||||
|
|
||||||
my $rep = "";
|
|
||||||
while ($rep !~ /\r\n\r\n/) {
|
|
||||||
my $c = getc($sock);
|
|
||||||
print STDERR $c;
|
|
||||||
$rep .= $c;
|
|
||||||
}
|
|
||||||
if ($rep !~ m,HTTP/.* 200,) {
|
|
||||||
die "proxy error: $rep\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($second ne "") {
|
|
||||||
$con = "CONNECT $connect HTTP/1.1\r\n";
|
|
||||||
$con .= "Host: $connect\r\n\r\n";
|
|
||||||
print STDERR "proxy_request2:\n$con";
|
|
||||||
|
|
||||||
print $sock $con;
|
|
||||||
|
|
||||||
$rep = "";
|
|
||||||
while ($rep !~ /\r\n\r\n/) {
|
|
||||||
my $c = getc($sock);
|
|
||||||
print STDERR $c;
|
|
||||||
$rep .= $c;
|
|
||||||
}
|
|
||||||
if ($rep !~ m,HTTP/.* 200,) {
|
|
||||||
die "proxy error: $rep\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fork) {
|
|
||||||
print STDERR "parent\[$$] STDIN -> socket\n\n";
|
|
||||||
if ($listen_handle) {
|
|
||||||
xfer($listen_handle, $sock);
|
|
||||||
} else {
|
|
||||||
xfer(STDIN, $sock);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print STDERR "child \[$$] socket -> STDOUT\n\n";
|
|
||||||
if ($listen_handle) {
|
|
||||||
xfer($sock, $listen_handle);
|
|
||||||
} else {
|
|
||||||
xfer($sock, STDOUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exit;
|
|
||||||
|
|
||||||
sub xfer {
|
|
||||||
my($in, $out) = @_;
|
|
||||||
$RIN = $WIN = $EIN = "";
|
|
||||||
$ROUT = "";
|
|
||||||
vec($RIN, fileno($in), 1) = 1;
|
|
||||||
vec($WIN, fileno($in), 1) = 1;
|
|
||||||
$EIN = $RIN | $WIN;
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
my $nf = 0;
|
|
||||||
while (! $nf) {
|
|
||||||
$nf = select($ROUT=$RIN, undef, undef, undef);
|
|
||||||
}
|
|
||||||
my $len = sysread($in, $buf, 8192);
|
|
||||||
if (! defined($len)) {
|
|
||||||
next if $! =~ /^Interrupted/;
|
|
||||||
print STDERR "perl proxy\[$$]: $!\n";
|
|
||||||
last;
|
|
||||||
} elsif ($len == 0) {
|
|
||||||
print STDERR "perl proxy\[$$]: Input is EOF.\n";
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
my $offset = 0;
|
|
||||||
my $quit = 0;
|
|
||||||
while ($len) {
|
|
||||||
my $written = syswrite($out, $buf, $len, $offset);
|
|
||||||
if (! defined $written) {
|
|
||||||
print STDERR "perl proxy\[$$]: Output is EOF. $!\n";
|
|
||||||
$quit = 1;
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
$len -= $written;
|
|
||||||
$offset += $written;
|
|
||||||
}
|
|
||||||
last if $quit;
|
|
||||||
}
|
|
||||||
close($in);
|
|
||||||
close($out);
|
|
||||||
}
|
|
||||||
'
|
|
||||||
echo "$cod" > $tf
|
|
||||||
chmod 700 $tf
|
|
||||||
}
|
|
||||||
|
|
||||||
ptmp=""
|
|
||||||
if [ "X$proxy" != "X" ]; then
|
|
||||||
ptmp="/tmp/ssl_vncviewer${RANDOM}.$$.pl"
|
|
||||||
mytmp "$ptmp"
|
|
||||||
pcode "$ptmp"
|
|
||||||
connect="exec = $ptmp"
|
|
||||||
else
|
|
||||||
connect="connect = $host:$port"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "X$direct_connect" != "X" ]; then
|
|
||||||
echo ""
|
|
||||||
echo "Running viewer for direct connection:"
|
|
||||||
echo ""
|
|
||||||
echo "** NOTE: THERE WILL BE NO SSL OR SSH ENCRYPTION **"
|
|
||||||
echo ""
|
|
||||||
if type printf > /dev/null 2>&1; then
|
|
||||||
printf "Are you sure you want to continue? [y]/n "
|
|
||||||
else
|
|
||||||
echo -n "Are you sure you want to continue? [y]/n "
|
|
||||||
fi
|
|
||||||
read x
|
|
||||||
if [ "X$x" = "Xn" ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo ""
|
|
||||||
if [ "X$ptmp" != "X" ]; then
|
|
||||||
SSL_VNC_LISTEN=$use
|
|
||||||
export SSL_VNC_LISTEN
|
|
||||||
$ptmp &
|
|
||||||
sleep 2
|
|
||||||
host="localhost"
|
|
||||||
disp="$N"
|
|
||||||
fi
|
|
||||||
echo "$VNCVIEWERCMD" "$@" $host:$disp
|
|
||||||
echo ""
|
|
||||||
"$VNCVIEWERCMD" "$@" $host:$disp
|
|
||||||
exit $?
|
|
||||||
fi
|
|
||||||
|
|
||||||
##debug = 7
|
|
||||||
tmp=/tmp/ssl_vncviewer${RANDOM}.$$
|
|
||||||
mytmp "$tmp"
|
|
||||||
|
|
||||||
cat > "$tmp" <<END
|
|
||||||
foreground = yes
|
|
||||||
pid =
|
|
||||||
client = yes
|
|
||||||
debug = 6
|
|
||||||
$STUNNEL_EXTRA_OPTS
|
|
||||||
$verify
|
|
||||||
$cert
|
|
||||||
|
|
||||||
[vnc_stunnel]
|
|
||||||
accept = localhost:$use
|
|
||||||
$connect
|
|
||||||
END
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "Using this stunnel configuration:"
|
|
||||||
echo ""
|
|
||||||
cat "$tmp" | uniq
|
|
||||||
echo ""
|
|
||||||
sleep 1
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "Running: stunnel"
|
|
||||||
echo "$STUNNEL $tmp"
|
|
||||||
$STUNNEL "$tmp" < /dev/tty > /dev/tty &
|
|
||||||
pid=$!
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# pause here to let the user supply a possible passphrase for the
|
|
||||||
# mycert key:
|
|
||||||
if [ "X$mycert" != "X" ]; then
|
|
||||||
sleep 4
|
|
||||||
fi
|
|
||||||
sleep 2
|
|
||||||
rm -f "$tmp"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "Running viewer:"
|
|
||||||
echo "$VNCVIEWERCMD" "$@" localhost:$N
|
|
||||||
echo ""
|
|
||||||
"$VNCVIEWERCMD" "$@" localhost:$N
|
|
||||||
|
|
||||||
kill $pid
|
|
||||||
sleep 1
|
|
Loading…
Reference in new issue