This is an automated email from the ASF dual-hosted git repository. vnick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/guacamole-server.git
commit 956c5f293e13c6916ae00431a9146c203e8b5912 Merge: c97b8f2 3e22526 Author: Nick Couchman <vn...@apache.org> AuthorDate: Tue Jan 14 16:27:09 2020 -0500 Merge staging/1.1.0 changes back to master. Dockerfile | 7 +- configure.ac | 566 +++---------------- src/common/surface.c | 29 +- src/guacd-docker/bin/link-freerdp-plugins.sh | 2 +- src/protocols/rdp/.gitignore | 1 + src/protocols/rdp/Makefile.am | 387 +++++-------- src/protocols/rdp/{rdp_bitmap.c => bitmap.c} | 132 +---- src/protocols/rdp/{rdp_bitmap.h => bitmap.h} | 100 +--- .../audio-input/audio-buffer.c} | 170 +----- .../audio-input/audio-buffer.h} | 40 +- .../rdp/channels/audio-input/audio-input.c | 195 +++++++ .../audio-input/audio-input.h} | 42 +- src/protocols/rdp/channels/cliprdr.c | 620 +++++++++++++++++++++ src/protocols/rdp/channels/cliprdr.h | 146 +++++ src/protocols/rdp/channels/common-svc.c | 101 ++++ src/protocols/rdp/channels/common-svc.h | 229 ++++++++ src/protocols/rdp/{rdp_disp.c => channels/disp.c} | 76 ++- src/protocols/rdp/{rdp_disp.h => channels/disp.h} | 74 ++- src/protocols/rdp/channels/pipe-svc.c | 230 ++++++++ src/protocols/rdp/channels/pipe-svc.h | 188 +++++++ src/protocols/rdp/channels/rail.c | 211 +++++++ .../{compat/client-cliprdr.h => channels/rail.h} | 26 +- .../rdpdr/rdpdr-fs-messages-dir-info.c} | 89 +-- .../rdpdr/rdpdr-fs-messages-dir-info.h} | 56 +- .../rdpdr/rdpdr-fs-messages-file-info.c} | 169 +++--- .../rdpdr/rdpdr-fs-messages-file-info.h} | 72 ++- .../rdpdr/rdpdr-fs-messages-vol-info.c} | 92 ++- .../rdpdr/rdpdr-fs-messages-vol-info.h} | 30 +- .../rdpdr/rdpdr-fs-messages.c} | 271 +++++---- .../rdpdr/rdpdr-fs-messages.h} | 53 +- .../rdpdr/rdpdr-fs.c} | 73 ++- .../rdpdr/rdpdr-fs.h} | 30 +- src/protocols/rdp/channels/rdpdr/rdpdr-messages.c | 349 ++++++++++++ src/protocols/rdp/channels/rdpdr/rdpdr-messages.h | 136 +++++ .../rdpdr/rdpdr-printer.c} | 87 ++- src/protocols/rdp/channels/rdpdr/rdpdr-printer.h | 81 +++ src/protocols/rdp/channels/rdpdr/rdpdr.c | 184 ++++++ src/protocols/rdp/channels/rdpdr/rdpdr.h | 250 +++++++++ .../rdpsnd/rdpsnd-messages.c} | 71 +-- .../rdpsnd/rdpsnd-messages.h} | 111 +--- src/protocols/rdp/channels/rdpsnd/rdpsnd.c | 105 ++++ .../rdpsnd_service.h => channels/rdpsnd/rdpsnd.h} | 67 +-- src/protocols/rdp/client.c | 41 +- src/protocols/rdp/client.h | 2 - src/protocols/rdp/color.c | 76 +++ src/protocols/rdp/{rdp_color.h => color.h} | 25 +- src/protocols/rdp/compat/rail.h | 39 -- src/protocols/rdp/compat/winpr-stream.c | 47 -- src/protocols/rdp/compat/winpr-stream.h | 71 --- src/protocols/rdp/decompose.c | 1 - src/protocols/rdp/doc/svc-example/.gitignore | 2 + .../Makefile.am => doc/svc-example/Makefile} | 46 +- src/protocols/rdp/doc/svc-example/README.md | 169 ++++++ src/protocols/rdp/doc/svc-example/svc-example.c | 71 +++ src/protocols/rdp/download.c | 222 ++++++++ src/protocols/rdp/download.h | 69 +++ src/protocols/rdp/dvc.c | 183 ------ src/protocols/rdp/dvc.h | 138 ----- src/protocols/rdp/error.c | 2 - src/protocols/rdp/{rdp_fs.c => fs.c} | 67 ++- src/protocols/rdp/{rdp_fs.h => fs.h} | 108 +--- src/protocols/rdp/{rdp_gdi.c => gdi.c} | 195 +------ src/protocols/rdp/{rdp_gdi.h => gdi.h} | 83 ++- src/protocols/rdp/{rdp_glyph.c => glyph.c} | 51 +- src/protocols/rdp/{rdp_glyph.h => glyph.h} | 73 ++- src/protocols/rdp/guac_rdpdr/rdpdr_messages.c | 286 ---------- src/protocols/rdp/guac_rdpdr/rdpdr_messages.h | 221 -------- src/protocols/rdp/guac_rdpdr/rdpdr_printer.h | 48 -- src/protocols/rdp/guac_rdpdr/rdpdr_service.c | 313 ----------- src/protocols/rdp/guac_rdpdr/rdpdr_service.h | 184 ------ src/protocols/rdp/guac_rdpsnd/rdpsnd_service.c | 145 ----- src/protocols/rdp/guac_svc/svc_service.c | 150 ----- src/protocols/rdp/guac_svc/svc_service.h | 77 --- src/protocols/rdp/input.c | 20 +- src/protocols/rdp/keyboard.c | 30 +- src/protocols/rdp/keyboard.h | 6 +- src/protocols/rdp/{rdp_keymap.c => keymap.c} | 4 +- src/protocols/rdp/{rdp_keymap.h => keymap.h} | 11 +- src/protocols/rdp/keymaps/generate.pl | 7 +- src/protocols/rdp/log.c | 74 +++ src/protocols/rdp/{compat/winpr-wtypes.h => log.h} | 26 +- src/protocols/rdp/ls.c | 122 ++++ src/protocols/rdp/{sftp.h => ls.h} | 60 +- src/protocols/rdp/plugins/channels.c | 142 +++++ src/protocols/rdp/plugins/channels.h | 207 +++++++ .../rdp/plugins/generate-entry-wrappers.pl | 77 +++ .../rdp/plugins/guac-common-svc/guac-common-svc.c | 306 ++++++++++ .../guacai/guacai-messages.c} | 32 +- .../guacai/guacai-messages.h} | 21 +- .../ai_service.c => plugins/guacai/guacai.c} | 90 +-- .../ai_service.h => plugins/guacai/guacai.h} | 8 +- .../rdp/{ptr_string.c => plugins/ptr-string.c} | 6 +- .../rdp/{ptr_string.h => plugins/ptr-string.h} | 6 +- src/protocols/rdp/{rdp_pointer.c => pointer.c} | 61 +- src/protocols/rdp/{rdp_pointer.h => pointer.h} | 28 +- src/protocols/rdp/{rdp_print_job.c => print-job.c} | 4 +- src/protocols/rdp/{rdp_print_job.h => print-job.h} | 5 +- src/protocols/rdp/rdp.c | 573 ++++--------------- src/protocols/rdp/rdp.h | 49 +- src/protocols/rdp/rdp_cliprdr.c | 274 --------- src/protocols/rdp/rdp_cliprdr.h | 120 ---- src/protocols/rdp/rdp_color.c | 62 --- src/protocols/rdp/rdp_rail.c | 122 ---- src/protocols/rdp/rdp_rail.h | 58 -- src/protocols/rdp/rdp_status.h | 66 --- src/protocols/rdp/rdp_stream.c | 594 -------------------- src/protocols/rdp/rdp_stream.h | 226 -------- src/protocols/rdp/rdp_svc.c | 176 ------ src/protocols/rdp/rdp_svc.h | 168 ------ src/protocols/rdp/{rdp_settings.c => settings.c} | 281 ++-------- src/protocols/rdp/{rdp_settings.h => settings.h} | 41 +- src/protocols/rdp/sftp.c | 3 - src/protocols/rdp/sftp.h | 2 - src/protocols/rdp/tests/Makefile.am | 1 + src/protocols/rdp/tests/fs/basename.c | 59 ++ src/protocols/rdp/tests/fs/normalize_path.c | 2 +- src/protocols/rdp/unicode.c | 4 +- src/protocols/rdp/upload.c | 236 ++++++++ src/protocols/rdp/upload.h | 72 +++ src/protocols/rdp/user.c | 21 +- 120 files changed, 6582 insertions(+), 7134 deletions(-) diff --cc configure.ac index 7fc7d33,eb182fe..5b0fbe8 --- a/configure.ac +++ b/configure.ac @@@ -528,39 -528,10 +528,37 @@@ the fi # +# TLS Locking Support within libVNCServer +# + +if test "x${have_libvncserver}" = "xyes" +then + + have_vnc_tls_locking=yes + AC_CHECK_MEMBERS([rfbClient.LockWriteToTLS, rfbClient.UnlockWriteToTLS], + [], [have_vnc_tls_locking=no], + [[#include <rfb/rfbclient.h>]]) + + if test "x${have_vnc_tls_locking}" = "xno" + then + AC_MSG_WARN([ + -------------------------------------------- + This version of libvncclient lacks support + for TLS locking. VNC connections that use + TLS may experience instability as documented + in GUACAMOLE-414]) + else + AC_DEFINE([ENABLE_VNC_TLS_LOCKING],, + [Whether support for TLS locking within VNC is enabled.]) + fi + +fi + +# - # FreeRDP + # FreeRDP 2 (libfreerdp2, libfreerdp-client2, and libwinpr2) # - have_freerdp=disabled - RDP_LIBS= - WINPR_LIBS= + have_freerdp2=disabled AC_ARG_WITH([rdp], [AS_HELP_STRING([--with-rdp], [support RDP @<:@default=check@:>@])], diff --cc src/protocols/rdp/rdp.c index d0df053,5cf651a..6d8381d --- a/src/protocols/rdp/rdp.c +++ b/src/protocols/rdp/rdp.c @@@ -237,16 -97,11 +97,15 @@@ BOOL rdp_freerdp_pre_connect(freerdp* i /* Load "AUDIO_INPUT" plugin for audio input*/ if (settings->enable_audio_input) { rdp_client->audio_input = guac_rdp_audio_buffer_alloc(); - guac_rdp_audio_load_plugin(instance->context, dvc_list); + guac_rdp_audio_load_plugin(instance->context); } - /* Load clipboard plugin if not disabled */ - if (!(settings->disable_copy && settings->disable_paste) - && freerdp_channels_load_plugin(channels, instance->settings, - "cliprdr", NULL)) { - /* Load "cliprdr" plugin for clipboard support */ - guac_rdp_clipboard_load_plugin(rdp_client->clipboard, context); ++ /* Load "cliprdr" service if not disabled */ ++ if (!(settings->disable_copy && settings->disable_paste)) ++ guac_rdp_clipboard_load_plugin(rdp_client->clipboard, context); ++ else + guac_client_log(client, GUAC_LOG_WARNING, - "Failed to load cliprdr plugin. Clipboard will not work."); - } ++ "Copy and paste are both disabled. Clipboard plugin will not be loaded."); /* If RDPSND/RDPDR required, load them */ if (settings->printing_enabled diff --cc src/protocols/rdp/settings.c index 11cc861,bac74ff..fe2cf67 --- a/src/protocols/rdp/settings.c +++ b/src/protocols/rdp/settings.c @@@ -113,14 -108,9 +108,11 @@@ const char* GUAC_RDP_CLIENT_ARGS[] = "gateway-domain", "gateway-username", "gateway-password", - #endif - #ifdef HAVE_FREERDP_LOAD_BALANCER_SUPPORT "load-balance-info", - #endif + "disable-copy", + "disable-paste", NULL }; @@@ -546,22 -534,7 +536,21 @@@ enum RDP_ARGS_IDX * the connection broker, if a connection broker is being used. */ IDX_LOAD_BALANCE_INFO, - #endif + /** + * Whether outbound clipboard access should be blocked. If set to "true", + * it will not be possible to copy data from the remote desktop to the + * client using the clipboard. By default, clipboard access is not blocked. + */ + IDX_DISABLE_COPY, + + /** + * Whether inbound clipboard access should be blocked. If set to "true", it + * will not be possible to paste data from the client to the remote desktop + * using the clipboard. By default, clipboard access is not blocked. + */ + IDX_DISABLE_PASTE, + RDP_ARGS_COUNT }; @@@ -1022,18 -996,7 +1012,17 @@@ guac_rdp_settings* guac_rdp_parse_args( settings->load_balance_info = guac_user_parse_args_string(user, GUAC_RDP_CLIENT_ARGS, argv, IDX_LOAD_BALANCE_INFO, NULL); - #endif + /* Parse clipboard copy disable flag */ + settings->disable_copy = + guac_user_parse_args_boolean(user, GUAC_RDP_CLIENT_ARGS, argv, + IDX_DISABLE_COPY, 0); + + /* Parse clipboard paste disable flag */ + settings->disable_paste = + guac_user_parse_args_boolean(user, GUAC_RDP_CLIENT_ARGS, argv, + IDX_DISABLE_PASTE, 0); + /* Success */ return settings;