- Notifications
You must be signed in to change notification settings - Fork57
FTP client for Rust
License
Apache-2.0, MIT licenses found
Licenses found
mattnenterprise/rust-ftp
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
FTP client for Rust
FTPS support is achieved throughrust-native-tls and is disabled by default. To enable itsecure
should be activated inCargo.toml
.
[dependencies]ftp = {version ="<version>",features = ["secure"] }
externcrate ftp;use std::str;use std::io::Cursor;use ftp::FtpStream;fnmain(){// Create a connection to an FTP server and authenticate to it.letmut ftp_stream =FtpStream::connect("127.0.0.1:21").unwrap();let _ = ftp_stream.login("username","password").unwrap();// Get the current directory that the client will be reading from and writing to.println!("Current directory: {}", ftp_stream.pwd().unwrap());// Change into a new directory, relative to the one we are currently in.let _ = ftp_stream.cwd("test_data").unwrap();// Retrieve (GET) a file from the FTP server in the current working directory.let remote_file = ftp_stream.simple_retr("ftpext-charter.txt").unwrap();println!("Read file with contents\n{}\n",str::from_utf8(&remote_file.into_inner()).unwrap());// Store (PUT) a file from the client to the current working directory of the server.letmut reader =Cursor::new("Hello from the Rust\"ftp\" crate!".as_bytes());let _ = ftp_stream.put("greeting.txt",&mut reader);println!("Successfully wrote greeting.txt");// Terminate the connection to the server.let _ = ftp_stream.quit();}
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE orhttp://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT orhttp://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionallysubmitted for inclusion in the work by you, as defined in the Apache-2.0license, shall be dual licensed as above, without any additional terms orconditions.
All you need to develop rust-ftp and run the tests is Rust and Docker.Thetests
folder contains aDockerfile
that installs and configuresthe vsftpd server.
To create the Docker image:
docker build -t ftp-server tests
To start the FTP server that is tested against:
tests/ftp-server.sh
This script runs theftp-server
image in detached mode and starts thevsftpd
daemon. It binds ports 21 (FTP) as well as the range 65000-65010 for passive connections.
Once you have an instance running, to run tests type:
cargotest --features secure
The following commands can be useful:
# List running containers of ftp-server image# (to include stopped containers use -a option)docker ps --filter ancestor=ftp-server# To stop and remove a containerdocker stop container_namedocker rm container_name# To remove the imagedocker rmi ftp-server
About
FTP client for Rust
Topics
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Contributors15
Uh oh!
There was an error while loading.Please reload this page.