guacamole-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jmuehl...@apache.org
Subject [2/4] incubator-guacamole-server git commit: GUACAMOLE-40: Add and parse RD gateway connection parameters.
Date Fri, 21 Apr 2017 04:40:25 GMT
GUACAMOLE-40: Add and parse RD gateway connection parameters.


Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/commit/da8636ef
Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/tree/da8636ef
Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/diff/da8636ef

Branch: refs/heads/master
Commit: da8636ef546add9f71db6ffcc0d873e085d5e13f
Parents: af8ef9f
Author: Michael Jumper <mjumper@apache.org>
Authored: Sun Apr 9 23:58:11 2017 -0700
Committer: Michael Jumper <mjumper@apache.org>
Committed: Sun Apr 9 23:58:11 2017 -0700

----------------------------------------------------------------------
 src/protocols/rdp/rdp_settings.c | 106 ++++++++++++++++++++++++++++++++++
 src/protocols/rdp/rdp_settings.h |  45 +++++++++++++++
 2 files changed, 151 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/blob/da8636ef/src/protocols/rdp/rdp_settings.c
----------------------------------------------------------------------
diff --git a/src/protocols/rdp/rdp_settings.c b/src/protocols/rdp/rdp_settings.c
index e8161b1..1ec34b9 100644
--- a/src/protocols/rdp/rdp_settings.c
+++ b/src/protocols/rdp/rdp_settings.c
@@ -93,6 +93,18 @@ const char* GUAC_RDP_CLIENT_ARGS[] = {
     "enable-audio-input",
     "read-only",
 
+#ifdef HAVE_FREERDP_GATEWAY_SUPPORT
+    "gateway-hostname",
+    "gateway-port",
+    "gateway-domain",
+    "gateway-username",
+    "gateway-password",
+#endif
+
+#ifdef HAVE_FREERDP_LOAD_BALANCER_SUPPORT
+    "load-balance-info",
+#endif
+
     NULL
 };
 
@@ -392,6 +404,53 @@ enum RDP_ARGS_IDX {
      */
     IDX_READ_ONLY,
 
+#ifdef HAVE_FREERDP_GATEWAY_SUPPORT
+    /**
+     * The hostname of the remote desktop gateway that should be used as an
+     * intermediary for the remote desktop connection. If omitted, a gateway
+     * will not be used.
+     */
+    IDX_GATEWAY_HOSTNAME,
+
+    /**
+     * The port of the remote desktop gateway that should be used as an
+     * intermediary for the remote desktop connection. By default, this will be
+     * 443.
+     *
+     * NOTE: If using a version of FreeRDP prior to 1.2, this setting has no
+     * effect. FreeRDP instead uses a hard-coded value of 443.
+     */
+    IDX_GATEWAY_PORT,
+
+    /**
+     * The domain of the user authenticating with the remote desktop gateway,
+     * if a gateway is being used. This is not necessarily the same as the
+     * user actually using the remote desktop connection.
+     */
+    IDX_GATEWAY_DOMAIN,
+
+    /**
+     * The username of the user authenticating with the remote desktop gateway,
+     * if a gateway is being used. This is not necessarily the same as the
+     * user actually using the remote desktop connection.
+     */
+    IDX_GATEWAY_USERNAME,
+
+    /**
+     * The password to provide when authenticating with the remote desktop
+     * gateway, if a gateway is being used.
+     */
+    IDX_GATEWAY_PASSWORD,
+#endif
+
+#ifdef HAVE_FREERDP_LOAD_BALANCER_SUPPORT
+    /**
+     * The load balancing information/cookie which should be provided to
+     * the connection broker, if a connection broker is being used.
+     */
+    IDX_LOAD_BALANCE_INFO,
+#endif
+
     RDP_ARGS_COUNT
 };
 
