1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
7 SDESC[standard]= Enhanced TightVNC Viewer
8 HOMEPAGE= https://sourceforge.net/projects/ssvnc/
12 SITES[main]= SF/ssvnc/ssvnc/1.0.29
13 DISTFILE[1]= ssvnc-1.0.29.src.tar.gz:main
15 SPKGS[standard]= complete
19 OPTIONS_AVAILABLE= none
20 OPTIONS_STANDARD= none
22 BUILD_DEPENDS= imake:single:standard
23 RUN_DEPENDS= stunnel:complete:standard
24 xterm:complete:standard
26 USES= gmake jpeg perl:run ssl zlib tcl:tk,run
27 XORG_COMPONENTS= ice sm x11 xaw xext xi xmu xpm xt
29 LICENSE= GPLv2+:primary
30 LICENSE_TERMS= primary:{{WRKDIR}}/TERMS
31 LICENSE_FILE= GPLv2+:{{WRKSRC}}/COPYING
32 LICENSE_AWK= TERMS:"^\# You must have stunnel"
33 LICENSE_SOURCE= TERMS:{{WRKSRC}}/scripts/util/ss_vncviewer
36 FPC_EQUIVALENT= net/ssvnc
39 MAKE_ENV= ROOT="{{STAGEDIR}}"
43 ${REINPLACE_CMD} -e 's|netstat -ant|netstat -an|' \
44 ${WRKSRC}/scripts/util/ss_vncviewer
46 -e 's|B ssvnc|B ssvnc-gui|' \
47 -e 's| ssvnc | ssvnc-gui |' \
48 ${WRKSRC}/man/man1/ssvnc.1
51 # relocate sample file
52 ${MV} ${STAGEDIR}${STD_DOCDIR}/stunnel-server.conf \
53 ${STAGEDIR}${PREFIX}/etc/stunnel-server.conf.sample
56 (cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
57 ${MAKE_CMD} ${MAKE_ARGS} config)
59 [FILE:702:descriptions/desc.primary]
60 The Enhanced TightVNC Viewer package started as a project to add some
61 patches to the long neglected Unix TightVNC Viewer. However, now the
62 front-end GUI and wrapper scripts features dwarf the original.
64 It adds a GUI for Windows, Mac OS X, and Unix that automatically starts up
65 STUNNEL SSL tunnel for SSL or SSH connections to x11vnc, and then launches
66 the TightVNC Viewer to use the tunnel. It also enables SSL encrypted VNC
67 connections to any other VNC Server running an SSL tunnel, such as STUNNEL,
68 at their end. It can be used to perform SSH tunnelled connections to any
69 VNC Server as well. The tool has many additional features.
71 The short name for this project is "ssvnc" for SSL/SSH VNC Viewer.
75 74df32eb8eaa68b07c9693a232ebe42154617c7f3cbe1d4e68d3fe7c557d618d 552796 ssvnc-1.0.29.src.tar.gz
78 [FILE:335:manifests/plist.primary]
79 @sample etc/stunnel-server.conf.sample
97 share/applications/ssvnc.desktop
104 [FILE:23:manifests/plist.docs]
105 share/doc/ssvnc/README
108 [FILE:3195:patches/patch-Makefile]
109 --- Makefile.orig 2010-02-26 02:29:31 UTC
111 @@ -29,6 +29,7 @@ MAN = man
113 APPS ?= share/applications
114 BINNAME ?= ssvncviewer
115 +DOCS ?= share/doc/ssvnc
119 @@ -65,23 +66,30 @@ clean:
120 cd $(PSRC); $(MAKE) clean
123 - mkdir -p $(ROOT)$(PREFIX)/$(BIN) $(ROOT)$(PREFIX)/$(LIB) $(ROOT)$(PREFIX)/$(MANDIR)/man1
125 - cp -p $(VIEWER) $(ROOT)$(PREFIX)/$(LIB)
126 - cp -p $(VNCSPW) $(ROOT)$(PREFIX)/$(LIB)
127 - cp -p $(UNWRAP) $(ROOT)$(PREFIX)/$(LIB)
128 - cp -p $(LIMACC) $(ROOT)$(PREFIX)/$(LIB)
129 - cp -p $(ULTDSM) $(ROOT)$(PREFIX)/$(LIB)
130 - cp -pR scripts/* $(ROOT)$(PREFIX)/$(LIB)
131 - if [ "X$(JSRC)" != "X" ]; then cp -p $(ARCHIVE) $(ROOT)$(PREFIX)/$(LIB)/util; fi
132 - cp -p $(MAN)/man1/ssvnc.1 $(ROOT)$(PREFIX)/$(MANDIR)/man1
133 - ./wr_tool $(ROOT)$(PREFIX)/$(BIN)/ssvnc $(PREFIX)/$(LIB)/ssvnc
134 - ./wr_tool $(ROOT)$(PREFIX)/$(BIN)/tsvnc $(PREFIX)/$(LIB)/tsvnc
135 - ./wr_tool $(ROOT)$(PREFIX)/$(BIN)/sshvnc $(PREFIX)/$(LIB)/sshvnc
136 + mkdir -p $(ROOT)$(PREFIX)/$(BIN) $(ROOT)$(PREFIX)/$(LIB)/util $(ROOT)$(PREFIX)/$(MANDIR)/man1
137 + ${BSD_INSTALL_PROGRAM} $(VIEWER) $(ROOT)$(PREFIX)/$(LIB)
138 + ${BSD_INSTALL_PROGRAM} $(VNCSPW) $(ROOT)$(PREFIX)/$(LIB)
139 + ${BSD_INSTALL_LIB} $(UNWRAP) $(ROOT)$(PREFIX)/$(LIB)
140 + ${BSD_INSTALL_LIB} $(LIMACC) $(ROOT)$(PREFIX)/$(LIB)
141 + ${BSD_INSTALL_PROGRAM} $(ULTDSM) $(ROOT)$(PREFIX)/$(LIB)
142 + ${BSD_INSTALL_SCRIPT} scripts/ssvnc $(ROOT)$(PREFIX)/$(LIB)
143 + ${BSD_INSTALL_SCRIPT} scripts/ssvnc_cmd $(ROOT)$(PREFIX)/$(LIB)
144 + ${BSD_INSTALL_SCRIPT} scripts/tsvnc $(ROOT)$(PREFIX)/$(LIB)
145 + ${BSD_INSTALL_SCRIPT} scripts/util/ssvnc.tcl $(ROOT)$(PREFIX)/$(LIB)/util
146 + ${BSD_INSTALL_SCRIPT} scripts/util/ss_vncviewer $(ROOT)$(PREFIX)/$(LIB)/util
147 + if [ "X$(JSRC)" != "X" ]; then ${BSD_INSTALL_DATA} $(ARCHIVE) $(ROOT)$(PREFIX)/$(LIB)/util; fi
148 + ${BSD_INSTALL_MAN} $(MAN)/man1/ssvnc.1 $(ROOT)$(PREFIX)/$(MANDIR)/man1/ssvnc.1
149 + ${BSD_INSTALL_MAN} $(MAN)/man1/ssvnc.1 $(ROOT)$(PREFIX)/$(MANDIR)/man1/ssvnc-gui.1
150 + ./wr_tool $(ROOT)$(PREFIX)/$(BIN)/ssvnc-gui $(PREFIX)/$(LIB)/ssvnc
151 + ./wr_tool $(ROOT)$(PREFIX)/$(BIN)/ssvnc-ts $(PREFIX)/$(LIB)/tsvnc
152 + ./wr_tool $(ROOT)$(PREFIX)/$(BIN)/ssvnc-stunnel $(PREFIX)/$(LIB)/util/ss_vncviewer
153 if [ "X$(APPS)" != X ]; then mkdir -p $(ROOT)$(PREFIX)/$(APPS); fi
154 - if [ "X$(APPS)" != X ]; then cp -p ssvnc.desktop $(ROOT)$(PREFIX)/$(APPS); fi
155 - if [ "X$(BINNAME)" != X ]; then cp -p $(VIEWER) $(ROOT)$(PREFIX)/$(BIN)/$(BINNAME); fi
156 - if [ "X$(BINNAME)" != X ]; then cp -p $(MAN)/man1/ssvncviewer.1 $(ROOT)$(PREFIX)/$(MANDIR)/man1/$(BINNAME).1; fi
157 + if [ "X$(APPS)" != X ]; then ${BSD_INSTALL_DATA} ssvnc.desktop $(ROOT)$(PREFIX)/$(APPS); fi
158 + if [ "X$(BINNAME)" != X ]; then ${BSD_INSTALL_PROGRAM} $(VIEWER) $(ROOT)$(PREFIX)/$(BIN)/$(BINNAME); fi
159 + if [ "X$(BINNAME)" != X ]; then ${BSD_INSTALL_MAN} $(MAN)/man1/ssvncviewer.1 $(ROOT)$(PREFIX)/$(MANDIR)/man1/$(BINNAME).1; fi
160 + if [ "X$(DOCS)" != X ]; then mkdir -p $(ROOT)$(PREFIX)/$(DOCS); fi
161 + if [ "X$(DOCS)" != X ]; then ${BSD_INSTALL_DATA} scripts/util/stunnel-server.conf $(ROOT)$(PREFIX)/$(DOCS); fi
162 + if [ "X$(DOCS)" != X ]; then ${BSD_INSTALL_MAN} README $(ROOT)$(PREFIX)/$(DOCS); fi
165 #internal use only, a test install:
168 [FILE:1641:patches/patch-vncstorepw_Makefile]
169 --- vncstorepw/Makefile.orig 2010-04-22 03:22:40 UTC
170 +++ vncstorepw/Makefile
171 @@ -7,21 +7,18 @@ UNWRAP = unwrap.so
172 LIMACC = lim_accept.so
173 ULTDSM = ultravnc_dsm_helper
178 all: $(CMD) $(UNWRAP) $(LIMACC) $(ULTDSM)
180 $(CMD): vncauth.o vncstorepw.o d3des.o
181 PATH=$$PATH:$(EPATH) $(CC) -o $(CMD) vncstorepw.o vncauth.o d3des.o
182 - PATH=$$PATH:$(EPATH) strip $(CMD)
186 if [ `uname` = "Darwin" ]; then \
187 PATH=$$PATH:$(EPATH) $(CC) -o $(UNWRAP) -dynamiclib -fPIC unwrap.c; \
189 - PATH=$$PATH:$(EPATH) $(CC) -o $(UNWRAP) -shared -fPIC unwrap.c; \
190 + PATH=$$PATH:$(EPATH) $(CC) -o $(UNWRAP) -shared $(CFLAGS) -fPIC unwrap.c; \
194 @@ -29,7 +26,7 @@ $(LIMACC): lim_accept.c
195 if [ `uname` = "Darwin" ]; then \
196 PATH=$$PATH:$(EPATH) $(CC) -o $(LIMACC) -dynamiclib -fPIC -nostartfiles lim_accept.c; \
198 - PATH=$$PATH:$(EPATH) $(CC) -o $(LIMACC) -shared -fPIC -nostartfiles lim_accept.c; \
199 + PATH=$$PATH:$(EPATH) $(CC) -o $(LIMACC) -shared $(CFLAGS) -fPIC -nostartfiles lim_accept.c; \
203 @@ -39,9 +36,8 @@ $(ULTDSM): ultravnc_dsm_helper.c
204 if [ `uname` = "SunOS" ]; then \
205 PATH=$$PATH:$(EPATH) $(CC) -o $(ULTDSM) $(CPP_SSL) ultravnc_dsm_helper.c $(LD_SSL) -lssl -lcrypto -lsocket -lnsl; \
207 - PATH=$$PATH:$(EPATH) $(CC) -o $(ULTDSM) $(CPP_SSL) ultravnc_dsm_helper.c $(LD_SSL) -lssl -lcrypto; \
208 + PATH=$$PATH:$(EPATH) $(CC) -o $(ULTDSM) $(CPP_SSL) ultravnc_dsm_helper.c $(CFLAGS) $(LDFLAGS) -lssl -lcrypto; \
210 - PATH=$$PATH:$(EPATH) strip $(ULTDSM)
216 [FILE:7015:patches/patch-vncstorepw_ultravnc__dsm__helper.c]
217 --- vncstorepw/ultravnc_dsm_helper.c.orig 2010-04-23 04:29:43 UTC
218 +++ vncstorepw/ultravnc_dsm_helper.c
219 @@ -414,7 +414,9 @@ void enc_do(char *ciph, char *keyfile, c
220 if (strstr(p, "md5+") == p) {
221 Digest = EVP_md5(); p += strlen("md5+");
222 } else if (strstr(p, "sha+") == p) {
223 - Digest = EVP_sha(); p += strlen("sha+");
224 + fprintf(stderr, "%s: obsolete hash algorithm: SHA-0\n",
227 } else if (strstr(p, "sha1+") == p) {
228 Digest = EVP_sha1(); p += strlen("sha1+");
229 } else if (strstr(p, "ripe+") == p) {
230 @@ -655,8 +657,10 @@ static void enc_xfer(int sock_fr, int so
232 unsigned char E_keystr[EVP_MAX_KEY_LENGTH];
233 unsigned char D_keystr[EVP_MAX_KEY_LENGTH];
234 - EVP_CIPHER_CTX E_ctx, D_ctx;
235 - EVP_CIPHER_CTX *ctx = NULL;
236 + //openssl1.1.patch - Do NOT create two context and only use one
238 + //EVP_CIPHER_CTX *E_ctx, *D_ctx;
239 + EVP_CIPHER_CTX *ctx;
241 unsigned char buf[BSIZE], out[BSIZE];
242 unsigned char *psrc = NULL, *keystr;
243 @@ -698,11 +702,14 @@ static void enc_xfer(int sock_fr, int so
244 encsym = encrypt ? "+" : "-";
246 /* use the encryption/decryption context variables below */
247 + ctx = EVP_CIPHER_CTX_new();
249 + fprintf(stderr, "Failed to create encryption/decryption context.\n");
260 @@ -797,7 +804,6 @@ static void enc_xfer(int sock_fr, int so
262 fprintf(stderr, "%s: %s - WARNING: MSRC4 mode and IGNORING random salt\n", prog, encstr);
263 fprintf(stderr, "%s: %s - WARNING: and initialization vector!!\n", prog, encstr);
264 - EVP_CIPHER_CTX_init(ctx);
266 /* for pw=xxxx a md5 hash is used */
267 EVP_BytesToKey(Cipher, Digest, NULL, (unsigned char *) keydata,
268 @@ -816,7 +822,6 @@ static void enc_xfer(int sock_fr, int so
270 EVP_BytesToKey(Cipher, Digest, NULL, (unsigned char *) keydata,
271 keydata_len, 1, keystr, ivec);
272 - EVP_CIPHER_CTX_init(ctx);
273 EVP_CipherInit_ex(ctx, Cipher, NULL, keystr, ivec,
276 @@ -836,9 +841,9 @@ static void enc_xfer(int sock_fr, int so
280 - if (ivec_size < Cipher->iv_len && !securevnc) {
281 + if (ivec_size < EVP_CIPHER_iv_length(Cipher) && !securevnc) {
282 fprintf(stderr, "%s: %s - WARNING: short IV %d < %d\n",
283 - prog, encstr, ivec_size, Cipher->iv_len);
284 + prog, encstr, ivec_size, EVP_CIPHER_iv_length(Cipher));
287 /* make the hashed value and place in keystr */
288 @@ -877,9 +882,6 @@ static void enc_xfer(int sock_fr, int so
292 - /* initialize the context */
293 - EVP_CIPHER_CTX_init(ctx);
296 /* set the cipher & initialize */
298 @@ -986,6 +988,7 @@ static void enc_xfer(int sock_fr, int so
299 /* transfer done (viewer exited or some error) */
302 + if (ctx) EVP_CIPHER_CTX_free(ctx);
303 fprintf(stderr, "\n%s: %s - close sock_to\n", prog, encstr);
306 @@ -1060,14 +1063,14 @@ static int securevnc_server_rsa_save_dia
309 static char *rsa_md5_sum(unsigned char* rsabuf) {
311 + EVP_MD_CTX *md = EVP_MD_CTX_create();
312 char digest[EVP_MAX_MD_SIZE], tmp[16];
313 char md5str[EVP_MAX_MD_SIZE * 8];
314 unsigned int i, size = 0;
316 - EVP_DigestInit(&md, EVP_md5());
317 - EVP_DigestUpdate(&md, rsabuf, SECUREVNC_RSA_PUBKEY_SIZE);
318 - EVP_DigestFinal(&md, (unsigned char *)digest, &size);
319 + EVP_DigestInit(md, EVP_md5());
320 + EVP_DigestUpdate(md, rsabuf, SECUREVNC_RSA_PUBKEY_SIZE);
321 + EVP_DigestFinal(md, (unsigned char *)digest, &size);
323 memset(md5str, 0, sizeof(md5str));
324 for (i=0; i < size; i++) {
325 @@ -1075,6 +1078,7 @@ static char *rsa_md5_sum(unsigned char*
326 sprintf(tmp, "%02x", (int) uc);
329 + EVP_MD_CTX_destroy(md);
330 return strdup(md5str);
333 @@ -1184,7 +1188,7 @@ static void sslexit(char *msg) {
335 static void securevnc_setup(int conn1, int conn2) {
337 - EVP_CIPHER_CTX init_ctx;
338 + EVP_CIPHER_CTX *init_ctx = EVP_CIPHER_CTX_new();
339 unsigned char keystr[EVP_MAX_KEY_LENGTH];
340 unsigned char *rsabuf, *rsasav;
341 unsigned char *encrypted_keybuf;
342 @@ -1203,6 +1207,8 @@ static void securevnc_setup(int conn1, i
344 ERR_load_crypto_strings();
346 + if (!init_ctx) sslexit("securevnc_setup: EVP_CIPHER_CTX_new() failed");
348 /* alloc and read from server the 270 comprising the rsa public key: */
349 rsabuf = (unsigned char *) calloc(SECUREVNC_RSA_PUBKEY_SIZE, 1);
350 rsasav = (unsigned char *) calloc(SECUREVNC_RSA_PUBKEY_SIZE, 1);
351 @@ -1323,8 +1329,7 @@ static void securevnc_setup(int conn1, i
353 * Back to the work involving the tmp obscuring key:
355 - EVP_CIPHER_CTX_init(&init_ctx);
356 - rc = EVP_CipherInit_ex(&init_ctx, EVP_rc4(), NULL, initkey, NULL, 1);
357 + rc = EVP_CipherInit_ex(init_ctx, EVP_rc4(), NULL, initkey, NULL, 1);
359 sslexit("securevnc_setup: EVP_CipherInit_ex(init_ctx) failed");
361 @@ -1340,13 +1345,13 @@ static void securevnc_setup(int conn1, i
362 /* decode with the tmp key */
364 memset(to_viewer, 0, sizeof(to_viewer));
365 - if (EVP_CipherUpdate(&init_ctx, to_viewer, &len, buf, n) == 0) {
366 + if (EVP_CipherUpdate(init_ctx, to_viewer, &len, buf, n) == 0) {
367 sslexit("securevnc_setup: EVP_CipherUpdate(init_ctx) failed");
372 - EVP_CIPHER_CTX_cleanup(&init_ctx);
373 + EVP_CIPHER_CTX_free(init_ctx);
376 /* print what we would send to the viewer (sent below): */
377 @@ -1407,7 +1412,7 @@ static void securevnc_setup(int conn1, i
379 if (client_auth_req && client_auth) {
380 RSA *client_rsa = load_client_auth(client_auth);
382 + EVP_MD_CTX *dctx = EVP_MD_CTX_create();
383 unsigned char digest[EVP_MAX_MD_SIZE], *signature;
384 unsigned int ndig = 0, nsig = 0;
386 @@ -1421,8 +1426,8 @@ static void securevnc_setup(int conn1, i
390 - EVP_DigestInit(&dctx, EVP_sha1());
391 - EVP_DigestUpdate(&dctx, keystr, SECUREVNC_KEY_SIZE);
392 + EVP_DigestInit(dctx, EVP_sha1());
393 + EVP_DigestUpdate(dctx, keystr, SECUREVNC_KEY_SIZE);
395 * Without something like the following MITM is still possible.
396 * This is because the MITM knows keystr and can use it with
397 @@ -1433,7 +1438,7 @@ static void securevnc_setup(int conn1, i
398 * he doesn't have Viewer_ClientAuth.pkey.
401 - EVP_DigestUpdate(&dctx, rsasav, SECUREVNC_RSA_PUBKEY_SIZE);
402 + EVP_DigestUpdate(dctx, rsasav, SECUREVNC_RSA_PUBKEY_SIZE);
403 if (!keystore_verified) {
404 fprintf(stderr, "securevnc_setup:\n");
405 fprintf(stderr, "securevnc_setup: Warning: even *WITH* Client Authentication in SecureVNC,\n");
406 @@ -1456,7 +1461,8 @@ static void securevnc_setup(int conn1, i
407 fprintf(stderr, "securevnc_setup:\n");
410 - EVP_DigestFinal(&dctx, (unsigned char *)digest, &ndig);
411 + EVP_DigestFinal(dctx, (unsigned char *)digest, &ndig);
412 + EVP_MD_CTX_destroy(dctx);
414 signature = (unsigned char *) calloc(RSA_size(client_rsa), 1);
415 RSA_sign(NID_sha1, digest, ndig, signature, &nsig, client_rsa);
418 [FILE:160:patches/patch-wr__tool]
419 --- wr_tool.orig 2008-08-29 12:58:03 UTC
421 @@ -6,4 +6,4 @@ cat > $wr <<END
422 UNAME=.; export UNAME