#静态文件 #gemini #cgi #文件服务器 #脚本 #命令行参数 #文件内容

app dovetail

Dovetail 🕊️ 是一个用于 gemini 的 cgi 和静态文件服务器

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网络编程

Download history 10/week @ 2024-06-30 50/week @ 2024-07-28 71/week @ 2024-08-04 44/week @ 2024-08-11

每月 165 次下载

GPL-3.0-only

25KB
171 代码行

🕊️ Dovetail

Dovetail 是一个受 agate 启发的 gemini cgi 和静态文件服务器,使用 🦊 Fluffer 构建。

🧰 教程

要开始,创建一个内容目录。此目录将反映您的路由布局。

  • CGI 脚本必须是可执行的,并且具有 .cgi 文件扩展名。在实际路由中忽略此扩展名。

  • 您可以通过命名为 index.gmiindex.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