You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by mj...@apache.org on 2018/11/12 17:13:57 UTC
[02/12] guacamole-server git commit: GUACAMOLE-422: Add support for
passing through TZ in SSH.
GUACAMOLE-422: Add support for passing through TZ in SSH.
Project: http://git-wip-us.apache.org/repos/asf/guacamole-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/guacamole-server/commit/5536b836
Tree: http://git-wip-us.apache.org/repos/asf/guacamole-server/tree/5536b836
Diff: http://git-wip-us.apache.org/repos/asf/guacamole-server/diff/5536b836
Branch: refs/heads/master
Commit: 5536b836addb27dc6c8433b6afef2f9ad24d399d
Parents: ffdc98d
Author: Nick Couchman <vn...@apache.org>
Authored: Sat Jun 2 12:00:22 2018 -0400
Committer: Nick Couchman <vn...@apache.org>
Committed: Sun Nov 11 14:11:40 2018 -0500
----------------------------------------------------------------------
src/protocols/ssh/settings.c | 18 ++++++++++++++++++
src/protocols/ssh/settings.h | 4 ++++
src/protocols/ssh/ssh.c | 4 ++++
3 files changed, 26 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/5536b836/src/protocols/ssh/settings.c
----------------------------------------------------------------------
diff --git a/src/protocols/ssh/settings.c b/src/protocols/ssh/settings.c
index 82f7eb2..820da51 100644
--- a/src/protocols/ssh/settings.c
+++ b/src/protocols/ssh/settings.c
@@ -61,6 +61,7 @@ const char* GUAC_SSH_CLIENT_ARGS[] = {
"terminal-type",
"scrollback",
"locale",
+ "timezone",
NULL
};
@@ -246,6 +247,15 @@ enum SSH_ARGS_IDX {
* variable to be set.
*/
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
};
@@ -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,
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 */
return settings;
@@ -452,6 +467,9 @@ void guac_ssh_settings_free(guac_ssh_settings* settings) {
/* Free locale */
free(settings->locale);
+ /* Free the client timezone. */
+ free(settings->timezone);
+
/* Free overall structure */
free(settings);
http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/5536b836/src/protocols/ssh/settings.h
----------------------------------------------------------------------
diff --git a/src/protocols/ssh/settings.h b/src/protocols/ssh/settings.h
index 03abd91..e4d99e1 100644
--- a/src/protocols/ssh/settings.h
+++ b/src/protocols/ssh/settings.h
@@ -253,6 +253,10 @@ typedef struct guac_ssh_settings {
* environment variable.
*/
char* locale;
+ /**
+ * The client timezone to pass to the remote system.
+ */
+ char* timezone;
} guac_ssh_settings;
http://git-wip-us.apache.org/repos/asf/guacamole-server/blob/5536b836/src/protocols/ssh/ssh.c
----------------------------------------------------------------------
diff --git a/src/protocols/ssh/ssh.c b/src/protocols/ssh/ssh.c
index 80b84de..9e79454 100644
--- a/src/protocols/ssh/ssh.c
+++ b/src/protocols/ssh/ssh.c
@@ -256,6 +256,10 @@ void* ssh_client_thread(void* data) {
return NULL;
}
+ /* Set the client timezone */
+ if (settings->timezone != NULL)
+ libssh2_channel_setenv(ssh_client->term_channel, "TZ", settings->timezone);
+
#ifdef ENABLE_SSH_AGENT
/* Start SSH agent forwarding, if enabled */
if (ssh_client->enable_agent) {