mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 07:38:49 -05:00
libssh: added SFTP support
The SFTP back-end supports asynchronous reading only, limited to 32-bit file length. Writing is synchronous with no other limitations. This also brings keyboard-interactive authentication. Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
This commit is contained in:
parent
c75c9d4fbc
commit
a2f3966800
@ -4091,6 +4091,7 @@ if test "x$USE_LIBSSH2" = "x1"; then
|
||||
fi
|
||||
if test "x$USE_LIBSSH" = "x1"; then
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
|
||||
fi
|
||||
if test "x$CURL_DISABLE_RTSP" != "x1"; then
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
|
||||
|
1539
lib/ssh-libssh.c
1539
lib/ssh-libssh.c
File diff suppressed because it is too large
Load Diff
21
lib/ssh.h
21
lib/ssh.h
@ -29,6 +29,7 @@
|
||||
#include <libssh2_sftp.h>
|
||||
#elif defined(HAVE_LIBSSH_LIBSSH_H)
|
||||
#include <libssh/libssh.h>
|
||||
#include <libssh/sftp.h>
|
||||
#endif /* HAVE_LIBSSH2_H */
|
||||
|
||||
/****************************************************************************
|
||||
@ -130,8 +131,6 @@ struct ssh_conn {
|
||||
quote command fails) */
|
||||
char *homedir; /* when doing SFTP we figure out home dir in the
|
||||
connect phase */
|
||||
char *readdir_filename;
|
||||
char *readdir_longentry;
|
||||
int readdir_len, readdir_totalLen, readdir_currLen;
|
||||
char *readdir_line;
|
||||
char *readdir_linkPath;
|
||||
@ -146,12 +145,29 @@ struct ssh_conn {
|
||||
|
||||
#if defined(USE_LIBSSH)
|
||||
/* our variables */
|
||||
unsigned kbd_state; /* 0 or 1 */
|
||||
ssh_key privkey;
|
||||
ssh_key pubkey;
|
||||
int auth_methods;
|
||||
ssh_session ssh_session;
|
||||
ssh_scp scp_session;
|
||||
sftp_session sftp_session;
|
||||
sftp_file sftp_file;
|
||||
sftp_dir sftp_dir;
|
||||
|
||||
unsigned sftp_recv_state; /* 0 or 1 */
|
||||
int sftp_file_index; /* for async read */
|
||||
sftp_attributes readdir_attrs; /* used by the SFTP readdir actions */
|
||||
sftp_attributes readdir_link_attrs; /* used by the SFTP readdir actions */
|
||||
sftp_attributes quote_attrs; /* used by the SFTP_QUOTE state */
|
||||
|
||||
const char *readdir_filename; /* points within readdir_attrs */
|
||||
const char *readdir_longentry;
|
||||
char *readdir_tmp;
|
||||
#elif defined(USE_LIBSSH2)
|
||||
char *readdir_filename;
|
||||
char *readdir_longentry;
|
||||
|
||||
LIBSSH2_SFTP_ATTRIBUTES quote_attrs; /* used by the SFTP_QUOTE state */
|
||||
|
||||
/* Here's a set of struct members used by the SFTP_READDIR state */
|
||||
@ -180,6 +196,7 @@ struct ssh_conn {
|
||||
#define CURL_LIBSSH_VERSION ssh_version(0)
|
||||
|
||||
extern const struct Curl_handler Curl_handler_scp;
|
||||
extern const struct Curl_handler Curl_handler_sftp;
|
||||
|
||||
#elif defined(USE_LIBSSH2)
|
||||
|
||||
|
@ -200,7 +200,7 @@ static const struct Curl_handler * const protocols[] = {
|
||||
&Curl_handler_scp,
|
||||
#endif
|
||||
|
||||
#if defined(USE_LIBSSH2)
|
||||
#if defined(USE_LIBSSH2) || defined(USE_LIBSSH)
|
||||
&Curl_handler_sftp,
|
||||
#endif
|
||||
|
||||
|
@ -272,8 +272,6 @@ static const char * const protocols[] = {
|
||||
#endif
|
||||
#if defined(USE_LIBSSH) || defined(USE_LIBSSH2)
|
||||
"scp",
|
||||
#endif
|
||||
#ifdef USE_LIBSSH2
|
||||
"sftp",
|
||||
#endif
|
||||
#if !defined(CURL_DISABLE_SMB) && defined(USE_NTLM) && \
|
||||
|
Loading…
Reference in New Issue
Block a user