[jira] [Updated] (GUACAMOLE-604) Add support for Polish keyboard layout

2018-07-31 Thread Nick Couchman (JIRA)


 [ 
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.

2018-07-31 Thread Nick Couchman (JIRA)


 [ 
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.

2018-07-31 Thread vnick
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.

2018-07-31 Thread vnick
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.

2018-07-31 Thread vnick
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.

2018-07-31 Thread vnick
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.

2018-07-31 Thread vnick
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.

2018-07-31 Thread vnick
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.

2018-07-31 Thread vnick
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

2018-07-31 Thread Nick Couchman (JIRA)


 [ 
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

2018-07-31 Thread Nick Couchman (JIRA)


 [ 
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

2018-07-31 Thread Nick Couchman (JIRA)


 [ 
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.

2018-07-31 Thread mjumper
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.

2018-07-31 Thread mjumper
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

2018-07-31 Thread Nick Couchman (JIRA)


 [ 
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

2018-07-31 Thread Nick Couchman (JIRA)


 [ 
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

2018-07-31 Thread Nick Couchman (JIRA)


[ 
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

2018-07-31 Thread Michael Jumper (JIRA)


 [ 
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

2018-07-31 Thread Nick Couchman (JIRA)


 [ 
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

2018-07-31 Thread Jim Chen (JIRA)


[ 
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

2018-07-31 Thread Jim Chen (JIRA)


[ 
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)