1 个稳定版本

1.0.0 2023年11月28日

#387HTTP 服务器

AGPL-3.0-only

57KB
767

Rocket 驱动的代码剪贴板 (rktpb | paste.rs)

一个功能足以真正有用的代码剪贴板。

  • 非常快,非常轻量。
  • 渲染 Markdown 像 GitHub。
  • 高亮显示 源代码
  • 也返回纯文本。
  • 具有简单的可通过 CLI 使用的 API。
  • 支持 CORS。
  • 限制粘贴上传大小。
  • 无数据库:使用文件系统。
  • 自动删除过期的粘贴。

此代码剪贴板为 paste.rs 提供动力,这是一个公共实例。更多信息可以在那里找到。

用法

Rocket Powered Pastebin (rktpb) 使用 RustRocket 编写。要启动服务器,请使用 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_lengthcors

其他部分您可能希望使用默认值。

环境变量

使用与参数名称等效的环境变量名,前面加上 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 配置(允许 optionsgetpostdelete 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) 中包含 statictemplates 目录以及配置文件(如果使用的话)。

请注意,当应用程序以 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