Rust 实现的跨平台 HTTP 服务命令行工具 fht2p

最初入坑 Rust 时开的项目 – fht2p,起源是不满意于的python -m SimpleHTTPServer 目录页的简陋和不支持断点续传, 从同步写到异步,再从回调到 Async, 断断续续已经有三年历史, 功能相对完善, 速度也极快. 得益于 Rust 的跨平台特性, 它是完全跨平台的, 而且可以静态链接, 安装很方便, 各平台使用体验也极其一致.

我通常拿来看 HTML 文档, 临时文件分享, 局域网浏览器看视频等, 甚至可以拿来开 HTTP 代理

当前支持的功能:
1. 多路径分享
2. 文件断点续传 (206),可选的文件目录缓存功能 (304)
3. 目录浏览 (GZIP, 可选显示隐藏的.条目, 可选重定向到 index.html 文件 等)
4. https (powered by tokio-rustls, 不依赖外部动态库), 包含配套的 HSTS, ALPN 等
5. Proxy (隧道代理 (tunnel), 普通代理 (powered by reqwest))
6. Basic Authentication (HTTP 基本认证)
7. 文件上传,目录新建
8. CORS, Referer 支持
9. 命令行参数 (powerd by clap)
10. 配置文件 (powered by json5——json 支持注释等)
11. 终端日志可选级别

关于安装

可以从 Release 页面下载可执行文件或 Rpm/Deb, 如果你安装了 Rust, 也可以直接用 cargo 安装, 具体点击 链接.

目录图片示例

5赞

当前翻滚草的防火墙软件是 firewall, 下面是一些可能用到的命令, 防火墙打开才能在别的机器上访问.
至于其他比如 Leap 我没有也不清楚是什么, 当初我用 42 时还是 SuSe 什么的, 反正得临时关闭防火墙或者打开对应的端口

sudo firewall-cmd --add-port=8000/tcp # 开放通过 tcp 访问 8000
sudo firewall-cmd --remove-port=8000/tcp # 阻止通过 tcp 访问 8000
sudo firewall-cmd --permanent --add-port=8000/tcp # 永久打开 8000/TCP 端口
sudo firewall-cmd --list-ports # 查看开放的端口

这种软件还挺多的。之前也看在其它地方看到一个 c 写的,非常小。还集成视频播放器。

你这个有 GUI 界面吗?

没有

这种工具不需要 gui 吧,而且有 gui 了编译就麻烦很多。。

不错呀。

有没有考虑做成双向的呢?这样 LAN 内的多个客户端可以在不装任何 APP 的情况下互传文件,还可以成为聊天室(挖了一大坑了呵呵)

现在是支持上传的,,勉强可以当作 “双向” 的

但是多客户端不装任何 app 互传是不可能的,也可能那些局域网 wifi/ 蓝牙互传 app 是你要的
现在的情况是客户端是浏览器(在现在这种 CS 模型下做双向,聊天室确实可行,,不过真的是大坑)

有一说一python -m SimpleHTTPServer如果不是 OS 自带(毕竟是个开箱即用的发行版都有 Python)谁会用他?
写 Python 脚本?
他只是用来解决 “老子 FTP 不想搞然后想方便的用网络传文件” 这个问题而已…
要下载的 HTTP 文件服务端不是就挺麻烦了吗?
win 上的 hfs 只是用来解决 win 上压根没有几个开箱可用的 http 文件服务器的问题吧…
如你所见,linux 发行版自带 python 再不济还有 busybox,都自带简陋的 HTTP 文件服务器。
当然发行版都预装楼主的软件就是另外一码事了。

busybox 还带 http 服务器的?怎么用?

httpd -p 80 -u 80 -h /www

假如你编译 busybox 的时候有编译 httpd 的话……