22 个稳定版本
1.9.3 | 2024年6月29日 |
---|---|
1.9.1 | 2024年2月19日 |
1.9.0 | 2024年1月18日 |
1.8.0 | 2023年10月20日 |
1.6.1 | 2023年7月9日 |
#49 in HTTP 服务器
1,258 每月下载量
300KB
9K SLoC
PaferaFileServer:小巧但强大的文件服务器
版本 1.9.3 由 Jim Yu ([email protected]) 提供
在 GPL 3+ 下发布
更新
1.9.3 版本新增:
-
更新 cargo 包到最新版本
-
添加“选择到这里”按钮,以便更快的选择过程。
-
添加热键“f”到幻灯片查看器,以便将当前文件复制到服务器根目录下的“收藏”文件夹。
1.9.2 版本新增:
- 通过使用 /tmp 作为缩略图目录来支持作为 AppImage 运行。
1.9.1 版本新增:
-
将弹出菜单的背景更改为黑色,以增加对比度。
-
修复了与新的 Flutter Pafera Share 应用(iOS 和 Android)的互操作性错误。如果您愿意成为测试员,请给我发邮件。
-
修复了特殊字符的 rsync 错误。
1.9.0 版本新增:
-
简单的访问控制。现在,您可以分别设置读取、写入和 shell 密码,以允许更精细的系统访问。
-
为漫游 IP 添加了 disablesshkeycheck。
1.8.0 版本新增:
-
将共享数据从 RwLock 更改为 channels,以防止运行长时间 rsync 时出现阻塞问题。
-
将缩略图算法更改为尝试本机 rust 解决方案,然后再求助于 ImageMagick 和 ffmpeg 以提高性能。
如果您的系统没有预先安装 libffmpegthumbnailer(如 Windows),请编译库或取消注释使用的行。
1.7.1 版本新增:
- 为 rsync 添加了更新标志,以便仅同步文件的较新版本。
1.7.0 版本新增:
-
添加了从 1 分钟到 60 分钟的间隔自动运行任务的功能。这允许您在连接到家庭 WiFi 网络时自动上传新照片,或通过网页浏览器运行任何命令以方便系统维护。
任务定义在 paferafileservertasks.cfg 中,如下所示。
{ "tasks": [ { "autosyncminutes": 1, "command": [], "flags": 0, "hostname": "JimsMacBookAir", "log": [], "nextsynctime": 1695614027, "password": "9999", "syncfolderpath": "/shared", "title": "JimsMacBookAir - /shared" } ] }
如果您像我一样经常在旅行中切换IP地址,请将标志设置为2。这将跳过ssh的密钥检查,并启用对任何网络中已知主机名的自动发现同步。
-
添加了发现按钮,可以快速打开同一网络上的其他服务器。此相同界面还允许您为每个服务器运行任务。
1.6.3版本增加了
- 添加了仅在登录时显示文件的功能,这样服务器就可以在咖啡馆和机场等公共网络上使用。
1.6.2版本增加了
- 允许包含特殊URL字符的文件名
1.6.1版本增加了
- 将所有依赖项更新到最新版本
1.6版本增加了
- 支持ffmpegthumbnailer以启用更快的视频缩略图。只需在命令行或paferafileserver.cfg中设置enableffmpegthumbnailer即可。
1.5.1版本增加了
- 修复了Mac OS X上文件上传的bug
1.5版本增加了
-
二维码按钮:现在,您不必输入URL,您技术不熟练的朋友只需使用他们的相机连接即可。
-
Mac OS X支持:比等待Finder创建缩略图快得多,并且可以从任何带有浏览器的设备上使用。如果您想使用rsync传输,请确保在设置中启用远程登录,并使用ssh-copy-id进行无密码登录。
-
打开方式:现在,使用服务器浏览您自己的计算机(127.0.0.1)上的项目,可以打开您选择的程序中的文件。在paferafileserver.cfg中列出这些程序,例如
{ "openwith": [ { "title": "MPV", "path": "/usr/bin/mpv", "args": ["-fs"], "extensions": "videos" }, { "title": "GIMP", "path": "/usr/bin/gimp", "args": [], "extensions": "images" }, { "title": "Sublime", "path": "/opt/sublime_text/sublime_text", "args": [], "extensions": "c cpp php py rs" }, { "title": "Hex Editor", "path": "/usr/bin/ghex", "args": [], "extensions": "all" }, ] }
扩展名可以是CSS突出显示所使用的文件类之一,一个用空格分隔的文件扩展名列表,或简单地使用"all"来打开系统上的所有文件。
要在Mac OS X上启动GUI应用程序,请使用open命令,例如
{ "title": "VLC", "path": "open", "args": ["-a", "VLC"], "extensions": "videos" },
要在Linux上使用关联的应用打开所有文件,可以使用
{ "title": "Open with default", "path": "xdg-open", "args": [], "extensions": "all" },
在Windows上执行相同操作
{ "title": "Open with default", "path": "explorer", "args": [], "extensions": "all" },
并且对于OSX
{ "title": "Open with default", "path": "open", "args": [], "extensions": "all" },
如果这是唯一的打开处理程序并且您打开了“一键打开”,那么它几乎就像在本地文件管理器中工作一样,您可以点击打开系统上的任何文件。
当然,Android没有等效功能,因为termux-open在我的手机上还不能正常工作,但我们不能拥有一切我们想要的东西,对吧?
1.4版本增加了
- Rsync支持
- 转码
- 压缩和解压缩存档
- 在当前文件夹中运行shell命令
简介
由于界面的复杂性,我已撰写了一篇完整的文章,详细介绍了此服务器应用程序,请参阅https://pafera.com/blog/2023/04/18/doessharingfileswith.en.html
小型快速HTTP文件服务器,专为Android Termux设计,以便您可以通过让您的朋友连接到您的热点或IP地址(如果您处于同一无线网络中)来快速在手机上与朋友共享文件。
它还包括目录搜索、递归目录搜索、幻灯片查看器以及带有热键和滑动手势支持的递归幻灯片查看器,可以轻松处理数十万个文件。运行在不同设备上的实例也可以检测到其他服务器,并通过点击服务器名称并输入密码相互发送文件。
由于是用Rust编写的,并使用Pafera框架的迷你版本进行最小化脚本,我发现这个基于浏览器的幻灯片几乎与本地图像查看器一样快,比Windows资源管理器快得多...尽管比资源管理器快并不是什么了不起的事情。
基于JavaScript的图像查看器可以通过点击图像来启动。向左或向右滑动以更改图像,向上滑动可以将此图像重命名为imagefile.deleted以供以后清理,向下滑动可以退出查看器并返回目录列表。键盘上的上、下、左、右箭头键将执行与滑动方向相同的操作。
图片和视频缩略图生成需要您的Termux安装中安装ImageMagick的convert和ffmpeg。当然,这个服务器也可以在任何安装了这两个程序的Linux或Windows系统上运行。
请注意,出于安全原因,这个服务器实际上不会删除任何文件。它只会将".deleted"添加到文件名中,这样您就可以在稍后通过删除".deleted"扩展名或从菜单中选择"撤销删除"来恢复意外删除的文件。
如果您确实想删除文件,那么您可以删除文件两次或从菜单中选择"永久删除"。请谨慎使用此选项。
快捷键
支持大多数给定功能的快捷键
正常视图
v | 更改视图样式 |
---|---|
i | 显示隐藏文件 |
s | 排序文件 |
a | 全选 |
n | 取消全选 |
r | 重命名所选文件 |
m | 移动所选文件 |
c | 复制所选文件 |
d | 删除所选文件 |
p | 永久删除所选文件 |
u | 撤销删除所选文件 |
e | 显示最近更改的文件 |
t | 搜索此文件夹 |
f | 搜索此文件夹和任何子文件夹 |
w | 设置密码 |
o | 创建新子文件夹 |
z | 开始幻灯片放映 |
x | 开始深度幻灯片放映 |
h | 显示此快捷键帮助 |
幻灯片放映视图
左箭头 | 上一张图片 |
---|---|
右箭头 | 下一张图片 |
上箭头 | 删除图片 |
下箭头/Escape | 退出幻灯片放映 |
r | 随机图片 |
g | 转到图片编号 |
q | 逆时针旋转90度 |
e | 顺时针旋转90度 |
命令行用法
paferafileserver [hostname=localhost] [serverroot=/home/jim] [password=password] [ip=0.0.0.0]
[port=9999]
如果您想将Jim的图片目录通过5000端口提供给所有访客,您将使用
paferafileserver serverroot=/home/jim/Pictures port=5000
如果您没有指定serverroot,它将默认为您的主目录。
如果您没有指定ip和端口,它将默认为0.0.0.0:9999。
此外,您还可以在命令行上输入以下选项来禁用某些功能,即使用户有正确的密码。
- disabledelete
- disablerename
- disablemove
- disablecopy
- disablenewfolder
- disabledelete
- disablepermanentdelete
- disablesend
- disableupload
所有命令行参数也可以在名为paferafileserver.cfg的JSON文件中指定,如下所示
{
"hostname": "JimsLaptop",
"password": "SecretPassword12345",
"disabledelete": 1,
"disablepermanentdelete": 1
}
对于Android 5和6,由于它需要7及以上版本,因此Termux不会运行,所以我们必须安装UserLand的Debian发行版。它比Termux复杂得多,但仍然比完全无法运行Linux程序要好。
一旦安装了Userland和Debian,键入
sudo apt install imagemagick ffmpeg iproute2 openssl
如果您想从源代码构建,您还需要
sudo apt install curl build-essential gcc make libssl-dev pkg-config
并将图片缩略图代码更改为调用"convert"而不是"magick" "convert",因为Debian的Imagemagick还没有magick可执行文件。
您可以在/host-rootfs下找到您手机的文件系统,因此如果您想提供SD卡,可以使用
paferafileserver serverroot=/host-rootfs/storage/emulated/legacy
安装
主要源存储库在
https://codeberg.org/pafera/paferafileserver
Linux、Termux和Windows的预构建二进制文件可以在
https://codeberg.org/pafera/paferafileserver/src/branch/main/bin
贡献
欢迎所有贡献,无论大小。当前服务器已足够满足我的个人需求,但据我所知,一些进一步的改进可以是
- 将文件发送到可选择的目标目录,而不是/Received
- 不同语言的翻译
一如既往,希望您在使用此服务器时享受乐趣,并希望它在某些方面对您有所帮助!对为Rust、Cargo、crates.io、Actix以及本项目使用的其余代码做出贡献的所有人表示衷心的感谢。
依赖关系
~72MB
~1M SLoC