4 个版本

0.1.3 2024 年 6 月 20 日
0.1.2 2024 年 6 月 12 日
0.1.1 2024 年 6 月 12 日
0.1.0 2024 年 6 月 11 日

#367HTTP 服务器

Download history 280/week @ 2024-06-07 125/week @ 2024-06-14 45/week @ 2024-06-21

每月 159 次下载

BSD-2-Clause

45KB
1K SLoC

esetres

一个单次安装的自托管文件存储服务器。

开始使用

安装

cargo install esetres

# check version to verify installation
esetres -V

运行初始化

运行 init 命令并完成设置过程。

esetres init

启动服务器

esetres start

[!TIP] 查看我们的 示例 了解如何托管和结构化您的服务器。

API

[!NOTE] 未来可能会添加客户端

健康检查 GET/health

返回服务器的简单运行状态。

创建存储桶 POST/buckets (authed)

创建一个新的存储桶。

请求体

{
	"name": "bucket_name"
}

清除缓存 POST/cache/invalidate

仅配置为本地访问。这将使令牌缓存失效,并从数据库重新获取。这将在您创建或撤销令牌时发生。

获取文件 GET/buckets/{bucket}/{public | private}/{file_name}

从请求的存储桶获取请求的文件。对 private 的请求必须是经过授权的。

上传文件 PUT/buckets/{bucket}/{public | private}/{file_name} (authed)

将文件上传到指定的存储桶,并使用指定的文件名。

请求正文:文件内容以字节表示

删除文件 DELETE/buckets/{bucket}/{public | private}/{file_name} (authed)

根据指定的存储桶和文件名删除文件。

命令行界面(CLI)

[!WARNING] 所有命令必须在与服务器相同的目录中运行。

初始化

设置环境变量、运行迁移以及创建第一个存储桶的逐步过程。

esetres init

Welcome to esetres cli!
|
o Do you want us to generate the token secret? yes
|
 Generated token secret.
|
o Select your the ip: 172.31.144.1
|
o Enter the port: 8080
|
o Use https? no

TOKEN_SECRET="[hidden]"

IP="172.31.144.1"
PORT="8080"
HTTPS=0

o .env file Ok? yes
|
 Created .env file.
|
o Run sqlite migration? yes
|
 Ran sqlite migration.
|
o Create a bucket? yes
|
o Enter the bucket name: default
|
 Bucket [default] created.
|
 Completed initialization.

启动

启动服务器。

esetres start

Listening at 127.0.0.1:3000...

运行迁移

esetres 使用本地 sqlite 数据库来存储令牌。在 init 函数中,您可以选择自动运行,也可以随时手动运行

esetres migrate

存储桶

您可以通过 API 或在服务器上自行创建文件夹来创建存储桶。然而,命令行界面(CLI)提供了一些额外的功能。

创建

创建新的存储桶和所需的文件夹。

esetres buckets create my_bucket

删除

删除存储桶及其所有内容。

esetres buckets delete my_bucket

列出

列出所有存储桶及其最后修改时间。

esetres buckets list

Name      Modified
-----------------------------------------------
default | 2024-06-11 09:36:37.522380 -05:00
test    | 2024-06-11 09:44:01.888576100 -05:00

令牌

令牌允许您控制对服务器的访问。它使用带有 Bearer 方案的 jwt,这意味着授权路由需要授权头。

服务器会缓存令牌以实现快速响应,并在您创建或删除令牌时自动更新缓存。

铸造

创建具有指定范围和访问权限的新令牌。

创建

esetres tokens mint MY_TOKEN

New token (MY_TOKEN) created for scope (*).
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...

设置 范围

范围允许您限制令牌可以访问的存储桶。

# default scope is "*"
esetres tokens mint MY_TOKEN --scope default

设置 访问

访问允许您限制令牌创建存储桶、上传文件和读取文件的权限。

# default access is "read"
esetres tokens mint MY_TOKEN --access write

列出

列出所有现有令牌,最近创建的令牌在顶部。

esetres tokens list

Name                        Scope     Access
----------------------------------------------
ANOTHER_REALLY_LONG_TOKEN | test    | full
NEW_TEST_TOKEN            | default | read
TEST_TOKEN                | *       | write

吊销

从数据库中删除令牌。

esetres tokens revoke MY_TOKEN

Token revoked.

MIME 类型

MIME 类型来自 mime-db。当您第一次启动服务器时,它将从数据库中获取类型并将其存储在机器上。您始终可以删除 mime-db.json 文件以刷新它。

依赖项

~33–46MB
~798K SLoC