You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
290 lines
7.9 KiB
290 lines
7.9 KiB
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2006-2009 by Karl J. Runge <runge@karlrunge.com>
|
|
#
|
|
# ssvnc:
|
|
#
|
|
# A wrapper for ssvnc_cmd using a tcl/tk gui.
|
|
#
|
|
# See ssvnc_cmd for details.
|
|
#
|
|
if [ "X$1" = "X-help" -o "X$1" = "X-h" ]; then
|
|
cat << END
|
|
ssvnc - a GUI wrapper for SSL and SSH VNC connections.
|
|
|
|
SYNOPSIS
|
|
ssvnc
|
|
ssvnc [host][:display]
|
|
ssvnc [saved-profile-name]
|
|
ssvnc [options] [host-or-profile]
|
|
ssvnc -cmd [ssvnc_cmd-args]
|
|
ssvnc --help
|
|
|
|
DESCRIPTION
|
|
ssvnc is a tcl/tk gui wrapper that runs on Unix, MacOSX, and Windows.
|
|
It sets up an SSL or SSH tunnel to the remote VNC Server and then
|
|
launches the VNC viewer (either the one provided or another one that
|
|
you have specified) to use that encrypted tunnel to connect to the VNC
|
|
Server. The use of Proxies and Gateways to make the connections is
|
|
implemented.
|
|
|
|
OPTIONS
|
|
-help, -h Print this help.
|
|
|
|
--help Starts up the GUI as though the 'Help' button was pressed to
|
|
show the main Help panel.
|
|
|
|
-cmd [ssvnc_cmd-args]
|
|
Launch the ssvnc_cmd utility command directly (no GUI) with the
|
|
given arguments (for use when ssvnc_cmd is not in one's PATH.)
|
|
If neither ssvnc_cmd nor ssvncviewer is in PATH, one can launch
|
|
the viewer directly via: ssvnc -cmd -viewer [viewer-args]
|
|
|
|
-profiles
|
|
List the saved SSVNC profiles you have created. A profile is a
|
|
destination host with specific parameter settings.
|
|
|
|
-list Same as -profiles
|
|
|
|
-ssh Start in "SSH Only Mode". No SSL aspects are shown. Same as
|
|
running the command sshvnc
|
|
|
|
-ts Start in "Terminal Services Mode". This is like "SSH Only
|
|
Mode", but simpler and assumes x11vnc is available on the remote
|
|
side to start and manage X and VNC sessions. Same as running
|
|
the command tsvnc
|
|
|
|
-tso Same as -ts "Terminal Services Mode", however never let the user
|
|
leave this mode (no button to switch modes is provided.) Same
|
|
as SSVNC_TS_ALWAYS=1.
|
|
|
|
-ssl Force the full GUI Mode: both SSL and SSH. This is the default.
|
|
Same as -ss.
|
|
|
|
-nv Toggle the "Verify All Certs" button to be off at startup.
|
|
|
|
-nvb Never show the "Verify All Certs" button. Same as SSVNC_NO_VER-
|
|
IFY_ALL_BUTTON=1.
|
|
|
|
-bigger
|
|
Make the Profile Selection Dialog window bigger. Same as
|
|
SSVNC_BIGGER_DIALOG=1.
|
|
|
|
-noenc Start off in a mode where a 'No Encryption' check button is
|
|
present. You can toggle the mode with Ctrl-E. Same as
|
|
SSVNC_DISABLE_ENCRYPTION_BUTTON=1. Or noenc=1 in ~/.ssvncrc.
|
|
Selecting no encryption is the same as the vnc:// and Vnc://
|
|
prefixes described below. The -noenc mode is now the default,
|
|
use -enc or noenc=0 for the opposite behavior.
|
|
|
|
-killstunnel
|
|
On Windows, automatically terminate the STUNNEL process when the
|
|
viewer exits instead of prompting you (same as killstunnel=1 in
|
|
ssvnc_rc or toggle in Options menu)
|
|
|
|
-nokillstunnel
|
|
On Windows, disable -killstunnel mode. Same as killstunnel=0 in
|
|
ssvnc_rc or toggle in Options menu. Note that -killstunnel mode
|
|
is now the default.
|
|
|
|
-mycert /path/to/mycert.pem
|
|
Set the default "MyCert" to be /path/to/mycert.pem. Same as
|
|
-cert. If the file does not exist, ~/.vnc/certs is prefixed and
|
|
tried. You can also set mycert=/path/to/mycert.pem in ~/.ssvncrc
|
|
|
|
-cacert /path/to/cacert.crt
|
|
Set the default "ServerCert" to be /path/to/cacert.crt. Same as
|
|
-ca. If the file does not exist, ~/.vnc/certs is prefixed and
|
|
tried. You can also set cacert=/path/to/cacert.crt in ~/.ssvncrc
|
|
|
|
-crl /path/to/mycrl.pem
|
|
Set the default Certificate Revocation List to be
|
|
/path/to/mycrl.pem. If the file does not exist, ~/.vnc/certs is
|
|
prefixed and tried. You can also set crl=/path/to/mycrl.pem in
|
|
~/.ssvncrc.
|
|
END
|
|
exit 0
|
|
fi
|
|
if [ "X$1" = "X-ssh" ]; then
|
|
if [ "X$2" = "X-help" -o "X$2" = "X-h" ]; then
|
|
cat << END
|
|
sshvnc - a GUI wrapper for SSH VNC connections.
|
|
|
|
SYNOPSIS
|
|
sshvnc
|
|
sshvnc [host][:display]
|
|
sshvnc [saved-profile-name]
|
|
sshvnc [options] [host-or-profile]
|
|
sshvnc --help
|
|
|
|
See 'ssvnc $2' and 'ssvnc --help' for more information.
|
|
END
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
if [ "X$1" = "X-ts" -o "X$1" = "X-tso" ]; then
|
|
if [ "X$2" = "X-help" -o "X$2" = "X-h" ]; then
|
|
cat << END
|
|
tsvnc - a GUI wrapper for SSH VNC connections using x11vnc Terminal Services.
|
|
|
|
SYNOPSIS
|
|
tsvnc
|
|
tsvnc [host][:display]
|
|
tsvnc [saved-profile-name]
|
|
tsvnc [options] [host-or-profile]
|
|
tsvnc --help
|
|
|
|
See 'ssvnc $2' and 'tsvnc --help' for more information.
|
|
END
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
|
|
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:/usr/sfw/bin:/usr/local/bin
|
|
export PATH
|
|
|
|
if [ "X$FULLNAME" = "XKarl J. Runge" ]; then
|
|
if [ "X$NOPOPUFIX" = "X" ]; then
|
|
VNCVIEWER_POPUP_FIX=1
|
|
export VNCVIEWER_POPUP_FIX
|
|
fi
|
|
PATH=`echo "$PATH" | sed -e 's,runge/bin/override,-------------,'`
|
|
fi
|
|
|
|
if [ "X$WISH" = "X" ]; then
|
|
WISH=wish
|
|
for try in wish8.4 wish wish8.3 wish8.5 wish8.6
|
|
do
|
|
if type $try > /dev/null 2>&1; then
|
|
WISH=$try
|
|
break
|
|
fi
|
|
done
|
|
export WISH
|
|
fi
|
|
|
|
|
|
SSVNC_GUI_CMD="$0 $*"
|
|
export SSVNC_GUI_CMD
|
|
SSVNC_LAUNCH=$SSVNC_GUI_CMD
|
|
export SSVNC_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' -e 's,/.*,,' -e 's/Linux\.i.86/Linux.i686/'`
|
|
fi
|
|
|
|
dL="-L"
|
|
if uname -sr | egrep 'SunOS 5\.[5-8]' > /dev/null; then
|
|
dL="-h"
|
|
fi
|
|
|
|
f="$0"
|
|
for t in 1 2 3 4 5
|
|
do
|
|
if [ $dL "$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"`
|
|
PATH="$dir:$PATH"
|
|
|
|
nearby=0
|
|
if [ -x "$dir/vncviewer" -a -x "$dir/stunnel" ]; then
|
|
nearby=1
|
|
fi
|
|
if [ "X$name" = "X." ]; then
|
|
:
|
|
#type vncviewer
|
|
#type stunnel
|
|
elif [ ! -d "$dir/$name" -a $nearby = 0 ]; then
|
|
echo
|
|
echo "Cannot find platform dir for your OS `uname -sm`:"
|
|
echo
|
|
echo " $dir/$name"
|
|
echo
|
|
PATH=$PATH:/usr/sbin:/usr/local/sbin:/dist/sbin
|
|
|
|
quit=0
|
|
if type vncviewer >/dev/null 2>/dev/null; then
|
|
:
|
|
else
|
|
echo "vncviewer not found in PATH."
|
|
quit=1
|
|
fi
|
|
if type stunnel >/dev/null 2>/dev/null; then
|
|
:
|
|
else
|
|
echo "stunnel not found in PATH."
|
|
quit=1
|
|
fi
|
|
echo
|
|
if [ "X$quit" = "X1" ]; then
|
|
echo "You can set the \$UNAME env. var. to override the OS setting."
|
|
echo "Or, if available, run the ./build.unix script to build it."
|
|
echo "Or install external \"vncviewer\" and \"stunnel\" packages."
|
|
exit 1
|
|
fi
|
|
echo "Using externel \"vncviewer\" and \"stunnel\" found in PATH."
|
|
else
|
|
STUNNEL=stunnel
|
|
#STUNNEL_EXTRA_OPTS=${STUNNEL_EXTRA_OPTS:-"maxconn = 1"}
|
|
#export STUNNEL STUNNEL_EXTRA_OPTS
|
|
SSVNC_VIEWER_INTERNAL=1
|
|
export SSVNC_VIEWER_INTERNAL
|
|
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
|
|
|
|
SSVNC_BASEDIR="$dir"
|
|
export SSVNC_BASEDIR
|
|
SSVNC_BASEDIRNAME="$dir/$name"
|
|
export SSVNC_BASEDIRNAME
|
|
|
|
if [ -f "$dir/util/ultraftp.jar" ]; then
|
|
SSVNC_ULTRA_FTP_JAR="$dir/util/ultraftp.jar"
|
|
export SSVNC_ULTRA_FTP_JAR
|
|
fi
|
|
|
|
if [ "X$1" = "X-cmd" -o "X$1" = "X--cmd" ]; then
|
|
shift
|
|
exec ssvnc_cmd "$@"
|
|
elif [ "X$WISH" = "Xwish" ]; then
|
|
exec ssvnc.tcl "$@"
|
|
else
|
|
exec $WISH $dir/util/ssvnc.tcl "$@"
|
|
fi
|