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