47 个版本
0.20.1 | 2024年6月20日 |
---|---|
0.19.1 | 2023年12月24日 |
0.19.0 | 2023年9月16日 |
0.18.9 | 2023年5月31日 |
0.5.0 | 2019年11月15日 |
#51 in 网络编程
1,154 每月下载量
用于 16 crates
380KB
7.5K SLoC
libunftp
当你需要使用 FTP,但又不想这么做。
网站 | API 文档 | **unFTP **
libunftp 库驱动 unFTP。它是由 bol.com techlab 提供的 Rust 编写的可扩展、异步、面向云的 FTP(S) 服务器实现。
由于其可插拔的身份验证(例如,PAM、JSON 文件、通用 REST)和存储后端(例如,本地文件系统、Google Cloud Storage),它比传统的 FTP 服务器更灵活,是云服务的完美选择。
它运行在 Tokio 异步运行时之上,并尽可能利用异步 I/O。
功能亮点
- 39 个支持的 FTP 命令(见 命令目录)并持续增长
- 实现自定义存储后端的能力
- 实现自定义身份验证后端的能力
- 显式 FTPS (TLS)
- 相互 TLS (客户端证书)
- TLS 会话恢复
- Prometheus 集成
- 结构化日志
- 支持代理协议
- 自动会话超时
- 按用户IP允许列表
已知存储后端
- unftp-sbe-fs - 在本地文件系统中存储文件
- unftp-sbe-gcs - 在Google Cloud Storage中存储文件
- unftp-sbe-rooter - 将另一个存储后端包装起来,以便将用户根目录到特定目录
- unftp-sbe-restrict - 将另一个存储后端包装起来,以限制用户可以执行的FTP操作,例如提供授权
已知身份验证后端
- unftp-auth-jsonfile - 验证JSON文本
- unftp-auth-pam - 通过PAM进行验证
- unftp-auth-rest - 消费HTTP API进行验证
先决条件
您需要Rust 1.41或更高版本来构建libunftp
入门指南
如果您已安装Rust和cargo,请使用以下命令创建项目
cargo new myftp
将libunftp和tokio crate添加到项目的依赖项中Cargo.toml
。然后选择一个存储后端实现以添加。这里我们选择了文件系统后端
[dependencies]
libunftp = "0.20.1"
unftp-sbe-fs = "0.2"
tokio = { version = "1", features = ["full"] }
现在您已经准备好开发服务器了!将以下内容添加到src/main.rs
use unftp_sbe_fs::ServerExt;
#[tokio::main]
pub async fn main() {
let ftp_home = std::env::temp_dir();
let server = libunftp::Server::with_fs(ftp_home)
.greeting("Welcome to my FTP server")
.passive_ports(50000..65535)
.build()
.unwrap();
server.listen("127.0.0.1:2121").await;
}
您现在可以使用以下命令运行服务器cargo run
并使用您最喜欢的FTP客户端连接到localhost:2121
例如
lftp -p 2121 localhost
有关更多帮助,请参阅
获取帮助并保持更新
我们将尽力提供支持。您可以在讨论页面与我们互动或创建一个Github问题。
您还可以在Telegram上关注新闻并与我们交谈
贡献
感谢您对libunftp的贡献兴趣!
如果您遇到任何问题,请随时创建一个Github问题。
想提交功能请求或开发自己的存储或身份验证后端?那么请查看我们的贡献指南(CONTRIBUTING.md)。
许可证
您可以在Apache License v2.0的条款下自由使用、修改和分发此软件。
依赖项
~21–32MB
~572K SLoC