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
37 MAKE_ENV= ROOT="{{STAGEDIR}}"
41 ${REINPLACE_CMD} -e 's|netstat -ant|netstat -an|' \
42 ${WRKSRC}/scripts/util/ss_vncviewer
44 -e 's|B ssvnc|B ssvnc-gui|' \
45 -e 's| ssvnc | ssvnc-gui |' \
46 ${WRKSRC}/man/man1/ssvnc.1
49 # relocate sample file
50 ${MV} ${STAGEDIR}${STD_DOCDIR}/stunnel-server.conf \
51 ${STAGEDIR}${PREFIX}/etc/stunnel-server.conf.sample
54 (cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
55 ${MAKE_CMD} ${MAKE_ARGS} config)
57 [FILE:702:descriptions/desc.primary]
58 The Enhanced TightVNC Viewer package started as a project to add some
59 patches to the long neglected Unix TightVNC Viewer. However, now the
60 front-end GUI and wrapper scripts features dwarf the original.
62 It adds a GUI for Windows, Mac OS X, and Unix that automatically starts up
63 STUNNEL SSL tunnel for SSL or SSH connections to x11vnc, and then launches
64 the TightVNC Viewer to use the tunnel. It also enables SSL encrypted VNC
65 connections to any other VNC Server running an SSL tunnel, such as STUNNEL,
66 at their end. It can be used to perform SSH tunnelled connections to any
67 VNC Server as well. The tool has many additional features.
69 The short name for this project is "ssvnc" for SSL/SSH VNC Viewer.
73 74df32eb8eaa68b07c9693a232ebe42154617c7f3cbe1d4e68d3fe7c557d618d 552796 ssvnc-1.0.29.src.tar.gz
76 [FILE:335:manifests/plist.primary]
77 @sample etc/stunnel-server.conf.sample
95 share/applications/ssvnc.desktop
102 [FILE:23:manifests/plist.docs]
103 share/doc/ssvnc/README
106 [FILE:3195:patches/patch-Makefile]
107 --- Makefile.orig 2010-02-26 02:29:31 UTC
109 @@ -29,6 +29,7 @@ MAN = man
111 APPS ?= share/applications
112 BINNAME ?= ssvncviewer
113 +DOCS ?= share/doc/ssvnc
117 @@ -65,23 +66,30 @@ clean:
118 cd $(PSRC); $(MAKE) clean
121 - mkdir -p $(ROOT)$(PREFIX)/$(BIN) $(ROOT)$(PREFIX)/$(LIB) $(ROOT)$(PREFIX)/$(MANDIR)/man1
123 - cp -p $(VIEWER) $(ROOT)$(PREFIX)/$(LIB)
124 - cp -p $(VNCSPW) $(ROOT)$(PREFIX)/$(LIB)
125 - cp -p $(UNWRAP) $(ROOT)$(PREFIX)/$(LIB)
126 - cp -p $(LIMACC) $(ROOT)$(PREFIX)/$(LIB)
127 - cp -p $(ULTDSM) $(ROOT)$(PREFIX)/$(LIB)
128 - cp -pR scripts/* $(ROOT)$(PREFIX)/$(LIB)
129 - if [ "X$(JSRC)" != "X" ]; then cp -p $(ARCHIVE) $(ROOT)$(PREFIX)/$(LIB)/util; fi
130 - cp -p $(MAN)/man1/ssvnc.1 $(ROOT)$(PREFIX)/$(MANDIR)/man1
131 - ./wr_tool $(ROOT)$(PREFIX)/$(BIN)/ssvnc $(PREFIX)/$(LIB)/ssvnc
132 - ./wr_tool $(ROOT)$(PREFIX)/$(BIN)/tsvnc $(PREFIX)/$(LIB)/tsvnc
133 - ./wr_tool $(ROOT)$(PREFIX)/$(BIN)/sshvnc $(PREFIX)/$(LIB)/sshvnc
134 + mkdir -p $(ROOT)$(PREFIX)/$(BIN) $(ROOT)$(PREFIX)/$(LIB)/util $(ROOT)$(PREFIX)/$(MANDIR)/man1
135 + ${BSD_INSTALL_PROGRAM} $(VIEWER) $(ROOT)$(PREFIX)/$(LIB)
136 + ${BSD_INSTALL_PROGRAM} $(VNCSPW) $(ROOT)$(PREFIX)/$(LIB)
137 + ${BSD_INSTALL_LIB} $(UNWRAP) $(ROOT)$(PREFIX)/$(LIB)
138 + ${BSD_INSTALL_LIB} $(LIMACC) $(ROOT)$(PREFIX)/$(LIB)
139 + ${BSD_INSTALL_PROGRAM} $(ULTDSM) $(ROOT)$(PREFIX)/$(LIB)
140 + ${BSD_INSTALL_SCRIPT} scripts/ssvnc $(ROOT)$(PREFIX)/$(LIB)
141 + ${BSD_INSTALL_SCRIPT} scripts/ssvnc_cmd $(ROOT)$(PREFIX)/$(LIB)
142 + ${BSD_INSTALL_SCRIPT} scripts/tsvnc $(ROOT)$(PREFIX)/$(LIB)
143 + ${BSD_INSTALL_SCRIPT} scripts/util/ssvnc.tcl $(ROOT)$(PREFIX)/$(LIB)/util
144 + ${BSD_INSTALL_SCRIPT} scripts/util/ss_vncviewer $(ROOT)$(PREFIX)/$(LIB)/util
145 + if [ "X$(JSRC)" != "X" ]; then ${BSD_INSTALL_DATA} $(ARCHIVE) $(ROOT)$(PREFIX)/$(LIB)/util; fi
146 + ${BSD_INSTALL_MAN} $(MAN)/man1/ssvnc.1 $(ROOT)$(PREFIX)/$(MANDIR)/man1/ssvnc.1
147 + ${BSD_INSTALL_MAN} $(MAN)/man1/ssvnc.1 $(ROOT)$(PREFIX)/$(MANDIR)/man1/ssvnc-gui.1
148 + ./wr_tool $(ROOT)$(PREFIX)/$(BIN)/ssvnc-gui $(PREFIX)/$(LIB)/ssvnc
149 + ./wr_tool $(ROOT)$(PREFIX)/$(BIN)/ssvnc-ts $(PREFIX)/$(LIB)/tsvnc
150 + ./wr_tool $(ROOT)$(PREFIX)/$(BIN)/ssvnc-stunnel $(PREFIX)/$(LIB)/util/ss_vncviewer
151 if [ "X$(APPS)" != X ]; then mkdir -p $(ROOT)$(PREFIX)/$(APPS); fi
152 - if [ "X$(APPS)" != X ]; then cp -p ssvnc.desktop $(ROOT)$(PREFIX)/$(APPS); fi
153 - if [ "X$(BINNAME)" != X ]; then cp -p $(VIEWER) $(ROOT)$(PREFIX)/$(BIN)/$(BINNAME); fi
154 - if [ "X$(BINNAME)" != X ]; then cp -p $(MAN)/man1/ssvncviewer.1 $(ROOT)$(PREFIX)/$(MANDIR)/man1/$(BINNAME).1; fi
155 + if [ "X$(APPS)" != X ]; then ${BSD_INSTALL_DATA} ssvnc.desktop $(ROOT)$(PREFIX)/$(APPS); fi
156 + if [ "X$(BINNAME)" != X ]; then ${BSD_INSTALL_PROGRAM} $(VIEWER) $(ROOT)$(PREFIX)/$(BIN)/$(BINNAME); fi
157 + if [ "X$(BINNAME)" != X ]; then ${BSD_INSTALL_MAN} $(MAN)/man1/ssvncviewer.1 $(ROOT)$(PREFIX)/$(MANDIR)/man1/$(BINNAME).1; fi
158 + if [ "X$(DOCS)" != X ]; then mkdir -p $(ROOT)$(PREFIX)/$(DOCS); fi
159 + if [ "X$(DOCS)" != X ]; then ${BSD_INSTALL_DATA} scripts/util/stunnel-server.conf $(ROOT)$(PREFIX)/$(DOCS); fi
160 + if [ "X$(DOCS)" != X ]; then ${BSD_INSTALL_MAN} README $(ROOT)$(PREFIX)/$(DOCS); fi
163 #internal use only, a test install:
166 [FILE:1641:patches/patch-vncstorepw_Makefile]
167 --- vncstorepw/Makefile.orig 2010-04-22 03:22:40 UTC
168 +++ vncstorepw/Makefile
169 @@ -7,21 +7,18 @@ UNWRAP = unwrap.so
170 LIMACC = lim_accept.so
171 ULTDSM = ultravnc_dsm_helper
176 all: $(CMD) $(UNWRAP) $(LIMACC) $(ULTDSM)
178 $(CMD): vncauth.o vncstorepw.o d3des.o
179 PATH=$$PATH:$(EPATH) $(CC) -o $(CMD) vncstorepw.o vncauth.o d3des.o
180 - PATH=$$PATH:$(EPATH) strip $(CMD)
184 if [ `uname` = "Darwin" ]; then \
185 PATH=$$PATH:$(EPATH) $(CC) -o $(UNWRAP) -dynamiclib -fPIC unwrap.c; \
187 - PATH=$$PATH:$(EPATH) $(CC) -o $(UNWRAP) -shared -fPIC unwrap.c; \
188 + PATH=$$PATH:$(EPATH) $(CC) -o $(UNWRAP) -shared $(CFLAGS) -fPIC unwrap.c; \
192 @@ -29,7 +26,7 @@ $(LIMACC): lim_accept.c
193 if [ `uname` = "Darwin" ]; then \
194 PATH=$$PATH:$(EPATH) $(CC) -o $(LIMACC) -dynamiclib -fPIC -nostartfiles lim_accept.c; \
196 - PATH=$$PATH:$(EPATH) $(CC) -o $(LIMACC) -shared -fPIC -nostartfiles lim_accept.c; \
197 + PATH=$$PATH:$(EPATH) $(CC) -o $(LIMACC) -shared $(CFLAGS) -fPIC -nostartfiles lim_accept.c; \
201 @@ -39,9 +36,8 @@ $(ULTDSM): ultravnc_dsm_helper.c
202 if [ `uname` = "SunOS" ]; then \
203 PATH=$$PATH:$(EPATH) $(CC) -o $(ULTDSM) $(CPP_SSL) ultravnc_dsm_helper.c $(LD_SSL) -lssl -lcrypto -lsocket -lnsl; \
205 - PATH=$$PATH:$(EPATH) $(CC) -o $(ULTDSM) $(CPP_SSL) ultravnc_dsm_helper.c $(LD_SSL) -lssl -lcrypto; \
206 + PATH=$$PATH:$(EPATH) $(CC) -o $(ULTDSM) $(CPP_SSL) ultravnc_dsm_helper.c $(CFLAGS) $(LDFLAGS) -lssl -lcrypto; \
208 - PATH=$$PATH:$(EPATH) strip $(ULTDSM)
214 [FILE:7015:patches/patch-vncstorepw_ultravnc__dsm__helper.c]
215 --- vncstorepw/ultravnc_dsm_helper.c.orig 2010-04-23 04:29:43 UTC
216 +++ vncstorepw/ultravnc_dsm_helper.c
217 @@ -414,7 +414,9 @@ void enc_do(char *ciph, char *keyfile, c
218 if (strstr(p, "md5+") == p) {
219 Digest = EVP_md5(); p += strlen("md5+");
220 } else if (strstr(p, "sha+") == p) {
221 - Digest = EVP_sha(); p += strlen("sha+");
222 + fprintf(stderr, "%s: obsolete hash algorithm: SHA-0\n",
225 } else if (strstr(p, "sha1+") == p) {
226 Digest = EVP_sha1(); p += strlen("sha1+");
227 } else if (strstr(p, "ripe+") == p) {
228 @@ -655,8 +657,10 @@ static void enc_xfer(int sock_fr, int so
230 unsigned char E_keystr[EVP_MAX_KEY_LENGTH];
231 unsigned char D_keystr[EVP_MAX_KEY_LENGTH];
232 - EVP_CIPHER_CTX E_ctx, D_ctx;
233 - EVP_CIPHER_CTX *ctx = NULL;
234 + //openssl1.1.patch - Do NOT create two context and only use one
236 + //EVP_CIPHER_CTX *E_ctx, *D_ctx;
237 + EVP_CIPHER_CTX *ctx;
239 unsigned char buf[BSIZE], out[BSIZE];
240 unsigned char *psrc = NULL, *keystr;
241 @@ -698,11 +702,14 @@ static void enc_xfer(int sock_fr, int so
242 encsym = encrypt ? "+" : "-";
244 /* use the encryption/decryption context variables below */
245 + ctx = EVP_CIPHER_CTX_new();
247 + fprintf(stderr, "Failed to create encryption/decryption context.\n");
258 @@ -797,7 +804,6 @@ static void enc_xfer(int sock_fr, int so
260 fprintf(stderr, "%s: %s - WARNING: MSRC4 mode and IGNORING random salt\n", prog, encstr);
261 fprintf(stderr, "%s: %s - WARNING: and initialization vector!!\n", prog, encstr);
262 - EVP_CIPHER_CTX_init(ctx);
264 /* for pw=xxxx a md5 hash is used */
265 EVP_BytesToKey(Cipher, Digest, NULL, (unsigned char *) keydata,
266 @@ -816,7 +822,6 @@ static void enc_xfer(int sock_fr, int so
268 EVP_BytesToKey(Cipher, Digest, NULL, (unsigned char *) keydata,
269 keydata_len, 1, keystr, ivec);
270 - EVP_CIPHER_CTX_init(ctx);
271 EVP_CipherInit_ex(ctx, Cipher, NULL, keystr, ivec,
274 @@ -836,9 +841,9 @@ static void enc_xfer(int sock_fr, int so
278 - if (ivec_size < Cipher->iv_len && !securevnc) {
279 + if (ivec_size < EVP_CIPHER_iv_length(Cipher) && !securevnc) {
280 fprintf(stderr, "%s: %s - WARNING: short IV %d < %d\n",
281 - prog, encstr, ivec_size, Cipher->iv_len);
282 + prog, encstr, ivec_size, EVP_CIPHER_iv_length(Cipher));
285 /* make the hashed value and place in keystr */
286 @@ -877,9 +882,6 @@ static void enc_xfer(int sock_fr, int so
290 - /* initialize the context */
291 - EVP_CIPHER_CTX_init(ctx);
294 /* set the cipher & initialize */
296 @@ -986,6 +988,7 @@ static void enc_xfer(int sock_fr, int so
297 /* transfer done (viewer exited or some error) */
300 + if (ctx) EVP_CIPHER_CTX_free(ctx);
301 fprintf(stderr, "\n%s: %s - close sock_to\n", prog, encstr);
304 @@ -1060,14 +1063,14 @@ static int securevnc_server_rsa_save_dia
307 static char *rsa_md5_sum(unsigned char* rsabuf) {
309 + EVP_MD_CTX *md = EVP_MD_CTX_create();
310 char digest[EVP_MAX_MD_SIZE], tmp[16];
311 char md5str[EVP_MAX_MD_SIZE * 8];
312 unsigned int i, size = 0;
314 - EVP_DigestInit(&md, EVP_md5());
315 - EVP_DigestUpdate(&md, rsabuf, SECUREVNC_RSA_PUBKEY_SIZE);
316 - EVP_DigestFinal(&md, (unsigned char *)digest, &size);
317 + EVP_DigestInit(md, EVP_md5());
318 + EVP_DigestUpdate(md, rsabuf, SECUREVNC_RSA_PUBKEY_SIZE);
319 + EVP_DigestFinal(md, (unsigned char *)digest, &size);
321 memset(md5str, 0, sizeof(md5str));
322 for (i=0; i < size; i++) {
323 @@ -1075,6 +1078,7 @@ static char *rsa_md5_sum(unsigned char*
324 sprintf(tmp, "%02x", (int) uc);
327 + EVP_MD_CTX_destroy(md);
328 return strdup(md5str);
331 @@ -1184,7 +1188,7 @@ static void sslexit(char *msg) {
333 static void securevnc_setup(int conn1, int conn2) {
335 - EVP_CIPHER_CTX init_ctx;
336 + EVP_CIPHER_CTX *init_ctx = EVP_CIPHER_CTX_new();
337 unsigned char keystr[EVP_MAX_KEY_LENGTH];
338 unsigned char *rsabuf, *rsasav;
339 unsigned char *encrypted_keybuf;
340 @@ -1203,6 +1207,8 @@ static void securevnc_setup(int conn1, i
342 ERR_load_crypto_strings();
344 + if (!init_ctx) sslexit("securevnc_setup: EVP_CIPHER_CTX_new() failed");
346 /* alloc and read from server the 270 comprising the rsa public key: */
347 rsabuf = (unsigned char *) calloc(SECUREVNC_RSA_PUBKEY_SIZE, 1);
348 rsasav = (unsigned char *) calloc(SECUREVNC_RSA_PUBKEY_SIZE, 1);
349 @@ -1323,8 +1329,7 @@ static void securevnc_setup(int conn1, i
351 * Back to the work involving the tmp obscuring key:
353 - EVP_CIPHER_CTX_init(&init_ctx);
354 - rc = EVP_CipherInit_ex(&init_ctx, EVP_rc4(), NULL, initkey, NULL, 1);
355 + rc = EVP_CipherInit_ex(init_ctx, EVP_rc4(), NULL, initkey, NULL, 1);
357 sslexit("securevnc_setup: EVP_CipherInit_ex(init_ctx) failed");
359 @@ -1340,13 +1345,13 @@ static void securevnc_setup(int conn1, i
360 /* decode with the tmp key */
362 memset(to_viewer, 0, sizeof(to_viewer));
363 - if (EVP_CipherUpdate(&init_ctx, to_viewer, &len, buf, n) == 0) {
364 + if (EVP_CipherUpdate(init_ctx, to_viewer, &len, buf, n) == 0) {
365 sslexit("securevnc_setup: EVP_CipherUpdate(init_ctx) failed");
370 - EVP_CIPHER_CTX_cleanup(&init_ctx);
371 + EVP_CIPHER_CTX_free(init_ctx);
374 /* print what we would send to the viewer (sent below): */
375 @@ -1407,7 +1412,7 @@ static void securevnc_setup(int conn1, i
377 if (client_auth_req && client_auth) {
378 RSA *client_rsa = load_client_auth(client_auth);
380 + EVP_MD_CTX *dctx = EVP_MD_CTX_create();
381 unsigned char digest[EVP_MAX_MD_SIZE], *signature;
382 unsigned int ndig = 0, nsig = 0;
384 @@ -1421,8 +1426,8 @@ static void securevnc_setup(int conn1, i
388 - EVP_DigestInit(&dctx, EVP_sha1());
389 - EVP_DigestUpdate(&dctx, keystr, SECUREVNC_KEY_SIZE);
390 + EVP_DigestInit(dctx, EVP_sha1());
391 + EVP_DigestUpdate(dctx, keystr, SECUREVNC_KEY_SIZE);
393 * Without something like the following MITM is still possible.
394 * This is because the MITM knows keystr and can use it with
395 @@ -1433,7 +1438,7 @@ static void securevnc_setup(int conn1, i
396 * he doesn't have Viewer_ClientAuth.pkey.
399 - EVP_DigestUpdate(&dctx, rsasav, SECUREVNC_RSA_PUBKEY_SIZE);
400 + EVP_DigestUpdate(dctx, rsasav, SECUREVNC_RSA_PUBKEY_SIZE);
401 if (!keystore_verified) {
402 fprintf(stderr, "securevnc_setup:\n");
403 fprintf(stderr, "securevnc_setup: Warning: even *WITH* Client Authentication in SecureVNC,\n");
404 @@ -1456,7 +1461,8 @@ static void securevnc_setup(int conn1, i
405 fprintf(stderr, "securevnc_setup:\n");
408 - EVP_DigestFinal(&dctx, (unsigned char *)digest, &ndig);
409 + EVP_DigestFinal(dctx, (unsigned char *)digest, &ndig);
410 + EVP_MD_CTX_destroy(dctx);
412 signature = (unsigned char *) calloc(RSA_size(client_rsa), 1);
413 RSA_sign(NID_sha1, digest, ndig, signature, &nsig, client_rsa);
416 [FILE:160:patches/patch-wr__tool]
417 --- wr_tool.orig 2008-08-29 12:58:03 UTC
419 @@ -6,4 +6,4 @@ cat > $wr <<END
420 UNAME=.; export UNAME