1 个不稳定版本
0.1.1 | 2024 年 5 月 26 日 |
---|
#446 在 命令行工具 中
235KB
5K SLoC
transportal
transportal 是为 Transmission BitTorrent 守护进程提供的响应式网页界面和服务器。它适用于桌面和移动浏览器。transportal 以网页服务器形式运行,并通过 RPC 请求与 Transmission 通信。服务器使用 服务器端发送事件 向浏览器推送更新。
许多功能尚未实现或尚未完成,但它对于简单的监控和种子管理来说运行良好。
快速开始
cargo install --git https://github.com/stevenengler/transportal.git
cat >config.toml <<EOF
[connection]
bind_address = "127.0.0.1:8080"
rpc_url_base = "https://127.0.0.1:9091"
rpc_url_path = "/transmission/rpc"
EOF
transportal config.toml
限制
服务器端发送事件用于向浏览器推送更新。服务器端发送事件在使用 http/2 时表现最佳,但遗憾的是,浏览器仅支持通过 TLS 连接使用 http/2。虽然 transportal 在不使用 http/2 时也可以工作,但您每次只能打开几个标签页。一种解决方案是使用 Nginx 等网络代理,它可以通过自签名证书添加 TLS 到连接中。
配置
配置文件使用 toml 格式指定。
[连接]
bind_address
必需
将服务器绑定到的套接字地址。例如:127.0.0.1:80
或 unix:/home/user/transportal.sock
。
bind_unix_perms
默认值:600
如果绑定到 Unix 套接字,则使用这些八进制权限设置套接字文件的权限。umask 被忽略。例如:620
。
rpc_url_base
必需
用于连接到 Transmission RPC 服务器的基本 URL。例如:http://127.0.0.1:9091
。
rpc_url_path
必需
用于连接到 Transmission RPC 服务器的基本 URL 路径。例如:/transmission/rpc
。必须以斜杠开头。
[安全]
secure_cookie_attribute
默认值:true
是否在 cookies 上设置了 Secure
属性。如果为 true,则浏览器必须通过 HTTPS、localhost 或洋葱服务连接。否则,认证将无法正确工作。
[性能]
poll_interval_ms
默认值:1000
服务器轮询 Transmission 以获取每个 SSE 连接的间隔(毫秒)。
安全
transportal 仍在开发中,因此并非所有安全保护措施都已完整。
XSS
传输的数据用于填充HTML。这些数据通常会被模板引擎转义,但有少数地方假设由Transmission提供的诸如时间戳和种子哈希等数据是可信的。这将在未来得到改进。
CSRF
会话cookie配置为SameSite: Lax
,这意味着认证端点应该受到CSRF攻击的保护,除非攻击来自同一站点(包括子域名)。登录表单尚未受到CSRF攻击的保护。这将在未来得到改进。
认证
提供的用户名和密码在会话期间存储在内存中,以便向Transmission发出RPC请求。客户端被分配了一个随机的128位会话cookie,具有SameSite: Lax
、HttpOnly
和Secure
(除非在配置选项中禁用)属性。
技术细节
服务器使用axum处理HTTP请求。使用reqwest执行Transmission RPC调用。使用askama在服务器上渲染HTML响应,并使用htmx动态更新网页。
许可证
本程序是自由软件:您可以根据自由软件基金会发布的GNU Affero通用公共许可证的条款重新分发和/或修改它,许可证版本为3,或(根据您的选择)许可证的任何后续版本。
本程序分发的目的是希望它是有用的,但没有任何保证;甚至没有对适销性或针对特定目的的适用性的暗示保证。有关详细信息,请参阅GNU Affero通用公共许可证。
您应该已随本程序收到GNU Affero通用公共许可证的一份副本。如果没有,请参阅https://www.gnu.org/licenses/。
依赖项
~16–30MB
~512K SLoC