4 个版本 (稳定)
2.0.1 | 2024 年 8 月 10 日 |
---|---|
2.0.0 | 2024 年 2 月 28 日 |
1.0.0 | 2023 年 12 月 5 日 |
0.1.0 | 2023 年 11 月 18 日 |
#291 在 网络编程
每月 165 次下载
25KB
171 代码行
🕊️ Dovetail
Dovetail 是一个受 agate 启发的 gemini cgi 和静态文件服务器,使用 🦊 Fluffer 构建。
🧰 教程
要开始,创建一个内容目录。此目录将反映您的路由布局。
-
CGI 脚本必须是可执行的,并且具有
.cgi
文件扩展名。在实际路由中忽略此扩展名。 -
您可以通过命名为
index.gmi
或index.gmi.cgi
来在路径根处提供 gemtext 文档或 CGI 脚本。 -
此外,通过文件扩展名猜测 mimetypes。确保您的静态文件具有准确的扩展名。
Dovetail 使用命令行参数进行配置,例如
dovetail--lang en--ip0.0.0.0:1965 --content./content
📜 脚本
服务器将尝试执行具有 .cgi
扩展名的文件,该扩展名从路由中省略。换句话说,/comment
应对应于文件 content_dir/comment.cgi
。
以下是一个表格,其中包含将提供给您的 CGI 脚本的环境变量。请确保您的脚本正确处理可能不适用于每个请求的变量(标记为“有时”)。
名称 | 存在 |
---|---|
URL |
始终 |
URL_PATH |
始终 |
URL_INPUT |
有时 |
PEER_IP |
始终 |
PEER_CERT |
有时 |
PEER_NAME |
有时 |
PEER_FINGERPRINT |
有时 |
🐚 Shell 示例
如果您在 POSIX Shell 中编写 CGI 脚本,此模板将帮助您开始。
请记住,永远不要过多地信任用户输入。在 sh 中编写 CGI 脚本很有趣,但也有些危险 :')
#!/bin/sh -eu
# shellcheck disable=SC2034
printf '20 text/gemini\r\n'
echo "# Dovetail Script Example"
echo
echo "## Url"
echo "$URL"
echo
echo "### Path"
echo "$URL_PATH"
echo
echo "### Input"
echo "${URL_INPUT:-[no input]}"
echo
echo "## Certificate"
echo "${PEER_CERT:-[no certificate]}"
echo
echo "### Name"
echo "${DOVE_NAME:-[no name]}"
依赖项
~10–21MB
~304K SLoC