1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
|
#!/bin/sh
#
# Copyright (c) 2006-2008 by Karl J. Runge <[email protected]>
#
# ssvnc_cmd:
#
# A wrapper that calls ss_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:
#
# ssvnc_cmd [ss_vncviewer-args] hostname:N [vncviewer-args]
#
# if, instead, this script is named "tightvncviewer" it calls the
# vncviewer directly and must be invoked as:
#
# tightvncviewer [vncviewer-args] hostname:N
#
# In both cases, "hostname:N" is the host and VNC display to connect to,
# e.g. snoopy:0
#
# See the script util/ss_vncviewer for details about its arguments:
#
# -verify pemfile
# -mycert pemfile
# -proxy phost:pport
# -alpha
# -grab
#
# N.B. if this script is named "tightvncviewer" the vncviewer is called
# directly, and there won't be any SSL or SSH encryption tunnels.
#
# 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.
#
# Note: the enhanced tightvnc viewer (SSVNC) has many more options, run
# this script as "ssvnc_cmd Vnc://a:0 -help" or "tightvncviewer -help"
# to seem them.
if [ "X$1" = "X-h" -o "X$1" = "X-helpxxx" -o "X$1" = "X--help" ]; then
tail -n +2 "$0" | sed -e '/^$/ q' -e 's/^#//'
exit
fi
# Include /usr/bin... to be sure to get regular utilities:
#
PATH=$PATH:/usr/bin:/bin
export PATH
if [ "X$FULLNAME" = "XKarl J. Runge" ]; then
VNCVIEWER_POPUP_FIX=1
export VNCVIEWER_POPUP_FIX
PATH=`echo "$PATH" | sed -e 's,runge/bin/override,-------------,'`
fi
# Set this for ss_vncviewer to pick up:
#
if [ "X$1" = "X-cotvnc" ]; then
shift
DARWIN_COTVNC=1
export DARWIN_COTVNC
elif [ "X$DARWIN_COTVNC" = "X" -a "X$DISPLAY" = "X" ]; then
uname=`uname`
if [ "X$uname" = "XDarwin" ]; then
DARWIN_COTVNC=1
export DARWIN_COTVNC
fi
fi
use_ours=0
if [ "X$VNCVIEWERCMD" = "X" ]; then
VNCVIEWERCMD="vncviewer"
export VNCVIEWERCMD
if [ "X$DARWIN_COTVNC" != "X1" ]; 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' -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 6
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"
SSVNC_BASEDIR="$dir"
export SSVNC_BASEDIR
SSVNC_UNAME="$name"
export SSVNC_UNAME
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
if [ "X$DARWIN_COTVNC" != "X1" -a "X$VNCVIEWERCMD" = "Xvncviewer" ]; then
hstr=`$VNCVIEWERCMD -h 2>&1 | head -5`
if echo "$hstr" | grep 'SSVNC.*TightVNC.*version 1\.3' > /dev/null; then
# we need to avoid raw encoding
use_ours=1
fi
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
if [ -f "$dir/util/ultraftp.jar" ]; then
SSVNC_ULTRA_FTP_JAR="$dir/util/ultraftp.jar"
export SSVNC_ULTRA_FTP_JAR
fi
base=`basename "$0"`
if [ "X$1" = "X-ssl" ]; then
shift
base="ssvnc_cmd"
fi
# If ours (and not cotvnc), force the use of tight encoding for localhost
# redir connection:
#
#
if [ $use_ours = 1 ]; then
# avoid system vncviewer app-defaults
#XFILESEARCHPATH="/tmp/path/nowhere"; export XFILESEARCHPATH
SSVNC_USE_OURS=1; export SSVNC_USE_OURS
if [ "X$base" = "Xtightvncviewer" ]; then
$VNCVIEWERCMD -encodings 'copyrect tight zrle zlib hextile' "$@"
else
ss_vncviewer "$@" -encodings 'copyrect tight zrle zlib hextile'
fi
else
if [ "X$base" = "Xtightvncviewer" ]; then
$VNCVIEWERCMD "$@"
else
ss_vncviewer "$@"
fi
fi
|