GUACAMOLE-40: Add and parse RD gateway connection parameters.
This commit is contained in:
parent
af8ef9f526
commit
da8636ef54
@ -93,6 +93,18 @@ const char* GUAC_RDP_CLIENT_ARGS[] = {
|
|||||||
"enable-audio-input",
|
"enable-audio-input",
|
||||||
"read-only",
|
"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
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -392,6 +404,53 @@ enum RDP_ARGS_IDX {
|
|||||||
*/
|
*/
|
||||||
IDX_READ_ONLY,
|
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
|
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,
|
guac_user_parse_args_boolean(user, GUAC_RDP_CLIENT_ARGS, argv,
|
||||||
IDX_ENABLE_AUDIO_INPUT, 0);
|
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 */
|
/* Success */
|
||||||
return settings;
|
return settings;
|
||||||
|
|
||||||
@ -811,6 +904,19 @@ void guac_rdp_settings_free(guac_rdp_settings* settings) {
|
|||||||
free(settings->sftp_username);
|
free(settings->sftp_username);
|
||||||
#endif
|
#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 structure */
|
||||||
free(settings);
|
free(settings);
|
||||||
|
|
||||||
|
@ -388,6 +388,51 @@ typedef struct guac_rdp_settings {
|
|||||||
*/
|
*/
|
||||||
int enable_audio_input;
|
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;
|
} guac_rdp_settings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user