From 82fd6a279b110a7d1cab7a7f3c48c9dfcaecb7e3 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Mon, 18 Apr 2016 19:03:38 -0700 Subject: [PATCH] GUACAMOLE-33: Implement leave handlers for RDP, SSH, and telnet. --- src/protocols/rdp/user.c | 9 +++++++++ src/protocols/rdp/user.h | 5 +++++ src/protocols/ssh/user.c | 9 +++++++++ src/protocols/ssh/user.h | 9 +++++++-- src/protocols/telnet/user.c | 10 ++++++++++ src/protocols/telnet/user.h | 5 +++++ 6 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/protocols/rdp/user.c b/src/protocols/rdp/user.c index 6ded2eb8..af597dbd 100644 --- a/src/protocols/rdp/user.c +++ b/src/protocols/rdp/user.c @@ -122,3 +122,12 @@ int guac_rdp_user_file_handler(guac_user* user, guac_stream* stream, return 0; } +int guac_rdp_user_leave_handler(guac_user* user) { + + guac_rdp_client* rdp_client = (guac_rdp_client*) user->client->data; + + guac_common_cursor_remove_user(rdp_client->display->cursor, user); + + return 0; +} + diff --git a/src/protocols/rdp/user.h b/src/protocols/rdp/user.h index fe94d3e8..99b8c578 100644 --- a/src/protocols/rdp/user.h +++ b/src/protocols/rdp/user.h @@ -27,6 +27,11 @@ */ guac_user_join_handler guac_rdp_user_join_handler; +/** + * Handler for leaving users. + */ +guac_user_leave_handler guac_rdp_user_leave_handler; + /** * Handler for received simple file uploads. This handler will automatically * select between RDPDR and SFTP depending on which is available and which has diff --git a/src/protocols/ssh/user.c b/src/protocols/ssh/user.c index fc9913c9..4a224a0b 100644 --- a/src/protocols/ssh/user.c +++ b/src/protocols/ssh/user.c @@ -82,3 +82,12 @@ int guac_ssh_user_join_handler(guac_user* user, int argc, char** argv) { } +int guac_ssh_user_leave_handler(guac_user* user) { + + guac_ssh_client* ssh_client = (guac_ssh_client*) user->client->data; + + guac_common_cursor_remove_user(ssh_client->term->cursor, user); + + return 0; +} + diff --git a/src/protocols/ssh/user.h b/src/protocols/ssh/user.h index b9e99400..8287fed4 100644 --- a/src/protocols/ssh/user.h +++ b/src/protocols/ssh/user.h @@ -17,8 +17,8 @@ * under the License. */ -#ifndef GUAC_VNC_USER_H -#define GUAC_VNC_USER_H +#ifndef GUAC_SSH_USER_H +#define GUAC_SSH_USER_H #include "config.h" @@ -29,5 +29,10 @@ */ guac_user_join_handler guac_ssh_user_join_handler; +/** + * Handler for leaving users. + */ +guac_user_leave_handler guac_ssh_user_leave_handler; + #endif diff --git a/src/protocols/telnet/user.c b/src/protocols/telnet/user.c index 45855bde..427112b6 100644 --- a/src/protocols/telnet/user.c +++ b/src/protocols/telnet/user.c @@ -78,3 +78,13 @@ int guac_telnet_user_join_handler(guac_user* user, int argc, char** argv) { } +int guac_telnet_user_leave_handler(guac_user* user) { + + guac_telnet_client* telnet_client = + (guac_telnet_client*) user->client->data; + + guac_common_cursor_remove_user(telnet_client->term->cursor, user); + + return 0; +} + diff --git a/src/protocols/telnet/user.h b/src/protocols/telnet/user.h index 0968f679..910f0cb5 100644 --- a/src/protocols/telnet/user.h +++ b/src/protocols/telnet/user.h @@ -29,5 +29,10 @@ */ guac_user_join_handler guac_telnet_user_join_handler; +/** + * Handler for leaving users. + */ +guac_user_leave_handler guac_telnet_user_leave_handler; + #endif