GUACAMOLE-1293: Add support for the name handshake instruction.
This commit is contained in:
parent
a4adb3f5c0
commit
cb7ae25177
@ -310,7 +310,8 @@ typedef enum guac_protocol_version {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Protocol version 1.5.0, which supports the "msg" instruction, allowing
|
* Protocol version 1.5.0, which supports the "msg" instruction, allowing
|
||||||
* messages to be sent to the client.
|
* messages to be sent to the client, and adds support for the "name"
|
||||||
|
* handshake instruction.
|
||||||
*/
|
*/
|
||||||
GUAC_PROTOCOL_VERSION_1_5_0 = 0x010500
|
GUAC_PROTOCOL_VERSION_1_5_0 = 0x010500
|
||||||
|
|
||||||
|
@ -89,6 +89,12 @@ struct guac_user_info {
|
|||||||
*/
|
*/
|
||||||
int optimal_resolution;
|
int optimal_resolution;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The human-readable name of the Guacamole user. If the client does not
|
||||||
|
* provide a name then this will be NULL.
|
||||||
|
*/
|
||||||
|
const char* name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The timezone of the remote system. If the client does not provide
|
* The timezone of the remote system. If the client does not provide
|
||||||
* a specific timezone then this will be NULL. The format of the timezone
|
* a specific timezone then this will be NULL. The format of the timezone
|
||||||
|
@ -64,6 +64,7 @@ __guac_instruction_handler_mapping __guac_handshake_handler_map[] = {
|
|||||||
{"video", __guac_handshake_video_handler},
|
{"video", __guac_handshake_video_handler},
|
||||||
{"image", __guac_handshake_image_handler},
|
{"image", __guac_handshake_image_handler},
|
||||||
{"timezone", __guac_handshake_timezone_handler},
|
{"timezone", __guac_handshake_timezone_handler},
|
||||||
|
{"name", __guac_handshake_name_handler},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -676,6 +677,21 @@ int __guac_handshake_image_handler(guac_user* user, int argc, char** argv) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int __guac_handshake_name_handler(guac_user* user, int argc, char** argv) {
|
||||||
|
|
||||||
|
/* Free any past value */
|
||||||
|
free((char *) user->info.name);
|
||||||
|
|
||||||
|
if (argc > 0 && strcmp(argv[0], ""))
|
||||||
|
user->info.name = (const char*) strdup(argv[0]);
|
||||||
|
|
||||||
|
else
|
||||||
|
user->info.name = NULL;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int __guac_handshake_timezone_handler(guac_user* user, int argc, char** argv) {
|
int __guac_handshake_timezone_handler(guac_user* user, int argc, char** argv) {
|
||||||
|
|
||||||
/* Free any past value */
|
/* Free any past value */
|
||||||
|
@ -218,6 +218,13 @@ __guac_instruction_handler __guac_handshake_video_handler;
|
|||||||
*/
|
*/
|
||||||
__guac_instruction_handler __guac_handshake_image_handler;
|
__guac_instruction_handler __guac_handshake_image_handler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal handler function that is called when the name instruction is
|
||||||
|
* received during the handshake process, specifying the name of the Guacamole
|
||||||
|
* user establishing the connection.
|
||||||
|
*/
|
||||||
|
__guac_instruction_handler __guac_handshake_name_handler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal handler function that is called when the timezone instruction is
|
* Internal handler function that is called when the timezone instruction is
|
||||||
* received during the handshake process, specifying the timezone of the
|
* received during the handshake process, specifying the timezone of the
|
||||||
|
@ -296,6 +296,7 @@ int guac_user_handle_connection(guac_user* user, int usec_timeout) {
|
|||||||
user->info.audio_mimetypes = NULL;
|
user->info.audio_mimetypes = NULL;
|
||||||
user->info.image_mimetypes = NULL;
|
user->info.image_mimetypes = NULL;
|
||||||
user->info.video_mimetypes = NULL;
|
user->info.video_mimetypes = NULL;
|
||||||
|
user->info.name = NULL;
|
||||||
user->info.timezone = NULL;
|
user->info.timezone = NULL;
|
||||||
|
|
||||||
/* Count number of arguments. */
|
/* Count number of arguments. */
|
||||||
@ -370,7 +371,8 @@ int guac_user_handle_connection(guac_user* user, int usec_timeout) {
|
|||||||
guac_free_mimetypes((char **) user->info.image_mimetypes);
|
guac_free_mimetypes((char **) user->info.image_mimetypes);
|
||||||
guac_free_mimetypes((char **) user->info.video_mimetypes);
|
guac_free_mimetypes((char **) user->info.video_mimetypes);
|
||||||
|
|
||||||
/* Free timezone info. */
|
/* Free name and timezone info. */
|
||||||
|
free((char *) user->info.name);
|
||||||
free((char *) user->info.timezone);
|
free((char *) user->info.timezone);
|
||||||
|
|
||||||
guac_parser_free(parser);
|
guac_parser_free(parser);
|
||||||
|
Loading…
Reference in New Issue
Block a user