@@ -763,6 +822,40 @@ guac_rdp_settings* guac_rdp_parse_args(guac_user* user,
         guac_user_parse_args_boolean(user, GUAC_RDP_CLIENT_ARGS, argv,
                 IDX_ENABLE_AUDIO_INPUT, 0);
 
+#ifdef HAVE_FREERDP_GATEWAY_SUPPORT
+    /* Set gateway hostname */
+    settings->gateway_hostname =
+        guac_user_parse_args_string(user, GUAC_RDP_CLIENT_ARGS, argv,
+                IDX_GATEWAY_HOSTNAME, NULL);
+
+    /* If gateway port specified, use it */
+    settings->gateway_port =
+        guac_user_parse_args_int(user, GUAC_RDP_CLIENT_ARGS, argv,
+                IDX_GATEWAY_PORT, 443);
+
+    /* Set gateway domain */
+    settings->gateway_domain =
+        guac_user_parse_args_string(user, GUAC_RDP_CLIENT_ARGS, argv,
+                IDX_GATEWAY_DOMAIN, NULL);
+
+    /* Set gateway username */
+    settings->gateway_username =
+        guac_user_parse_args_string(user, GUAC_RDP_CLIENT_ARGS, argv,
+                IDX_GATEWAY_USERNAME, NULL);
+
+    /* Set gateway password */
+    settings->gateway_password =
+        guac_user_parse_args_string(user, GUAC_RDP_CLIENT_ARGS, argv,
+                IDX_GATEWAY_PASSWORD, NULL);
+#endif
+
+#ifdef HAVE_FREERDP_LOAD_BALANCER_SUPPORT
+    /* Set load balance info */
+    settings->load_balance_info =
+        guac_user_parse_args_string(user, GUAC_RDP_CLIENT_ARGS, argv,
+                IDX_LOAD_BALANCE_INFO, NULL);
+#endif
+
     /* Success */
     return settings;
 
@@ -811,6 +904,19 @@ void guac_rdp_settings_free(guac_rdp_settings* settings) {
     free(settings->sftp_username);
 #endif
 
+#ifdef HAVE_FREERDP_GATEWAY_SUPPORT
+    /* Free RD gateway information */
+    free(settings->gateway_hostname);
+    free(settings->gateway_domain);
+    free(settings->gateway_username);
+    free(settings->gateway_password);
+#endif
+
+#ifdef HAVE_FREERDP_LOAD_BALANCER_SUPPORT
+    /* Free load balancer information string */
+    free(settings->load_balance_info);
+#endif
+
     /* Free settings structure */
     free(settings);
 

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/blob/da8636ef/src/protocols/rdp/rdp_settings.h
----------------------------------------------------------------------
diff --git a/src/protocols/rdp/rdp_settings.h b/src/protocols/rdp/rdp_settings.h
index bcbe9b6..3ff634a 100644
--- a/src/protocols/rdp/rdp_settings.h
+++ b/src/protocols/rdp/rdp_settings.h
@@ -388,6 +388,51 @@ typedef struct guac_rdp_settings {
      */
     int enable_audio_input;
 
+#ifdef HAVE_FREERDP_GATEWAY_SUPPORT
+    /**
+     * The hostname of the remote desktop gateway that should be used as an
+     * intermediary for the remote desktop connection. If no gateway should
+     * be used, this will be NULL.
+     */
+    char* gateway_hostname;
+
+    /**
+     * The port of the remote desktop gateway that should be used as an
+     * intermediary for the remote desktop connection. NOTE: versions of
+     * FreeRDP prior to 1.2 which have gateway support ignore this value, and
+     * instead use a hard-coded value of 443.
+     */
+    int gateway_port;
+
+    /**
+     * The domain of the user authenticating with the remote desktop gateway,
+     * if a gateway is being used. This is not necessarily the same as the
+     * user actually using the remote desktop connection.
+     */
+    char* gateway_domain;
+
+    /**
+     * The username of the user authenticating with the remote desktop gateway,
+     * if a gateway is being used. This is not necessarily the same as the
+     * user actually using the remote desktop connection.
+     */
+    char* gateway_username;
+
+    /**
+     * The password to provide when authenticating with the remote desktop
+     * gateway, if a gateway is being used.
+     */
+    char* gateway_password;
+#endif
+
+#ifdef HAVE_FREERDP_LOAD_BALANCER_SUPPORT
+    /**
+     * The load balancing information/cookie which should be provided to
+     * the connection broker, if a connection broker is being used.
+     */
+    char* load_balance_info;
+#endif
+
 } guac_rdp_settings;
 
 /**


Mime
View raw message