[jira] [Updated] (GUACAMOLE-604) Add support for Polish keyboard layout
[ https://issues.apache.org/jira/browse/GUACAMOLE-604?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nick Couchman updated GUACAMOLE-604: Summary: Add support for Polish keyboard layout (was: Connection RDP not support Polish keyboard layout.) > Add support for Polish keyboard layout > -- > > Key: GUACAMOLE-604 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-604 > Project: Guacamole > Issue Type: New Feature > Components: RDP >Reporter: krogac >Priority: Minor > > Connection RDP not support Polish keyboard layout. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (GUACAMOLE-604) Connection RDP not support Polish keyboard layout.
[ https://issues.apache.org/jira/browse/GUACAMOLE-604?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nick Couchman updated GUACAMOLE-604: Component/s: RDP > Connection RDP not support Polish keyboard layout. > -- > > Key: GUACAMOLE-604 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-604 > Project: Guacamole > Issue Type: New Feature > Components: RDP >Reporter: krogac >Priority: Minor > > Connection RDP not support Polish keyboard layout. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[3/4] guacamole-server git commit: GUACAMOLE-559: Merge fix race condition in receipt of clipboard data by terminal.
GUACAMOLE-559: Merge fix race condition in receipt of clipboard data by terminal. Project: http://git-wip-us.apache.org/repos/asf/guacamole-server/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-server/commit/427c4c8b Tree: http://git-wip-us.apache.org/repos/asf/guacamole-server/tree/427c4c8b Diff: http://git-wip-us.apache.org/repos/asf/guacamole-server/diff/427c4c8b Branch: refs/heads/master Commit: 427c4c8b44b0ee218c605ff9da409bcae56f6744 Parents: 71f993b 4f25410 Author: Nick Couchman Authored: Tue Jul 31 08:10:47 2018 -0400 Committer: Nick Couchman Committed: Tue Jul 31 08:10:47 2018 -0400 -- src/common/clipboard.c | 28 ++-- src/common/common/clipboard.h| 8 src/protocols/ssh/client.c | 5 + src/protocols/ssh/client.h | 5 + src/protocols/ssh/clipboard.c| 5 +++-- src/protocols/ssh/ssh.c | 2 +- src/protocols/ssh/ssh.h | 6 ++ src/protocols/telnet/client.c| 4 src/protocols/telnet/client.h| 5 + src/protocols/telnet/clipboard.c | 5 +++-- src/protocols/telnet/telnet.c| 1 + src/protocols/telnet/telnet.h| 6 ++ src/terminal/terminal.c | 16 ++-- src/terminal/terminal/terminal.h | 29 - 14 files changed, 87 insertions(+), 38 deletions(-) --
[4/4] guacamole-server git commit: Merge 1.0.0 changes back to master.
Merge 1.0.0 changes back to master. Project: http://git-wip-us.apache.org/repos/asf/guacamole-server/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-server/commit/0062f61d Tree: http://git-wip-us.apache.org/repos/asf/guacamole-server/tree/0062f61d Diff: http://git-wip-us.apache.org/repos/asf/guacamole-server/diff/0062f61d Branch: refs/heads/master Commit: 0062f61d67163537929d699541356cdce3b36519 Parents: d8cb221 427c4c8 Author: Nick Couchman Authored: Tue Jul 31 08:12:30 2018 -0400 Committer: Nick Couchman Committed: Tue Jul 31 08:12:30 2018 -0400 -- src/common/clipboard.c | 28 ++-- src/common/common/clipboard.h| 8 src/protocols/ssh/client.c | 5 + src/protocols/ssh/client.h | 5 + src/protocols/ssh/clipboard.c| 5 +++-- src/protocols/ssh/ssh.c | 2 +- src/protocols/ssh/ssh.h | 6 ++ src/protocols/telnet/client.c| 4 src/protocols/telnet/client.h| 5 + src/protocols/telnet/clipboard.c | 5 +++-- src/protocols/telnet/telnet.c| 1 + src/protocols/telnet/telnet.h| 6 ++ src/terminal/terminal.c | 16 ++-- src/terminal/terminal/terminal.h | 29 - 14 files changed, 87 insertions(+), 38 deletions(-) -- http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/0062f61d/src/terminal/terminal.c -- http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/0062f61d/src/terminal/terminal/terminal.h --
[1/4] guacamole-server git commit: GUACAMOLE-559: Guarantee ordered modification to the clipboard. Do not allow modification of clipboard while clipboard contents are being sent.
Repository: guacamole-server Updated Branches: refs/heads/master d8cb2218e -> 0062f61d6 GUACAMOLE-559: Guarantee ordered modification to the clipboard. Do not allow modification of clipboard while clipboard contents are being sent. Project: http://git-wip-us.apache.org/repos/asf/guacamole-server/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-server/commit/4f25410a Tree: http://git-wip-us.apache.org/repos/asf/guacamole-server/tree/4f25410a Diff: http://git-wip-us.apache.org/repos/asf/guacamole-server/diff/4f25410a Branch: refs/heads/master Commit: 4f25410aa9ec6914d20c4f1b529ddefcd3e4392e Parents: 860a5fc Author: Michael Jumper Authored: Mon Jul 30 23:20:14 2018 -0700 Committer: Michael Jumper Committed: Mon Jul 30 23:53:03 2018 -0700 -- src/common/clipboard.c| 28 ++-- src/common/common/clipboard.h | 8 2 files changed, 34 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/4f25410a/src/common/clipboard.c -- diff --git a/src/common/clipboard.c b/src/common/clipboard.c index 4452bee..eb2f548 100644 --- a/src/common/clipboard.c +++ b/src/common/clipboard.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -37,6 +38,8 @@ guac_common_clipboard* guac_common_clipboard_alloc(int size) { clipboard->length = 0; clipboard->available = size; +pthread_mutex_init(&(clipboard->lock), NULL); + return clipboard; } @@ -108,18 +111,37 @@ static void* __send_user_clipboard(guac_user* user, void* data) { } void guac_common_clipboard_send(guac_common_clipboard* clipboard, guac_client* client) { + +pthread_mutex_lock(&(clipboard->lock)); + guac_client_log(client, GUAC_LOG_DEBUG, "Broadcasting clipboard to all connected users."); guac_client_foreach_user(client, __send_user_clipboard, clipboard); guac_client_log(client, GUAC_LOG_DEBUG, "Broadcast of clipboard complete."); + +pthread_mutex_unlock(&(clipboard->lock)); + } -void guac_common_clipboard_reset(guac_common_clipboard* clipboard, const char* mimetype) { +void guac_common_clipboard_reset(guac_common_clipboard* clipboard, +const char* mimetype) { + +pthread_mutex_lock(&(clipboard->lock)); + +/* Clear clipboard contents */ clipboard->length = 0; -strncpy(clipboard->mimetype, mimetype, sizeof(clipboard->mimetype)-1); + +/* Assign given mimetype */ +strncpy(clipboard->mimetype, mimetype, sizeof(clipboard->mimetype) - 1); +clipboard->mimetype[sizeof(clipboard->mimetype) - 1] = '\0'; + +pthread_mutex_unlock(&(clipboard->lock)); + } void guac_common_clipboard_append(guac_common_clipboard* clipboard, const char* data, int length) { +pthread_mutex_lock(&(clipboard->lock)); + /* Truncate data to available length */ int remaining = clipboard->available - clipboard->length; if (remaining < length) @@ -131,5 +153,7 @@ void guac_common_clipboard_append(guac_common_clipboard* clipboard, const char* /* Update length */ clipboard->length += length; +pthread_mutex_unlock(&(clipboard->lock)); + } http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/4f25410a/src/common/common/clipboard.h -- diff --git a/src/common/common/clipboard.h b/src/common/common/clipboard.h index 5ebb261..c129a7c 100644 --- a/src/common/common/clipboard.h +++ b/src/common/common/clipboard.h @@ -23,6 +23,7 @@ #include "config.h" #include +#include /** * The maximum number of bytes to send in an individual blob when @@ -36,6 +37,13 @@ typedef struct guac_common_clipboard { /** + * Lock which restricts simultaneous access to the clipboard, guaranteeing + * ordered modifications to the clipboard and that changes to the clipboard + * are not allowed while the clipboard is being broadcast to all users. + */ +pthread_mutex_t lock; + +/** * The mimetype of the contained clipboard data. */ char mimetype[256];
[2/4] guacamole-server git commit: GUACAMOLE-559: Maintain terminal clipboard at client level such that it is guaranteed to exist immediately after user connects.
GUACAMOLE-559: Maintain terminal clipboard at client level such that it is guaranteed to exist immediately after user connects. Project: http://git-wip-us.apache.org/repos/asf/guacamole-server/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-server/commit/860a5fca Tree: http://git-wip-us.apache.org/repos/asf/guacamole-server/tree/860a5fca Diff: http://git-wip-us.apache.org/repos/asf/guacamole-server/diff/860a5fca Branch: refs/heads/master Commit: 860a5fca8f98ae13fcbcce07ef24766c0d93 Parents: 71f993b Author: Michael Jumper Authored: Mon Jul 30 23:01:27 2018 -0700 Committer: Michael Jumper Committed: Mon Jul 30 23:53:03 2018 -0700 -- src/protocols/ssh/client.c | 5 + src/protocols/ssh/client.h | 5 + src/protocols/ssh/clipboard.c| 5 +++-- src/protocols/ssh/ssh.c | 2 +- src/protocols/ssh/ssh.h | 6 ++ src/protocols/telnet/client.c| 4 src/protocols/telnet/client.h| 5 + src/protocols/telnet/clipboard.c | 5 +++-- src/protocols/telnet/telnet.c| 1 + src/protocols/telnet/telnet.h| 6 ++ src/terminal/terminal.c | 16 ++-- src/terminal/terminal/terminal.h | 29 - 12 files changed, 53 insertions(+), 36 deletions(-) -- http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/860a5fca/src/protocols/ssh/client.c -- diff --git a/src/protocols/ssh/client.c b/src/protocols/ssh/client.c index 47b5978..25e8e5b 100644 --- a/src/protocols/ssh/client.c +++ b/src/protocols/ssh/client.c @@ -20,6 +20,7 @@ #include "config.h" #include "client.h" +#include "common/clipboard.h" #include "common/recording.h" #include "common-ssh/sftp.h" #include "ssh.h" @@ -42,6 +43,9 @@ int guac_client_init(guac_client* client) { guac_ssh_client* ssh_client = calloc(1, sizeof(guac_ssh_client)); client->data = ssh_client; +/* Init clipboard */ +ssh_client->clipboard = guac_common_clipboard_alloc(GUAC_SSH_CLIPBOARD_MAX_LENGTH); + /* Set handlers */ client->join_handler = guac_ssh_user_join_handler; client->free_handler = guac_ssh_client_free_handler; @@ -106,6 +110,7 @@ int guac_ssh_client_free_handler(guac_client* client) { guac_ssh_settings_free(ssh_client->settings); /* Free client structure */ +guac_common_clipboard_free(ssh_client->clipboard); free(ssh_client); guac_common_ssh_uninit(); http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/860a5fca/src/protocols/ssh/client.h -- diff --git a/src/protocols/ssh/client.h b/src/protocols/ssh/client.h index a759e81..551cb7a 100644 --- a/src/protocols/ssh/client.h +++ b/src/protocols/ssh/client.h @@ -23,6 +23,11 @@ #include /** + * The maximum number of bytes to allow within the clipboard. + */ +#define GUAC_SSH_CLIPBOARD_MAX_LENGTH 262144 + +/** * Handler which is invoked when the SSH client needs to be disconnected (if * connected) and freed. This can happen if initialization fails, or all users * have left the connection. http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/860a5fca/src/protocols/ssh/clipboard.c -- diff --git a/src/protocols/ssh/clipboard.c b/src/protocols/ssh/clipboard.c index 0e23632..72e1ca0 100644 --- a/src/protocols/ssh/clipboard.c +++ b/src/protocols/ssh/clipboard.c @@ -19,6 +19,7 @@ #include "config.h" #include "clipboard.h" +#include "common/clipboard.h" #include "ssh.h" #include "terminal/terminal.h" @@ -32,7 +33,7 @@ int guac_ssh_clipboard_handler(guac_user* user, guac_stream* stream, /* Clear clipboard and prepare for new data */ guac_client* client = user->client; guac_ssh_client* ssh_client = (guac_ssh_client*) client->data; -guac_terminal_clipboard_reset(ssh_client->term, mimetype); +guac_common_clipboard_reset(ssh_client->clipboard, mimetype); /* Set handlers for clipboard stream */ stream->blob_handler = guac_ssh_clipboard_blob_handler; @@ -47,7 +48,7 @@ int guac_ssh_clipboard_blob_handler(guac_user* user, guac_stream* stream, /* Append new data */ guac_client* client = user->client; guac_ssh_client* ssh_client = (guac_ssh_client*) client->data; -guac_terminal_clipboard_append(ssh_client->term, data, length); +guac_common_clipboard_append(ssh_client->clipboard, data, length); return 0; } http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/860a5fca/src/protocols/ssh/ssh.c -- diff --git a/src/protocols/ssh/ssh.c b/src/protocols/ssh/ssh.c index f98f222..a116281 100644 --- a/src/protocols/ssh/ssh.c +++
[1/3] guacamole-server git commit: GUACAMOLE-559: Guarantee ordered modification to the clipboard. Do not allow modification of clipboard while clipboard contents are being sent.
Repository: guacamole-server Updated Branches: refs/heads/staging/1.0.0 71f993b25 -> 427c4c8b4 GUACAMOLE-559: Guarantee ordered modification to the clipboard. Do not allow modification of clipboard while clipboard contents are being sent. Project: http://git-wip-us.apache.org/repos/asf/guacamole-server/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-server/commit/4f25410a Tree: http://git-wip-us.apache.org/repos/asf/guacamole-server/tree/4f25410a Diff: http://git-wip-us.apache.org/repos/asf/guacamole-server/diff/4f25410a Branch: refs/heads/staging/1.0.0 Commit: 4f25410aa9ec6914d20c4f1b529ddefcd3e4392e Parents: 860a5fc Author: Michael Jumper Authored: Mon Jul 30 23:20:14 2018 -0700 Committer: Michael Jumper Committed: Mon Jul 30 23:53:03 2018 -0700 -- src/common/clipboard.c| 28 ++-- src/common/common/clipboard.h | 8 2 files changed, 34 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/4f25410a/src/common/clipboard.c -- diff --git a/src/common/clipboard.c b/src/common/clipboard.c index 4452bee..eb2f548 100644 --- a/src/common/clipboard.c +++ b/src/common/clipboard.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -37,6 +38,8 @@ guac_common_clipboard* guac_common_clipboard_alloc(int size) { clipboard->length = 0; clipboard->available = size; +pthread_mutex_init(&(clipboard->lock), NULL); + return clipboard; } @@ -108,18 +111,37 @@ static void* __send_user_clipboard(guac_user* user, void* data) { } void guac_common_clipboard_send(guac_common_clipboard* clipboard, guac_client* client) { + +pthread_mutex_lock(&(clipboard->lock)); + guac_client_log(client, GUAC_LOG_DEBUG, "Broadcasting clipboard to all connected users."); guac_client_foreach_user(client, __send_user_clipboard, clipboard); guac_client_log(client, GUAC_LOG_DEBUG, "Broadcast of clipboard complete."); + +pthread_mutex_unlock(&(clipboard->lock)); + } -void guac_common_clipboard_reset(guac_common_clipboard* clipboard, const char* mimetype) { +void guac_common_clipboard_reset(guac_common_clipboard* clipboard, +const char* mimetype) { + +pthread_mutex_lock(&(clipboard->lock)); + +/* Clear clipboard contents */ clipboard->length = 0; -strncpy(clipboard->mimetype, mimetype, sizeof(clipboard->mimetype)-1); + +/* Assign given mimetype */ +strncpy(clipboard->mimetype, mimetype, sizeof(clipboard->mimetype) - 1); +clipboard->mimetype[sizeof(clipboard->mimetype) - 1] = '\0'; + +pthread_mutex_unlock(&(clipboard->lock)); + } void guac_common_clipboard_append(guac_common_clipboard* clipboard, const char* data, int length) { +pthread_mutex_lock(&(clipboard->lock)); + /* Truncate data to available length */ int remaining = clipboard->available - clipboard->length; if (remaining < length) @@ -131,5 +153,7 @@ void guac_common_clipboard_append(guac_common_clipboard* clipboard, const char* /* Update length */ clipboard->length += length; +pthread_mutex_unlock(&(clipboard->lock)); + } http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/4f25410a/src/common/common/clipboard.h -- diff --git a/src/common/common/clipboard.h b/src/common/common/clipboard.h index 5ebb261..c129a7c 100644 --- a/src/common/common/clipboard.h +++ b/src/common/common/clipboard.h @@ -23,6 +23,7 @@ #include "config.h" #include +#include /** * The maximum number of bytes to send in an individual blob when @@ -36,6 +37,13 @@ typedef struct guac_common_clipboard { /** + * Lock which restricts simultaneous access to the clipboard, guaranteeing + * ordered modifications to the clipboard and that changes to the clipboard + * are not allowed while the clipboard is being broadcast to all users. + */ +pthread_mutex_t lock; + +/** * The mimetype of the contained clipboard data. */ char mimetype[256];
[2/3] guacamole-server git commit: GUACAMOLE-559: Maintain terminal clipboard at client level such that it is guaranteed to exist immediately after user connects.
GUACAMOLE-559: Maintain terminal clipboard at client level such that it is guaranteed to exist immediately after user connects. Project: http://git-wip-us.apache.org/repos/asf/guacamole-server/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-server/commit/860a5fca Tree: http://git-wip-us.apache.org/repos/asf/guacamole-server/tree/860a5fca Diff: http://git-wip-us.apache.org/repos/asf/guacamole-server/diff/860a5fca Branch: refs/heads/staging/1.0.0 Commit: 860a5fca8f98ae13fcbcce07ef24766c0d93 Parents: 71f993b Author: Michael Jumper Authored: Mon Jul 30 23:01:27 2018 -0700 Committer: Michael Jumper Committed: Mon Jul 30 23:53:03 2018 -0700 -- src/protocols/ssh/client.c | 5 + src/protocols/ssh/client.h | 5 + src/protocols/ssh/clipboard.c| 5 +++-- src/protocols/ssh/ssh.c | 2 +- src/protocols/ssh/ssh.h | 6 ++ src/protocols/telnet/client.c| 4 src/protocols/telnet/client.h| 5 + src/protocols/telnet/clipboard.c | 5 +++-- src/protocols/telnet/telnet.c| 1 + src/protocols/telnet/telnet.h| 6 ++ src/terminal/terminal.c | 16 ++-- src/terminal/terminal/terminal.h | 29 - 12 files changed, 53 insertions(+), 36 deletions(-) -- http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/860a5fca/src/protocols/ssh/client.c -- diff --git a/src/protocols/ssh/client.c b/src/protocols/ssh/client.c index 47b5978..25e8e5b 100644 --- a/src/protocols/ssh/client.c +++ b/src/protocols/ssh/client.c @@ -20,6 +20,7 @@ #include "config.h" #include "client.h" +#include "common/clipboard.h" #include "common/recording.h" #include "common-ssh/sftp.h" #include "ssh.h" @@ -42,6 +43,9 @@ int guac_client_init(guac_client* client) { guac_ssh_client* ssh_client = calloc(1, sizeof(guac_ssh_client)); client->data = ssh_client; +/* Init clipboard */ +ssh_client->clipboard = guac_common_clipboard_alloc(GUAC_SSH_CLIPBOARD_MAX_LENGTH); + /* Set handlers */ client->join_handler = guac_ssh_user_join_handler; client->free_handler = guac_ssh_client_free_handler; @@ -106,6 +110,7 @@ int guac_ssh_client_free_handler(guac_client* client) { guac_ssh_settings_free(ssh_client->settings); /* Free client structure */ +guac_common_clipboard_free(ssh_client->clipboard); free(ssh_client); guac_common_ssh_uninit(); http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/860a5fca/src/protocols/ssh/client.h -- diff --git a/src/protocols/ssh/client.h b/src/protocols/ssh/client.h index a759e81..551cb7a 100644 --- a/src/protocols/ssh/client.h +++ b/src/protocols/ssh/client.h @@ -23,6 +23,11 @@ #include /** + * The maximum number of bytes to allow within the clipboard. + */ +#define GUAC_SSH_CLIPBOARD_MAX_LENGTH 262144 + +/** * Handler which is invoked when the SSH client needs to be disconnected (if * connected) and freed. This can happen if initialization fails, or all users * have left the connection. http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/860a5fca/src/protocols/ssh/clipboard.c -- diff --git a/src/protocols/ssh/clipboard.c b/src/protocols/ssh/clipboard.c index 0e23632..72e1ca0 100644 --- a/src/protocols/ssh/clipboard.c +++ b/src/protocols/ssh/clipboard.c @@ -19,6 +19,7 @@ #include "config.h" #include "clipboard.h" +#include "common/clipboard.h" #include "ssh.h" #include "terminal/terminal.h" @@ -32,7 +33,7 @@ int guac_ssh_clipboard_handler(guac_user* user, guac_stream* stream, /* Clear clipboard and prepare for new data */ guac_client* client = user->client; guac_ssh_client* ssh_client = (guac_ssh_client*) client->data; -guac_terminal_clipboard_reset(ssh_client->term, mimetype); +guac_common_clipboard_reset(ssh_client->clipboard, mimetype); /* Set handlers for clipboard stream */ stream->blob_handler = guac_ssh_clipboard_blob_handler; @@ -47,7 +48,7 @@ int guac_ssh_clipboard_blob_handler(guac_user* user, guac_stream* stream, /* Append new data */ guac_client* client = user->client; guac_ssh_client* ssh_client = (guac_ssh_client*) client->data; -guac_terminal_clipboard_append(ssh_client->term, data, length); +guac_common_clipboard_append(ssh_client->clipboard, data, length); return 0; } http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/860a5fca/src/protocols/ssh/ssh.c -- diff --git a/src/protocols/ssh/ssh.c b/src/protocols/ssh/ssh.c index f98f222..a116281 100644 --- a/src/protocols/ssh/ssh.c +++
[3/3] guacamole-server git commit: GUACAMOLE-559: Merge fix race condition in receipt of clipboard data by terminal.
GUACAMOLE-559: Merge fix race condition in receipt of clipboard data by terminal. Project: http://git-wip-us.apache.org/repos/asf/guacamole-server/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-server/commit/427c4c8b Tree: http://git-wip-us.apache.org/repos/asf/guacamole-server/tree/427c4c8b Diff: http://git-wip-us.apache.org/repos/asf/guacamole-server/diff/427c4c8b Branch: refs/heads/staging/1.0.0 Commit: 427c4c8b44b0ee218c605ff9da409bcae56f6744 Parents: 71f993b 4f25410 Author: Nick Couchman Authored: Tue Jul 31 08:10:47 2018 -0400 Committer: Nick Couchman Committed: Tue Jul 31 08:10:47 2018 -0400 -- src/common/clipboard.c | 28 ++-- src/common/common/clipboard.h| 8 src/protocols/ssh/client.c | 5 + src/protocols/ssh/client.h | 5 + src/protocols/ssh/clipboard.c| 5 +++-- src/protocols/ssh/ssh.c | 2 +- src/protocols/ssh/ssh.h | 6 ++ src/protocols/telnet/client.c| 4 src/protocols/telnet/client.h| 5 + src/protocols/telnet/clipboard.c | 5 +++-- src/protocols/telnet/telnet.c| 1 + src/protocols/telnet/telnet.h| 6 ++ src/terminal/terminal.c | 16 ++-- src/terminal/terminal/terminal.h | 29 - 14 files changed, 87 insertions(+), 38 deletions(-) --
[jira] [Updated] (GUACAMOLE-593) Make Member attribute customizable
[ https://issues.apache.org/jira/browse/GUACAMOLE-593?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nick Couchman updated GUACAMOLE-593: Fix Version/s: 1.0.1 > Make Member attribute customizable > -- > > Key: GUACAMOLE-593 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-593 > Project: Guacamole > Issue Type: Wish > Components: guacamole-auth-ldap >Affects Versions: 0.9.14 >Reporter: Alex Duarte >Assignee: Nick Couchman >Priority: Minor > Fix For: 1.0.1 > > > Currently, Guacamole looks for the Member attribute within LDAP to identify > what users are members of a group. I would like to request that this is made > a customizable field. I run guacamole on Fedora and we are primarily a Fedora > shop. With that said we use 389-DS and 389-DS does not have a member field by > default. The name of the field is uniquemember. Due to this, even after > adding someone to the LDAP group, I need to modify the group's attributes, > add a Member Attribute and manually add in the member values. This is less > than ideal as it would be nice to be able to add people to the group and call > it a day. Thanks! -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (GUACAMOLE-524) Allow LDAP attributes to be used as token
[ https://issues.apache.org/jira/browse/GUACAMOLE-524?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nick Couchman updated GUACAMOLE-524: Fix Version/s: (was: 1.0.1) 2.0.0 > Allow LDAP attributes to be used as token > - > > Key: GUACAMOLE-524 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-524 > Project: Guacamole > Issue Type: Improvement > Components: guacamole-auth-ldap >Reporter: Jared Frees >Priority: Minor > Fix For: 2.0.0 > > > Add support for using LDAP attributes as tokens for connection configuration. > For example, map the attribute 'workstationName' of the current logged on > user to a token USER_WORKSTATION that could then be used in a connection > profile. This would allow using a single connection and for the destination > to be determined by the LDAP attribute. This mapping should be configurable > and could be used in a connection definition such as the following: > > dn: cn=Example Connection,ou=groups,dc=example,dc=net > objectClass: guacConfigGroup > objectClass: groupOfNames > cn: Example Connection > guacConfigProtocol: rdp > guacConfigParameter: hostname=${USER_WORKSTATION} > guacConfigParameter: username=${GUAC_USERNAME} > guacConfigParameter: password=${GUAC_PASSWORD} > member: cn=user1,ou=people,dc=example,dc=net > member: cn=user2,ou=people,dc=example,dc=net -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Assigned] (GUACAMOLE-593) Make Member attribute customizable
[ https://issues.apache.org/jira/browse/GUACAMOLE-593?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nick Couchman reassigned GUACAMOLE-593: --- Assignee: Nick Couchman > Make Member attribute customizable > -- > > Key: GUACAMOLE-593 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-593 > Project: Guacamole > Issue Type: Wish > Components: guacamole-auth-ldap >Affects Versions: 0.9.14 >Reporter: Alex Duarte >Assignee: Nick Couchman >Priority: Minor > > Currently, Guacamole looks for the Member attribute within LDAP to identify > what users are members of a group. I would like to request that this is made > a customizable field. I run guacamole on Fedora and we are primarily a Fedora > shop. With that said we use 389-DS and 389-DS does not have a member field by > default. The name of the field is uniquemember. Due to this, even after > adding someone to the LDAP group, I need to modify the group's attributes, > add a Member Attribute and manually add in the member values. This is less > than ideal as it would be nice to be able to add people to the group and call > it a day. Thanks! -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[1/3] guacamole-client git commit: GUACAMOLE-593: Allow group membership attribute to be configured.
Repository: guacamole-client Updated Branches: refs/heads/master 5ce0c0f03 -> a34bbcf63 GUACAMOLE-593: Allow group membership attribute to be configured. Project: http://git-wip-us.apache.org/repos/asf/guacamole-client/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-client/commit/343b21ab Tree: http://git-wip-us.apache.org/repos/asf/guacamole-client/tree/343b21ab Diff: http://git-wip-us.apache.org/repos/asf/guacamole-client/diff/343b21ab Branch: refs/heads/master Commit: 343b21aba523915ebc172793a46827c0f8daeb93 Parents: 5ce0c0f Author: Nick Couchman Authored: Mon Jul 30 16:45:51 2018 -0400 Committer: Nick Couchman Committed: Mon Jul 30 16:45:51 2018 -0400 -- .../apache/guacamole/auth/ldap/ConfigurationService.java | 7 +++ .../guacamole/auth/ldap/LDAPGuacamoleProperties.java | 7 +++ .../guacamole/auth/ldap/connection/ConnectionService.java | 10 -- 3 files changed, 22 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/343b21ab/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ConfigurationService.java -- diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ConfigurationService.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ConfigurationService.java index de7c71c..361af03 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ConfigurationService.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ConfigurationService.java @@ -358,5 +358,12 @@ public class ConfigurationService { LDAPGuacamoleProperties.LDAP_USER_ATTRIBUTES ); } + +public String getMemberAttribute() throws GuacamoleException { +return environment.getProperty( +LDAPGuacamoleProperties.LDAP_MEMBER_ATTRIBUTE, +"member" +); +} } http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/343b21ab/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPGuacamoleProperties.java -- diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPGuacamoleProperties.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPGuacamoleProperties.java index 6372d81..e96145f 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPGuacamoleProperties.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPGuacamoleProperties.java @@ -215,4 +215,11 @@ public class LDAPGuacamoleProperties { public String getName() { return "ldap-user-attributes"; } }; + +public static final StringGuacamoleProperty LDAP_MEMBER_ATTRIBUTE = new StringGuacamoleProperty() { + +@Override +public String getName() { return "ldap-member-attribute"; } + +}; } http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/343b21ab/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java -- diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java index a282f30..5533ff0 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java @@ -245,7 +245,10 @@ public class ConnectionService { StringBuilder connectionSearchFilter = new StringBuilder(); // Add the prefix to the search filter, prefix filter searches for guacConfigGroups with the userDN as the member attribute value - connectionSearchFilter.append("(&(objectClass=guacConfigGroup)(|(member="); +connectionSearchFilter.append("(&(objectClass=guacConfigGroup)"); +connectionSearchFilter.append("(|("); +connectionSearchFilter.append(confService.getMemberAttribute()); +connectionSearchFilter.append("="); connectionSearchFilter.append(escapingService.escapeLDAPSearchFilter(userDN)); connectionSearchFilter.append(")"); @@ -257,7 +260,10 @@ public class ConnectionService { LDAPSearchResults userRoleGroupResults = ldapConnection.search( groupBaseDN, LDAPConnection.SCOPE_SUB, -
[3/3] guacamole-client git commit: GUACAMOLE-593: Merge support for configuring the LDAP attribute used to define group membership.
GUACAMOLE-593: Merge support for configuring the LDAP attribute used to define group membership. Project: http://git-wip-us.apache.org/repos/asf/guacamole-client/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-client/commit/a34bbcf6 Tree: http://git-wip-us.apache.org/repos/asf/guacamole-client/tree/a34bbcf6 Diff: http://git-wip-us.apache.org/repos/asf/guacamole-client/diff/a34bbcf6 Branch: refs/heads/master Commit: a34bbcf6377d2f26ec4308ce841e19094788e88d Parents: 5ce0c0f 735b22b Author: Michael Jumper Authored: Tue Jul 31 09:24:47 2018 -0700 Committer: Michael Jumper Committed: Tue Jul 31 09:24:47 2018 -0700 -- .../guacamole/auth/ldap/ConfigurationService.java | 18 ++ .../auth/ldap/LDAPGuacamoleProperties.java| 10 ++ .../auth/ldap/connection/ConnectionService.java | 12 ++-- 3 files changed, 38 insertions(+), 2 deletions(-) --
[jira] [Updated] (GUACAMOLE-605) Guacamole-Morphia Extension for Extension Guacamole-MongoDB support
[ https://issues.apache.org/jira/browse/GUACAMOLE-605?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nick Couchman updated GUACAMOLE-605: Priority: Minor (was: Major) > Guacamole-Morphia Extension for Extension Guacamole-MongoDB support > --- > > Key: GUACAMOLE-605 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-605 > Project: Guacamole > Issue Type: New Feature >Reporter: Daniel Quirant >Priority: Minor > > Extension implementation based on the existing ones of jdbc. > Replacing the MyBatis persistence manager with Morphia. > Mapping of entities in Morphia mode and adaptation of queries with criteria > used by Morphia. > Guacamole-MongoDB extension that uses the Guacamole-Morphia extension to > access the MongoDB documents. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (GUACAMOLE-605) Guacamole-Morphia Extension for Extension Guacamole-MongoDB support
[ https://issues.apache.org/jira/browse/GUACAMOLE-605?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nick Couchman updated GUACAMOLE-605: Affects Version/s: (was: 0.9.14) > Guacamole-Morphia Extension for Extension Guacamole-MongoDB support > --- > > Key: GUACAMOLE-605 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-605 > Project: Guacamole > Issue Type: New Feature >Reporter: Daniel Quirant >Priority: Major > > Extension implementation based on the existing ones of jdbc. > Replacing the MyBatis persistence manager with Morphia. > Mapping of entities in Morphia mode and adaptation of queries with criteria > used by Morphia. > Guacamole-MongoDB extension that uses the Guacamole-Morphia extension to > access the MongoDB documents. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (GUACAMOLE-605) Guacamole-Morphia Extension for Extension Guacamole-MongoDB support
[ https://issues.apache.org/jira/browse/GUACAMOLE-605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16564308#comment-16564308 ] Nick Couchman commented on GUACAMOLE-605: - Looking forward to it! :-D > Guacamole-Morphia Extension for Extension Guacamole-MongoDB support > --- > > Key: GUACAMOLE-605 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-605 > Project: Guacamole > Issue Type: New Feature >Reporter: Daniel Quirant >Priority: Minor > > Extension implementation based on the existing ones of jdbc. > Replacing the MyBatis persistence manager with Morphia. > Mapping of entities in Morphia mode and adaptation of queries with criteria > used by Morphia. > Guacamole-MongoDB extension that uses the Guacamole-Morphia extension to > access the MongoDB documents. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Resolved] (GUACAMOLE-559) Add support for the new Asynchronous Clipboard API
[ https://issues.apache.org/jira/browse/GUACAMOLE-559?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Michael Jumper resolved GUACAMOLE-559. -- Resolution: Done > Add support for the new Asynchronous Clipboard API > -- > > Key: GUACAMOLE-559 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-559 > Project: Guacamole > Issue Type: Improvement > Components: Documentation, guacamole, Website >Reporter: Michael Jumper >Assignee: Michael Jumper >Priority: Critical > Fix For: 1.0.0 > > Attachments: async-clipboard-api.png > > > As of very recently, there is a new "Asynchronous Clipboard API" available > for allowing webapps like Guacamole to read/write the clipboard [pretty much > *exactly* like we've always wanted|^async-clipboard-api.png]: > [https://www.w3.org/TR/clipboard-apis/#async-clipboard-api] > Users are prompted whether they wish to grant the page access, and their > answer is remembered going forward just like the other various things users > can grant access to (audio input, for example). > This API is available in Chrome 66+: > [https://developers.google.com/web/updates/2018/03/clipboardapi] > A pair of flags must currently be enabled for the API to be available: > * [chrome://flags/#enable-experimental-web-platform-features] > * [chrome://flags/#clipboard-content-setting] -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Resolved] (GUACAMOLE-593) Make Member attribute customizable
[ https://issues.apache.org/jira/browse/GUACAMOLE-593?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nick Couchman resolved GUACAMOLE-593. - Resolution: Implemented > Make Member attribute customizable > -- > > Key: GUACAMOLE-593 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-593 > Project: Guacamole > Issue Type: Wish > Components: guacamole-auth-ldap >Affects Versions: 0.9.14 >Reporter: Alex Duarte >Assignee: Nick Couchman >Priority: Minor > Fix For: 1.0.1 > > > Currently, Guacamole looks for the Member attribute within LDAP to identify > what users are members of a group. I would like to request that this is made > a customizable field. I run guacamole on Fedora and we are primarily a Fedora > shop. With that said we use 389-DS and 389-DS does not have a member field by > default. The name of the field is uniquemember. Due to this, even after > adding someone to the LDAP group, I need to modify the group's attributes, > add a Member Attribute and manually add in the member values. This is less > than ideal as it would be nice to be able to add people to the group and call > it a day. Thanks! -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (GUACAMOLE-565) Add terminal type parameter
[ https://issues.apache.org/jira/browse/GUACAMOLE-565?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16563942#comment-16563942 ] Jim Chen commented on GUACAMOLE-565: Sorry, been pretty busy lately. I'll try to get to it by the end of the week. > Add terminal type parameter > --- > > Key: GUACAMOLE-565 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-565 > Project: Guacamole > Issue Type: New Feature > Components: Documentation, guacamole-client, Terminal >Reporter: Jim Chen >Priority: Minor > Fix For: 1.0.0 > > > Some applications (e.g. tmux) use the terminal type to determine some of the > terminal's capabilities. Currently, Guacamole hardcodes the terminal type as > "linux", but it would be nice to make it configurable. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (GUACAMOLE-470) Make individual terminal colors configurable through "color-scheme" parameter
[ https://issues.apache.org/jira/browse/GUACAMOLE-470?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16563961#comment-16563961 ] Jim Chen commented on GUACAMOLE-470: Looks like we should add a call to `guac_terminal_find_color` when parsing the value. I'll try to get to the docs by the end of the week. > Make individual terminal colors configurable through "color-scheme" parameter > - > > Key: GUACAMOLE-470 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-470 > Project: Guacamole > Issue Type: Improvement > Components: Documentation, SSH, Telnet, Terminal >Reporter: Jim Chen >Priority: Major > Fix For: 1.0.0 > > > I'd be happy to work on this feature if the maintainers think it's a good > idea. > Currently, the "color-scheme" parameter in the configuration xml can only > choose one of four color schemes. It would be nice if it can also configure > individual colors, so that more customized color schemes can be chosen. > I propose to make the "color-scheme" parameter a series of semicolon > separated commands, e.g. "{{black-white; color2: rgb:cc/33/22; ...}}", where > each command specifies a color-set or a single color. This new format would > be backward-compatible with the previous format, because previous values like > "{{black-white}}" would be interpreted as a single command. > Possible color-set commands are same as before: "{{black-white}}", > "{{gray-black}}", "{{green-black}}", and "{{white-black}}". These commands > set the foreground-background colors to existing values. > The single-color commands are "{{foreground: }}", "{{background: > }}", and "{{color: }}", where {{}} is a number from 0 to > 255, and {{}} is a color value in the format {{rgb:RR/GG/BB}}, which > matches the format used by xterm. These commands set the specified color to > new values. -- This message was sent by Atlassian JIRA (v7.6.3#76005)