3个版本 (破坏性更新)
0.3.0 | 2020年1月16日 |
---|---|
0.2.0 | 2019年10月28日 |
0.1.0 | 2019年10月25日 |
#694 in HTTP服务器
53KB
1K SLoC
filite
一个简单、轻量级且独立的代码粘贴板、URL缩短器和文件共享服务,可托管文件、重定向链接和存储文本。
目录
功能
是什么
- 易于使用。安装和设置仅需不到一分钟,并提供内置的Web用户界面。
- 独立。无需外部依赖,所需的一切都包含在二进制文件中。
- 轻量级且快速。底层使用Rust Web框架Actix,提供出色的速度和最小的占用空间。
不是什么
- 跟踪工具。不存储统计信息以提高速度、减少资源使用并保持简单性,如果您正在寻找这样的工具,filite不适合您。
安装
- 从发行页面或使用Cargo获取二进制文件
- 运行
filite init
以执行初始设置(您可以在任何时间执行此操作以重置配置和密码) - 根据需要编辑您的配置文件(有关详细信息,请参阅专用部分)
- 运行
filite
这就是全部!
使用方法
当要求登录时,请使用您想要的任何用户名和设置期间提供的密码。有关编程使用的详细信息,请参阅专用部分。
计划中的功能
- 相当全面的测试套件
- TLS支持
- 简单的管理页面
- 多个登录(?)
配置
# Port to listen on
port = 8080
# SQLite database connection url
database_url = "database.db"
# SQLite database connection pool size
pool_size = 4
# Directory where to store static files
files_dir = "files"
# Highlight.js configuration
[highlight]
# Theme to use
theme = "github"
# Additional languages to include
languages = ["rust"]
客户端工具
ShareX
<AUTHORIZATION>
是将<USERNAME>:<PASSWORD>
编码为 base64 的结果<USERNAME>
是一个任意用户名,不重要<PASSWORD>
是设置过程中输入的密码
<ADDRESS>
是 filite 运行的根地址,例如https://127.0.0.1:8080
或https://filite.raphaeltheriault.com
文件
{
"Version": "13.0.1",
"Name": "filite (file)",
"DestinationType": "ImageUploader, FileUploader",
"RequestMethod": "POST",
"RequestURL": "<ADDRESS>/f",
"Headers": {
"Authorization": "Basic <AUTORIZATION>"
},
"Body": "MultipartFormData",
"FileFormName": "file",
"URL": "<ADDRESS>/$response$"
}
链接
{
"Version": "13.0.1",
"Name": "filite (link)",
"DestinationType": "URLShortener",
"RequestMethod": "POST",
"RequestURL": "<ADDRESS>/l",
"Headers": {
"Authorization": "Basic <AUTORIZATION>"
},
"Body": "JSON",
"Data": "{\"forward\":\"$input$\"}",
"URL": "<ADDRESS>/l/$response$"
}
文本
您可以删除提示并始终通过将
$prompt:Highlight|false$
替换为true
或false
来启用或禁用语法高亮。
{
"Version": "13.0.1",
"Name": "filite (text)",
"DestinationType": "TextUploader",
"RequestMethod": "POST",
"RequestURL": "<ADDRESS>/t",
"Headers": {
"Authorization": "Basic <AUTORIZATION>"
},
"Body": "JSON",
"Data": "{\"contents\":\"$input$\",\"highlight\":$prompt:Highlight|false$}",
"URL": "<ADDRESS>/t/$response$"
}
反向代理
<DOMAIN>
是请求将来自的域名,例如filite.raphaeltheriault.com
<PORT>
是 filite 监听的端口
上传限制设置为 10M 作为示例
NGINX
server {
listen 80;
listen [::]:80;
server_name <DOMAIN>;
location / {
proxy_pass http://localhost:<PORT>;
location /f {
client_max_body_size 10M;
}
}
}
Apache
<VirtualHost *:80>
ServerName <DOMAIN>
ProxyPreserveHost On
ProxyPass / http://localhost:<PORT>/
ProxyPassReverse / http://localhost:<PORT>/
<Location "/f">
LimitRequestBody 10000000
</Location>
</VirtualHost>
编程使用
所有需要身份验证的请求都使用 HTTP Basic Auth(不考虑用户名)。
列出现有条目
可以通过身份验证的请求获取每种类型的所有现有条目的数组。
GET /f
GET /l
GET /t
创建新条目
创建新条目有两种方式,即 PUT
或 POST
请求。 PUT
允许您手动选择 ID,而 POST
会自动分配一个,但这是唯一的区别。两种方法都需要身份验证。
PUT
请求将覆盖任何现有条目。
文件
PUT /f/{id}
POST /f
文件作为 multipart/form-data
发送。字段名称不重要,但必须包含文件名。只处理一个文件。
链接
PUT /l/{id}
POST /l
链接作为根据以下模式发送的 application/json
。
{
"$schema": "https://json-schema.fullstack.org.cn/draft-07/schema#",
"title": "Link",
"type": "object",
"properties": {
"forward": {
"description": "URL this link forwards to",
"type": "string"
}
}
}
文本
PUT /t/{id}
POST /t
文本作为根据以下模式发送的 application/json
。
{
"$schema": "https://json-schema.fullstack.org.cn/draft-07/schema#",
"title": "Text",
"type": "object",
"properties": {
"contents": {
"description": "Text contents",
"type": "string"
},
"highlight": {
"description": "Whether to enable code highlighting or not for that text",
"type": "boolean"
}
}
}
删除条目
可以通过身份验证的请求删除任何条目。
DELETE /f
DELETE /l
DELETE /t
贡献
该项目欢迎贡献!在提交 PR 之前,请确保您的更改在启用和禁用 dev
功能的情况下都能正常工作。
要求
- Rust 工具链
- diesel_cli 启用
sqlite
功能
设置
- 将
.env.example
复制到.env
并设置变量 - 运行
diesel database setup
- 启用
dev
功能后构建或运行
许可证
filite 在 MIT 许可证 下授权。
依赖项
~70MB
~1.5M SLoC