Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aneoconsulting/rusftp
SFTP library based on russh
https://github.com/aneoconsulting/rusftp
Last synced: about 1 month ago
JSON representation
SFTP library based on russh
- Host: GitHub
- URL: https://github.com/aneoconsulting/rusftp
- Owner: aneoconsulting
- License: apache-2.0
- Created: 2024-02-20T13:40:17.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-04-14T11:26:33.000Z (9 months ago)
- Last Synced: 2024-05-11T08:03:44.475Z (8 months ago)
- Language: Rust
- Size: 180 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# RUSFTP
![Crates.io License](https://img.shields.io/crates/l/rusftp)
![Crates.io Version](https://img.shields.io/crates/v/rusftp)
![docs.rs](https://img.shields.io/docsrs/rusftp)This is a SFTP implmentation based on [russh](https://crates.io/crates/russh).
Links:
- [github](https://github.com/aneoconsulting/rusftp)
- [crates](https://crates.io/crates/rusftp)
- [docs](https://docs.rs/rusftp/)# Rationale
Why another SFTP library?
When I started to work on this project, there were no pure Rust async SFTP client library.
# Design principles
`rusftp` is designed using the following principles:
- No panics
- No locking
- Shared client
- User facing types have no dependent lifetimes
- Futures are `Send` + `Sync` + `'static`
- Futures are eagerSo you can take a `SftpClient`, clone it, and use it behind a shared referenced.
You can start multiple SFTP requests concurrently, even from multiple threads.# Features
- [x] Client
- [x] Concurrent requests
- [x] Cloneable `SftpClient` and `File`
- [x] File (`tokio::io` abstraction)
- [x] Dir (`futures::stream` abstraction)
- [x] All supported requests and messages
- [x] Path abstraction
- [ ] Support for well known SFTP extensions
- [ ] User defined extensions
- [ ] Support for direct Byte stream (ie: no [`russh`])- [ ] Server
- Protocol Version
- [x] version 3
- [ ] version 4
- [ ] version 5
- [ ] version 6