GUACAMOLE-303: Add "sftp-root-directory" parameter to VNC, RDP, and SSH.
This commit is contained in:
parent
0474f86c46
commit
d51e92eb31
@ -987,8 +987,8 @@ void* guac_rdp_client_thread(void* data) {
|
|||||||
|
|
||||||
/* Load and expose filesystem */
|
/* Load and expose filesystem */
|
||||||
rdp_client->sftp_filesystem =
|
rdp_client->sftp_filesystem =
|
||||||
guac_common_ssh_create_sftp_filesystem(
|
guac_common_ssh_create_sftp_filesystem(rdp_client->sftp_session,
|
||||||
rdp_client->sftp_session, "/", NULL);
|
settings->sftp_root_directory, NULL);
|
||||||
|
|
||||||
/* Expose filesystem to connection owner */
|
/* Expose filesystem to connection owner */
|
||||||
guac_client_for_owner(client,
|
guac_client_for_owner(client,
|
||||||
|
@ -84,6 +84,7 @@ const char* GUAC_RDP_CLIENT_ARGS[] = {
|
|||||||
"sftp-private-key",
|
"sftp-private-key",
|
||||||
"sftp-passphrase",
|
"sftp-passphrase",
|
||||||
"sftp-directory",
|
"sftp-directory",
|
||||||
|
"sftp-root-directory",
|
||||||
"sftp-server-alive-interval",
|
"sftp-server-alive-interval",
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -367,6 +368,12 @@ enum RDP_ARGS_IDX {
|
|||||||
*/
|
*/
|
||||||
IDX_SFTP_DIRECTORY,
|
IDX_SFTP_DIRECTORY,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The path of the directory within the SSH server to expose as a
|
||||||
|
* filesystem guac_object. If omitted, "/" will be used by default.
|
||||||
|
*/
|
||||||
|
IDX_SFTP_ROOT_DIRECTORY,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The interval at which SSH keepalive messages are sent to the server for
|
* The interval at which SSH keepalive messages are sent to the server for
|
||||||
* SFTP connections. The default is 0 (disabling keepalives), and a value
|
* SFTP connections. The default is 0 (disabling keepalives), and a value
|
||||||
@ -784,6 +791,11 @@ guac_rdp_settings* guac_rdp_parse_args(guac_user* user,
|
|||||||
guac_user_parse_args_string(user, GUAC_RDP_CLIENT_ARGS, argv,
|
guac_user_parse_args_string(user, GUAC_RDP_CLIENT_ARGS, argv,
|
||||||
IDX_SFTP_DIRECTORY, NULL);
|
IDX_SFTP_DIRECTORY, NULL);
|
||||||
|
|
||||||
|
/* SFTP root directory */
|
||||||
|
settings->sftp_root_directory =
|
||||||
|
guac_user_parse_args_string(user, GUAC_RDP_CLIENT_ARGS, argv,
|
||||||
|
IDX_SFTP_ROOT_DIRECTORY, "/");
|
||||||
|
|
||||||
/* Default keepalive value */
|
/* Default keepalive value */
|
||||||
settings->sftp_server_alive_interval =
|
settings->sftp_server_alive_interval =
|
||||||
guac_user_parse_args_int(user, GUAC_RDP_CLIENT_ARGS, argv,
|
guac_user_parse_args_int(user, GUAC_RDP_CLIENT_ARGS, argv,
|
||||||
@ -909,6 +921,7 @@ void guac_rdp_settings_free(guac_rdp_settings* settings) {
|
|||||||
#ifdef ENABLE_COMMON_SSH
|
#ifdef ENABLE_COMMON_SSH
|
||||||
/* Free SFTP settings */
|
/* Free SFTP settings */
|
||||||
free(settings->sftp_directory);
|
free(settings->sftp_directory);
|
||||||
|
free(settings->sftp_root_directory);
|
||||||
free(settings->sftp_hostname);
|
free(settings->sftp_hostname);
|
||||||
free(settings->sftp_passphrase);
|
free(settings->sftp_passphrase);
|
||||||
free(settings->sftp_password);
|
free(settings->sftp_password);
|
||||||
|
@ -360,6 +360,12 @@ typedef struct guac_rdp_settings {
|
|||||||
*/
|
*/
|
||||||
char* sftp_directory;
|
char* sftp_directory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The path of the directory within the SSH server to expose as a
|
||||||
|
* filesystem guac_object.
|
||||||
|
*/
|
||||||
|
char* sftp_root_directory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The interval at which SSH keepalive messages are sent to the server for
|
* The interval at which SSH keepalive messages are sent to the server for
|
||||||
* SFTP connections. The default is 0 (disabling keepalives), and a value
|
* SFTP connections. The default is 0 (disabling keepalives), and a value
|
||||||
|
@ -37,6 +37,7 @@ const char* GUAC_SSH_CLIENT_ARGS[] = {
|
|||||||
"font-name",
|
"font-name",
|
||||||
"font-size",
|
"font-size",
|
||||||
"enable-sftp",
|
"enable-sftp",
|
||||||
|
"sftp-root-directory",
|
||||||
"private-key",
|
"private-key",
|
||||||
"passphrase",
|
"passphrase",
|
||||||
#ifdef ENABLE_SSH_AGENT
|
#ifdef ENABLE_SSH_AGENT
|
||||||
@ -92,6 +93,12 @@ enum SSH_ARGS_IDX {
|
|||||||
*/
|
*/
|
||||||
IDX_ENABLE_SFTP,
|
IDX_ENABLE_SFTP,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The path of the directory within the SSH server to expose as a
|
||||||
|
* filesystem guac_object. If omitted, "/" will be used by default.
|
||||||
|
*/
|
||||||
|
IDX_SFTP_ROOT_DIRECTORY,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The private key to use for authentication, if any.
|
* The private key to use for authentication, if any.
|
||||||
*/
|
*/
|
||||||
@ -236,6 +243,11 @@ guac_ssh_settings* guac_ssh_parse_args(guac_user* user,
|
|||||||
guac_user_parse_args_boolean(user, GUAC_SSH_CLIENT_ARGS, argv,
|
guac_user_parse_args_boolean(user, GUAC_SSH_CLIENT_ARGS, argv,
|
||||||
IDX_ENABLE_SFTP, false);
|
IDX_ENABLE_SFTP, false);
|
||||||
|
|
||||||
|
/* SFTP root directory */
|
||||||
|
settings->sftp_root_directory =
|
||||||
|
guac_user_parse_args_string(user, GUAC_SSH_CLIENT_ARGS, argv,
|
||||||
|
IDX_SFTP_ROOT_DIRECTORY, "/");
|
||||||
|
|
||||||
#ifdef ENABLE_SSH_AGENT
|
#ifdef ENABLE_SSH_AGENT
|
||||||
settings->enable_agent =
|
settings->enable_agent =
|
||||||
guac_user_parse_args_boolean(user, GUAC_SSH_CLIENT_ARGS, argv,
|
guac_user_parse_args_boolean(user, GUAC_SSH_CLIENT_ARGS, argv,
|
||||||
@ -316,6 +328,9 @@ void guac_ssh_settings_free(guac_ssh_settings* settings) {
|
|||||||
/* Free requested command */
|
/* Free requested command */
|
||||||
free(settings->command);
|
free(settings->command);
|
||||||
|
|
||||||
|
/* Free SFTP settings */
|
||||||
|
free(settings->sftp_root_directory);
|
||||||
|
|
||||||
/* Free typescript settings */
|
/* Free typescript settings */
|
||||||
free(settings->typescript_name);
|
free(settings->typescript_name);
|
||||||
free(settings->typescript_path);
|
free(settings->typescript_path);
|
||||||
|
@ -145,6 +145,12 @@ typedef struct guac_ssh_settings {
|
|||||||
*/
|
*/
|
||||||
bool enable_sftp;
|
bool enable_sftp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The path of the directory within the SSH server to expose as a
|
||||||
|
* filesystem guac_object.
|
||||||
|
*/
|
||||||
|
char* sftp_root_directory;
|
||||||
|
|
||||||
#ifdef ENABLE_SSH_AGENT
|
#ifdef ENABLE_SSH_AGENT
|
||||||
/**
|
/**
|
||||||
* Whether the SSH agent is enabled.
|
* Whether the SSH agent is enabled.
|
||||||
|
@ -266,7 +266,8 @@ void* ssh_client_thread(void* data) {
|
|||||||
|
|
||||||
/* Request SFTP */
|
/* Request SFTP */
|
||||||
ssh_client->sftp_filesystem = guac_common_ssh_create_sftp_filesystem(
|
ssh_client->sftp_filesystem = guac_common_ssh_create_sftp_filesystem(
|
||||||
ssh_client->sftp_session, "/", NULL);
|
ssh_client->sftp_session, settings->sftp_root_directory,
|
||||||
|
NULL);
|
||||||
|
|
||||||
/* Expose filesystem to connection owner */
|
/* Expose filesystem to connection owner */
|
||||||
guac_client_for_owner(client,
|
guac_client_for_owner(client,
|
||||||
|
@ -66,6 +66,7 @@ const char* GUAC_VNC_CLIENT_ARGS[] = {
|
|||||||
"sftp-private-key",
|
"sftp-private-key",
|
||||||
"sftp-passphrase",
|
"sftp-passphrase",
|
||||||
"sftp-directory",
|
"sftp-directory",
|
||||||
|
"sftp-root-directory",
|
||||||
"sftp-server-alive-interval",
|
"sftp-server-alive-interval",
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -229,6 +230,12 @@ enum VNC_ARGS_IDX {
|
|||||||
*/
|
*/
|
||||||
IDX_SFTP_DIRECTORY,
|
IDX_SFTP_DIRECTORY,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The path of the directory within the SSH server to expose as a
|
||||||
|
* filesystem guac_object. If omitted, "/" will be used by default.
|
||||||
|
*/
|
||||||
|
IDX_SFTP_ROOT_DIRECTORY,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The interval at which SSH keepalive messages are sent to the server for
|
* The interval at which SSH keepalive messages are sent to the server for
|
||||||
* SFTP connections. The default is 0 (disabling keepalives), and a value
|
* SFTP connections. The default is 0 (disabling keepalives), and a value
|
||||||
@ -405,6 +412,11 @@ guac_vnc_settings* guac_vnc_parse_args(guac_user* user,
|
|||||||
guac_user_parse_args_string(user, GUAC_VNC_CLIENT_ARGS, argv,
|
guac_user_parse_args_string(user, GUAC_VNC_CLIENT_ARGS, argv,
|
||||||
IDX_SFTP_DIRECTORY, NULL);
|
IDX_SFTP_DIRECTORY, NULL);
|
||||||
|
|
||||||
|
/* SFTP root directory */
|
||||||
|
settings->sftp_root_directory =
|
||||||
|
guac_user_parse_args_string(user, GUAC_VNC_CLIENT_ARGS, argv,
|
||||||
|
IDX_SFTP_ROOT_DIRECTORY, "/");
|
||||||
|
|
||||||
/* Default keepalive value */
|
/* Default keepalive value */
|
||||||
settings->sftp_server_alive_interval =
|
settings->sftp_server_alive_interval =
|
||||||
guac_user_parse_args_int(user, GUAC_VNC_CLIENT_ARGS, argv,
|
guac_user_parse_args_int(user, GUAC_VNC_CLIENT_ARGS, argv,
|
||||||
@ -447,6 +459,7 @@ void guac_vnc_settings_free(guac_vnc_settings* settings) {
|
|||||||
#ifdef ENABLE_COMMON_SSH
|
#ifdef ENABLE_COMMON_SSH
|
||||||
/* Free SFTP settings */
|
/* Free SFTP settings */
|
||||||
free(settings->sftp_directory);
|
free(settings->sftp_directory);
|
||||||
|
free(settings->sftp_root_directory);
|
||||||
free(settings->sftp_hostname);
|
free(settings->sftp_hostname);
|
||||||
free(settings->sftp_passphrase);
|
free(settings->sftp_passphrase);
|
||||||
free(settings->sftp_password);
|
free(settings->sftp_password);
|
||||||
|
@ -174,6 +174,12 @@ typedef struct guac_vnc_settings {
|
|||||||
*/
|
*/
|
||||||
char* sftp_directory;
|
char* sftp_directory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The path of the directory within the SSH server to expose as a
|
||||||
|
* filesystem guac_object.
|
||||||
|
*/
|
||||||
|
char* sftp_root_directory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The interval at which SSH keepalive messages are sent to the server for
|
* The interval at which SSH keepalive messages are sent to the server for
|
||||||
* SFTP connections. The default is 0 (disabling keepalives), and a value
|
* SFTP connections. The default is 0 (disabling keepalives), and a value
|
||||||
|
@ -271,8 +271,8 @@ void* guac_vnc_client_thread(void* data) {
|
|||||||
|
|
||||||
/* Load filesystem */
|
/* Load filesystem */
|
||||||
vnc_client->sftp_filesystem =
|
vnc_client->sftp_filesystem =
|
||||||
guac_common_ssh_create_sftp_filesystem(
|
guac_common_ssh_create_sftp_filesystem(vnc_client->sftp_session,
|
||||||
vnc_client->sftp_session, "/", NULL);
|
settings->sftp_root_directory, NULL);
|
||||||
|
|
||||||
/* Expose filesystem to connection owner */
|
/* Expose filesystem to connection owner */
|
||||||
guac_client_for_owner(client,
|
guac_client_for_owner(client,
|
||||||
|
Loading…
Reference in New Issue
Block a user