You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by vn...@apache.org on 2018/01/30 19:06:49 UTC

[2/9] guacamole-server git commit: GUACAMOLE-313: Add support for including mouse location within session recordings.

GUACAMOLE-313: Add support for including mouse location within session recordings.


Project: http://git-wip-us.apache.org/repos/asf/guacamole-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/guacamole-server/commit/df770ae4
Tree: http://git-wip-us.apache.org/repos/asf/guacamole-server/tree/df770ae4
Diff: http://git-wip-us.apache.org/repos/asf/guacamole-server/diff/df770ae4

Branch: refs/heads/master
Commit: df770ae4ea09505d3eb72181b9dff9169926f0bb
Parents: b37e734
Author: Michael Jumper <mj...@apache.org>
Authored: Mon Nov 27 13:03:21 2017 -0800
Committer: Michael Jumper <mj...@apache.org>
Committed: Fri Jan 26 16:21:28 2018 -0800

----------------------------------------------------------------------
 src/common/common/recording.h | 15 +++++++++++++++
 src/common/recording.c        |  9 +++++++++
 src/protocols/rdp/input.c     |  5 +++++
 src/protocols/ssh/input.c     |  5 +++++
 src/protocols/telnet/input.c  |  5 +++++
 src/protocols/vnc/input.c     |  5 +++++
 6 files changed, 44 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/df770ae4/src/common/common/recording.h
----------------------------------------------------------------------
diff --git a/src/common/common/recording.h b/src/common/common/recording.h
index 0305a83..e03e788 100644
--- a/src/common/common/recording.h
+++ b/src/common/common/recording.h
@@ -101,5 +101,20 @@ guac_common_recording* guac_common_recording_create(guac_client* client,
  */
 void guac_common_recording_free(guac_common_recording* recording);
 
+/**
+ * Reports the current mouse position within the recording.
+ *
+ * @param recording
+ *     The guac_common_recording associated with the mouse that has moved.
+ *
+ * @param x
+ *     The new X coordinate of the mouse cursor, in pixels.
+ *
+ * @param y
+ *     The new Y coordinate of the mouse cursor, in pixels.
+ */
+void guac_common_recording_report_mouse(guac_common_recording* recording,
+        int x, int y);
+
 #endif
 

http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/df770ae4/src/common/recording.c
----------------------------------------------------------------------
diff --git a/src/common/recording.c b/src/common/recording.c
index 274ac6d..4f334d5 100644
--- a/src/common/recording.c
+++ b/src/common/recording.c
@@ -20,6 +20,7 @@
 #include "common/recording.h"
 
 #include <guacamole/client.h>
+#include <guacamole/protocol.h>
 #include <guacamole/socket.h>
 
 #ifdef __MINGW32__
@@ -177,3 +178,11 @@ void guac_common_recording_free(guac_common_recording* recording) {
     free(recording);
 }
 
+void guac_common_recording_report_mouse(guac_common_recording* recording,
+        int x, int y) {
+
+    /* Report mouse location */
+    guac_protocol_send_mouse(recording->socket, x, y);
+
+}
+

http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/df770ae4/src/protocols/rdp/input.c
----------------------------------------------------------------------
diff --git a/src/protocols/rdp/input.c b/src/protocols/rdp/input.c
index 9e22049..7cb3da8 100644
--- a/src/protocols/rdp/input.c
+++ b/src/protocols/rdp/input.c
@@ -20,6 +20,7 @@
 #include "config.h"
 
 #include "client.h"
+#include "common/recording.h"
 #include "input.h"
 #include "keyboard.h"
 #include "rdp.h"
@@ -49,6 +50,10 @@ int guac_rdp_user_mouse_handler(guac_user* user, int x, int y, int mask) {
     /* Store current mouse location */
     guac_common_cursor_move(rdp_client->display->cursor, user, x, y);
 
+    /* Report mouse position within recording */
+    if (rdp_client->recording != NULL)
+        guac_common_recording_report_mouse(rdp_client->recording, x, y);
+
     /* If button mask unchanged, just send move event */
     if (mask == rdp_client->mouse_button_mask)
         rdp_inst->input->MouseEvent(rdp_inst->input, PTR_FLAGS_MOVE, x, y);

http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/df770ae4/src/protocols/ssh/input.c
----------------------------------------------------------------------
diff --git a/src/protocols/ssh/input.c b/src/protocols/ssh/input.c
index 95e0188..b4d0cf5 100644
--- a/src/protocols/ssh/input.c
+++ b/src/protocols/ssh/input.c
@@ -21,6 +21,7 @@
 
 #include "common/cursor.h"
 #include "common/display.h"
+#include "common/recording.h"
 #include "ssh.h"
 #include "terminal/terminal.h"
 
@@ -40,6 +41,10 @@ int guac_ssh_user_mouse_handler(guac_user* user, int x, int y, int mask) {
     if (term == NULL)
         return 0;
 
+    /* Report mouse position within recording */
+    if (ssh_client->recording != NULL)
+        guac_common_recording_report_mouse(ssh_client->recording, x, y);
+
     /* Send mouse event */
     guac_terminal_send_mouse(term, user, x, y, mask);
     return 0;

http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/df770ae4/src/protocols/telnet/input.c
----------------------------------------------------------------------
diff --git a/src/protocols/telnet/input.c b/src/protocols/telnet/input.c
index be50360..a6742e4 100644
--- a/src/protocols/telnet/input.c
+++ b/src/protocols/telnet/input.c
@@ -18,6 +18,7 @@
  */
 
 #include "config.h"
+#include "common/recording.h"
 #include "input.h"
 #include "terminal/terminal.h"
 #include "telnet.h"
@@ -42,6 +43,10 @@ int guac_telnet_user_mouse_handler(guac_user* user, int x, int y, int mask) {
     if (term == NULL)
         return 0;
 
+    /* Report mouse position within recording */
+    if (telnet_client->recording != NULL)
+        guac_common_recording_report_mouse(telnet_client->recording, x, y);
+
     /* Send mouse if not searching for password or username */
     if (settings->password_regex == NULL && settings->username_regex == NULL)
         guac_terminal_send_mouse(term, user, x, y, mask);

http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/df770ae4/src/protocols/vnc/input.c
----------------------------------------------------------------------
diff --git a/src/protocols/vnc/input.c b/src/protocols/vnc/input.c
index 86f4ca7..ab88c43 100644
--- a/src/protocols/vnc/input.c
+++ b/src/protocols/vnc/input.c
@@ -21,6 +21,7 @@
 
 #include "common/cursor.h"
 #include "common/display.h"
+#include "common/recording.h"
 #include "vnc.h"
 
 #include <guacamole/user.h>
@@ -35,6 +36,10 @@ int guac_vnc_user_mouse_handler(guac_user* user, int x, int y, int mask) {
     /* Store current mouse location */
     guac_common_cursor_move(vnc_client->display->cursor, user, x, y);
 
+    /* Report mouse position within recording */
+    if (vnc_client->recording != NULL)
+        guac_common_recording_report_mouse(vnc_client->recording, x, y);
+
     /* Send VNC event only if finished connecting */
     if (rfb_client != NULL)
         SendPointerEvent(rfb_client, x, y, mask);