1 个稳定版本
| 1.0.0 | 2023年11月28日 | 
|---|
#387 在 HTTP 服务器
57KB
767 行
Rocket 驱动的代码剪贴板 (rktpb | paste.rs)
一个功能足以真正有用的代码剪贴板。
- 非常快,非常轻量。
- 渲染 Markdown 像 GitHub。
- 高亮显示 源代码。
- 也返回纯文本。
- 具有简单的可通过 CLI 使用的 API。
- 支持 CORS。
- 限制粘贴上传大小。
- 无数据库:使用文件系统。
- 自动删除过期的粘贴。
此代码剪贴板为 paste.rs 提供动力,这是一个公共实例。更多信息可以在那里找到。
用法
Rocket Powered Pastebin (rktpb) 使用 Rust 和 Rocket 编写。要启动服务器,请使用 cargo
# clone the repository
git clone https://github.com/SergioBenitez/rktpb
# change into directory: the `static` folder needs to be in CWD before running
cd rktpb
# compile and start the server with the default config
cargo run
配置
配置通过 环境变量 或 TOML 文件 提供。始终提供一组默认值。
以下是可以配置的完整参数列表
| 名称 | 默认值 | 描述 | 
|---|---|---|
| id_length | 3 | 粘贴 ID 长度 | 
| upload_dir | "上传目录" | 保存上传的目录 | 
| paste_limit | "384KiB" | 最大粘贴上传文件大小 | 
| max_age | "30 天" | 粘贴被认为是新鲜的时间 | 
| reap_interval | "5 分钟" | 重新收获过时上传的频率 | 
| server_url | "http://{address}:{port}" | 服务器可访问的 URL | 
| cors.{主机} | ["{HTTP 方法}"..] | 允许 {主机} 的 CORS {HTTP 方法} | 
| address | "127.0.0.1" | 监听地址 | 
| 端口 | 8000 | 监听端口 | 
| keep_alive | 5 | HTTP keep-alive 秒数 | 
| ident | "Rocket" | 服务器 Ident标头 | 
| ip_header | "X-Real-IP" | 检查客户端 IP 的标头 | 
| log_level | "normal" | 控制台日志级别 | 
| cli_colors | true | 启用(检测 TTY)或禁用 CLI 颜色 | 
| shutdown.ctrlc | true | 是否由 <ctrl-c>触发关机 | 
| shutdown.信号 | ["term", "hup"] | 触发关机的信号 | 
| shutdown.grace | 5 | 秒数表示的宽限期长度 | 
| shutdown.mercy | 5 | 秒数表示的仁慈期长度 | 
您肯定希望配置前两个类别中的值,从 id_length 到 cors。
其他部分您可能希望使用默认值。
环境变量
使用与参数名称等效的环境变量名,前面加上 PASTE_
PASTE_ID_LENGTH=10 PASTE_MAX_AGE="1 year" ./rktpb
要使用环境变量设置结构化数据,例如 CORS,请使用 类似 TOML 的语法
PASTE_CORS='{"http://example.com"=["get", "post"]}' ./rktpb
TOML 文件
有关设置所有默认值以及为 http://example.com 设置一个虚拟的 cors 配置(允许 options、get、post 和 delete HTTP 方法)的模板,请参阅 Paste.toml.template
mv Paste.toml.template Paste.toml
默认情况下,应用程序在当前工作目录 (CWD) 中搜索名为 Paste.toml 的文件。可以通过设置 PASTE_CONFIG 来覆盖文件的路径。例如,要使用名为 rktpb.toml 的文件,请使用 PASTE_CONFIG="rktpb.toml" ./rktpb。
部署
要部署,请以发布模式构建,并将生成的二进制文件以及 static/、templates/ 和任何配置文件一起打包/运行。
# build in release mode for `${TARGET}`
cargo build --release --target ${TARGET}
# create a tarball of everything that's needed
tar -cvzf "rktpb.tar.gz" \
    Paste.toml static templates \
    -C target/${TARGET}/release rktpb
无论您选择何种部署方式,都需要确保在启动服务器时,当前工作目录 (CWD) 中包含 static 和 templates 目录以及配置文件(如果使用的话)。
请注意,当应用程序以 release 模式编译时,TOML 配置文件中的 [release] 部分可以用于覆盖配置值;同样,在 debug 模式下编译时,也可以使用 [debug]。
许可
Rocket 驱动的代码剪贴板 (rktpb | paste.rs)
版权所有 © 2020 Sergio Benitez
此程序是免费软件:您可以在自由软件基金会发布的 GNU Affero 通用公共许可证版本 3(GNU AGPLv3)的条款下重新分发和/或修改此程序。分发此程序是希望它将是有用的,但没有提供任何保证;甚至没有对适销性或特定用途适用性的暗示保证。有关详细信息,请参阅 GNU AGPLv3 LICENSE。
除非您明确声明,否则对包含在本项目中的任何有意提交的贡献应受 GNU AGPLv3 许可证的许可,不附加任何额外条款或条件。
依赖项
~27–59MB
~1M SLoC