#文件管理器 #文件服务器 #android #actix #http-file #termux

应用 paferafileserver

基于 Actix 的 HTML 文件管理器,专为轻松浏览您的文件系统设计,尤其是在 Android 的 Termux 上。

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 服务器

Download history 1/week @ 2024-05-17 1/week @ 2024-05-24 241/week @ 2024-06-28 39/week @ 2024-07-05

1,258 每月下载量

GPL-3.0 或更高版本

300KB
9K SLoC

Rust 5K SLoC // 0.0% comments JavaScript 4.5K SLoC // 0.0% comments

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