| #!/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 |