GUAC-1172: Implement file upload via filesystem object.
This commit is contained in:
parent
5fba93594d
commit
0bbc958373
@ -721,9 +721,37 @@ int guac_sftp_get_handler(guac_client* client, guac_object* object,
|
|||||||
int guac_sftp_put_handler(guac_client* client, guac_object* object,
|
int guac_sftp_put_handler(guac_client* client, guac_object* object,
|
||||||
guac_stream* stream, char* mimetype, char* name) {
|
guac_stream* stream, char* mimetype, char* name) {
|
||||||
|
|
||||||
/* STUB */
|
ssh_guac_client_data* client_data = (ssh_guac_client_data*) client->data;
|
||||||
guac_client_log(client, GUAC_LOG_DEBUG, "STUB: put: %s", name);
|
LIBSSH2_SFTP* sftp = client_data->sftp_session;
|
||||||
|
|
||||||
|
/* Open file via SFTP */
|
||||||
|
LIBSSH2_SFTP_HANDLE* file = libssh2_sftp_open(sftp, name,
|
||||||
|
LIBSSH2_FXF_WRITE | LIBSSH2_FXF_CREAT | LIBSSH2_FXF_TRUNC,
|
||||||
|
S_IRUSR | S_IWUSR);
|
||||||
|
|
||||||
|
/* Acknowledge stream if successful */
|
||||||
|
if (file != NULL) {
|
||||||
|
guac_client_log(client, GUAC_LOG_DEBUG, "File \"%s\" opened", name);
|
||||||
|
guac_protocol_send_ack(client->socket, stream, "SFTP: File opened",
|
||||||
|
GUAC_PROTOCOL_STATUS_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Abort on failure */
|
||||||
|
else {
|
||||||
|
guac_client_log(client, GUAC_LOG_INFO, "Unable to open file \"%s\": %s",
|
||||||
|
name, libssh2_sftp_last_error(sftp));
|
||||||
|
guac_protocol_send_ack(client->socket, stream, "SFTP: Open failed",
|
||||||
|
GUAC_PROTOCOL_STATUS_RESOURCE_NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set handlers for file stream */
|
||||||
|
stream->blob_handler = guac_sftp_blob_handler;
|
||||||
|
stream->end_handler = guac_sftp_end_handler;
|
||||||
|
|
||||||
|
/* Store file within stream */
|
||||||
|
stream->data = file;
|
||||||
|
|
||||||
|
guac_socket_flush(client->socket);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user