11个版本 (4个重大更新)

0.7.0 2024年3月17日
0.6.1 2024年1月21日
0.6.0 2023年12月23日
0.5.3 2023年12月22日
0.3.5 2023年12月20日

Web编程 中排名第 429

Download history 82/week @ 2024-04-14 73/week @ 2024-06-30

每月下载量 73

MIT 许可证

19KB
209 代码行

urouter

静态(只读取一次路由列表)的http路由器,用于小型域的路由。

安装

cargo install urouter

编辑 alias.json(或任何其他JSON文件,检查 --alias-file 选项)并运行 cargo run

alias.json 规范

包含集合数组的JSON文件(或具有一个数组集合字段的集合,带有 --alias-file-is-set-not-a-list,例如 Nix打包)。

每个集合包含2个必需元素和1个可选元素。

  • uri(字符串)- 主机之后的URL(例如,/some/cool/path,不应以 / 开头(仅适用于根)
  • alias(集合)- 具有一个字段的集合
    • url(字符串)- 重定向到带有HTTP 303 See Other的URL
    • file(字符串)- 从路径 --dir/file(其中 --dir 是选项(默认:.,查看 --help)读取文件,并以HTTP 200 OK响应 content-type: text/plain
    • text(字符串)- 带有HTTP 200 OK的纯文本,内容类型为 content-type: text/plain
    • html(字符串)- 带有HTTP 200 OK的纯文本,内容类型为 content-type: text/html
    • external (set) - 使用 ureq HTTP 库下载文件(每次都下载),并使用 HTTP 200 OK 响应下载资源的内容,并从响应中提取 content-type
      • url (string) - 下载的 URL
      • headers (set, optional) - 请求中包含的头部信息
  • agent (set, optional) - 必须设置一个字段,可选设置一个
    • regex (string) - 匹配用户代理 HTTP 头的正规表达式
    • only_matching (bool, optional, false by default) - 如果为 false,则任何用户代理都可以看到整个别名,如果为 true,则只有与正则表达式匹配的才能看到

数组的集合(仅用于非常具体的解决方案)

{
  "alias": [
    {
      "uri": "/",
      "alias": {
        "url":  "https://somecoolwebsite"
      }
    }
  ]
}

alias.json 示例

[
  {
    "uri": "/",
    "alias": {
      "url":  "https://somecoolwebsite"
    }
  },
  {
    "uri": "/",
    "alias": {
      "file": "somecoolscript"
    },
    "agent": {
      "regex": "^curl/[0-9].[0-9].[0-9]$",
      "only_matching": false
    }
  },
  {
    "uri": "text",
    "alias": {
      "text": "sometext"
    }
  },
  {
    "uri": "external",
    "alias": {
      "external": {
        "url": "https://somecool.external.link",
        "headers": {
          "user-agent": "curl/8.6.0"
        }
      }
    }
  }
]

curl https://url | sh 等脚本创建的用户代理匹配

alias.json 位置

  • 通过 --alias_file 传递,将查找此路径,如果文件不存在(或无法访问)将引发恐慌
  • 如果 urouter 以特权启动(EUID = 0),则文件为 /etc/urouter/alias.json
  • 否则如果 XDG_CONFIG_HOME 已设置,则文件为 $XDG_CONFIG_HOME/urouter/alias.json
  • 否则如果 $HOME 已设置,则文件为 $HOME/.config/urouter/alias.json
  • 如果没有匹配任何内容,将引发恐慌并退出

许可证

该项目根据 MIT 许可证 许可。

依赖关系

~22–57MB
~1M SLoC