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