11 个版本
0.6.6 | 2022年2月18日 |
---|---|
0.6.5 | 2022年2月10日 |
0.6.3 | 2021年12月30日 |
0.5.0 | 2021年11月27日 |
0.4.9 | 2021年11月21日 |
#26 在 #gemini
每月28 次下载
52KB
1.5K SLoC
Gemserv
用 Rust 编写的 Gemini 服务器。
功能
- 虚拟主机
- CGI
- 用户目录
- 反向代理
- 重定向
- SCGI
- 在 SIGHUP 信号上重新加载配置
安装和运行
要运行,请运行 "cargo run /path/to/config",如果没有指定配置,它将查找 "/usr/local/etc/gemserv.conf"。
预构建的二进制文件
您可以在发布页面上下载适用于 Linux 的预构建二进制文件。
从 crates.io 安装
cargo install gemserv
从 docker 安装
docker pull 080h/gemserv
从源代码构建
- 克隆存储库
- 如果您想使用所有功能,请运行 'cargo build --release',或者如果您只想提供静态文件,请运行 'cargo build --release --no-default-features'。
- 修改 config.toml 以满足您的需求
- 运行 './target/release/gemserv config.toml'
初始化脚本
在 init-scripts 目录中,有 OpenRC(感谢 Tastytea)和 systemd 服务文件。
CGI 和 SCGI
在 cgi-scripts 目录中提供了 Python 和 Perl 的示例 SCGI 脚本。
在配置文件中,有一个可选的 bool 值 "cgi",用于开启 CGI。如果为真,它将运行来自任何目录的脚本。要将它限制为仅一个目录,请设置 "cgipath"。
如果 "cgi" 为假或未设置,服务器将对任何可执行文件响应 "Not Found"。
脚本有 5 秒的时间完成,否则将被终止。
CGI 环境变量
这些变量为您预设。如果您需要更多,您可以在配置文件中的 "cgienv" 下定义它们。
- GEMINI_URL
- SERVER_NAME
- SERVER_PROTOCOL
- SERVER_SOFTWARE
- SCRIPT_NAME
- REMOTE_ADDR
- REMOTE_HOST
- REMOTE_PORT
- QUERY_STRING
- PATH_INFO
TLS 变量
- AUTH_TYPE
- TLS_CLIENT_HASH
- REMOTE_USER
变更日志
[0.6.6] - 20220217
错误修复:检查文件路径以确保它位于根目录或 ~/public_gemini 中。
[0.6.5] - 20220209
错误修复:另一个遍历错误。
[0.6.4] - 20220202
修复了一个文件系统遍历错误。所有之前的版本都不安全。
依赖关系
~18–31MB
~587K SLoC