Released on 27/11/2024
Released on 26/10/2024
- Added
Sync
to client. - Added unit test to guarantee that sync FtpStream stays
Sync
Released on 15/10/2024
- Added
Send
marker to the Closure:dyn Fn(SocketAddr) -> Pin<Box<dyn Future<Output = FtpResult<TcpStream>> + Send>> + Send;
- Added unit test to guarantee that FtpStream stays
Send
Released on 14/10/2024
- Issue 89: added new
FtpStream::passive_stream_builder
to provide a function to build the Passive modeTcpStream
with a custom builder. This is useful if you need to use some proxy.
Released on 24/05/2024
- PR 84: LIST with DOS lines parsed
%d-%m
but the correct syntax is%m-%d
Released on 20/05/2024
- feat!:
Response.body
now contains the entire response - feat!:
site()
andcustom_command
now returnFtpResult<Response>
Released on 18/05/2024
- Issue 70: SITE Command
- Issue 75: Public access to
connect_with_stream
- Issue 76: Support for MLST and MLSD
- PR 78: Async SSL file uploads not properly closing
custom_command
: addedcustom_command
function to perform custom commands
Released on 28/01/2024
- Fixed issue #69: SyntaxError on name that starts with 2 numbers
Released on 06/01/2024
- Fix issue #64: added active mode listener timeout
- Fix issue #66: abort can be called without passing ownership to data_stream
Released on 14/11/2023
- Fix issue #61: Send + Sync trait to AsyncFtpStream/FtpStream
- Fix issue #63: FEAT function hangs on async
Released on 16/10/2023
- Add POSIX setgid/setuid/sticky bit support: PR59
Thanks to @rye
Released on 07/09/2023
- Implemented RFC 2389
- Added
FEAT
command - Added
OPTS
command
- Added
Released on 14/06/2023
- Added
clock
feature to chrono to overcome security issue withtime
#46
Released on 03/04/2023
ImplFtpStream
andImplAsyncFtpStream
are now public
Released on 02/03/2023
- Implemented new connection method
connect_timeout
with the possibility to specify a timeout on connect
Released on 26/02/2023
- Exposed publicly
DataStream
andAsyncDataStream
Released on 24/02/2023
- Issue 33
‼️ BREAKING CHANGES‼️ - Features are now additive. This means that you can successfully build suppaftp with all the features enabled at the same time.
- Ftp stream has now been split into different types:
FtpStream
: sync no-tls streamNativeTlsFtpStream
: ftp stream with TLS with native-tlsRustlsFtpStream
: ftp stream with TLS with rustlsAsyncFtpStream
: async no-tls streamAsyncNativeTlsFtpStream
: async ftp stream with TLS with async-native-tlsAsyncRustlsFtpStream
: async ftp stream with TLS with async-rustls
Released on 01/02/2023
- RFC 2428 implementation
- Updated suppaftp-cli to suppaftp 4.7.0
Released on 26/01/2023
suppaftp::list::File
now derives thecore::hash::Hash
trait
Released on 09/01/2023
MDTM
now returnsNaiveDateTime
since the command won't provide timezone
Released on 27/12/2022
- Don't use read to string from stream, but read line
- Response body is now bytes
- Fixed issue 24
Released on 10/10/2022
- Fixed missing export of tls stream
Released on 08/10/2022
- Export
TlsStream
when async secure
Released on 08/10/2022
- Added
native-tls-vendored
andasync-native-tls-vendored
features to link OpenSSL statically - suppaftp-cli as a separate package.
- Rustls support
‼️ BREAKING CHANGE: refactored secure features:- REMOVED
secure
/async-secure
feature - Use
native-tls
to enable TLS support with native-tls crate - Use
async-native-tls
to enable async TLS support with async-native-tls crate - Use
rustls
to enable TLS support with rustls crate - Use
async-rustls
to enable TLS support with async-tls crate
- REMOVED
Released on 02/08/2022
- Added
set_passive_nat_workaround()
method to allow PASV with server behind NAT/proxy
Released on 27/06/2022
- Added implicit FTPS support
- Added
connect_secure_implicit()
method - Added
deprecated
feature to enable deprecated methods (required for implicit FTPS)
- Added
Released on 07/12/2021
- Active mode
- suppaftp now supports Active-mode (credit @devbydav)
- You can change mode with
set_mode(Mode::Passive) or set_mode(Mode::Active)
whenever you want
- New commands
- Abort command: implemented the
ABOR
FTP command - Append command: implemented the
APPE
FTP command - Resume transfer command: implemented the
REST
FTP command
- Abort command: implemented the
- Logging:
log
crate has been implemented for debugging. You can disable logging withno-log
feature - Security
- ❗ Breaking changes:
Response.code
renamed tostatus
.- status is no more a
u32
: from now on it will be an enum namedStatus
.- The status enum implements the
code()
method which will return theu32
representation - The status enum can be displayed and converted to string: this will return the description of the error code
- The status enum implements the
- Changed
into_insecure()
toclear_command_channel()
: the implementation of into_insecure was wrong and inconsistent. What it actually does is to make the server not to encrypt the communication on the command channel. - Removed
File::from_line
; useFile::try_from()
orFile::from_str()
Released on 01/12/2021
- UNIX file parser:
- Fixed file parsing, which didn't allow any other characters than alphanumerics for groups, users and dates
put_file()
will now return the amount of bytes written- Updated dependencies
Released on 23/08/2021
- Renamed
InvalidResponse
toUnexpectedResponse
, which makes more sense - Renamed
File::from_unix_line
toFile::from_posix_line
- Renamed
UnixPexQuery
toPosixPexQuery
- Made
parse_dostime
private
Released on 22/08/2021
- Fixed missing
cli/
directory on Cargo registry.
Released on 22/08/2021
- Added
Response
struct, which will be returned in case ofInvalidResponse
error.- This adds the possibility to get the exact error code and the message
- Added async support
- API changes
- renamed
simple_retr
toretr_as_buffer
- renamed
get
toretr_as_stream
- renamed
finalize_get_stream
tofinalize_retr_stream
- renamed
- LIST command output parser
- Read more on docs.rs
- Optimized code to reuse stream functions as much as possible
size()
andmdtm()
methods will return an option no more.- Improved code with linter
- Added CI tests
Released on 09/01/2020
- Fixed
finalize_get
andfinalize_put_stream
. Stream must be dropped before waiting for response.
Released on 10/12/2020
- Added
finalize_get
method to terminate reader andRETR
command
Released on 06/12/2020
- Removed deprecated statements
- Replaced openssl with native-tls
- Added
put_with_stream
method - Added
get_welcome_msg
method