GUACAMOLE-422: Add support for passing through TZ in SSH.
This commit is contained in:
parent
ffdc98d024
commit
5536b836ad
@ -61,6 +61,7 @@ const char* GUAC_SSH_CLIENT_ARGS[] = {
|
|||||||
"terminal-type",
|
"terminal-type",
|
||||||
"scrollback",
|
"scrollback",
|
||||||
"locale",
|
"locale",
|
||||||
|
"timezone",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -247,6 +248,15 @@ enum SSH_ARGS_IDX {
|
|||||||
*/
|
*/
|
||||||
IDX_LOCALE,
|
IDX_LOCALE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The timezone that is passed from the client system to the
|
||||||
|
* remote server, or null if not specified. If set, and allowed
|
||||||
|
* by the remote SSH server, the TZ environment variable will be
|
||||||
|
* set on the remote session, causing the session to be localized
|
||||||
|
* to the specified timezone.
|
||||||
|
*/
|
||||||
|
IDX_TIMEZONE,
|
||||||
|
|
||||||
SSH_ARGS_COUNT
|
SSH_ARGS_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -410,6 +420,11 @@ guac_ssh_settings* guac_ssh_parse_args(guac_user* user,
|
|||||||
guac_user_parse_args_string(user, GUAC_SSH_CLIENT_ARGS, argv,
|
guac_user_parse_args_string(user, GUAC_SSH_CLIENT_ARGS, argv,
|
||||||
IDX_LOCALE, NULL);
|
IDX_LOCALE, NULL);
|
||||||
|
|
||||||
|
/* Read the client timezone. */
|
||||||
|
settings->timezone =
|
||||||
|
guac_user_parse_args_string(user, GUAC_SSH_CLIENT_ARGS, argv,
|
||||||
|
IDX_TIMEZONE, NULL);
|
||||||
|
|
||||||
/* Parsing was successful */
|
/* Parsing was successful */
|
||||||
return settings;
|
return settings;
|
||||||
|
|
||||||
@ -452,6 +467,9 @@ void guac_ssh_settings_free(guac_ssh_settings* settings) {
|
|||||||
/* Free locale */
|
/* Free locale */
|
||||||
free(settings->locale);
|
free(settings->locale);
|
||||||
|
|
||||||
|
/* Free the client timezone. */
|
||||||
|
free(settings->timezone);
|
||||||
|
|
||||||
/* Free overall structure */
|
/* Free overall structure */
|
||||||
free(settings);
|
free(settings);
|
||||||
|
|
||||||
|
@ -253,6 +253,10 @@ typedef struct guac_ssh_settings {
|
|||||||
* environment variable.
|
* environment variable.
|
||||||
*/
|
*/
|
||||||
char* locale;
|
char* locale;
|
||||||
|
/**
|
||||||
|
* The client timezone to pass to the remote system.
|
||||||
|
*/
|
||||||
|
char* timezone;
|
||||||
|
|
||||||
} guac_ssh_settings;
|
} guac_ssh_settings;
|
||||||
|
|
||||||
|
@ -256,6 +256,10 @@ void* ssh_client_thread(void* data) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set the client timezone */
|
||||||
|
if (settings->timezone != NULL)
|
||||||
|
libssh2_channel_setenv(ssh_client->term_channel, "TZ", settings->timezone);
|
||||||
|
|
||||||
#ifdef ENABLE_SSH_AGENT
|
#ifdef ENABLE_SSH_AGENT
|
||||||
/* Start SSH agent forwarding, if enabled */
|
/* Start SSH agent forwarding, if enabled */
|
||||||
if (ssh_client->enable_agent) {
|
if (ssh_client->enable_agent) {
|
||||||
|
Loading…
Reference in New Issue
Block a user