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 网络编程

Download history 90/week @ 2024-05-02 65/week @ 2024-05-09 371/week @ 2024-05-16 157/week @ 2024-05-23 133/week @ 2024-05-30 82/week @ 2024-06-06 214/week @ 2024-06-13 489/week @ 2024-06-20 331/week @ 2024-06-27 280/week @ 2024-07-04 317/week @ 2024-07-11 247/week @ 2024-07-18 226/week @ 2024-07-25 298/week @ 2024-08-01 347/week @ 2024-08-08 241/week @ 2024-08-15

1,154 每月下载量
用于 16 crates

Apache-2.0

380KB
7.5K SLoC

libunftp

Crate Version API Docs Build Status Crate License Follow on Telegram

当你需要使用 FTP,但又不想这么做。

logo

网站 | 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操作,例如提供授权

已知身份验证后端

先决条件

您需要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

有关更多帮助,请参阅

  • 示例目录
  • API文档
  • unFTP服务器,这是一个基于libunftp构建的服务器,来自bol.com技术实验室。
  • 关于libunftp和unFTP的博客文章

获取帮助并保持更新

我们将尽力提供支持。您可以在讨论页面与我们互动或创建一个Github问题。

您还可以在Telegram上关注新闻并与我们交谈

贡献

感谢您对libunftp的贡献兴趣!

如果您遇到任何问题,请随时创建一个Github问题。

想提交功能请求或开发自己的存储或身份验证后端?那么请查看我们的贡献指南(CONTRIBUTING.md)

许可证

您可以在Apache License v2.0的条款下自由使用、修改和分发此软件。

依赖项

~21–32MB
~572K SLoC