#gemini #protocols #reverse-proxy #server

app gemserv

一个 Gemini 服务器

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 次下载

MIT 许可证

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